AyCode.Core/AyCode.Core/docs/BINARY
Loretta 7f677418af Refactor string wire format to universal FixStr/String
Refactored binary string serialization to use a new universal wire format with FixStr (135–166) and String (167) markers and unsigned excess slots, replacing the previous tiered approach. Updated all read/write logic, marker handling, and type code definitions accordingly. FastWire UTF-16 marker (91) now has dedicated handling with legacy compatibility. Removed legacy StringSmall/Medium/Big/Ascii code paths except for backward-compatibility. Improved buffer management in ArrayBinaryOutput and documented new critical issues regarding buffer ownership and disposal. Added new utility methods for marker encoding/decoding and excess slot sizing. Updated documentation and comments to match the new format.
2026-05-22 10:59:59 +02:00
..
BINARY_ASYNCPIPE_ISSUES.md [LOADED_DOCS: 7 files, no new loads] 2026-05-11 13:28:43 +02:00
BINARY_ASYNCPIPE_TODO.md [LOADED_DOCS: 3 files, no new loads] 2026-05-05 06:55:32 +02:00
BINARY_BYTECODE_OPTIMIZATION.md Refactor charset profiles; split StringSmall decode paths 2026-05-19 12:58:22 +02:00
BINARY_FEATURES.md [LOADED_DOCS: 7 files, no new loads] 2026-05-11 13:28:43 +02:00
BINARY_FORMAT.md [LOADED_DOCS: 2 files, no new loads] 2026-05-04 14:36:16 +02:00
BINARY_IMPLEMENTATION.md [LOADED_DOCS: 3 files, no new loads] 2026-05-01 14:01:23 +02:00
BINARY_ISSUES.md Refactor string wire format to universal FixStr/String 2026-05-22 10:59:59 +02:00
BINARY_OPTIONS.md [LOADED_DOCS: 3 files, no new loads] 2026-05-15 08:40:52 +02:00
BINARY_SGEN.md [LOADED_DOCS: 3 files, no new loads] 2026-05-01 14:01:23 +02:00
BINARY_SGEN_OPTIMIZATION.md AcBinary: Hot/cold marker split for string deserialization 2026-05-18 15:20:56 +02:00
BINARY_STRICT_SGEN.md Refactor charset profiles; split StringSmall decode paths 2026-05-19 12:58:22 +02:00
BINARY_TODO.md Refactor charset profiles; split StringSmall decode paths 2026-05-19 12:58:22 +02:00
BINARY_TODO_2026_04.md Refactor: BDN runner, unified reporting, doc overhaul 2026-05-15 20:54:42 +02:00
BINARY_TODO_2026_05.md Refactor: BDN runner, unified reporting, doc overhaul 2026-05-15 20:54:42 +02:00
BINARY_WHYUSE.md [LOADED_DOCS: 3 files, no new loads] 2026-05-15 08:40:52 +02:00
BINARY_WRITERS.md [LOADED_DOCS: 3 files, no new loads] 2026-05-03 15:21:15 +02:00
README.md Refactor charset profiles; split StringSmall decode paths 2026-05-19 12:58:22 +02:00

README.md

BINARY — AcBinary serializer

AcBinary serialization system. Primary goal: speed (two-phase scan+serialize, reference tracking, string interning).

Files in this folder

Start here

Start with BINARY_WHYUSE.md (architectural framing — why this serializer over the alternatives), then BINARY_FEATURES.md (feature overview), then BINARY_FORMAT.md (wire-level). BINARY_SGEN.md covers build-time code-gen integration.

Cross-references

  • Serialization overview (Toon vs AcBinary vs AcJson, shared infrastructure): ../../Serializers/README.md
  • SignalR binary transport (uses this serializer): ../../AyCode.Services/docs/SIGNALR_BINARY_PROTOCOL/README.md
  • ASP.NET Core MVC formatter (uses this serializer): ../../AyCode.Services/docs/MVC/README.md
  • Glossary terms: ../../../docs/GLOSSARY.md
  • AyCode.Core/docs/adr/0003-acbinary-streaming-receive-architecture.md — Receive-side streaming architecture (Status: Accepted 2026-05-03, partially executed). Delivered: SegmentBufferReader + SegmentBufferReaderInput consolidated into a single AsyncPipeReaderInput primitive (mirrors send-side AsyncPipeWriterOutput); SignalR receive-side migration completed. Dropped during execution: NamedPipe + FileStream helpers (Steps 4 & 5) — framework stays consumer-implements-transport, exposes only generic PipeWriter / PipeReader primitives.