Programming language for distributed systems & p2p
Go to file
InversionSpaces 9c23a9d4ef
feat(compiler): Allow redeclaring functions [LNG-357] (#1127)
* Allow dots in use ... as

* Add tests

* Refactor implicits

* Use QName in module name

* Fix test

* Refactor declares

* Add PName

* Propagate nested abilities

* Fix compilation

* Do not propagate context

* Use alignCombine

* Add test

* Add more tests

* Refactor test

* Remove unused function

* Refactor test

* Refactor, add comments

* Checkout aqua-src
2024-04-25 10:40:55 +00:00
.devcontainer feat(devcontainer): Add js-client to devcontainer (#736) 2023-06-09 08:44:54 +00:00
.github chore: Fix e2e (#1132) 2024-04-25 13:12:32 +03:00
.vscode Add support for the new features of JS SDK API (#251) 2021-09-08 13:16:59 +03:00
api chore(main): release aqua 0.14.6 (#1111) 2024-04-19 10:03:27 +00:00
aqua-run/src/main/scala/aqua/run fix(compiler): Create restrictions in inliner [LNG-346] (#1099) 2024-03-28 11:10:13 +00:00
aqua-src fix(compiler): Return error if SemanticError occures [LNG-356] (#1126) 2024-04-17 12:40:19 +00:00
backend fix(compiler): Streams in closures generates wrong AIR (#1055) 2024-01-30 11:34:50 +03:00
compiler/src feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
integration-tests chore(main): release aqua 0.14.6 (#1111) 2024-04-19 10:03:27 +00:00
io feat(language-server): Resolve paths for imports (#1079) 2024-02-20 12:52:54 +00:00
js feat(api): Use js.UndefOr for defaultServiceId (#980) 2023-11-22 13:44:34 +00:00
language-server feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
linker/src feat(language-server): Resolve paths for imports (#1079) 2024-02-20 12:52:54 +00:00
model feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
parser/src feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
project chore(deps): update dependency com.github.sbt:sbt-native-packager to v1.10.0 (#1121) 2024-04-18 09:09:40 +00:00
semantics/src feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
types/src fix(compiler): Streams in closures generates wrong AIR (#1055) 2024-01-30 11:34:50 +03:00
utils feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
.gitignore feat(build): Implement custom bundle task (#894) 2023-09-18 09:53:25 +02:00
.jvmopts Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
.scalafmt.conf fix(compiler): Incorrect focus on error [LNG-274] (#959) 2023-11-02 12:38:19 +00:00
build.sbt feat(compiler): Allow redeclaring functions [LNG-357] (#1127) 2024-04-25 10:40:55 +00:00
CHANGELOG.md chore(main): release aqua 0.14.6 (#1111) 2024-04-19 10:03:27 +00:00
ci.cjs chore: Remove aqua cli (#874) 2023-09-12 13:37:40 +03:00
CONTRIBUTING.md feat(docs): README update (#667) 2023-02-20 11:42:55 +03:00
LICENSE feat(docs): README update (#667) 2023-02-20 11:42:55 +03:00
pnpm-lock.yaml chore(main): release aqua 0.14.6 (#1111) 2024-04-19 10:03:27 +00:00
pnpm-workspace.yaml chore: Remove aqua cli (#874) 2023-09-12 13:37:40 +03:00
README.md chore(docs): Update README (#892) 2023-09-19 11:33:39 +03:00
USAGE.md chore(docs): Update README (#892) 2023-09-19 11:33:39 +03:00

Aqua

release npm

Aqua is an open-source language for distributed workflow coordination in p2p networks. Aqua programs are executed on many peers, sequentially or in parallel, forming a single-use coordination network. Applications are turned into hostless workflows over distributed function calls, which enables various levels of decentralization: from handling by a limited set of servers to complete peer-to-peer architecture by connecting user devices directly. Aqua is the core of the Fluence protocol and a framework for internet or private cloud applications.

Usage

The easiest way to use Aqua is through Fluence CLI with aqua command.

Other ways of using Aqua are described in USAGE.md.

Documentation

Comprehensive documentation and usage examples as well as a number of videos can be found in Aqua Book. Aqua Playground demonstrates how to start writing Aqua and integrate it into a TypeScript application. Numerous videos are available at our YouTube channel.

Repository Structure

  • api - Aqua API for JS
  • aqua-run - Aqua API to run functions
  • backend - compilation backend interface
  • compiler - compiler as a pure function made from linker, semantics and backend
  • model - middle-end, internal representation of the code, optimizations and transformations
    • transform - optimizations and transformations, converting model to the result, ready to be rendered
    • test-kit - tests and test helpers for the model and transformations
  • linker - checks dependencies between modules, builds and combines an abstract dependencies tree
  • parser - parser, takes source text and produces a source AST
  • semantics - rules to convert source AST into the model
  • types - data types, arrows, stream types definitions and variance

Support

Please, file an issue if you find a bug. You can also contact us at Discord or Telegram. We will do our best to resolve the issue ASAP.

Contributing

Any interested person is welcome to contribute to the project. Please, make sure you read and follow some basic rules.

License

All software code is copyright (c) Fluence Labs, Inc. under the Apache-2.0 license.