Move DrainFromAsync to tests, add in-memory benchmarks - Moved AsyncPipeReaderInputExtensions.DrainFromAsync from the main framework to test-only assembly; no longer public API. - Removed AcBinaryDeserializer.DeserializeFromPipeReaderAsync<T> from public API; tests now inline drain+deserialize logic. - Added AcBinaryInMemoryPipeBenchmark and AcBinaryInMemoryRawByteArrayBenchmark to complete 2x2 transport × wire-format benchmark matrix. - Refactored benchmark runner for interactive menu, settings, and CLI parsing. - Expanded XML docs for AsyncPipeReaderInput and AsyncPipeWriterOutput to clarify push-pattern and real-world usage. - Updated BINARY_ASYNCPIPE_TODO.md and related docs to reflect these changes. |
||
|---|---|---|
| .. | ||
| Compression | ||
| Consts | ||
| Enums | ||
| Extensions | ||
| Helpers | ||
| Interfaces | ||
| Loggers | ||
| Properties | ||
| Serializers | ||
| docs | ||
| AcDomain.cs | ||
| AyCode.Core.csproj | ||
| README.md | ||
README.md
AyCode.Core
@project { type = "framework" }
Core library for the AyCode platform. Targets .NET 9 (set in AyCode.Core.targets). Provides serialization (Binary, JSON, Toon), compression, logging, validation, and shared utilities.
Documentation
| Document | Topic |
|---|---|
BINARY_FORMAT.md |
Binary wire format spec (stream layout, type markers) |
BINARY_FEATURES.md |
Binary features (interning, ref tracking, property ordering) |
BINARY_OPTIONS.md |
Binary configuration options & presets |
LOGGING.md |
Logging framework (hierarchy, config, ILogger bridge) |
Folder Structure
| Folder | Purpose | README |
|---|---|---|
Compression/ |
Brotli, GZip, LZ4 compression (pure managed, WASM-compatible) | README |
Consts/ |
Project-wide constants, error codes, regex validation, environment config | README |
Enums/ |
Shared enums: AppType, MessageContextType, TrackingState | README |
Extensions/ |
Collection merge/sync, serialization extensions, utility extensions | README |
Helpers/ |
Token generation, observable collections, JSON utilities, password hashing, task helpers | README |
Interfaces/ |
Core interfaces: IId<T>, IForeignKey, IAcSerializableToJson | README |
Loggers/ |
Custom logging framework with MS.Extensions.Logging integration | README |
Serializers/ |
Serialization framework: Binary, JSON, Toon formats on shared infrastructure | README |
Root Files
AcDomain.cs— Singleton for process-level state: process name, build type detection (IsDeveloperVersion/IsProductVersion), processor count, thread-safe unique ID generators (NextUniqueInt32,NextUniqueInt64).
Dependencies
| Dependency | Purpose |
|---|---|
AyCode.Utils |
Shared utilities (project reference) |
AyCode.Core.Serializers.SourceGenerator |
Binary serializer source generation (analyzer) |
AutoMapper |
Object mapping |
MessagePack |
MessagePack serialization |
Newtonsoft.Json |
JSON serialization (legacy, alongside System.Text.Json) |
Microsoft.Extensions.Configuration.* |
appsettings.json + environment variable support |
Microsoft.Extensions.Logging.Abstractions |
Logging abstractions |