github microsoft/FluidFramework client_v2.52.0
Fluid Framework v2.52.0 (minor)

latest releases: build-tools_v0.58.2, client_v2.60.0, build-tools_v0.58.1...
one month ago

Contents

  • 🌳 SharedTree DDS Changes
    • Change and clarify limitations related to alpha features allowUnknownOptionalFields and importVerbose (#25074)
    • Fix independentInitializedView when used with ForestTypeExpensiveDebug (#25083)
    • Allow attaching a SharedTree to an already attached container (#25102)
    • Support unknown optional fields in TreeBeta.clone, TreeAlpha.exportConcise and TreeAlpha.exportVerbose (#25106)
  • ⚠️ Deprecations
    • Moved MinimumVersionForCollab to @fluidframework/runtime-definitions (#25059)
  • Legacy API Changes
    • Introduced new interface "IRuntimeStorageService" to replace "IDocumentStorageService" between Runtime and DataStore layers (#25057)
    • Introduced new interface "IContainerStorageService" to replace "IDocumentStorageService" between Loader and Runtime layers (#25057)
    • New ILayerCompatDetails property on LocalDocumentServiceFactory and OdspDocumentServiceFactoryCore (#25120)

🌳 SharedTree DDS Changes

Change and clarify limitations related to alpha features allowUnknownOptionalFields and importVerbose (#25074)

allowUnknownOptionalFields currently has some limitations. To mitigate some bugs, importVerbose has dropped support for unknown optional fields. Previously importVerbose would tolerate some unknown optional fields, but could not validate they comply with the document stored schema. This could cause some crashes, and likely document corruption. This support has been removed: now trying to create nodes containing unknown optional fields via importVerbose will throw a UsageError. There is no longer a way to create and insert nodes which contain subtrees for which there is no schema.

Ideally exportVerbose and importVerbose could be used to round trip data while optionally preserving unknown optional fields, but this is currently not working and thus not supported.

If exporting using useStoredKeys, the unknown optional fields will be preserved but may not be able to be imported. If exporting not using useStoredKeys, unknown optional fields will be omitted.

Change details

Commit: 62dc0b0

Affected packages:

  • @fluidframework/tree
  • fluid-framework

⬆️ Table of contents

Fix independentInitializedView when used with ForestTypeExpensiveDebug (#25083)

Previously, when using independentInitializedView with ForestTypeExpensiveDebug and the root schema was not an optional field, an error was thrown about the tree being out of schema. This has been fixed.

Change details

Commit: 2570b65

Affected packages:

  • @fluidframework/tree
  • fluid-framework

⬆️ Table of contents

Allow attaching a SharedTree to an already attached container (#25102)

Before this release, attaching a SharedTree instance to an already attached container would fail with assert code 0x88f if that instance needed to include data about removed nodes in its attach summary. (This is the case when nodes are removed before attaching and there is a local branch that forks from a commit that made such a removal or from an earlier commit. This is also the case when retaining Revertible objects for those commits).

After this release, the behavior depends on the CodecWriteOptions.oldestCompatibleClient value:

  • For values < FluidClientVersion.v2_52, the behavior is the same.
  • For values >= FluidClientVersion.v2_52, the attach will succeed, but use a newer storage format.

Applications should take care to saturate their clients with FF version 2.52 (or greater) before using a CodecWriteOptions.oldestCompatibleClient that is equal to or greater than FluidClientVersion.v2_52. Failure to do so may lead clients with CodecWriteOptions.oldestCompatibleClient equal to or greater than FluidClientVersion.v2_52 to attach SharedTree instances using a storage format that is not supported by FF versions before 2.52. This means that application versions using FF versions before 2.52 will be unable to open documents where such an operation has happened.

Change details

Commit: 3e03f94

Affected packages:

  • @fluidframework/tree
  • fluid-framework

⬆️ Table of contents

Support unknown optional fields in TreeBeta.clone, TreeAlpha.exportConcise and TreeAlpha.exportVerbose (#25106)

Trees with unknown optional fields are now supported in TreeBeta.clone, TreeBeta.exportConcise and TreeBeta.exportVerbose.

Previously, attempts to clone or export such nodes could error in some cases, but should now work robustly.

Change details

Commit: e3a126f

Affected packages:

  • @fluidframework/tree
  • fluid-framework

⬆️ Table of contents

⚠️ Deprecations

Moved MinimumVersionForCollab to @fluidframework/runtime-definitions (#25059)

MinimumVersionForCollab has been moved from @fluidframework/container-runtime to @fluidframework/runtime-definitions. The export in @fluidframework/container-runtime is now deprecated and will be removed in a future version. Consumers should import it from @fluidframework/runtime-definitions going forward.

Change details

Commit: 4a7b370

Affected packages:

  • @fluidframework/container-runtime
  • @fluidframework/runtime-utils

⬆️ Table of contents

Legacy API Changes

Introduced new interface "IRuntimeStorageService" to replace "IDocumentStorageService" between Runtime and DataStore layers (#25057)

Added an interface IRuntimeStorageService which will replace IDocumentStorageService in the DataStore layer. This is exposed by the Runtime layer to the DataStore layer. This new interface will only contain properties that are needed and used by the DataStore layer.

The following properties from IRuntimeStorageService are deprecated as they are not needed by the DataStore layer. These be removed in a future release:

  • disposed
  • dispose
  • policies
  • getSnapshotTree
  • getSnapshot
  • getVersions
  • createBlob
  • uploadSummaryWithContext
  • downloadSummary

Change details

Commit: 92012de

Affected packages:

  • @fluidframework/runtime-definitions

⬆️ Table of contents

Introduced new interface "IContainerStorageService" to replace "IDocumentStorageService" between Loader and Runtime layers (#25057)

Added an interface IContainerStorageService which will replace IDocumentStorageService in the Runtime layer. This is exposed by the Loader layer to the Runtime layer via ContainerContext. This will help remove Runtime layer's dependency on the Driver layer and replace it with the Loader layer that it already maintains. This new interface will only contain properties that are needed and used by the Runtime layer.

The following properties from IContainerStorageService are deprecated as they are not needed by the DataStore layer. These be removed in a future release:

  • policies - The Runtime only needs maximumCacheDurationMs property from it which is added directly on IContainerStorageService.
  • downloadSummary
  • disposed
  • dispose

Change details

Commit: 92012de

Affected packages:

  • @fluidframework/container-definitions

⬆️ Table of contents

New ILayerCompatDetails property on LocalDocumentServiceFactory and OdspDocumentServiceFactoryCore (#25120)

A new optional property, ILayerCompatDetails, has been added to LocalDocumentServiceFactory and OdspDocumentServiceFactoryCore. This property is used by Container in the Loader layer to validate that the Loader and Driver layers are compatible.

Important: this property is intended for use by Fluid Framework code only. No code outside the Fluid Framework should use or depend on this property in any way.

Change details

Commit: 02accca

Affected packages:

  • @fluidframework/local-driver
  • @fluidframework/odsp-driver

⬆️ Table of contents

🛠️ Start Building Today!

Please continue to engage with us on GitHub Discussion and Issue pages as you adopt Fluid Framework!

Don't miss a new FluidFramework release

NewReleases is sending notifications on new releases.