Indeed, after learning a lot from implementing Strand, I was able to start fresh while still taking over some ideas,
From the implementation side: the runtime system is written in C (and not Forth), and the compiler generates x86-64 or arm32 assembler and the overall system is much faster. Calling C code is relatively
straightforward. The system uses a refcounting GC (no pauses) and utilizes native threads (with no shared heap), but there are currently no facilities for distributed computing (yet). I was able to be slightly more faithful in the implementation of non-determinism: clause selection can now suspend on multiple variables (but matching still takes place sequentially).
From the language side: FLENG is very low level, but FGHC is basically Strand with full (output-) unification.
Nice! Is this a successor to Strand? Could you elaborate on the differences?
Indeed, after learning a lot from implementing Strand, I was able to start fresh while still taking over some ideas,
From the implementation side: the runtime system is written in C (and not Forth), and the compiler generates x86-64 or arm32 assembler and the overall system is much faster. Calling C code is relatively straightforward. The system uses a refcounting GC (no pauses) and utilizes native threads (with no shared heap), but there are currently no facilities for distributed computing (yet). I was able to be slightly more faithful in the implementation of non-determinism: clause selection can now suspend on multiple variables (but matching still takes place sequentially).
From the language side: FLENG is very low level, but FGHC is basically Strand with full (output-) unification.