Skip to content

Releases: networmix/NetGraph-Core

v0.4.1

17 Feb 12:13

Choose a tag to compare

[0.4.1] - 2026-02-17

Added

  • Build: Add Linux ARM64 (aarch64) wheel builds using native GitHub ARM runners in the release workflow.

v0.4.0

17 Feb 11:02

Choose a tag to compare

[0.4.0] - 2026-02-17

Added

  • Python 3.14: Add support for Python 3.14 in CI tests, wheel builds, and packaging.
  • Free Threading: Declare free-threading compatibility (py::mod_gil_not_used) for Python 3.13t/3.14t builds. Build and publish free-threaded (cp314t) wheels.

Changed

  • CI: Upgrade cibuildwheel from v2 to v3.3.1 for Python 3.14 wheel builds.

Fixed

  • Python Bindings: Fix object leak on Python 3.14 caused by pybind11 not clearing managed dicts during deallocation. Replace dynamic_attr + _graph_ref pattern with py::keep_alive for FlowState, FlowGraph, and FlowPolicy.

v0.3.6

17 Feb 09:53

Choose a tag to compare

[0.3.6] - 2026-02-17

Fixed

  • Python Bindings: Fix build failure with pybind11 3.x typed tuples by adding explicit -> py::tuple return type on the spf lambda.

Changed

  • CI: Add CentOS Stream 9 build and test jobs.

[0.3.5] - 2026-02-08

Fixed

  • K-Shortest Paths: Fix off-by-one in Yen's prefix comparison and PredDAG CSR fill order. Paths visiting nodes out of numerical order (e.g., [0,3,2]) previously produced malformed predecessor DAGs.

v0.3.4

03 Feb 03:36

Choose a tag to compare

[0.3.4] - 2026-02-02

Changed

  • Build: Simplified version handling.

[0.3.3] - 2026-02-02

Fixed

  • License: Replaced incomplete AGPLv3 LICENSE file with complete official text from GNU.

v0.3.2

12 Dec 08:25

Choose a tag to compare

[0.3.2] - 2025-12-12

Fixed

  • Profiling: Fix ODR violation that caused empty stats when profiling was enabled. Moved profiling_enabled() and ProfilingStats::instance() definitions from inline header to profiling.cpp to ensure a single instance when static library is linked into the Python module.

v0.3.1

07 Dec 09:22

Choose a tag to compare

[0.3.1] - 2025-12-08

Added

  • Profiling: Runtime profiling infrastructure for C++ hot paths (shortest_paths_core, place_demand, place_on_dag).
    • Enable via NGRAPH_CORE_PROFILE=1 environment variable.
    • Python API: profiling_enabled(), profiling_dump(), profiling_reset().
    • Minimal overhead when disabled (single static bool check per instrumented scope).
    • ~2% overhead when enabled.

Changed

  • Build: Default optimizations: LTO, loop unrolling, -fno-math-errno. Add make install-native for CPU-specific builds.

v0.3.0

06 Dec 21:54

Choose a tag to compare

[0.3.0] - 2025-12-06

Changed

  • BREAKING: Minimum Python version raised to 3.11 (was 3.9)

v0.2.3

06 Dec 20:36

Choose a tag to compare

[0.2.3] - 2025-12-06

Changed

  • Python bindings: StrictMultiDiGraph.from_arrays now requires ext_edge_ids so callers always supply stable external edge identifiers.
  • FlowPolicy: construction is now config-only (via FlowPolicyConfig), dropping the parameter-heavy constructor.

Fixed

  • FlowGraph: get_flow_path now filters only below-kEpsilon noise so paths are reconstructed even when per-edge allocations are smaller than kMinFlow.