Repository navigation
Releases: okcontract/oksolc
Releases · okcontract/oksolc
Release list
oksolc 0.2.2
Requires Zig 0.17.0.
Solidity compatibility target: 0.8.36.
Changed
- Lower-level Zig ABI size and offset queries and
ReturnInfo.estimated_return_sizenow useu256instead ofu32. - Direct calls to
compileSolidityStandardJsonAllocand
compileYulStandardJsonAllocnow take asource_errorsslice after
loaded_sources; pass&.{}when source resolution produced no diagnostics.
Fixed
- Preserve ordinary Solidity typing when
settings.experimentalis 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
keccak256before accepting it,
continuing to later URLs after a hash mismatch. Retain hash diagnostics
alongside callback failures andStackTooDeepexceptions 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 - 1bytes use
exactu256arithmetic instead of reproducing solc 0.8.36's 32-bit wrapping.
See the documented compatibility exceptions.
oksolc 0.2.1
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
pushandpopoverloads 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.