I haven't done enough programming language dev lately, but I just added a new syntax feature to a language I made a while ago (Gilia, https://github.com/mortie/gilia). I can finally do 'a += b' instead of 'a = a + b'

Now += isn't its own operator, instead '+' is an identifier, and "identifier with an equal afterwards" is a special kind of token. (Yes + is just a function)

This stuff is so satisfying to work on. Especially the bytecode gen part

Diff: https://github.com/mortie/gilia/compare/baa25ec9b7739c99baa063a77cf8bddcea5857bc..1fa300e34200e1a6f0cae3714056b56954737e08

#pldev #programming

GitHub - mortie/gilia: The Gilia programming language

The Gilia programming language. Contribute to mortie/gilia development by creating an account on GitHub.

GitHub

I messed up a few years ago when adding list:find and similar functions to my language, #ArkScript
The language has a void value, nil, but those functions return -1 (as in C...)
Alas -1 is also a valid index in ArkScript (same as Python)

I'm unsure about how to change that

The deprecate and change the type in the next release option seems "decent", but I feel like it's abusing deprecation warnings

#pldev #langdev

make a major release
deprecate and change the return type
other option (please comment)
Poll ends at .

I built an esoteric programming language: https://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

tzap – playground

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

#Projects #Compiler #PLdev

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

#Projects #Compiler #PLdev

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

Nice writeup about the layout algorithm here:
https://spidermonkey.dev/blog/2025/10/28/iongraph-web.html

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

#PLdev #Projects #Compiler

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

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

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

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