SUEWS v2026.4.3: Rust FFI Backend, RSL Dynamics & T2 Attribution
·
252 commits
to master
since this release
Installation
pip install --upgrade supyWhat's New
Version 2026.4.3 (released on 3 April 2026)
This release delivers a major backend migration to Rust FFI, RSL physics refinements, a new temperature attribution module, DTS enhancements, seasonal albedo adjustments, comprehensive validation improvements, and extensive bug fixes.
Highlights
Rust FFI Bridge
- Replaced f90wrap with a Rust FFI bridge as the sole simulation backend (#1209)
- Unified CLI interface with automatic PATH installation (#1215)
- Validated Rust output layout against Fortran metadata (#1226)
RSL Physics
- Dynamic computation of c2m/c2h from Harman & Finnigan (2007, 2008) RSL theory (#1116)
- Refined parameterisation with explicit R = beta * hd / elm (#1232)
- Fixed interpolation bounds and division-by-zero pitfalls in RSL profiles (#1228, #1229)
T2 Attribution Module
- Diagnose near-surface temperature, humidity, and wind speed changes by physical process contributions, with diurnal cycle and heatmap visualisation (#918)
Seasonal Albedo
- Seasonal adjustment of surface albedo (
alb_id) for vegetated surfaces (#1211) - Auto-initialise vegetation albedo from phenology state (#1133)
DTS Enhancements
chunk_dayparameter for long simulations (#1172)run_dts_multifor multi-grid simulation support (#1173)- Hardened parallel multi-grid execution (#1176)
- Fixed Pydantic model serialisation across multiprocessing spawn boundaries (#1197)
Validation
- Draft rules registry for structured validator rule management (#1246)
- Conditional validation via Pydantic v2
model_fields_set(#1247) - Upper limit on
nlayerto prevent run crashes (#1206) SUEWSOutputindex property (#1178)
Bug Fixes
- Guarded SPARTACUS LW solver against NaN from matrix singularity (#1212)
- Fixed SUEWS output packing overflow with fail-fast behaviour (#1198)
- Fixed Pydantic dict format handling in YAML numeric parser (#1236)
- Pinned pydantic>=2.12 to prevent OSGeo4W version conflict (#1213)
- Fixed STEBBS WWR extreme cases (WWR = 0 or 1) (#1261)
- Fixed biogenic CO2 to use local climate instead of global average (#1117)
- Fixed missing STEBBS parameters in sample_config.yml (#1111)
- Auto-repair stale refs in fetch_origin conductor (#1239)
CI and Security
- Hardened dependency supply chain after LiteLLM incident with startup hook auditing (#1264)
- Rust change detection and Cargo build caching across all platforms (#1217, #1219)
- Gated tag-triggered deployments on master ancestry (#1162)
- Pre-built documentation served from
rtdbranch (#1167) - Deprecated
env.ymland conda/mamba build pathway (#1163)
Other Improvements
- Discourse-to-GitHub issue bridge with webhook sync (#1138)
- Status tags for changelog entries (governance) (#1181)
- Revised README as science-first landing page (#1265)
- Anthropogenic emission defaults and parameter guidance (#1231)
- User workflow guide for getting started (#1014)
- Executable documentation examples using sphinx-gallery (#1057)
Breaking Changes
- f90wrap is no longer supported; the Rust FFI bridge is the sole backend (#1209)
- Deprecated
env.ymland conda/mamba build pathway (#1163)
Full Changelog
For complete details, see the CHANGELOG.
Citation
This release is archived on Zenodo with a DOI for academic citation. The DOI appears automatically once Zenodo processing completes (usually within minutes).