Changes in version 0.1.3 (2026-05-11) New features - Windows VTK discovery (configure.win rewritten). The package now searches for a system VTK installation on Windows before falling back to the pre-built libraries. Detection order: 1. VTK_DIR environment variable. 2. Rtools45 pacman (queries installed packages; never installs automatically). 3. Common Rtools45 / MSYS2 prefixes (/x86_64-w64-mingw32.static.posix, /ucrt64, /mingw64, …). 4. Automatic download of pre-built libraries (fallback — see below). Both static (.a) and shared (.dll.a import libs + DLLs) system installations are accepted. - Windows shared-DLL support (configure.win, tools/winlibs.R, R/vtk.R, R/zzz.R). Windows now fully supports shared VTK libraries: - System or pacman/MSYS2 installations that provide .dll.a import libs are accepted and used directly. - A pre-built shared-DLL build (vtk-X.Y.Z-shared-posix-x64.zip) is available as an alternative to the existing static build. Select it by setting VTK_LINK_TYPE=shared before installing rvtk (default is static). - VTK DLLs are staged in rvtk's own inst/vtk-dlls/. An .onLoad hook prepends that directory to PATH via Sys.setenv() when rvtk is loaded, making the DLLs visible to all downstream packages that declare Imports: rvtk without any manual PATH manipulation. The original PATH is restored in .onUnload(). Downstream packages do not receive a copy of the DLLs — they piggyback on rvtk's staged directory at run time. - build-vtk-libs.yml: new build-windows-shared CI job produces vtk-X.Y.Z-shared-posix-x64.zip alongside the existing static archive. Bug fixes - Unix pre-built static libraries survive R CMD build (configure, R/vtk.R, cleanup). The pre-built archive is now extracted to inst/prebuilt/ so that headers and static libraries ship inside the installed package. read_vtk_conf() resolves the actual paths at run time via system.file("prebuilt", package = "rvtk"), mirroring the Windows approach and surviving R CMD build temp-dir cycles. Internal - Removed dead variable lib_root from tools/winlibs.R (assigned but never read). - Removed dead variable all_libs_full from the Windows static branch of read_vtk_conf() in R/vtk.R (assigned but never read; lib_flags is built entirely from -l short names). - New CI workflow (.github/workflows/downstream-check.yaml) builds and checks a minimal downstream package against rvtk across all supported platform × VTK-strategy combinations (system, pre-built static, pre-built shared). Changes in version 0.1.2 Re-submission addressing CRAN reviewer feedback on v0.1.1. Changes - DESCRIPTION: Software names ('VTK', 'Homebrew', 'pkg-config', 'Rtools45') are now consistently quoted with single quotes in the Title, Description, and SystemRequirements fields, per CRAN policy. Function calls such as rvtk::CppFlags() are no longer wrapped in single quotes. - CppFlags(), LdFlags(), LdFlagsFile(): Replaced cat() with writeLines() and added invisible() returns so functions behave in a more idiomatic R style while still allowing shell command-substitution capture. - tools/winlibs.R: The Windows VTK zip is now extracted to a temporary directory (tempfile()) before being copied into inst/windows/. This avoids writing intermediate files to the package source tree (home filespace) during installation. - Examples: All exported functions now have small, executable @examples entries. LdFlagsFile() writes to tempdir() in its example. - Tests: Test suite expanded to 100% line coverage of the non-platform- specific code paths on all platforms; Windows-specific branches (LdFlagsFile() response-file path, read_vtk_conf() Windows resolver) are exercised by the existing R-hub Windows CI jobs. Changes in version 0.1.1 The planned CRAN submission of v0.1.0 was cancelled after downstream package developers reported linker errors when building against the pre-built Windows VTK libraries. Two root causes were identified and fixed: 1. Wrong toolchain. The Windows VTK zip was compiled with the Rtools45 UCRT64 toolchain (/ucrt64/bin/gcc), which uses a dynamic C runtime and emits DLL-import symbols (__imp_fseeko64, __imp_ftello64, …). However, R CMD INSTALL links R packages with the x86_64-w64-mingw32.static.posix toolchain, which is fully static. The mismatch caused undefined references to nanosleep64, ftime64, __imp_fseeko64, and __imp_ftello64. The GitHub Actions workflow now builds the Windows VTK zip with the x86_64-w64-mingw32.static.posix compiler, matching the toolchain that downstream packages use. 2. Command-line length overflow. The full set of VTK -l linker flags exceeds the 8 191-character Windows command-line limit, causing the linker to silently drop flags at the end of the list. A new function LdFlagsFile(path) writes all flags to a response file and returns the short @path token that both GNU ld and LLVM lld support. Downstream packages should call LdFlagsFile('src/vtk_libs.rsp') from their configure / configure.win script instead of LdFlags(). Changes - New function LdFlagsFile(path): writes VTK linker flags to a response file and returns @path for use in Makevars. Preferred over LdFlags() on all platforms to avoid the Windows command-line length limit. - Windows pre-built VTK libraries are now compiled with the x86_64-w64-mingw32.static.posix toolchain (Rtools45), matching the toolchain used by R CMD INSTALL for CRAN packages. - Windows system libraries appended to PKG_LIBS reduced to -lgdi32 only; the UCRT64-specific -lwinpthread -lmingwex -lucrtbase flags are no longer needed because the static.posix sysroot resolves POSIX symbols internally. - README updated to document LdFlagsFile(), explain the rationale, provide a unified configure example valid on all platforms, and correct the Windows toolchain description. Changes in version 0.1.0 - Initial CRAN submission. - Bundles VTK 9.5.2 pre-built static libraries (.a) for Windows (Rtools45 UCRT x64), macOS arm64, macOS x86_64, and Linux x86_64, distributed via GitHub Releases and built with GitHub Actions. - VTK discovery strategy on macOS and Linux (in priority order): 1. User-supplied VTK_DIR environment variable. 2. Homebrew (macOS only). 3. pkg-config. 4. Well-known system prefixes (/usr, /usr/local) (Linux only). 5. Automatic download of pre-built static libraries from https://github.com/astamm/rvtk/releases as a fallback. - On Windows, pre-built UCRT64 static libraries are always downloaded automatically from https://github.com/astamm/rvtk/releases. - Windows limitation: netcdf and libproj are not available in the Rtools45 UCRT64 environment. The following VTK modules are therefore disabled in the Windows pre-built libraries: VTK_IONetCDF, VTK_IOHDF, VTK_GeovisCore, VTK_RenderingCore. Downstream packages requiring these modules cannot be built on Windows with rvtk's pre-built libraries. - Downstream packages can retrieve compiler and linker flags via rvtk::CppFlags() and rvtk::LdFlags().