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
Current nugets are v1. Here are API breaking changes to consider for a v2 nuget. No change to language semantics here - just API breaking to take advantage of lessons learned in v1.
[1] Remove all [Obsolete] APIs*
[2] No usage of hidden awaits / .Result.
This is especially important for sandbox/governor scenarios - the host must know when any network calls are being made.
[3] Improved TableValue.Rows management
This is a case where it's too easy to call .Result under the hood. Improve to:
ensure host has full visibility into traversals. It's too easy to traverse a million rows.
allow optimizations like Sequence(100000) can be lazy and doesn't have to eagerly create the table.
better align with delegation. -
[4] Remove any FormulaValue equality, especially for RecordValues.
The Fx language does not allow equality operators on records. The API should not have operators that don't correspond to language semantics.
FormulaType equality is still valid, especially when comparing primitives.
More broadly - how can we ensue #2788 would have been a compile-time error, and that Distinct/Summarize/Join all have the same semantics.
[5] Remove FormulaValue.ToObject
This works well for primitives, but there are too many cases this fails for other types. Having RecordValue return a dynamically created object was too clever. Most usage of this API beyond primitives is just wrong. Callers will call ToObject to get an object and test it - there needs to be a way to conduct that test upfront.
[6] Any changes on PowerFxConfig?
PowerFxConfig is in core and used across engines. So it can't have any interpreter config.
What does config have that Engine doesn't? Need a clear articulation on the split.
The text was updated successfully, but these errors were encountered:
Current nugets are v1. Here are API breaking changes to consider for a v2 nuget. No change to language semantics here - just API breaking to take advantage of lessons learned in v1.
[1] Remove all [Obsolete] APIs*
[2] No usage of hidden awaits / .Result.
This is especially important for sandbox/governor scenarios - the host must know when any network calls are being made.
[3] Improved TableValue.Rows management
This is a case where it's too easy to call .Result under the hood. Improve to:
[4] Remove any FormulaValue equality, especially for RecordValues.
The Fx language does not allow equality operators on records. The API should not have operators that don't correspond to language semantics.
FormulaType equality is still valid, especially when comparing primitives.
More broadly - how can we ensue #2788 would have been a compile-time error, and that Distinct/Summarize/Join all have the same semantics.
[5] Remove FormulaValue.ToObject
This works well for primitives, but there are too many cases this fails for other types. Having RecordValue return a dynamically created object was too clever. Most usage of this API beyond primitives is just wrong. Callers will call ToObject to get an object and test it - there needs to be a way to conduct that test upfront.
TryGetPrimitive is good:
Power-Fx/src/libraries/Microsoft.PowerFx.Core/Public/Values/FormulaValue.cs
Line 82 in f0af967
We can add other safe TryGet accessors as needed.
[6] Any changes on PowerFxConfig?
PowerFxConfig is in core and used across engines. So it can't have any interpreter config.
What does config have that Engine doesn't? Need a clear articulation on the split.
The text was updated successfully, but these errors were encountered: