# Temporary disabling of Stable extension builds in preparation for Slicer 5.8 Release & Visual Studio update

**URL:** <https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207>\
**Category:** Development\
**Created:** [January 22, 2025, 3:55am UTC](https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207 "2025-01-22T03:55:30Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [January 23, 2025, 11:26am UTC](https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207/7 "2025-01-23T11:26:15Z")

</div>

**Update** :

We’ve identified the root cause of the crash occurring after installing binary Python wheels (e.g., ITK wheels). The issue stems from recent wheels being built with the newer `std::string` ABI, while the official Slicer and Python binaries target the _older_ ABI. This mismatch leads to compatibility issues.

To learn more about the Dual ABI, refer to [GCC’s Dual ABI Documentation](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html).

### Proposed Solution

To resolve this, we plan to introduce an option that packages a `_manylinux.py` module specific to the build environment. This module will restrict the latest compatible version of GLIBC, ensuring compatibility with the host system.

For example, adding the following `_manylinux.py` module to the environment ensures compatibility with `manylinux_2_17` or older wheels, avoiding the installation of newer, incompatible wheels like `manylinux_2_28`:

```py
from typing import NamedTuple

class _GLibCVersion(NamedTuple):
    major: int
    minor: int

def manylinux_compatible(tag_major, tag_minor, tag_arch, **_): # PEP 600
    if _GLibCVersion(tag_major, tag_minor) > _GLibCVersion(2, 17):
        return False
    return True

```

This ensures compatible wheels are installed on Ubuntu systems.

### References

- **Dual ABI Documentation** : [https://gcc.gnu.org/onlinedocs/libstdc++/manual/using\_dual\_abi.html](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html)
- **PEP 600: Package Installers** : [https://peps.python.org/pep-0600/#package-installers](https://peps.python.org/pep-0600/#package-installers)
- **Discussion on PEP 600** : [https://discuss.python.org/t/pep-600-text-and-example-code-for-package-installers-section-disagree/55329](https://discuss.python.org/t/pep-600-text-and-example-code-for-package-installers-section-disagree/55329)

**Next Steps**

Later today, we’ll validate this solution by running the full `SlicerMorph` and `SlicerANTs` workflows. Once confirmed, we’ll integrate the fix into Slicer and proceed with the release process.

⚠ For now, Preview and Stable builds **remain** disabled. ⚠

Thank you for understanding. 🙏

cc: @muratmaga

---

_[View the full topic](https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207)._
