Skip to content

Scala Native 0.3.8

Choose a tag to compare
@densh densh released this 16 Jul 15:04

This release focuses on compatibility and performance improvements in the library code, keeping backward binary compatibility with previous releases in 0.3.x series.

Highlights ✨

Default garbage collector 🗑️♻️

(by @ekrich)

Starting from 0.3.8, Immix is the default garbage collector. Over the past year of testing, we confirmed that it offers major performance improvements over the Boehm GC. To revert back to the previous collector you can set the following setting in your build file:

nativeGC := "boehm"

Improved performance of File I/O 💾

(by @eatkins and @henrymai)

0.3.8 provides a series of library improvements that aim to increase the performance of the NIO library layer for File I/O operation. Changes include major speedups across reading, writing and walking file trees.

Test runner for 3-rd party build tools 🏗️

(by @Duhemm)

In 0.3.7 we introduced a Build tool API interface that simplifies integration of Scala Native toolchain into 3-rd party build tools. In 0.3.8 we expand this to also include preliminary support for running tests through newly factored out unit test runner.

Library and performance improvements 📚👟

#975 Preliminary support for (by @xavier-fernandez)
#1129 Optimize UnixPath and add WalkFileTree benchmark (by @henrymai)
#1187 Add java.util.function.{Supplier, UnaryOperator} (by @jiminhsieh)
#1200 Fix to have same semantics as JVM (by @dlpatri)
#1216 Performance and compatibility improvements to File I/O (by @eatkins)
#1218 Add additional system properties (by @eatkins)
#1219 Add shell fallback for processes (by @eatkins)
#1220 Add optimized split (by @eatkins)
#1221 Implement Runtime.exec (by @eatkins)
#1222 Add preliminary support for File.deleteOnExit and runtime support for shutdown hooks (by @eatkins)
#1235 Add bindings for float.h (by @kornilova-l)
#1236 Fix typo in wrap.c that causes two math.h bindings to fail (by @kornilova-l)
#1237 Add java.util.function.BiFunction (by @vaartis)
#1238 Make Immix the default garbage collector (by @ekrich)
#1243 Add helper methods to time.h bindings (by @LeeTibbert)
#1243 Improve bindings for sys/types.h (by @LeeTibbert)
#1244 Improve doc links to posix bindings (by @LeeTibbert)
#1246 Implementation of Enum.equals/Enum.hashCode (by @cquiroz)
#1250 #1251 Improve unit tests for time.h bindings (by @LeeTibbert)
#1261 Fix bug related to attribute handling in File I/O (by @LeeTibbert)
#1263 Correct the exception type thrown by String.getBytes (by @coreyoconnor)
#1267 Add (by @xuwei-k and @coreyoconnor)
#1269 Decouple s.c.i.Range from formatters (by @densh)

Tooling improvements and bugfixes 🔧🐛

#1217 Fix regex semantics (by @eatkins)
#1224 Match Scala JVM hash codes for case classes (by @shadaj)
#1234 Split test-runner out of sbt plugin (by @Duhemm)
#1265 Reorder linker options to pass -l options last (by @jonas)
#1271 Scala Native 0.3.7 ignores nativeCompileOptions (by @LeeTibbert)
#1273 Explicitly set C standard while compiling C code (by @eatkins)

Contributors 👥

According to git shortlog -sn --no-merges v0.3.7..v0.3.8, 17 people contributed to this release: LeeTibbert, Ethan Atkins, Denys Shabalin, Corey O'Connor, Jimin Hsieh, Liudmila Kornilova, Martin Duhem, henrymai, Kenji Yoshida, vaartis, Carlos Quiroz, David Patrick, Eric K Richardson, Jonas Fonseca, Paweł Krupa, Shadaj Laddad, Xavier Fernández Salas.

Thank you all! ✨ 🍰 ✨