Skip to content
← Prism
Prism
Overview
Features
defer orelse zeroinit raw bounds-check auto-unreachable auto-static check
C in practice
Overview goto skips init tag namespace struct padding strict aliasing char signedness signed overflow VLAs segfaults
Spec Draft Releases Blog
GitHub ↗

Prism Blog

Notes on C, compilers, and the work of making an existing codebase safer without rewriting it.

#Also on this site

Long-form posts land here. Two other kinds of writing live nearby and are usually what people are actually looking for.

C in practice collects short, tested write-ups on parts of the language that compile quietly and go wrong later: whether = {0} zeroes the padding between struct members, why a goto past an initializer draws no diagnostic under -Wall -Wextra, and how struct S and S end up naming unrelated types in one file. Each one states the behaviour, shows it measured against a real compiler, cites the standard, and gives a fix that needs no tooling.

The documentation covers Prism itself: defer, orelse, zero-initialization and the rest, plus the specification and the release history.

#Follow along

New posts appear in the Atom feed. Prism development happens in the open on GitHub, where the commit log is a reasonable proxy for what tends to get written about next: most of the C in practice entries started as a bug fix.