aqua/README.md
Dmitry Kurinskiy 970da2e1b7
30 import basics (#49)
* 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
2021-04-13 16:05:31 +03:00

1.5 KiB
Raw Blame History

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