Fluence Big Announcement 02.11.2022

Fluence Big Announcement 02.11.2022

Fluence Labs


If you thought we took the summer off, think again. The core team's been super busy and has major updates across the stack. Get ready to rev your dependencies.


AquaVM updates

This release includes several major updates of AquaVM, which has achieved a major milestone and is now convergent. That is, AquaVM can merge traces from every possible AIR script. Convergence was achieved by introducing a new instruction canon and a new value type canonicalized stream. The former allows fixing a state of AquaVM's CRDT-like streams at the particular moment of execution on the specific peer producing a canonicalized stream that can be used like an ordinary AIR scalar value. For more info, see the explanation on GitHub.

Please note that the introduction of convergence prohibits using streams in certain positions of AIR instructions, such as a match or call arguments.

The second major improvement concerns the fold operator, whose signature has been extended to support an additional instruction executed on the last step of a recursive next call. This allows carefully adjusted behavior of fold with all combinators. And to make the old scheme with fold par work, the new instruction never has been introduced.

Finally, a lot of bugs have been fixed. See more updates in the change log.


Rust peer updates

Since the last announcements, we have had a lot of updates for Rust Peer.

The Rust peer is now available in three docker flavors: minimal, ipfs, and rich. See the repo for all the images.

  • The minimal version provides the Rust Peer executable with builtins, and the curl binary
  • The ipfs edition comes with all the features of minimal plus an IPFS daemon
  • The rich version provides all the features of the ipfs edition plus Ceramic (Glaze) binaries, the Bitcoin CLI and the Geth CLI.

In addition

  • Metrics were added for Wasm services and libp2p in Prometheus
  • Logs for Loki were set up
  • libp2p was migrated from forked to upstream
  • json builtin was added


Fluence CLI updates

For the past months, there has been a lot of work put into Fluence CLI - a tool that makes it easier to work with Fluence Network. We tested the tool on our internal hackathon and found a lot of improvements that can be done, but generally decided that it's almost ready to be used by the developers.

It is designed to manage Fluence decentralized application lifecycle and assist developers. Currently, it can:

  • Install all the required dependencies for working with Fluence Network
  • Install aqua libraries and help Aqua VSCode plugin to find them
  • Store and manage keypairs
  • Store and provide ids of the deployed services to aqua and js/ts
  • Create services and template modules
  • Define deployment config and deploy
  • Run and compile Aqua and Marine

The tool is actively developed, and we will soon roll out a lot of updates related to what we found out during the Hackathon (e.g., easier quick start workflow, etc.)

Currently, all the existing docs for Fluence CLI are available in the repo or when running --help with any of the Fluence CLI commands.

Fluence CLI configs are written in YAML format, and info about the configs is currently available only in comments inside of the configs themselves and in JSONSchemas that each config has (you can use redhat.vscode-yaml extension for autocomplete).


Aqua updates

Announcing Aqua 0.7.7.

A language server was developed, and we introduced a VSCode extension to support Fluence’s Aqua language. Compile-on-save, compilation error hints, and go-to-definition features were added.

New features in Aqua CLI include:

  • Running services directly from CLI
  • Running builtin services without any input
  • Testing your code with plugins for local js services (experimental!)

Additional advances have been realized in the Aqua compiler:

  • AIR generation was updated to support the latest AquaVM version (0.31.0)
  • Data structures are now not allowed to have fields of stream type

Also, there were a lot of bug fixes both in CLI and the compiler. See the list of updates.


Fluence JS updates

Fluence JS v0.27.0 was released and the following updates

  • Implemented a new builtin json to work with JSON-like structures
  • Added v4 version of compiler support making it possible to use any name for functions and data structures in Aqua without colliding with variable names in FluenceJS
  • Renamed toB58String to getPeerId for fluence-keypair
  • Updated libp2p to v0.36.2


Registry updates

We refactored Registry’s Resources API by removing ambiguous names to make it a bit easier for developer use and to reduce API size. Also, we add the ability to remove service records. For further details, check out our last community call, README, and API reference, and try Registry and Fluence CLI with a new step-by-step example.


Fluence network updates

We have added end-to-end tests for every build of AquaVM, Marine, Fluence JS, Aqua, Rust Peer, and builtin services, so it will be easier to develop and test every commit. For example, an AquaVM update triggers a rebuild of the whole stack and executes tests in aqua-playground and Registry.

Finally, we have migrated our documentation from Gitbook to Docusaurus.



Report Page