Remix.run Logo
smj-edison a day ago

https://github.com/smj-edison/zicl

Porting/reimplementing a Tcl interpreter from C to Zig, based on the design of Jimtcl. This is one of those sub-projects that started due to another project (folk.computer in this case). The biggest difference is thread-safe value sharing, and (soon to be) lexical variable capture.

But why? Right now folk.computer has about a 20% overhead of serializing and deserializing values as they get sent between threads, and it's also meant we can't sent large amounts of data around. I previously attempted to make the Jimtcl interpreter thread-safe, but it ended up being slower than the status quo. So, I started hacking on a new interpreter.

Commands evaluate, basic object operations are in place, but there's still a ton of work to do in order to implement core commands. It may even be good enough to swap in some day!