Aioli Versions Save

Framework for building fast genomics web tools with WebAssembly and WebWorkers

v3.1.0

1 year ago

What's new

  • Fix bug where mounting a File object returned duplicate file paths - #34
  • Add utility functions to Aioli to make it easier to use Emscripten's virtual file system's read() and write() function - #35

v3.0.0

1 year ago

What's new

The improvements in v3 are focused on speeding up initialization time:

Removed aioli.worker.js

In v2, Aioli had to download a separate .js file that contained the WebWorker logic. In v3, that WebWorker logic is embedded directly into the Aioli npm library, so no additional downloads are needed.

Removed config.json files

In v2, Aioli downloaded a config.json file for every tool it initialized. Since this file has only been used to specify WebAssembly features (simd, threads), which are rarely used, these files have been removed. For tools like sandbox.bio/playground that load a lot of tools at once, this means much faster load times!

Removed base module

In v2, Aioli used a mock base module as the main WebAssembly module where all file system operations run. For convenience, this was removed in v3 for the majority of cases, where instead one of the tools is treated as the base module. Only if Aioli can't find any tool with reinit: false will the base module be required, which is unlikely.

Support for custom stdin

If you're running a tool that needs access to "stdin", you can now set it explicitly using CLI.stdin = "Hello" before calling the tool of interest.

Revamped website

v2.4.1

1 year ago

What's new

  • Small fix to aioli.js path in package.json (thanks to @happykhan)

v2.4.0

2 years ago

What's new

  • Ability to lazy-load WebAssembly modules enhancement #32
  • Log errors to console when calling main() #31
  • New config reinit that when enabled, reinitializes the Wasm module after every exec (useful if you can't reset the global state between calls to the main() function)
  • New utility function cd to change working directory of all tools at once

v2.3.0

2 years ago

What's new

  • Ability to provide custom arguments for main() #29
  • Speed up initialization times by parallelizing downloads #27

v2.2.0

2 years ago

What's new

  • Automatically flushes stdout and stderr so that printf statements that don't include a \n are still returned when we call the exec() function. For example, in previous Aioli versions, a command like bcftools query -f "%ALT\n" would work but bcftools query -f "%ALT" would not return anything until you called another command that output a \n!

v2.1.0

2 years ago

What's new

  • Add the ability to specify a callback function that is called whenever we receive a message from the WebWorker (where message type = biowasm).

v2.0.0

2 years ago

What's new

  • Multiple bioinformatics tools can now share the same virtual filesystem, without copying data between tools! To do so, we use the PROXYFS filesystem.
  • When mounting local files from a user's computer, those have to be mounted to a read-only virtual filesystem so we don't need to load their entire contents into memory. This update also creates a symlink for each such file in a writeable directory. TL;DR we now support commands like samtools index, which expect the ability to write in the input folder
  • New architecture: launch a single WebWorker and run all tools in it (previously, we would launch 1 WebWorker per tool). We use -s MODULARIZE=1 when compiling to WebAssembly so each tool is isolated.
  • Now using Comlink for WebWorker communication instead of managing the message passing in Aioli, which greatly simplified the code.

See https://github.com/biowasm/biowasm/issues/48 for details.

Backwards compatibility

You can keep using Aioli v1, and the biowasm CDN v1 will remain up for now.

v1.5.0

2 years ago

New features:

  • Support SIMD feature detection. If a package requires SIMD (determined by querying config.json on cdn.biowasm.com) and the user does not have SIMD enabled in their browser, Aioli will load the non-SIMD version of the WebAssembly module automatically. In other words, apps using Aioli don't need to do feature detection themselves.

v1.4.1

3 years ago

Bug fixes:

  • Separate out class properties and object properties to make sure can run multiple Aioli objects on the same page