Releases: sifive/wake
Releases · sifive/wake
v0.19.0
This release now includes a statically linked tarball!
It should work as-is when uncompressed on any amd64 linux system.
Language changes:
- Unused definitions and arguments generate warnings
- These warnings can be made fatal with --fatal-warnings
- There is now a v0_19_wake stable API package
- Production wake files should
from v0_19_wake import _
- These files should then continue to work as the API changes
- Production wake files should
Standard library changes:
- Comparison of NaNs no longer panic, following IEEE rules
- Large Vectors and Integers no longer panic, unlimited size
- Jobs now have an optional Label to control progress display
- New functions: append, prepend, sortPaths
Runtime changes:
- linux systems leverage unshare for isolation
- This eliminates the '.fuse' directory from build paths
- Resources fed to the FUSE runner can control unshare
- wake.db is now versioned and detects when incompatible
- When no package is inferred, use an empty package importing wake
Bugfixes:
- Symbol listing ('-g' or '-e') works on large projects
- Unary
+
and+.
are now properly typed - Missing
Tree
type was exported - Work-around for a non-empty
.fuse
directory added
v0.18.1
Language changes:
- It is illegal to use
require
wheredef
would suffice. - It is now legal to use
else
after arequire
with a block.
Bugfixes:
- Running
wake
on a project with excess exports now gives the correct help text. - Running
wake x.y
now gives the correct help text.
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
v0.17.2
Changes since v0.17.1:
- Backport .wakeignore support from 0.18
- Backport bugfix for when visible <= old inputs
- Forward compatibility with 0.18:
- Ignore everything on a line starting with the 'topic' keyword
- Encourage execution of expressions using -x 'EXPR'
v0.17.1
Bugfixes:
- Increase max JSON file size to 128 MiB
v0.15.3
Bugfixes:
- Increase max JSON file size to 128 MiB.
v0.17.0
Language changes:
- none
Runtime changes:
- Now 20x faster than v0.16 on key benchmarks
- Function hashes ignore unused in-scope values
- A spinner now indicates when wake is computing
- New --debug-target diagnoses 'Target subkey mismatch'es
- Developer --no-optimize and --stop-after-ssa options added
Optimizations:
- Uses new SSA form to implement optimization passes
- Interpreter optimized for non-future values
- Heap allocations are reused between GC cycles
Bugfixes:
- JSON parser allocation overrun
- Hash collision on structural sharing
- Commands including newline display properly
v0.15.2
Maintenance release of 0.15 with a few bugfixes:
- FUSE daemon now eventually quits
- FUSE runner now detects rename of files when a directory is renamed
- Don't scan .fuse or .fuse directories for wake files
- Preload runner now detects job output file races
- Wake database now reclaims space incrementally
Wake v0.16.0
Language changes:
- Keyword
memoize
has been removed Plan
can specify anticipated memory and CPUUsage
- Multiline strings supported; see the updated quickref
shellJob
runs an inline shell script as a Jobdef Pair x y = ...
deconstructor pattern bindings- Standard library now includes
tap*
andjfind
Runner
API is now extensible
Runtime changes:
- Garbage collector replaces reference counting (4x speed-up)
- Interactive global progress bar based on prior build stats
- Scheduler understands memory consumption and critical path
- Stack traces include function names and recursion compression
- Database reclaims space incrementally (not rewritten on exit)
Command-line changes:
- -pPERCENT replaces -jJOBS affecting both cores and memory
- --last reports all Jobs run in the last build
- --failed reports all Jobs failed in last build
- --no-tty groups Job command echo + stdout/stderr in logs
- --html creates an interactive reference manual
- --profile-heap reports peak wake memory consumption
- -d --profile=trace.html produces a wake CPU time flame graph
Platform changes:
- New FreeBSD port
- Backported to OSX 10.10
- Backported to Ubuntu 14.04
- RPM packages are now relocatable
- make install/clean now work traditionally
And several dozen bugfixes.
Wake v0.15.1
Language changes:
- None
Runtime changes:
- Hash mismatches are only detected when requested
- Preload runner hides .guard files from jobs
- RegExp escape of ` fixed
- Fixed use of target within a def