Skip to content

Avoid dependency on JGraphT #1060

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
odrotbohm opened this issue Feb 21, 2025 · 0 comments
Closed

Avoid dependency on JGraphT #1060

odrotbohm opened this issue Feb 21, 2025 · 0 comments
Assignees
Labels
in: core Core module meta model type: enhancement Major enhanvements, new features
Milestone

Comments

@odrotbohm
Copy link
Member

We currently optionally depend on JGraphT to topologically sort application modules regarding their dependencies to allow iterating over the modules according to their dependency structure. We only need parts of the functionality and — at 1.3 MB size — it adds quite a bit of weight to the runtime footprint. At the same time, it's suboptimal that we have to rely on an optional library to make sure functionality depending on the dependency arrangement induced order works as expected.

We should find a more lightweight alternative or implement the ordering algorithm ourselves.

@odrotbohm odrotbohm added the in: core Core module meta model label Feb 21, 2025
@odrotbohm odrotbohm added this to the 1.4 M2 milestone Feb 21, 2025
@odrotbohm odrotbohm self-assigned this Feb 21, 2025
odrotbohm added a commit that referenced this issue Feb 22, 2025
We now implement the topological sorting of application modules ourselves. Properly recalculate module order after ApplicationModules recreation with shared modules. Make iterator resilient against premature invocation by falling back to the unordered modules.

Cleanup of generated type ignorance.
@odrotbohm odrotbohm added the type: enhancement Major enhanvements, new features label Feb 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: core Core module meta model type: enhancement Major enhanvements, new features
Projects
None yet
Development

No branches or pull requests

1 participant