Commits

trunk
Switch branches/tags
All users
Until May 2, 2026
May 2026
Su Mo Tu We Th Fr Sa
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

Commits on May 1, 2026

  1. Lower 2-arg transfer with array-constructor source
    F2018 §16.9.193: TRANSFER(SOURCE, MOLD) without SIZE defaults to
    ceil(bytes(SOURCE) / sizeof(MOLD_elem)) elements in the rank-1 result.
    The 2-arg path only knew how to derive bytes from a whole-array Name
    (via the runtime descriptor); inline array constructors fell through
    and the assignment took the generic path that segfaulted. Compute the
    constructor's byte count at compile time from its length × element
    kind size and feed both into the existing allocate-then-memcpy path.
    Unblocks example_hashmaps_get_other_data (was rc=139).
    mfwolffe committed
  2. Disassociate pointer slot after deallocate per F2018 §9.7.3.2
    DEALLOCATE on a pointer object must leave the pointer disassociated
    so a subsequent ASSOCIATED() returns false. We freed the heap but
    left the slot value alone, so stdlib_hashmap_chaining's recursive
    free_map_entry_pool — which terminates on .not. associated(pool) —
    walked stale pool memory after re-init reused the dangling cache
    slot as the new pool's lastpool, overflowing the stack at 47k+
    frames. Now store null into the slot after the runtime call, both
    for component-access and ordinary scalar pointer deallocations.
    Unblocks example_hashmaps_init.
    mfwolffe committed
  3. Lower 2-arg transfer into descriptor-allocatable destination
    F2018 §16.9.193: when SIZE is omitted from TRANSFER(SOURCE, MOLD)
    and MOLD is array-shaped, the result rank-1 extent is
    ceil(bytes(SOURCE) / sizeof(MOLD_elem)).  stdlib_hashmap_wrappers's
    set_int32_key writes 'key%value = transfer(value, key%value)' where
    the source is integer(int32), :) and the destination is
    integer(int8), allocatable, :).  Without this branch the 2-arg form
    fell through expr_is_transfer_array_call_dynamic's args.len() >= 3
    guard, took the generic assignment path, and segfaulted.  Now derive
    SOURCE's runtime byte count from its descriptor (whole-array Name +
    elem_size from semantic type), allocate the destination to fit, and
    memcpy.  Unblocks 13 more hashmaps examples (20/26 pass — was 0).
    mfwolffe committed
  4. Pass class(*) scalar dummies as descriptor in caller mask
    arg_uses_descriptor_from_decls flagged class(name) scalars but not
    ClassStar — so the caller-side descriptor mask returned false for a
    class(*) optional dummy and routed the actual through the by_ref path,
    which dereferenced the dummy slot and crashed when the actual was
    absent. The callee-side already laid the parameter out as a 384-byte
    descriptor pointer; the asymmetry caused the segfault. Recognising
    ClassStar in the same arm aligns both sides: forwarding via
    lower_arg_descriptor passes the descriptor (or null when absent)
    without dereferencing it, unblocking 7/10 stdlib_hashmaps examples
    (calls, get, set, loading, entries, key_test, copy_key).
    mfwolffe committed
  5. Apply proc-pointer component default-init via USE-aware resolver
    A component declared procedure(iface), pointer :: fn => target_proc
    now lands in the type layout as FieldDefaultInit::ProcedurePointer,
    gets resolved through host-module USE renames to its origin module's
    afs_modproc_<mod>_<proc> link symbol, and is materialized via
    global_addr+ptr_to_int+store at every default-constructed instance.
    Round-tripped through .amod to survive separate compilation. Without
    this stdlib_hashmaps's hasher field (=> default_hasher aliased from
    fnv_1_hasher in stdlib_hashmap_wrappers) was left zero and every
    dispatch through it crashed.
    mfwolffe committed

Commits on April 30, 2026

  1. Revert "Gate defined-assignment short-circuit on semantic type equivalence not IR peeling"
    This reverts commit f5f14e029de9705654d0ae8f86e5c5a4b4f80500.
    mfwolffe committed
  2. Revert "Test defined-assignment dispatches across logical-vs-derived even when IR peels equal"
    This reverts commit ac52e1ed316b1ce373ee262373c7d0a30f12dc2c.
    mfwolffe committed

Commits on April 29, 2026