-
Notifications
You must be signed in to change notification settings - Fork 537
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
build(client): Generate release notes for 2.4.0 #22785
Conversation
.changeset/small-months-heal.md
Outdated
@@ -5,6 +5,6 @@ | |||
"section": tree | |||
--- | |||
|
|||
Branch merges generate revertibles | |||
Branch merges now generate revertibles |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@noencke Is this referring to the alpha branching APIs that were added in this same release? I'm wondering if we should collapse this information into the announcement of the new APIs rather than a separate item. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good question. Yes - merges cannot be accomplished without the alpha branching API, so this is only relevant for that API. I think you're right that they would be best combined.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: I'd update line 10 to read "via the TreeBranch.merge
method".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Didn't go through every line of the 2.4.0.md file but skimmed it and looks fine to me. Left one small nit as a comment above.
Generated release notes for the 2.4 release. A preview of the generated notes is below. The notes were generated using the following command:
Fluid Framework v2.4.0
Contents
.create
on structurally named MapNode and ArrayNode schema (#22522)null
from unhydrated trees (#22748)RestrictiveReadonlyRecord
is deprecated (#22479)Client
Legacy APIs are now deprecated (#22629)op.contents
member on ContainerRuntime'sbatchBegin
/batchEnd
event args is deprecated (#22750)🌳 SharedTree DDS changes
✨ New! Alpha SharedTree branching APIs (#22550)
Several APIs have been added to allow for creating and coordinating "version-control"-style branches of the SharedTree. Use the
getBranch
entry point function to acquire a branch. For example:Merging any number of commits into a target branch (via the
TreeBranch.merge
method) generates a revertible for each commit on the target branch. See #22644 for more information about revertible support in the branching APIs.Change details
Commit:
8f4587c
Affected packages:
⬆️ Table of contents
✨ New! Alpha API for providing SharedTree configuration options (#22701)
A new alpha
configuredSharedTree
had been added. This allows providing configuration options, primarily for debugging, testing and evaluation of upcoming features. The resulting configuredSharedTree
object can then be used in-place of the regularSharedTree
imported fromfluid-framework
.Change details
Commit:
40d3648
Affected packages:
⬆️ Table of contents
✨ New! Alpha APIs for producing SharedTree schema from enums (#20035)
adaptEnum
andenumFromStrings
have been added to@fluidframework/tree/alpha
andfluid-framework/alpha
. These unstable alpha APIs are relatively simple helpers on-top of public APIs (source: schemaCreationUtilities.ts): thus if these change or stable alternatives are needed, an application can replicate this functionality using these implementations as an example.Change details
Commit:
5f9bbe0
Affected packages:
⬆️ Table of contents
✨ New! Alpha API for snapshotting Schema (#22733)
extractPersistedSchema
can now be used to extra a JSON-compatible representation of the subset of a schema that gets stored in documents. This can be used write tests which snapshot an applications schema. Such tests can be used to detect schema changes which could would impact document compatibility, and can be combined with the newcomparePersistedSchema
to measure what kind of compatibility impact the schema change has.Change details
Commit:
920a65f
Affected packages:
⬆️ Table of contents
Expose the view schema from the TreeView interface (#22547)
Users of TreeView can now access the type-safe view schema directly on the view object via
TreeView.schema
. This allows users to avoid passing the schema around in addition to the view in scenarios where both are needed. It also avoids scenarios in which code wants to accept both a view and its schema and thus must constrain both to be of the same schema type.Change details
Commit:
2aa29d9
Affected packages:
⬆️ Table of contents
Metadata can now be associated with Field Schema (#22564)
Users of TreeView can now specify metadata when creating Field Schema. This includes system-understood metadata, i.e.,
description
.Example:
Functionality like the experimental conversion of Tree Schema to JSON Schema (
getJsonSchema
) can leverage such system-understood metadata to generate useful information. In the case of thedescription
property, this is mapped directly to thedescription
property supported by JSON Schema.Custom, user-defined properties can also be specified. These properties will not be leveraged by the system by default, but can be used as a handy means of associating common application-specific properties with Field Schema.
Example:
An application is implementing search functionality. By default, the app author wishes for all app content to be indexable by search, unless otherwise specified. They can leverage schema metadata to decorate fields that should be ignored by search, and leverage that information when walking the tree during a search.
Search can then be implemented to look for the appropriate metadata, and leverage it to omit the unwanted position data from search.
Change details
Commit:
1d9f4c9
Affected packages:
⬆️ Table of contents
Unhydrated SharedTree nodes now emit change events when edited (#22661)
Newly-created SharedTree nodes which have not yet been inserted into the tree will now emit
nodeChanged
andtreeChanged
events when they are mutated via editing operations.Change details
Commit:
d1eade6
Affected packages:
⬆️ Table of contents
Non-leaf field access has been optimized (#22717)
When reading non-leaf children which have been read previously, they are retrieved from cache faster. Several operations on subtrees under arrays have been optimized, including reading of non-leaf nodes for the first time. Overall this showed a roughly 5% speed up in a read heavy test application (the BubbleBench example) but gains are expected to vary a lot based on use-case.
Change details
Commit:
6a2b681
Affected packages:
⬆️ Table of contents
🐛 Bug Fixes
Fix
.create
on structurally named MapNode and ArrayNode schema (#22522)Constructing a structurally named MapNode or ArrayNode schema (using the overload of
SchemaFactory.map
orSchemaFactory.array
which does not take an explicit name), returned aTreeNodeSchema
instead of aTreeNodeSchemaNonClass
, which resulted in thecreate
static method not being exposed. This has been fixed, and can now be used as follows:This change causes some types to reference
TreeNodeSchemaNonClass
which did not reference it before. WhileTreeNodeSchemaNonClass
is@system
(See Fluid Releases and API Support Levels for details) and thus not intended to be referred to by users of Fluid, this change caused the TypeScript compiler to generate references to it in more cases when compilingd.ts
files. Since the TypeScript compiler is unable to generate references toTreeNodeSchemaNonClass
with how it was nested ininternalTypes.js
, this change could break the build of packages exporting types referencing structurally named map and array schema. This has been mitigated by movingTreeNodeSchemaNonClass
out ofinternalTypes.js
: any code importingTreeNodeSchemaNonClass
(and thus disregarding the@system
restriction) can be fixed by importing it from the top level instead of theinternalTypes.js
Change details
Commit:
b3f91ae
Affected packages:
⬆️ Table of contents
Fix reading of
null
from unhydrated trees (#22748)Unhydrated trees containing object nodes with required fields set to
null
used to throw an error. This was a bug:null
is a valid value in tree's whose schema allow it, and this specific case now correctly returnsnull
values when appropriate without erroring.Change details
Commit:
6a75bd0
Affected packages:
⬆️ Table of contents
SharedTree's
RestrictiveReadonlyRecord
is deprecated (#22479)RestrictiveReadonlyRecord
was an attempt to implement a version of TypeScript's built-inRecord<TKey, TValue>
type that would prohibit (instead of leaving unrestricted like Record does) values under keys that do not extendTKey
.The implementation of
RestrictiveReadonlyRecord
failed to accomplish this except for the edge cases whereTKey
was exactlystring
or exactlysymbol
. Fixing this bug appears to be impossible within the current limitation of TypeScript, however this library does not require any case other thanTKey
being exactlystring
.To reduce the risk of users of the tree library using the problematic
RestrictiveReadonlyRecord
type, it has been deprecated and replaced with a more specific type that avoids the bug,RestrictiveStringRecord<TValue>
.To highlight that this new type is not intended for direct use by users of tree, and instead is just used as part of the typing of its public API,
RestrictiveStringRecord
has been tagged with@system
. See API Support Levels for more details.Change details
Commit:
8be73d3
Affected packages:
⬆️ Table of contents
Several MergeTree
Client
Legacy APIs are now deprecated (#22629)To reduce exposure of the
Client
class in the merge-tree package, several types have been deprecated. These types directly or indirectly expose the merge-treeClient
class.Most of these types are not meant to be used directly, and direct use is not supported:
Some of the deprecations are class constructors. In those cases, we plan to replace the class with an interface which has an equivalent API. Direct instantiation of these classes is not currently supported or necessary for any supported scenario, so the change to an interface should not impact usage. This applies to the following types:
Change details
Commit:
0b59ae8
Affected packages:
⬆️ Table of contents
The
op.contents
member on ContainerRuntime'sbatchBegin
/batchEnd
event args is deprecated (#22750)The
batchBegin
/batchEnd
events on ContainerRuntime indicate when a batch is beginning/finishing being processed. The events include an argument of typeISequencedDocumentMessage
which is the first or last message of the batch.The
contents
property of theop
argument should not be used when reasoning over the begin/end of a batch. If you want to look at thecontents
of an op, wait for theop
event.Change details
Commit:
de6928b
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!