I am impressed by JART's ultra-tiny Sector Lisp and BLC. Tunney’s GC is better than McCarthy’s. It’s more FP-ish, and is very small.
I have built prototypes of DPLs (Diagrammatic Programming Languages) by using Ohm to parse graphML .drawio files (the save format of the draw.io editor). I used Ohm to write myself a nano-DSL to escape from having to write Javascript by hand.
VSH - Visual SHell. The Bourne shell needs modernizing. The new problem spaces - internet, robotics, IoT, etc. - need ways to express software parts with multiple inputs and multiple outputs and I/O that doesn't happen all-at-once. We need ways to snap components together like LEGO® blocks. UNIX pipelines were headed in the right direction, but, the shell pipeline concept has lagged behind advances in FP - and, pipelines were conflated with function calls, which ain't the same thing. I believe that we need to upgrade the shell to be a DPL. A prototype of such a VSH has been built on DPL concepts.
PLWB - Programming Language Workbench. We need newer, higher-level programming syntaxes. And, we need a REPL to help develop them. I am pleasantly surprised to find that I can run 3-4 separate windows in "real-time" on 202x hardware (Apple Mac Mini M3). One window holds draw.io, one window is a browser for REPL output and one window to run a terminal to choreograph the whole mess and to shell-out a bash script that recompiles the DPL from draw.io and sends results to the browser window. One "trick" that I use is to not-build a compiler - I simply transpile to Python (or Odin, or Javascript) and let those languages do the rest of the work. A small sample of this idea can be seen in this video. I would imagine that emitting WASM would be a good idea. I would imagine that WASM should be used for the browser REPL window, etc. As Alan Kay said around 31:50 - "In a 'real' Computer Science, the best languages of an era should serve as 'assembly code' for the next generation of expression". It seems to me that WASM and Ohm are key stepping stones that can help this to happen.
Although the above list may sound highfalutin, it's all very simple when you look at it. So simple that even I can do it. The biggest piece - the multitasking kernel ("green"-ish) - is only something like 700 LOC of Python (and could probably be a lot less with some extra work and help from collaborators). The kernel automagically ports to Py/JS/CL through the magic of a prototype DPLWB (which uses Ohm and some rewrite rules).
I spent time figuring out how Sector Lisp works, and, esp. the GC. I would be glad to explain / kibbitz (but, I need time in advance to mentally regroup to remember that stuff).
Sector Lisp looks like it is tiny due only to the use of assembler tricks. It is, though, orders of magnitude smaller than the nearest competitor (Lua?) which makes me believe that "something else" is going on. [My theory: purer-than-pure FP approach, lack of state explosion due to overuse of types, etc.]..
Apparently, a few years back, I made some videos and wrote some articles about Sector Lisp and BLC. As I re-watch these, I feel an urge to redo them with better focus and better technology. Until I do redo them, if you watch either, please ask me for clarifications - I feed off of questions and they help me focus and to explain better and more deeply. If you look at some of these, note that I’ve switched blogging platforms and YouTube channels several times. The links listed in these articles are probably stale, it is better to use the links listed in the “See Also” section below.
Video about Sector Lisp
Video about Sector Lisp GC
Article pondering the lessons from Sector Lisp
Article yet more pondering about the lessons from Sector Lisp
Article about memory layout in Sector Lisp
Article about WIP brainstorming re. Sector Lisp and the Handmade Wheel Reinvention Jam
Article about ideas for adding numbers to Sector Lisp
video about BLC
article about BLC
article on WIP thoughts about parsing and transpiling BLC
article about embedding these tiny languages into documents.
Some other points of interest:
Barliman video. Barliman is a miniKanren program that builds code based on programmer-supplied test cases.
Barliman github
William Byrd’s talk about Lisp 1.5’s eval(). Sector Lisp is based on the original paper by McCarthy. Byrd’s description might, also, be helpful in understanding Sector Lisp.
Woodrush's BLC version of a Lisp interpreter.
See Also
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Gumroad: tarvydas.gumroad.com
Twitter: @paul_tarvydas
Substack: paultarvydas.substack.com