# ITK 5.4.6 has been released! Performance, Stability, and Security

**URL:** <https://discourse.itk.org/t/itk-5-4-6-has-been-released-performance-stability-and-security/7756>\
**Category:** Announcements\
**Tags:** itk-releases, python\
**Created:** [May 1, 2026, 8:41pm UTC](https://discourse.itk.org/t/itk-5-4-6-has-been-released-performance-stability-and-security/7756 "2026-05-01T20:41:18Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![matt.mccormick](https://discourse.itk.org/user_avatar/discourse.itk.org/matt.mccormick/32/7_2.png) [@matt.mccormick](https://discourse.itk.org/u/matt.mccormick)\
**Post date:** [May 1, 2026, 8:41pm UTC](https://discourse.itk.org/t/itk-5-4-6-has-been-released-performance-stability-and-security/7756/1 "2026-05-01T20:41:18Z")

</div>

We are pleased to announce the release of [ITK 5.4.6](https://docs.itk.org/en/latest/releases/5.4.6.html)!

ITK 5.4.6 is a maintenance release focused on performance improvements, security fixes, and platform compatibility for this cross-platform, open-source toolkit supporting N-dimensional scientific image analysis with spatially-aware algorithms. Highlights include FFTW SIMD optimizations, a safer NumPy buffer protocol for `itk.Image`, GIL-release support for Python wrapping, a backport of the GDCM CVE-2026-3650 fix, and a wave of stability fixes spanning Bresenham line drawing, the Voronoi diagram generator, IPL image IO, image adaptors, and more. 🥳

## 🔦 Highlights

- Performance:
  - FFTW SIMD codelets are now selected with ABI-guaranteed baselines (SSE/SSE2 on x86\_64, NEON on aarch64), with optional per-CPU introspection at configure time for AVX/AVX2.
  - New `ITK_PYTHON_RELEASE_GIL` CMake option (ON by default) and SWIG `-threads` flag enable Python wrapping to release the GIL during ITK operations.

- Bug Fixes:
  - Backport of the GDCM CVE-2026-3650 fix and a GDCM upstream sync (2026-03-10).
  - Integer-only Bresenham line construction and double-precision endpoint computation in `BresenhamLine`.
  - Fixed infinite loop in `VoronoiDiagram2DGenerator::ConstructDiagram`.
  - Null-check hardening in `IPLCommonImageIO`, value-initialization of singleton instances, zero-check guard in `CumulativeGaussianCostFunction`, and `ImageAdaptor::ComputeOffset` to fix `ImageRegionIterator` support.
  - GDCM `posix_memalign` undefined with MinGW, and Python factory auto-registration of more than two factories.

- Python:
  - PEP 688 buffer protocol on `itk.Image` with safe `np.asarray()` lifetime semantics — arrays remain valid after the source image is deleted.
  - Comprehensive new tests for the buffer protocol and image lifetime across NumPy, PyTorch, and Dask interop.

- Platform Support:
  - Migration of CI runners from retired `windows-2019` to `windows-2022`, including the v142 toolset job and Azure Pipelines.
  - FFTW SIMD detection fix for Windows ARM64 and MSVC.
  - Move of inline `= default` destructors to `.cxx` for 30 exported classes to stabilize the ABI.
  - MINC third-party update (2025-02-24).

### ⚡ FFTW SIMD Performance

ITK 5.4.6 enables FFTW SIMD codelets out-of-the-box. On x86\_64, SSE and SSE2 are enabled by default (ABI-guaranteed); on aarch64, NEON is enabled by default (mandatory in ARMv8). Native (non-cross) builds also probe the build host for AVX and AVX2 via `__builtin_cpu_supports()` so that codelets are turned on only for what the CPU supports. Each option is individually overridable via cache variables such as `-DFFTW_ENABLE_AVX2=OFF`. On Apple M4 hardware, this reduced `BCDTest_rVN4` from ~1446 s to an estimated ~180-360 s.

### 🐍 Safer NumPy Interop for `itk.Image`

`itk.Image` now exports its buffer through PEP 688 (` __buffer__ `, Python 3.12+) and the NumPy v3 ` __array_interface__ ` (Python 3.10-3.11), with explicit reference pinning so that arrays derived from an image stay valid even after the image is garbage-collected:

```python
image = itk.imread("brain.nii.gz")
arr = np.asarray(image)
del image
print(arr[1, 1, 1]) # safe — no crash

```

The new `ITK_PYTHON_RELEASE_GIL` CMake option (default ON) and SWIG `-threads` flag allow ITK calls to release the GIL, improving concurrency for Python users.

## 💾 Download

**Python Packages**

Install [ITK Python packages](https://docs.itk.org/en/latest/learn/python_quick_start.html) with:

```bash
pip install itk

```

**Guide and Textbook**

- [InsightSoftwareGuide-Book1-5.4.6.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightSoftwareGuide-Book1-5.4.6.pdf)
- [InsightSoftwareGuide-Book2-5.4.6.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightSoftwareGuide-Book2-5.4.6.pdf)

**Library Sources**

- [InsightToolkit-5.4.6.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightToolkit-5.4.6.tar.gz)
- [InsightToolkit-5.4.6.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightToolkit-5.4.6.zip)

**Testing Data**

Unpack optional testing data in the same directory where the Library Source is unpacked.

- [InsightData-5.4.6.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightData-5.4.6.tar.gz)
- [InsightData-5.4.6.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightData-5.4.6.zip)

**Checksums and Signatures**

- [InsightToolkit-5.4.6.tar.gz.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightToolkit-5.4.6.tar.gz.asc)

- [InsightToolkit-5.4.6.zip.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightToolkit-5.4.6.zip.asc)

- [InsightData-5.4.6.tar.gz.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightData-5.4.6.tar.gz.asc)

- [InsightData-5.4.6.zip.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/InsightData-5.4.6.zip.asc)

- [MD5SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/MD5SUMS)

- [SHA512SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v5.4.6/SHA512SUMS)

### 👋 Welcome New Contributors

A warm welcome to first-time ITK contributors **Cavan Riley** and **Viacheslav Ustymenko** — thank you for joining the community!

### 🙏 Acknowledgments

Thank you to contributors Viacheslav Ustymenko, Jon Haitz Legarreta Gorroño, Niels Dekker, Bradley Lowekamp, Hans Johnson, Matt McCormick, Vladimir S. FONOV, Cavan Riley, Simon Rit, Dženan Zukić, and the broader ITK community for their code, testing, and documentation efforts.

* * *

### 🗣 What’s Next

**ITK 6.0 Release Candidate 1**

The community is preparing for **ITK 6.0 RC 1** , the first release candidate on the road to ITK 6, featuring:

- Architectural upgrades for contemporary C++ development
- Enhanced template metaprogramming capabilities
- Code modernization for improved readability and maintainability

**5.4 Maintenance Commitment**

We remain dedicated to supporting current users through:

- Regular security and regression patches
- Critical bug resolution
- Platform compatibility updates

**Enjoy ITK!**

* * *

## ITK Changes Since v5.4.5

### Bradley Lowekamp (1):

#### Bug Fixes

- Fix GDCM posix\_memalign undefined with mingw ([5e82819637](https://github.com/InsightSoftwareConsortium/ITK/commit/5e82819637))

### Dženan Zukić (2):

#### Enhancements

- Update CI images from Windows-2019 to Windows-2022 ([28e6e22ef6](https://github.com/InsightSoftwareConsortium/ITK/commit/28e6e22ef6))

#### Platform Fixes

- Fix doc-string of TreeIteratorBase::RemoveChild from Deprecated ([f2c34d66a2](https://github.com/InsightSoftwareConsortium/ITK/commit/f2c34d66a2))

### GDCM Upstream (1):

#### Enhancements

- GDCM 2026-03-10 (dacccb6c) ([a2a9d3919a](https://github.com/InsightSoftwareConsortium/ITK/commit/a2a9d3919a))

### Hans Johnson (12):

#### Enhancements

- Add PEP 688 buffer protocol and fix np.asarray() lifetime safety ([c85d6614b8](https://github.com/InsightSoftwareConsortium/ITK/commit/c85d6614b8))
- Add comprehensive tests for itk.Image buffer protocol and lifetime ([65e3aaca94](https://github.com/InsightSoftwareConsortium/ITK/commit/65e3aaca94))

#### Performance

- Enable FFTW SIMD codelets with per-CPU introspection at configure time ([e202d1963a](https://github.com/InsightSoftwareConsortium/ITK/commit/e202d1963a))
- Backport ABI-guaranteed SIMD baselines for FFTW builds ([a1a983d8a4](https://github.com/InsightSoftwareConsortium/ITK/commit/a1a983d8a4))

#### Bug Fixes

- Fix infinite loop in VoronoiDiagram2DGenerator::ConstructDiagram ([6b157cf47b](https://github.com/InsightSoftwareConsortium/ITK/commit/6b157cf47b))
- Add null checks after ReadHeader in IPLCommonImageIO ([b5b3b0a3c2](https://github.com/InsightSoftwareConsortium/ITK/commit/b5b3b0a3c2))
- Value-initialize singleton instances to avoid indeterminate values ([4dd5e3ea6e](https://github.com/InsightSoftwareConsortium/ITK/commit/4dd5e3ea6e))
- Add zero-check guard in CumulativeGaussianCostFunction ([50b691312e](https://github.com/InsightSoftwareConsortium/ITK/commit/50b691312e))

#### Platform Fixes

- Fix FFTW SIMD detection for Windows ARM64 and MSVC ([418a2c261c](https://github.com/InsightSoftwareConsortium/ITK/commit/418a2c261c))
- Move inline = default destructors to .cxx for 30 exported classes ([1969d37cb5](https://github.com/InsightSoftwareConsortium/ITK/commit/1969d37cb5))
- Update retired windows-2019 CI runner to windows-2022 ([e8708919da](https://github.com/InsightSoftwareConsortium/ITK/commit/e8708919da))

#### Documentation Updates

- Sync spell-check dictionary with main branch ([26b48edf93](https://github.com/InsightSoftwareConsortium/ITK/commit/26b48edf93))

### Matt McCormick (10):

#### Enhancements

- Add ITK\_PYTHON\_RELEASE\_GIL option and SWIG -threads flag ([f876cbd777](https://github.com/InsightSoftwareConsortium/ITK/commit/f876cbd777))
- Bump ITK version to 5.4.6 ([f7ff6ad56d](https://github.com/InsightSoftwareConsortium/ITK/commit/f7ff6ad56d))

#### Bug Fixes

- Remove ‘Utilities/gdcmutfcpp’ from GDCM UpdateFromUpstream.sh ([ad24d70771](https://github.com/InsightSoftwareConsortium/ITK/commit/ad24d70771))
- Backport GDCM CVE-2026-3650 fix ([39f20a913f](https://github.com/InsightSoftwareConsortium/ITK/commit/39f20a913f))

#### Platform Fixes

- Update tool.pixi.project to tool.pixi.workspace ([56d39f8766](https://github.com/InsightSoftwareConsortium/ITK/commit/56d39f8766))
- Update Azure Pipelines Windows image to windows-2022 ([183b3e0f9e](https://github.com/InsightSoftwareConsortium/ITK/commit/183b3e0f9e))
- Update CI ExternalDataVersion from 5.4.3 to 5.4.5 ([08d7f9cb74](https://github.com/InsightSoftwareConsortium/ITK/commit/08d7f9cb74))

#### Documentation Updates

- ITK 5.4.5 release notes ([cbce2e7973](https://github.com/InsightSoftwareConsortium/ITK/commit/cbce2e7973))
- Do not upgrade CMake in emulated Linux ARM build ([f3aae0f198](https://github.com/InsightSoftwareConsortium/ITK/commit/f3aae0f198))
- Update Python Xcode version to 16.2 for macos-15 runners ([acd395990d](https://github.com/InsightSoftwareConsortium/ITK/commit/acd395990d))

### Niels Dekker (2):

#### Enhancements

- Add `ComputeIndex()` member function to ImageConstIterator ([a9fa3d935b](https://github.com/InsightSoftwareConsortium/ITK/commit/a9fa3d935b))

#### Bug Fixes

- Add ImageAdaptor::ComputeOffset, to fix ImageRegionIterator support ([5ca44c9bc4](https://github.com/InsightSoftwareConsortium/ITK/commit/5ca44c9bc4))

### Simon Rit (1):

#### Bug Fixes

- Allow auto registering more than two factories in Python modules ([b68b38679a](https://github.com/InsightSoftwareConsortium/ITK/commit/b68b38679a))

### Viacheslav Ustymenko (2):

#### Bug Fixes

- Implement integer-only Bresenham for BuildLine(Index, Index) ([ac5652bb68](https://github.com/InsightSoftwareConsortium/ITK/commit/ac5652bb68))
- BresenhamLine - use double precision floats for ending index computation ([2003fb4005](https://github.com/InsightSoftwareConsortium/ITK/commit/2003fb4005))

### Vladimir S. FONOV (1):

#### Enhancements

- MINC 2025-02-24 (3b8d9c7e) ([a32b73adbc](https://github.com/InsightSoftwareConsortium/ITK/commit/a32b73adbc))
