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
This should happen automatically as part of the release process, but if you need to generate the release notes manually, you can use the above command.
Provide more comprehensive replacement to the commitApplied event (#22977)
Adds a new changed event to the (currently alpha) TreeBranchEvents that replaces the commitApplied event on TreeViewEvents. This new event is fired for both local and remote changes and maintains the existing functionality of commitApplied that is used for obtaining Revertibles.
SharedTree event listeners that implement Listenable now allow deregistration of event listeners via an off() function. (#23046)
The ability to deregister events via a callback returned by on() remains the same. Both strategies will remain supported and consumers of SharedTree events may choose which method of deregistration they prefer in a given instance.
// The new behaviorfunctionderegisterViaOff(view: TreeView<MySchema>): {constlistener=()=>{/* ... */};view.events.on("commitApplied",listener);// Registerview.events.off("commitApplied",listener);// Deregister}// The existing behavior (still supported)functionderegisterViaCallback(view: TreeView<MySchema>): {constoff=view.events.on("commitApplied",()=>{/* ... */});// Registeroff();// Deregister}
Fix typing bug in adaptEnum and enumFromStrings (#23077)
When using the return value from adaptEnum as a function, passing in a value who's type is a union no longer produced an incorrectly typed return value. This has been fixed.
Additionally enumFromStrings has improved the typing of its schema, ensuring the returned object's members have sufficiently specific types. Part of this improvement was fixing the .schema property to be a tuple over each of the schema where it was previously a tuple of a single combined schema due to a bug.
One side-effect of these fixes is that narrowing of the value field of a node typed from the .schema behaves slightly different, such that the node type is now a union instead of it being a single type with a .value that is a union. This means that narrowing based on .value property narrows which node type you have, not just the value property. This mainly matters when matching all cases like the switch statement below:
constMode=enumFromStrings(schema,["Fun","Bonus"]);typeMode=TreeNodeFromImplicitAllowedTypes<typeofMode.schema>;constnode=newMode.Bonus()asMode;switch(node.value){case"Fun": {assert.fail();}case"Bonus": {// This one runsbreak;}default:
// Before this change, "node.value" was never here, now "node" is never.unreachableCase(node);}
Unsupported merge-tree types and related exposed internals have been removed (#22696)
As part of ongoing improvements, several internal types and related APIs have been removed. These types are unnecessary for any supported scenarios and could lead to errors if used. Since directly using these types would likely result in errors, these changes are not likely to impact any Fluid Framework consumers.
Removed types:
IMergeTreeTextHelper
MergeNode
ObliterateInfo
PropertiesManager
PropertiesRollback
SegmentGroup
SegmentGroupCollection
In addition to removing the above types, they are no longer exposed through the following interfaces and their implementations: ISegment, ReferencePosition, and ISerializableInterval.
Removed functions:
addProperties
ack
Removed properties:
propertyManager
segmentGroups
The initial deprecations of the now changed or removed types were announced in Fluid Framework v2.2.0: Fluid Framework v2.2.0
The Client class in the merge-tree package has been removed. Types that directly or indirectly expose the merge-tree Client class have also been removed.
The removed types were not meant to be used directly, and direct usage was not supported:
AttributionPolicy
IClientEvents
IMergeTreeAttributionOptions
SharedSegmentSequence
SharedStringClass
Some classes that referenced the Client class have been transitioned to interfaces. Direct instantiation of these classes was not supported or necessary for any supported scenario, so the change to an interface should not impact usage. This applies to the following types:
IDeltaManager.inbound contained functionality that could break core runtime features such as summarization and processing batches if used improperly. Data loss or corruption could occur when IDeltaManger.inbound.pause() or IDeltaManager.inbound.resume() were called.
Similarly, IDeltaManager.outbound contained functionality that could break core runtime features such as generation of batches and chunking. Data loss or corruption could occur when IDeltaManger.inbound.pause() or IDeltaManager.inbound.resume() were called.
Alternatives
Alternatives to IDeltaManager.inbound.on("op", ...) are IDeltaManager.on("op", ...)
Alternatives to calling IDeltaManager.inbound.pause, IDeltaManager.outbound.pause for IContainer disconnect use IContainer.disconnect.
Alternatives to calling IDeltaManager.inbound.resume, IDeltaManager.outbound.resume for IContainer reconnect use IContainer.connect.
Changes to the batchBegin and batchEnd events on ContainerRuntime (#22791)
The 'batchBegin'/'batchEnd' events on ContainerRuntime indicate when a batch is beginning or finishing being processed. The contents property on the event argument op is not useful or relevant when reasoning over incoming changes at the batch level. Accordingly, it has been removed from the op event argument.
Untangle PresenceStates methods and properties (#23021)
PresenceStatesEntries which represent each of the states in PresenceStates schema have been relocated from directly within PresenceStates to under property names prop. Only the add method remains. (Type PresenceStatesMethods has been removed.)
This issue is automatically updated with a preview of the release notes for the upcoming Fluid Framework release.
To generate release notes locally to commit to the
RELEASE_NOTES
folder in the repo, run the following command:To generate the release notes to paste into the GitHub Release, run the following command:
This should happen automatically as part of the release process, but if you need to generate the release notes manually, you can use the above command.
Fluid Framework v2.10.0
Contents
commitApplied
event (#22977)Listenable
now allow deregistration of event listeners via anoff()
function. (#23046)adaptEnum
andenumFromStrings
(#23077)Client
Legacy API Removed (#22697)IFluidParentContext.ensureNoDataModelChanges
and its implementations (#22842)PresenceStates
methods and properties (#23021)✨ New Features
New compareFluidHandle function for comparing FluidHandles (#22997)
The new
compareFluidHandle
function has been added to allow comparing handles without having to inspect their internals.Change details
Commit:
8d47008
Affected packages:
⬆️ Table of contents
🌳 SharedTree DDS Changes
Provide more comprehensive replacement to the
commitApplied
event (#22977)Adds a new
changed
event to the (currently alpha)TreeBranchEvents
that replaces thecommitApplied
event onTreeViewEvents
. This new event is fired for both local and remote changes and maintains the existing functionality ofcommitApplied
that is used for obtainingRevertibles
.Change details
Commit:
e51c94d
Affected packages:
⬆️ Table of contents
SharedTree event listeners that implement
Listenable
now allow deregistration of event listeners via anoff()
function. (#23046)The ability to deregister events via a callback returned by
on()
remains the same. Both strategies will remain supported and consumers of SharedTree events may choose which method of deregistration they prefer in a given instance.Change details
Commit:
c59225d
Affected packages:
⬆️ Table of contents
Allow constructing recursive maps from objects (#23070)
Previously only non-recursive maps could be constructed from objects. Now all maps nodes can constructed from objects:
Change details
Commit:
0185a08
Affected packages:
⬆️ Table of contents
Fix typing bug in
adaptEnum
andenumFromStrings
(#23077)When using the return value from
adaptEnum
as a function, passing in a value who's type is a union no longer produced an incorrectly typed return value. This has been fixed.Additionally
enumFromStrings
has improved the typing of its schema, ensuring the returned object's members have sufficiently specific types. Part of this improvement was fixing the.schema
property to be a tuple over each of the schema where it was previously a tuple of a single combined schema due to a bug.One side-effect of these fixes is that narrowing of the
value
field of a node typed from the.schema
behaves slightly different, such that the node type is now a union instead of it being a single type with a.value
that is a union. This means that narrowing based on.value
property narrows which node type you have, not just the value property. This mainly matters when matching all cases like the switch statement below:Change details
Commit:
cfb6838
Affected packages:
⬆️ Table of contents
Unsupported merge-tree types and related exposed internals have been removed (#22696)
As part of ongoing improvements, several internal types and related APIs have been removed. These types are unnecessary for any supported scenarios and could lead to errors if used. Since directly using these types would likely result in errors, these changes are not likely to impact any Fluid Framework consumers.
Removed types:
In addition to removing the above types, they are no longer exposed through the following interfaces and their implementations:
ISegment
,ReferencePosition
, andISerializableInterval
.Removed functions:
Removed properties:
The initial deprecations of the now changed or removed types were announced in Fluid Framework v2.2.0: Fluid Framework v2.2.0
Change details
Commit:
7a03253
Affected packages:
⬆️ Table of contents
Legacy API Changes
MergeTree
Client
Legacy API Removed (#22697)The
Client
class in the merge-tree package has been removed. Types that directly or indirectly expose the merge-treeClient
class have also been removed.The removed types were not meant to be used directly, and direct usage was not supported:
Some classes that referenced the
Client
class have been transitioned to interfaces. Direct instantiation of these classes was not supported or necessary for any supported scenario, so the change to an interface should not impact usage. This applies to the following types:The initial deprecations of the now changed or removed types were announced in Fluid Framework v2.4.0: Several MergeTree Client Legacy APIs are now deprecated
Change details
Commit:
2aa0b5e
Affected packages:
⬆️ Table of contents
The inbound and outbound properties have been removed from IDeltaManager (#22282)
The inbound and outbound properties were deprecated in version 2.0.0-rc.2.0.0 and have been removed from
IDeltaManager
.IDeltaManager.inbound
contained functionality that could break core runtime features such as summarization and processing batches if used improperly. Data loss or corruption could occur whenIDeltaManger.inbound.pause()
orIDeltaManager.inbound.resume()
were called.Similarly,
IDeltaManager.outbound
contained functionality that could break core runtime features such as generation of batches and chunking. Data loss or corruption could occur whenIDeltaManger.inbound.pause()
orIDeltaManager.inbound.resume()
were called.Alternatives
IDeltaManager.inbound.on("op", ...)
areIDeltaManager.on("op", ...)
IDeltaManager.inbound.pause
,IDeltaManager.outbound.pause
forIContainer
disconnect useIContainer.disconnect
.IDeltaManager.inbound.resume
,IDeltaManager.outbound.resume
forIContainer
reconnect useIContainer.connect
.Change details
Commit:
45a5769
Affected packages:
⬆️ Table of contents
"Remove
IFluidParentContext.ensureNoDataModelChanges
and its implementations (#22842)IFluidParentContext.ensureNoDataModelChanges
has been removed. prior deprecation commitMockFluidDataStoreContext.ensureNoDataModelChanges
has also been removed.Change details
Commit:
3aff19a
Affected packages:
⬆️ Table of contents
Other Changes
Changes to the batchBegin and batchEnd events on ContainerRuntime (#22791)
The 'batchBegin'/'batchEnd' events on ContainerRuntime indicate when a batch is beginning or finishing being processed. The
contents
property on the event argumentop
is not useful or relevant when reasoning over incoming changes at the batch level. Accordingly, it has been removed from theop
event argument.Change details
Commit:
d252af5
Affected packages:
⬆️ Table of contents
Untangle
PresenceStates
methods and properties (#23021)PresenceStatesEntries
which represent each of the states inPresenceStates
schema have been relocated from directly withinPresenceStates
to under property namesprop
. Only theadd
method remains. (TypePresenceStatesMethods
has been removed.)Change details
Commit:
365c5c0
Affected packages:
⬆️ Table of contents
🛠️ Start Building Today!
Please continue to engage with us on GitHub Discussion and Issue pages as you adopt Fluid Framework!
The text was updated successfully, but these errors were encountered: