Releases: pyvista/cvista
Release list
9.6.2.3
First tiered cvista release: three stackable PyPI wheels sharing the cvista/ namespace — cvista (core: Common/Filters/Imaging + native IO, rendering-free), cvista-rendering, and cvista-io — published via OIDC trusted publishing (#172).
SMP threading correctness
The STDThread-default SMP backend is now validated byte-exact across the full SMP-using filter set by the parity validator (#174, 65 cases), and the three real defects it surfaced are fixed:
- vtkDiscreteFlyingEdgesClipper2D — garbage output coords from counted-but-unwritten
NewPointsslots; zero-init fix (#175). - vtkSurfaceNets3D — uninitialized
BoundaryLabelscell-data; zero-init the padded scalar buffer (#176). - vtkLengthDistribution — unseeded RNG;
vtkReservoirSampleris now opt-in seedable and the filter seeds it (Seed, default 0) for reproducible, byte-identical serial-vs-parallel output (#176).
Drop-in bit-exact parity with stock VTK 9.6.2 is preserved (bit-exact + pixel-exact gates green).
9.6.2.2
fvtk 9.6.2.2 — bit-exact drop-in for VTK 9.6.2.
Highlights
- In-process coexistence with stock VTK (#161). Shipped libraries now carry
fvtk-distinct SONAMEs (lib…-fvtk.so/.dylib/.dll), soimport vtk
(stock) andimport fvtkcan both load in the same process without symbol
collisions. C++ class names are unchanged — this is a build-suffix change only,
drop-in parity preserved. - Legacy cp310/cp311 wheels (#160). Python 3.10 and 3.11 now get
version-specific (non-abi3) wheels for Linux, macOS, and Windows. Built and
shipped at release time (six wheels) alongside the cp312-abi3 wheel. - All wheels attached to the Release (#159). The release publish job uploads
every shipped wheel to the GitHub Release in addition to PyPI.
Performance (byte-exact, default-on unless noted)
- Parallel EnableFast orientation kernel for
vtkOrientPolyData(#150) - Threaded structured cell→point interpolation in
cd2pd(#149) - Parallel block compression in
vtkXMLWriter(#156) - Deferred
vtkParallelCoreimport — ~10–15 ms offimport pyvista(#153) - auditwheel repair targets the wheel's own arch (#147)
Full diff: 9.6.2.1...9.6.2.2
fvtk 9.6.2.1
fvtk 9.6.2.1 is a maintenance release on the frozen VTK 9.6.2 base. It is a bit-exact drop-in for stock VTK 9.6.2 by default. This release fixes wrapped-class construction and Delaunay3D cell storage, ships the missing Qt subpackage, and tightens the parity gates to test the built wheel.
Fixes
- Delaunay3D output parity (#143, backport of VTK !114): pin the working mesh to stock int64 cell storage so triangulation output matches stock VTK 9.6.2 byte for byte.
- abi3 wrapped-class constructors (#144, backport of VTK !120): apply the object-factory override retype so factory-overridden classes construct with the correct concrete type under the abi3 wrapper.
- pyvistaqt imports (#145): ship the
fvtk.qtsubpackage in the wheel so pyvistaqt can import it.
CI
- Every parity gate now installs and tests the wheel built in the same run, not the last published PyPI release (#146).
Docs
- Recorded that PyVista issue #117 is a by-design int32-default compression-ratio artifact, not an fvtk regression (#141).
Tooling
- Added the fvtk Claude Code plugin for maintenance workflows (#139).
fvtk 9.6.2.0
First stable release. fvtk is a community fork of VTK 9.6.2, maintained by the PyVista project as a fast, trimmed, drop-in graphics backend. See the README for the full overview; these notes cover how fvtk relates to stock VTK and where it currently diverges.
Parity model
By default fvtk is byte-for-byte identical to stock VTK 9.6.2 (maxULP = 0). Positions and values are never altered. Optimizations that would reorder output are opt-in behind fvtk.EnableFast(). Three gates enforce this on every change: bit-exact (array output vs stock), render-exact (offscreen framebuffers), and PyVista's own test suite run against the built wheel.
Divergences from stock VTK 9.6.2
fvtk is a drop-in, but deliberately differs in three ways:
- Trimmed to PyVista's module closure. Only the VTK modules and classes PyVista uses are built; the rest are dropped (notably the XDMF reader, whose vendored sources no longer compile on modern libc++). Code outside that closure is not importable.
- Single abi3 wheel. One
cp312-abi3wheel loads on CPython 3.12 and newer. Wrapped types are heap types rather than stock's static types, so a few Python introspection details differ (for examplevars(SomeVTKType)exposing__module__). Behavior and values are unchanged. - int32 width-relaxation. Cell-array connectivity, original-id arrays, and reader output use 32-bit storage where the index range fits, instead of stock's 64-bit. The values are identical; only the container width narrows. This trades some interop for memory: zero-copy hand-off to libraries that require int64 (such as trimesh) falls back to a copy, and 32-bit connectivity compresses slightly less.
Known PyVista gaps
The PyVista parity suite runs against every build. A small set of tests is currently deselected and tracked for follow-up: vtkDelaunay3D degenerate output (#114), the two int32 interop cases above (#117, #118), and the vtkSkybox OpenGL override (#120). The rest of PyVista's suite passes against fvtk.
fVTK 9.6.2.0rc4
What's Changed
- Enable IOImage explicitly instead of transitively by @banesullivan in #123
- ci: trigger PyVista gate on deselect/harness edits and label add by @banesullivan in #129
- fix(verdict): emit boundary mesh quality output arrays by @banesullivan in #122
- fix(gltf): WriteValues fallback for AOS types not in trimmed dispatch list by @banesullivan in #127
- CI: build + Python-wrap an example out-of-tree module against the fvtk-sdk by @banesullivan in #124
- fix: pass through original point/cell ids in surface extraction by @banesullivan in #130
Full Changelog: 9.6.2.0rc3...9.6.2.0rc4
fvtk 9.6.2.0rc3
Pre-release to confirm both fvtk and fvtk-sdk publish to PyPI in lockstep. 9.6.2.0rc2 published fvtk but skipped fvtk-sdk because the release event skipped publish-sdk through the changes job; this validates the fix.
CI
publish-sdkno longer skips on release when the PR-onlychangesjob is skipped (#121).
Carries the same packaging and fixes as 9.6.2.0rc2: full-platform fvtk-sdk (Linux x86_64 + aarch64, macOS, Windows), aarch64 wheels for both projects, and the SDK gate required check.
fvtk 9.6.2.0rc2
Pre-release to validate PyPI publishing for both fvtk and fvtk-sdk across every platform after the SDK build fixes. 9.6.2.0rc1 published fvtk but the fvtk-sdk upload failed; this confirms both land at the same version.
Packaging
fvtk-sdknow builds and publishes for Linux x86_64, Linux aarch64, macOS arm64, and Windows x64 (#108, #110).- Linux aarch64 (
manylinux_2_28_aarch64) wheels added for bothfvtkandfvtk-sdk(#111). - SDK wheels are tagged
py3-none-manylinux_2_28_*, so one wheel per platform serves CPython 3.12+ (#108).
CI
- The SDK build runs behind a single required
SDK gatecheck (#113). - The Windows release wheel sets up MSVC vcvars (#107).
Fixes
9.6.2.0rc1
Pre-release to validate the PyPI publish pipeline for fvtk + fvtk-sdk. Builds from main; not a feature release.