AyCode.Core/AyCode.Core
Loretta 4a6e101410 Unify AcBinary string marker; prefix-tier VarUInt encoding
Refactored AcBinary to use a single String marker (167) for long-form strings, replacing StringLen8/16/32. Implemented prefix-tier VarUInt encoding for string lengths, introduced FixStrCount constant, and removed legacy LEB128 code paths. Updated all serialization/deserialization logic and documentation to match the new format. Includes related micro-optimizations and code cleanup.
2026-05-26 16:24:33 +02:00
..
Compression Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Consts Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Enums Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Extensions Zero-copy SignalR: direct object response, no SignalData 2026-04-06 22:45:00 +02:00
Helpers Add segment streaming to SignalR binary protocol 2026-04-10 09:27:40 +02:00
Interfaces Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Loggers [LOADED_DOCS: 4 files, no new loads] 2026-04-24 21:54:04 +02:00
Properties Update defaults, docs, and internals for AcBinary serializer 2026-04-02 22:17:46 +02:00
Serializers Unify AcBinary string marker; prefix-tier VarUInt encoding 2026-05-26 16:24:33 +02:00
docs Unify AcBinary string marker; prefix-tier VarUInt encoding 2026-05-26 16:24:33 +02:00
AcDomain.cs
AyCode.Core.csproj Add SGenOnly build config and centralize build settings 2026-05-19 17:41:06 +02:00
README.md AcBinary: Hot/cold marker split for string deserialization 2026-05-18 15:20:56 +02:00

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)
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