mirror of
https://github.com/fluencelabs/aqua.git
synced 2024-12-04 22:50:18 +00:00
970da2e1b7
* Functions must be marked with `pub` to be exported * AquaFiles WIP * Factoring out linker * Core linker logic * FileModuleId WIP * AquaFile WIP * AquaFiles WIP * Basic imports works * Show errors * Dirty hack to make imports work (almost) * Better errors displaying * Simplified AquaCompiler interface * Write compiled files * New AquaCli * CLI fixed, works * Review fixes
1.5 KiB
1.5 KiB
Aquamarine
Aquamarine is a new-gen language for distributed systems.
Aquamarine programs are executed on many peers, sequentially or in parallel, forming a single-use coordination network.
Aquamarine's runtime is heterogeneous: it includes browsers, servers, devices, all involved in solving a single task. Therefore, Aquamarine scripts are compiled into several targets at once, with AIR and Typescript as a default.
Compiler CLI
To build the Aquamarine compiler, clone the repo & run sbt assembly
,
or simply download the latest JAR file from the releases page.
It requires java
to run Aquamarine 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