COOLJAPAN
← All posts

OxiGDAL 0.1.7 Released — 233 Verified Defects Fixed: Real Codecs Replace Silent Stubs, Three New Demos Ship

OxiGDAL 0.1.7 is a production-hardening release: 233 verified defects fixed across 69 crates — a GeoTIFF corruption bug, JPEG2000 spec conformance, real FlatGeobuf/HDF5 codecs, an RBAC bypass — plus a blake3/Ed25519 attestation module and three new WASM demos. 76 crates, 16,909 tests. The sovereign geospatial layer for COOLJAPAN.

release oxigdal gdal geospatial pure-rust security hdf5 geoparquet wasm

The Pure Rust GDAL alternative just finished the most thorough defect hunt of its life — and came out the other side with real codecs where stubs used to be.

Today we released OxiGDAL 0.1.7 — a production-hardening release that fixes 233 verified defects across 69 crates, replaces half a dozen silent stub implementations with real, spec-conformant codecs, and ships three new hosted WebAssembly demos on top of the existing GeoLab viewer.

No C. No C++. No Fortran. No PROJ/GEOS, no libsqlite3, no ring — the C-free default build that 0.1.6 established doesn’t move an inch in 0.1.7. What changes is what’s underneath that promise: a systematic, multi-lane defect sweep found and fixed 233 real bugs — silent no-ops, an unread security check, a fake placeholder blob — the kind of thing that doesn’t show up until someone is depending on the answer being correct. OxiGDAL 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.

Why OxiGDAL 0.1.7 is a game changer

GDAL’s problems are well known to anyone who has fought a configure script at 2am:

OxiGDAL 0.1.7 ends all of that — and adds a second, quieter promise on top: the code that ships does what its name says. A production-hardening campaign audited the workspace end to end this cycle and fixed 233 verified defects, several of which were silent-corruption or silent-bypass bugs that had already shipped in earlier releases without anyone noticing:

Technical Deep Dive: what 0.1.7 rebuilt

  1. Format-driver correctness (oxigdal-geotiff, oxigdal-jpeg2000, oxigdal-flatgeobuf, oxigdal-drivers/hdf5, oxigdal-netcdf, oxigdal-drivers/gml, oxigdal-drivers-advanced) Beyond the headline fixes above: GeoTIFF’s LERC2 decoder now implements the real Esri/GDAL bit-stuffed block format (header parsing, RLE validity mask, BitStuffer2 variable-bit-width unpacking, exact dequantization) — LERC encode stays an honest typed error rather than a fabricated blob. GML now parses srsDimension so 3D geometries stop getting silently flattened to 2D, and VRT’s FirstValid pixel function is fixed for multi-byte samples (u16/f32/f64) while BandMath recognizes B10 and higher (previously dropped past B9).

  2. Security & authorization hardening (oxigdal-security, oxigdal-gateway) Beyond the RBAC fix: TOTP verification moved to constant-time comparison with a ±1 time-step (30s) clock-skew tolerance per RFC 6238 §5.2, and backup-code/SMS-challenge comparisons are constant-time too. oxigdal-security’s dependencies now split into enterprise / tls / attestation features (default enables all three), and the new attestation module — a domain-separated blake3 hash chain, a Merkle root with per-entry inclusion proofs, and an Ed25519 session seal — compiles for wasm32 under --no-default-features --features attestation.

  3. Cloud & service real-wiring (oxigdal-cloud, oxigdal-cloud-enhanced, oxigdal-services, oxigdal-query, oxigdal-server) Azure IMDS managed-identity tokens and GCP metadata/IAM-impersonation tokens are real now, not placeholders; a multicloud build_backend() factory (S3/GCS/AzureBlob/Http) ships with a backend cache; WFS-T transactions and WCS coverage read/write are fully implemented against real GeoTIFF I/O; GROUP BY actually executes in the SQL query engine; and server.toml is actually loaded via OXIGDAL_CONFIG in Docker/Kubernetes deployments instead of being silently discarded.

  4. Browser-native demos + GeoParquet pushdown (oxigdal-wasm, oxigdal-wasm-geoparquet, oxigdal-geoparquet) New plan_pushdown() / execute_pushdown() APIs compute row-group and column-chunk byte ranges from Parquet footer metadata alone — zero I/O — and now correctly detect GeoParquet 1.1 covering.bbox paths at real scale (the 5.9 GB, 9,533-row-group VIDA dataset prunes correctly). A new crate, oxigdal-wasm-geoparquet, brings a browser range-request client with SQL-fragment predicate pushdown. Three new hosted demos — GeoSentinel, GeoVault, GeoParquet Live — join the rebranded GeoLab, all sharing the same WASM package.

Getting Started

cargo add oxigdal

GeoTIFF, GeoJSON, and Shapefile ship by default — add --features full for all 17 format drivers.

use oxigdal::Dataset;

fn main() -> oxigdal::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(())
}

This is the Quick Start straight from the README — and as of 0.1.7, it actually compiles as written (crs() returns an Option, a real doc-accuracy fix landed this release).

What’s New in 0.1.7

Tips

This is the foundation

0.1.7 leans on more of the COOLJAPAN stack than any OxiGDAL release before it, and tightens several of those bonds directly this cycle: CRS transforms run on OxiProj, HDF5 and NetCDF read/write through oxih5 and oxinetcdf (both bumped to 0.2.0 this cycle and verified source-compatible with zero driver-side changes), 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 (plus scirs2-neural, -autograd, -optimize), 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 gets to a C-free default build with no hidden native dependency anywhere in the tree.

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

One honest footnote: this is the last release under the OxiGDAL name. Development continues as OxiGeo starting with v0.2.0 — nothing above changes because of that; the 233 fixes, the three demos, and the 76 crates are exactly as real either way.

Star the repo if you want a geospatial stack that treats “it compiles” and “it’s correct” as two separate bars — and clears both. The era of wondering whether your GDAL-adjacent dependency tree is quietly doing the wrong thing is over.

KitaSan at COOLJAPAN OÜ July 20, 2026

↑ Back to all posts