Our great sponsors
-
salsa
A generic framework for on-demand, incrementalized computation. Inspired by adapton, glimmer, and rustc's query system.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
I would recommend checking out query based compiler architectures. The rust library salsa serves as a good example for how to implement these frameworks (and if you are using rust, then you can just build your compiler on top of this library). Also, check out this blog post from the author of Sixten in which he goes over how he built his own query based compiler architecture before salsa. https://ollef.github.io/blog/posts/query-based-compilers.html
Self-advertising: I partcipated to the writing of Merlin: A Language Server for OCaml (Experience Report), which explains the overall design of Merlin, a language server for OCaml. A key idea of Merlin are that classic lexing-parsing-typing pipelines can easily be adapted to be incremental for a Language Server, especially when they are using immutable data structures.
There is also this paper (https://arxiv.org/pdf/1911.12737.pdf) and corresponding codebase https://github.com/redelmann/eclair, which I've only skimmed but it looks interesting as well.
Related posts
- Merlin: Context sensitive completion for OCaml in Vim and Emacs
- Merlin: Context sensitive completion for OCaml in Vim and Emacs
- Merlin: Context sensitive completion for OCaml in Vim and Emacs
- Merlin: Context sensitive completion for OCaml in Vim and Emacs
- Merlin: Context sensitive completion for OCaml in Vim and Emacs