introduced JsonAstReader to create a tree representation from a given JSON value. Used by JsonMerger
add new button 'Patch' to Hub Explorer additional to 'Delete' and 'Save'
add FlioxClient.SyncTasksSynchronous() - can be used if all tasks can be executed synchronously
throws an exception if execution cannot be executed synchronously
add synchronous versions of EntityContainer methods for databases supporting synchronous execution like a MemoryDatabase
Unity
dropped support for compiling with preprocessor directive: JSON_BURST
optimize string equality test for Unity by introducing struct SmallString
CLR
update all nuget dependencies
NUnit3TestAdapter 4.3.1
Microsoft.NET.Test.Sdk 17.4.0
FluentAssertions 6.8.0
Microsoft.Azure.Cosmos 3.31.2
Microsoft.Extensions.Configuration.Json 7.0.0
dropped support IL code generation -> replaced by source code generation
Optimizations
avoid async calls when execution requests to avoid task allocation and reduce callstack depth
in case a requests can be executed synchronously no async method is called
reuse object instances if possible to avoid memory allocations
reuse objects in ObjectReader using an InstanceBuffer
reuse objects of FlioxClient.SyncTasks() with SyncResult.Reuse()
minimize heap allocations when creating tasks with a FlioxClient
reduce size of JsonKey by 8 bytes
removed redundant byte[] copies when using an ObjectReader
Pub-Sub optimizations
minimize CPU usage when filtering tasks by subscribers
introduced Deque<> for queueing events without heap allocation
avoid heap allocations and byte[] copy when ReadAsync from Stream's
support reusing of byte[] values in MemoryContainer for small values
removed all async calls when executing a query on a MemoryContainer
optimize reading polymorphic types in ObjectReader
generate source code to Write() JSON and reading JSON fields
This removes heap allocation caused by PropertyInfo / FieldInfo .GetValue() and .SetValue()
version: 0.15.0
Main focus of release was optimization. Especially for Unity Netcode Optimization goals:
removing heap allocation if possible. E.g. be using buffers
remove async method calls if possible
replacing Protocol task "patch" by "merge". See below
Breaking API changes
Breaking Protocol changes
New features / API's
Unity
CLR
Optimizations