Skip to content

Bring the release notes up to date and fix what the audit turned up - #651

Merged
julianspeith merged 8 commits into
masterfrom
fix/release-notes-audit
Sep 11, 2026
Merged

Bring the release notes up to date and fix what the audit turned up#651
julianspeith merged 8 commits into
masterfrom
fix/release-notes-audit

Conversation

@julianspeith

Copy link
Copy Markdown
Contributor

Summary

An audit of the Unreleased changelog section against all 129 commits since v4.5.0, plus fixes for what the audit found in the code. Six commits, each self-contained.

Release notes. Two plugins new since 4.5.0 had no entry (clock tree extractor) or no entry saying they exist (DOT viewer). Missing as well: the netlist bookkeeping speedup, module pin event coalescing, the delay gate type property, Boolean function and Liberty parser fixes, the hal_py.log_* functions, simulation wizard features, five GUI fixes, four build changes. Seven terse entries now say what the user sees and why; one sat in the wrong group, one described defects that never shipped, one made a claim the history contradicts.

Code, found by the audit.

  • Module::create_pin_group: the overload with an ID still defaulted to ascending after 55bf6c1 made the other one descending, and all four doc strings said ascending. Both overloads default to descending now, matching the GUI, the dataflow analysis and the module identification.
  • GateTypeProperty.delay was never bound to Python.
  • Clock tree extractor: a flip-flop clocked straight from a global input net got no edge to its clock net, so on a netlist without clock buffers every flip-flop was an isolated root. Fixed, with a new test suite covering the buffered and the direct case. Bindings keep the netlist alive, get_ptrs_from_vertices carries borrowed(), and every binding has a doc string so the lifetime check covers the class. -march=native removed. The plugin is now whitelisted in plugins/.gitignore; its files had been force-added.
  • DOT viewer: the Graphviz memory-discipline define was never passed to the compiler and both #ifdefs misspelled it, so that reader was dead code. Wired through. A std::cerr debug print and a typo removed, -march=native removed.
  • install_dependencies.sh wrote $BREW_PREFIX unexpanded into the shell config. The macOS workflow passed -DQt5_DIR at a Qt 6 install. Duplicate graphviz line in the Brewfile. "Autmatically rename pins" menu label.

Verification

Full suite passes locally, 42 of 42, on a Debug build against Qt 6.11, Python 3.14.7 and pybind11 3.1.0 (the CI runner's versions), including the two new clock tree tests. hal_py.GateTypeProperty.delay verified from Python.

Test plan

  • CI green on Ubuntu 22.04/24.04/26.04 and macOS

🤖 Generated with Claude Code

julianspeith and others added 8 commits September 11, 2026 10:01
Audited the Unreleased section against the 129 commits since v4.5.0.
Two plugins new since then had no entry at all: the clock tree extractor
was not mentioned, and the DOT viewer had two incremental lines but no
entry saying the plugin exists and what it does. The core bookkeeping
speedup, the module pin event coalescing, the delay gate type property,
the Boolean function and Liberty parser fixes, the hal_py log functions,
the simulation wizard features, five GUI fixes and four build changes
were missing as well. Seven terse entries now say what the user sees and
why, one entry sat in the wrong group, one described defects that never
shipped, and one claimed both shortest-path overloads existed before
when only one did.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Commit 55bf6c1 changed the default of the overload without an ID to
descending, in C++ and in both Python bindings, but left the overload
with an ID at ascending. The same call therefore built a descending
group from Python and an ascending one from C++, and all four doc
strings kept saying the default is ascending. Descending is what the
GUI, the dataflow analysis and the module identification produce, so
both overloads now default to it and the doc strings say so.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
GateTypeProperty::delay was added in C++ for the clock tree extractor
but the binding lists the enum values by hand and stopped at scan, so
hal_py.GateTypeProperty.delay did not exist.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
When the clock net of a flip-flop is a global input net, the extraction
inserted the net as a vertex and moved on without an edge to the
flip-flop, so on a netlist without clock buffers every flip-flop was an
isolated root. The branch for nets reached through a gate adds that edge;
this one now does as well. Tests cover the buffered and the direct case,
the plugin had none.

The Python bindings keep the netlist alive behind a returned tree,
protect the objects handed out by get_ptrs_from_vertices the way the
other getters do, and carry doc strings with return types so the binding
lifetime check covers the class from now on. -march=native is gone from
the build: nothing in the plugin needs it and it made the library
non-portable. The plugin is whitelisted in plugins/.gitignore, which
had been bypassed by force-adding its files.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… leftovers

The CMake check for Agdisc_t::mem set HAS_AGDISC_MEM but never passed it
to the compiler, and the two #ifdefs spelled it HAS_AGDISK_MEM, so the
in-memory reader was dead code on every Graphviz version; the plain
reader always ran, which is why it worked. The define is now passed
when the check succeeds and the guards use its name. The colour-style
toggle no longer prints to stderr, its menu text no longer says
"attibute", and -march=native is gone from the build as nothing needs
it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…l config

install_dependencies.sh appended export PATH="$BREW_PREFIX/..." lines to
.zshrc and .bash_profile in single quotes, so the variable was never
expanded and every such line prepended a path that does not exist.
The lines are now written and checked with the prefix expanded.

Also: the macOS workflow passed -DQt5_DIR at a Qt 6 install, which CMake
ignored, and now passes Qt6_DIR; the Brewfile listed graphviz twice; and
the pin group context menu said "Autmatically rename pins".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@julianspeith
julianspeith merged commit 83e8bfb into master Sep 11, 2026
5 checks passed
@julianspeith
julianspeith deleted the fix/release-notes-audit branch September 11, 2026 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant