Programming language for distributed systems & p2p
Go to file
2021-09-08 13:16:59 +03:00
.github/workflows Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
.vscode Add support for the new features of JS SDK API (#251) 2021-09-08 13:16:59 +03:00
aqua Imports bugfixes (#249) 2021-08-21 11:10:38 +03:00
aqua-src Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
backend Add support for the new features of JS SDK API (#251) 2021-09-08 13:16:59 +03:00
cli Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
compiler/src/main/scala/aqua/compiler Performance improvement: single parser instance (#254) 2021-08-27 15:57:44 +03:00
linker/src Module and Use expressions (#245) 2021-08-20 18:03:47 +03:00
model Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
npm increase version to publish aqua-cli (#262) 2021-09-02 16:15:37 +03:00
parser/src Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
project Fixes version display and empty module compilation (fixes #264 #265) (#274) 2021-09-07 11:02:36 +03:00
semantics/src Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
types/src Imports/exports fixes (#258) 2021-08-31 13:05:26 +03:00
.gitignore Add support for the new features of JS SDK API (#251) 2021-09-08 13:16:59 +03:00
.jvmopts Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
.scalafmt.conf Module and Use expressions (#245) 2021-08-20 18:03:47 +03:00
build.sbt Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
README.md Module and Use expressions (#245) 2021-08-20 18:03:47 +03:00

Aqua

release

Aqua is a new-gen language for distributed systems.

Aqua programs are executed on many peers, sequentially or in parallel, forming a single-use coordination network.

Aqua's runtime is heterogeneous: it includes browsers, servers, devices, all involved in solving a single task. Therefore, Aqua scripts are compiled into several targets at once, with AIR and Typescript as a default.

Using Aqua

Please refer to Aqua Book to learn how to use Aqua.

Compiler CLI

To build the Aqua compiler, clone the repo & run sbt cli/assembly, or simply download the latest JAR file from the releases page.

It requires java to run Aqua compiler from the command line:

java -jar aqua-cli-%version_number%.jar -i path/to/input/dir -o path/to/output/dir

Input directory should contain files with aqua scripts.

Repository structure

  • types data types, arrows, stream types definitions and variance
  • parser - parser, takes source text and produces a source AST
  • model - middle-end, internal representation of the code, optimizations and transfromations
  • model/transform - optimizations and transfromations, converting model to the result, ready to be rendered
  • model/test-kit - tests and test helpers for the model and transformations
  • semantics - rules to convert source AST into the model
  • linker - checks dependencies between modules, builds and combines an abstract dependencies tree
  • backend - compilation backend interface
  • compiler - compiler as a pure function made from linker, semantics and backend
  • backend/air generates AIR code from the middle-end model
  • backend/ts - generates AIR code and Typescript wrappers for use with Fluence JS SDK
  • cli - CLI interface