v0.3.1
- Parser warnings: PSS/E and PowerWorld
.auxparse warnings now surface
throughParsed::warningsand the C ABI'spio_warningspath instead of
living only in docs or writer warnings. - PSS/E: hardened record tokenization and continuation handling. Slash
characters inside quoted fields are no longer treated as comments; incomplete
transformer and two-terminal DC continuation records now error clearly instead
of consuming section terminators; transformer records with non-unitCW/CZ
now warn that impedance and turns values were read without conversion. - PSS/E: load ZIP components and v34/v35 load tail fields are retained in extras
and replayed on write. If typed loadp/qno longer match retained
PL/QL/IP/IQ/YP/YQ, the writer emits typed constant power and reports the
stale extras instead of replaying wrong source components. - PSS/E: quoted IDs, names, and HVDC names are sanitized before duplicate ID
allocation, so collisions created by replacing quotes or/are handled
deterministically and reported in conversion warnings. - Normalization: generator cost per-unit scaling now dispatches through explicit
cost models, and slack bus selection ignoresNaNgeneratorpmaxvalues
when choosing among candidate reference buses. - PSLF and PowerWorld AUX tokenization: quoted
/and//text is kept as data
rather than treated as continuation or comments. PowerWorld.auxnow reports
unmodeledDATAblocks as parse warnings while retaining source text for
same-format writeback. powerio-distOpenDSS: quoted comment markers are preserved in lexer values,
indented block comments are skipped, capacitor and reactor kvar shunts share
validation, reactors with kvar/kv map to typed shunts with negative
susceptance, and invalid shunt forms stay untyped with explicit warnings.powerio-distBMOPF: fixed OpenDSS generators with fixed P/Q setpoints now
encode as negative BMOPF loads with warnings. The vendored draft schema was
refreshed for multi-digit matrix keys, corrected$id, and nonnegative
switchi_max, so 10-conductor linecode output validates without the old
schema warning.- C distribution ABI v1 (
PIO_DIST_ABI_VERSION1): directpio_dist_*callers
get a separate version check; the supported one-shot conversion order is
(input, from, to, ...). - C ABI tests now reject the old target-before-source conversion order for both
pio_convert_*andpio_dist_convert_*, including the compiled C smoke test
againstpowerio.h. - C ABI hardening: unit tests pin every public
PIO_*macro, opaque typedef,
andpio_*prototype inpowerio.h; Cargo now checks Rust source/header
symbol parity; CI builds the no-default core ABI plus the release
arrow,gridfm,distfeature smoke test and C++ header/link sanity checks. - No core C ABI break;
PIO_ABI_VERSIONstays 4. No existing Rust or Python
API was removed or reordered.
What's Changed
Full Changelog: v0.3.0...v0.3.1