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.
This document is best understood alongside the Release Policy, which defines the criteria for versioning and releasing new versions of Aria.
Aria is currently at version 0.9. While we intend not to break things for its own sake, this version indicates that the language is still under development. 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.
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:
extensions from being imported based on importer decision;import based on module author decision (e.g. private impl details);imports 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.