Skip to content

v0.27.2

Choose a tag to compare

@jeandet jeandet released this 14 Jun 07:59
· 21 commits to main since this release

Maintenance release: crash fixes, large performance wins, and much better error reporting. All changes are bug fixes/hardening/perf — no API changes since v0.27.1. Bundles the matching NeoQCP engine fixes.

Performance

  • Pan/zoom/autoscale no longer scan the entire dataset on the GUI thread. On large series (10M×3, 0.1% visible window): min/max rescale ~17 ms → ~0.04 ms (~400×), percentile rescale ~7 ms → ~0.5 ms (~13×). Removes the jank when interacting with big spectrograms and multi-line graphs.

Stability (crash fixes)

  • No more use-after-free when closing a plot (or the window) while a spectrogram/line resample is still in flight — the classic "random crash on close."
  • Waterfall plots no longer race in-flight resample jobs or draw stale data on gain/offset/normalize changes.
  • Providers or set_data returning float32 or mismatched-length arrays no longer terminate the process — invalid batches are rejected (direct calls raise; provider batches are dropped with a warning).
  • Re-publishing a product into the products tree no longer corrupts row bookkeeping or frees a live node.
  • Function graphs no longer leak a worker thread on destruction.

Usability

  • Wrong-argument calls now raise a readable TypeError listing the accepted overloads, instead of a cryptic NameError: name 'SciQLopPlotsBindings' is not defined.
  • Non-numeric / garbage arrays raise instead of silently rendering nothing.
  • SciQLopPlotRange("…","dates") with an unparsable date now raises instead of producing silent NaN bounds (and its repr no longer prints a fake 1970-01-01 for NaN ranges).
  • Removing a plot no longer emits "Abstract method called" / "plottable not in list" diagnostic noise.

Build / CI

  • Windows (MSVC) build fix (Q_FUNC_INFO instead of __PRETTY_FUNCTION__).
  • Data-source shape lies degrade to empty with a warning instead of asserting/aborting.

Full audit and fuzzing-campaign details in PRs #83 and #84.