home.social

#pldev — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #pldev, aggregated by home.social.

  1. I built an esoteric programming language: rphle.de/tzap/
    It only has 4 instructions and no arbitrary values like numbers or memory addresses.
    I challenge you to implement Fibonacci in it!

    #esolang #pldev #programming #programminglanguages #challenge

  2. I built an esoteric programming language: rphle.de/tzap/
    It only has 4 instructions and no arbitrary values like numbers or memory addresses.
    I challenge you to implement Fibonacci in it!

    #esolang #pldev #programming #programminglanguages #challenge

  3. I built an esoteric programming language: rphle.de/tzap/
    It only has 4 instructions and no arbitrary values like numbers or memory addresses.
    I challenge you to implement Fibonacci in it!

    #esolang #pldev #programming #programminglanguages #challenge

  4. I built an esoteric programming language: rphle.de/tzap/
    It only has 4 instructions and no arbitrary values like numbers or memory addresses.
    I challenge you to implement Fibonacci in it!

    #esolang #pldev #programming #programminglanguages #challenge

  5. I built an esoteric programming language: rphle.de/tzap/
    It only has 4 instructions and no arbitrary values like numbers or memory addresses.
    I challenge you to implement Fibonacci in it!

    #esolang #pldev #programming #programminglanguages #challenge

  6. The latest iteration of number_loops() which is giving me encouraging results, at least on the test case scribbled above...

    #Projects #Compiler #PLdev

  7. The latest iteration of number_loops() which is giving me encouraging results, at least on the test case scribbled above...

    #Projects #Compiler #PLdev

  8. The latest iteration of number_loops() which is giving me encouraging results, at least on the test case scribbled above...

    #Projects #Compiler #PLdev

  9. The latest iteration of number_loops() which is giving me encouraging results, at least on the test case scribbled above...

    #Projects #Compiler #PLdev

  10. The latest iteration of number_loops() which is giving me encouraging results, at least on the test case scribbled above...

    #Projects #Compiler #PLdev

  11. A visual aid while debugging code to identify backward branches, number loops, etc...

    #Projects #Compiler #PLdev

  12. A visual aid while debugging code to identify backward branches, number loops, etc...

    #Projects #Compiler #PLdev

  13. A visual aid while debugging code to identify backward branches, number loops, etc...

    #Projects #Compiler #PLdev

  14. A visual aid while debugging code to identify backward branches, number loops, etc...

    #Projects #Compiler #PLdev

  15. A visual aid while debugging code to identify backward branches, number loops, etc...

    #Projects #Compiler #PLdev

  16. The graphs generated by iongraph (a Mozilla tool for SpiderMonkey) are a lot nicer than just trying to wrangle reasonable outputs from graphviz:
    github.com/mozilla-spidermonke

    Nice writeup about the layout algorithm here:
    spidermonkey.dev/blog/2025/10/

    Strong temptation to build some custom graph generation tooling for my own language hackery. Looking at lightweight PDF generation libraries.

    #PLdev #Projects #Compiler

  17. The graphs generated by iongraph (a Mozilla tool for SpiderMonkey) are a lot nicer than just trying to wrangle reasonable outputs from graphviz:
    github.com/mozilla-spidermonke

    Nice writeup about the layout algorithm here:
    spidermonkey.dev/blog/2025/10/

    Strong temptation to build some custom graph generation tooling for my own language hackery. Looking at lightweight PDF generation libraries.

    #PLdev #Projects #Compiler

  18. The graphs generated by iongraph (a Mozilla tool for SpiderMonkey) are a lot nicer than just trying to wrangle reasonable outputs from graphviz:
    github.com/mozilla-spidermonke

    Nice writeup about the layout algorithm here:
    spidermonkey.dev/blog/2025/10/

    Strong temptation to build some custom graph generation tooling for my own language hackery. Looking at lightweight PDF generation libraries.

    #PLdev #Projects #Compiler

  19. The graphs generated by iongraph (a Mozilla tool for SpiderMonkey) are a lot nicer than just trying to wrangle reasonable outputs from graphviz:
    github.com/mozilla-spidermonke

    Nice writeup about the layout algorithm here:
    spidermonkey.dev/blog/2025/10/

    Strong temptation to build some custom graph generation tooling for my own language hackery. Looking at lightweight PDF generation libraries.

    #PLdev #Projects #Compiler

  20. The graphs generated by iongraph (a Mozilla tool for SpiderMonkey) are a lot nicer than just trying to wrangle reasonable outputs from graphviz:
    github.com/mozilla-spidermonke

    Nice writeup about the layout algorithm here:
    spidermonkey.dev/blog/2025/10/

    Strong temptation to build some custom graph generation tooling for my own language hackery. Looking at lightweight PDF generation libraries.

    #PLdev #Projects #Compiler

  21. Anyone know of any good writeups out there on the reverse linear scan register allocation (on SSA form IR).

    I'm especially interested in discussion of register usage hints or constraints around things like calling conventions -- landing parameters in the right registers, but making the most of those registers outside of call boundaries, etc.

    #PLdev #Questions

  22. Anyone know of any good writeups out there on the reverse linear scan register allocation (on SSA form IR).

    I'm especially interested in discussion of register usage hints or constraints around things like calling conventions -- landing parameters in the right registers, but making the most of those registers outside of call boundaries, etc.

    #PLdev #Questions

  23. Anyone know of any good writeups out there on the reverse linear scan register allocation (on SSA form IR).

    I'm especially interested in discussion of register usage hints or constraints around things like calling conventions -- landing parameters in the right registers, but making the most of those registers outside of call boundaries, etc.

    #PLdev #Questions

  24. Anyone know of any good writeups out there on the reverse linear scan register allocation (on SSA form IR).

    I'm especially interested in discussion of register usage hints or constraints around things like calling conventions -- landing parameters in the right registers, but making the most of those registers outside of call boundaries, etc.

    #PLdev #Questions

  25. Anyone know of any good writeups out there on the reverse linear scan register allocation (on SSA form IR).

    I'm especially interested in discussion of register usage hints or constraints around things like calling conventions -- landing parameters in the right registers, but making the most of those registers outside of call boundaries, etc.

    #PLdev #Questions

  26. Implemented the RV32I pass-by-register calling convention in the simple SR32 code generator... as a compiler parameter.

    Updated the emulator to support either calling convention (at runtime) for syscalls.

    This all works, which is nice, but now I've just added a third dimension to the test grid, which is less nice.

    #Projects #Compiler #PLdev

  27. Implemented the RV32I pass-by-register calling convention in the simple SR32 code generator... as a compiler parameter.

    Updated the emulator to support either calling convention (at runtime) for syscalls.

    This all works, which is nice, but now I've just added a third dimension to the test grid, which is less nice.

    #Projects #Compiler #PLdev

  28. Implemented the RV32I pass-by-register calling convention in the simple SR32 code generator... as a compiler parameter.

    Updated the emulator to support either calling convention (at runtime) for syscalls.

    This all works, which is nice, but now I've just added a third dimension to the test grid, which is less nice.

    #Projects #Compiler #PLdev

  29. Implemented the RV32I pass-by-register calling convention in the simple SR32 code generator... as a compiler parameter.

    Updated the emulator to support either calling convention (at runtime) for syscalls.

    This all works, which is nice, but now I've just added a third dimension to the test grid, which is less nice.

    #Projects #Compiler #PLdev

  30. Implemented the RV32I pass-by-register calling convention in the simple SR32 code generator... as a compiler parameter.

    Updated the emulator to support either calling convention (at runtime) for syscalls.

    This all works, which is nice, but now I've just added a third dimension to the test grid, which is less nice.

    #Projects #Compiler #PLdev

  31. The desire to explore Subnautica 2 (now in early access) is warring with the desire to generate assembly from IR now that register allocation is happening.

    #PLdev #Gaming #Argh

  32. The desire to explore Subnautica 2 (now in early access) is warring with the desire to generate assembly from IR now that register allocation is happening.

    #PLdev #Gaming #Argh

  33. The desire to explore Subnautica 2 (now in early access) is warring with the desire to generate assembly from IR now that register allocation is happening.

    #PLdev #Gaming #Argh

  34. The desire to explore Subnautica 2 (now in early access) is warring with the desire to generate assembly from IR now that register allocation is happening.

    #PLdev #Gaming #Argh

  35. The desire to explore Subnautica 2 (now in early access) is warring with the desire to generate assembly from IR now that register allocation is happening.

    #PLdev #Gaming #Argh

  36. Rearranged the register assignments in my softrisc32 ISA to match that of RV32I because there's no point in maintaining a variant register map just because I find the RV32I map "untidy" (due to them arranging stuff to make sense when the top half are missing in RV32E).

    This has the side-effect of making (textual) sr32 assembly even closer to rv32i assembly.

    About to shift from passing parameters on the stack to passing parameters in registers.

    #Projects #Compiler #PLdev

  37. Rearranged the register assignments in my softrisc32 ISA to match that of RV32I because there's no point in maintaining a variant register map just because I find the RV32I map "untidy" (due to them arranging stuff to make sense when the top half are missing in RV32E).

    This has the side-effect of making (textual) sr32 assembly even closer to rv32i assembly.

    About to shift from passing parameters on the stack to passing parameters in registers.

    #Projects #Compiler #PLdev

  38. Rearranged the register assignments in my softrisc32 ISA to match that of RV32I because there's no point in maintaining a variant register map just because I find the RV32I map "untidy" (due to them arranging stuff to make sense when the top half are missing in RV32E).

    This has the side-effect of making (textual) sr32 assembly even closer to rv32i assembly.

    About to shift from passing parameters on the stack to passing parameters in registers.

    #Projects #Compiler #PLdev

  39. Rearranged the register assignments in my softrisc32 ISA to match that of RV32I because there's no point in maintaining a variant register map just because I find the RV32I map "untidy" (due to them arranging stuff to make sense when the top half are missing in RV32E).

    This has the side-effect of making (textual) sr32 assembly even closer to rv32i assembly.

    About to shift from passing parameters on the stack to passing parameters in registers.

    #Projects #Compiler #PLdev

  40. Rearranged the register assignments in my softrisc32 ISA to match that of RV32I because there's no point in maintaining a variant register map just because I find the RV32I map "untidy" (due to them arranging stuff to make sense when the top half are missing in RV32E).

    This has the side-effect of making (textual) sr32 assembly even closer to rv32i assembly.

    About to shift from passing parameters on the stack to passing parameters in registers.

    #Projects #Compiler #PLdev

  41. Starting to allocate some registers. I need more test cases with greater register pressure. Most of them fit within 4 working registers just fine.

    I did update my live range graph in the IR dump to use dashed lines for spilled registers.

    Here's one that spills at 4 and spills a bit more at 3.

    #Projects #Compiler #PLdev

  42. Starting to allocate some registers. I need more test cases with greater register pressure. Most of them fit within 4 working registers just fine.

    I did update my live range graph in the IR dump to use dashed lines for spilled registers.

    Here's one that spills at 4 and spills a bit more at 3.

    #Projects #Compiler #PLdev

  43. Starting to allocate some registers. I need more test cases with greater register pressure. Most of them fit within 4 working registers just fine.

    I did update my live range graph in the IR dump to use dashed lines for spilled registers.

    Here's one that spills at 4 and spills a bit more at 3.

    #Projects #Compiler #PLdev

  44. Starting to allocate some registers. I need more test cases with greater register pressure. Most of them fit within 4 working registers just fine.

    I did update my live range graph in the IR dump to use dashed lines for spilled registers.

    Here's one that spills at 4 and spills a bit more at 3.

    #Projects #Compiler #PLdev

  45. Starting to allocate some registers. I need more test cases with greater register pressure. Most of them fit within 4 working registers just fine.

    I did update my live range graph in the IR dump to use dashed lines for spilled registers.

    Here's one that spills at 4 and spills a bit more at 3.

    #Projects #Compiler #PLdev

  46. Housekeeping to allow the -out path (for final compilation) and the -xir path (for eXecutable IR useful for validation) to coexist in a single compiler invocation. Also some tidying up of argument wrangling, improving the XIR format so writing it is non-destructive (to allow generating pre/post optimization variants), tidying up output file argument handling in main, and separate flags for dumping ir0 (initial IR generated from the AST) and -ir1 (final IR).

    #Projects #Compiler #PLdev

  47. Housekeeping to allow the -out path (for final compilation) and the -xir path (for eXecutable IR useful for validation) to coexist in a single compiler invocation. Also some tidying up of argument wrangling, improving the XIR format so writing it is non-destructive (to allow generating pre/post optimization variants), tidying up output file argument handling in main, and separate flags for dumping ir0 (initial IR generated from the AST) and -ir1 (final IR).

    #Projects #Compiler #PLdev

  48. Housekeeping to allow the -out path (for final compilation) and the -xir path (for eXecutable IR useful for validation) to coexist in a single compiler invocation. Also some tidying up of argument wrangling, improving the XIR format so writing it is non-destructive (to allow generating pre/post optimization variants), tidying up output file argument handling in main, and separate flags for dumping ir0 (initial IR generated from the AST) and -ir1 (final IR).

    #Projects #Compiler #PLdev

  49. Housekeeping to allow the -out path (for final compilation) and the -xir path (for eXecutable IR useful for validation) to coexist in a single compiler invocation. Also some tidying up of argument wrangling, improving the XIR format so writing it is non-destructive (to allow generating pre/post optimization variants), tidying up output file argument handling in main, and separate flags for dumping ir0 (initial IR generated from the AST) and -ir1 (final IR).

    #Projects #Compiler #PLdev

  50. Housekeeping to allow the -out path (for final compilation) and the -xir path (for eXecutable IR useful for validation) to coexist in a single compiler invocation. Also some tidying up of argument wrangling, improving the XIR format so writing it is non-destructive (to allow generating pre/post optimization variants), tidying up output file argument handling in main, and separate flags for dumping ir0 (initial IR generated from the AST) and -ir1 (final IR).

    #Projects #Compiler #PLdev