You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Feature flag is causing trouble, because of automatic "union" (across all dependencies on the same crate) of feature flags. CONSIDER removing flag (-> always on) straightaway, and updating clients to use validate_no_extensions when they don't want it. This may involve changing e.g. ValidationLevel.
Changing validate() and validate_no_extensions() to validate(bool) is a syntactic difference only but we can CONSIDER that too.
Optionally, if needed, Infer extension-deltas for FuncDefn's #1237. NOTE there is no penalty for this except extra code (and cost at inference-time for clients that do inference - it does not affect validation)
Infer extension-requirements for nested DFGs #640 (this becomes even more important than under the input_extensions-based scheme because we don't have the "empty delta so inputs = outputs" escape hatch)
A few suggestions...[EDIT: all these now redundant following the "Reredux" on confluence and "Redux plan" above]
Can we make lift nodes, and Plus constraints, take an ExtensionSet rather than a single Extension?
....and then, can we make Lift nodes not specify the ExtensionSet, and get inference to figure it out?
Even that might be a lesser step than #423, but I'm wondering how easy that will be
We might want to work on error reporting. Picking out a random (HashSet-iteration-order) location (i.e. (Node,Direction)) for each Meta (in report_mismatch) isn't terribly helpful.
Can we allow a non-mutating infer_and_validate that calls validate_with_extension_closure passing the union of the solution and closure? (These have disjoint keys, right)
Rename gen_union_constraint to gen_plus_constraint, or rename Constraint::Plus to Constraint::Union
extension_reqs
toruntime_reqs
#1734validate_no_extensions
when they don't want it. This may involve changing e.g.ValidationLevel
.validate()
andvalidate_no_extensions()
tovalidate(bool)
is a syntactic difference only but we can CONSIDER that too.Completed steps ---- (of new plan following Re^n-super-redux proposed by Lukas:
input_extensions
andNodeType
- this is refactor!: Remove NodeType and input_extensions #1183input_extensions
-based scheme because we don't have the "empty delta so inputs = outputs" escape hatch)dfg_builder
): in feat: Helper functions for requesting inference, use with builder in tests #1219 (DFGBuilder::new
takes a FunctionType so no need to update)conditional_builder
, (simple_
)block_builder
/entry_builder
- in fix!: Ops require their own extension #1226Below relates to the "Reredux" where we retain
input_extensions
but switch to only subset constraints between them (effectively, every edge gains a lift node, with the delta of the lift being inferred) - detailed in https://cqc.atlassian.net/wiki/spaces/~221321769/pages/2803236998/HUGR+Extension+Inference+reredux.Redux Plan:
At this point, the following issues can be dropped (and
Lift
nodes removed):And these should become easy:
At which point we hopefully should find the system is usable enough to turn inference back on (no more feature gate)
Then we should revisit
Finally, we hope this last step is an "optional extra" / improvement, rather than part of the MVP:
The text was updated successfully, but these errors were encountered: