Statim is to be a multi-purpose, strongly typed language designed with kernel development in mind. The main point of the project is to expirement with the potential of an interpretable intermediate represenation (IR) closely coupled into the compiler.
Overarching priorities of the language are reduced compilation times from that of modern C/C++, metaprogramming capabilities, and compile-time executions of arbitrary code. Although costly to the former, having a unique IR allows for some interesting compiler feedback and compile-time opportunities.
Although keeping with the general purpose idea, to write software that we want, we need features like complex casting, pointer arithmetic, etc. and thus the language won't shy away from those constructs; it's not meant to be "high-level".
- compile-time evaluation
- operator overloading
- templates via monomorphization
- parallelization
- runtime type reflection
- auto dereferencing (no
->operator) - functions with multiple return values, natively
- namespaces
deferstatements- optional bounds, null pointer checks
- constructors, destructors
new&deleteoperators- garbage collector
- RAII
- function overloading
- inheritance
- a preprocessor
- external build system(s)
- exceptions
- references