COOLJAPAN
← All posts

OxiGeo 0.2.0 Released — OxiGDAL Has a New Name, and 74 Crates Just Moved With It

OxiGDAL is now OxiGeo. Version 0.2.0 is a rename-only release — functionally identical to v0.1.7 — that republishes all 74 crates, the CLI, and the Python/npm/WASM/mobile bindings under the oxigeo name. Old GitHub URLs redirect; v0.1.7 remains the final OxiGDAL release. The sovereign geospatial layer for the COOLJAPAN ecosystem, now under its permanent name.

release oxigeo oxigdal gdal geospatial pure-rust rename wasm

The Pure Rust GDAL alternative just got the one change that doesn’t touch a single line of logic — its own name.

Today we released OxiGeo 0.2.0 — the first release under a new project name. OxiGeo is what OxiGDAL is now called. Nothing about the code changed: 0.2.0 is functionally identical to v0.1.7, the production-hardening release published earlier today under the old name. What changed is every identifier that spelled out the old name: 74 crates on crates.io, the CLI binary, the Python and npm packages, the C/mobile FFI symbols, the WASM artifacts, and the environment variables all now say oxigeo instead of oxigdal.

No C. No C++. No Fortran. No PROJ/GEOS, no libsqlite3, no ring — the C-free default build carries over untouched, because the build itself didn’t change. OxiGeo still compiles to a single static binary (or a sub-1MB WASM bundle) and runs everywhere Rust runs: Linux, macOS, Windows, WASM, iOS, Android, and bare-metal no_std. This is an independent reimplementation and is not affiliated with the GDAL project — the rename makes that distinction a little cleaner too.

Why the rename matters

A name borrowed from the library you’re replacing creates its own friction over time:

OxiGeo 0.2.0 draws a clean line under all of that with a name that’s fully its own, while keeping every promise the old name made:

Technical Deep Dive: what actually moved

  1. Crates and Cargo identity. Every crate name changes from oxigdal/oxigdal-<name> to oxigeo/oxigeo-<name> across all 74 published crates (the workspace has 76 total; oxigeo-python and oxigeo-examples are publish = false). Rust API types that carried the old prefix — OxiGdalError and siblings — become OxiGeo* (OxiGeoError).

  2. CLI and runtime identifiers. The CLI binary is oxigeo instead of oxigdal. Every OXIGDAL_* environment variable (OXIGDAL_CONFIG, OXIGDAL_HOST, OXIGDAL_PORT, OXIGDAL_WORKERS, OXIGDAL_LOG_LEVEL, OXIGDAL_DATA_DIR, OXIGDAL_CACHE_DIR) becomes OXIGEO_*. Runtime strings follow suit: the HTTP User-Agent is now OxiGeo/1.0, the Kafka consumer group is oxigeo-etl, the ETL checkpoint directory is oxigeo-checkpoints, the edge cache directory is .oxigeo_cache, and the attestation format id is oxigeo-attestation.

  3. Language bindings. The PyPI package is now oxigeo (import oxigeo, native module oxigeo._oxigeo). The npm packages are @cooljapan/oxigeo, @cooljapan/oxigeo-node (plus its platform packages), and @cooljapan/oxigeo-geoparquet. WASM build artifacts follow the same pattern (oxigeo_wasm*, napi artifact oxigeo.<triple>.node).

  4. Native and container surfaces. C/mobile FFI symbols now carry the oxigeo_ prefix; the JNI class is com.cooljapan.oxigeo.OxiGeo; the mobile header is oxigeo_mobile.h with include guard OXIGEO_MOBILE_H. Container images move from oxigdal/* to oxigeo/*, and the systemd unit is oxigeo-server.service.

Getting Started

[dependencies]
oxigeo = "0.2"  # GeoTIFF + GeoJSON + Shapefile by default

# Full feature set:
oxigeo = { version = "0.2", features = ["full"] }
use oxigeo::Dataset;

fn main() -> oxigeo::Result<()> {
    let dataset = Dataset::open("world.tif")?;
    println!("Format : {}", dataset.format());
    println!("Size   : {}x{}", dataset.width(), dataset.height());
    println!("CRS    : {}", dataset.crs().unwrap_or("unknown"));
    Ok(())
}

Everything else — the 17 format drivers, the CRS transforms, the raster/vector algorithms, the four hosted WASM demos (GeoLab, GeoSentinel, GeoVault, GeoParquet Live) — works exactly as it did under the OxiGDAL name, because it’s the same ~747K-SLoC, 76-crate codebase underneath.

What’s New in 0.2.0

Tips

This is the foundation

OxiGeo leans on the same Pure Rust COOLJAPAN stack it did as OxiGDAL, unchanged by the rename: CRS transforms run on OxiProj, HDF5 and NetCDF read/write through oxih5 and oxinetcdf, SQLite via oxisql-sqlite-compat (Limbo), TLS via OxiTLS, compression across the format drivers via the OxiArc family (oxiarc-zstd, -lz4, -deflate, -lzw, -bzip2, -brotli, -snappy, -archive), ML tensor math via SciRS2-Core, model export and inference validated against OxiONNX, and model-weight serialization on OxiCode instead of bincode. Every one of those is itself Pure Rust — which is how a 76-crate, ~747K-SLoC workspace keeps a C-free default build with no hidden native dependency anywhere in the tree, under either name.

Repository: https://github.com/cool-japan/oxigeo

Star the repo if you’d rather your geospatial dependency have a name of its own than one borrowed from the library it replaced. The 76 crates, the 17 format drivers, and the C-free build are exactly as real as they were yesterday — just under the name they were always going to end up with.

KitaSan at COOLJAPAN OÜ July 20, 2026

↑ Back to all posts