Skip to content

Latest commit

 

History

History
449 lines (295 loc) · 26.5 KB

File metadata and controls

449 lines (295 loc) · 26.5 KB

@fluidframework/runtime-definitions

2.0.0-rc.2.0.0

Minor Changes

  • runtime-definitions: ITelemetryContext: Functions get and serialize are now deprecated (#19409) 42696564dd

    ITelemetryContext is to be used only for instrumentation, not for attempting to read the values already set by other code. This is important because this public interface may soon use FF's should-be internal logging instrumentation types, which we reserve the right to expand (to support richer instrumentation). In that case, we would not be able to do so in a minor release if they're used as an "out" type like the return type for get.

    There is no replacement given in terms of immediate programmatic access to this data. The expected use pattern is something like this:

    • Some code creates a concrete implementation of ITelemetryContext and passes it around
    • Callers use the "write" functions on the interface to build up the context
    • The originator uses a function like serialize (on the concrete impl, not exposed on the interface any longer) and passes the result to a logger
    • The data is inspected along with other logs in whatever telemetry pipeline is used by the application (or Debug Tools, etc)
  • container-runtime: New feature: ID compression for DataStores & DDSs (#19859) 51f0d3db73

    Key changes

    1. A new API IContainerRuntimeBase.generateDocumentUniqueId() is exposed. This API will opportunistically generate IDs in short format (non-negative numbers). If it can't achieve that, it will return UUID strings. UUIDs generated will have low entropy in groups and will compress well. It can be leveraged anywhere in container where container unique IDs are required. I.e. any place that uses uuid() and stores data in container is likely candidate to start leveraging this API.
    2. Data store internal IDs (IDs that are auto generated by FF system) will opportunistically be generated in shorter form. Data stores created in detached container will always have short IDs, data stores created in attached container will opportunistically be short (by using newly added IContainerRuntimeBase.generateDocumentUniqueId() capability)
    3. Similar DDS names will be opportunistically short (same considerations for detached DDS vs. attached DDS)

    Implementation details

    1. Container level ID Compressor can now be enabled with delay. With such setting, only new IContainerRuntimeBase.generateDocumentUniqueId() is exposed (ID Compressor is not exposed in such case, as leveraging any of its other capabilities requires future container sessions to load ID Compressor on container load, for correctness reasons). Once Container establishes connection and any changes are made in container, newly added API will start generating more compact IDs (in most cases).

    Breaking changes

    1. DDS names can no longer start with "_" symbol - this is reserved for FF needs. I've validated that's not an issue for AzureClient (it only creates root object by name, everything else is referred by handle). Our main internal partners almost never use named DDSs (I can find only 4 instances in Loop).

    Backward compatibility considerations

    1. Data store internal IDs could collide with earlier used names data stores. Earlier versions of FF framework (before DataStore aliasing feature was added) allowed customers to supply IDs for data stores. And thus, files created with earlier versions of framework could have data store IDs that will be similar to names FF will use for newly created data stores ("A", ... "Z", "a"..."z", "AA", etc.). While such collision is possible, it's very unlikely (almost impossible) if user-provided names were at least 4-5 characters long.
    2. If application runs to these problems, or wants to reduce risks, consider disabling ID compressor via IContainerRuntimeOptions.enableRuntimeIdCompressor = "off".

    Minor changes

    1. IContainerRuntime.createDetachedRootDataStore() is removed. Please use IContainerRuntime.createDetachedDataStore and IDataStore.trySetAlias() instead
    2. IContainerRuntimeOptions.enableRuntimeIdCompressor has been changes from boolean to tri-state.
  • driver-definitions: repositoryUrl removed from IDocumentStorageService (#19522) 90eb3c9d33

    The repositoryUrl member of IDocumentStorageService was unused and always equal to the empty string. It has been removed.

  • runtime-definitions: FlushMode.Immediate is deprecated (#19963) 861500c1e2

    FlushMode.Immediate is deprecated and will be removed in the next major version. It should not be used. Use FlushMode.TurnBased instead, which is the default. See https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works for more information

  • container-definitions: ILoaderOptions no longer accepts arbitrary key/value pairs (#19306) 741926e225

    ILoaderOptions has been narrowed to the specific set of supported loader options, and may no longer be used to pass arbitrary key/value pairs through to the runtime.

  • runtime-definitions: Deprecated ID compressor related types have been removed. (#19031) de92ef0ac5

    This change should be a no-op for consumers, as these types were almost certainly unused and are also available in the standalone package id-compressor (see microsoft#18749).

  • container-definitions: Added containerMetadata prop on IContainer interface (#19142) d0d77f3516

    Added containerMetadata prop on IContainer interface.

  • runtime-definitions: Moved ISignalEnvelope interface to core-interfaces (#19142) d0d77f3516

    The ISignalEnvelope interface has been moved to the @fluidframework/core-interfaces package.

2.0.0-rc.1.0.0

Minor Changes

  • Updated server dependencies (#19122) 25366b4229

    The following Fluid server dependencies have been updated to the latest version, 3.0.0. See the full changelog.

    • @fluidframework/gitresources
    • @fluidframework/server-kafka-orderer
    • @fluidframework/server-lambdas
    • @fluidframework/server-lambdas-driver
    • @fluidframework/server-local-server
    • @fluidframework/server-memory-orderer
    • @fluidframework/protocol-base
    • @fluidframework/server-routerlicious
    • @fluidframework/server-routerlicious-base
    • @fluidframework/server-services
    • @fluidframework/server-services-client
    • @fluidframework/server-services-core
    • @fluidframework/server-services-ordering-kafkanode
    • @fluidframework/server-services-ordering-rdkafka
    • @fluidframework/server-services-ordering-zookeeper
    • @fluidframework/server-services-shared
    • @fluidframework/server-services-telemetry
    • @fluidframework/server-services-utils
    • @fluidframework/server-test-utils
    • tinylicious
  • Updated @fluidframework/protocol-definitions (#19122) 25366b4229

    The @fluidframework/protocol-definitions dependency has been upgraded to v3.1.0. See the full changelog.

  • garbage collection: Deprecate addedGCOutboundReference (#18456) 0619cf8a41

    The addedGCOutboundReference property on IDeltaConnection, IFluidDataStoreContext, and MockFluidDataStoreRuntime is now deprecated.

    The responsibility of adding outbound references (for Garbage Collection tracking) is moving up to the ContainerRuntime. Previously, DDSes themselves were responsible to detect and report added outbound references (via a handle being stored), so these interfaces (and corresponding mock) needed to plumb that information up to the ContainerRuntime layer where GC sits. This is no longer necessary so they're being removed in an upcoming release.

2.0.0-internal.8.0.0

Major Changes

  • container-runtime-definitions: Removed resolveHandle and IFluidHandleContext from ContainerRuntime interfaces 9a451d4946

    The IContainerRuntime.resolveHandle(...) method and the IContainerRuntimeBase.IFluidHandleContext property have been removed. Please remove all usage of these APIs.

    See Removing-IFluidRouter.md for more details.

  • container-runtime: Removed request pattern from ContainerRuntime, IRuntime, and IContainerRuntimeBase 9a451d4946

    The request(...) method and IFluidRouter property have been removed from the following places:

    • ContainerRuntime
    • IRuntime
    • IContainerRuntimeBase

    Please use the IRuntime.getEntryPoint() method to get the runtime's entry point.

    See Removing-IFluidRouter.md for more details.

  • runtime-definitions: Removed IFluidRouter from IFluidDataStoreChannel and FluidDataStoreRuntime 9a451d4946

    The IFluidRouter property has been removed from IFluidDataStoreChannel and FluidDataStoreRuntime. Please migrate all usage to the IFluidDataStoreChannel.entryPoint API.

    See Removing-IFluidRouter.md for more details.

  • runtime-definitions: Removed request and IFluidRouter from IDataStore 9a451d4946

    The request method and IFluidRouter property have been removed from IDataStore. Please migrate all usage to the IDataStore.entryPoint API.

    See Removing-IFluidRouter.md for more details.

2.0.0-internal.7.4.0

Minor Changes

  • container-runtime/runtime-definitions: IdCompressor and related types deprecated (#18749) 6f070179de

    IdCompressor and related types from the @fluidframework/container-runtime and @fluidframework/runtime-definitions packages have been deprecated. They can now be found in a new package, @fluidframework/id-compressor.

    The IdCompressor class is deprecated even in the new package. Consumers should use the interfaces, IIdCompressor and IIdCompressorCore, in conjunction with the factory function createIdCompressor instead.

2.0.0-internal.7.3.0

Dependency updates only.

2.0.0-internal.7.2.0

Dependency updates only.

2.0.0-internal.7.1.0

Dependency updates only.

2.0.0-internal.7.0.0

Major Changes

  • Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 871b3493dd

    This included the following changes from the protocol-definitions release:

    • Updating signal interfaces for some planned improvements. The intention is split the interface between signals submitted by clients to the server and the resulting signals sent from the server to clients.
      • A new optional type member is available on the ISignalMessage interface and a new ISentSignalMessage interface has been added, which will be the typing for signals sent from the client to the server. Both extend a new ISignalMessageBase interface that contains common members.
    • The @fluidframework/common-definitions package dependency has been updated to version 1.0.0.
  • runtime-definitions: bindToContext API removed 871b3493dd

    bindToContext has been removed from FluidDataStoreRuntime, IFluidDataStoreContext and MockFluidDataStoreContext. This has been deprecated for several releases and cannot be used anymore.

  • DEPRECATED: resolveHandle and IFluidHandleContext deprecated on IContainerRuntime 871b3493dd

    The resolveHandle(...) and get IFluidHandleContext() methods have been deprecated on the following interfaces:

    • IContainerRuntime
    • IContainerRuntimeBase

    Requesting arbitrary URLs has been deprecated on IContainerRuntime. Please migrate all usage to the IContainerRuntime.getEntryPoint() method if trying to obtain the application-specified root object.

    See Removing-IFluidRouter.md for more details.

  • container-definitions: IContainer's and IDataStore's IFluidRouter capabilities are deprecated 871b3493dd

    IFluidRouter and request({ url: "/" }) on IContainer and IDataStore are deprecated and will be removed in a future major release. Please migrate all usage to the appropriate getEntryPoint() or entryPoint APIs.

    See Removing-IFluidRouter.md for more details.

  • Server upgrade: dependencies on Fluid server packages updated to 2.0.1 871b3493dd

    Dependencies on the following Fluid server package have been updated to version 2.0.1:

    • @fluidframework/gitresources: 2.0.1
    • @fluidframework/server-kafka-orderer: 2.0.1
    • @fluidframework/server-lambdas: 2.0.1
    • @fluidframework/server-lambdas-driver: 2.0.1
    • @fluidframework/server-local-server: 2.0.1
    • @fluidframework/server-memory-orderer: 2.0.1
    • @fluidframework/protocol-base: 2.0.1
    • @fluidframework/server-routerlicious: 2.0.1
    • @fluidframework/server-routerlicious-base: 2.0.1
    • @fluidframework/server-services: 2.0.1
    • @fluidframework/server-services-client: 2.0.1
    • @fluidframework/server-services-core: 2.0.1
    • @fluidframework/server-services-ordering-kafkanode: 2.0.1
    • @fluidframework/server-services-ordering-rdkafka: 2.0.1
    • @fluidframework/server-services-ordering-zookeeper: 2.0.1
    • @fluidframework/server-services-shared: 2.0.1
    • @fluidframework/server-services-telemetry: 2.0.1
    • @fluidframework/server-services-utils: 2.0.1
    • @fluidframework/server-test-utils: 2.0.1
    • tinylicious: 2.0.1
  • test-utils: provideEntryPoint is required 871b3493dd

    The optional provideEntryPoint method has become required on a number of constructors. A value will need to be provided to the following classes:

    • BaseContainerRuntimeFactory
    • RuntimeFactory
    • ContainerRuntime (constructor and loadRuntime)
    • FluidDataStoreRuntime

    See testContainerRuntimeFactoryWithDefaultDataStore.ts for an example implemtation of provideEntryPoint for ContainerRuntime. See pureDataObjectFactory.ts for an example implementation of provideEntryPoint for DataStoreRuntime.

    Subsequently, various entryPoint and getEntryPoint() endpoints have become required. Please see containerRuntime.ts for example implementations of these APIs.

    For more details, see Removing-IFluidRouter.md

  • Minimum TypeScript version now 5.1.6 871b3493dd

    The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.

2.0.0-internal.6.4.0

Minor Changes

  • Upcoming: The type of the logger property/param in various APIs will be changing (#17350) 27284bcda3

    • @fluidframework/runtime-definitions
      • IFluidDataStoreRuntime.logger will be re-typed as ITelemetryBaseLogger
    • @fluidframework/odsp-driver
      • protected OdspDocumentServiceFactoryCore.createDocumentServiceCore's parameter odspLogger will be re-typed as ITelemetryLoggerExt
      • protected LocalOdspDocumentServiceFactory.createDocumentServiceCore's parameter odspLogger will be re-typed as ITelemetryLoggerExt

    Additionally, several of @fluidframework/telemetry-utils's exports are being marked as internal and should not be consumed outside of other FF packages.

2.0.0-internal.6.3.0

Dependency updates only.

2.0.0-internal.6.2.0

Minor Changes

  • Remove use of @fluidframework/common-definitions (#16638) a8c81509c9

    The @fluidframework/common-definitions package is being deprecated, so the following interfaces and types are now imported from the @fluidframework/core-interfaces package:

    • interface IDisposable
    • interface IErrorEvent
    • interface IErrorEvent
    • interface IEvent
    • interface IEventProvider
    • interface ILoggingError
    • interface ITaggedTelemetryPropertyType
    • interface ITelemetryBaseEvent
    • interface ITelemetryBaseLogger
    • interface ITelemetryErrorEvent
    • interface ITelemetryGenericEvent
    • interface ITelemetryLogger
    • interface ITelemetryPerformanceEvent
    • interface ITelemetryProperties
    • type ExtendEventProvider
    • type IEventThisPlaceHolder
    • type IEventTransformer
    • type ReplaceIEventThisPlaceHolder
    • type ReplaceIEventThisPlaceHolder
    • type TelemetryEventCategory
    • type TelemetryEventPropertyType

2.0.0-internal.6.1.0

Dependency updates only.

2.0.0-internal.6.0.0

Major Changes

  • Request APIs deprecated from many places 8abce8cdb4

    The request API (associated with the IFluidRouter interface) has been deprecated on a number of classes and interfaces. The following are impacted:

    • IRuntime and ContainerRuntime
    • IFluidDataStoreRuntime and FluidDataStoreRuntime
    • IFluidDataStoreChannel
    • MockFluidDataStoreRuntime
    • TestFluidObject

    Please migrate usage to the corresponding entryPoint or getEntryPoint() of the object. The value for these "entryPoint" related APIs is determined from factories (for IRuntime and IFluidDataStoreRuntime) via the initializeEntryPoint method. If no method is passed to the factory, the corresponding entryPoint and getEntryPoint() will be undefined.

    For an example implementation of initializeEntryPoint, see pureDataObjectFactory.ts.

    More information of the migration off the request pattern, and current status of its removal, is documented in Removing-IFluidRouter.md.

  • IContainer's and IDataStore's IFluidRouter capabilities are deprecated. 8abce8cdb4

    • The request function taking an arbitrary URL and headers is deprecated
    • However, an overload taking only { url: "/" } is not, for back-compat purposes during the migration from the request pattern to using entryPoint.

    About requesting "/" and using entryPoint

    Requesting "/" is an idiom some consumers of Fluid Framework have used in their own requestHandlers (passed to ContainerRuntime.loadRuntime and FluidDataStoreRuntime's constructor). The ability to access the "root" or "entry point" of a Container / DataStore will presently be provided by IContainer.getEntryPoint and IDataStore.entryPoint. However these are still optional, so a temporary workaround is needed.

    See Removing-IFluidRouter.md for more info on this transition from request to entryPoint.

    Present Replacement for requesting an arbitrary URL

    Suppose you have these variables:

    const container: IContainer = ...;
    const dataStore: IDataStore = ...;

    Before:

    container.request({ url, headers });
    dataStore.request({ url, headers });

    After:

    // Assume there is an interface like this in the app's Container implementation
    interface CustomUrlRouter {
    	doRequestRouting(request: { url: string; headers: Record<string, any>; }): any;
    }
    
    // Prerequisite: Pass a requestHandler to ContainerRuntime.loadRuntime that routes "/"
    // to some root object implementing CustomUrlRouter
    const containerRouter: CustomUrlRouter = await container.request({ "/" });
    containerRouter.doRequestRouting({ url, headers });
    
    // Prerequisite: Pass a requestHandler to FluidDataStoreRuntime's constructor that routes "/"
    // to some root object implementing CustomUrlRouter
    const dataStoreRouter: CustomUrlRouter = await dataStore.request({ "/" });
    dataStoreRouter.doRequestRouting({ url, headers });

    Looking ahead to using entryPoint

    In the next major release, getEntryPoint and entryPoint should be mandatory and available for use. Then you may replace each call request({ url: "/" }) with a call to get the entryPoint using these functions/properties.

  • Upgraded typescript transpilation target to ES2020 8abce8cdb4

    Upgraded typescript transpilation target to ES2020. This is done in order to decrease the bundle sizes of Fluid Framework packages. This has provided size improvements across the board for ex. Loader, Driver, Runtime etc. Reduced bundle sizes helps to load lesser code in apps and hence also helps to improve the perf.If any app wants to target any older versions of browsers with which this target version is not compatible, then they can use packages like babel to transpile to a older target.

  • IDeltaManager members disposed and dispose() removed 8abce8cdb4

    IDeltaManager members disposed and dispose() were deprecated in 2.0.0-internal.5.3.0 and have now been removed.

2.0.0-internal.5.4.0

Dependency updates only.

2.0.0-internal.5.3.0

Dependency updates only.

2.0.0-internal.5.2.0

Dependency updates only.

2.0.0-internal.5.1.0

Dependency updates only.

2.0.0-internal.5.0.0

Major Changes

  • GC interfaces removed from runtime-definitions 8b242fdc79

    The following interfaces available in @fluidframework/runtime-definitions were deprecated in 2.0.0-internal.4.1.0 and are now removed.

    • IGarbageCollectionNodeData
    • IGarbageCollectionState
    • IGarbageCollectionSnapshotData
    • IGarbageCollectionSummaryDetailsLegacy

2.0.0-internal.4.4.0

Dependency updates only.

2.0.0-internal.4.1.0

Minor Changes

  • GC interfaces removed from runtime-definitions (#14750) 60274eacab

    The following interfaces available in @fluidframework/runtime-definitions are internal implementation details and have been deprecated for public use. They will be removed in an upcoming release.

    • IGarbageCollectionNodeData
    • IGarbageCollectionState
    • IGarbageCollectionSnapshotData
    • IGarbageCollectionSummaryDetailsLegacy