Skip to content

Releases: sifive/wake

v0.19.0

07 Aug 01:19
Compare
Choose a tag to compare

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

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

13 Apr 01:58
Compare
Choose a tag to compare

Language changes:

  • It is illegal to use require where def would suffice.
  • It is now legal to use else after a require 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

01 Apr 01:37
Compare
Choose a tag to compare

The package system:

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

11 Mar 19:06
Compare
Choose a tag to compare

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

13 Nov 03:11
Compare
Choose a tag to compare

Bugfixes:

  • Increase max JSON file size to 128 MiB

v0.15.3

12 Nov 06:47
Compare
Choose a tag to compare

Bugfixes:

  • Increase max JSON file size to 128 MiB.

v0.17.0

30 Sep 21:14
Compare
Choose a tag to compare

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

13 Sep 19:29
Compare
Choose a tag to compare

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

05 Sep 07:12
Compare
Choose a tag to compare

Language changes:

  • Keyword memoize has been removed
  • Plan can specify anticipated memory and CPU Usage
  • Multiline strings supported; see the updated quickref
  • shellJob runs an inline shell script as a Job
  • def Pair x y = ... deconstructor pattern bindings
  • Standard library now includes tap* and jfind
  • 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

14 Jun 00:04
Compare
Choose a tag to compare

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