Strong Type System
- Static typing
- Sum, option, tuple, and procedure types
- Basic, template-based generics
- Type inference
- Type aliasing
Code Clarity and Transparency
- No "behind-the-scenes" code
- Type instances are constructed and destructed explicitly
- No operator overloading
Straightforward Module System
- Simple, source-level modules
- Use the project structure you want to use
- Scoped
using
statement to import module symbols
Helpful Builtins
- Growable arrays, slices
- Array bounds checking (can be turned off)
- Backtrace on error
Interoperable
- Easily interface with C
- Hardware-level access
Compile-Time Metaprogramming
- Conditional compilation
- Full language access at compile time
- Write metaprograms in bJou that interact with the compiler
Performance
- Uses an LLVM back end to compile to highly optimized native code
- bJou's compilation model allows for more interprocedural optimizations
- Explicit memory control
- Simple pass-by-reference semantics
Quick and Helpful Compiler
- Syntax check and perform semantic analysis on hundreds of thousands of lines per second
- Parallelization in almost every stage of compilation
- Clear, meaningful error messages