The compile-time language

A systems programming language focused on providing extreme extensibility without compromising on speed or readability

Ante is in active development

Ante is currently in active development and the compiler is in a very early state. In addition, the features listed on this website detail the language itself rather than the subset that is implemented by the current compiler. If you are interested to see which features are implemented, please look at the github page linked below. Any features not tested in the integration tests are likely to not yet be implemented.

A New Way to Metaprogram

Ante's primary feature is its use of compile-time execution to also interface with the compiler as a library and allow compiler extensions to be made within the program itself. This allows for programming your own optimization passes, implementing ownership semantics, extending the type system, and more.

Refinement Types

Ante’s type system can prevent entire classes of bugs so you can catch them before ever running your program. For example, out of bounds array indices are a compile-time error.

Extensible

A compile-time API for the compiler itself enables the creation of compiler extensions within the program itself. This enables anything from creating new optimization passes to extending the type system with dependent types.

Robust Module System

Modules provide an easy way to manage multiple files and reason about large systems. They also enable faster compilation through caching.

Integrated Build System

Build instructions can be specified within the source code itself, no makefile needed. Additionally, no special syntax is required as it is implemented as a normal library module using Ante’s compile-time API.

High & Low Level language

Ante hosts a variety of high-level solutions such as smart pointers and first-class functions but also provides the ability to interact at a lower level if needed.

Gradual Memory Management

To support the largest variety of applications, Ante provides several different methods of memory management, including manual management. Don’t want to bother with any of it? Simply import GC to use a garbage collector.

The compiler is on GitHub

All are welcome to contribute!

github.com/jfecher/ante