Skip to content

Compose SemVer compatible interfaces#198

Draft
fibonacci1729 wants to merge 1 commit intomainfrom
compose-semver
Draft

Compose SemVer compatible interfaces#198
fibonacci1729 wants to merge 1 commit intomainfrom
compose-semver

Conversation

@fibonacci1729
Copy link
Collaborator

@fibonacci1729 fibonacci1729 commented Feb 17, 2026

This fixes a long-standing issue with wac around composing (or plugging) interfaces that are semver compatible. Previously interface names needed to match exactly ignoring the semver constraints encoded into the interface id. This PR implements a semver compatibility check between interface id to ensure they are on a compatible semver track before merging/composing.

Additionally, type aggregation has been updated to unify and merge interfaces that are semver compatible. Previously it was possible to encode a component that included foo:bar/baz@0.2.0 and foo:bar/baz@0.2.1. With these updates to type aggregation, these interfaces would be merged into foo:bar/baz@0.2.1.

Note: I made use of GitHub Copilot in implementing this but have written tests and manually verified across a few different examples that this works.

@fibonacci1729 fibonacci1729 force-pushed the compose-semver branch 2 times, most recently from 0ad5189 to ff1db9e Compare February 18, 2026 20:45
Signed-off-by: Brian Hardock <brian.hardock@fermyon.com>
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.

Encoding of import/export names should condense semver-compatible names

1 participant

Comments