| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| acton-0.29.0-1.aarch64.rpm | 2026-07-10 | 92.1 MB | |
| acton-0.29.0-1.x86_64.rpm | 2026-07-10 | 89.5 MB | |
| acton_0.29.0_amd64.deb | 2026-07-10 | 82.2 MB | |
| acton_0.29.0_arm64.deb | 2026-07-10 | 80.9 MB | |
| acton-linux-aarch64-0.29.0.tar.xz | 2026-07-10 | 105.1 MB | |
| acton-linux-x86_64-0.29.0.tar.xz | 2026-07-10 | 107.6 MB | |
| acton-macos-aarch64-0.29.0.tar.xz | 2026-07-10 | 116.0 MB | |
| acton-macos-x86_64-0.29.0.tar.xz | 2026-07-10 | 98.2 MB | |
| README.md | 2026-07-10 | 6.8 kB | |
| v0.29.0 source code.tar.gz | 2026-07-10 | 3.2 MB | |
| v0.29.0 source code.zip | 2026-07-10 | 3.9 MB | |
| Totals: 11 Items | 778.7 MB | 0 | |
This release drastically improves compile times for modules that import very large modules. The compiler tracks what specific names are used from each import and selectively loads exactly those names, avoiding reading full imported modules.
Language
- Derive
Eq,OrdandHashablefor tuples whose components implement them: tuples now support==, the comparison operators andsorted(), and work as dictionary and set keys. Equality and ordering are componentwise at a single common type, so comparing tuples of different shapes (positional vs named, or reordered field names) is a type error. Witness classes are registered for serialization with preassigned class ids, shifting all dynamically assigned class ids once. [#3009] - Add a compiler-synthesized
__get_attr__(name: str) -> ?valuereflection getter on every class, returning boxed instance attributes by their Acton names while reserving__get_attr__against user definitions. This lets serializers reflect over attributes without forcing every attribute subtree to stay reachable in large generated data models. [#2993] - Compute bytes literal lengths correctly when a hex escape is immediately followed by another hex digit, matching the generated split C string fragments instead of letting the escape consume too much of the following text. [#2996]
- Use tuple truth values safely in
if,while,not, and conditional expressions, fixing a panic when tuple__bool__returned an unboxed Cbool. [#3004]
Compiler & Build
- Track what specific names are used from each import and selectively load exactly those names, avoiding full imported-module reads during type checking, back passes, final C compilation, and cached implementation-hash refreshes. Deferred back passes are enabled for normal modules, and tested large-module cases see 10,000x improvements. [#2930] [#3000] [#3005] [#3008]
- Speed up large generated modules by deduplicating external witnesses within each protocol/type bucket instead of scanning every accumulated witness. [#2999]
- Generate direct C calls for statically known builtin protocol methods on builtin types, avoiding witness-table dispatch for those calls while keeping the existing builtin witness values available to the generated code. [#2935]
- Continue primitive unboxing with
bool, one of the most common value types in Acton programs, representing it as an unboxed Cboolthrough generated code and builtin/runtime method tables while preserving inherited method calls that returnbool. [#2976] - Preserve loop-carried locals assigned inside
forloops in optimized release builds, fixing cases such as explicitly providedargparsesub-command options being lost under--release=fast. [#2981] - Enable link-time optimization for non-debug Linux builds, including generated projects, base, std, backend, and bundled runtime dependencies, while keeping Debug builds fast. [#2982]
- Compile local bindings that shadow functions, including assignments inside branches, without letting the global function name suppress the generated C local variable declaration. [#2988]
- Preserve boxed values for primitives stored across awaited actor calls, so
augmented assignments update
intandfloatlocals safely after anawaitinstead of corrupting the boxed cell slot. [#2998] - Compile continuation calls that return proc values through closure
conversion, fixing
### BAD contArgcrashes inactonc --lliftand other passes that force the generated continuation type annotations. [#3014] - Initialize module globals in bounded chunks and assign simple top-level globals directly, avoiding startup stack overflows and oversized temporary frames in modules with many generated globals. [#3015]
- Raise the compiler process open-file limit on startup, reducing file-descriptor failures during large concurrent builds and cache-heavy projects. [#3002]
- Avoid macOS cached-interface lock exhaustion after interrupted builds by building vendored LMDB with process-shared mutexes instead of global named semaphores. [#3007]
CLI & Project Workflow
- Prevent parallel
acton testruns from hanging when a worker or output reader fails, reporting the runner failure or captured output error instead of waiting forever for a missing completion event. [#2972]
Runtime & Standard Library
- Add UDP support to
net, withUDPCap, fixed-remoteUDPConnectionsockets, boundUDPListenersockets, peer address and port reporting, and listener replies to arbitrary peers. [#2989] - Add
serialize(obj) -> bytesanddeserialize(data) -> valuebuiltins for in-memory object graph round-trips, preserving shared and cyclic references and rejecting actors that cannot be serialized without a global reference map. [#2997] - Report missing or empty
process.Processandprocess.RunProcesscommands throughon_error, and mark failed spawns as not running so follow-up process operations are safely ignored. [#2986] - Serialize
bigintvalues with their own class id so multi-word integers round-trip through Acton serialization instead of being decoded as normalintrows. [#2994] - Serialize
bytesvalues with their own class id so they round-trip asbytesinstead of deserializing asstr. [#2995] - Preserve shared object references during deserialization by using the same integer key representation for back-reference registration and lookup, fixing repeated references that previously decoded as missing values. [#3011]
- Fix
json.Jsonactor actions sodecode,decode_list,encode, andencode_listcall the shared JSON implementations instead of recursively calling themselves. [#3017]
Packages & Distribution
- Speed up macOS CI by reducing the PR test matrix to faster macOS 26 runners, while release artifacts still target macOS 15 for both the Zig target and Haskell binary deployment floor and publication stays gated on macOS 15 smoke tests. [#2992]
- Speed up package CI by building Debian and RPM packages from the same
prebuilt
dist/tree, avoiding the slow, hard-to-cache Debian package rebuild while sharing installed-payload validation and package version checks across both package formats. [#2987] - Expand ecosystem CI coverage with standalone
acton-sshandacton-grpctest jobs, and drop the stale standalonencurljob now that its source lives in StratoWeave. [#2974] - Compress RPM payloads with zstd, and check for the
zstdtool before building RPM packages. [#3001]
Documentation
- Document the type checker's witness environment invariants, active and closed witness lifetimes, enumeration order, and possible exact-lookup split in the compiler developer guide. [#2978]