Skip to content

Releases: okcontract/oksolc

oksolc 0.2.2

Choose a tag to compare

@hbbio hbbio released this 20 Oct 13:40

Requires Zig 0.17.0.

Solidity compatibility target: 0.8.36.

Changed

  • Lower-level Zig ABI size and offset queries and
    ReturnInfo.estimated_return_size now use u256 instead of u32.
  • Direct calls to compileSolidityStandardJsonAlloc and
    compileYulStandardJsonAlloc now take a source_errors slice after
    loaded_sources; pass &.{} when source resolution produced no diagnostics.

Fixed

  • Preserve ordinary Solidity typing when settings.experimental is enabled
    (#30).
  • Traverse deep inheritance and override graphs without fixed recursion limits,
    and keep the stdio service running after internal compiler failures
    (#31).
  • Validate each source URL candidate against keccak256 before accepting it,
    continuing to later URLs after a hash mismatch. Retain hash diagnostics
    alongside callback failures and StackTooDeep exceptions in sequential and
    parallel compilation (#32).
  • Use cycle-aware mapping detection so recursive structs are not misclassified
    as containing mappings (#33).
  • Materialize string and hexadecimal literals when wrapping fixed bytes in
    user-defined value types (#34).
  • Allow state variable writes qualified by contract name, including immutables
    and internal function pointers (#35).
  • Support deleting immutable variables during construction
    (#36).
  • Match solc 0.8.36 version-range comparisons for large numeric pragma
    components (#37).
  • Keep ABI calldata sizes, strides, and offsets exact across the 4 GiB boundary
    (#38).
  • Keep static external-call return size totals exact across the 4 GiB boundary
    (#39).

Compatibility

  • ABI calldata layouts and static return size totals above 2^32 - 1 bytes use
    exact u256 arithmetic instead of reproducing solc 0.8.36's 32-bit wrapping.
    See the documented compatibility exceptions.

oksolc 0.2.1

Choose a tag to compare

@hbbio hbbio released this 19 Oct 02:36

Requires Zig 0.17.0.

Solidity compatibility target: 0.8.36.

Security

  • Resolve relative imports in the virtual source namespace, preserving URL-like
    names and existing path components instead of selecting a normalized alias
    (GHSA-wvq5-vxvm-x7xp).
  • Read project remappings through verified directory and regular-file handles,
    rejecting symlinks and non-regular files to prevent disclosure through
    remappings.txt, and retaining the pinned project root during watch updates
    (GHSA-qhgr-hfq3-p3rr).
  • Reject ambiguous Yul object and data paths with structured diagnostics in every
    declaration order and build mode, preventing dotted names from replacing nested
    runtime code (GHSA-9q3c-q3gp-jg4h). This includes ambiguous declaration orders
    accepted by solc 0.8.36; see the compatibility exceptions.
    Namespace checks share path components and reuse tree validation throughout
    analysis and optimization, keeping scratch storage proportional to the input.

Fixed

  • Preserve request and source insertion order in original and minimized
    differential-fuzz reproducers so replay uses the same request bytes.
  • Apply one compiler-service deadline to request transmission and response
    receipt, and terminate timed-out workers before closing buffered stdin.
  • Resolve native array push and pop overloads together with attached
    functions, matching solc's selection, ambiguity, and argument diagnostics.
  • Preserve diagnostic 4731 for zero-parameter attachments declared after array
    calls instead of returning an internal compiler failure.