All notable changes to this project will be documented in this file.
The format is based on Keep a Change Log, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
0.11.3 - 2022-01-28
0.11.2 - 2022-01-24
- Increased the number of tensors that can be passed to/from a model (#393)
- Increased the number of tensors that can be given to a SERIAL output to 32 (#396)
- The unused Python package has been removed to reduce maintainance burden
0.11.0 - 2022-01-13
- You can now specify a model's format by setting the
format
field underargs
to one ofonnx
,tensorflow
,tensorflow-js
, ortensorflow-lite
(#367)- Note that this will just ask the runtime to load a particular model, there is no guarantee the model format it will be supported
- Directories which are used as a model will now be embedded in the Rune as a zip archive
- The
rune build
command will now emit a warning when a proc block isn't given a version number
- The
hotg-rune-wasmer-runtime
andhotg-rune-wasm3-runtime
crates have been merged intohotg-rune-runtime
- Warnings are no longer printed multiple times during
rune build
(#367) - Fixed a bug where proc-blocks pulled in via git weren't using the tag mentioned in the version specifier (#391)
0.10.0 - 2021-10-25
- You will now be able to see when each step in a Rune's pipeline is started if
you set the
$RUST_LOG
environment variable todebug
- we recommend setting
$RUST_LOG
to something likedebug,regalloc=warn,hotg_runicos_base_runtime=info,hotg_rune_cli=info
to keep the output manageable
- we recommend setting
- Gave the
hotg_rune_core::Tensor
type a way of viewing contiguous sub-sections of the tensor - The
hotg_rune_core::Tensor
type now lets you get items by index directly instead of requiring users to go throughTensorView
0.9.3 - 2021-10-17
- The
rune run
command will now emit a warning about #131 (`tensorflow/tensorflow#52300 upstream) when doing inference on MacOS
- Bumped the version of Rust used to compile Runes from
nightly-2021-08-14
tonightly-2021-10-15
- The
#[derive(ProcBlock)]
custom derive can now handle types with generic parameters (#358)
0.9.2 - 2021-10-11
0.9.1 - 2021-10-11
0.9.0 - 2021-10-10
- The Rune repository now contains a JSON schema that can be used to provide
auto-complete and basic validation for a
Runefile.yml
- All tensors of strings will now use
Tensor<Cow<'static, str>>
as their tensor types (#345) - Generated Runes will now pull internal crates (
hotg-rune-core
, etc.) from crates.io using a version that matches therune
compiler (#353) instead of using thenightly
tag
- All processing blocks have been moved to the
hotg-ai/proc-block
repository (#353)
0.8.0 - 2021-10-05
- The
#[transform]
attribute used with the#[derive(ProcBlock)]
custom derive now accepts multiple inputs and outputs so you can write#[transform(inputs = ([f32; _], [u8; 1]), outputs = str)]
- The
rune
CLI now uses thehuman_panic
crate to generate crash reports that can be included when reporting a bug (#322) - Data written to the
SERIAL
output will be printed toSTDOUT
as lines of JSON (#316
- (Breaking Change) The
#[transform]
attribute now expectsinputs =
andoutputs =
instead ofinput =
andoutput =
(#311) - (Breaking Change) Merged the
hotg-rune-syntax
andhotg-rune-codegen
crates into a newhotg-rune-compiler
crate - We now use
librunecoral
instead oftflite
for TensorFlow Lite inference (#301) - The
rune
CLI no longer logs by default. You will need to set theRUST_LOG
environment variable to an appropriate value if you want to see log output (see theenv_logger
crate's docs for more) (#316
- The
rune inspect
command panicked if it couldn't find metadata that only exists when installing from source or GitHub Releases (#307) - Resolved an issue where trying to read the metadata from a Rune (done as part
of
rune run
andrune inspect
) would enter an infinite loop when passed a file that doesn't contain WebAssembly (#318) - The
rune build
command will now error with something like Unable to find "asdf" to use as an input for "some_model" when an input isn't declared (#319)
0.7.0 - 2021-09-07
- Users of the web runtime are now able to provide custom model handlers (e.g. if you want to use your own ML framework)
- Added "Resources" to the Runefile
(#273,
#285)
- Resources can be loaded from disk using the
path: ./some/file.ext
syntax - Resources can also be specified in the Runefile itself using the
inline: "value"
syntax - A model can be bound to a resource using
model: $MY_MODEL
- Procedure block arguments can be set using
some_arg: $VALUE
- A resource can be overridden at runtime using a different version
- The
rune
CLI can override resources with--resource-file NAME=./file.ext
or--resource-string NAME=value
- Resources can be loaded from disk using the
- We now fall back to using WASM3 to evaluate WebAssembly code on platforms not supported by Wasmer, primarily iOS (#266, #267, #271, #280, #281)
- Gave the web runtime a builder type to simplify the process of initializing and loading Runes (#279)
- Resolved an issue where
cargo install hotg-rune-cli
would fail due to an accidental backwards incompatible change in thecargo_toml
crate (#284)
0.6.0 - 2021-08-23
- Moved the Web runtime into the
hotg-ai/rune
repo under thebindings/web
directory and turned it into a NPM package
- The
--capability
command-line argument (used asrune run ./whatever.rune --capability image:person.png
) has been removed after emitting a warning for several versions (#256) - The old
Runefile
format (the text-based domain-specific language, not the YAML version) has now been removed
0.5.3 - 2021-08-11
- Fixed the algorithm used to locate internal dependencies when installed via crates.io
0.5.2 - 2021-08-11
- Users will no longer need to manually install nightly because a
rust-toolchain.toml
will be copied into the generated project - If the
LIBRUNECORAL
environment variable is set or the--librunecoral
flag is provided,rune run
will use the specified shared library for hardware acceleration on TPU-enabled devices
- The tensor dimensions specified in a Runefile now need to exactly match the
dimensions expected by the model. Previously users would be allowed to pass
something like
u8[192, 192]
to a model expectingu8[1, 192, 192, 1]
.
0.4.0 - 2021-07-27
- Multiple instances of the same capability can now be provided to
rune run
from the command line (i.e.rune run some.rune --image first.png --image second.jpeg
) (#233) - Capabilities in a
Runefile.yml
can now specify which source they want to pull data from using asource
argument (#223) - Models can have multiple inputs and outputs (#218)
- Introduced a
rune-proc-blocks
crate containing everything you need to write a proc block (#190) - We can now visualise pipelines containing multiple inputs and outputs (#186)
- Added a
rune inspect
sub-command which lets you extract information about a Rune (#183)- Information includes which
rune
binary was used to compile it and the pipeline it contains - The
.rune_graph
custom section contains a JSON blob with the pipeline graph - The
.rune_version
custom section contains a JSON representation of the BuildInfo
from therune-cli
crate
- Information includes which
- The
IMAGE
capability built intorune run
now supports resizing (#170)
- (breaking change) All published crates are now prefixed with
hotg-
to avoid a naming collision with the Rune programming language on crates.io (#236) - (breaking change) The YAML format now requires a
version: 1
property (#194) - Proc blocks are now defined using a custom derive (
#[derive(ProcBlock)]
) which allows therune
command to inspect a crate and find information about the proc blocks it contains - Renamed the
runic_types
crate torune-core
for consistency with our otherrune-XXX
crates
- Added a
Dockerfile
to the repository which will build therune
command-line tool from scratch and include all necessary dependencies (#203)
0.3.0 - TinyML Summit Release (2021-05-25)
- Proc blocks, capabilities, and outputs can now all have multiple inputs and outputs
- Introduced a more feature-rich YAML format (typically called
Runefile.yml
) for defining a Rune (#140) - Created
rune_py
, a Python package which wraps a lot of the proc blocks in the Rune project so they can be used during training - Created a docker image which wraps the
rune
command-line tool for use on Windows and MacOS - Metadata about a Rune's pipeline is now included in the WebAssembly binary as a custom section
- New proc blocks for
- Allow users to use expressions as part of capability/proc block arguments (e.g. to do maths or use a constant defined elsewhere) (#149)
- Moved the
model-info
sub-command out of our internalxtask
tool and into therune
command-line tool itself (e.g. asrune model-info ./sine.tflite
) so people can use it to discover information about TensorFlow Lite models (#141)
- Bug determining the Runefile's "current directory" (#143)
- Type names in generated Rust code can't contain hyphens (#137)