v1.0.0
IMPORTANT NOTICE: From now on, the framework will stick to semantic versioning. Because we are still in development, however, we will consider any API-breaking change to be any change relating to the usage of the program, not to any Rust-API the library provides. However, that will likely change once the framework is more mature.
This release basically sees the release of an entirely rebuilt framework. Expect to find bugs and change of how you worked with it (especially as administrator).
Added
- Extra example code that implements more advanced filesystem features, which may be used to inspect the shared
/data
partition at runtime. brane data ...
subcommand to manage local datasets.brane-ast
crate, which provides compiler methods for transforming the BraneScript/Bakery AST to the workflow representation (see below).brane-exe
crate, which replacesbrane-bvm
to execute the workflow representation (see below).brane-tsk
crate, which collects much of the logic inbrane-plr
andbrane-job
into a new crate that builds uponbrane-exe
to execute tasks on either offline or distributed backends (see below).brane-reg
service, that is a domain-local registry of datasets (and, in the future, packages).- TLS to data transfers. This means that setting up a domain is now marginally more complex, since certificates have to be generated.
unpack
as a new section incontainer.yml
files, which replaces the semantics of the oldinstall
section (see below).contrib/scripts/create_certs.sh
to generate scripts in the format that Brane wants.start-central-instance.sh
andstart-worker-instance.sh
as alternative startup scripts that don't do compilation but just run already compiled images.- Lots of BraneScript example/test files, which may be useful for understanding the language. Check
tests/branescript
.
Changed
- The way that scripts are compiled. Instead of bytecode, the system now compiles to so-called Workflows, which is like bytecode but ordered in such a way that control flow information is preserved.
- The way data is handled. Instead of a shared filesystem, there are now specialized
Data
structs that live on a certain domain and are automatically transferred. There are alsoIntermediateResults
that represent results within a workflow. make.sh
intomake.py
, which is completely re-designed to be more managable and complex (especially w.r.t. deciding if recompilation is necessary or not).brane push
,brane pull
andbrane remove
to accept multiple packages to push, pull or remove respectively.specifications::version::Version
to be able to parse a given<name>:<version>
pair (which will likely be the default way of entering versions from now on).docker-compose-*.yml
andmake.py
to make an explicit difference between a centralized, general control node and a domain-local worker node.brane-api
now needs to have knowledge about the infrastructure too (i.e., be provided with theinfra.yml
file).brane-job
to now explicitly live on a domain instead of the central node.- the semantics of the
install
section incontainer.yml
files: now, the commands are processed before the workspace is copied over instead of after in order to be much nicer to Docker caching. To emulate the old behaviour, use the newunpack
section (see above).
Fixed
brane-api
not accepting 'latest' when pulling packages- The
brane
CLI failing to run a pulled package. - Keywords in BraneScript being parsed as such when part of an identifier (i.e., 'new_a' would error because of 'new').
- Lockfiles not always being removed during builds (especially things like interruptions).
- Other BraneScript issues.