Welcome to Aria!
This document outlines the future direction of the Aria programming language. As an open-source project, we welcome community feedback and contributions to help shape the future of Aria. Ideas outside this roadmap are very welcome, and can be filed as GitHub issues to begin discussion.
Aria is currently at version 0.9. This means that we intend the core language and library to be mostly stable and usable. Up until version 1.0, we reserve the right to make breaking changes to the language and to the library. Ideally, we will only do this if the balance between the value of the change and the cost of breaking existing code is a net-positive.
After version 1.0 is released, we will only consider breaking changes on a must basis, i.e. we will only break existing code if there is no other realistic path to achieve a significant language goal.
We plan to ship Aria 1.0 with the existing parser, but may consider a migration to hand-rolled parser in a future version, in order to improve the quality of error messages. Rewriting the Aria compiler or VM in Aria is a non-goal.
Path
and Regex
outside the core language;Void::void
case and having functions default to returning that;func main(args: List)
as a valid entry point;Float
exponential methods to an extension
.;
to be a valid statement./usr/bin/aria
and running programs without compiling from source.char
/ byte
builtin types;try_unwrap
helpers for enums;while {} else {}
support;Either
enumeration;aria.network
;aria.fs.path
helpers for filesystem manipulation;aria.numerics.Complex
.Implement support for Reflection: Allow introspecting Aria values in a more structured and uniform manner.
Implement a Foreign Function Interface (FFI): Allow Aria to call directly into C APIs without writing a glue layer.
Filtered Exception Handling: Allow pattern matching in catch
clauses.
Improvements to 3rd party library ecosystem: Make it easy to create an Aria library (possibly with a native binding) and ship it to users.
Create a Language Server Protocol (LSP) Implementation: Provide a better development experience in code editors with features like autocompletion, go-to-definition, and inline documentation.
Serializable Modules: Allow compiling Aria modules once and storing the output for faster execution. This is not intended to allow shipping binaries that cannot be reverse-engineered, its goal is purely speed of execution for unmodified programs.
import
experience: Remedy shortcomings in the way import
works, including:
extension
s from being import
ed based on importer decision;import
based on module author decision (e.g. private impl details);import
s within a function/type scope.Expand Platform Support: Add support for Aria to run on Windows and macOS. Enable runtime platform checks.
Implement a Debugger: Develop tooling to allow interactive debugging of Aria progams.
Allow GUI/TUI apps in Aria: Add support for UI toolkits (text and graphics based).
We encourage you to get involved! Please see our Contribution Guide for more details on how you can help.