Releases: sifive/wake
Releases · sifive/wake
v0.24.0
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
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
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
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
v0.20.1
v0.20.0
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