Chronicler.MemoryPackShim 1.0.0

dotnet add package Chronicler.MemoryPackShim --version 1.0.0
                    
NuGet\Install-Package Chronicler.MemoryPackShim -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Chronicler.MemoryPackShim" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Chronicler.MemoryPackShim" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Chronicler.MemoryPackShim" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Chronicler.MemoryPackShim --version 1.0.0
                    
#r "nuget: Chronicler.MemoryPackShim, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Chronicler.MemoryPackShim@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Chronicler.MemoryPackShim&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Chronicler.MemoryPackShim&version=1.0.0
                    
Install as a Cake Tool

Chronicler

Chronicler Icon

Deterministic state transfer and simulation timing for .NET runtimes that own their objects and their schemas.

build-and-test Coverage NuGet License API Discord

Chronicler lets a type declare its state once, then use that same explicit schema for JSON, MemoryPack, restore workflows, stable runtime links, and deterministic record hashes. Your host constructs the object graph; Chronicler transfers state into it without taking ownership of your runtime.

It also provides exact simulation timestamps and signed durations with 64-bit whole seconds and 32 fractional bits, plus an explicitly advanced, recordable clock. These timing primitives are independent of any engine or math package.

Why Chronicler?

  • Schemas stay in your code. RecordData(...) makes names, defaults, order, and ownership visible and reviewable.
  • Restore into live objects. Populate initialized runtime shells instead of asking a serializer to invent your graph.
  • Keep references stable. Record external or runtime-owned objects by IDs through a session-scoped registry.
  • Compare deterministic state. Compute replay and conformance signals from the recording schema without hashing a transport payload.
  • Keep long-lived time exact. Advance a recordable clock explicitly; subtract wide timestamps before converting short intervals for motion calculations.
  • Choose your dependency surface. Use JSON and MemoryPack together, or take the Lean package when the built-in MemoryPack transport is unnecessary.

Install

dotnet add package Chronicler.Core

Chronicler.Core targets netstandard2.1 and net10.0 and includes the JSON and MemoryPack transports.

Quick start

using Chronicler;
using Chronicler.Serialization;

PlayerSnapshot source = new() { Health = 72 };
string json = JsonRecordSerializer.Serialize(source, writeIndented: true);

PlayerSnapshot restored = new(); // The host creates and initializes the shell.
JsonRecordSerializer.Populate(restored, json);

public sealed class PlayerSnapshot : IRecordable
{
    public int Health = 100;
    public WeaponSnapshot Weapon = new();

    public void RecordData(IChronicler chronicler)
    {
        RecordValues.Look(chronicler, ref Health, "health", 100);
        RecordDeep.Look(chronicler, ref Weapon, "weapon");
    }
}

public sealed class WeaponSnapshot : IRecordable
{
    public int Ammo = 30;

    public void RecordData(IChronicler chronicler)
    {
        RecordValues.Look(chronicler, ref Ammo, "ammo", 30);
    }
}

The same RecordData(...) implementation works with MemoryPackRecordSerializer in the standard package. restored.Health is now 72; its existing Weapon keeps the declared ammo default of 30.

Recording contracts and helpers live in Chronicler. Use Chronicler.Serialization for transports and converters, Chronicler.Hashing for deterministic record hashes, and Chronicler.Timing for time values and the clock. See the migration guide when upgrading existing code.

The independent Chronicler.Diagnostics package provides diagnostic channels, lazy logging, and exception guards without depending on either Core variant. See the diagnostics guide.

Choose a package

Package Use it when
Chronicler.Diagnostics You need shared logging and exception guards without serialization dependencies.
Chronicler.Core You want the core recording model plus built-in JSON and MemoryPack transports.
Chronicler.Core.Lean You want the core recording model and JSON without the MemoryPack dependency or built-in MemoryPack transport.
Chronicler.MemoryPackShim A Lean library keeps MemoryPack annotations in its public metadata. This package supplies compatibility attributes; it is not a serializer.

Learn more

Development

dotnet build Chronicler.slnx --configuration Release
dotnet test Chronicler.slnx --configuration Release --no-build

See the contributor guide for the full workflow.

Community and license

Open an issue for bugs and feature requests, or join the LSF Discord community.

See Support, the Code of Conduct, and the security policy for help and reporting guidance.

Chronicler is available under the MIT License. See the notice for the repository's branding and redistribution terms.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.
  • net10.0

    • No dependencies.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Chronicler.MemoryPackShim:

Package Downloads
SwiftCollections.Lean

SwiftCollections is a high-performance, memory-efficient library of collections designed for game development, simulations, and other performance-critical applications.

FixedMathSharp.Lean

FixedMathSharp: A high-precision, deterministic fixed-point math library for .NET. Ideal for simulations, games, and physics engines requiring reliable arithmetic without floating-point inaccuracies.

Chronicler.Core.Lean

Deterministic, transport-neutral state transfer into existing runtime object graphs, with exact time values and a recordable simulation clock for lockstep applications.

GridForge.Lean

A high-performance, deterministic rectangular and hex-prism voxel grid system for spatial partitioning, simulation, and game development.

FixedMathSharp.Chronicler.Lean

Chronicler deterministic record-hash writer extensions for FixedMathSharp fixed-point, vector, matrix, transform, and geometry types.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 65 10/31/2026
0.4.0 971 8/2/2026
0.3.0 304 6/29/2026