What works today, and
what doesn't yet.
Prismio is in active development. This isn't a release calendar. It lists what the compiler does today, what is experimental, and what is not there yet, with no dates.
Works today.
These are in v0.1.0 and you can use them now.
A self-hosted compiler for Windows, macOS, and Linux
The lexer, parser, semantic analysis, and LLVM backend are written in Prismio. It builds native executables, cross-compiles with
--target, and writes debug information with-g.A practical language core
Structs, enums,
OptionandResult, pattern matching, traits, generics, closures, andimplblocks.Collections and text
Vec,Map, slices, fixed-size arrays, strings, and aStringBuilder.A standard library
Twenty importable modules, including files, input, time, math, terminal colours, and process access.
Channels between threads
Typed channels with blocking send and receive. Plain data is copied across, not boxed.
Projects and C interop
A
build.umsmanifest with build profiles, a lockfile, path dependencies, and native C sources. Functions in C libraries are called directly.
Experimental.
These work, but they are new. Expect changes and rough edges.
Ownership checks and memory placement
The compiler enforces moves and borrows and decides where each allocation lives, and it can explain why. The rules and their cost model can still change.
Tasks
spawn, join, and Task<R> run work on native threads.
Data layout views
You can ask for an array-of-structs or struct-of-arrays view of your data.
Not yet.
Missing is not the same as scheduled. These are not in v0.1.0, and listing them here is not a promise of when, or in what order, they will arrive.
Standard library
- Networking (sockets)
- JSON parsing and writing
- Regular expressions
- More collections: deque, linked list, sets, sorted map, priority queue
- Random numbers
- Calendar dates, time zones, and timers
- Memory-mapped files
Language
asyncandawait- Atomics, locks, and other synchronization types
selectover channels, and non-blocking send and receive- Exceptions and the
?operator - Macros and compile-time code generation
- User-written lifetimes
- Aliased imports, and
ifandmatchas expressions
Tooling
- A formatter and a linter
- A language server for editors
- A package registry with version solving
- Importing modules from a dependency by path
- C++ sources and library targets in the manifest
Performance and platforms
- Explicit SIMD vector types
- Custom allocators for containers
- A work-stealing thread pool
- Android and iOS toolchains
The benchmark suite shows the same gaps from the other side: 15 workloads are marked unsupported instead of being faked. See the benchmark coverage
Blocked
WebAssembly
Prismio can emit WebAssembly code, but there is no C library for the WebAssembly target to build the runtime against, so a working build can't be produced from this repository yet. It is blocked, not in progress. Cross-compiling to other targets works.
Want to help with any of this? Start at the community page