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/,src/vm/,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 (statements, expressions, tables, finalize), include/compiler.h, include/compiler_internal.h |
| Virtual machine | src/vm/vm.cpp, src/vm/translator.cpp, src/vm/memoryallocator.cpp, include/vm.h |
| Native functions | src/vm/vmfuncmap.cpp (implementation), src/compiler/compiler_tables.cpp (funcList) |
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 |