0.4.17 (2024-01-19)

We’re happy to announce the release of Scala Native 0.4.17, which is the next maintance release. The new version introduces support for the Scala 3.4.0 and fixes some of found bugs.

Compatibility notes

Due to the limitations of versions 0.4.x the Scala 3 Standard Library NIR outputs are based on Scala 3.3.0. Any runtime usage of methods introduced to Scala 3 standard library after 3.3.0 would not work and would result in linking error. Compile time only methods like macros or mirrors would still work. This issue would be handled in Scala Native 0.5.x by using a different publishing strategy.

Scala standard library used by this release is based on the following versions:

Scala binary version Scala release
2.12 2.12.18
2.13 2.13.12
3 3.3.0
Commits since last release 37
Merged PRs 24
Contributors 6


Big thanks to everybody who contributed to this release or reported an issue!

$ git shortlog -sn --no-merges v0.4.16..v0.4.17
    27	Wojciech Mazur
     4	LeeTibbert
     2	João Costa
     2	Michel Davit
     1	Alex Dupre
     1	Paul Thordarson

Merged PRs

v0.4.17 (2024-01-19)

Full Changelog

Merged pull requests:

Java Standard Library

  • Simplifiy java.io.FileDescriptor.valid() test, invalidate file descriptor on close. #3578 (WojciechMazur)

  • Respect java.lang.Clonable trait and throw exception on clone when it’s missing #3579 (WojciechMazur)

  • Skip addr memcmp if getifaddrs returns a null ifa_addr pointer #3626 (RustedBones)

  • Mutate socket localAddr only on successful bind #3627 (RustedBones)

  • Fix compilation on FreeBSD. #3625 (alexdupre)

  • improvement: Make ArrayIndexOutBoundsExceptions compliant with JVM 8+ - #3638 (WojciechMazur)

  • Fix #3631: Regex now handles OR alternatives with more than two clauses #3642 (LeeTibbert)

  • javalib: Format IPv4-mapped IPv6 addresses as IPv6 #3654 (LeeTibbert)

Scala Native compiler plugin

  • When generating top-level extern methods check its annotations for link/define #3604 (WojciechMazur)

  • improvement: In NIR codegen always use nir.Type.Unit for if return type if one of branches is unit type #3644 (WojciechMazur)

  • Support Scala 3.4.0-RC1 #3628 (WojciechMazur)

  • fix: Fix handling of erased extern calls with variadic arguments #3691 (WojciechMazur)

  • fix: Allow to define multi-level exports referring finally to extern method #3665 (WojciechMazur)

POSIX bindings

JUnit runtime

Test runners

  • feature: Setup debug signal handlers in the TestMain only when requested #3660 (WojciechMazur)