aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/interpreter-rete
Commit message (Collapse)AuthorAge
* feat(query): left join for data variablesLibravatar Kristóf Marussy2024-04-07
|
* chore: upgrade to Eclipse 2023-12Libravatar Kristóf Marussy2023-12-08
| | | | | | | Updates references to Eclipse in documentation (but IntelliJ is the preferred editor now). Also fixes incompatibilities with the Eclipse compiler.
* refactor(interpreter): aggreagator batchingLibravatar Kristóf Marussy2023-10-26
| | | | | | | | | | | | | Optimize calls to potentially costly aggregators by only extracting the value from a stateful aggregator when it is needed by subsequent RETE nodes. This optimization only works with timeless evaluation and delete-and-rederive evaluation disabled, i.e., only for queries without any recursion. Potentially, it could also be extended to other mailboxes if needed. We replace the BehaviorChangingMailbox of ColumnAggregatorNode with a DefaultMailbox to force update batching. Batched updates only extract the value from the aggregator when it has been already updated with all received tuples.
* refactor(interpreter): communication tracker algorithmLibravatar Kristóf Marussy2023-10-15
| | | | | | | Use a faster algorithm to detect cycles in the RETE network. Only if cycles are detected fall back to the transitive closure algorithm to construct the SCCs and the reduced graph.
* refactor(interpreter): generify RepresentativeElectionAlgorithmLibravatar Kristóf Marussy2023-10-15
| | | | | Let representative election be used in places where IncSCCAlg was used with generic arguments other than Object.
* refactor(interpreter-rete): recipe hashingLibravatar Kristóf Marussy2023-10-14
| | | | | | | | | | | | | | | | | | | | | | Use isomorphism-aware hashing to speed up RecipeRecognizer. Due to possibly cyclic (recursive) recipes, we can't recursively turn recipes into a canonical form. Recipes referring to already canonical (non-recurisve, or recursive and entirely canonicalized) recipes can be hashed, while recursive recipes in the middle of caninicalization still have to be compared more slowly by their contents. To keep the list of recipes compared by contents small, recipes are assigned a hash code whenever possible. We keep the equivalence class IDs for recipes, as there might be hash code clashes, as well as recursive recipes that only later get assigned a hash code. Also fixes a concurrency problem with equivalence class IDs by using an AtomicLong. Also reworks recipe instantiation, as now recipes might be canonicalized before they are instantiated.
* chore: remove VIATRA brandingLibravatar Kristóf Marussy2023-09-16
Rename VIATRA subprojects to Refinery Interpreter to avoid interfering with Eclipse Foundation trademarks. Uses refering to a specific (historical) version of VIATRA were kept to avoid ambiguity.