RSSAmplifier

Blog

Ante

Recent content on Ante

antelang.orgRSS feed ↗10 posts

Latest posts

FAQ

FAQ Is it any good? Yes. Why use Ante? Safe, shared mutability with unboxed types. It is common to hear that shared mutability should be avoided, and while generally a good rule to design around, shared mutability is extremely important for enabling other aspects of the language: Safe, shared mutability enables Ante to model higher-level code from garbage-collected languages like Java or C#.…

A Vision for Future Low-Level Languages

A Vision for Future Low-Level Languages I’ve had this vision in my head for quite a while now on what code written in a low-level language could look like. This vision has shaped my design of Ante and although I’ve alluded to it before, I’ve never explicitly stated it until now. Now, what makes a language low-level is a bit contentious. I’m using it here to describe a group…

Stable, Mutable References

Introduction In my first blog post I introduced &shared mut references as a way to achieve safe, shared mutability in a language with unboxed types. For more information on those, start with the first blog post. As a brief summary though, &shared mut references can be aliased freely and mutate freely with the one restriction of not being able to be projected into any “shape-unstable”…

Why Algebraic Effects?

Why Algebraic Effects Algebraic effects1 (a.k.a. effect handlers) are a very useful up-and-coming feature that I personally think will see a huge surge in popularity in the programming languages of tomorrow. They’re one of the core features of Ante, as well as being the focus of many research languages including Koka, Effekt, Eff, and Flix. However, while many articles or documentation…

Simplification Through Addition

Ante’s goal was always to be a slightly higher level language than Rust. I always imagined Ante to fill this gap in language design between higher-level garbage collected languages like Java, Python, and Haskell, and lower level non-garbage collected languages like C, C++, and Rust. I still think there’s room there for a language which tries to manage things by default but also allows…

Algebraic Effects, Ownership, and Borrowing

Introduction Algebraic Effects are a useful abstraction for reasoning about effectful programs by letting us leave the interpretation of these effects to callers. However, most existing literature discusses these in the context of a pure functional language with pervasive sharing of values. What restrictions would we need to introduce algebraic effects into a language with ownership and borrowing…

Achieving Safe, Aliasable Mutability with Unboxed Types

This is part of Ante’s goal to loosen restrictions on low-level programming while remaining fast, memory-safe, and thread-safe. Update: The syntax of Ante code snippets has been updated to reflect Ante’s current syntax. Background When writing low-level, memory-safe, and thread-safe programs, a nice feature that lets us achieve all of these is an ownership model. Ownership models have…

Roadmap

Ante’s compiler has recently finished a complete rewrite and is now incremental, concurrent, and fault-tolerant - although general performance still has much room for improvement. This page is for an in-depth roadmap of ante to show which features are currently implemented in the compiler. All designs in the ideas page are not implemented as their design is still non-final and may not be…

Ideas

This page is an incomplete list of features that are currently being considered for ante but for one reason or another are not included in the language already. These features are listed in no particular order. Overloading Some form of overloading could help alleviate user frustration by allowing modules like Vec and HashMap to both be imported despite defining conflicting names like empty, of,…

Language Tour

Ante is a low-level impure functional programming language. It is low-level in the sense that types are not boxed by default and programmers can still delve down to optimize allocation/representation of memory if desired. A central goal of ante however, is to not force this upon users and provide sane defaults where possible. This can be seen in the ability to opt-out of move semantics and even…