https://github.com/bollu/smol
smol IDE for a smol language that permits insane static analysis because smol
https://github.com/bollu/smol
Last synced: 3 months ago
JSON representation
smol IDE for a smol language that permits insane static analysis because smol
- Host: GitHub
- URL: https://github.com/bollu/smol
- Owner: bollu
- Created: 2022-02-01T07:55:18.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-01-11T00:15:15.000Z (over 1 year ago)
- Last Synced: 2025-03-29T12:23:33.896Z (6 months ago)
- Language: C
- Size: 3.77 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Smol
Read code for [`lite`](https://github.com/rxi/lite) to learn how to build a good IDE.
## Geometry of text editing
- Manifold/Simplicial Complex: Editor space (`Loc`)
- Tangent vector/stalk: Characters (`char` / `string`)## Associated Programming Language
A tiny language with tiny memory footprint for human size **prototyping**.
- Only a single type, the table (https://beyondloom.com/decker/lil.html)
- Functions/relations and tables are interchangable. because `smol`.
- immutable, purely functional. Inbuilt data structure for table. Because `smol`.
- Forces normal form. Only variables can occur at binding sites. Because `smol`.
- Only small types allowed: A type may have at most `4096` inhabitants.
- All data is represented with succinct data structures. Can do for `smol`.
- Debugger which keeps a trace of the entire history of the program.
Can do this because `smol`.
- Common lisp-like REPL interface that permits hot reloading. Maintains
history across reloads. Is possible because `smol`.
- Can exhaustively check invariants about function spaces. Because `smol`.
- Zombie: https://www.seas.upenn.edu/~sweirich/papers/congruence-extended.pdf- https://github.com/benwr/glean
- https://github.com/Kindelia/HVM/blob/master/HOW.md
- https://github.com/lucy/tewi-font##### Common Lisp IDE information
- [swank:encode-message](https://github.com/slime/slime/blob/c5342a3086367c371e8d88b3140e6db070365d43/swank.lisp#L865-L870)
- [swank:write-message](https://github.com/slime/slime/blob/68c58c0194ff03cd147fcec99f0ee90ba9178875/swank/rpc.lisp#L100-L107)