Skip to content

Releases: sifive/wake

v0.24.0

12 Nov 22:21
Compare
Choose a tag to compare

Language changes:

  • new v0_24_wake API
    • stdlib returns Result instead of BadPath
    • JSON normalization methods
    • 'eor' and 'enor' operators for Booleans
    • 'basename' and 'dirname' path manipulation functions
  • combined lrarrow, eqarrow, and ':' precedence into new 'assign' precedence
    • new :-> operator with same precedence as →

Runtime changes:

  • .wakeroot can specify a required wake version
  • target 'subkey mismatch' is now a warning with a helpful diagnostic
  • new wake.db index for faster post-build clean-up
  • wake remembers out-of-date files produced by prior runs
  • mkdir from wake/fuse now only erase files, not directories
  • SI units supported for -m512G
  • wake.db now records start/finish times for jobs in nanoseconds
  • wake -v -i file now shows the command used to invoke wake
  • wake uses umask(0) => can set any permissions with write/mkdir
  • wake children now have normalized umask(022) and ulimit(1024)
  • runner json includes wake coordinator's hostname
  • wake now uses many more file descriptors
    • on linux, wake uses epoll() for scalability
    • tens of thousands of concurrent jobs (previously 500)

Bugfixes:

  • wake-fused uses sufficient descriptors to serve mulitple JVMs/etc
  • wake no longer hangs with <1 core
  • wake --html uses relative path names
  • {get,edit}Environment of values with X=Y now work correctly
  • publish type errors report their correct locations
  • LSP column calculations now work with unicode
  • LSP associates comments with operators correctly

v0.23.0

06 Oct 21:42
Compare
Choose a tag to compare

Runtime:

  • Added -j and -m to control CPU and memory usage independently
  • Wake is now cgroups aware and schedules around the partition's resources
  • When no tty is present, info is no longer dumped to stdout

FUSE:

  • Finally isolated and fixed the difficult to reproduce 'Could not contact FUSE daemon' bug
  • Fixed support for MaxFUSE >= 4

LSP:

  • Package version synchronized to wake release version
  • Fixed errors for import from nonexistent _ and multiarg matches with a singleton pattern

v0.22.0

01 Oct 08:59
Compare
Choose a tag to compare

New features:

  • The wake language now has an implementation of the language server protocol (LSP)
  • The entire wake parser was rewritten using lemon and now processes past most errors
  • All error messages were rewritten for clarity and homogenized for easy reading

Language changes:

  • New v0_22_wake package available for import (v0_19_wake is now deprecated)
  • getJobResultOutput and getJobResultOutputs added

Bug fixes:

  • FUSE daemon no longer races between open and close
  • wake utility is now safe to concurrently invoke (they will run in sequence)

v0.21.0

07 Jul 01:12
Compare
Choose a tag to compare

Language changes:

  • Type annotations can be added to patterns. Much of the standard library has type annotations added.
  • 'makePlan' now uses the shell to execute the command and accepts a label argument. Use 'makeExecPlan' for the old behavior.
  • 'panic' has been renamed as 'unreachable'

New features:

  • Wakebox, a new job sandboxing/container tool that builds on fuse-wake. It can replace the Job's filesystem, mount squashfs filesystems and bind-mount parts of the host filesystem. It supports an interactive mode so a user can enter the modified execution environment outside of wake. Fuse-wake is still used by default.

CI / Testing:

  • Centos 8 rpm provided.
  • Testing framework added to unit test wake itself

Bug fixes:

  • .fuse_hidden files are no longer reported as job outputs, as they were fuse filesystem implementation detail.
  • The BSP previously only transformed workspace:/// URIs in tags. Now it does it for messages too.
  • Fixes for handling of symbolic links

Misc:

  • More helpful error message when wake cannot walk the workspace.
  • 'claimFileAsPathIn' now uses 'cp', for cases where it's invoked multiple times or used to claim a file from another file system

v0.20.2

05 May 00:11
Compare
Choose a tag to compare

Runtime change:

  • wake-fuse excludes any generated files named .fuse_hidden as outputs

v0.20.1

19 Feb 07:18
Compare
Choose a tag to compare

Runtime change:

  • wake no longer aborts when it cannot enumerate files in a directory

v0.20.0

20 Jan 01:56
Compare
Choose a tag to compare

Language changes:

  • Regular expressions now support interpolation using ${}
  • setJobTag adds meta-data available to post-build introspection (wake --last / -o / etc)
  • Customizable output stream support (see below)
  • Build server protocol support (see below)

Runtime changes:

  • wake will auto-initialize a database in a directory with a .wakeroot file
  • wake no longer schedules more jobs than there is RAM available
  • wake sub-targets are now any expression (not just a symbol)
  • -q/-v/-d are now short-cuts for --stdout
  • default build verbosity was decreased

Custom stream support:

  • makeLogLevel creates a new named output stream of a given colour
  • streams are selected for output on the wake command-line
    • wake --stdout=stream1,stream2,... controls which streams go to stdout
    • wake --stderr=stream1,steam2,... controls which streams go to stderr
    • wake --fd:3= and --fd:4=- can also be used if these descriptors are connected
  • the default streams in wake are:
      name     symbol      colour
      ------------------------------
      -        logNever    -
      debug    logDebug    dark blue
      info     logInfo     -
      echo     logEcho     -
      warning  logWarning  yellow
      error    logError    red

BSP support:

  • wake now supports the build server protocol (used mostly by scala)
  • the BSP is launched by running bsp-wake with a command-line passed to wake
  • BSP requests are serviced using tags called 'bsp.'
  • the request bsp.buildTarget is special and results in the Job being listed by workspace/buildTargets

Bugfixes:

  • race between exit of the FUSE daemon and a new Job has been fixed
  • installIn API now includes a fromDir argument (old version is available in v0_19_wake)
  • git submodules are no longer considered source files
  • interpolated strings now use canonical unicode for the earlier string segments
  • wake now correctly measures memory consumed on linux
  • removed a number of places where errors would report a C++ line instead of wake
  • wake is no longer confused by branches called xyz.wake
  • claimFileAsPath now creates the directory it puts files in

v0.19.2

07 Jan 20:16
Compare
Choose a tag to compare

Changes:

  • added diagnostics around bind-mounting the wake-fuse directory
  • removed support for centos 6.6 (EOL)

v0.18.2

21 Aug 00:49
Compare
Choose a tag to compare

Changes:

  • Improve error handling when a non-visible file is listed as an input

v0.19.1

20 Aug 19:58
Compare
Choose a tag to compare

Changes:

  • improve error handling when a non-visible file is listed as an input