Mote
NOTE: this following lists the goals for what Mote is supposed to be. It does not promise that any of the features here will be accomplished or are currently implemented. Check out the roadmap at the bottom of the page to see where we are at.
Mote is a systems-programming language designed to be practical, performant, and simple:
- statically- and strongly-typed.
- zero-cost abstractions.
- complete top-level immutability.
- no
null
, and explicit handling of empty values. - implicit (and explicit) iniling of structures and functions.
- iterative-over-recursive optimization (similar to tailcall optimization).
- minimal / no overhead memory management.
- consistency and simplicity.
- unobtrusive static-checking.
- platform independency, i.e., your code will compile and run on any computer.
FAQ
Where does the name come from?
"Mote" comes from the French word, for "word", "mot". We decided to derive the name from this word for multiple reasons: words are expressive, fast, and light.
motelang/mote
Crates
mote
- the main Mote application; bundles all the following modules.mote_api
- APIs for extending the Mote programming language.mote_analyzer
- performs analysis: optimizations, type-checking, borrow-checking.mote_builtin
- defines Mote builtins.mote_comptime
- lowers Mote compile-time functions.mote_error
- provides APIs for sending pretty error messages.mote_ir
- provides types for expressing Mote programs at all levels.mote_llvm
- compiles Mote code to LLVM (native).mote_parser
- lexes and parses Mote code.
Building
- Fork this project.
cd /mote
.cargo build
.- Add the
LLVM_SYS_110_PREFIX
environmental variable pointing to your LLVM 11 installation.
Roadmap
- Basic
+-*/
mathmetical expressions. - Hello, world!
- strings
- external functions
- Fibonacci
- control flow