Skip to content

Latest commit

 

History

History
116 lines (91 loc) · 7.16 KB

File metadata and controls

116 lines (91 loc) · 7.16 KB

v0.13.0 (2025-07-31)

Chore

  • clean up dependencies Using hydro_optimize as a regular dependency in hydro_test results in leaking many dependencies including hydro_deploy, so this moves it to a dev-dependency

New Features

  • improve logging for profiling
  • Use partitioning analysis results to partition Test/insta changes stem from changed implementation of broadcast_bincode, will change again once #1949 is implemented. Also added missing cases for Persists hidden behind CrossProduct, Difference, AntiJoin, Join, and Scan for decoupler.
  • Remove commercial ilp
  • Partitioning analysis Integrating with the partitioner next
  • capture stack traces for each IR node Because Hydro is staged, the stack traces capture the structure of the program, which is helpful for profiling / visualization.
  • add scan operator
  • Decoupling analysis A Gurobi license is required to run code that uses hydro_optimize (for ILP over decoupling decisions)

Bug Fixes

  • don't snapshot-test backtraces Backtraces aren't stable across Unix / Windows. Just have a separate test for them.

    Also defers resolution of backtraces until we actually need them to improve performance.

Refactor

  • separate externals from other location kinds, clean up network operators First, we remove externals from LocationId, to ensure that a LocationId only is used for locations where we can concretely place compiled logic. This simplifes a lot of pattern matching where we wanted to disallow externals.

    Keys on network inputs / outputs (from_key and to_key) are only relevant to external networking. We extract the logic to instantiate external network collections, so that the core logic does not need to deal with keys.

Refactor (BREAKING)

  • invert external sources and clean up locations in IR First, instead of creating external sources by invoking external.source_bincode_external(&p), we switch the API to p.source_bincode_external(&external) for symmetry with source_iter and source_stream.

    The other, much larger change is to clean up how the IR handles external inputs and outputs and keeps track of locations. First, we introduce HydroNode::ExternalInput and HydroLeaf::SendExternal as specialized nodes for these, so that we no longer create dummy sources / sinks.

    Then, we eliminate places where we have multiple sources of truth for where the output of an IR node is located, by instead referring to the metadata. Because it is easy in optimizer rewrites to corrupt this metadata, we also add a flag to transform_bottom_up that lets developers enable a metadata validity check. We disable it in most transformations for performance, but enable it in the decoupling rewrites since it manipulates locations in complex ways.

Commit Statistics

Commit Details

view details
  • #1859
  • #1930
  • #1934
  • #1935
  • #1937
    • Capture stack traces for each IR node (d44b225)
  • #1940
  • #1947
    • Don't snapshot-test backtraces (739b622)
  • #1952
    • Use partitioning analysis results to partition (173d9c0)
  • #1955
    • Improve logging for profiling (0e6403c)
  • #1958
    • Invert external sources and clean up locations in IR (fb016b0)
  • #1962
    • Separate externals from other location kinds, clean up network operators (22a7d0d)
  • Uncategorized
    • Release dfir_lang v0.14.0, dfir_macro v0.14.0, hydro_deploy_integration v0.14.0, lattices_macro v0.5.10, variadics_macro v0.6.1, dfir_rs v0.14.0, hydro_deploy v0.14.0, hydro_lang v0.14.0, hydro_optimize v0.13.0, hydro_std v0.14.0, safety bump 6 crates (0683595)