2022-06-25
Most features on the tour page are currently implemented to varying degrees. Below is a rough list of features being worked on.
Near Future
- Large rework of the design of the four reference types
- Existentialization as an alternative to monomorphization for faster debug builds
- Inserting
dropautomatically after a variable’s last use - Default handlers for
Panic,Print, and some other effects inmain - Renaming of the
Fs,Netprimitive effects - Compiler option to write inferred types into the file
- Formatter
- Language Server: Better support for struct members and methods
- Possible new sugar
<pattern> do <expr> === fn <pattern> -> <expr>and<pattern> in <expr1> do <expr2> === <expr1> fn <pattern> -> <expr2>. Intended to be used in looping functions:each i do ...andfor i in vec do ...- Problem: this conflicts with
do <expr>being sugar forfn () -> <expr>.
- Problem: this conflicts with
Futurer
The following features are unimplemented but are not my top priority to implement in the near future.
- Design & impl of a
comptimesystem enough to write your ownderives but also cached by the compiler’s incremental metadata Charis 1 byte rather than 4 currently. There is an open design question of whether Ante should use Rust’s model for chars (4 bytes), Swift’s model (variable bytes), or something else.- Bit shift functions
- Pattern guards such as
| pattern if expr -> ... - Performance guarantees on
for_to be as fast as the nativeforloop - A check to ensure only pure implicit functions can be called implicitly
- Row polymorphic struct types
- Cranelift backend
- Language Server: Fill in match arms action
- Proper unwinding when
resumeis dropped - Modules:
as name, re-exports,import implicit - Marker type on each
trait impl - Rework of closure types
- Rework of effect ergonomics.
~>works but is awkward.Streamdefines its own returning-a-function pattern which generally works well.