claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

Got `bazc-simple` working, with type tracking of arguments / stack / locals and no fancy inference algorithms. It takes 0.013s to compile `isoheptane.baz` to C, which is .

Next up is making engine emit the entire current state of the code to a temporary `.baz` file after each submitted input block. So it becomes a bridge between "use editor to evaluate code in blocks" and "whole program compilation".

Then maybe I'll rip out the audio part entirely, as the is too to be useful. Will maybe copy/paste some of that code into engine.

The eventual aim is to hook up a filesystem watcher to automatically compile the `.baz` to `.c` (with `bazc-simple`), and then Clive can take over with its `.c` to `.so` compiler and `.so` reloader with heap preserving . Full stack will look like:

```
fingers
->
troop // editor
->
barry // collate to `.baz`
->
bazc-simple // compile to `.c`
->
clive-client // compile to `.so`
->
clive-server // reloads `.so`
->
ears
```

#compiler #FastEnough #barry #interpreter #VerySlow #clive #hotswap

Last updated 5 years ago

claude · @mathr
288 followers · 2739 posts · Server post.lurk.org

I got bazc (my ) working (just needed to track types of locals, which was straightforward enough) but it's : it takes 77 seconds to compile isoheptane.baz to C on my laptop. Not exactly useful for

The full bidirectional is killing performance, especially with my naive implementation of "build a big Set of equations for the whole program then unify it" instead of something more incremental.

The interpreter is also though, on my laptop it can't even run isoheptane.baz in real time (it's about 2x slower than realtime, crudely measured with sndfile audio backend). When compiled via C to machine code, it generates an hour of WAV audio in about a minute.

So compilation makes it about 120x faster, just need to find a way to make the compiler fast enough for live use. If that means giving up bidirectional inference that would be ok I suppose, but I do want overloading, maybe argument-directed (C++-style) would be sufficient.

#barry #compiler #VerySlow #livecoding #typeinference

Last updated 5 years ago