Skip to main content

Changelog

Aqua compiler's versioning scheme is the following: 0.BREAKING.ENHANCING.RELEASE

  • 0 shows that Aqua does not meet its vision yet, so syntax and semantics can change quickly
  • BREAKING part is incremented for each breaking change when old .aqua files need to be updated to compile with the new version
  • ENHANCING part is incremented for every syntax addition
  • RELEASE is the release number, shows internal compiler changes, bugfixes that keep the language untouched

0.11.0 – May 29, 2023

  • BREAKING CHANGE: add name scopes to if/else/try blocks (LNG-55) (#715)
  • devcontainer: Add devcontainer spec (LNG-148) (#712)
  • BREAKING CHANGE: parser: Strict indentation (LNG-135) (#714)
  • use new blueprint (#708)

0.10.6 – May 3, 2023

  • bug fix: click-to-definition for modules and abilities (LNG-144) (#705)
  • refactoring: move LSP compiler code to LSP package (LNG-141) (#705)
  • refactoring: move struct/service definitions logic to separate algebra, create locations algebra for LSP (LNG-143) (#705)

0.10.5 – April 17, 2023

  • return arrows from functions (LNG-131) (#693)
  • dependency updates

0.10.4 – April 10, 2023

  • add aqua native compilation (#681)
  • multiline collections and objects creation (#684)
  • remove bangs in lambdas in AIR (#688)
  • bug fix: check if expression can be added to a block. Fix returning arrow in inner blocks (#685)
  • dependency updates

0.10.3 – February 28, 2023

  • bug fix: fix type resolving for functors (LNG-119) (#677)

0.10.2 – February 25, 2023

  • bug fix: name uniquness in stream gates in AIR (#676)

0.10.1 – February 16, 2023

  • bug fix: parse long strings JSON (#672)

0.10.0 – February 16, 2023

  • BREAKING CHANGE: support new JS client (DXJ-283) (#668)

0.9.4 – February 1, 2023

  • bug fix: Canonicalize variable in an object creation or a copy if a variable is a stream (#649) (fedd743)
  • performance: Unfold variables in parallel where it is possible (#656) (439f2cd)

0.9.3 – January 20, 2023

  • Add copy method to modify a structure field while preserving immutability (example, PR: #646)
  • bug fix: sometimes nil cannot be returned from a function properly (#629)
  • bug fix: incorrect number of arguments error message (#645)

0.9.2 – January 20, 2023

  • update dependency @fluencelabs/fluence to v0.28.0

0.9.1 – January 17, 2023

  • Huge refactoring to make it possible to use compiler API as a JS library. Introduce new JS library (@fluencelabs/aqua-api) with API to control Aqua compiler inside JS programs.
  • many Scala and JS libraries updated

0.8.0 – November 30, 2022

  • Structures can be instantiated right in the code (example, PR: #592)
  • module key word was renamed to aqua (docs, PR: #592)
  • Syntax checking has been disabled in generated JS/TS files (#585)
  • a lot of bug fixes (#590, #584, #582, #581, #580, #578, #579)
  • bump fluence-js to version 0.27.3

0.7.7 – October 18, 2022

  • Fix --timeout flag in aqua run, which didn't work
  • AquaVM: add null and never modes to fold instruction
  • AquaVM: Canonicalize streams in service calls and if statements
  • AquaVM: Stream canonicalization
  • bug fixes
  • bump fluence-js to latest version

0.7.6 – September 22, 2022

  • Run builtin services directly from aqua run without any input (docs)
  • Run services in aqua run (docs)
  • Forbid streams in structures. Restrict assignment with empty streams and arrays
  • bump fluence-js to v0.25.1
  • a lot of bugs fixed

0.7.5 – August 22, 2022

  • added AIR validation on Aqua compilation
  • Aqua parser will throw an error on negative array indexes
  • plugins feature added. Read here for more details
  • improvements in go-to definition feature in VSCode
  • a lot of bugs fixed

0.7.4 – June 24, 2022

  • JSON services for aqua run. Read here for more details. (#520).
  • Use JSON for arguments in aqua run without extra brackets for optional fields (#517)

0.7.3 – June 10, 2022

0.7.2 – April 26, 2022

  • FluenceJS was updated to 0.23.0 (#503)
  • noXor, noRelay, const and verbose options in aqua run (#473 #475)
  • aqua run functions can now handle arrays as arguments (#497)
  • aqua run will match JSON arguments with given types (#492)
  • aqua fully supports mathematical expressions (#476)
  • A lot of help and error messages were rewritten (#494)
  • A lot of bug fixes: (#499 #463 #85 #166 #435 #460 #473 #478 #385)

0.7.1 – March 25, 2022

0.7.0 – March 22, 2022

  • Moving all features from deprecated fldist to aqua. All interactions with peers moved to aqua remote subcommand. Descriptions of all commands can be found in here (#457)
  • Update FluenceJS to 0.21.5 (#456)
  • Switching to v3 FluenceJS API. Improves JS support for optional Aqua types (#453)
  • Add message when function not found (#454)

0.6.4 – March 15, 2022

0.6.3 – March 4, 2022

0.6.2 – February 24, 2022

  • Added top and bottom types to the parser – will be used for debugging functions (#442)
  • Schedule scripts using Aqua CLI (#440)
  • Better timeouts handling for CLI (#437)

0.6.1 – February 16, 2022

  • aqua dist deploy to deploy a service to the Fluence network (#413, #419, #422, #431)
  • aqua dist remove to remove a deployed service (#428)
  • aqua env to show a list of known Fluence peers (#434)
  • Many, many bugfixes (#414, #415, #420, #426, #427)
  • Dependencies updated (#430)

0.6.0 – February 4, 2022

  • Big internal refactoring for better testability & inline syntax additions (#403) – breaks backward compatibility due to breaking change in Fluence-JS
  • Join expression was changed to generate noop (#406)
  • Now can use default imports for aqua compile just like in aqua run (#400)
  • Added helper for aqua run development process (#407)
  • Various bugfixes (#412, #405, #397)

0.5.3 – January 13, 2022

0.5.2 – December 24, 2021

  • Topology transformations were completely rewritten: the same Aqua scripts may produce different AIR, probably more efficient, but new bugs might be introduced as well (#371)
  • CLI: as an effort to move all the Fluence services management routines to Aqua, uploading files to Fluence's companion IPFS is now available via Aqua CLI (#390)
  • CLI: bugfixes (#388)

0.5.1 – December 10, 2021

  • CLI: Support for secret key in aqua run (#375)
  • CLI: Add log level, print generated AIR (#368)
  • Improved topology calculation in par blocks (#369)
  • JAR file is not pushed to releases anymore. JS is the sole compilation target now
  • CLI: path to @fluencelabs/aqua-lib is provided as an imports folder by default. import "@fluencelabs/aqua-lib/builtin.aqua" should always work now, even outside of an NPM project (#384)
  • CLI: Pass arguments to aqua run as JSON via --data or --data-path flag (#386)

0.5.0 – November 24, 2021

  • Breaking semantic change: Stream restrictions. This fixes many obscure bugs which happened when using streams inside for cycles (#321)
  • This version of Aqua is not compatible with fldist so far (cannot run the emitted AIR via fldist). Use aqua run to run Aqua instead (#358)
  • Added timeout parameter support for aqua run (#360)
  • You need to update FluenceJS to 0.15.0+ and Fluence Node to v0.0.23+ for Aqua 0.5 support, previous versions will not work.

0.4.1 – November 10, 2021

  • New language feature: closures (#327)
  • New CLI option --scheduled to compile Aqua for the Fluence's Script Storage (#355)
  • Bugfixes for using streams to construct more complex streams (#277)
  • Better errors rendering (#322, #337)
  • Bugfix for comparing Option types (#343)

0.4.0 – October 25, 2021

  • Now Aqua compiler emits JS/TS code for Fluence JS 0.14. The new JS/TS SDK is heavily rewritten to support async service functions declaration. It also embeds a deeply refactored AquaVM. (#334)
  • Various bugfixes for AIR generation and the compiler behavior (#328, #335, #336, #338)

0.3.2 – October 13, 2021

  • Experimental feature: now can run Aqua from Aqua CLI (#324):
sh
aqua run -i aqua/caller.aqua -f "callFunc(\"arg1\",\"arg2\")"
sh
aqua run -i aqua/caller.aqua -f "callFunc(\"arg1\",\"arg2\")"

0.3.1 – September 13, 2021

  • Now .aqua extension in imports is optional: you may import "file.aqua" or just import "file" with the same effect (#292)
  • CLI improvements: --dry run (#290), output directory is created if not present (#287)
  • Many bugfixes: for imports (#289), TypeScript backend (#285, #294, #298), and language semantics (#275).

0.3.0 – September 8, 2021

  • TypeScript output of the compiler now targets a completely rewritten TypeScript SDK (#251)
  • Constants are now UPPER_CASED, including always-available HOST_PEER_ID and INIT_PEER_ID (#260)
  • The compiler is now distributed as @fluencelabs/aqua package (was aqua-cli) (#278)
  • aqua is the name of the compiler CLI command now (was aqua-cli) (#278)
  • JVM version of the compiler is now available with aqua-j command; JS build is called by default – so no more need to have JVM installed (#278)
  • Now you can have a file that contains only a header with imports, uses, declares, and exports, and no new definitions (#274)

0.2.1 – August 31, 2021

  • Javascript build of the compiler is now distributed via NPM: to run without Java, use aqua-js command (#256)
  • Now dots are allowed in the module declarations: module Space.Module & many bugfixes (#258)

0.2.0 – August 27, 2021

  • Now the compiler emits AIR with the new (ap instruction, hence it's not backwards compatible (#241)
  • Many performance optimizations and bugfixes (#255, #254, #252, #249)

0.1.14 – August 20, 2021

  • Aqua file header changes: module, declares, use, export expressions (#245), see Imports and Exports for the docs.
  • Experimental Scala.js build of the compiler (#247)

0.1.13 – August 10, 2021

  • Functions can export (return) several values, see #229
  • Internal changes: migrate to Scala3 (#228), added Product type (#168)

0.1.12 – August 4, 2021

  • Can have functions consisting of a return operand only, returning a literal or an argument

0.1.11 – August 3, 2021

  • Added host_peer_id , a predefined constant that points on the relay if Aqua compilation is configured so, and on %init_peer_id% otherwise, see #218.

0.1.10 – July 26, 2021

  • Added <<- operator to push a value into a stream, see #214, #209.