Oak v0.3 is a fairly incremental release, as Oak is becoming more stable and dependable for my day-to-day work. There are a few fixes to the standard library and some new APIs, but no big breaking changes or shifts in direction.
The headline feature of Oak v0.3 is oak pack
, which lets you create binaries that can be distributed as standalone executables from an Oak program.
Oak := { versions: ['0.1', '0.2'] }
Oak.versions << '0.3'
Standard library additions
std.(is, constantly, exclude, separate, fromEntries )
in the standard'std'
modulestd.(aloop, serial, parallel)
for iterating asynchronously in sequence or parallelhttp.query(Encode, Decode)
for safely encoding and decoding percent-encoded data
Improvements
oak pack
for producing standalone executable binaries with Oak — covered in more depth in this blog___runtime_proc
built-in function when running natively, to inspect process details, e.g.{ exe: '/Users/thesephist/go/bin/oak', pid: 94801 }
Fixes
- Oak strings can now contain any binary data, including those that may be invalid UTF-8
- Fix interpreter crashes while parsing certain broken string literals
- Fix interpreter crashes when taking a modulus of a number by 0
- Fix bugs that may result in strings rendered incorrectly when compiling to JavaScript (
e87baf5
and3e22e5d
) - Ensure
libpath.resolve
returns a clean path - The
datetime
standard library no longer uses an explicitmillis
millisecond property when parsing timestamps, instead using fractional seconds. The same change also ensures that timestamps returned bydatetime.format
only show up to 3 decimal-places of seconds.