Talk 0.1.70 Adds Static Generics, Inline Arrays, and Everyday Syntax
Talk 0.1.70 adds static value generics, inline arrays, early propagation, subscripts, ranges, bitwise operators, scoped unsafe blocks, and VS Code test discovery.
Talk 0.1.70 adds static value generics, inline arrays, early propagation, subscripts, ranges, bitwise operators, scoped unsafe blocks, and VS Code test discovery.
Talk 0.1.63 adds implicit sharing and snapshot-safe views, rebuilds execution around register bytecode, and sharply cuts measured compile and run costs.
Big release today. Talk can now create, install, build, run, and test real packages without flattening their module boundaries. Locked dependencies and first-class tests finally give projects a proper home. Structural equality, richer patterns, tuple access, explicit cloning, practical Unicode tools, and editor quick fixes all came along for the ride.
Ordinary parameters now use shared borrows by default, and for loops get typed access lanes. Protocol-head extensions can express blanket conformances, while arrays, iterators, character literals, closures, and the test runner all picked up useful improvements.
TalkTalk has a C-facing compiler API now, with a Swift package layered on top. Protocol arguments have real names, leading-dot variants can read more context, and rename follows more of the language instead of stopping at the easy cases.
Strings now count the graphemes readers actually see. Byte access moved behind an explicit view, generic effects specialize cleanly, leading-dot spelling got friendlier, and talk setup nvim gives Neovim users a one-command front door.
Ownership has moved into the type system. Heap-allocated reference graphs are open for business, destructors and borrows keep a clearer ledger, and leak checks are now part of the release bargain instead of an optional audit.
Typed HIR and MIR-owned ownership facts are settling into the parts of the compiler that use them. OS IO reaches process operations, for loops expose a more predictable lowered shape, and the formatter better preserves if let and handler matches.
Branch locals leave before shared tails, tail values pass through scope cleanup, repeated empty branches share their road home, and auto-borrowing stays at the immediate call boundary where it belongs.
Owned values now leave clearer footprints through loops, fields, borrows, consuming receivers, and bytecode. Early exits clean up after themselves, and the command line opens a few more doors into the compiler.