Racket 9.2 Tightens Pattern Matching, Updates to Unicode 17.0
Racket 9.2 ships with several breaking correctness fixes alongside the usual polish. The match form now enforces equality between repeated variables in non-linear patterns used with ellipsis, and rejects mismatched ellipsis usage across uses of the same variable. Typed Racket also corrects its types for asin and acos to account for complex-number results, closing a soundness gap that could now surface as compile-time failures in existing code.
Under the hood, the release adds a #%foreign-inline core form for unsafe linklet-layer access, lays groundwork for a more static ffi2 foreign interface, and rewrites several core primitives like member, when, unless, and cond using only racket/kernel syntax. Character and string operations move to Unicode 17.0, and cross-phase persistent modules accept more quoted data shapes.
Smaller quality-of-life changes round things out: Typed Racket prints polymorphic struct types with their type arguments rather than internal representations, Scribble defaults its initial-scale to 1.0 outside the manual style, margin notes go inline on narrow displays across all styles, and the stepper’s number display now respects language settings.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.