|
| 1 | +# Changelog |
| 2 | + |
| 3 | +## 0.1.0 (2024-01-03) |
| 4 | + |
| 5 | +### Bug Fixes |
| 6 | + |
| 7 | +- Subgraph boundaries with copies ([#440](https://github.com/CQCL/hugr/pull/440)) |
| 8 | +- [**breaking**] Use internal tag for SumType enum serialisation ([#462](https://github.com/CQCL/hugr/pull/462)) |
| 9 | +- Check kind before unwrap in insert_identity ([#475](https://github.com/CQCL/hugr/pull/475)) |
| 10 | +- Allow for variables to get solved in inference ([#478](https://github.com/CQCL/hugr/pull/478)) |
| 11 | +- In IdentityInsertion add noop to correct parent ([#477](https://github.com/CQCL/hugr/pull/477)) |
| 12 | +- Failing release tests ([#485](https://github.com/CQCL/hugr/pull/485)) |
| 13 | +- [**breaking**] Serialise `Value`, `PrimValue`, and `TypeArg` with internal tags ([#496](https://github.com/CQCL/hugr/pull/496)) |
| 14 | +- Serialise custom constants with internal tag ([#502](https://github.com/CQCL/hugr/pull/502)) |
| 15 | +- [**breaking**] Reduce max int width in arithmetic extension to 64 ([#504](https://github.com/CQCL/hugr/pull/504)) |
| 16 | +- HugrView::get_function_type ([#507](https://github.com/CQCL/hugr/pull/507)) |
| 17 | +- TODO in resolve_extension_ops: copy across input_extensions ([#510](https://github.com/CQCL/hugr/pull/510)) |
| 18 | +- Use given input extensions in `define_function` ([#524](https://github.com/CQCL/hugr/pull/524)) |
| 19 | +- Lessen requirements for hugrs in outline_cfg ([#528](https://github.com/CQCL/hugr/pull/528)) |
| 20 | +- Make unification logic less strict ([#538](https://github.com/CQCL/hugr/pull/538)) |
| 21 | +- Simple replace incorrectly copying metadata ([#545](https://github.com/CQCL/hugr/pull/545)) |
| 22 | +- Account for self-referencial constraints ([#551](https://github.com/CQCL/hugr/pull/551)) |
| 23 | +- Consider shunted metas when comparing equality ([#555](https://github.com/CQCL/hugr/pull/555)) |
| 24 | +- Join labels in issue workflow ([#563](https://github.com/CQCL/hugr/pull/563)) |
| 25 | +- Comment out broken priority code ([#562](https://github.com/CQCL/hugr/pull/562)) |
| 26 | +- Handling of issues with no priority label ([#573](https://github.com/CQCL/hugr/pull/573)) |
| 27 | +- Don't insert temporary wires when extracting a subgraph ([#582](https://github.com/CQCL/hugr/pull/582)) |
| 28 | +- Improve convexity checking and fix test ([#585](https://github.com/CQCL/hugr/pull/585)) |
| 29 | +- Ignore input->output links in SiblingSubgraph::try_new_dataflow_subgraph ([#589](https://github.com/CQCL/hugr/pull/589)) |
| 30 | +- Enforce covariance of SiblingMut::RootHandle ([#594](https://github.com/CQCL/hugr/pull/594)) |
| 31 | +- Erratic stack overflow in infer.rs (live_var) ([#638](https://github.com/CQCL/hugr/pull/638)) |
| 32 | +- Work harder in variable instantiation ([#591](https://github.com/CQCL/hugr/pull/591)) |
| 33 | +- Actually add the error type to prelude ([#672](https://github.com/CQCL/hugr/pull/672)) |
| 34 | +- Serialise dynamically computed opaqueOp signatures ([#690](https://github.com/CQCL/hugr/pull/690)) |
| 35 | +- FuncDefns don't require that their extensions match their children ([#688](https://github.com/CQCL/hugr/pull/688)) |
| 36 | +- Binary compute_signature returning a PolyFuncType with binders ([#710](https://github.com/CQCL/hugr/pull/710)) |
| 37 | +- Use correct number of args for int ops ([#723](https://github.com/CQCL/hugr/pull/723)) |
| 38 | +- [**breaking**] Add serde tag to TypeParam enum ([#722](https://github.com/CQCL/hugr/pull/722)) |
| 39 | +- Allow widening and narrowing to same width. ([#735](https://github.com/CQCL/hugr/pull/735)) |
| 40 | +- Case node should not have an external signature ([#749](https://github.com/CQCL/hugr/pull/749)) |
| 41 | + |
| 42 | +### Documentation |
| 43 | + |
| 44 | +- Add operation constraint to quantum extension ([#543](https://github.com/CQCL/hugr/pull/543)) |
| 45 | +- Coverage check section in DEVELOPMENT.md ([#648](https://github.com/CQCL/hugr/pull/648)) |
| 46 | +- Remove "quantum extension" from HUGR spec. ([#694](https://github.com/CQCL/hugr/pull/694)) |
| 47 | +- Improve crate-level docs, including example code. ([#698](https://github.com/CQCL/hugr/pull/698)) |
| 48 | +- Spec cleanups and clarifications ([#742](https://github.com/CQCL/hugr/pull/742)) |
| 49 | +- Spec clarifications ([#738](https://github.com/CQCL/hugr/pull/738)) |
| 50 | +- Spec updates ([#741](https://github.com/CQCL/hugr/pull/741)) |
| 51 | +- [spec] Remove references to causal cone and Order edges from Input ([#762](https://github.com/CQCL/hugr/pull/762)) |
| 52 | + |
| 53 | +### Features |
| 54 | + |
| 55 | +- Derive things for builder structs ([#229](https://github.com/CQCL/hugr/pull/229)) |
| 56 | +- Return a slice of types from the signature ([#238](https://github.com/CQCL/hugr/pull/238)) |
| 57 | +- Move `dot_string` to `HugrView` ([#271](https://github.com/CQCL/hugr/pull/271)) |
| 58 | +- [**breaking**] Change `TypeParam::USize` to `TypeParam::BoundedNat` and use in int extensions ([#445](https://github.com/CQCL/hugr/pull/445)) |
| 59 | +- TKET2 compatibility requirements ([#450](https://github.com/CQCL/hugr/pull/450)) |
| 60 | +- Split methods between `HugrMut` and `HugrMutInternals` ([#441](https://github.com/CQCL/hugr/pull/441)) |
| 61 | +- Add `HugrView::node_connections` to get all links between nodes ([#460](https://github.com/CQCL/hugr/pull/460)) |
| 62 | +- Location information in extension inference error ([#464](https://github.com/CQCL/hugr/pull/464)) |
| 63 | +- Add T, Tdg, X gates ([#466](https://github.com/CQCL/hugr/pull/466)) |
| 64 | +- [**breaking**] Add `ApplyResult` associated type to `Rewrite` ([#472](https://github.com/CQCL/hugr/pull/472)) |
| 65 | +- Implement rewrite `IdentityInsertion` ([#474](https://github.com/CQCL/hugr/pull/474)) |
| 66 | +- Instantiate inferred extensions ([#461](https://github.com/CQCL/hugr/pull/461)) |
| 67 | +- Default DFG builders to open extension sets ([#473](https://github.com/CQCL/hugr/pull/473)) |
| 68 | +- Some helper methods ([#482](https://github.com/CQCL/hugr/pull/482)) |
| 69 | +- Extension inference for conditional nodes ([#465](https://github.com/CQCL/hugr/pull/465)) |
| 70 | +- Add ConvexChecker ([#487](https://github.com/CQCL/hugr/pull/487)) |
| 71 | +- Add clippy lint for mut calls in a debug_assert ([#488](https://github.com/CQCL/hugr/pull/488)) |
| 72 | +- Default more builder methods to open extension sets ([#492](https://github.com/CQCL/hugr/pull/492)) |
| 73 | +- Port is serializable ([#489](https://github.com/CQCL/hugr/pull/489)) |
| 74 | +- More general portgraph references ([#494](https://github.com/CQCL/hugr/pull/494)) |
| 75 | +- Add extension deltas to CFG ops ([#503](https://github.com/CQCL/hugr/pull/503)) |
| 76 | +- Implement petgraph traits on Hugr ([#498](https://github.com/CQCL/hugr/pull/498)) |
| 77 | +- Make extension delta a parameter of CFG builders ([#514](https://github.com/CQCL/hugr/pull/514)) |
| 78 | +- [**breaking**] SiblingSubgraph does not borrow Hugr ([#515](https://github.com/CQCL/hugr/pull/515)) |
| 79 | +- Validate TypeArgs to ExtensionOp ([#509](https://github.com/CQCL/hugr/pull/509)) |
| 80 | +- Derive Debug & Clone for `ExtensionRegistry`. ([#530](https://github.com/CQCL/hugr/pull/530)) |
| 81 | +- Const nodes are built with some extension requirements ([#527](https://github.com/CQCL/hugr/pull/527)) |
| 82 | +- Some python errors and bindings ([#533](https://github.com/CQCL/hugr/pull/533)) |
| 83 | +- Insert_hugr/insert_view return node map ([#535](https://github.com/CQCL/hugr/pull/535)) |
| 84 | +- Add `SiblingSubgraph::try_from_nodes_with_checker` ([#547](https://github.com/CQCL/hugr/pull/547)) |
| 85 | +- PortIndex trait for undirected port parameters ([#553](https://github.com/CQCL/hugr/pull/553)) |
| 86 | +- Insert/extract subgraphs from a HugrView ([#552](https://github.com/CQCL/hugr/pull/552)) |
| 87 | +- Add `new_array` operation to prelude ([#544](https://github.com/CQCL/hugr/pull/544)) |
| 88 | +- Add a `DataflowParentID` node handle ([#559](https://github.com/CQCL/hugr/pull/559)) |
| 89 | +- Make TypeEnum and it's contents public ([#558](https://github.com/CQCL/hugr/pull/558)) |
| 90 | +- Optional direction check when querying a port index ([#566](https://github.com/CQCL/hugr/pull/566)) |
| 91 | +- Extension inference for CFGs ([#529](https://github.com/CQCL/hugr/pull/529)) |
| 92 | +- Better subgraph verification errors ([#587](https://github.com/CQCL/hugr/pull/587)) |
| 93 | +- Compute affected nodes for `SimpleReplacement` ([#600](https://github.com/CQCL/hugr/pull/600)) |
| 94 | +- Move `SimpleReplace::invalidation_set` to the `Rewrite` trait ([#602](https://github.com/CQCL/hugr/pull/602)) |
| 95 | +- [**breaking**] Resolve extension ops (mutating Hugr) in (infer_and_->)update_validate ([#603](https://github.com/CQCL/hugr/pull/603)) |
| 96 | +- Add accessors for node index and const values ([#605](https://github.com/CQCL/hugr/pull/605)) |
| 97 | +- [**breaking**] Expose the value of ConstUsize ([#621](https://github.com/CQCL/hugr/pull/621)) |
| 98 | +- Nicer debug and display for core types ([#628](https://github.com/CQCL/hugr/pull/628)) |
| 99 | +- [**breaking**] Static checking of Port direction ([#614](https://github.com/CQCL/hugr/pull/614)) |
| 100 | +- Builder and HugrMut add_op_xxx default to open extensions ([#622](https://github.com/CQCL/hugr/pull/622)) |
| 101 | +- [**breaking**] Add panicking integer division ops ([#625](https://github.com/CQCL/hugr/pull/625)) |
| 102 | +- Add hashable `Angle` type to Quantum extension ([#608](https://github.com/CQCL/hugr/pull/608)) |
| 103 | +- [**breaking**] Remove "rotations" extension. ([#645](https://github.com/CQCL/hugr/pull/645)) |
| 104 | +- Port.as_directed to match on either direction ([#647](https://github.com/CQCL/hugr/pull/647)) |
| 105 | +- Impl GraphRef for PetgraphWrapper ([#651](https://github.com/CQCL/hugr/pull/651)) |
| 106 | +- Provide+implement Replace API ([#613](https://github.com/CQCL/hugr/pull/613)) |
| 107 | +- Require the node's metadata to always be a Map ([#661](https://github.com/CQCL/hugr/pull/661)) |
| 108 | +- [**breaking**] Polymorphic function types (inc OpDefs) using dyn trait ([#630](https://github.com/CQCL/hugr/pull/630)) |
| 109 | +- Make prelude error type public ([#669](https://github.com/CQCL/hugr/pull/669)) |
| 110 | +- Shorthand for retrieving custom constants from `Const`, `Value` ([#679](https://github.com/CQCL/hugr/pull/679)) |
| 111 | +- [**breaking**] HugrView API improvements ([#680](https://github.com/CQCL/hugr/pull/680)) |
| 112 | +- Make FuncDecl/FuncDefn polymorphic ([#692](https://github.com/CQCL/hugr/pull/692)) |
| 113 | +- [**breaking**] Simplify `SignatureFunc` and add custom arg validation. ([#706](https://github.com/CQCL/hugr/pull/706)) |
| 114 | +- [**breaking**] Drop the `pyo3` feature ([#717](https://github.com/CQCL/hugr/pull/717)) |
| 115 | +- [**breaking**] `OpEnum` trait for common opdef functionality ([#721](https://github.com/CQCL/hugr/pull/721)) |
| 116 | +- MakeRegisteredOp trait for easier registration ([#726](https://github.com/CQCL/hugr/pull/726)) |
| 117 | +- Getter for `PolyFuncType::body` ([#727](https://github.com/CQCL/hugr/pull/727)) |
| 118 | +- `Into<OpType>` for custom ops ([#731](https://github.com/CQCL/hugr/pull/731)) |
| 119 | +- Always require a signature in `OpaqueOp` ([#732](https://github.com/CQCL/hugr/pull/732)) |
| 120 | +- Values (and hence Consts) know their extensions ([#733](https://github.com/CQCL/hugr/pull/733)) |
| 121 | +- [**breaking**] Use ConvexChecker trait ([#740](https://github.com/CQCL/hugr/pull/740)) |
| 122 | +- Custom const for ERROR_TYPE ([#756](https://github.com/CQCL/hugr/pull/756)) |
| 123 | +- Implement RemoveConst and RemoveConstIgnore ([#757](https://github.com/CQCL/hugr/pull/757)) |
| 124 | +- Constant folding implemented for core and float extension ([#769](https://github.com/CQCL/hugr/pull/769)) |
| 125 | + |
| 126 | +### HugrMut |
| 127 | + |
| 128 | +- Validate nodes for set_metadata/get_metadata_mut, too ([#531](https://github.com/CQCL/hugr/pull/531)) |
| 129 | + |
| 130 | +### HugrView |
| 131 | + |
| 132 | +- Validate nodes, and remove Base ([#523](https://github.com/CQCL/hugr/pull/523)) |
| 133 | + |
| 134 | +### Miscellaneous Tasks |
| 135 | + |
| 136 | +- [**breaking**] Update portgraph 0.10 and pyo3 0.20 ([#612](https://github.com/CQCL/hugr/pull/612)) |
| 137 | +- [**breaking**] Hike MSRV to 1.75 ([#761](https://github.com/CQCL/hugr/pull/761)) |
| 138 | + |
| 139 | +### Performance |
| 140 | + |
| 141 | +- Use lazy static definittion for prelude registry ([#481](https://github.com/CQCL/hugr/pull/481)) |
| 142 | + |
| 143 | +### Refactor |
| 144 | + |
| 145 | +- Move `rewrite` inside `hugr`, `Rewrite` -> `Replace` implementing new 'Rewrite' trait ([#119](https://github.com/CQCL/hugr/pull/119)) |
| 146 | +- Use an excluded upper bound instead of max log width. ([#451](https://github.com/CQCL/hugr/pull/451)) |
| 147 | +- Add extension info to `Conditional` and `Case` ([#463](https://github.com/CQCL/hugr/pull/463)) |
| 148 | +- `ExtensionSolution` only consists of input extensions ([#480](https://github.com/CQCL/hugr/pull/480)) |
| 149 | +- Remove builder from more DFG tests ([#490](https://github.com/CQCL/hugr/pull/490)) |
| 150 | +- Separate hierarchy views ([#500](https://github.com/CQCL/hugr/pull/500)) |
| 151 | +- [**breaking**] Use named struct for float constants ([#505](https://github.com/CQCL/hugr/pull/505)) |
| 152 | +- Allow NodeType::new to take any Into<Option<ExtensionSet>> ([#511](https://github.com/CQCL/hugr/pull/511)) |
| 153 | +- Move apply_rewrite from Hugr to HugrMut ([#519](https://github.com/CQCL/hugr/pull/519)) |
| 154 | +- Use SiblingSubgraph in SimpleReplacement ([#517](https://github.com/CQCL/hugr/pull/517)) |
| 155 | +- CFG takes a FunctionType ([#532](https://github.com/CQCL/hugr/pull/532)) |
| 156 | +- Remove check_custom_impl by inlining into check_custom ([#604](https://github.com/CQCL/hugr/pull/604)) |
| 157 | +- Insert_subgraph just return HashMap, make InsertionResult new_root compulsory ([#609](https://github.com/CQCL/hugr/pull/609)) |
| 158 | +- [**breaking**] Rename predicate to TupleSum/UnitSum ([#557](https://github.com/CQCL/hugr/pull/557)) |
| 159 | +- Simplify infer.rs/report_mismatch using early return ([#615](https://github.com/CQCL/hugr/pull/615)) |
| 160 | +- Move the core types to their own module ([#627](https://github.com/CQCL/hugr/pull/627)) |
| 161 | +- Change &NodeType->&OpType conversion into op() accessor ([#623](https://github.com/CQCL/hugr/pull/623)) |
| 162 | +- Infer.rs 'fn results' ([#631](https://github.com/CQCL/hugr/pull/631)) |
| 163 | +- Be safe ([#637](https://github.com/CQCL/hugr/pull/637)) |
| 164 | +- NodeType constructors, adding new_auto ([#635](https://github.com/CQCL/hugr/pull/635)) |
| 165 | +- Constraint::Plus stores an ExtensionSet, which is a BTreeSet ([#636](https://github.com/CQCL/hugr/pull/636)) |
| 166 | +- [**breaking**] Remove `SignatureDescription` ([#644](https://github.com/CQCL/hugr/pull/644)) |
| 167 | +- [**breaking**] Remove add_op_<posn> by generalizing add_node_<posn> with "impl Into" ([#642](https://github.com/CQCL/hugr/pull/642)) |
| 168 | +- Rename accidentally-changed Extension::add_node_xxx back to add_op ([#659](https://github.com/CQCL/hugr/pull/659)) |
| 169 | +- [**breaking**] Remove quantum extension ([#670](https://github.com/CQCL/hugr/pull/670)) |
| 170 | +- Use type schemes in extension definitions wherever possible ([#678](https://github.com/CQCL/hugr/pull/678)) |
| 171 | +- [**breaking**] Flatten `Prim(Type/Value)` in to parent enum ([#685](https://github.com/CQCL/hugr/pull/685)) |
| 172 | +- [**breaking**] Rename `new_linear()` to `new_endo()`. ([#697](https://github.com/CQCL/hugr/pull/697)) |
| 173 | +- Replace NodeType::signature() with io_extensions() ([#700](https://github.com/CQCL/hugr/pull/700)) |
| 174 | +- Validate ExtensionRegistry when built, not as we build it ([#701](https://github.com/CQCL/hugr/pull/701)) |
| 175 | +- [**breaking**] One way to add_op to extension ([#704](https://github.com/CQCL/hugr/pull/704)) |
| 176 | +- Remove Signature struct ([#714](https://github.com/CQCL/hugr/pull/714)) |
| 177 | +- Use `MakeOpDef` for int_ops ([#724](https://github.com/CQCL/hugr/pull/724)) |
| 178 | +- [**breaking**] Use enum op traits for floats + conversions ([#755](https://github.com/CQCL/hugr/pull/755)) |
| 179 | +- Avoid dynamic dispatch for non-folding operations ([#770](https://github.com/CQCL/hugr/pull/770)) |
| 180 | + |
| 181 | +### SerSimpleType |
| 182 | + |
| 183 | +- Use Vec not TypeRow ([#381](https://github.com/CQCL/hugr/pull/381)) |
| 184 | + |
| 185 | +### SimpleReplace+OutlineCfg |
| 186 | + |
| 187 | +- Use HugrMut methods rather than .hierarchy/.graph ([#280](https://github.com/CQCL/hugr/pull/280)) |
| 188 | + |
| 189 | +### Testing |
| 190 | + |
| 191 | +- Update inference test to not use DFG builder ([#550](https://github.com/CQCL/hugr/pull/550)) |
| 192 | +- Strengthen "failing_sccs_test", rename to "sccs" as it's not failing! ([#660](https://github.com/CQCL/hugr/pull/660)) |
| 193 | +- [**breaking**] Improve coverage in signature and validate ([#643](https://github.com/CQCL/hugr/pull/643)) |
| 194 | +- Use insta snapshots to add dot_string coverage ([#682](https://github.com/CQCL/hugr/pull/682)) |
| 195 | +- Miri ignore file-opening test ([#684](https://github.com/CQCL/hugr/pull/684)) |
| 196 | +- Unify the serialisation tests ([#730](https://github.com/CQCL/hugr/pull/730)) |
| 197 | + |
| 198 | +### `ConstValue |
| 199 | + |
| 200 | +- :F64` and `OpaqueOp::new` ([#206](https://github.com/CQCL/hugr/pull/206)) |
| 201 | + |
| 202 | +### Cleanup |
| 203 | + |
| 204 | +- Remove outdated comment ([#536](https://github.com/CQCL/hugr/pull/536)) |
| 205 | + |
| 206 | +### Cosmetic |
| 207 | + |
| 208 | +- Format + remove stray TODO ([#444](https://github.com/CQCL/hugr/pull/444)) |
| 209 | + |
| 210 | +### Doc |
| 211 | + |
| 212 | +- Crate name as README title + add reexport ([#199](https://github.com/CQCL/hugr/pull/199)) |
| 213 | + |
| 214 | +### S/EdgeKind |
| 215 | + |
| 216 | +- :Const/EdgeKind::Static/ ([#201](https://github.com/CQCL/hugr/pull/201)) |
| 217 | + |
| 218 | +### Simple_replace.rs |
| 219 | + |
| 220 | +- Use HugrMut::remove_node, includes clearing op_types ([#242](https://github.com/CQCL/hugr/pull/242)) |
| 221 | + |
| 222 | +### Spec |
| 223 | + |
| 224 | +- Remove "Draft 3" from title of spec document. ([#590](https://github.com/CQCL/hugr/pull/590)) |
| 225 | +- Rephrase confusing paragraph about TailLoop inputs/outputs ([#567](https://github.com/CQCL/hugr/pull/567)) |
| 226 | + |
| 227 | +### Src/ops/validate.rs |
| 228 | + |
| 229 | +- Common-up some type row calculations ([#254](https://github.com/CQCL/hugr/pull/254)) |
| 230 | + |
0 commit comments