Mattia Giambirtone 919f07df55 | ||
---|---|---|
docs | ||
src | ||
tests | ||
.gitignore | ||
LICENSE | ||
Makefile | ||
README.md |
README.md
peon
Peon is a simple, functional, async-first programming language with a focus on correctness and speed
Project structure
src/
-> Contains the entirety of peon's toolchainsrc/memory/
-> Contains peon's memory allocator and GC (TODO)src/frontend/
-> Contains the tokenizer, parser and compilersrc/frontend/meta/
-> Contains shared error definitions, AST node and token declarations as well as the bytecode used by the compiler
src/backend/
-> Contains the peon VM and type systemsrc/util/
-> Contains utilities such as the bytecode debugger and serializer as well as procedures to handle multi-byte sequencessrc/config.nim
-> Contains compile-time configuration variablessrc/main.nim
-> Ties up the whole toolchain together by tokenizing, parsing, compiling, debugging, (de-)serializing and executing peon code
docs/
-> Contains documentation for various components of peon (bytecode, syntax, etc.)tests/
-> Contains tests (both in peon and Nim) for the toolchain
Credits
- Araq, for creating the amazing language that is Nim
- The Nim community and contributors, for making Nim what it is today
- Bob Nystrom, for his amazing book that inspired me and taught me how to actually make a programming language
- Njsmith, for his awesome articles on structured concurrency
Disclaimer about the project's state
The project is still in its very early days: lots of stuff is not implemented, a work in progress or otherwise outright broken. Feel free to report bugs!
Also, yes: peon is yet another programming language inspired by Bob's book, but it is also very different from Lox, which is an object-oriented, dynamically typed and very high level programming language, whereas peon is a statically-typed, functional language which aims to allow low-level interfacing with C and Nim code while being a breeze to use.
Also, peon will feature structured concurrency with coroutines (think Futures/Fibers but without callback hell). Since, unlike Lox, peon isn't a toy language, there's obviously plans to implement creature comforts like an import system, exception handling, a package manager, etc.