v0.18.0
The package system:
- Every publish/subscribe topic must now be declared
- Every wake file is now a member of a package
- Packages can export symbols for import into any scope
- Read the docs: https://github.com/sifive/wake/blob/v0.18.0/share/doc/wake/tour/packages.adoc
Language changes:
- Syntax
require PATTERN = EXPR [else RETURN-EXPR]
to support partial matches - Anonymous tuples:
def (a; b; c) = fnReturnsTriple 42
- Type ascription in expressions is now possible using
x : Integer
- Named tuples may no longer be operators
Runtime changes:
- wake now passes its command-line arguments to a function
- executable script support:
#! /usr/bin/env wake -:main_function
- auto-initialization of wake.db when a wit-lock.json is found
- Stored expression support was removed
- Support for incremental jobs (eg: invoking make)
- parseJSONBody now fails with Error
- Prevent parsing some .wake files with .wakeignore
Bugfixes:
- Parsing of numbers including _ works again (eg: 0xabcd_1234)
- Changing a Plan's Fn{Inputs,Outputs,Resources} now triggers a rebuild
- Allow up to 128MiB JSON Job descriptions
- Renaming files and directories under FUSE now works reliably
- Fixed ` escapes in regular expressions
- Fixed a few corner cases where wake could segfault
- Prevented unnecessary inlining
- Removed all internal symbol definitions from global/export lists
- Types are now scoped and name conflicts are detected
- Type check failures in pattern matches are reported correctly