Promise epoch-2026.9 #77
djabi
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
epoch-2026.9is now the current stable epoch.This one is about memory safety — both removing the way to opt out of it, and
fixing the places where the compiler was not delivering it.
unsafeis gone from the language. Theunsafeannotation,unsafe { }blocks, and the raw pointer type
T*were all removed. Nothing in thestandard library or the catalog needed them. The capability annotations that
remain are now native-only where that is the honest answer:
`interiorrequires
`native, and`sendable/`sharableare rejected on aPromise type. This is a breaking change if you were writing any of them.
a
go { }block capturing an owned local took ownership without marking itmoved, so the outer scope read freed memory;
Channel.sendof a temporaryclosure corrupted the env; a typed error catch at a supertype dropped only
the base type's fields. Bare failable calls in condition,
for-in-subject,and
match-scrutinee position were a systematic hole and are now checked.--targetflag with triple-awareopt/llc/PAL selection, linker dispatch, and a target-keyed cache.Server.bind_tlsfor serving, andClient.set_tls_configfor custom CAs and mutual TLS. A TLS server wassending only its leaf certificate on every backend, dropping the issuers in
a
fullchain.pem— that is fixed.libSystem.tbdstub instead of Apple's SDK, matching what Windows and Linux already did. This
landed because Xcode 27's SDK declares an architecture our linker cannot parse,
which stopped Promise building on any Mac that updated — so the host SDK was
removed as an input rather than pinned to a version that would break again.
net,ioandosgrew what real programs need — DNS andconnect-by-hostname, per-operation deadlines and cancellation, durable file
writes (atomic rename, advisory locking, fsync), child-process supervision
with signals and process groups, and a CSPRNG.
Failable goroutines landed too (
go!plus auto-propagating<-), protocolnames are now reserved so a near-miss signature fails where it is written
rather than where it is used, and the test suite got several times faster.
Release notes and downloads: https://github.com/promise-language/promise/releases/tag/epoch-2026.9
Installing: https://github.com/promise-language/promise/blob/main/docs/installing.md
Promise is pre-1.0 and the language is still moving — expect breaking changes
between epochs. If you hit something, Q&A and Ideas are open.
All reactions