Skip to content

Update to microarch 0.3.0 and modernize compiler compatibility - #3

Merged
fpelliccioni merged 1 commit into
masterfrom
update-microarch-0.3.0
Nov 24, 2025
Merged

Update to microarch 0.3.0 and modernize compiler compatibility#3
fpelliccioni merged 1 commit into
masterfrom
update-microarch-0.3.0

Conversation

@fpelliccioni

Copy link
Copy Markdown
Contributor

Summary

This PR updates the project to use microarch 0.3.0 and migrates from the legacy information erasure pattern in package_id() to the modern compatibility() method recommended by Conan 2.0.

Changes

1. Dependencies

  • ✅ Bump version to 4.1.0
  • ✅ Update microarch from 0.2.1 to 0.3.0

2. Compiler Support

Now supporting:

  • GCC: 13, 14, 15
  • Clang: 13-20
  • Apple Clang: 13-18

3. New ISA Extensions (from microarch 0.3.0)

GCC 14 extensions:

  • AVX-VNNI-INT16, AVX10.1 (256/512-bit variants)
  • SHA-512, SM3, SM4 cryptographic extensions
  • APX_F (Advanced Performance Extensions)
  • USERMSR (user mode MSR access)

GCC 15 extensions:

  • AVX10.2
  • AMX extensions: FP8, TF32, transpose, AVX512, MOVRS

4. Migration to Modern Compatibility Pattern

Before (information erasure):

# package_id() - grouped all GCC 13+ together
if v >= "13":
    self.info.settings.compiler.version = "GCC >= 13"

After (compatibility method):

# compatibility() - forward compatibility fallback
def compatibility(self):
    if compiler_version == "15":
        return [{"settings": [("compiler.version", "14")]},
                {"settings": [("compiler.version", "13")]}]

Benefits:

  • ✅ Each compiler version generates its own package ID
  • ✅ Newer versions can fallback to older binaries when needed
  • ✅ Follows Conan 2.0 best practices
  • ✅ Better cache efficiency without losing binary specificity

Testing

Tested with GCC 15 on GitHub Actions (current CI setup).

References

- Bump version to 4.1.0
- Update microarch dependency from 0.2.1 to 0.3.0
- Migrate from package_id() information erasure to compatibility() method
- Add modern compiler version compatibility for GCC 13-15, Clang 13-20, Apple Clang 13-18

This update brings support for new x86 ISA extensions from GCC 14/15,
including AVX10.1, AVX-VNNI-INT16, SHA-512, SM3, SM4, APX_F, USERMSR,
and AMX extensions (FP8, TF32, transpose, AVX512, MOVRS).

The new compatibility() method implements forward compatibility, allowing
newer compiler versions to fallback to binaries built with older versions
when exact matches aren't available, while preserving distinct package IDs
for each compiler version. This follows Conan 2.0 best practices.
@fpelliccioni
fpelliccioni merged commit dee4745 into master Nov 24, 2025
2 checks passed
@fpelliccioni
fpelliccioni deleted the update-microarch-0.3.0 branch November 24, 2025 11:37
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.

1 participant