WinterRose.WinterForge
25.2.18
See the version list below for details.
dotnet add package WinterRose.WinterForge --version 25.2.18
NuGet\Install-Package WinterRose.WinterForge -Version 25.2.18
<PackageReference Include="WinterRose.WinterForge" Version="25.2.18" />
<PackageVersion Include="WinterRose.WinterForge" Version="25.2.18" />
<PackageReference Include="WinterRose.WinterForge" />
paket add WinterRose.WinterForge --version 25.2.18
#r "nuget: WinterRose.WinterForge, 25.2.18"
#addin nuget:?package=WinterRose.WinterForge&version=25.2.18
#tool nuget:?package=WinterRose.WinterForge&version=25.2.18
Stream-Based Object Serialization and Deserialization � WinterForge
WinterForge is a high-performance, human-readable object serialization framework designed to adapt fluidly to project needs rather than forcing projects to conform to its rules. It blends speed with developer clarity by offering a dual format system that supports both human-readable text and opcode-based intermediate representation for maximum performance.
Core Features
Stream-based I/O:
UtilizesIO.Stream
for serialization and deserialization, enabling flexible storage and transfer.Dual Format System:
- Human-readable text: Easy for developers to read, debug, diff, and edit manually.
- Opcode intermediate representation: Structured sequential opcodes for fast, optimized serialization cycles.
Comprehensive Type Support:
- Primitive types (
int
,float
,bool
,string
, etc.) with full typename transcription. - Anonymous types: Supports serialization and deserialization of inline, unnamed objects, including nested anonymous types.
- Nested objects, enums, lists, arrays, and nullable types.
- Static classes, fields, and properties.
- Primitive types (
Attribute-Driven Control:
- Inclusion/exclusion of fields and properties using attributes.
- Hooks on instance methods for lifecycle events:
BeforeSerialize
BeforeDeserialize
AfterDeserialize
- Hooks can be asynchronous (
async Task
), currently not awaited but planned as optional.
Advanced Object Handling:
- Object reference ID system with aliasing and stack-based referencing for reuse.
- Ability to call methods during deserialization, using return values dynamically.
- Custom value providers via
CustomValueProvider<T>
for type-specific value control, without manual registration. - Supports both structs and classes.
Progress and Formatting:
- Abstract progress tracking system (useful for loading bars, UI feedback).
- Formatting modes controlled by
TargetFormat
enum:HumanReadable
IndentedHumanReadable
Opcodes
- Automatic conversion between human-readable and opcode formats.
Smart Type Discovery and Reflection:
- Dynamically discovers types and members.
- Supports runtime variables and integration with reflection helpers.
Design Philosophy
Performance + Developer Clarity:
Optimized to serialize thousands of objects in milliseconds while maintaining human readability for easier debugging and version control.Structure-First Approach:
Data is always read in the order it is written, ensuring deterministic and reliable serialization.
Current Limitations & Future Plans
- Dictionaries not yet supported.
- Upcoming features:
- Support for math and boolean expressions within serialized data.
- Importing and including other WinterForge files/modules.
- Templates and repeatable code blocks.
- Conditional serialization and expression support.
- Optional async lifecycle hook awaiting.
License
You can find the license details here.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- WinterRose.Reflection (>= 25.2.6)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on WinterRose.WinterForge:
Package | Downloads |
---|---|
WinterRose
A library made mostly for personal use. distribution without consent of the Author is strictly forbidden |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
25.2.19-alpha-3 | 108 | 6/24/2025 |
25.2.19-alpha-2 | 130 | 6/19/2025 |
25.2.19-alpha | 126 | 6/19/2025 |
25.2.18 | 135 | 6/14/2025 |
25.2.17 | 167 | 6/13/2025 |
25.2.16 | 169 | 6/13/2025 |
25.2.15 | 189 | 6/13/2025 |
25.2.14 | 87 | 5/30/2025 |
25.2.13 | 78 | 5/30/2025 |
25.2.12 | 83 | 5/30/2025 |
25.2.11 | 108 | 5/30/2025 |
25.2.10 | 133 | 5/29/2025 |
25.2.9 | 155 | 5/26/2025 |
25.2.8 | 134 | 5/25/2025 |
25.2.7 | 135 | 5/25/2025 |
25.2.6 | 138 | 5/25/2025 |
25.2.5 | 100 | 5/23/2025 |
25.2.4 | 104 | 5/23/2025 |
25.2.3 | 219 | 5/15/2025 |
25.2.2 | 139 | 5/4/2025 |
25.2.1 | 137 | 5/4/2025 |
25.2.0 | 136 | 5/4/2025 |
Anonymous types can now support collection definitions
HOTFIX 1: mis placement of RETURN that shouldve been CONTINUE caused invalid deserialization
HOTFIX 2: Anonymous type serialization for a variable of the Anonymous class did not work as expected
HOTFIX 3: version increase to adhere to the version increase of WinterRose.Reflection
HOTFIX 4: Strings werent handled properly due to a bug introduced when multiline strings were added