Skip to content

v0.10.0

Latest

Choose a tag to compare

@github-actions github-actions released this 29 Aug 23:39
· 4 commits to main since this release
e97b31d

PowerIO 0.10 is the public beta of the 1.0 API. API corrections may land before 1.0.0 as downstream integrations exercise the new design.

powerio::parse(source) returns PioModule<PioValue>. The value is a balanced network, multiconductor network, time series, scenario set, problem instance, or solution. DOE GO Challenge 3 JSON produces AcScucInstance, BMOPF JSON produces McAcOpfInstance, and DeepMind OPFData JSON produces AcOpfSolution. PyPSA snapshot axes, Egret time keys, and GridFM scenarios remain typed.

.pio.json stores one module with schema powerio.module/1. The document contains the typed value, source descriptions, source map, diagnostics, history, and extensions. The complete list of 20 value kinds is in the 0.10 release notes. The one way 0.9 reader and all retired names are documented in the migration guide.

powerio-core defines sources, diagnostics, and modules. powerio-tx and powerio-dist define the two network families. powerio-prob defines problem instances and solutions. powerio-matrix builds sparse matrices and graph data. The powerio crate provides format dispatch and the combined public API.

C ABI 6 replaces ABI 5. The measured change removes 70 symbols, changes 7 signatures, adds 91 symbols, and leaves 6 unchanged. The new surface uses retained handles, structured errors, pio_module_* functions, and pio_dc_data_* functions. The removed pio_package_*, pio_scopf_*, and solver row tables are described in the Developer Guides.

DC branch susceptance now follows the PowerModels sign convention. The public matrices satisfy B = A' Diagonal(b) A, Bf = Diagonal(b) A, p_shift = A' (b .* shift), and p_branch = -Bf va + b .* shift. PTDF and LODF calculations use a sparse direct factorization and retain a dense path for smaller systems.

Python uses powerio.parse(source). Format and value kind detection are automatic; value_type is an optional assertion. Julia uses parse_file(source) after using PowerIO. The CLI reads .pio.json anywhere it accepts a source and writes stored modules with powerio module.

The 0.10 release notes contain the complete API, format, ABI, performance, and migration details.

What's Changed

  • Record PowerIO 1.0 architecture baseline by @samtalki in #424
  • Retire powerio-diag into powerio-core by @samtalki in #425
  • Give powerio-prob the public calculation instances and solutions by @samtalki in #428
  • Emit the DC operators in PowerModels signs over the shared instance by @samtalki in #429
  • Expose the sparse AC power flow Jacobian at an operating point by @samtalki in #430
  • Assemble native multiconductor nodal admittance with exact merges by @samtalki in #431
  • Rebuild DC sensitivities on a sparse direct factorization by @samtalki in #432
  • Map problem defining formats to their instances and solutions by @samtalki in #433
  • Read Egret and PyPSA time series as classified sequences by @samtalki in #434
  • Read gridfm datasets as scenario sets with shared element tables by @samtalki in #436
  • Close the distribution and cost fidelity gaps and state the OpenDSS profile by @samtalki in #437
  • Drop the reader document trees and borrow scanner tokens by @samtalki in #438
  • Harden the binary and directory search paths with measured budgets by @samtalki in #439
  • Store PioModule as the versioned .pio.json document by @samtalki in #440
  • Select typed state and lower transformers and closed switches by @samtalki in #441
  • Expose module inspection, state selection, and the balanced lowering over MCP by @samtalki in #442
  • Raise the C ABI to v6 with owned handles, error handles, and DC data by @samtalki in #443
  • Share one DC data assembly across Rust, C, and Python by @samtalki in #444
  • Expose DC data and the release identity over MCP by @samtalki in #445
  • Gather the evaluation programs into one nonpublished workspace by @samtalki in #446
  • Audit the stored module reader and the DC row partition adversarially by @samtalki in #447
  • Document 1.0: the module document leads, ABI v6 has its guide by @samtalki in #448
  • Smoke every wheel before publication and pin the release identity by @samtalki in #449
  • Finish the PowerIO 0.10 release surface by @samtalki in #451

Full Changelog: v0.9.0...v0.10.0