Roadmap
Calx is pre-release, and this is the board it's built from, as it is now: what's planned, what's being built and what's shipped. Vote for what you'd like sooner, suggest an idea, or report a problem.
- Planned
- 11
- In progress
- 28
- Shipped
- 29
- Ideas
- 0
The board
Planned
11Decided or designed, and not started.
- CLX-6Insert tick-budget checks in plugin builds
- CLX-7Build plugins for wasm32 from the same source
- CLX-58Read a symbolic link's target, in std.fs
- CLX-8Build the plugin tooling and a language server
- CLX-69Add Handle<T>, a checked reference into a slot map
- CLX-70Add Shared<T> for data a parallel loop reads at once
- CLX-71Run parallel for over slot maps and maps, and on a pool the program picks
- CLX-72Add dyn interfaces, associated types and operator interfaces
- CLX-73Add java.ArrayList, a list that grows as Java's does
- CLX-74Stop only the plugin that panics, and free all its memory
Nothing here yet.
In progress
28Being built, or built and waiting for review.
- CLX-2Define the Phase 3 tick-loop benchmark
- CLX-1Write CALX_SPEC.md v0
- CLX-4Add packet codegen
- CLX-37Add std.fs for files and directories
- CLX-38Add the wall clock to std.time
- CLX-39Close sockets gracefully on Windows
- CLX-40Make -o create its folder
- CLX-41Give connections' peer addresses in std.net
- CLX-42Make net.poll wait for an event or its timeout
- CLX-44Report a stack overflow as a panic
Nothing here yet.
Shipped
29Done, newest first.
- CLX-60Build the Calx website
- CLX-49Give std.time the local zone's abbreviation
- CLX-30Write the hashes, random bytes, AES-CFB8 and RSA that login needs
- CLX-31Write zlib compression
- CLX-32Add an HTTPS client on the system's TLS
- CLX-33Write LZ4 as lz4-java's block streams
- CLX-9Write the Rust reference benchmark
- CLX-10Build the compiler pipeline
- CLX-16Build the compiler test suite and doc tests
- CLX-17Add debugging support
Nothing here yet.
Ideas and issues
An idea is something Calx should do, and anyone can vote for it. An issue is something that's wrong, in the compiler, the standard library or the docs. Issues go to GitHub, where you can follow the replies.
For now, ideas go to the board's page on Acta, where anyone can vote for them too.
Suggest an idea on ActaWhere Calx is
The tasks above, summed up by feature.
Built
Everything in the reference and the standard library is built, and every example on those pages is compiled and run on Windows and Linux on every push:
- The types: integers and floats with defined results on every platform, structs, enums, tuples, optionals, error values, generics and interfaces.
- Memory safety without a garbage collector: ownership, views, arenas and
Box<T>, withunsafecode and C functions for what the checker can't see. parallel for, whose capture check gives the same result with any number of threads, and messages between actors, delivered in a fixed order.- Modules, libraries that a program opens while it runs, and attributes that libraries write in Calx, which generate code while the program compiles.
- Lists, deques, priority queues, maps and sets, and the Java-compatible hash tables.
- Standard library modules for input and output, files, the network, threads, time, math, hashing, compression and the terminal.
- The
calxcommand, with cached builds that redo only what changed, and the VS Code extension.
Designed, not built
The spec has the design of each of these:
- Handles:
Handle<T>, a checked reference to an object in a slot map, which says when the object is gone instead of reading freed memory (spec). - Shared data:
Shared<T>, for data that many iterations of aparallel forread at once (spec). - More parallel loops: a
parallel forover the values of a slot map or a map, and on a pool the program picks (spec). - Values of different types together:
dyninterfaces, associated types, and interfaces for the operators (spec). java.ArrayList, a list that grows as Java's does, for code that must match Java's capacities (spec).- Plugins that fail alone: a plugin's panic stops only that plugin, and its memory is all freed when it stops (spec).
Later
- Plugins as WebAssembly, built from the same source, for hosts that run code they don't trust.
- A language server, so editors other than VS Code get errors, completion and go-to-definition, and
calxcommands for building and testing plugins. - Limits on plugins' time: checks the compiler puts in plugin builds, so a plugin that runs too long can be stopped.
- Quarry, a package manager for Calx libraries, which are called stones.