Skip to content

Oak 0.3!

Latest
Compare
Choose a tag to compare
@thesephist thesephist released this 08 Nov 22:30
· 9 commits to main since this release

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' module
  • std.(aloop, serial, parallel) for iterating asynchronously in sequence or parallel
  • http.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 and 3e22e5d)
  • Ensure libpath.resolve returns a clean path
  • The datetime standard library no longer uses an explicit millis millisecond property when parsing timestamps, instead using fractional seconds. The same change also ensures that timestamps returned by datetime.format only show up to 3 decimal-places of seconds.