Automatonic.Text.Kdl 0.0.3-alpha

This is a prerelease version of Automatonic.Text.Kdl.
dotnet add package Automatonic.Text.Kdl --version 0.0.3-alpha
                    
NuGet\Install-Package Automatonic.Text.Kdl -Version 0.0.3-alpha
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Automatonic.Text.Kdl" Version="0.0.3-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Automatonic.Text.Kdl" Version="0.0.3-alpha" />
                    
Directory.Packages.props
<PackageReference Include="Automatonic.Text.Kdl" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Automatonic.Text.Kdl --version 0.0.3-alpha
                    
#r "nuget: Automatonic.Text.Kdl, 0.0.3-alpha"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Automatonic.Text.Kdl@0.0.3-alpha
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Automatonic.Text.Kdl&version=0.0.3-alpha&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Automatonic.Text.Kdl&version=0.0.3-alpha&prerelease
                    
Install as a Cake Tool

Automatonic.Text.Kdl

C# support for KDL in the style of the System.Text.Json library.

This is a goal / passion project for me personally. I will be using it as a self-directed exercise to expand my skills with several key SDKs in modern C# and to "scratch the itch" of supporting/implementing a configuration language that I find interesting / compelling. I want to:

  • Compare and contrast NewtonSoft.Json (with which I am very familiar) to System.Text.Json for posterity and performance
  • Use the resulting knowledge of low allocation span-based parsers to create Automatonic.Text.Kdl primitives
  • Build out additional features as relevant/appropriate

Must Have

  • KdlReader - Fast forward-only parser/reader (analogous to Utf8JsonReader)
  • Full spec compatibility (KDL 2.0) verified via unit test converage and the the well-defined test cases
  • NuGet Package for easy / safe consumption
  • KdlWriter - Low-level primitive writer (analogous to Utf8JsonWriter)

Should Have

  • KdlDocument - In memory DOM for random access (analogous to JsonDocument)
  • KdlSerializer - Tool for serializing/deserializing KDL to/from objects in memory (analogous to JsonConvert in NewtonSoft, or JsonSerializer in System.Text.Json)

May Have (especially if prioritized by sponsorship)

  • KDL css-like style selectors implementation using KdlReader for efficient results
  • Linq to objects style support (c.f. JObject, etc)
  • Reflection based serialization (c.f. NewtonSoft.Json, System.Text.Json)
  • Helper types and routines to bind KDL to asp.net core as a supported/bindable content-type?
  • Generation based serialization (c.f. System.Text.Json)

Will Not Have (without explicit sponsorship)

  • Strict Support for KDL 1.0. KDL 2.0 supercedes in every descernable way and supports much of what KDL 1.0 documents would have express.
  • Assumptions about the platform consuming this assembly. Should work wherever dotnet core does.
  • Backwards compatibility for older .NET or older .NET core. I will be simplifying by starting with dotnet 9.0 and beyond. Even a .net standard implementation seems to be no longer strictly necessary moving forward (in my reading).
Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.3-alpha 93 5/18/2025
0.0.2-alpha 149 5/16/2025
0.0.1-alpha 180 2/28/2025