← Prism
Prism
Overview Spec Draft Releases
Features
defer orelse zeroinit raw auto-unreachable auto-static
GitHub ↗

Releases

Prism release history. All releases are available on GitHub Releases.

v1.1.1 current

GitHub ↗

Prism 1.1.1 is here — this release is all bug fixes: 27 bugs across 9 commits, including memory-safety vulnerabilities in the preprocessor pipeline, multiple zero-init bypass vectors, defer/orelse interaction breakage, and emitter-level codegen drift.

Security

Bug Fixes

Stats

v1.1.0

GitHub ↗

Prism 1.1.0 is here — this release introduces the auto-static progressive optimization and bug fixes.

New Features

Security

Bug Fixes

Tests

Stats

v1.0.9

GitHub ↗

Prism 1.0.9 is here, a focused correctness and security release — 17 bugs were fixed across defer validation, orelse transformation, zero-initialization, and the typedef table, with particular attention to chain-aware scanning in defer bodies and orelse side-effect validation.

Security

Bug Fixes

Stats

v1.0.8

GitHub ↗

Prism 1.0.8 continues the correctness and security focus, closing 20 bugs across the transpiler with particular attention to keyword table coverage, namespace isolation, statement-expression dispatch completeness, and braceless control flow scope tracking.

Security

Bug Fixes

Stats

v1.0.7

GitHub ↗

Prism 1.0.7 continues the correctness and security focus, closing 26 bugs across the transpiler with particular attention to defer body emission integrity, two-pass invariant enforcement, volatile/VLA type tracking through struct bodies, and noreturn detection safety.

Security

Bug Fixes

Stats

v1.0.6

GitHub ↗

Prism 1.0.6 is here, a focused correctness release that drops the _Generic member rewrite engine (moved to spec-only, no codegen) and fixes 18 bugs discovered through systematic full-pass auditing of the transpiler. Major areas addressed: C23 attribute handling across orelse/bracket/struct paths, Objective-C compatibility, typeof nesting, __label__ local labels, and the orelse keyword shadow disambiguation system — which now handles real typedefs named orelse uniformly via positional context.

Security

Bug Fixes

Other Changes

Stats

v1.0.5

GitHub ↗

Prism 1.0.5 is here, this release is big, loads of internal refactoring to lay the groundwork for supporting new features, it is also focused entirely on correctness, security, and robustness — 67 bugs were fixed across every layer of the transpiler, with particular attention to the _Generic member rewrite engine, two-pass invariant violations, defer cleanup integrity, and orelse type safety.

This release also introduces a formal language specification with 307 compliance tests, it's a move towards robustness in documentation and validation, and moving prism toward much better support of ISO C99 / C11 / C23

Security

Bug Fixes

Stats

v1.0.4

GitHub ↗

Prism 1.0.4 — no new features. Internal cleanup, refactoring, and bug fixes.

Bug Fixes

Refactoring

Stats

v1.0.3

GitHub ↗

Prism 1.0.3 is here, no new features were added, this release is focused entirely on correctness, security, and robustness — 33 bugs were fixed across the transpiler's two-pass architecture, with particular attention to two-pass invariant violations, security-critical data corruption paths, and denial-of-service vectors.

Security

Bug Fixes

Stats

v1.0.2

GitHub ↗

Prism 1.0.2 is here, no new features where added, this release is heavily focused on quality, performance, and robustness to ensure it's dependable for all.

Performance

Prism's transpiler throughput improved by 13.4% (measured by retired instructions on self-transpile). Six hot paths were optimized with bloom filters, O(1) post-annotation typedef rejection, consolidated token metadata access, and a pure-C early exit for files with no orelse usage. (4650fc8)

Algorithmic Improvements

Bug Fixes

Stats

v1.0.1

GitHub ↗

Prism is out of its 1.0 stabilization phase, Prism is shifting to a more frequent release cadence.

This release also marks a fundamental shift in the nature of the project. Prism is no longer just a transpiler that adds explicit features like defer and orelse—it is evolving into a progressive enhancement engine for standard C. Developers get safer, faster, and tighter binaries simply by passing their code through the transpiler, without changing a single line of their source.

Progressive Enhancement: Auto-Unreachable Insertion

Prism now automatically tracks _Noreturn, [[noreturn]], and standard library exit functions across your entire translation unit. It now silently injects __builtin_unreachable() (or __assume(0) on MSVC) after these calls. (b3a6981)

Performance & Binary Size

By feeding explicit control-flow termination data directly to the backend C compiler, this enables aggressive dead-code elimination (DCE), allows the backend to drop unnecessary function epilogues, reduces register pressure, and improves branch prediction. Your binaries get smaller and faster automatically.

Bug Fixes

Stats

v1.0.0

GitHub ↗

This release represents a complete architectural rewrite of the transpiler from the ground up, graduating Prism from a single-pass prototype into a hardened, production-ready tool. Introduced the new orelse keyword, added full native Windows (MSVC) support, and massively expanded the test suite.

Most importantly, Prism is now fully self-hosting and fundamentally safer by design.

Major Highlights


The Paradigm Shift: Two-Pass Architecture

Before, Prism used a single-pass architecture — it walked the token stream once, building the typedef table on the fly and emitting C as it went. Typedefs were popped from a mutable table on scope exit. Labels were scanned per-function right before emission. Goto safety was checked inline during code generation. It worked, but every edge case was a new special case bolted onto the emitter, and the emitter was already doing too much.

Now there are two distinct passes:

This separation closed entire categories of bugs. The old architecture had ~20 different places where the emitter had to make semantic decisions mid-output. Now it just reads annotations.

Architecture Comparison


Scale & Stability By the Numbers


Documentation & Specs

v0.110.0

GitHub ↗

Prism v0.110.0 is a major release that adds native Windows support(MSVC) significant performance gains, hardening across the transpiler, parser.

1.60× faster end-to-end.

VersionMeanRange
v0.105.0317.4 ms ± 7.0 ms303.7 ms … 330.7 ms
v1.1198.0 ms ± 3.1 ms192.0 ms … 207.6 ms

Full compile pipeline, prism prism.c -o /dev/null, 30 runs (hyperfine)

Performance

Fixed

Hardened

Testing

Misc

v0.105.0

GitHub ↗

Prism v0.105.0 is a heavy consolidation release focused on hardening Prism and dramatically improving code quality. This update refactors significant portions of the parsing logic to be faster and more maintainable while closing complex safety holes in control flow analysis.

Fixed

Changed

Removed

Testing

v0.100.0

GitHub ↗

First single pass version of prism, this is unsafe and a very early prototype, do not use.