Contributing
LumenLang is a solo, exploratory project, but issues, pull requests, and questions are welcome on GitHub.
Before you send a PR
- Build it. Follow Installation & Building — make sure
cmake .. && make -j$(nproc)succeeds cleanly. - Run the test suite.
This exercises the compiler and VM end-to-end. Any change to./test.shsrc/compiler.cpp,src/vm.cpp,src/tokenizer.cpp, or the bytecode format should leave this passing. - Keep the disassembler and debug symbols in sync. If you add or change an opcode, update
disassemblyMapinsrc/disassembler.cppandgetOpCodeOffset()insrc/helpers.cpptogether — a mismatch between the two silently corrupts disassembly output. See Opcode Reference.
Where things live
| Area | Files |
|---|---|
| Tokenizer | src/tokenizer.cpp, include/tokenizer.h |
| Compiler | src/compiler.cpp, src/compiler_math.cpp, include/compiler.h |
| Virtual machine | src/vm.cpp, include/vm.h |
| Native functions | src/vmfuncmap.cpp |
Binary .bin format | src/programfile.cpp, include/programfile.h |
| Disassembler | src/disassembler.cpp, include/disassembler.h |
| Interactive debugger | src/debugvm.cpp |
| Bundled examples | include/examples.h, examples/*.lmn |