Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upcoming Release: FluidFramework v2.10.0 #22101

Open
tylerbutler opened this issue Aug 1, 2024 · 0 comments
Open

Upcoming Release: FluidFramework v2.10.0 #22101

tylerbutler opened this issue Aug 1, 2024 · 0 comments

Comments

@tylerbutler
Copy link
Member

tylerbutler commented Aug 1, 2024

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:

pnpm flub generate releaseNotes -g client -t minor --outFile RELEASE_NOTES/2.10.0.md

To generate the release notes to paste into the GitHub Release, run the following command:

pnpm flub generate releaseNotes -g client -t minor --headingLinks --excludeH1 --outFile temporary-file.md

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

✨ 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:

  • @fluidframework/runtime-utils

⬆️ 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 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.

Change details

Commit: e51c94d

Affected packages:

  • @fluidframework/tree

⬆️ Table of contents

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 behavior
function deregisterViaOff(view: TreeView<MySchema>): {
	const listener = () => { /* ... */ };
	view.events.on("commitApplied", listener); // Register
	view.events.off("commitApplied", listener); // Deregister
}

// The existing behavior (still supported)
function deregisterViaCallback(view: TreeView<MySchema>): {
	const off = view.events.on("commitApplied", () => { /* ... */ }); // Register
	off(); // Deregister
}

Change details

Commit: c59225d

Affected packages:

  • fluid-framework
  • @fluidframework/tree

⬆️ 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:

class MapRecursive extends sf.mapRecursive("Map", [() => MapRecursive]) {}
{
  type _check = ValidateRecursiveSchema<typeof MapRecursive>;
}
// New:
const fromObject = new MapRecursive({ x: new MapRecursive() });
// Existing:
const fromIterator = new MapRecursive([["x", new MapRecursive()]]);
const fromMap = new MapRecursive(new Map([["x", new MapRecursive()]]));
const fromNothing = new MapRecursive();
const fromUndefined = new MapRecursive(undefined);

Change details

Commit: 0185a08

Affected packages:

  • fluid-framework
  • @fluidframework/tree

⬆️ Table of contents

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:

const Mode = enumFromStrings(schema, ["Fun", "Bonus"]);
type Mode = TreeNodeFromImplicitAllowedTypes<typeof Mode.schema>;
const node = new Mode.Bonus() as Mode;

switch (node.value) {
  case "Fun": {
    assert.fail();
  }
  case "Bonus": {
    // This one runs
    break;
  }
  default:
    // Before this change, "node.value" was never here, now "node" is never.
    unreachableCase(node);
}

Change details

Commit: cfb6838

Affected packages:

  • fluid-framework
  • @fluidframework/tree

⬆️ Table of contents

⚠️ Deprecations

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

Change details

Commit: 7a03253

Affected packages:

  • fluid-framework
  • @fluidframework/merge-tree
  • @fluidframework/sequence

⬆️ 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-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:

  • SequenceInterval
  • SequenceEvent
  • SequenceDeltaEvent
  • SequenceMaintenanceEvent

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:

  • fluid-framework
  • @fluidframework/merge-tree
  • @fluidframework/sequence

⬆️ 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 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.

Change details

Commit: 45a5769

Affected packages:

  • @fluidframework/aqueduct
  • @fluidframework/container-definitions
  • @fluidframework/container-loader
  • @fluidframework/container-runtime
  • @fluidframework/container-runtime-definitions
  • @fluidframework/datastore
  • @fluidframework/devtools-core
  • @fluidframework/fluid-static
  • @fluidframework/runtime-definitions
  • @fluidframework/runtime-utils
  • @fluid-private/test-end-to-end-tests
  • @fluidframework/test-runtime-utils
  • @fluidframework/test-utils

⬆️ Table of contents

"Remove IFluidParentContext.ensureNoDataModelChanges and its implementations (#22842)

  • IFluidParentContext.ensureNoDataModelChanges has been removed. prior deprecation commit

  • MockFluidDataStoreContext.ensureNoDataModelChanges has also been removed.

Change details

Commit: 3aff19a

Affected packages:

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

⬆️ 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 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.

Change details

Commit: d252af5

Affected packages:

  • @fluidframework/runtime-definitions

⬆️ Table of contents

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.)

Change details

Commit: 365c5c0

Affected packages:

  • @fluidframework/presence

⬆️ Table of contents

🛠️ Start Building Today!

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

@github-actions github-actions bot changed the title Upcoming release tracking Upcoming Release: FluidFramework v2.2.0 Aug 6, 2024
@github-actions github-actions bot changed the title Upcoming Release: FluidFramework v2.2.0 Upcoming Release: FluidFramework v2.3.0 Aug 17, 2024
CraigMacomber added a commit that referenced this issue Sep 11, 2024
## Description

Fix a couple changesets based on
#22101
@github-actions github-actions bot changed the title Upcoming Release: FluidFramework v2.3.0 Upcoming Release: FluidFramework v2.4.0 Sep 17, 2024
@github-actions github-actions bot changed the title Upcoming Release: FluidFramework v2.4.0 Upcoming Release: FluidFramework v2.5.0 Oct 15, 2024
@github-actions github-actions bot changed the title Upcoming Release: FluidFramework v2.5.0 Upcoming Release: FluidFramework v2.10.0 Nov 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant