What it does
Prismio compiles to native machine code through LLVM. The compiler is written in Prismio itself. Its experimental Adaptive Inference Framework (AIF) analyzes escape behavior, ownership, thread transfer, and layout before code generation. The command prismio aif main.psm prints a storage plan that groups each potential allocation site by placement. Adding --why=1 traces the reason for one placement. The command prismio build main.psm --verify runs the real binary against verifier shims that report allocations, releases, leaks, and invalid releases. The --manifest option creates a diffable record for continuous integration. Prismio says its benchmark suite shows a geometric mean time ratio of 0.86 against C++ Clang++ -O3 and 0.83 against Rust rustc opt-level 3, across 62 workloads. Prismio notes that results vary by machine and toolchain. Version 0.1 is in active development, and syntax, runtime contracts, AIF policy, and application binary interface details may change.
Capabilities
- Programs declare C functions with extern fn and mark ownership contracts named borrow, consume, produce, and alias so the foreign boundary stays visible to memory analysis.
- The language includes structs, recursive enums, pattern matching, closures, bounded generics, traits, and impl Trait, and storing or returning a closure is not supported yet.
- Experimental spawn and join run work on native operating system threads, and typed blocking Channel<T> values move messages between workers, with no async/await, atomics, or locks in version 0.1.
- The prismio check command runs the real frontend without generating code and emits JSON Lines diagnostics with P#### codes, severity, files, and UTF-8 source spans, and the codes can change before 1.0.
- The -g flag emits DWARF line tables, functions, scopes, locals, and struct layouts for LLDB and GDB.
When to use it
- Compiler and language development, which Prismio recommends for version 0.1.
- Controlled experiments with a language that is still in active development.
- Finding out where a program's values live in memory and why the compiler placed them there.