COOLJAPAN
← All posts

OxiProj 0.1.3 Released — No New Features, Five Inherited Fixes

OxiProj 0.1.3 is a maintenance release: no public API changes, no behavior changes. It pulls forward real hardening from five upstream COOLJAPAN crates — a 44-agent HDF5 interop audit, a CUDA async-copy race-condition fix, faster zero-copy DEFLATE decoding, and OxiZ's soundness sweep — plus a `wide` 1.6 deprecation cleanup in the SIMD scalar power path. Still 100% Pure Rust, no C, no FFI.

release oxiproj proj gis cartography geospatial pure-rust maintenance

Not every release is a feature release. Some releases are just you, catching up on your reading.

Today we released OxiProj 0.1.3 — a maintenance release on top of the 0.1.2 hardening pass. There is no new roadmap surface area here, no bug fixed in OxiProj’s own code, and no public API change. What changed is which versions of five upstream COOLJAPAN crates OxiProj now depends on — and each of those upstream releases shipped real work worth inheriting.

OxiProj is still exactly what it was on day one: a 100% Pure-Rust reimplementation of PROJ 9.8.0 — not a binding to libproj, no proj-sys, no C toolchain. Every crate is still #![forbid(unsafe_code)], wasm included. 0.1.3 doesn’t touch any of that; it just moves the floor OxiProj stands on.

Why bumping dependencies is still worth a release

A “just bump deps” release sounds unglamorous until you look at what the deps actually did:

None of that is code OxiProj wrote. All of it is code OxiProj now runs on.

Technical Deep Dive: the one line of OxiProj’s own

The only change inside OxiProj’s own source this cycle: wide 1.6 marked f64x4::powf(scalar) #[deprecated] in favor of powf_simd. oxiproj-projections::simd_scalar::SimdF64x4::powi/powf — the internal SIMD scalar-power helpers behind exact-autodiff distortion factors — now call powf_simd(f64x4::splat(..)) directly, which is the exact computation the old powf performed internally. Same output, zero deprecation warnings under -D warnings.

Getting Started

Nothing changes in how you reach for OxiProj:

cargo add oxiproj
use oxiproj::{Crs, Transformer, Coordinate};

fn main() -> Result<(), oxiproj::TransformError> {
    // WGS84 geographic (lon, lat in degrees) -> Web Mercator (meters).
    let wgs84 = Crs::wgs84()?;
    let webmerc = Crs::web_mercator()?;
    let t = Transformer::new(wgs84, webmerc)?;

    let input = Coordinate { x: 9.0, y: 48.0 };
    let output = t.transform(&input)?;
    println!("Web Mercator: x = {}, y = {}", output.x, output.y);

    Ok(())
}

What’s New in 0.1.3

Tips

This is the foundation

0.1.3 leans on the same COOLJAPAN stack as always — oxisql-sqlite-compat for the C-free EPSG engine, oxih5 for GGXF grids, oxiblas for Helmert LSQ, oxicuda for GPU reprojection, oxiz for SMT-verified Helmert bounds, and oxiarc-deflate/lzw for compressed grids — with the same north star: letting OxiGDAL drop proj-sys and build fully C-free.

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

Star the repo if you want geodesy that stays correct not just when its own code changes, but when the ground underneath it does. The era of pretending a “just deps” release doesn’t matter is over — Pure Rust means you actually get to read what changed.

KitaSan at COOLJAPAN OÜ August 5, 2026

↑ Back to all posts