Commit Graph

153 Commits

Author SHA1 Message Date
Dima
439f2cde03
perf: Unfold variables in parallel where it is possible (fixes LNG-109 ) (#656) 2023-02-01 10:50:43 +03:00
Dima
fedd743721
fix: Canonicalize variable in object creation or copy if variable is a stream (#649) 2023-01-27 13:24:52 +03:00
Dima
50f0723a32
feat: copy structures implementation [fixes LNG-102] (#646) 2023-01-20 12:02:05 +07:00
Dima
7ab980a5f0
fix: nil in return [DXJ-226] (#629) 2023-01-17 20:50:47 +03:00
Dima
63433f2c91
LNG-96 object creation (#592) 2022-11-30 15:28:06 +03:00
Dima
2b36dbea40
fix gate (#590) 2022-11-17 12:17:28 +03:00
Dima
85b8f31e74
Fix join behavior when using .length (#584) 2022-11-16 15:20:32 +03:00
Dima
61f483e16b
Fix empty streams as result (#582) 2022-10-21 21:16:39 +02:00
DieMyst
2b99cba0d1 push to stream as a result of inner function only if stream is declared in outer function 2022-10-19 19:07:08 +03:00
Dima
176cad360c
LNG-87 add null and never modes to fold instruction (#563) 2022-10-09 20:11:27 +03:00
Dima
befa534c57
LNG-88 Canonicalize streams in service calls and if statements (#565) 2022-10-06 15:42:11 +03:00
Dima
1fa312e7c3
Fix par in properties resolving (#564) 2022-10-06 11:27:46 +03:00
Dima
2621ee6fa3
fix renaming serviceId variable (#562) 2022-10-03 14:24:14 +03:00
Dima
95d3dc2d9e
LNG-86 Stream canonicalization (#553) 2022-09-30 19:06:55 +03:00
Dima
792e174641
LNG-78 parser error on negative array indexes (#538) 2022-07-12 21:59:58 +03:00
Dima
8cb0fec2b0
LNG-69 fix topology bug for if statement without else (#532) 2022-07-05 09:36:20 +03:00
Dmitry Kurinskiy
f0cc65e2ad
Fixes LNG-63: introduced ShadowRaw (#528) 2022-06-27 15:54:21 +03:00
Dima
0bde766832
fix lambda resolving (#519) 2022-06-10 10:45:17 +03:00
Dima
bc55055cfe
Fix arguments renaming in functions (#518) 2022-06-08 17:50:35 +03:00
Dima
5a7450bce1
Go-to definitions location between files (#516) 2022-06-02 13:31:31 +03:00
Dima
6064659610
DXJ-21 Save token definitions for LSP (#514) 2022-05-24 17:05:26 +03:00
Dima
59419b4e1d
PARTICLE_TIMEOUT -> PARTICLE_TIMESTAMP (#515) 2022-05-24 13:20:05 +03:00
Dima
3f17d40af1
Particle ttl and timeout constants (#505) 2022-04-26 19:10:11 +03:00
Dima
a0805068f3
#499 rename vars in for (#500) 2022-04-26 08:49:28 +03:00
Dmitry Kurinskiy
abd101c4f9
Fix for greedy par (#487) 2022-04-12 16:27:04 +03:00
Dima
ef0091175c
fix and add unit test (#477) 2022-04-04 11:08:02 +03:00
Dmitry Kurinskiy
12ee2d52fa
Arrow Call as a Raw Value (#461)
* CallArrowToken in the parser

* CallArrowRawTag

* unfoldArrow

* handle IntoIndexRaw for CallArrowRaw

* Removed useless CallArrowRawTag.service argument

* RawValueInliner split into several classes

* cliJS compiles

* Parser tests compile

* Semantics spec compile but fail

* Allow braces around values

* infix token WIP

* InfixToken WIP

* Fixes #423

* Infix (arithmetic) operations order

* Infix (arithmetic) operations parallelism fix

* seq it!

* fix inline test

* fix transform test

* fix semantics spec

* fix CallArrowSem

* bugfix

* Fix for CLI help typo

* merge

* Order fix

* Order fix

* optional space after `func` in closures

* some doc comments

Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai>
2022-03-25 17:23:41 +03:00
Dima
fe21fdc1d7
--show-sk flag (#465) 2022-03-25 10:02:07 +03:00
Dima
e14af21557
Set arguments types dynamically from JSON (#464) 2022-03-23 20:54:54 +03:00
Dima
2ed1d8cf08
V3 types (#453) 2022-03-17 14:25:12 +03:00
Dmitry Kurinskiy
ab0990dd72
Capture and apply topology (#451) 2022-03-15 14:52:43 +03:00
Dmitry Kurinskiy
2fa3a09548
Empty collections creation (#447) 2022-03-04 14:07:30 +03:00
Dmitry Kurinskiy
6772c1d0fa
Sugar for collections (#445) 2022-03-03 17:54:45 +03:00
Dima
3320cffde8
Remove service command, file options refactoring (#428) 2022-02-16 10:47:43 +03:00
Dmitry Kurinskiy
c74eb06499
427 topology bug (#433)
* fix path

* topology bug 427 test

* test with join, it works

* improve topology test, still works. add compiler test

* broken compiler test

* CompilerSpec works fine without `wrapWithXor`

* add xor to topology test, it becomes broken

* XOR topology fixed

* ForceExecModel

* Debugging topology WIP

* Fixed

Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai>
2022-02-15 19:20:56 +03:00
Dmitry Kurinskiy
6d03a0d95b
Fix for passing a stream argument with lambda to a function waiting for a scalar (#420) 2022-02-06 00:26:07 +03:00
Dmitry Kurinskiy
d5d7b8b5fd
Fix for greedy XOR tags (#412) 2022-02-02 19:06:35 +03:00
Dima
740a9ba653
run manual (#407) 2022-02-02 14:40:10 +03:00
Dmitry Kurinskiy
012cba493c
Op model (#403)
* Separating raw FuncOp from OpModel WIP

* Model compiles, fighting with transform

* Refactoring WIP

* transform compiles

* Fixing AquaCompiler WIP

* Compiler compiles WIP

* AquaContext's allFuncs, allValues

* WIP trying to compile the CLI

* It compiles

* It runs and fails to compile

* Compiles wrong way

* fix TopologySpec

* Sugar bugfix

* fix TransformSpec compilation

* fix test compilation

* fix SemanticSpec

* Topology debugging

* TransformSpec fixed

* Do not import aqua.model

* Take parts in Semantics

* Fix for re-exports

* Maybe a fix for streams

* Maybe a fix for declarations

* streamArgs.aqua in test examples

* more aqua code with bugs

* FuncOp removed

* removed wrapNonEmpty

* fix TransformSpec

* fix SemanticSpec compilation, delete FuncOps

* Separated model/res, model/inline

* tiny fix

* Tests fixed

* TreeNode to wrap labels into cofree standard way

* TreeNodeCompanion with defauls show, equalsOrShowDiff for all Cofree trees we have

* Simple TagInlinerSpec

* Failing test in TagInlinerSpec

* test wip

* test fixed

* delete Node

* delete test-kit, move tests

* fix constants

* Failing TagInliner test

* More complex case for TagInlinerSpec

* TagInlinerSpec fix

* Split RawValueInliner, TagInliner

* Dumb case for ArrowInlinerSpec

* spec for stream renaming

* renaming stream test

* Exports fixed

* SeqModel.wrapWithEmpty for tests

* Deleted EmptyModel

* Bring back EmptyModel

* ArrowInlinerSpec wip

* ArrowInlinerSpec fixed

* Test fixed

* fix

* stream in callback test WIP

* Slightly better logging for TagInliner

* add example in aqua

* test update

* Removed occasional abilities override

* test

* AquaCompilerSpec WIP

* AquaCompilerSpec failing

* AquaCompilerSpec fixed

* fix test

* compiler test, add RestrictionTag

* break test

* fix stream passing to box arguments

* fix exports in context

* Do not reexport builtins

* init for topology bug

* test for topology

* Reproduced the import-reexport bug

* Hops are working...

* Issue #397 does not reproduce!

* foldJoin reproduces the bug

* Reexports inefficiently fixed

* Topology test fixed

* topology bug

* Cache compiled parts

* Cache compiled parts

* ignore the wip topology test

* delete test

* hanging

* add builtin

* Use linked-data-structure `equals` instead of recursive `hashCode`

* A bit more logs

* eq is faster than ==

* Try to join one by one

* op.identity for join

* reverting op.noop for join

* Fix for renaming when value has the same name as argument

* Bump the version to .6

* broken test for names

* second test for renaming

* this test works but i must break it

* add index in call

* JoinModel breaks test

* the test works fine with a fix, but we should check it closely. and `foldJoin.aqua` integration test become broken

* broken test with xor

* Fixed naming issue for lambda's variables substitution

* Topology bug wip

* Fixes #397

* Maybe fix

Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai>
2022-01-31 14:48:13 +03:00
Dima
c6b3314d39
identity -> noop (#406) 2022-01-20 11:41:12 +03:00
Dmitry Kurinskiy
5a8a702f1c
Scalar index access (#401)
* Access index by scalar value

* Decomposed resolveField/resolveIndex semantics

* valueToRaw with recursive lambda support

* P.defer for recursive parser

* Desugarize all tags

* .backtrack

* Recursion bugfix

* Some code readability improvement

* Compile bugfix
2022-01-13 13:39:43 +03:00
Dmitry Kurinskiy
061e896b63
Model/raw refactoring (#398)
* Introducing model/raw subproject

* ValueRaw WIP

* ValueRaw WIP

* ValueModel.fromRaw WIP

* Recursive variables renaming

* Tests

* recursiveRaw

* Arrow Inliner refactoring

* desugarize takes its place WIP

* Sugar.desugarize maybe works

* Some movings/renamings

* Compile bug fixed

* Updated scalafmt

* Fix for service defaultId

* Map values recursively
2022-01-13 10:32:59 +03:00
Dmitry Kurinskiy
6657a41086
Added error_code to last error type (#396) 2021-12-30 13:30:04 +03:00
Dmitry Kurinskiy
d1b54fe39b
Fixes topology for co (#394)
* Fixes topology for co

* Removed debug output

* Test fixed
2021-12-29 12:01:13 +03:00
Dmitry Kurinskiy
22778914ca
Topology refactoring & fixes (#371)
* Topology optimization for Folds

* cache RawCursor's parent for better performance

* Tests fixed

* wip

* wip

* Use the new Topology to find paths

* Compile bug fixed

* Old tests works

* One more fixed test

* Move before seq next

* One more fixed test

* Bugfix

* Disabled debug output

* maybe fix?

* maybe fix?

* Topology wip

* Maybe fix

* Maybe fix

* Fold optimization

* Root topology

* Respect forceExit in endsOn

* better caching

* better caching

* Root afterOn = const

* XorGroup endsOn should break

* no EndsOn for Root

* Maybe better?

* Uncycling

* Eval

* Respect ParTag.Detach

* Detach test

* Detach test failing

* Detach test fixed

* Go to relay via relay

* Fixes #380

* Increment Aqua version to 0.5.2

* Add image to transform readme, update dependencies

* Review fixes

* Updated Scala version in the release flow
2021-12-22 15:21:37 +03:00
Dima
4eb272e953
Support new fluenceJS version in run command. Print results of a function (#358) 2021-11-17 10:56:42 +03:00
Dmitry Kurinskiy
27b885f12d
#321 restricted stream scopes (#359) 2021-11-17 08:25:06 +03:00
Dmitry Kurinskiy
0eab86dc4c
Closures syntax (#327) 2021-11-04 19:22:57 +03:00
Dima
73f46c6897
Pass stream arguments to callbacks properly (#350)
* add DeclareStreamTag

* some fixes

* fix

* intersect argsToRename and streamToRename to fix excess renaming

Co-authored-by: dmitry <dmitry@fluence.one>
2021-11-02 12:26:00 +03:00
Dmitry Kurinskiy
5dd4ea6b0f
Pushing a stream into a stream (#344)
* Remove premature handling of pushing a stream into a stream

* Handling PushToStreamTag with literal tmpName

* Handling PushToStreamTag on Topology level

* Compilation bugfix

* Better handling for CanonicalizeTag

* Mutable i
2021-10-27 14:21:12 +03:00
Dmitry Kurinskiy
1bd640e773
277 implicit canonicalization for <<- stream (#339)
* Create opaque names in NamesInterpreter

* Implicit canonicalization for <<- stream

* PR fixes

* Second part of #277
2021-10-26 19:47:28 +03:00
Dima
217613321b
fix (#308) 2021-09-21 11:51:38 +03:00
Dima
7362b46384
Fix incorrect resolving pushing stream from func to a value (#275) (#297) 2021-09-10 14:36:01 +03:00
Dima
d881f5bdbe
Upper cased constants (#260) 2021-09-07 11:09:48 +03:00
Dmitry Kurinskiy
3e7b11db10
Imports/exports fixes (#258)
* Fix for export in headerless file

* Ability arrow resolution bugfix

* Trying to reproduce a bug

* Allow dots in module declaration
2021-08-31 13:05:26 +03:00
Dmitry Kurinskiy
7e0fe470ec
Support for the new (ap instruction (#241) 2021-08-24 18:59:51 +03:00
Dmitry Kurinskiy
3de8571be9
Imports bugfixes (#249) 2021-08-21 11:10:38 +03:00
Dmitry Kurinskiy
b9af20339b
Module and Use expressions (#245)
* Module and Use expressions

* UseFromExpr

* ImportFromExpr

* PubExpr

* Export, declares

* Collecting all the needed info WIP

* Got all the needed data

* Tests fixed

* HeaderSem

* HeaderSem wip

* Everything except `export`/`declares` should be working

* Compile bug fixed

* Fix readme: cli/assembly

* Handle declares, exports

* Compile only exports in AquaRes

* Call services imported from modules

* Import consts, types, services from modules

* Resolve arrows from modules

* Bugfix
2021-08-20 18:03:47 +03:00
Dmitry Kurinskiy
96bc76ef2a
Separate Transform from Model (#244)
* Separate Result from Model

* Result->Transform, docs in README.md
2021-08-16 17:58:15 +03:00
Dmitry Kurinskiy
6c498b029b
Updating compiler backends (#243)
* Updating compiler backends: add FuncRes

* TypeScriptService

* ServiceRes
2021-08-16 16:59:36 +03:00
Dima
e2da2e90d7
Crossprojects for JVM and JS platforms (#237) 2021-08-11 19:53:36 +03:00
Dmitry Kurinskiy
f7aa118006
Multireturn bugfix (#238) 2021-08-11 10:55:25 +03:00
Dmitry Kurinskiy
3eb3ecc221
Return many values from a single function (#229) 2021-08-09 21:33:55 +03:00
Dmitry Kurinskiy
cd30ff8e8c
Introducing Product type (#225)
* Introducing Product type

* Main codebase compiles with Arrow(domain, codomain)

* Tests compile

* Tests passed

* Tiny fixes: use argument labels in js/ts generators

* Fix for return type in .ts

* Typescript fix

* Fix for option return in JS

* Arrow variance fix

* separated CompareTypes

* Added deprecation notices to ArrowType functions

* Compile error fixed

* Types doc comments

* Multi-value return is supported in the model

* Tests compilation fixes wip

* Test compiles

* Bugfix

* Bugfix
2021-08-06 16:31:47 +03:00
Dima
4ccac9bf0e
Migration to Scala 3 (#228) 2021-08-06 13:33:58 +03:00
Dima
ee67d038ad
53 219 issues (#224)
* functions that only return literal, don't parse top-bottom

* empty funcOp to FuncOps

* version

* fix
2021-08-04 13:16:42 +03:00
Dmitry Kurinskiy
e3716f6f31
Converting compiler to a pure function (#217)
* Trying to make the compiler a pure function

* Pure compiler WIP

* Compiler should be working now

* printlns

* printlns

* printlns

* fix, delete printlns

* more logs

* fix import resolving, more tests

* fix imports, add tests for imports resolving

* fix test

* correct paths to targets, correct output

* refactoring, create directories to file if not exist

* small changes

* fix test

* Tiny fixes WIP

* Tiny fixes

* Incrementing base version, as host_peer_id is added (fixes #218)

* render error messages, WIP

* small fix

* get src for lexer error

* wrap parser error

* add list of errors

* Handle file write errors accurately

* Use show syntax

* fix test

* fix test

* fix test

* println

Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai>
2021-08-03 17:23:28 +03:00
Dima
81cd3a2c71
200 202 stream resolving (#213) 2021-07-27 09:58:33 +03:00
Dima
f683a6b3cf
Fix incorrect compilation with arguments duplication (#211) 2021-07-22 12:08:55 +03:00
Dima
f455716548
Bug fix (#198) 2021-07-14 16:09:10 +03:00
Dmitry Kurinskiy
83d5a7b2a3
Introducing top and bottom types (#199)
* - Added top and bottom types
- Added nil for empty streams, options, arrays
- Fixed product variance

* Version bump due to syntax changes in the type system
2021-07-13 17:43:24 +03:00
Dima
5e1ef6e227
Abstract backend (#182) 2021-06-25 10:25:27 +03:00
Dmitry Kurinskiy
bbf47628c6
Co expression (#181) 2021-06-24 11:01:59 +03:00
Dmitry Kurinskiy
985309d4eb
Fixes missing par (#177)
* Fixes missing par

* test for par

* Par topology bug fixed

* test `on` on every par branch

* Topology refactoring

* Tests compilation wip

* Tests compilation wip

* Tests compile

* Test fix

* Non-par tests fixed

* The last test remains

* Topology tests fixed

* SemanticsSpec compiles

* transformspec wip

* fix diff

* TransformSpec with diff

* test for error handling

* topology resolver spec wip

* delete test, rename test

* fixed

* par with export variable test

* test for try without catch

* Handle try without catch

* XorParTag fix

* Wake up target peer after par

* Increment version

* Fix xor par during func model resolution

* test with import and fold

* Linker bug fixed

Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai>
2021-06-22 11:03:45 +03:00
Dima
f71de81cb4
test kit as separate project (#178) 2021-06-18 17:01:31 +03:00
Dmitry Kurinskiy
8586d70364
148 topology fix (#169) 2021-06-17 17:32:38 +03:00
Dima
29af3e7875
170 pass constants as arguments (#171) 2021-06-15 20:44:55 +03:00
Dmitry Kurinskiy
ee23ffeb9e
Introduce Catch espression (#162) 2021-06-10 16:33:01 +03:00
Dmitry Kurinskiy
4696e95129
Model refactoring to isolate imports, exports (#156)
* Model refactoring to isolate imports, exports

* Filter duplicate errors

* Do not export imports

* Add types to ServiceModel, AquaContext

* Print compiler version in AquaCli
2021-06-08 15:55:06 +03:00
Dmitry Kurinskiy
d300a7dea3
AssignmentExpression (#155)
* AssignmentExpression

* Increment minor version due to syntax enhancement

* Don't generate (null) for assignment tags

* AbilityIdTag

* Added defaultId to ServiceModel

* fix compilation

Co-authored-by: DieMyst <dmitry.shakhtarin@fluence.ai>
2021-06-08 09:42:09 +03:00
Dmitry Kurinskiy
15f582eaf9
Fix: resolve function return name (#154) 2021-06-04 15:57:53 +03:00
Dmitry Kurinskiy
0e2ea88934
Support options for via clause in on expression (#153)
* Support options for `via` clause in `on` expression

* Remove the generated comment

* Fix: provide stream as an argument

Co-authored-by: Dima <dmitry.shakhtarin@fluence.ai>
2021-06-03 17:43:58 +03:00
Dmitry Kurinskiy
6f6299e035
Simple opt-as-an-array fix (#149)
* Simple opt-as-an-array fix

* Last error model

* Test fixed
2021-06-03 10:16:07 +03:00
Dmitry Kurinskiy
807c26619f
108 option type (#146)
* Option type support: arguments, values

* Aqua version 0.1.4

* Fix for optional return value in TS

* Tiny fixes

* Example for declaring local options
2021-06-02 12:29:12 +03:00
Dmitry Kurinskiy
378d154ff7
Added bang op to get array items by index (#144) 2021-06-01 20:07:09 +03:00
Dmitry Kurinskiy
58132b8d8b
Try expression added (#132)
* Try expression added

* Increment `baseAquaVersion` due to syntax change.
2021-05-27 14:13:38 +03:00
Dmitry Kurinskiy
450fe4e142
Fixes #86 (#107) 2021-05-04 12:09:27 +03:00
Dmitry Kurinskiy
85cc40fa5e
Wrap every OnTag (topological shift) with Xor (#109) 2021-05-04 11:58:25 +03:00
Dmitry Kurinskiy
231cd2a9d0
Fixes #99: use impossible name for relay (#103) 2021-04-30 11:51:55 +03:00
Dmitry Kurinskiy
53ad29ab31
Config options to omit xor wrapper, relay passing (#105) 2021-04-30 11:43:48 +03:00
Dmitry Kurinskiy
1fc5557ba6
Topology refactoring (#100)
* Topology refactoring

* TransformSpec fixed & improved

* Fixes #98

* Better Par handling

* Introduced Cursor class

* Better exit process for par branch

* Force move to target peer when exiting from a par branch
2021-04-29 14:16:25 +03:00
Dmitry Kurinskiy
27f2912c5f
Streams support (#87)
* #29 going to support streams

* Added StreamName

* StreamName removed

* Streams support works

* Debug println removed

Co-authored-by: Dima <dmitry.shakhtarin@fluence.ai>
2021-04-27 16:59:12 +03:00
Dmitry Kurinskiy
d88b3a561c
Fix using par after xor: xor handled first now (#93)
* Script with crazy wrong output

* Xor can be combined with Par
2021-04-23 17:49:26 +03:00
Dmitry Kurinskiy
7991ab0b4d
Fixes bug with loosing a callback (#92)
* Fixes bug with loosing a callback

* Avoid passing unneeded arrows
2021-04-23 17:15:27 +03:00
Dmitry Kurinskiy
453b95b8ae
Better topology resolution (#89)
* Better topology resolution

* error example

* par added

* revert

* Test fixed
2021-04-23 14:04:21 +03:00
Dmitry Kurinskiy
a5afe1c6fa
Bugfix for ScriptModel (#88)
* Bugfix for ScriptModel

* Println error for unresolved functions
2021-04-23 12:25:21 +03:00
Dima
ca8e3bfa40
Constant expr (#79) 2021-04-22 16:42:08 +03:00
Dmitry Kurinskiy
433b464a36
67 plain air gen (#78)
* Refactoring ForClient to make its parts reusable/recomposable

* Func transformation decomposed into parts

* Improves AIR compilation target
2021-04-20 16:44:06 +03:00
Dmitry Kurinskiy
7512648cd0
69 wrong varnames (#74)
* Bug #69 reproduced in test

* Bug #69 reproduced in a test

* Fixes #47 (allow arg names in service function definitions)

* ServiceModel

* AbilityModel is removed, as it's unused

* Fixes #65: expose %init_peer_id% as a literal

* Removed FuncResolved, as it's not resolved actually

* Fixes #69

* Helpers for func op showing & building

* Compile bug fixed

* Comments

* Removed ScriptModel.enqueue
2021-04-19 16:22:45 +03:00
Dmitry Kurinskiy
e2621f0008
Fixes #68 :fix return using relay (#72)
* Added test & some test routines

* Test usability improvements

* Failing script

* Failing test for #68

* Fix topology in case of a sequence of calls

* Formatting

* Formatting
2021-04-16 20:15:45 +03:00