0.5.10 (2026-01-24)¶
We’re happy to announce the release of Scala Native 0.5.10.
Supported Scala versions¶
Scala Binary Version |
Supported Scala Versions |
|---|---|
2.12 |
2.12.17 … 2.12.21 |
2.13 |
2.13.9 … 2.13.18 |
3 |
3.1.2 … 3.1.3 |
Upon release of new Scala version (stable, or Scala 3 RC) version dependent artifacts would be published without a new release.
| Commits since last release | 179 |
| Merged PRs | 169 |
| Contributors | 9 |
Contributors¶
Big thanks to everybody who contributed to this release or reported an issue!
$ git shortlog -sn --no-merges v0.5.9..v0.5.10
95 Albert Meltzer
28 LeeTibbert
27 Wojciech Mazur
16 Scala Steward
4 Corey O'Connor
4 dependabot[bot]
1 Ali Rashid
1 Eric K Richardson
1 Lorenzo Gabriele
Merged PRs¶
v0.5.10 (2026-01-24)¶
Merged pull requests:
Scala Native Compiler Plugin¶
Support Scala 3.8 new lazy vals and stdlib -Yexplicit-nulls #4531 (WojciechMazur)
When testing isExtern check original owner instead of current one #4730 (WojciechMazur)
Fix #4747:
genIfincorrectly forcesUnittype when only one branch isUnit#4748 (arashi01)
Scala Native runtime¶
Matcher: do not copy strings, append as sequence #4653 (kitbellew)
Matcher: pass region as subsequence to RE2 #4199 (kitbellew)
unsafe: remove extra memory copy in toCXxxString #4661 (kitbellew)
Ptr: DRY, reuse shared methods, avoid boxing #4688 (kitbellew)
StackTrace: avoid NPE in early initialization #4698 (kitbellew)
[GC] Refactor GC logging #4736 (WojciechMazur)
[GC:immix/commix] Detect and crash on GC deadlock #4739 (WojciechMazur)
Fix materialization of lazilly collected stack traces #4733 (WojciechMazur)
Inline loadModule but not all of it #4735 (coreyoconnor)
Scala Native Toolchain¶
Emphasize toolchain multithread ‘detect’ #4718 (LeeTibbert)
Avoid repeat O(n) descent into insts list #4753 (coreyoconnor)
Use vector for initial instruction toSeq #4754 (coreyoconnor)
Java Standard Library¶
Fix porting glitches, including self deadlock, in javalib ConcurrentHashMap #4522 (LeeTibbert)
Make javalib linux_sched.c robust to _GNU_SOURCE already being defined #4523 (LeeTibbert)
Fix Scala 2.* NPE in javalib ConcurrentHashMap #4527 (LeeTibbert)
ProcessBuilder: centralize, simplify getting envp #4546 (kitbellew)
ProcessBuilder: user.dir is a property, not env #4557 (kitbellew)
ProcessBuilder: implement JDK9
Redirect.DISCARD#4570 (kitbellew)UnixProcessGen1: DRY use UnixProcessGen2.forkChild #4541 (kitbellew)
UnixProcessGen1: monitor in GenericProcessWatcher #4576 (kitbellew)
UnixProcessGen1: catch TimeoutException in waitFor #4617 (kitbellew)
UnixProcessGen2: re-use binaryPaths in spawnChild #4545 (kitbellew)
UnixProcessGen2: add createPipe, dup2, dup2Spawn #4542 (kitbellew)
UnixProcessGen2: don’t copy stderr on redirect #4543 (kitbellew)
UnixProcessGen2: don’t create unused pipes, close all unused descriptors #4550 (kitbellew)
UnixProcessGen2: make sure to close pipes on error #4575 (kitbellew)
UnixProcessGen2: retry fork()/spawn() on EAGAIN #4623 (kitbellew)
UnixProcessGen2: use atomic to close pidfd #4644 (kitbellew)
UnixProcessGen2: simplify createPipe with alloc #4549 (kitbellew)
UnixProcessGen2: posix_spawn_file_actions_addopen #4554 (kitbellew)
UnixProcessGenX: remove unused ctor, inline other #4547 (kitbellew)
UnixProcess: don’t keep pipe fd pairs as fields #4548 (kitbellew)
UnixProcessXxx: refactoring (waitpid, imports) #4584 (kitbellew)
WindowsProcess: provide _pid directly in ctor #4582 (kitbellew)
WindowsProcessHandle: use ProcessExitChecker #4681 (kitbellew)
ProcessExitChecker: split Factory, change Single #4656 (kitbellew)
GenericProcess: drain/close each stream separately #4540 (kitbellew)
GenericProcess: no synchronized, ignore reaped #4588 (kitbellew)
GenericProcessWatcher: add
reapSomeProcesses#4583 (kitbellew)GenericProcessWatcher: avoid missing a new process #4646 (kitbellew)
GenericProcessWatcher: catch exceptions reaping #4647 (kitbellew)
GenericProcessWatcher: move most to nested object #4643 (kitbellew)
PipeIO: NullInput must return -1 in read() #4564 (kitbellew)
PipeIO: to read, check if src matches file stream #4572 (kitbellew)
PipeIO: use InputStream, complexity to FileChannel #4574 (kitbellew)
BsdOsSpecific: fix bug in kevent struct ident/data #4601 (kitbellew)
FileDescriptor: use AnyVal, close only if valid #4645 (kitbellew)
FileChannelImpl: make
available()non-negative #4589 (kitbellew)Channel close improvements #4648 (LeeTibbert)
ExitChecker: add lnx/bsd single-pid exit watchers #4600 (kitbellew)
ExitChecker: add lnx/bsd multi-pid exit watchers #4631 (kitbellew)
WeakReference: fix JDK compliance w/ clear/enqueue #4672 (kitbellew)
WeakReferenceRegistry: fix bugs, add consistency #4674 (kitbellew)
WeakReferenceRegistry: move thread inside object #4690 (kitbellew)
Cleaner: implement using WeakReferenceRegistry #4664 (kitbellew)
Cleaner: define own subclass of WeakReference #4684 (kitbellew)
Cleaner: use own thread, not shared ForkJoinPool #4685 (kitbellew)
InputStream: refactor readNBytes, readSmallN #4687 (kitbellew)
InputStream: consolidate bounds check in
read#4702 (kitbellew)InputStream: ArrayList, not ConcurrentLinkedQueue #4697 (kitbellew)
ReferenceQueue:
timeout == 0should be infinite #4691 (kitbellew)ReferenceQueue: add dequeue, use in poll, remove #4693 (kitbellew)
ReferenceQueue: use java ArrayDeque vs scala Queue #4701 (kitbellew)
Check posixlib UnixProcessFactory unistd.chdir(); update comments #4703 (LeeTibbert)
[javalib] Ensure Process.waitFor links when multithreading is disabled #4732 (WojciechMazur)
[javalib] Fix semantics of
java.util.concurrent.atomictypes #4734 (WojciechMazur)[javalib] Fix #4722: Eliminate PosixThread maxSeconds & re-factor time handling #4738 (LeeTibbert)
javalib UnixProcessFactory now favors posix_spawn when available #4712 (LeeTibbert)
Fix #4742: javalib *Stream#filter spliterator characteristics now match JVM #4744 (LeeTibbert)
Fix #4743: javalib *Stream#distinct spliterator characteristics now match JVM. #4746 (LeeTibbert)
Fix #4740: Port Scala.js ‘Fix modPow2Inverse used by BigInteger.modPow’ #4749 (LeeTibbert)
POSIX bindings¶
Update posixlib spawn.scala to Open Group Issue 8, 2024 #4567 (LeeTibbert)
posix/{epoll,eventfd}: define epoll_xxx, eventfd #4624 (kitbellew)
posix/kevent: move kqueue/kevent definitions #4625 (kitbellew)
posix/{ppoll,pidfd}: move ppoll and pidfd to posix #4627 (kitbellew)
posix/poll: change hardcoded constants to imported #4626 (kitbellew)
posix/epoll: remove epoll_event, it’s invalid #4637 (kitbellew)
posix/kevent: remove scala kevent type, use C-lang #4638 (kitbellew)
mmap: expose the MAP_FAILED constant and use it #4665 (kitbellew)
posixlib: implement MAP_ANON and MAP_ANONYMOUS constants #4671 (LeeTibbert)
Fix #4143 termios Posix library does not work on Linux #4155 (ekrich)
Add @blocking annotation to unistd chdir & fchdir #4696 (LeeTibbert)
Three corrections to posixlib spawn; blocking and chdir argument #4711 (LeeTibbert)