Nobody asked for this but decided to make a markdown of the last weeks commits from main
Roc Weekly - December 22-29, 2025
Bug Fixes
Memory & Stability
Fixed memory corruption in unifySharedTags due to slice invalidation
Applied same fix to unifySharedFields for extensible records
Fixed stack overflow in tag union layout computation (#8750 )
Fixed early return value stack corruption in interpreter
Fixed integer overflow in List operations with tuples containing strings
Fixed integer overflow in serialization for large addresses
Parser & Tokenizer
Fixed parse crash with malformed imports
Fixed parse crash with where clauses
Fixed tokenize crash with unicode escapes
Type System
Fixed TypeMismatch when pattern matching on polymorphic function results
Fixed infinite type detection in unification
Fixed opaque type pattern matching in same module
Fixed Box.unbox type resolution with records containing numeric literals (#8765 )
Fixed occurs check recursing into constraints
Fixed value restriction for annotation-only function declarations
Fixed discriminant ordering for tag unions with large payloads (#8773 )
List Operations
Fixed List.map crash on empty lists
Fixed list append for empty records
Fixed handling of list_of_zst (zero-sized types)
Other Fixes
Fixed roc fmt inserting space between ## in doc comments
Fixed pattern matching crash for tag unions with tuple payloads
Fixed closure capture ident translation (#8727 )
Fixed crash when updating var through tuple destructuring in while loop
Fixed runtime type propagation (#8646 )
Fixed tag_union handling in decrefLayoutPtr to fix memory leak
Fixed roc_std sizes, dealloc must be manually managed by host
New Features
break keyword - Added break statement support (#8717 )
Effectful map functions - Added effectful versions of map_ok and map_err (#8736 )
List.sum - Added List.sum method with default constraint
Range functions - Added to and until range functions for all non-float number types
Refactoring & Improvements
Migrated roc_std to new architecture
Converted fx tests to eval snapshot tests for faster execution
Value restriction refactor - only generalize lambda definitions
Added static dispatch for binops
Improved type printing with line breaks and Pair(a, b) syntax
Increased Rank size from u4 to u8 to support deeper nesting
Added heuristics for type store initial capacity
Added combined layoutSizeAlign function for efficiency
Removed unused functions and redundant code
Documentation
Split langref/collections.md into separate files
Improved platform requirements error messages
Expanded language reference documentation
Refined doc comment detection to require ## followed by space
Yeah lot's of progress in many areas. Roc is definitely moving fast.
"Move fast and fix things" :grinning_face_with_smiling_eyes:
Definitely not breaking things over here... :sweat_smile:
Roc Repository - Weekly Commit Summary
Period: December 29, 2025 - January 5, 2026
Summary by Category
Bug Fixes
Recursive type handling : Fixed infinite recursion in layout size computation, tag layout mismatch causing memory corruption, crashes with recursive nominal types
Compiler fixes : Fixed dynamic discriminant offset in comptime_evaluator, correct tag order for mkTagUnion, UNUSED VALUE error for method calls
Parser/Formatter : Fixed formatter idempotence issues for local dispatch, chained zero-arg applications, and field access
Memory issues : Fixed dangling slice causing index out of bounds panic (#8913 ), invalid free panic in non-exhaustive match errors, index out of bounds in closure decref
Number handling : Fixed invalid number literal suffix errors, MONO output defaulting to Dec, method call return type for dbg on extracted Ok values
Fixed crash with recursive nominal type when one variant has no payload (#8901 )
Fixed panic on multiple expects with annotated function (#8897 )
Fixed segfault with recursive nominal types in Box containers (#8816 )
Fixed dbg on U8 extracted from Ok (#8555 )
New Features
Automatic cache invalidation via compile-time struct hashing
Migrated to RocTry instead of RocResult in roc_std_new
Deprecated old numeric suffix syntax (e.g., 123u64) in favor of typed suffix syntax
CI/Infrastructure
Extensive work on kcov coverage: moved between Linux/macOS, fixed DWARF5 issues, added include patterns
Added network error patterns to flaky-retry for CI stability
Coverage enforcement improvements and threshold adjustments
Reverted "smarter nix CI" (#8881 )
Refactoring
Use Blake3 for version hash, removed duplicated code
Simplified header validation in fromMappedMemory
Converted multiple fx tests to eval/layout unit tests for better test isolation
Documentation
Updated implementation completion status and CI results
Deleted outdated planning docs
Changed 'should' to 'must' in statement error messages
Thanks @nandi :)
Last updated: Jan 12 2026 at 12:19 UTC