Skip to content

feat!: add a reactive engine (#5066)#5131

Open
S-furi wants to merge 20 commits intoAlchemistSimulator:masterfrom
S-furi:feat/reactive-engine
Open

feat!: add a reactive engine (#5066)#5131
S-furi wants to merge 20 commits intoAlchemistSimulator:masterfrom
S-furi:feat/reactive-engine

Conversation

@S-furi
Copy link
Contributor

@S-furi S-furi commented Feb 13, 2026

No description provided.

@mergify
Copy link
Contributor

mergify bot commented Feb 13, 2026

Hi @S-furi! 👋
This pull request has conflicts 😖
Could you fix it? 🔧
Thank you! 🙏

@S-furi
Copy link
Contributor Author

S-furi commented Feb 13, 2026

@DanySK I have rebased master and resolved conflicts, now we have conflicts in this branch (I guess we will force push?). Do you need something else from my side?

@DanySK DanySK changed the base branch from feat/reactive-engine to master February 14, 2026 21:05
@DanySK DanySK changed the title chore(reactive-engine): rebase master and solve conflicts feat!: add a reactive engine (#5066) Feb 14, 2026
@DanySK
Copy link
Member

DanySK commented Feb 14, 2026

@S-furi I changed the base to master, I still see conflicts

S-furi and others added 20 commits February 15, 2026 15:46
# Conflicts:
#	.github/workflows/build-and-deploy.yml
#	.github/workflows/update-ancillary-files.yml
#	CHANGELOG.md
#	dokka-cache/ch.qos.logback/logback-classic/1.5.21.list
#	dokka-cache/ch.qos.logback/logback-classic/1.5.22.list
#	dokka-cache/ch.qos.logback/logback-classic/1.5.26.list
#	dokka-cache/de.flapdoodle.embed/de.flapdoodle.embed.mongo/4.21.0.list
#	dokka-cache/de.flapdoodle.embed/de.flapdoodle.embed.mongo/4.22.0.list
#	dokka-cache/de.flapdoodle.embed/de.flapdoodle.embed.mongo/4.24.0.list
#	dokka-cache/it.unibo.alchemist/alchemist-api/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-api/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-api/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-cognitive-agents/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-cognitive-agents/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-cognitive-agents/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-composeui/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-composeui/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-composeui/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-engine/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-engine/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-engine/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-euclidean-geometry/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-euclidean-geometry/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-euclidean-geometry/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-full/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-full/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-full/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-graphql-surrogates/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-graphql-surrogates/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-graphql-surrogates/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-graphql/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-graphql/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-graphql/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-implementationbase/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-implementationbase/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-implementationbase/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-biochemistry/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-biochemistry/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-biochemistry/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-protelis/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-protelis/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-protelis/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-sapere/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-sapere/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-incarnation-sapere/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-loading/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-loading/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-loading/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-maintenance-tooling/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-maintenance-tooling/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-maintenance-tooling/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-maps/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-maps/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-maps/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-physics/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-physics/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-physics/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-sapere-mathexp/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-sapere-mathexp/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-sapere-mathexp/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-smartcam/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-smartcam/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-smartcam/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-swingui/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-swingui/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-swingui/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-test/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-test/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-test/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-ui-tooling/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-ui-tooling/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-ui-tooling/42.3.32.list
#	dokka-cache/it.unibo.alchemist/alchemist-web-renderer/42.3.18.list
#	dokka-cache/it.unibo.alchemist/alchemist-web-renderer/42.3.22.list
#	dokka-cache/it.unibo.alchemist/alchemist-web-renderer/42.3.32.list
#	gradle/libs.versions.toml
#	package-lock.json
#	package.json
#	settings.gradle.kts

# Conflicts:
#	alchemist-engine/src/main/kotlin/it/unibo/alchemist/core/Engine.kt
…l callback

Now the "laziness" concept is applied to dervied observables too.
For actions in general, it is better to use an imperative approach and retrieve the current neighborhood instead of having an up-to-date neighborhood version stored locally.
…ency graph

fix: remove obsolete reactive engine loading
chore(engine): use explicit synchronisation instead of thread contexts
This idea is borrowed by Androidx, where by means of Lifecycle state machines we are able to bound the lifecycle of the dependencies to the lifecycle of the owner (i.e. the registrant), properly disposing and releasing observers references withtout using weak references, hence not impacting too much negatively performance.
@S-furi S-furi force-pushed the feat/reactive-engine branch from f580eb3 to a5244d7 Compare February 15, 2026 14:59
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants