mirror of
https://github.com/fluencelabs/aqua.git
synced 2024-12-04 14:40:17 +00:00
Programming language for distributed systems & p2p
985309d4eb
* Fixes missing par * test for par * Par topology bug fixed * test `on` on every par branch * Topology refactoring * Tests compilation wip * Tests compilation wip * Tests compile * Test fix * Non-par tests fixed * The last test remains * Topology tests fixed * SemanticsSpec compiles * transformspec wip * fix diff * TransformSpec with diff * test for error handling * topology resolver spec wip * delete test, rename test * fixed * par with export variable test * test for try without catch * Handle try without catch * XorParTag fix * Wake up target peer after par * Increment version * Fix xor par during func model resolution * test with import and fold * Linker bug fixed Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai> |
||
---|---|---|
.github/workflows | ||
aqua | ||
aqua-src | ||
backend | ||
cli/src | ||
linker/src | ||
model/src/main/scala/aqua/model | ||
npm | ||
parser/src | ||
project | ||
semantics/src | ||
test-kit/src | ||
types/src | ||
.gitignore | ||
.scalafmt.conf | ||
build.sbt | ||
README.md |
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.
Using Aqua
Please refer to aqua-playground to learn how to use Aqua.
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