[gdal-dev] Optional rust library as a dependency of the Zarr driver

Sebastiaan Couwenberg sebastic at xs4all.nl
Fri Jun 12 06:47:13 PDT 2026


Greg expressed concern about being the only packager chiming in here.

I didn't see anything that required me to do so, but I'll share my point of view as the Debian package maintainer.

On 6/12/26 1:24 AM, Even Rouault via gdal-dev wrote:
> We are in the situation where we are about to have our first Rust direct (optional) dependency. This is for the "pcodec" lossless codec (https://github.com/pcodec/pcodec) that is used by some Zarr datasets. It offers a "cpcodec" crate with C bindings which we can use.

Just for the record, this is the pco crate (https://crates.io/crates/pco).

> I've tried in https://github.com/OSGeo/gdal/pull/14779 to offer different options:
> 
> - by default to satisfy "casual" developers building GDAL who are mostly seeking ease of build and are fine with automatic download of dependencies (pcodec and corrosion-rs for the CMake rust integration), using git at CMake time,

This reminds me of OSSIM and how its superbuild used CMake to download dependencies, a convenient feature for those not working within the constraints of OS package build environments.
  
> - as well as offering more control with manual settings - either by pointing directly to an already installed cpcodec library, or by pointing to the locations of the source tree of corrosion-rs and pcodec - that should be more compatible of policies/constraints of packagers.

This is very welcome.

As long as it remains an optional dependency, I'll simply not use it for the Debian package.

If it becomes a required dependency, it will likely need to be vendored because I don't expect anyone to package the pco crate.

I don't see myself doing that either as I don't use Zarr datasets, like I don't use GeoParquet and can live without the Parquet driver in GDAL.

Users who do need this functionality are encouraged to help do the work to get the dependencies packaged and available on all release architectures.

> Review of people who might have integrated Rust crates in CMake C/C++ projects welcome. See the PR description for details.

So far I've managed to avoid Rust, we'll see how long that lasts.

Python projects are increasingly following the example of python-cryptography and adopting Rust dependencies, e.g. cql2-rs for pystac-client.

Kind Regards,

Bas

-- 
  PGP Key ID: 4096R/6750F10AE88D4AF1
Fingerprint: 8182 DE41 7056 408D 6146  50D1 6750 F10A E88D 4AF1


More information about the gdal-dev mailing list