48 Commits

Author SHA1 Message Date
InversionSpaces
6be2a3d5da
feat(compiler): Services as abilities [fixes LNG-206] (#873)
* Refactor ServiceSem

* Refactor AbilityIdSem

* Remove tokens from state

* Refactor

* Add mangler

* Fix tests

* Refactor valueToRaw

* ServiceIdTag

* AbilityId -> ServiceId

* Add ServiceType

* Fix defineServiceType

* Refactor resolveArrowDef

* Refactor TypesHelper

* Add ServiceIdTag inlining

* Implement resolution

* Add service as ability passing

* Fix importing services

* Fix cli

* Implement default service

* Remove println

* Fix capture

* Add integration test

* Fix id

* Fix test

* Fix test

* Refactor test

* Do not resolve id

* Refactor FuncArrow creation

* Refactor FuncArrow wrapper creation

* Add named arguments

* Add comment

* ensureIsString -> valueToStringRaw, refactor OnSem

* Resolve services as abilities

* Add name to varNames

* Remove service hack

* Capture services, do not rename captured

* Rename arrows along with values

* Fix CallArrowRaw.map

* Fix unit tests

* Remove service case

* Refactor abilities state

* Propagate rootServiceIds

* Remove unused

* Add comments

* Refactor

* Refactor

* Add test

---------

Co-authored-by: Dima <dmitry.shakhtarin@fluence.ai>
2023-09-15 10:34:21 +02:00
InversionSpaces
443e65e3d8
fix(compiler): Fix closure stream capture [fixes LNG-58] (#857) 2023-09-01 16:05:32 +03:00
InversionSpaces
bf0b51fa5b
fix(compiler): Fix nested abilities [fixes LNG-220] (#852)
* Fix fields gathering

* Remove println

* Add test

* Remove println

* Add comments

* Add comments
2023-08-22 11:53:06 +02:00
Dima
8060695dbb
feat: parseq implementation (fixes LNG-223) (#840)
* parsec implementation

* add test code

* parsec expression

* Refactor

* Refactor

* Add return strategy to on

* Add ExitStrategy

* Add TopologyPath

* Add ExitStrategy.ToRelay

* Handle ToRelay

* Refactor

* Refactor

* Refactor

* Handle OnModel with Relay strategy

* parsec -> parseq

* parsec -> parseq

* Add semantics test

* Add topology tests

* Add comments

---------

Co-authored-by: InversionSpaces <InversionSpaces@vivaldi.net>
2023-08-21 14:26:30 +04:00
Dima
019611a89c
feat(compiler): Structural typing for data and abilities [fixes LNG-215] (#843) 2023-08-18 16:15:20 +03:00
InversionSpaces
a5e9354aeb
feat(compiler): Add equality ops [fixes LNG-217] (#820)
* Add eq ops

* Fixed if

* Fix return

* Fix tests

* Add parser tests

* Fix types, add semantics tests

* Add integration tests

* Add integration test

* Remove comment
2023-08-09 13:38:24 +00:00
Dima
ef4b0143ac
fix(compiler): Runtime error on compilation exported functions with top types [fixes LNG-218] (#822) 2023-08-09 16:21:18 +03:00
Dima
4e3e70f4fc
fix(compiler): Nested abilities [fixes LNG-214] (#816) 2023-07-31 14:40:06 +03:00
InversionSpaces
a5b6102422
feat(compiler): Add boolean algebra [fixes LNG-211] (#814) 2023-07-27 14:11:36 +03:00
Dima
63a9f42e86
feat(compiler): Abilities (#731) 2023-07-18 17:18:33 +00:00
InversionSpaces
b8b0fafda0
feat(compiler): Make on propagate errors [fixes LNG-203] (#788)
* Add fail model

* Make `on` propagate error

* Fix unit tests

* Fix TryTag inlining

* Update XorModel.wrap

* Add comments

* Remove wrapWithXor parameter

* Add unit tests

* Add integration tests

* Add comments

* Fix XorBranch topology
2023-07-12 16:18:47 +03:00
InversionSpaces
c1fe24b04d
feat(compiler): Make topology hop with non-FFI snippet [fixes LNG-125] (#764)
* Remove MakeRes.canon

* Replace noop with hop

* Rewrite join

* Remove JoinModel, fix tests

* Share code between tests

* Pass type in RestrictionTag(Model)

* Fix MakeRes.hop

* Fix wrapping

* Rename vars, add comments

* Fix XorBranch topology

* Fix tests
2023-07-06 12:44:37 +03:00
InversionSpaces
8ba7021cd4
refactor(semantics): Refactor semantics to produce concrete tags [fixes LNG-201] (#776)
* Introduce IfTag, TryTag; Remove XorTag

* Add IfTag, TryTag inlining

* Fix test compilation

* Fix test

* Hack to fix topology

* Support try otherwise syntax

* Add comments

* Refactor diff show

* Handle ParTag.Par in single check, add tests
2023-06-29 16:20:47 +00:00
Dima
339d3a8217
refactor: ArrowInliner refactoring (#777) 2023-06-29 11:43:38 +00:00
InversionSpaces
e22fff7c8a
fix(compiler): Fix incorrect service method renaming [fixes LNG-199] (#757)
* Rename only arrows, not service calls

* Add tests

* Fix comment
2023-06-16 15:05:41 +03:00
InversionSpaces
d6e3ec725c
refactor(compiler): Remove ShadowRaw (#742) 2023-06-14 16:41:38 +03:00
InversionSpaces
f1abd587b7
fix(compiler): Fix closure passing [fixes LNG-92] (#747) 2023-06-14 16:09:50 +03:00
InversionSpaces
c5534a964c
fix(compiler): Fix closure call compilation [fixes LNG-193] (#741) 2023-06-13 12:56:17 +03:00
InversionSpaces
e9c004452e
feat(tracing): Introduce function calls tracing [fixes LNG-169] (#732)
* Introduced MetaModel.CallArrowModel

* Fixed ArrowInlinerSpec

* Implemented trace calls injection

* Propagate TracingConfig

* Add tracing flag to js api

* Use detach instead of xor

* Write tests

* ScalarType -> LiteralType

* Add tests

* Fix after rebase

* Fixed tests

* Add tests

* Remove debug prints

* Clean up and add comments

* Fix issues

* Add tracing flag to js api

* Rename liftString -> quote

* Change literal type

* Use CallServiceModel constructor

* Fix js args

* Fixed tests

* Add tracing option to cli
2023-06-12 15:28:27 +02:00
Dima
ddb758cee0
fix(inline): Nullable value in a nested struct [LNG-160] (#724)
Co-authored-by: InversionSpaces <InversionSpaces@vivaldi.net>
2023-06-01 15:54:19 +00:00
Dima
5f00b1ea8d
fix: ParRes with no children converted to Null log (#699) 2023-04-19 12:14:46 +03:00
Dima
8fa979cd33
feat: Return arrows from functions (#693) 2023-04-14 16:28:17 +03:00
Dima
bb24a63abb
fix: Fix type for functor [fixes LNG-119] (#677) 2023-02-28 10:56:49 +03:00
Dima
00ee8b5312
fix: name uniqueness in stream gate (#676)
* fix name uniqueness in gate

* fix unit test
2023-02-25 12:12:40 +07:00
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
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
Dmitry Kurinskiy
f0cc65e2ad
Fixes LNG-63: introduced ShadowRaw (#528) 2022-06-27 15:54:21 +03:00
Dima
a0805068f3
#499 rename vars in for (#500) 2022-04-26 08:49:28 +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
Dmitry Kurinskiy
ab0990dd72
Capture and apply topology (#451) 2022-03-15 14:52:43 +03:00
Dmitry Kurinskiy
6772c1d0fa
Sugar for collections (#445) 2022-03-03 17:54:45 +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