Skip to content

v0.43.0

Choose a tag to compare

@dmitry-lebedev dmitry-lebedev released this 02 Oct 07:37
· 9 commits to main since this release

SharedMeta 0.43.0

Focus: keeping clients and server in sync — across idle deactivation, reconnects, session loss and server-side failures.

Highlights

  • Subscriber store — subscriptions live in their own record (EntitySubscriptionStorage.ProviderName, e.g. Redis; falls back to "Default") and survive idle deactivation. A lost record is repaired on the player's next call.
  • Server-side failures no longer stall or diverge clients — when a meta method throws on the server, every subscriber receives the resulting state, and the failed call is not persisted. Permission refusals no longer stall other subscribers.
  • Declared ServerPatch / ServerReplace honoured by the server — no runtime mode override needed. Under ServerPatch, every subscriber gets the patch.
  • Config-aware argument transformers — IConfigArgumentTransformer / IStateConfigArgumentTransformer box and unbox against a [ServiceConfig] config. The build fails if a service using one doesn't declare that config.
  • Fixes — triggers on clients, reconnect and session-loss recovery, unsubscribe now reaching the server, and the _PatchTracked copy failing to compile with [ServerMetaService] / [StatelessMetaService] dependencies or PatchState.

Breaking — update client and server together

  • Wire format changed: state types travel as negotiated ids.
  • Removed: MetaContext transformer helpers (GetTransformer, BoxValue, TryAutoBox, …), GetExternal, Observe, TransformerRegistry, and the server-side GameServiceDiscovery delegates. Use instead:
    • MetaTransformer<T>.Instance for manual boxing;
    • declared dependencies for [ServerMetaService] bridges;
    • GetServerApi<T>(entityId) for calls from server code.
  • Subscriptions from earlier versions are not migrated: they moved out of EntityGrainState into the new store.
  • Clients re-register once: signature hashes changed (nullable annotations no longer count).
  • Custom transports: IConnection.SubscribeAsync / UnsubscribeAsync take a state-type id.

Full list: CHANGELOG.