Programming language for distributed systems & p2p
Go to file
Pavel 3f7ef9f264
Create aquamarine npm package (#56)
* Create aquamarine npm package
2021-04-14 18:00:51 +03:00
.github/workflows Create aquamarine npm package (#56) 2021-04-14 18:00:51 +03:00
aqua 30 import basics (#49) 2021-04-13 16:05:31 +03:00
aqua-src 30 import basics (#49) 2021-04-13 16:05:31 +03:00
backend Fix release, add xor wrap (#51) 2021-04-13 13:37:03 +03:00
cli/src Pass sbt version to JAR file (#55) 2021-04-14 14:15:27 +03:00
linker/src 30 import basics (#49) 2021-04-13 16:05:31 +03:00
model/src Fix release, add xor wrap (#51) 2021-04-13 13:37:03 +03:00
npm Create aquamarine npm package (#56) 2021-04-14 18:00:51 +03:00
parser/src 30 import basics (#49) 2021-04-13 16:05:31 +03:00
project 30 import basics (#49) 2021-04-13 16:05:31 +03:00
semantics/src/main/scala/aqua/semantics 30 import basics (#49) 2021-04-13 16:05:31 +03:00
types/src fix assembly, add u8 (#45) 2021-04-08 15:53:54 +03:00
.gitignore First experiments with Aqua HLL 2021-02-01 16:17:46 +03:00
.scalafmt.conf Fix via path, complex tests (#27) 2021-04-05 10:40:51 +03:00
build.sbt Pass sbt version to JAR file (#55) 2021-04-14 14:15:27 +03:00
README.md Aquamarine -> Aqua in README (#59) 2021-04-14 14:42:20 +03:00

Aqua

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.

Compiler CLI

To build the Aqua compiler, clone the repo & run sbt 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-hll.jar path/to/input/dir 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
  • semantics - rules to convert source AST into the model
  • linker - checks dependencies between modules, builds and combines an abstract dependencies tree
  • 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