Core aycode behaviour, business logic or general models
Go to file
Loretta e3a66857aa IId-based reference deduplication for serialization
Adds robust IId<T>-based reference deduplication to both serialization and deserialization. Objects with the same type and Id are now treated as the same reference, reducing output size and ensuring correct reference identity in complex graphs.

Key changes:
- TypeMetadataBase: Adds IdAccessorType, typed Id getters, and precomputed property arrays for zero-boxing and fast access.
- AcSerializerCommon: Introduces IIdReferenceTracker for efficient (Type, Id) → object mapping.
- SerializationReferenceTracker: Now supports both ReferenceEquals and IId-based tracking for scanning and writing.
- AcBinarySerializer: Reference scan uses IId-aware deduplication, skipping types that don't need tracking.
- AcBinaryDeserializer: Adds per-context IId caches to ensure reference identity on deserialization.
- PropertyAccessorBase: Adds IsComplexType for fast scan decisions.
- Populate/Chain: Integrated with new IId cache for correct deduplication.
- Tests: Adds/updates tests for IId identity, cross-type safety, and diagnostics.
- Benchmarks: Adds WithRef/NoRef and AcJson vs System.Text.Json.
- Documentation: Includes detailed implementation plan and rationale.

No breaking changes for types that do not use IId. Zero-boxing for int/long/Guid Ids. Reference identity is now preserved for all IId objects.
2026-01-16 22:55:52 +01:00
.claude Refactor Toon serializer: modularize metadata & relations 2026-01-14 15:39:03 +01:00
AyCode.Benchmark IId-based reference deduplication for serialization 2026-01-16 22:55:52 +01:00
AyCode.Core IId-based reference deduplication for serialization 2026-01-16 22:55:52 +01:00
AyCode.Core.Serializers.SourceGenerator Add AcBinary Source Generator for fast serialization 2026-01-06 08:58:34 +01:00
AyCode.Core.Server Integrate AcLogger with Microsoft.Extensions.Logging 2026-01-09 11:12:35 +01:00
AyCode.Core.Tests IId-based reference deduplication for serialization 2026-01-16 22:55:52 +01:00
AyCode.Core.Tests.Internal Enhance JSON handling and add hybrid reference support 2025-12-08 15:50:48 +01:00
AyCode.Database Enhance JSON handling and add hybrid reference support 2025-12-08 15:50:48 +01:00
AyCode.Database.Tests microsoft packages update 2025-12-01 16:18:36 +01:00
AyCode.Database.Tests.Internal Refactor JSON/SignalR infra; add full test & benchmark suite 2025-12-11 21:25:50 +01:00
AyCode.Entities AcModelDtoExtension improvements 2025-09-12 13:36:11 +02:00
AyCode.Entities.Server Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Interfaces improvements, fixes 2025-11-26 09:42:00 +01:00
AyCode.Interfaces.Server Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Models Add .targets file 2025-08-31 13:07:34 +02:00
AyCode.Models.Server Refactor SignalR dynamic method lookup with static registry 2026-01-02 15:51:50 +01:00
AyCode.Services Add Toon serializer: LLM-optimized format & rich metadata 2026-01-10 20:13:54 +01:00
AyCode.Services.Server Refactor SignalR dynamic method lookup with static registry 2026-01-02 15:51:50 +01:00
AyCode.Services.Server.Tests Refactor SignalR dynamic method lookup with static registry 2026-01-02 15:51:50 +01:00
AyCode.Services.Tests Refactor: Add high-perf JSON serializer & merge support 2025-12-14 19:34:49 +01:00
AyCode.Utils microsoft packages update 2025-12-01 16:18:36 +01:00
AyCode.Utils.Server Add .targets file 2025-08-31 13:07:34 +02:00
.gitattributes
.gitignore Add /reports to .gitignore 2026-01-06 08:58:03 +01:00
AllBenchmarksDropdown.html Refactor serializer tests, fix deserializer bugs, add Gzip 2025-12-19 19:29:12 +01:00
AyCode.Core.sln Add Toon serializer: LLM-optimized format & logging 2026-01-12 07:16:41 +01:00
AyCode.Core.targets CollectionExtensions UpdateCollectionById<TId> 2025-11-07 14:10:30 +01:00
Directory.Build.props Centralize test/benchmark results; optimize deserializer 2025-12-13 09:59:18 +01:00
MergeBenchmarksHtmlDropdown.bat Refactor serializer tests, fix deserializer bugs, add Gzip 2025-12-19 19:29:12 +01:00
MergeBenchmarksHtmlDropdown.ps1 Refactor serializer tests, fix deserializer bugs, add Gzip 2025-12-19 19:29:12 +01:00
RunFullBenchmark.bat Refactor serializer tests, fix deserializer bugs, add Gzip 2025-12-19 19:29:12 +01:00
RunQuickBenchmark.bat Expand QuickBenchmark suite & add CLI scripts 2025-12-15 12:00:03 +01:00
RunQuickBenchmark.ps1 Expand QuickBenchmark suite & add CLI scripts 2025-12-15 12:00:03 +01:00
TestChainApi.cs Add expression serialization & chain API for JSON deserialization 2025-12-29 15:28:46 +01:00
ToonExtendedInfo.txt Add Toon serializer: LLM-optimized format & rich metadata 2026-01-10 20:13:54 +01:00
test.runsettings Centralize test/benchmark results; optimize deserializer 2025-12-13 09:59:18 +01:00