Intro – first approach (#44)

* Readme WIP

* Readme WIP
This commit is contained in:
Dmitry Kurinskiy 2021-04-13 16:02:36 +03:00 committed by GitHub
parent 8e04348ffa
commit 569df52d27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 19 deletions

View File

@ -1,31 +1,32 @@
## Aquamarine HLL
## Aquamarine
The high level language that compiles to AIR and some wrappers in the host language (e.g. TypeScript).
Aquamarine is a new-gen language for distributed systems.
## Build and use jar file
To build a file use this command:
Aquamarine programs are executed on many peers, sequentially
or in parallel, forming a single-use coordination network.
```commandline
sbt assembly
```
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
jar file will be in `target/scala-2.13/aqua-hll.jar`
To build the Aquamarine compiler, clone the repo & run `sbt assembly`,
or simply download the latest JAR file from the [releases](https://github.com/fluencelabs/aqua-hll/releases) page.
Run:
It requires `java` to run Aquamarine compiler from the command line:
```commandline
java -jar aqua-hll.jar path/to/input/dir path/to/output/dir
```
input directory should contain files with `aqua` scripts
### TODO
Input directory should contain files with `aqua` scripts.
- Lambda
- Build data types: extend
- Platform-specific Predef with Return ability
- Implementation for abilities
- Abilities passing
- Print syntax errors better way
- For the offset, find a token (for LSP)
- Generate interface types from JSON
## 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
- **[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

View File

@ -21,6 +21,8 @@ val commons = Seq(
addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.3" cross CrossVersion.full)
)
commons
lazy val cli = project
.settings(commons: _*)
.settings(