# VTK 9.7 Release Notes

Changes made since VTK 9.6.2 include the following.

---
<!-- sphinx-exclude-start -->

<!-- mtoc-start -->

* [New Features](#new-features)
  * [Build](#build)
  * [Core](#core)
  * [DataModel](#datamodel)
  * [Filters](#filters)
  * [I/O](#io)
  * [Interaction](#interaction)
  * [Rendering](#rendering)
  * [WebAssembly](#webassembly)
  * [Python](#python)
  * [ThirdParty](#thirdparty)
* [Changes](#changes)
  * [Build](#build-1)
  * [Core](#core-1)
  * [DataModel](#datamodel-1)
  * [Filters](#filters-1)
  * [I/O](#io-1)
  * [Interaction](#interaction-1)
  * [Rendering](#rendering-1)
  * [WebAssembly](#webassembly-1)
  * [Python](#python-1)
* [Fixes/improvements](#fixesimprovements)
  * [Core](#core-2)
  * [Filters](#filters-2)
  * [I/O](#io-2)
  * [Interaction](#interaction-2)
  * [Rendering](#rendering-2)
  * [WebAssembly](#webassembly-2)
* [Deprecations/Removals](#deprecationsremovals)
* [Updates](#updates)
* [Closed Issues (111 total)](#closed-issues-111-total)

<!-- mtoc-end -->

<!-- sphinx-exclude-end -->
---

```{contents} Table of Contents
:depth: 2
:local:
:backlinks: none
```

## New Features

### Build

* **PCH Support**
Added PCH support in the build, which can be toggled using the `VTK_USE_PCH` option.
([Author notes](9.7/add_pch_option_in_build.md))

* **Improve JPEG performances using SIMD**
libjpeg-turbo can now be compiled with SIMD extensions via `VTK_JPEG_ENABLE_SIMD` option for better performance.

* **CMake Support for Wayland**
FindWAYLAND.cmake enables straightforward building with Wayland support via `VTK_USE_Wayland` option.
([Author notes](9.7/hardware-windows-and-wayland.md))

### Core

* **vtkGetConstObjectMacro**
VTK now provides `vtkGetConstObjectMacro` in `vtkSetGet.h` to generate const-correct getter methods for `vtkObject` member variables.
([Author notes](9.7/add-vtkGetConstObjectMacro.md))

* **vtkAbstractArray: Add GetCapacity(), ReserveTuples(), and ReserveValues()**
New methods clarify array storage semantics. `GetSize()`, `Resize()`, and `Allocate()` are now deprecated in favor of clearer semantics matching `std::vector` behavior.
([Author notes](9.7/add-vtkAbstractArray-reserve-and-capacity.md))

* **Add SetBuffer() for AOS and SOA Data Array Templates**
`vtkAOSDataArrayTemplate` and `vtkSOADataArrayTemplate` now support `SetBuffer()` for zero-copy buffer transfers; `BufferChangedEvent` fires on buffer reallocation.
([Author notes](9.7/add-setbuffer-to-data-arrays.md))

* **vtkWeakPtr: Thread-safe weak references**
New `vtkWeakPtr<T>` class provides thread-safe weak references to `vtkObjectBase` instances, complementing the non-thread-safe `vtkWeakPointer`.
([Author notes](9.7/add-vtkWeakPtr.md))

* **vtkCollection refactor to use std::vector**
`vtkCollection` now uses `std::vector` instead of linked list, improving performance; `vtkCollectionElement` and some protected members removed.
([Author notes](9.7/vtkCollection-refactor-to-use-stdvector.md))

* **vtkCollection: Add support for range-based for loops**
`vtkCollection` now supports C++11 range-based for loops; `vtkCollectionIterator` and `vtkCollectionSimpleIterator` are deprecated.
([Author notes](9.7/vtkCollection-add-support-for-range-based-for-loops.md))

* **vtkCollection now supports Python sequence protocol**
`vtkCollection` subclasses now support `len()`, indexing, membership testing, and Pythonic mutation methods (`append`, `insert`, `remove`, `clear`).
([Author notes](9.7/vtkCollection-sequence-protocol.md))

* **vtkAbstractTransform can update attribute only**
`vtkAbstractTransform` now allows transforming only data arrays (normals/vectors) without forcing geometry transformation via new virtual methods.

* **Add new AllToAllVVoidArray method in vtkCommunicator**
`AllToAllVVoidArray` from MPI is now available in `vtkCommunicator` for distributing variable-size data across all processes.

### DataModel

* **Implicit Arrays with NumPy-Compatible Python Mixins**
All implicit array types (`vtkAffineArray`, `vtkCompositeArray`, `vtkConstantArray`, `vtkIndexedArray`, `vtkStridedArray`, `vtkStructuredPointArray`) now provide NumPy-compatible mixins supporting lazy arithmetic, efficient reductions, and zero-copy operations without materialization.
([Author notes](9.7/numpy-compatible-array-mixins.md))

* **vtkBuffer Python Integration and NumPy Memory Safety**
`vtkBuffer` now provides full buffer protocol support for zero-copy NumPy views; `BufferChangedEvent` detects stale arrays.
([Author notes](9.7/vtkBuffer-in-python.md))

* **Dataset attribute property setters and pandas/xarray conversion**
Dataset objects now support `point_data`/`cell_data` property setters accepting dictionaries; `FieldDataBase` provides `to_pandas()`, `from_pandas()`, `to_xarray()`, `from_xarray()`.

* **Pythonic APIs for vtkCellArray, vtkPoints, and vtkUnstructuredGrid**
`vtkCellArray`, `vtkPoints`, and `vtkUnstructuredGrid` now support Pythonic constructors accepting NumPy arrays or Python lists with improved string representations.

* **vtkAMRBox::Add API**
`vtkAMRBox` now provides API to add multiple boxes together, growing to contain all provided boxes.

* **Improved vtkCellGrid support in data model and filters**
`vtkDataObject::GetAttributesAsFieldData`, `vtkAttributeDataToTableFilter` support, and `vtkCellGridSummaryInformationQuery` added.
([Author notes](9.7/vtkCellGrid-improvements.md))

### Filters

* **Add vtkAMRContourFilter**
A new filter computes perfectly watertight contours on `vtkOverlappingAMR` by creating interfaces between non-refined and refined grids of an AMR.
([Author notes](9.7/add-amr-contour-filter.md))

  |Rough face | Refined face | Interface face |
  |:--:|:--:|:--:|
  |[image](imgs/9.7/add-amr-contour-filter_rough.png) | [image](imgs/9.7/add-amr-contour-filter_refined.png) | [image](imgs/9.7/add-amr-contour-filter_interface.png) |


* **Geometry and Feature Edges Dispatcher Filters**
Two new dispatcher filters (`vtkGeometryFilterDispatcher` and `vtkFeatureEdgesDispatcher`) provide unified geometry extraction and feature edge detection across all VTK data types.
([Author notes](9.7/add-geometry-and-feature-edges-dispatchers.md))

* **Add vtkConvexHull filter**
New `vtkPointSetAlgorithm` computes convex hulls in 1/2/3D with O(n), O(n log n), or O(n log n) average complexity respectively.

* **vtkHilbertCurveSorter: Space-Filling Curve Ordering**
New filter sorts data points along a Hilbert curve for locality-preserving space-filling curve ordering.

* **vtkJumpAndWalkCellLocator: A new cell locator based on Jump and Walk algorithm**
New `vtkAbstractCellLocator` subclass implementing jump-and-walk algorithm; `vtkFindCellStrategy` classes deprecated.
([Author notes](9.7/add-vtkJumpAndWalkCellLocator.md))

* **Add vtkPTemporalPathLineFilter for partitioned dataset support**
Extends `vtkTemporalPathLineFilter` with `vtkPartitionedDataSet` support and parallel selection allgather.

* **Add vtkSurfaceNetsAtlas**
New filter exposes SurfaceNets output as queryable label atlas with regions and patches; extensive API for post-processing.
([Author notes](9.7/add-vtkSurfaceNetsAtlas.md))

* **Voronoi Framework**
New parallel 2D/3D Voronoi tessellation and Delaunay triangulation framework with `vtkVoronoiFlower2D/3D` and `vtkGeneralizedSurfaceNets3D` filters.
([Author notes](9.7/add-voronoi-framework.md))

### I/O

* **CanReadFile support**
Extended `CanReadFile` support to 22 readers including `vtkDataSetReader`, `vtkXMLReader`, `vtkSTLReader`, `vtkGLTFImporter`, and more.

* **Added an IFC reader based on IfcOpenShell library**
New `vtkIFCReader` imports Industry Foundation Classes (BIM) data, converting parametric surfaces to meshes using OpenCascade.

* **CGNS Polyhedron Flip Face Orientation**
`vtkCGNSReader` now has `FlipFaceNormals` option to correct inconsistent face winding in polyhedral datasets.

* **OBJ reader/writer RGB/RGBA color array support**
`vtkOBJReader` now reads color data from OBJ files; `vtkOBJWriter` can write color arrays when manually configured.

* **PLY reader/writer texture coordinates (s, t) support**
`vtkPLYReader` now reads (s, t) texture coordinates; `vtkPLYWriter` supports `SetTextureCoordinatesNameToST`.

* **vtkGLTFImporter: Detect binary stream automatically**
`vtkGLTFImporter` now automatically detects binary streams; `StreamIsBinary` property deprecated.

* **vtkGLTFExporter: Export object names to glTF files**
`vtkGLTFExporter` now uses actor object names for mesh and node names in exported glTF files.

* **NanoVDB writer**
New `vtkNanoVDBWriter` exports `vtkImageData` to NanoVDB file format.

* **VTKHDF: Add support for dataset attributes**
VTKHDF now supports dataset attributes (normals, scalars, global ids, etc.) via HDF5 'Attribute' field; version bumped to 2.6.

* **vtkRectilinearGrid & vtkStructuredGrid support in VTKHDF**
VTKHDF specification now supports Rectilinear and Structured Grids with both simple and time-dependent data.

* **vtkMPASReader: Read primary grid from MPAS**
[Comparison of primary and dual grids in MPAS](imgs/9.7/mpas-grids.jpg)
`vtkMPASReader` now supports `UsePrimaryGrid` option to read Voronoi primary grid instead of Delaunay dual grid. ([Author notes](9.7/mpas-primary-grid.md))

* **vtkFidesReader supports reading from Conduit nodes**
`vtkFidesReader` now allows passing in-memory Conduit nodes directly, bypassing the filesystem entirely. Supports both C++ and Python interfaces with automatic reference counting. ([Author notes](9.7/iofides-supports-conduit.md))

* **New vtkTestUtilities API to test data against file**
`vtkTestUtilities::CompareWithFile()` and `RegressionTest()` provide easy VTKHDF data comparison; writes baseline on failure.

### Interaction

* **Camera Manipulators Enhanced**
VTK now provides a simpler way to bind different kinds of camera movement to a combination of mouse button and modifier keys using `vtkInteractorStyleManipulator`.
([Author notes](9.7/add-camera-manipulators.md))

* **Widget reference tracking**
Interactor now maintains references to `vtkInteractorObserver` widgets when `TrackInteractorObserverInstances` enabled; all VTK widgets updated.

* **Add zSpace custom stylus events**
zSpace module now supports custom stylus events via `vtkZSpaceSDKManager` configuration; public event handlers removed.

* **vtkCameraOrientationWidget supports rotating about CenterOfRotation**
`vtkCameraOrientationWidget` now respects the center of rotation provided by the associated interactor style. A new `UseCenterOfRotation` property (default `false`) controls this: when disabled (legacy default) the widget rotates the camera about its focal point, and when enabled it rotates about the interactor style's center of rotation (`vtkInteractorStyle::GetCenterOfRotation`).

### Rendering

* **Add skybox blur capability**
`vtkRenderer` now supports skybox blurring via `SetSkyboxBlurEnabled()` and `SetSkyboxBlurRadius()`.

  [skybox_blur_image](imgs/9.7/add-skybox-blur-image.png)

* **Add skybox rendering support in WebGPU**
WebGPU backend now supports skybox rendering with cube map textures and Float32Filterable feature for HDR.

* **ANARI material library support**
Unified `vtkRenderMaterialLibrary` base class with `vtkANARIMaterialLibrary` and `vtkOSPRayMaterialLibrary` implementations.
([Author notes](9.7/anari-materials-library-support.md))

* **macOS now supports corner resize mouse cursors**
`vtkCocoaRenderWindow` and `vtkCocoaHardwareWindow` now support corner resize cursors on macOS 15 Sequoia.

* **Architectural Update: Hardware Window, Wayland, and WebGPU**
Major architectural overhaul separating graphics from windowing via `vtkHardwareWindow`; native Wayland, WebGPU, Metal support added.
([Author notes](9.7/hardware-windows-and-wayland.md))

* **Support 16-bit Textures on GLES 3.0 and WebAssembly**
Comprehensive 16-bit texture support with GL_EXT_texture_norm16 detection and GPU-assisted conversion strategies.
([Author notes](9.7/volume-rendering-16bit-wasm.md))

* **WebGPU Lighting and Coincident Topology Support**
WebGPU backend now supports all VTK light types and coincident topology depth offsets for z-fighting resolution.

* **vtkBatchedLabeledDataMapper: Implementation**
New backend-agnostic `vtkBatchedLabeledDataMapper` with glyph atlas batching; `vtkFastLabeledDataMapper` deprecated.
([Author notes](9.7/vtkBatchedLabeledDataMapper-implementation.md))

* **vtkAxis: Vertical labels support**
`vtkAxis` now supports vertical label orientation via `SetVerticalLabels()`.

* **vtkAxis: Avoid overlapping labels**
`vtkAxis` now supports `SetOverlappingLabels(false)` to prevent label overlap.

### WebAssembly

* **Add WebXR Module**
New `Rendering/WebXR` module provides VR/AR support on web via WebXR API with Emscripten compilation.

* **Use HTML canvas in VTK.wasm without id**
`specialHTMLTargets` mapping allows interfacing HTML canvas elements without id attributes.

* **Session management: Print Objects To String**
`vtkStandaloneSession` now supports printing VTK object information to strings in WASM; JavaScript API updated.

* **Add methods to clean up observers in vtkSession**
`vtkSession` C API now provides `UnObserveAll` methods for observer cleanup; exposed in WASM session interface.

### Python

* **Look up algorithms in a Pipeline by object_name**
`Pipeline` now supports `pipeline[name]` lookup to find algorithms by `SetObjectName()` without holding references.

* **Dictionary interface for vtkDataArraySelection**
`vtkDataArraySelection` now supports a Python dictionary interface for getting, setting, and deleting array enable/disable states using standard dictionary syntax (`sel["Pressure"] = True`).
([Author notes](9.7/pythonic-array-selection.md))

### ThirdParty

* **Add a Conduit module**
`VTK::conduit` module allows external Conduit dependency; `ORDER_DEPENDS` enforces consistency with `VTK::catalyst`.

## Changes

### Build

* **Name targets after library names**
VTK module targets are now named after their library names (e.g., vtkCommonCore) to avoid conflicts with vendored dependencies.

* **vtkModuleWrapPython renames Python module targets**
Python module targets now use `Py` prefix to avoid naming conflicts between module and Python variant targets.

* **Python 3.10 is now minimum supported**
Official support for Python 3.9 has been dropped; VTK now requires Python 3.10 or later.

* **Switch VTK_ENABLE_OSPRAY default to OFF**
`VTK_ENABLE_OSPRAY` option now defaults to OFF; users must manually enable it when building the RenderingRaytracing module.

### Core

* **Convert implicit arrays to templated classes**
`vtkAffineArray`, `vtkCompositeArray`, `vtkConstantArray`, and others are now concrete templated classes instead of typedefs, allowing Python instantiation.

* **Deprecate classes/functions that use GetVoidPointer()**
`vtkSMPContourGrid`, `vtkSMPMergePoints`, and others deprecated; new array ranges extended to support all concrete array subclasses.
([Author notes](9.7/deprecate-classes-functions-that-use-GetVoidPointer.md))

* **vtkDataArrayAccessor: Replace with vtk::DataArrayRange**
`vtkDataArrayAccessor` usage replaced with more modern `vtk::DataArrayValueRange` and `vtk::DataArrayTupleRange` throughout codebase.

### DataModel

* **Rename VTKCompositeDataArray to VTKPartitionedArray**
`VTKCompositeDataArray` extracted and renamed to `VTKPartitionedArray`; legacy class remains for backward compatibility.

### Filters

* **vtkAggregateDataSetFilter: Add Target Process**
New `TargetProcess` property controls whether data aggregates to `ROOT_PROCESS` or `PROCESS_WITH_MOST_POINTS`.

* **Deprecate vtkImageThreshold and switch to vtkImageBinaryThreshold**
`vtkImageThreshold` deprecated in favor of `vtkImageBinaryThreshold` with clearer API for threshold modes.

### I/O

* **Proper caching in vtkHDFReader**
`vtkHDFReader` caching reworked for all types including `vtkPartitionedDataSetCollection` and `vtkMultiBlockDataSet`; `UseCache` now true by default.
([Author notes](9.7/vtkhdf-improvements.md))

* **Deserialize functions return status**
Deserialization functions now return bool status indicating success/failure; previously returned void.

* **vtkWriter::Write() now return the correct value**
`vtkWriter::Write()` now returns false on failure; `vtkWriter::WriteData` deprecated in favor of `WriteDataAndReturn`.

### Interaction

* **CenterOfRotation moved up to vtkInteractorStyle**
The `CenterOfRotation` property previously defined on `vtkInteractorStyleManipulator` now lives on the `vtkInteractorStyle` base class. Existing code is unaffected since the accessors keep the same signatures and are simply inherited; all interactor styles now expose the property, so classes outside `VTK::InteractionStyle` (for example camera-manipulating widgets) can read and write the center of rotation without depending on a concrete style subclass.

### Rendering

* **Change lookup table log scale debug type**
`vtkLookUpTable` now logs Warning instead of Debug when log scale set with invalid table range.

* **Modify vtkRenderer's protected member**
`vtkRenderer::PropArrayCount` removed; `PropArray` replaced with `std::vector`; `vtkSkybox` kept separate in `BackgroundProp`.

* **Update required Dawn version for WebGPU builds**
Required Dawn version for WebGPU builds updated to v20260421.125655.

* **Bump ANARI version to v0.15.0**
ANARI library tested and supported at latest version v0.15.0.

### WebAssembly

* **Make vtkOpenXRManager private**
`vtkOpenXRManager` moved to `vtk::detail::vtkOpenXRManager`; public API moved to `vtkOpenXRRenderWindow`.

* **Remote sessions drop deserialization constructors unsuitable for the web**
`vtkRemoteSession` now removes the deserialization constructors of all classes that cannot work on the web platform, generalizing the earlier handling that only dropped `vtkOpenGLPolyDataMapper` and `vtkOpenGLPolyDataMapper2D`. States naming such classes fall back to the nearest superclass constructor; for example a state naming `vtkGenericRenderWindowInteractor` now constructs through `vtkRenderWindowInteractor`, whose object factory instantiates `vtkWebAssemblyRenderWindowInteractor`.

### Python

* **numpy type mapping follows numpy's underlying C type**
`vtkmodules.util.numpy_support` and the Python template subscript operator now map numpy dtypes to VTK types by the dtype's underlying C type (its `dtype.char`) rather than a hardwired table of numpy scalar types. On LP64 platforms (Linux and macOS) `numpy.int64` is C `long`, so `numpy_to_vtk` now returns a `vtkLongArray` (`VTK_LONG`) instead of a `vtkTypeInt64Array` (`VTK_LONG_LONG`), and `numpy.uint64` maps to `VTK_UNSIGNED_LONG`; `numpy.longlong` still maps to `VTK_LONG_LONG`, and Windows behavior is unchanged. The data is unaffected and round-trips losslessly — only type identity changes — so code that tests for an array class or type code should check widths instead (e.g. `GetDataTypeSize() == 8`) or accept both classes. Template subscripting follows the same rule, so `vtkAOSDataArrayTemplate[numpy.int64]` and `vtkAOSDataArrayTemplate[numpy.dtype('int64')]` now resolve to the same instantiation.

* **numpy_support type size/code constants removed**
The module-level constants `VTK_ID_TYPE_SIZE`, `ID_TYPE_CODE`, `VTK_LONG_TYPE_SIZE`, `LONG_TYPE_CODE`, and `ULONG_TYPE_CODE` are removed. Use `get_numpy_array_type()` to resolve the numpy type for a VTK type code (e.g. `get_numpy_array_type(VTK_ID_TYPE)` in place of `ID_TYPE_CODE`) and the resulting dtype's `itemsize` in place of the size constants.

* **get_vtk_to_numpy_typemap() returns a copy**
`get_vtk_to_numpy_typemap()` again returns a copy of the VTK-to-numpy mapping rather than the module's own dictionary, restoring its earlier behavior; mutating the returned dictionary no longer perturbs conversions elsewhere in the process.

## Fixes/improvements

### Core

* **Replace most GetVoidPointer instances (Part 2)**
Removed ~48% of remaining `GetVoidPointer()` usages using `vtkArrayDispatch` and range methods; marked remaining usages as safe.
([Author notes](9.7/replace-GetVoidPointer-usages.md))

* **Add tag mangling reset in vtkCommunicators**
Tag mangling in `vtkCommunicator::Send()` now resets when mangled tag exceeds maximum value; `vtkMPICommunicator::InitializeAttributes()` retrieves MPI_TAG_UB.

* **Removed signed/unsigned errors with type checks**
`vtkVariantInlineOperators.h` now has overloaded `IsSigned()` and `IsFloatingPoint()` accepting unsigned int to eliminate compiler warnings.

* **Polyhedron faces lost when cells are handed to SetCells()**
`vtkUnstructuredGrid::SetCells()` interpreted its cell array as a legacy face stream whenever the mesh contained polyhedra, so callers copying cells from `GetCells()` and passing them back had point lists misread as face descriptions. `vtkExtractCellsAlongPolyLine`, `vtkOverlappingCellsDetector`, and the `vtkUnstructuredGrid` (de)serialization helper now carry polyhedron faces through explicitly via `SetPolyhedralCells()`.
([Author notes](9.7/fix-polyhedron-faces-lost-by-setcells.md))

### Filters

* **vtkExtractEdges: Improve Performance**
`vtkExtractEdges` now multithreaded regardless of `UseAllPoints` setting, providing significant performance improvement.

* **vtkDelaunay2D performance optimization**
`vtkDelaunay2D` uses lightweight internal mesh with O(1) edge pointers; `UseHilbertSorter` option provides up to 40x speedup.

* **vtkDelaunay3D performance optimization**
`vtkDelaunay3D` uses lightweight internal mesh with O(1) face pointers, yielding approximately 13x speedup.

* **CellLocators: Make sure that when a tolerance parameter is available it can be used**
Cell locator tolerance parameters in `InsideCellBounds`, `IntersectWithLine`, `FindCell`, etc. now actually used; `vtkLocator::Tolerance` deprecated.
([Author notes](9.7/cell-locators-tolerance.md))

* **Add use of implicit arrays in some filters**
`vtkAppendCompositeDataLeaves`, `vtkAppendDataSets`, `vtkAppendFilter`, `vtkAppendPolyData`, and `vtkGhostCellsGenerator` now optionally use implicit arrays.

* **Polyhedron clipping and contouring uses López polygon-tracing algorithm**
`vtkPolyhedron::Contour()` and `Clip()` now use López algorithm working directly on faces without triangulation; requires outward-facing normals.
([Author notes](9.7/polyhedron-lopez-algorithm.md))

* **Correct triangulation of non-convex polyhedron contour polygons**
`vtkPolyhedron` contouring now ear-clips polygons instead of fanning, correctly handling non-convex iso-surface polygons.

* **vtkPolyhedron: remove per-call allocation from IsInside**
`vtkPolyhedron::IsInside` now triangulates faces using the shared allocation-free `vtkPolygon::EarClipPolygon3D` instead of constructing a new `vtkPolygon` and `vtkIdList` per call, removing allocation churn from the streamline and probe filters' hot path.
([Author notes](9.7/fix-polyhedron-isinside-allocations.md))

* **Fix vtkCellValidator for vtkVoxel and vtkPixel**
`vtkCellValidator` now correctly accesses point coordinates for `vtkVoxel` and `vtkPixel` when positioning the `IntersectingEdges` flag; a wrong point id previously could lead to a crash.

* **vtkProbeFilter: Fix logic on SnapToCellWithClosestPoint and tolerance**
`vtkProbeFilter` now correctly handles `SnapToCellWithClosestPoint` by computing coordinates directly; snapping radius and tolerance handling improved.

* **vtkSurfaceNets3D: Identify and correct non-manifold points**
`vtkSurfaceNets3D` detects non-manifold neighborhoods and resolves them; adds `NonManifoldTableIndices` point-data array.
([Author notes](9.7/vtkSurfaceNets3D-non-manifold-improvements.md))

* **Improved vtkCellGrid evaluation performance and API**
`vtkDGEvaluator::ClassifyPoints` rewritten for substantial performance with convex hull pre-filtering; `EvaluatePositions` merged into `ClassifyPoints`.
([Author notes](9.7/improve-cell-grid-probing.md))

* **Mesh Cache Usage**
`vtkAppendDataSets`, `vtkExtractGeometry`, and `vtkTransformFilter` now use `vtkDataObjectMeshCache` for performance optimization.

* **vtkExplodeDataSet partitions name from FieldData**
`vtkExplodeDataSet` can now retrieve partition names from FieldData array with optional scalar value mapping.

* **vtkRandomHyperTreeGridSource: consistent behavior in distributed**
`vtkRandomHyperTreeGridSource` output now consistent between serial and parallel execution; mask generation rewritten.

* **vtkGenericCell DeepCopy and ShallowCopy fix**
`vtkGenericCell` DeepCopy and ShallowCopy now properly handle different types and support copying generic cells.

* **Fix nearest-neighbour interpolation in vtkDataSetAttributes**
`vtkDataSetAttributes` nearest-neighbour interpolation fixed by correcting maxWeight variable type from vtkIdType to double.

### I/O

* **vtkGLTFReader: Fix texture coordinate handling**
`vtkGLTFReader` now correctly handles models with multiple texture coordinate sets by inspecting materials.

* **CONVERGE reader: consistent polyhedron face orientation**
`vtkCONVERGECFDReader` now reverses shared interior faces for their neighbor cell so every polyhedron has consistently outward-facing normals, fixing holes and broken cross sections when slicing or contouring CONVERGE polyhedral meshes.
([Author notes](9.7/convergecfd-polyhedron-face-winding.md))

* **Improve vtkFLUENTCFFReader**
`vtkFLUENTCFFReader` now supports `RenameArrays` option and face zone reading with related data arrays.

* **vtkFLUENTReader now supports larger files**
Fixed crash in `vtkFLUENTReader` when parsing zones too large; moved virtual functions to private scope; reduced memory usage.

* **vtkVRMLImporter general fixes**
Cone now defaults to Z axis; appearance/Transform nodes support USE/DEF; Extrusion node type added with full support.

* **Fix metaimage direction ignored**
MetaImage reader and writer now properly handle direction matrix for `vtkImage` objects.

* **Fix legacy I/O handling of Inf/NaN values**
VTK legacy format readers now properly handle Inf and NaN values in ASCII files.

* **Added vector overrun detection for vtkBMPReader**
`vtkBMPReader` now detects vector overruns and prevents reading past file end on invalid/garbled BMP files.

* **Added vector max size allocation detection for vtkHDRReader**
`vtkHDRReader` now detects vector max size allocation and parsing errors, preventing reads past file end.

* **Added vector overrun detection for vtkTGAReader**
`vtkTGAReader` now detects vector overruns preventing invalid memory access on corrupt TGA files.

* **Improved vtkTGAReader::CanReadFile validation**
`vtkTGAReader::CanReadFile` now checks bits-per-pixel field in addition to image type, reducing false positives.

* **Stricter CanReadFile validation for vtkTGAReader**
`vtkTGAReader::CanReadFile` performs multi-layer validation including TGA 2.0 footer and header cross-validation.

* **vtkXMLCompositeDataReader: Refactoring subclasses**
`vtkXMLCompositeDataReader` subclasses refactored for consistent metadata handling; block/array selection support added.

* **Pass through nullptr objects as JSON null in serialization**
`nullptr` objects now consistently serialized as JSON null; deserialization correctly interprets null as `nullptr`.

* **vtkMPASReader: Fixed memory management**
`vtkMPASReader` temporary array management improved; protected members made private.

* **AMR ghost cell support and blanking fixes**
`vtkAMReXGridReader` reads ghost cells and creates properly marked arrays; `vtkAMRUtilities` and `vtkOverlappingAMRMetaData` blanking fixed.
([Author notes](9.7/amr-ghost-cell-support.md))

* **vtkMPASReader: Support nodal main multifab**
`vtkAMReXGridReader` now detects nodal main multifabs and exposes variables as point data.

### Interaction

* **vtkTrackballRotate: fix rotation about a non-default center**
`vtkTrackballRotate` now correctly rotates the camera about the center of rotation set on `vtkInteractorStyleManipulator`; previously the rotation transform was missing the translation to the center of rotation, so the camera rotated about the world origin and drifted away from the scene on every mouse move whenever a non-zero center of rotation was set.

### Rendering

* **Linear cells improvements: Add Drawing, Clip, use contour tables**
Linear cells now have documentation drawings; clip methods implemented using vtkMarchingCellsClipCases; contour tables consolidated.
([Author notes](9.7/linear-cells-improvements.md))

* **VTK Wedge Cell Types: Fix Point Ordering and Correctness**
Wedge and related cell types now have correct point ordering matching parametric coordinates; triangulation and volume correctness fixed.
([Author notes](9.7/fix-wedge-point-ordering.md))

  | Wrong Point Ordering | Correct Point Ordering |
  |:--:|:--:|
  |[image](imgs/9.7/WedgeWrong.png) |[image](imgs/9.7/WedgeCorrected.png) |

* **vtkSSAOPass subplot fix**
`vtkSSAOPass` can now be used in subplots; previously this led to black subplots in some cases.

* **WebGPU window resize now re-renders correctly**
VTK's WebGPU rendering backend now validates surface texture dimensions and handles outdated surface status so resizing the window re-renders the scene at the new resolution instead of stretching the previous image.
([Author notes](9.7/fix-webgpu-window-resize.md))

* **Fix depth buffer readback for multi-viewport configurations**
`vtkRenderer::GetZ`, `vtkFramebufferPass`, and `vtkSSAAPass` now correctly handle depth buffer across multiple viewports.

* **Fix incorrect connectivity crash**
VTK no longer crashes when rendering `vtkPolyData` with invalid connectivity array indices.

* **vtkSSAAPass correctly manages stencil buffer attachments**
`vtkSSAAPass` now preserves stencil buffer testing during actor rendering passes with proper depth-stencil attachments.

* **Fix point scalar mapping with lookup table in WebGPU**
WebGPU mappers now correctly pass input data to batched mappers fixing scalar-to-texture mapping.

* **Fix SurfaceLIC mapper when using more than one viewport**
SurfaceLIC mapper now correctly initializes viewport origin for multi-viewport rendering.

* **Enable rendering of larger polygonal composite datasets**
`vtkCompositePolyDataMapper` now respects buffer size limitations when batching blocks.

* **OpenGL array texture buffer cache is bounded and purged**
The per-context `vtkOpenGLArrayTextureBufferCache` used by the vertex-pulling mappers (`vtkOpenGLLowMemoryPolyDataMapper`) now purges automatically at the end of every render: orphaned entries are dropped and unpinned entries are evicted least-recently-used first until the cache fits `MaximumCacheSize` (default 256 MiB, `0` disables the budget). Previously entries were only released at context teardown, so workflows that continually modify geometry leaked memory and could exhaust the heap in WebAssembly. New API: `SetMaximumCacheSize()`/`GetMaximumCacheSize()`, `GetCurrentCacheSize()`, `GetCPUMemorySize()`, `RemoveUnusedTextureBuffers()`, and `RemoveTextureBuffer()`.

* **vtkImageSSIM::ComputeErrorMetrics RGBA Support**
`vtkImageSSIM::ComputeErrorMetrics` now supports any number of components including RGBA.

* **Deprecation in vtkViewport**
`vtkViewport::GetActors2D` deprecated in favor of `vtkViewport::GetViewProps`.

### WebAssembly

* **WebAssembly interactor event loops can now coexist**
Multiple interactor event loops can now run simultaneously in WebAssembly using async code path.

* **Session Destroy Object Return Status**
`vtkStandaloneSession::Destroy` now returns bool status for success/failure.

* **Fix gesture event positions**
`vtkRemoteInteractionAdapter` now reports correct positions for Pinch, Pan, and Rotate gesture events; `EndRotate` now correctly triggers `vtkCommand::EndRotateEvent`.
([Author notes](9.7/web-gesture-events-adapter.md))

* **Data set mapper serialization no longer emits an empty polydata**
When a `vtkDataSetMapper` has a `vtkPolyData` input, serialization now updates the input algorithm before serializing the data set. Previously, if the producer of the input had never executed, the mapper's state held an empty polydata and the deserialized scene rendered nothing.

## Deprecations/Removals

* **All APIs deprecated in VTK 9.5 are removed**
Many type enums, classes, and methods removed from CommonCore, CommonDataModel, I/O, and other modules.
([Author notes](9.7/deprecation-removals.md))

* **Deprecate VTK_LEGACY_REMOVE and VTK_LEGACY_SILENT**
`VTK_LEGACY_REMOVE`, `VTK_LEGACY_SILENT`, and related CMake variables deprecated.

* **vtkAlgorithm::Update() change return type to bool**
`UpdateInformation()`, `UpdateDataObject()`, `UpdateWholeExtent()`, and `Update()` now return bool instead of void.

* **vtkHTGRedistribute: Fix crash when input has no valid trees**
`vtkHyperTreeGridRedistribute` now handles inputs with no valid trees without crashing.

* **Deprecate vtkTransformPolyDataFilter**
`vtkTransformPolyDataFilter` deprecated in favor of `vtkTransformFilter`; use `GetPolyDataOutput()` as replacement.

* **Deprecate vtkHierarchicalBoxDataSet filters**
`vtkHierarchicalDataExtractLevel`, `vtkHierarchicalPolyDataMapper`, and related classes deprecated.

* **vtkXMLPHyperTreeGridWriter & Reader deprecation**
Parallel HyperTreeGrid readers/writers deprecated in favor of vtkHDFWriter parallel support.

## Updates

* **Mesh cache improvements**
`vtkDataObjectMeshCache` now has `PreservedInputAttributes`, SMP-accelerated attribute forwarding, and `vtkMeshCacheRunner` RAII helper.
([Author notes](9.7/mesh-cache-improvements.md))

* **Move mesh cache utilities to new CommonCache module**
`vtkDataObjectMeshCache` and `vtkMeshCacheRunner` moved to new CommonCache module for broader availability.

* **Support parallel rendering with independent off-axis viewers**
`vtkSynchronizedRenderers` now supports `vtkIndependentViewerCollection` for independent viewer tracking.

* **vtkConvertToMultiBlock uses assembly when possible**
`vtkConvertToMultiBlock` now uses `vtkDataAssembly` from `vtkPartitionedDataSetCollection` to mirror structure.

* **Support for Object Factory Preferences**
Object Factory now supports preferences for specific class implementations for runtime selection.

## Closed Issues (111 total)

*Listed in reverse chronological order (most recently closed first)*

- [#20059](https://gitlab.kitware.com/vtk/vtk/-/issues/20059) vtkXMLPHyperTreeGridWriter/Reader do not work at all (2026-06-25)
- [#20091](https://gitlab.kitware.com/vtk/vtk/-/issues/20091) VTK 9.6 build error C4996 in vtkUnstructuredGrid.h with MSVC 18.7.8 (GetCellTypes deprecation conflict) (2026-06-24)
- [#20089](https://gitlab.kitware.com/vtk/vtk/-/issues/20089) vtkImageTransform.cxx triggers divide by zero when floating point exceptions are on (2026-06-24)
- [#20062](https://gitlab.kitware.com/vtk/vtk/-/issues/20062) Volume rendering fails with shading and non-default lighting in WASM build (2026-06-22)
- [#17013](https://gitlab.kitware.com/vtk/vtk/-/issues/17013) vtkBandedPolyDataContour hangs with NaN data (2026-06-22)
- [#20087](https://gitlab.kitware.com/vtk/vtk/-/issues/20087) vtkObjectBase::Register unresolved (2026-06-22)
- [#20085](https://gitlab.kitware.com/vtk/vtk/-/issues/20085) `vtkMarshalContext::GetId` is O(n) and sits in nested hot loops (2026-06-20)
- [#20074](https://gitlab.kitware.com/vtk/vtk/-/issues/20074) Latest nightly Python wheel can't be installed by pip (2026-06-19)
- [#20018](https://gitlab.kitware.com/vtk/vtk/-/issues/20018) vtkBuffer persists after array deletion with new NumPy interface (2026-06-18)
- [#16924](https://gitlab.kitware.com/vtk/vtk/-/issues/16924) Improve Documentation for vtkXMLP*Writers (2026-06-18)
- [#17083](https://gitlab.kitware.com/vtk/vtk/-/issues/17083) reference counting bug in vtkTransform or vtkAbstractTransform (2026-06-17)
- [#20043](https://gitlab.kitware.com/vtk/vtk/-/issues/20043) [regression] RuntimeWarning and NumPy ValueError generated for previously valid code (2026-06-17)
- [#19912](https://gitlab.kitware.com/vtk/vtk/-/issues/19912) vtkGridAxesActor3D: No Maximum Limit on Automatic Ticks/Labels Leads to Rendering Freeze at Close Zoom (2026-06-16)
- [#20025](https://gitlab.kitware.com/vtk/vtk/-/issues/20025) segfault when closing X11 webgpu window (2026-06-16)
- [#19980](https://gitlab.kitware.com/vtk/vtk/-/issues/19980) vtk_to_numpy cannot get buffer from vtkDataArray in latest dev wheels (2026-06-15)
- [#19390](https://gitlab.kitware.com/vtk/vtk/-/issues/19390) vtkExtractVOI incorrectly handles sample rate (2026-06-12)
- [#20066](https://gitlab.kitware.com/vtk/vtk/-/issues/20066) Unguarded MPI_comm_free causes abort at shutdown. (2026-06-12)
- [#17506](https://gitlab.kitware.com/vtk/vtk/-/issues/17506) Restore support for CastXML-based wrappers (2026-06-11)
- [#20075](https://gitlab.kitware.com/vtk/vtk/-/issues/20075) Staging of vtk_module_wrap_python not possible because MODULE_DESTINATION set BUILD and INSTALL location (2026-06-10)
- [#20058](https://gitlab.kitware.com/vtk/vtk/-/issues/20058) vtkRandomHyperTreeGridSource is not consistent in serial & parallel (2026-06-10)
- [#20070](https://gitlab.kitware.com/vtk/vtk/-/issues/20070) ParaView 6.1.1 render window completely broken on macOS 26 (Tahoe) — NSOpenGLContext/NSOpenGLView (2026-06-09)
- [#20013](https://gitlab.kitware.com/vtk/vtk/-/issues/20013) VTK source must be in a path that does not contains spaces (2026-06-08)
- [#20068](https://gitlab.kitware.com/vtk/vtk/-/issues/20068) vtkHDFReader: read XCoordinates properly (2026-06-08)
- [#20022](https://gitlab.kitware.com/vtk/vtk/-/issues/20022) ANARI volume renderer test failures (2026-06-05)
- [#20023](https://gitlab.kitware.com/vtk/vtk/-/issues/20023) ANARI perspective parallel test failure (2026-06-05)
- [#18842](https://gitlab.kitware.com/vtk/vtk/-/issues/18842) `vtkStaticCellLocator::BuildLocatorInternal` data race found by TSan (2026-06-04)
- [#17082](https://gitlab.kitware.com/vtk/vtk/-/issues/17082) vtkSSAAPass breaks the use of stencil buffer (2026-06-04)
- [#19171](https://gitlab.kitware.com/vtk/vtk/-/issues/19171) vtkSurfaceNets3D crashes when DataCaching is OFF (2026-05-27)
- [#20049](https://gitlab.kitware.com/vtk/vtk/-/issues/20049) TSan: vtkSurfaceNets ClassifyXXXEdges read/write races (2026-05-27)
- [#18537](https://gitlab.kitware.com/vtk/vtk/-/issues/18537) AddressSanitizer builds failing on macos (2026-05-26)
- [#17751](https://gitlab.kitware.com/vtk/vtk/-/issues/17751) vtkScalarBarActor::DrawTickLabelsOn() does not work. (2026-05-22)
- [#20057](https://gitlab.kitware.com/vtk/vtk/-/issues/20057) TSan: `vtkCellQuality::PolygonArea` has read/write race (2026-05-21)
- [#19593](https://gitlab.kitware.com/vtk/vtk/-/issues/19593) ci does not skip documentation changes (2026-05-21)
- [#20053](https://gitlab.kitware.com/vtk/vtk/-/issues/20053) vtkConvertToMultiBlockDataSet  unexpected empty output (2026-05-21)
- [#20044](https://gitlab.kitware.com/vtk/vtk/-/issues/20044) vtkimageExport crashes for large data sets (2026-05-21)
- [#20046](https://gitlab.kitware.com/vtk/vtk/-/issues/20046) Release v9.6.2 (2026-05-20)
- [#19665](https://gitlab.kitware.com/vtk/vtk/-/issues/19665) Improvements to the FLUENTCFF to parse Fluent results. (2026-05-20)
- [#20054](https://gitlab.kitware.com/vtk/vtk/-/issues/20054) [regression] vtkOBBTree no longer finds intersection (2026-05-19)
- [#18031](https://gitlab.kitware.com/vtk/vtk/-/issues/18031) vtkOBBTree.IntersectWithLine not finding intersection cell when it should (2026-05-19)
- [#19815](https://gitlab.kitware.com/vtk/vtk/-/issues/19815) wheels: remove wheels for Python 3.9 (2026-05-18)
- [#19650](https://gitlab.kitware.com/vtk/vtk/-/issues/19650) vtkGroupDataSetsFilter to generate vtkDataAssembly for PartitionedDataSetCollection output types (2026-05-18)
- [#17667](https://gitlab.kitware.com/vtk/vtk/-/issues/17667) conda package for linux-64 vtk-8.2.0 py37 contains invalid INTERFACE_LINK_LIBRARIES for vtkRenderingOpenGL2 module (2026-05-15)
- [#17486](https://gitlab.kitware.com/vtk/vtk/-/issues/17486) VTK failed to run 711 tests due to Exception: SegFault with release configuration and debug configuration. (2026-05-14)
- [#20008](https://gitlab.kitware.com/vtk/vtk/-/issues/20008) Issue with rendering 16-bit volume data (Int16/Uint16) (2026-05-14)
- [#20009](https://gitlab.kitware.com/vtk/vtk/-/issues/20009) Issue with volume rendering using VTK WASM compiled using vtk wasm sdk docker (2026-05-14)
- [#18555](https://gitlab.kitware.com/vtk/vtk/-/issues/18555) TestEvenlySpacedStreamlines2D is flaky with STDThread (2026-05-14)
- [#16941](https://gitlab.kitware.com/vtk/vtk/-/issues/16941) Java class vtkScalarBarWidget does not have GetScalarBarActor() in 7.1 version (2026-05-13)
- [#18204](https://gitlab.kitware.com/vtk/vtk/-/issues/18204) ParaView fails to load ASCII file with nans (2026-05-13)
- [#17426](https://gitlab.kitware.com/vtk/vtk/-/issues/17426) Missing cast in dataset_adapter.UnstructuredGrid.SetCells (2026-05-13)
- [#18201](https://gitlab.kitware.com/vtk/vtk/-/issues/18201) vtkSMPMergePoints::Merge is not thread-safe (2026-05-13)
- [#17882](https://gitlab.kitware.com/vtk/vtk/-/issues/17882) Out-of-memory when rendering large wavefront obj in ParaView(> 5.4.1) (2026-05-13)
- [#17368](https://gitlab.kitware.com/vtk/vtk/-/issues/17368) 2D FLASH AMR data (2026-05-13)
- [#17185](https://gitlab.kitware.com/vtk/vtk/-/issues/17185) ospray unstructured volume render limited to tets and float and point aligned arrays (2026-05-13)
- [#17974](https://gitlab.kitware.com/vtk/vtk/-/issues/17974) Compiling VTK 9.0.1 with Intel 2020 (2026-05-13)
- [#17971](https://gitlab.kitware.com/vtk/vtk/-/issues/17971) vtk-8.2.0 fails to compile with gcc-10x (2026-05-13)
- [#17947](https://gitlab.kitware.com/vtk/vtk/-/issues/17947) vtkPlaneCutter segfault when slicing a dataset containing GlobalIds and PedigreeIds (2026-05-13)
- [#17931](https://gitlab.kitware.com/vtk/vtk/-/issues/17931) vtkUnstructuredGrid::DeepCopy with faces (2026-05-13)
- [#17043](https://gitlab.kitware.com/vtk/vtk/-/issues/17043) VTK / Python/ Anaconda -- wiki example shows bug in volume render? (2026-05-13)
- [#17690](https://gitlab.kitware.com/vtk/vtk/-/issues/17690) SIGSEGV on vtkCompositeDataProbeFilter() with PassPartialArraysOn() (2026-05-13)
- [#16962](https://gitlab.kitware.com/vtk/vtk/-/issues/16962) Remote module: Poisson Reconstruction (2026-05-13)
- [#17646](https://gitlab.kitware.com/vtk/vtk/-/issues/17646) Request to add the location of classes in the documentation. (2026-05-13)
- [#17645](https://gitlab.kitware.com/vtk/vtk/-/issues/17645) vtkDecimattePro fails with a specific dataset. (2026-05-13)
- [#16960](https://gitlab.kitware.com/vtk/vtk/-/issues/16960) Crash of qtgraphicsview example on macOS (2026-05-13)
- [#17640](https://gitlab.kitware.com/vtk/vtk/-/issues/17640) vtkXML_reader: Segmentation fault by same DataArray names (2026-05-13)
- [#17641](https://gitlab.kitware.com/vtk/vtk/-/issues/17641) VTK 8.2.0 fails to build with PGI pgc++ 19.3 (2026-05-13)
- [#16122](https://gitlab.kitware.com/vtk/vtk/-/issues/16122) Fix for freeze with Java JOGL interaction (2026-05-13)
- [#17629](https://gitlab.kitware.com/vtk/vtk/-/issues/17629) vtkPointLocator.FindClosestPointWithinRadius causes access violation when using incremental point insertion (2026-05-13)
- [#15799](https://gitlab.kitware.com/vtk/vtk/-/issues/15799) regression: OpenGL2 backend broke support for LineStipple (2026-05-13)
- [#17958](https://gitlab.kitware.com/vtk/vtk/-/issues/17958) VTK 9 Python observer fired on ErrorEvent not muting VTK raw output (2026-05-13)
- [#17307](https://gitlab.kitware.com/vtk/vtk/-/issues/17307) Convert cells to higher-order versions automatically? (2026-05-13)
- [#17582](https://gitlab.kitware.com/vtk/vtk/-/issues/17582) VTK failed to run 2 tests VTK::FiltersAMRCxx-TestAMRSliceFilterCellData and VTK::FiltersAMRCxx-TestAMRSliceFilterPointData with release configuration and debug configuration with MSVC on windows (2026-05-13)
- [#17594](https://gitlab.kitware.com/vtk/vtk/-/issues/17594) IO/Legacy/vtkDataReader.cxx: int vtkDataReader::ReadString(char result[256]) does not compile in C++20 (2026-05-13)
- [#17599](https://gitlab.kitware.com/vtk/vtk/-/issues/17599) vtkFunctionParser is 18 years old and written in C language, highly unoptimized. (2026-05-13)
- [#17543](https://gitlab.kitware.com/vtk/vtk/-/issues/17543) Voronoi Cells in vtk format (2026-05-13)
- [#17286](https://gitlab.kitware.com/vtk/vtk/-/issues/17286) vtkHyperTreeContour produces empty output (2026-05-13)
- [#17161](https://gitlab.kitware.com/vtk/vtk/-/issues/17161) ExodusReader only reads float data (not double) (2026-05-13)
- [#19636](https://gitlab.kitware.com/vtk/vtk/-/issues/19636) Serialization errors in RenderingCoreCxx (2026-05-13)
- [#17120](https://gitlab.kitware.com/vtk/vtk/-/issues/17120) Simplify the VTK-m and VTK SMP build options (2026-05-13)
- [#17089](https://gitlab.kitware.com/vtk/vtk/-/issues/17089) VTK Exodus Reader (2026-05-13)
- [#17039](https://gitlab.kitware.com/vtk/vtk/-/issues/17039) XDMF2Writer: Source and Target Spaces specify different sizes for path: /Block_0_t000000/Topology (2026-05-13)
- [#17338](https://gitlab.kitware.com/vtk/vtk/-/issues/17338) VTK  +  PyQt5 +  VirtualGL not working (2026-05-13)
- [#17037](https://gitlab.kitware.com/vtk/vtk/-/issues/17037) XDMF2 writes data with insufficient precision (2026-05-13)
- [#17033](https://gitlab.kitware.com/vtk/vtk/-/issues/17033) VTK Legacy file format readers don't handle sizeof(long) correctly (2026-05-13)
- [#19996](https://gitlab.kitware.com/vtk/vtk/-/issues/19996) Unhashable regression in trame-vtk (2026-05-13)
- [#16948](https://gitlab.kitware.com/vtk/vtk/-/issues/16948) Building VTK with osmesa offscreen support on windows. (2026-05-13)
- [#16934](https://gitlab.kitware.com/vtk/vtk/-/issues/16934) Python 3 exception in test vtkParallelMPI4PyPython-TestParallelNumpy (2026-05-13)
- [#16903](https://gitlab.kitware.com/vtk/vtk/-/issues/16903) Segmentation fault in vtkXYZMolReader2::RequestInformation() with XMOL file with no time steps (2026-05-13)
- [#17988](https://gitlab.kitware.com/vtk/vtk/-/issues/17988) Cannot run WebAssembly examples with rendering (2026-05-13)
- [#19949](https://gitlab.kitware.com/vtk/vtk/-/issues/19949) wasm: enabling serialization leads to very large wasm binaries (2026-05-13)
- [#15841](https://gitlab.kitware.com/vtk/vtk/-/issues/15841) vtkCutter not cutting vtkPolyhedron cells correctly (2026-05-13)
- [#16915](https://gitlab.kitware.com/vtk/vtk/-/issues/16915) VTK 6.3.0: bar plot with big number (2026-05-13)
- [#16789](https://gitlab.kitware.com/vtk/vtk/-/issues/16789) vtkGradientFilter doesn't work with quadratic triangles (2026-05-13)
- [#15435](https://gitlab.kitware.com/vtk/vtk/-/issues/15435) Crash related to vtkRenderWindow::SetOffScreenRendering (2026-05-13)
- [#19014](https://gitlab.kitware.com/vtk/vtk/-/issues/19014) vtkScalarBarActor: in vertical mode, add option to rotate title so it is aligned vertically (2026-05-13)
- [#18316](https://gitlab.kitware.com/vtk/vtk/-/issues/18316) AMReX Grid Reader: enable reading of integer fab files (2026-05-13)
- [#20006](https://gitlab.kitware.com/vtk/vtk/-/issues/20006) Issue with Volume Rendering using 16-bit arrays (Int16/Uint16) in VTK-Wasm (2026-03-29)
- [#19925](https://gitlab.kitware.com/vtk/vtk/-/issues/19925) undeclared malloc/free in fmt header with clang 21+ (2026-02-02)
- [#19767](https://gitlab.kitware.com/vtk/vtk/-/issues/19767) Update fmt to include upstream fmtlib/fmt/pull/4477 fix (2026-02-02)
- [#19779](https://gitlab.kitware.com/vtk/vtk/-/issues/19779) Release 9.5.2 (2025-09-24)
- [#19580](https://gitlab.kitware.com/vtk/vtk/-/issues/19580) Wide lines are not rendered properly with GLES backend (2025-08-04)
- [#19675](https://gitlab.kitware.com/vtk/vtk/-/issues/19675) Enable JSPI for webgpu support in wasm (2025-06-16)
- [#19617](https://gitlab.kitware.com/vtk/vtk/-/issues/19617) wasm64: re-enable serialization package (2025-05-14)
- [#19529](https://gitlab.kitware.com/vtk/vtk/-/issues/19529) serialization of wasm render window shows warning about SetCoverable (2024-12-03)
- [#19356](https://gitlab.kitware.com/vtk/vtk/-/issues/19356) VTK JS library files are not found in wasm SDK builds (2024-06-03)
- [#19290](https://gitlab.kitware.com/vtk/vtk/-/issues/19290) Revisit vtk-wasm wheel setup (2024-04-11)
- [#19296](https://gitlab.kitware.com/vtk/vtk/-/issues/19296) Depth buffer read using vtkOpenGLRenderWindow::GetZbufferData incorrect on wasm/Emscripten (2024-04-01)
- [#18592](https://gitlab.kitware.com/vtk/vtk/-/issues/18592) VTK C++ Emscripten Binding Config (2023-06-16)
- [#18724](https://gitlab.kitware.com/vtk/vtk/-/issues/18724) webassembly(wasm)  example compile error about glew (2023-02-25)
- [#18829](https://gitlab.kitware.com/vtk/vtk/-/issues/18829) Failed to read dicom from compiled VTK of emscripten ？ (2023-02-21)
- [#18706](https://gitlab.kitware.com/vtk/vtk/-/issues/18706) Emscripten vtk: fatal error: 'vtkSelectPolyData.h' file not found (2022-11-03)
- [#17995](https://gitlab.kitware.com/vtk/vtk/-/issues/17995) Loading .vtp file after compiling with Emscripten (2020-09-03)
