- Add BINARY_FORMAT.md: full AcBinary wire format spec (markers, encoding, options, protocol, interactions) - Reference BINARY_FORMAT.md from GLOSSARY.md, Binaries/README.md, and Serializers/Binaries/README.md; add new glossary terms - Clarify and expand config options tables to match new doc - Add/clarify LLM maintenance rules: always sync .md files with code, auto-fix discrepancies - Update root README.md: AyCode.Core targets .NET 9, not 10; stress doc/code sync - Add code reuse and doc sync conventions to copilot-instructions.md and CONVENTIONS.md - Add docs/ folder and BINARY_FORMAT.md to solution as Solution Items - Minor clarifications and cross-links in ARCHITECTURE.md and other docs |
||
|---|---|---|
| .. | ||
| AcBinarySourceGenerator.cs | ||
| AyCode.Core.Serializers.SourceGenerator.csproj | ||
| README.md | ||
README.md
AyCode.Core.Serializers.SourceGenerator
Roslyn incremental source generator that produces optimized IGeneratedBinaryWriter and IGeneratedBinaryReader implementations for types marked with [AcBinarySerializable]. Eliminates runtime reflection on serialization hot paths.
Targets netstandard2.0 (required for Roslyn analyzers/generators).
Key Files
AcBinarySourceGenerator.cs— Single-fileIIncrementalGenerator(~2100 lines). Generates:{ClassName}_GeneratedWriter— Per-type writer withScanObject()+WriteProperties()methods. Handles primitives, strings (with interning), collections, dictionaries, complex nested types, and polymorphic objects.{ClassName}_GeneratedReader— Per-type reader withReadProperties()method.ModuleInitializer— Auto-registers all generated writers/readers at startup.- Circular reference detection with
ACBIN001diagnostic warning.
Feature Flags
The [AcBinarySerializable] attribute supports per-type feature control:
enableMetadata— Property hash metadata for cross-type deserializationenableIdTracking— IId-based reference trackingenableRefHandling— General reference trackingenableInternString— String interning/deduplication
Disabled features eliminate corresponding code blocks from generated output (zero dead code).
Dependencies
| Dependency | Purpose |
|---|---|
Microsoft.CodeAnalysis.CSharp |
Roslyn syntax/semantic APIs |
Microsoft.CodeAnalysis.Analyzers |
Analyzer best practices |