| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
Also moves model metadata into language-web, since we only use it on the
frontent.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
Make sure contains is parsed as a contextual keyword whenever possible.
The existing cut operator wasn't sufficient for this, so we also add dynamic
precedence to the grammar rule.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Let representative election be used in places where IncSCCAlg was used with
generic arguments other than Object.
|
|
|
|
| |
Use a simpler data structure for constructing simple names.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Make sure we never fall back to reflective EObjectImpl instead of generated
classes when comparing recipes, as the reflective version is much slower.
|
| |
|
| |
|
| |
|
|
|
|
| |
Make sure we do not create conflicting transitions.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Removes VIATRA sources from coverage anaylsis, since those files are maintained
by the VIATRA project.
|
|\ |
|
| |
| |
| |
| | |
sensitive contexts
|
| | |
|
| |
| |
| |
| |
| |
| | |
Also:
- Rename Symbol to Variable
- Make fire for InsertAction with low arity faster
|
| | |
|
| |
| |
| |
| |
| | |
- TransformationActions can be created after creating the model
- equivalence of actions can be checked
|
| | |
|
| |
| |
| |
| |
| | |
Do not close the connection in a background tab if the model generation is still
running, because closing the connection will immediately cancel generation.
|
| |
| |
| |
| |
| |
| | |
Model generation only has to extract the candidate interpretaion, partial
intepretation queries are only needed if they appear in a rule, constraint, or
objective.
|
| | |
|
| | |
|
| |
| |
| |
| | |
The default multiplicity is [0..1].
|
| | |
|
| |
| |
| |
| |
| | |
* Allow scrolling the tab bar.
* Less prominent error text.
|
| |
| |
| |
| |
| | |
If an object has a lower bound of 1, but it is still a multi-object, model
generation can't be finished yet.
|
| | |
|
| |
| |
| |
| | |
"#" should not appear in URI fragments, use "::" instead.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a projection indexer is constructed for a production node, the projection
memory is only populated if changes are being propagated. The cache doesn't get
populated even if changes are flushed afterwards. This not only returns invalid
query results, but also a duplicate deletion exception will be thrown when the
production node tries to delete a tuple from the index memory.
To counteract this issue, we enable update propagation while a matcher (and its
associated indexers) are being created.
|
| | |
|
| |
| |
| |
| |
| | |
* Use LinekdHashMap in delta-based stores to improve iteration performance
* Avoid allocating ObjectCodeImpl
|
| |
| |
| |
| | |
The query engine must be flushed after firing a tranformation activation.
|
|\ \
| | |
| | |
| | | |
partial-interpretation
|
| | | |
|
| | | |
|
| |\ \ |
|
| | | | |
|