aqua/README.md

40 lines
1.7 KiB
Markdown
Raw Normal View History

2021-04-14 11:42:20 +00:00
## Aqua
2021-02-01 13:17:46 +00:00
[![release](https://github.com/fluencelabs/aqua/actions/workflows/release.yml/badge.svg)](https://github.com/fluencelabs/aqua/actions/workflows/release.yml)
2021-04-14 11:42:20 +00:00
Aqua is a new-gen language for distributed systems.
2021-02-01 13:17:46 +00:00
2021-04-14 11:42:20 +00:00
Aqua programs are executed on many peers, sequentially
or in parallel, forming a single-use coordination network.
2021-03-19 09:40:27 +00:00
2021-04-14 11:42:20 +00:00
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.
2021-03-19 09:40:27 +00:00
## Using Aqua
Please refer to [aqua-playground](https://github.com/fluencelabs/aqua-playground) to learn how to use Aqua.
## Compiler CLI
2021-03-19 09:40:27 +00:00
2021-04-14 11:42:20 +00:00
To build the Aqua compiler, clone the repo & run `sbt assembly`,
or simply download the latest JAR file from the [releases](https://github.com/fluencelabs/aqua/releases) page.
2021-03-19 09:40:27 +00:00
2021-04-14 11:42:20 +00:00
It requires `java` to run Aqua compiler from the command line:
2021-03-19 09:40:27 +00:00
```commandline
java -jar aqua-hll.jar path/to/input/dir path/to/output/dir
```
Input directory should contain files with `aqua` scripts.
## Repository structure
- **[types](./types)** data types, arrows, stream types definitions and variance
- **[parser](./parser)** - parser, takes source text and produces a source AST
- **[model](./model)** - middle-end, internal representation of the code, optimizations and transfromations
- **[semantics](./semantics)** - rules to convert source AST into the model
- **[linker](./linker)** - checks dependencies between modules, builds and combines an abstract dependencies tree
- **[backend/air](./backend/air)** generates AIR code from the middle-end model
- **[backend/ts](./backend/ts)** - generates AIR code and Typescript wrappers for use with Fluence JS SDK
- **[cli](./cli)** - CLI interface