Erg has a strong type system and comfortable compiler support. For example, it has dependent types and refinement types. These types strongly encode pre-conditions, invariant conditions, etc. into the code.
Simplicity & Consistency
Erg consists of a very simple and consistent syntax, which can significantly reduce the amount of code compared to other languages. However, its functionality is not inferior to them. Since the type inference system is powerful, you can code like a dynamically typed language.
In addition to the readability of the syntax itself, Erg defines a rich set of methods and functions by default to improve code readability.
Functional & Object-Oriented
Erg requires some kinds of markers to be placed on code that causes side effects or changes internal state, which can localize the complexity of code. This will greatly improve the maintainability of your code.
Erg is committed to providing error messages that are easy to read and various development tools. Erg also provide multilingual support for error messages, etc.
Interoperability with Python
Erg code can be compiled into Python bytecode. This means you have zero-cost access to your Python assets with Erg.
- WIP Dyne (Python compatible bytecode interpreter, optimized to Erg's specifications, static types and the ownership system etc.)
- WIP LLVM (The compiler is called Gal, also optimized to Erg's specifications)