Crafted with an unwavering focus on simplicity and elegance, λ.c is more than just a minimalist compiler. It's a vision of what computing can be at its most elemental.
🚨 Notice: We're in the throes of initial development. The codebase is experimental—perfect for the brave of heart and curious of mind. Come, be a pioneer! See what we're building →
As of now, our journey into untyped lambda calculus is heralded by a fully operational lexer. This initial offering brings with it:
- Tokenization of basic lambda calculus syntax: variables, lambdas, and parentheses.
- Robust error handling for unexpected tokens.
- A glimpse into the kind of meticulous craftsmanship that will define future stages of this project.
- Create a robust and extensible AST to represent lambda calculus expressions.
- Implement parsing logic that translates token streams into the AST.
- Validate the logical coherence of expressions.
- Introduce scope resolution and perform alpha-renaming as necessary.
- Translate the AST into one or more intermediate forms for optimization.
- Experiment with graph-based representations like Single Static Assignment (SSA).
- Implement constant folding, dead code elimination, and other classical optimization strategies.
- Explore lambda calculus-specific optimizations.
- Translate intermediate forms into target machine code or another high-level language.
- Experiment with generating LLVM IR or WebAssembly for broader platform support.
- If applicable, develop a minimal runtime to manage program execution.
- Consider garbage collection or other memory management strategies.
- Continue to document the architecture, algorithms, and design patterns used.
- Create example programs to demonstrate features and educational use-cases.
- Engage with early users to gather feedback and iterate.
- Develop contributor guidelines and good first issues to welcome new developers.
Dive deep into the inner workings of λ.c through our detailed documentation. Take your understanding from zero to hero—no calculus textbook required!
Follow the path of enlightenment:
$ git clone git@github.com:denisdubochevalier/lambdac.git
$ cd lambdac
$ make && make install
Dare to contribute? It's simple:
- Fork this repository.
- Check out your own feature branch:
git checkout -b feature/wondrous-feature
. - Craft your magic:
git commit -am 'Add my wondrous feature'
. - Share with the world:
git push origin feature/wondrous-feature
. - Open a pull request and join the ranks of the enlightened.
For even more details, consult our Contributing Guide.
Though it costs nothing to use λ.c, consider extending your kindness by donating to the Electronic Frontier Foundation (EFF). It's not required, but it's a way to contribute to the fight for civil liberties in the digital world.
λ.c is released under the BSD 2-Clause License. See the LICENSE file for details.