Incremental/single-pass based compiler, the API can be either used for Single-Pass Compiling and for building LSP, or things that would need incremental pipelines. It's a study project of mine for studying incremental compilers and package-managers.
The project is still being developed, and the table of contents is:
The objective of this project is:
- Dealing with language-servers, and direct support for Visual Studio Code
- Having a full-featured CLI for building, and packaging libraries for Sol
- Lowering to LLVM-IR, and executing JIT
- Error-resistant compiler, like having a compile-time error, and still can compile, because the error fall onto the runtime
- Interpreter for basic things like macro-expanding.
- Query-based architecture.
It's all based on the works:
- Resilient parsing
- Typing Haskell in Haskell
- Sixty
- Query-based compiler architecture
- Rust
- Crafting Interpreters
- Semantic
- Data types à la carte
- Salsa
- OutsideIn(X)
- How to implement dependent types in 80 lines of code
- Complete and Easy Bidirectional Typechecking for Higher-Rank Polymorphism
- Bidirectional typechecking for higher-rank polymorphism
- Practical type inference for arbitrary-rank types
And have some great inspirations in rust-analyzer code-base..
Clone the repository with git submodule update --recursive --remote
The goal of this compiler isn't optimizing things, it's more like an IDE, so the garbage collector is based on Reference Counting.
Sol is distributed under the terms of the MIT license.