You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Language
Complete soft-keyword parsing for declaration words such as actor, class, extension, from, import, protocol, and type, keeping them
usable as names inside functions, classes, protocols, extensions, and actors
while reporting imports after module definitions as a clear parse error.
[#3038]
Compiler & Build
Preserve hidden protocol-witness fields when importing constrained generic
classes, fixing subclass layout corruption and serialization round-trips for
generic classes subclassed from another module. [#3037]
Avoid duplicate visible protocol witnesses when importing and defining
extensions, keeping witness lookup canonical when the same protocol/type
pair is available through rival modules or ancestry paths. [#3061]
Cache imported module closures and attribute-owner lookups during type
checking, cutting repeated import and attribute scans so large generated
modules with many attribute selections type-check in seconds again instead
of minutes. [#3073]
Resolve inherited protocol-witness slots during type checking instead of
late C generation, making witness classes complete for diamond, generic,
cyclic, and imported extensions while reporting conflicting inherited
signatures as compiler errors. [#3049]
Use ThinLTO for non-debug Linux release builds, preserving cross-module
optimization while making final links faster and less memory intensive for
large projects. [#3060]
Keep scalar parameters boxed when overriding generic class methods, so calls
through the generic method slot unbox values inside the callee correctly and
parameter rebinding does not mutate the caller's box. [#3043]
Compile list, set, and dict comprehensions used in if, elif, and while
conditions without moving the generated comprehension helper out of scope.
[#3041]
Deduplicate protocol witnesses for parameterized extensions by comparing
their schematic types, so generic classes with equivalent constraints do not
lose needed witness lookups when type parameter names differ. [#3065]
Commit refreshed cached module interfaces before later compiler phases read
them, so incremental builds see a reliable front-end completion boundary and
keep progress reporting balanced. [#3068]
Compile postfix ! on actor calls inside dict, list, and set comprehensions,
preserving effects and type conversions so generated C uses the correct
calling convention. [#3057]
Compile forced unwrap and optional chaining through named and positional tuple
selections, and report unsupported row-rest selectors normally instead of
crashing the compiler. [#3055]
Escape generated C identifiers that match C keywords using order-independent
lookup, including underscore-prefixed keywords and C23 typeof_unqual, so
generated code avoids reserved-word collisions. [#3044]
Compile base, std, and generated project C with -fwrapv, making fixed-size
signed integer arithmetic wrap consistently in debug and release builds,
including overflowing left shifts. [#3050]
Runtime & Standard Library
Decode JSON integers into Acton int or bigint values without losing
precision, including oversized signed and unsigned tokens, and encode bigint values as JSON numbers by default with a bigint_as_string option
for string-based consumers. [#3047] [#3053]
Add Acton Object Notation support through new aon modules, with
source-aware parsing, deterministic encoding, nested sections, lists, named
tuples, comments, and direct conversion through the same data representation
as JSON. [#3077]
Build tuples in one allocation by storing components inline with the tuple
object, reducing construction memory use and keeping deserialized tuples in
the same compact layout. [#3070]
Handle set elements whose hashes use the high bit without hanging lookups,
keeping membership, deletion, reinsertion, resizing, and serialized
tombstones consistent across supported target widths. [#3075]
Return both coalesced HTTP responses to pipelined http.Client callbacks,
preserving the parser remainder so later responses stay matched to the
correct outstanding request. [#3067]
Fix base64.encode() and base64.decode() for empty byte strings, and make
invalid base64 input raise ValueError instead of aborting the process.
[#3066]
Upgrade the bundled yyjson JSON library to 0.12.0. [#3052]
Testing & CI
Add core-language regression tests for await values, exceptions, chaining,
fan-in, fan-out, queued messages, timers, and mixed outcomes, pinning the
observable semantics before runtime future/message handling is reworked.
[#3034]
Stabilize the project-lock regression test by waiting for the child compiler
to report that it is blocked on the lock before releasing it. [#3069]