https://github.com/lambda-mountain-compiler-backend/lambda-mountain
Compiler Backend for LSTS (Typed Macro Assembler)
https://github.com/lambda-mountain-compiler-backend/lambda-mountain
assisted-reasoning c compiler coq css functional-programming html macro-assembler programming-language self-hosting static-site-generator wasm x86
Last synced: about 7 hours ago
JSON representation
Compiler Backend for LSTS (Typed Macro Assembler)
- Host: GitHub
- URL: https://github.com/lambda-mountain-compiler-backend/lambda-mountain
- Owner: Lambda-Mountain-Compiler-Backend
- License: mit
- Created: 2023-07-02T01:10:10.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-07T22:15:41.000Z (5 months ago)
- Last Synced: 2025-05-07T22:28:37.658Z (5 months ago)
- Topics: assisted-reasoning, c, compiler, coq, css, functional-programming, html, macro-assembler, programming-language, self-hosting, static-site-generator, wasm, x86
- Language: C
- Homepage: https://github.com/andrew-johnson-4/lambda-mountain/wiki
- Size: 306 MB
- Stars: 28
- Watchers: 2
- Forks: 2
- Open Issues: 205
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# [Lambda Mountain](https://github.com/andrew-johnson-4/-/wiki)
λ☶ (pronounced Lambda Mountain) is a typed macro assembler that provides a relatively clean implementation of **System F<: with Specialization**.
* [TUTORIAL](https://github.com/andrew-johnson-4/LSTS/wiki)
* [WIKI](https://github.com/andrew-johnson-4/-/wiki)
* [DOCS](https://lambda-mountain-compiler-backend.github.io/lsts-language-reference/)
* [DISCORD](https://discord.gg/sW2ksPY9jj)### Not Your Average Assembler
Despite being an assembler, LM provides
* self-hosting (LM is written in LM)
* algebraic data types
* parameterized code and data
* hygienic macros
* platform agnostic standard libraries### Why Such a Small Codebase?
LM is currently about 4000 lines of code.
LM solves an N by M Problem with language frontends vs language backends.
The LM project might interface with larger codebases that define frontends or backends, but the core LM Calculus can stay small.### What is a Fragment Assembler?
An assembler takes pieces of data and sticks them together. Assemblers don't always understand the meaning of what they do, they just do it.
A fragment is a Key-Value Map of Strings to S-Expressions. This data structure permits more detailed manipulation of code than a typical assembler.
### IDE Support
Currently, there is only Vim and NeoVim syntax highlighting.
[instructions](./vim/README.md)