| ▲ | epestr 3 hours ago | |||||||||||||||||||||||||
That does sound like a fun step, I'd already begun experimenting with some optimizations after having received suggestions in reddit to add fork/join primitives. Adding a compiler with these added performance gains sounds reasonable and something which will run quickly. dicts certainly involve some thought there. I hadn't considered self-hosting the compiler, but having put it into works, I probably will. This was the render the speed up version gave: https://paste.c-net.org/SpikingCarbs | ||||||||||||||||||||||||||
| ▲ | shoo 2 hours ago | parent [-] | |||||||||||||||||||||||||
> dicts certainly involve some thought there One way to start could be to ignore performance of the data structure. The first main job dicts are being used for is the `mem` dict mapping a key (variable name) to some value record. A data structure that supports Store(K, V) & V = Get(K) could be something like an stack allocated array of (Key, Value) pairs, that you search through using linear search to implement Store & Get. It wouldn't be very fast, but you probably don't have too many items in a typical DSL program. You'd need to implement some kind of stack or so on - or perhaps you could get away with reserving some fixed capacity. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||