[5.0.3] - 2025-05-22 "The Geo Release" 🌍
qsv 5.0.3 represents a major milestone with significant enhancements to its geospatial data processing capabilities.
They're targeted to support the Datapusher+ Data Resource Upload First (DRUF) workflow for "automagical metadata inferencing" - focusing on DCAT-US v3 recommended spatial and temporal properties that would otherwise be too tedious to manually compile:
New Geocoding Capabilities
- Added IP geolocation with new
--iplookup
and--iplookupnow
subcommands in thegeocode
command - Integrated Maxmind GeoLite2 database support for accurate IP-to-location mapping
- Enhanced geocoding performance (up to 5x faster) with rkyv serialization (contributed by @estin)
Enhanced geoconvert Command
- Added CSV input support alongside existing geospatial formats
- Introduced GeoJSONL output format for streaming workflows
- Added stdin support for all formats except SHP input
- New coordinate handling options:
--latitude
and--longitude
parameters - Added
--max-length
option for output control - Comprehensive test coverage additions
- all contributed by @rzmk!
🚀 Performance & Infrastructure Improvements
Polars Integration
- Upgraded Polars from 0.46.0 to 0.48.1 with intermediate releases
- Enhanced Polars schema support across multiple commands (
schema
,joinp
,pivotp
,sqlp
) - Added
--polars
mode to theschema
command to explicitly create a polars schema file on demand, rather than as a side-effect of thesqlp
command using its--cache-schema
option.
Core Performance
- Microoptimizations in the
sort
command - Improved file handling with tempfile usage in
edit --in-place
- Enhanced auto-decompression support now available suite-wide for gz, zlib, and zst files
🛠️ New Features & Usability
Enhanced Commands
edit
: New--in-place
option for direct file modification with automatic backup (.bak) creationforeach
: Added "/" to splitter pattern for improved path handlingstats
: NewQSV_STATS_STRING_MAX_LENGTH
environment variable for string analysis controlto
: Added--all-strings
option for simplified data type handling
Distribution & Installation
- Added conda package support with installation instructions
- New download badges and streamlined installation documentation
- Retired older glibc-2.31 and musl-1.2.3 "prebuilt-older" binaries as Ubuntu 20.04 has been retired and no longer supported with GitHub Actions.
- Discontinued MSI installer in favor of the easier qsv Windows Easy Installer (thanks @rzmk!)
Quality & Stability
- Applied multiple clippy lint suggestions for code quality
- Enhanced test coverage, particularly for geospatial functions
- Improved documentation with better examples and clearer explanations
- Fixed stdin handling issues in the
split
command
🎯 Default Feature Changes
The qsvdp
variant now includes geocode
and geoconvert
commands by default, making geospatial functionality more accessible to Datapusher+ users with Jinja2-powered metadata formulas.
NOTE:
- for qsv v5.0.3,
cargo install
will NOT worked as the calamine crate (which powers theexcel
command) is pinned to zip 2.5.0 which was yanked.- unfortunately, the broken zip dependency also prevents us from publishing qsv 5.0.3 to
crates.io
- for both cases, either install the prebuilts or compile from source with
cargo build
.
Added
edit
: add--in-place
(and test) which uses tempfile by @rzmk in #2744foreach
: add "/" to splitter pattern #2754geoconvert
: add CSV input and GeoJSONL output and use buf by @rzmk in #2690geoconvert
: add stdin support (except for SHP input) by @rzmk in #2699geoconvert
: add--latitude
and--longitude
options by @rzmk in #2707geoconvert
: add--max-length
option #2711geocode
: addiplookup
andiplookupnow
subcommands #2741- tests:
geoconvert
- add basic tests and move tests to test_geoconvert.rs by @rzmk in #2717 qsvdp
now include geocode & geoconvert commands by default #2697stats
: QSV_STATS_STRING_MAX_LENGTH env var #2709to
: add--all-strings
option #2746- docs: add conda install command by @rzmk in #2718
- docs: add qsv download badges and update install instructions by @rzmk in #2721
Changed
geocode
: bump geosuggest crate to use much faster rkyv serialization by @estin in #2734sort
: microoptimize #2748- feat: update completions for qsv v5.0 by @rzmk in #2752
- Improved Polars Schema support #2703
- Bump polars from 0.46.0 to 0.47.0 87bf7b7
- Bump polars py-1.30.0-beta-1 #2747
- Bump polars to 0.48.0 5a037ee
- build(deps): bump polars from 0.48.0 to 0.48.1 by @dependabot in #2750
- build(deps): bump polars-ops from 0.48.0 to 0.48.1 by @dependabot in #2751
- build(deps): bump actions/setup-python from 5.5.0 to 5.6.0 by @dependabot in #2713
- build(deps): bump actix-web from 4.10.2 to 4.11.0 by @dependabot in #2742
- build(deps): bump bytemuck from 1.22.0 to 1.23.0 by @dependabot in #2719
- build(deps): bump chrono from 0.4.40 to 0.4.41 by @dependabot in #2722
- build(deps): bump ext-sort from 0.1.4 to 0.1.5 by @dependabot in #2736
- build(deps): bump file-format from 0.26.0 to 0.27.0 by @dependabot in #2735
- build(deps): bump pyo3 from 0.24.1 to 0.24.2 by @dependabot in #2708
- build(deps): bump jaq-json from 1.1.1 to 1.1.2 by @dependabot in #2714
- build(deps): bump jaq-std from 2.1.0 to 2.1.1 by @dependabot in #2715
- build(deps): bump jaq-core from 2.1.1 to 2.2.0 by @dependabot in #2716
- build(deps): bump jsonschema from 0.29.1 to 0.30.0 by @dependabot in #2704
- build(deps): bump libc from 0.2.171 to 0.2.172 by @dependabot in #2696
- build(deps): bump sysinfo from 0.34.2 to 0.35.0 by @dependabot in #2724
- build(deps): bump minijinja from 2.9.0 to 2.10.0 by @dependabot in #2727
- build(deps): bump minijinja from 2.10.1 to 2.10.2 by @dependabot in #2732
- build(deps): bump minijinja-contrib from 2.9.0 to 2.10.0 by @dependabot in #2728
- build(deps): bump minijinja-contrib from 2.10.1 to 2.10.2 by @dependabot in #2733
- build(deps): bump pyo3 from 0.24.2 to 0.25.0 by @dependabot in #2745
- build(deps): bump rand from 0.9.0 to 0.9.1 by @dependabot in #2702
- build(deps): bump simd-json from 0.15.0 to 0.15.1 by @dependabot in #2701
- build(deps): bump sysinfo from 0.35.0 to 0.35.1 by @dependabot in #2740
- build(deps): bump tempfile from 3.19.1 to 3.20.0 by @dependabot in #2739
- build(deps): bump tokio from 1.44.2 to 1.45.0 by @dependabot in #2731
- bump indirect dependencies
- apply select clippy lint suggestions
- bump MRSV to 1.87.0
Fixed:
- docs: fix typo in apply operations replace example by @HarrisonMc555 in #2743
- fix:
split
save stdin to tempfile #2706
New Contributors
- @estin made their first contribution in #2734
- @HarrisonMc555 made their first contribution in #2743
Full Changelog: 4.0.0...5.0.3