ITK 6.0 Beta 2 has been released!
Published on March 25, 2026 by Matthew McCormick

We are excited to announce the second beta release of ITK 6.0! This release introduces **modern CMake module targets** — a major build system modernization that makes it easier than ever to link ITK into your projects. Alongside this headline feature, Beta 2 delivers continued C++ modernization, Python enhancements, performance improvements, and expanded agentic engineering practices. As a beta release, we actively encourage the community to test and provide feedback as we approach the first Release Candidate. 🚀 ✨ 🎉

🔦 Highlights
-------------

### CMake Module Targets

The most significant change in Beta 2 is the introduction of **modern CMake interface library targets** for every ITK module. Each module now exports a namespaced target — for example, `ITK::ITKCommonModule`, `ITK::ITKImageGradientModule`, or `ITK::ITKThresholdingModule` — enabling clean, explicit dependency management with proper transitive dependency resolution.

Pre-defined **factory meta-modules** simplify linking for common IO use cases:

- `ITK::ITKImageIO` — all image IO modules (JPEG, PNG, NIFTI, DICOM, etc.)
- `ITK::ITKMeshIO` — all mesh IO modules
- `ITK::ITKTransformIO` — all transform IO modules

**Before (ITK 5):**

```cmake
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})

add_executable(HelloWorld HelloWorld.cxx)
target_link_libraries(HelloWorld ${ITK_LIBRARIES})
```

**After (ITK 6):**

```cmake
find_package(ITK REQUIRED)
itk_generate_factory_registration()

add_executable(HelloWorld HelloWorld.cxx)
target_link_libraries(HelloWorld ITK::ITKCommonModule)
```

For projects that read images, simply link the IO meta-module:

```cmake
find_package(ITK REQUIRED)
itk_generate_factory_registration()

add_executable(MyFilter MyFilter.cxx)
target_link_libraries(
  MyFilter
  PRIVATE
    ITK::ITKImageGradientModule
    ITK::ITKImageIO
)
```

`UseITK.cmake` (`${ITK_USE_FILE}`) is now **deprecated** in favor of these interface library targets. ITK can also be consumed via CMake `FetchContent`, illustrated in [the new HelloFetchITK example](https://github.com/InsightSoftwareConsortium/ITK/tree/main/Examples/HelloFetchITK).

For full migration details, see the **[ITK 6 Migration Guide](https://github.com/InsightSoftwareConsortium/ITK/blob/main/Documentation/docs/migration_guides/itk_6_migration_guide.md)** — also a useful reference for both humans and AI agents working with ITK projects.

We especially welcome feedback on the CMake module targets during this beta period. Please report any issues you encounter with the new build system on [GitHub](https://github.com/InsightSoftwareConsortium/ITK/issues).

### C++ Modernization

- **`VariableLengthVector`** gains a `std::vector`-like interface: `front()`, `back()`, `data()`, and a `(length, value)` constructor
- **`FixedArray`** gains `front()`, `back()`, and `empty()` member functions
- **`ImageConstIterator::ComputeIndex()`** added as the replacement for `GetIndex()` (now deprecated), with performance benefits from avoiding redundant offset table lookups
- New **`itk::MakeIndexRange`** utility functions for convenient index-space iteration
- **`SobelOperator`** extended to N-D with corrected 3D coefficients and a `UseLegacyCoefficients` option
- **`NumericTraits::GetLength`** is now `constexpr`
- Replaced `vnl/vnl_sample.h` with standard `<random>` across tests
- Expanded use of `constexpr`, `[[nodiscard]]`, aggregate initialization, and range-based `for` loops

### Python Enhancements

- **Python 3.10+** is now required for wrapping
- New **`ITK_PYTHON_RELEASE_GIL`** build option enables GIL release during ITK filter execution
- Updated bundled **pygccxml** to v3.0.2

### Performance Improvements

- Tuned `ImageRegionRange` copy used in `CastImageFilter`
- `IndexRange` iterators made significantly faster via `m_Position` data member
- `ImageRegionRange` bypasses `OffsetTable[0]` (which is always 1)
- Prefer "with index" iterators when the index is used in each iteration, avoiding redundant `ComputeIndex()` calls

### Third-Party Library Updates

- GDCM 3.2.2, double-conversion 3.4.0, Expat, VXL, NrrdIO, CastXML v2026.01.30

### Platform & CI Updates

- Updated CI to Windows 2022 images
- Added **Linux ARM** CI testing
- Migrated to **macOS 15** runners (Apple Silicon)
- Support building with **system Eigen3 >= 5**
- New **`ITK_FREEZE_REMOTE_MODULES`** option to prevent remote module updates during build

### Remote Module Updates

- **CudaCommon v2.0.0** with `__cuda_array_interface__` support for interoperability with CuPy and PyTorch
- **RTK** major updates: new Python applications, CUDA improvements, spectral CT documentation
- Remote modules updated for CMake modernization (`itk_module_add_library`)

### Agentic Engineering

ITK continues to advance its [agentic engineering practices](https://github.com/InsightSoftwareConsortium/ITK/releases/tag/v5.4.5), improving the developer experience with agent-friendly workflows, better CI, and review agents. In this release, `copilot-swe-agent[bot]` contributed the GIL release feature, NumericLocale GoogleTest coverage, bug fixes for `imread` and locale-dependent NRRD parsing, and more. The `AGENTS.md` guide and GitHub Copilot setup workflow continue to be refined.

Now is as great a time as ever to [contribute to ITK](https://docs.itk.org/en/latest/contributing/index.html) and learn from an active and friendly community of experienced medical imaging professionals.

💾 Download
-----------

**Python Packages**

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

```bash
pip install --pre --upgrade itk
```

**Note:** Use `--pre` flag to install beta releases.

**Guide and Textbook**

- [InsightSoftwareGuide-Book1-6.0b02.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightSoftwareGuide-Book1-6.0b02.pdf)
- [InsightSoftwareGuide-Book2-6.0b02.pdf](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightSoftwareGuide-Book2-6.0b02.pdf)

**Library Sources**

- [InsightToolkit-6.0b02.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightToolkit-6.0b02.tar.gz)
- [InsightToolkit-6.0b02.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightToolkit-6.0b02.zip)

**Testing Data**

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

- [InsightData-6.0b02.tar.gz](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightData-6.0b02.tar.gz)
- [InsightData-6.0b02.zip](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightData-6.0b02.zip)

**Checksums and Signatures**

- [InsightToolkit-6.0b02.tar.gz.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightToolkit-6.0b02.tar.gz.asc)
- [InsightToolkit-6.0b02.zip.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightToolkit-6.0b02.zip.asc)

- [InsightData-6.0b02.tar.gz.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightData-6.0b02.tar.gz.asc)
- [InsightData-6.0b02.zip.asc](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/InsightData-6.0b02.zip.asc)

- [MD5SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/MD5SUMS)
- [SHA512SUMS](https://github.com/InsightSoftwareConsortium/ITK/releases/download/v6.0b02/SHA512SUMS)


📖 Migration Guide
------------------

For detailed guidance on migrating existing code to ITK 6.0, please consult the [ITK 6 Migration Guide](https://github.com/InsightSoftwareConsortium/ITK/blob/main/Documentation/docs/migration_guides/itk_6_migration_guide.md). Key changes in Beta 2 include:

- Modern CMake interface library targets replacing `UseITK.cmake`
- Python 3.10+ requirement for wrapping
- `ImageConstIterator::ComputeIndex()` replacing `GetIndex()`
- GIL release option for Python multithreading


### 🙏 Acknowledgments

Thank you to the **22 contributors** who made ITK 6.0 Beta 2 possible!

We extend a special welcome to our **5 new contributors**: **Cavan Riley**, **Yu-An Chen**, **Axel Garcia**, **Michael Cho**, and **nslay**. Thank you for joining the ITK community!

We are grateful for Axel Garcia, Ben Boeckel, Brad King, Bradley Lowekamp, Cavan Riley, Cyril Mory, Dave Chen, Davis Marc Vigneault, Dženan Zukić, Hans Johnson, Jon Haitz Legarreta Gorroño, Lucas Gandel, Matt McCormick, Michael Cho, Niels Dekker, nslay, Paul Elliott, Sean McBride, Simon Rit, Tom Birdsong, Vladimir S. FONOV, Yu-An Chen, and the entire ITK community for their code contributions, testing, documentation efforts, and invaluable feedback.

***

### 🗣️ What's Next

**ITK 6.0 Release Candidate 1**

Following community testing and feedback on Beta 2, the next ITK 6 release will be the **first Release Candidate**. Please test the beta — especially the new CMake module targets — in your workflows and report any issues.

**ITK 5.4 Long-Term Support**

ITK 5.4 will continue to receive maintenance updates as a long-term support (LTS) release, providing:

- Critical security patches
- Bug fixes for production environments
- Full support for Intel macOS
- Backward compatibility for existing applications

**Community Feedback**

We actively welcome your feedback on ITK 6.0 Beta 2! Please report issues on [GitHub](https://github.com/InsightSoftwareConsortium/ITK/issues) or the [ITK Discourse forum](https://discourse.itk.org/). Feedback on the CMake module targets is especially valuable as we finalize this major change for the Release Candidate.

**Enjoy ITK!**