Skip to content
HN On Hacker News ↗

GitHub - CAPCOM-TD-OSS/REDox: High-performance, token-based structured data engine for .NET. A core component of REX, the technology behind CAPCOM's next-generation game engine.

▲ 35 points • 7 comments • by vblanco • 1w ago • HN discussion ↗

Pangram verdict · v3.3

We believe that this text is a mix of AI and human-written content.

84 %

AI likelihood · overall

AI
12% human-written 88% AI-generated
SEGMENTS · HUMAN 3 of 5
SEGMENTS · AI 1 of 5
WORD COUNT 688
PEAK AI % 93% · §4
Analyzed
Oct 2
backend: pangram/v3.3
Segments scanned
5 windows
avg 138 words each
Distribution
12 / 88%
human / AI fraction
Verdict
AI
Pangram v3.3

Article text · 688 words · 5 segments analyzed

Human AI-generated
§1 Human · 11%

RE:Dox 1. What is RE:Dox? RE:Dox is a high-performance, token-based structured data engine for .NET, developed as one of the core components of 'REX' Technology for CAPCOM's next-generation game engine. RE:Dox is not just a JSON serializer.

§2 Mixed · 57%

It parses structured data into a compact, fixed-size token DOM / IR, then uses that structural index for reading, editing, format conversion, serialization, deserialization, and automatic parallel deserialization.

§3 Human · 25%

JSON / JSON5 / CBOR / MessagePack / TOML / XML / HTML / CSV / INI / DOX ↓ Compact token DOM / IR ↓ Reader / Writer / Serializer / Deserializer ↓ .NET objects, JSON, CBOR, MessagePack, TOML, XML, HTML, DOX, ...

§4 AI · 93%

The same token representation acts as both a compact parsed document model and a common structural layer shared by serializers, converters, and supported formats. 2. Why should I care? RE:Dox combines three goals that usually conflict: the parse speed of a tape DOM (System.Text.Json.JsonDocument), the editability of a node DOM (System.Text.Json.Nodes.JsonNode), the flexibility of Newtonsoft.Json (position-independent $type, $id / $ref, out-of-order constructor binding). What you get: High-performance serialization and deserialization — on the benchmark datasets below, up to ~1.8x faster sequential deserialization, up to ~2.8x faster automatic parallel deserialization, and up to ~1.6x faster serialization than System.Text.Json. Lower allocation on tested workloads — for example, canada.json deserializes with about 2.56 MB allocated by RE:Dox versus about 8.53 MB by System.Text.Json. JSON, JSON5, CBOR, MessagePack, INI, and DOX are integrated with the core model; TOML, XML, HTML, and CSV are currently preview components. One converter model across formats — DataConverter<T> targets the format-agnostic DataReader / DataWriter abstractions instead of a specific wire format. Mutable token DOM — edit objects and arrays without replacing the document with a heavyweight managed object tree. Trivia-preserving JSON5 editing — comments and other preserved trivia can survive document edits and re-encoding. Compatibility layers for System.Text.Json, Newtonsoft.Json, and DataContractJsonSerializer. Apache-2.0 licensed. 3. 30-second example Install the core package: dotnet add package CAPCOM.REDox Serialize, deserialize, parse, and edit through the same API surface: using REDox.Json; var player = new Player { Name = "Leon", Level = 42, Items = ["Handgun", "Green Herb"] }; // Serialize / deserialize var json = JsonSerializer.Serialize(player); var restored = JsonSerializer.Deserialize<Player>(json); // Parse into a token DOM and edit it in place using var doc = JsonDocument.Parse(json); var root = doc.RootElement.AsObject(); root["Name"] = "Claire"; // replace root.Add("Hp", 100); // add root.Remove("Level"); // remove var items = root["Items"].AsArray(); items.Add("First Aid Spray"); // append items.Insert(0, "Knife"); // insert items.RemoveAt(1); // remove by index var edited = doc.RootElement.ToJsonString(); public sealed class Player { public string?

§5 Human · 17%

Name { get; set; } public int Level { get; set; } public string[] Items { get; set; } = []; } Environment: BenchmarkDotNet, .NET 10 (X64 RyuJIT x86-64-v3), AMD Ryzen Threadripper PRO 5975WX, Windows 11. Summary: speedup vs System.Text.Json JsonSerializer Dataset Deserialize Deserialize (parallel) Serialize canada.json 1.68x 2.84x 1.06x citm_catalog.json 1.77x 2.25x 1.62x twitter.json 1.36x 2.34x 1.42x These ratios describe the benchmark datasets shown below; they are not universal performance guarantees. Deserialize: canada.json (numeric-heavy, ~2.2 MB) Deserialize: Mean / Allocated Dataset RE:Dox RE:Dox (parallel) System.Text.Json STJ (JsonTypeInfo) Utf8Json canada.json 9,113.0 us / 2,619.92 KB 5,384.6 us / 2,685.11 KB 15,303.1 us / 8,734.66 KB 15,005.9 us / 8,734.59 KB 15,864.0 us / 6,655.67 KB citm_catalog.json 2,280.5 us / 553.55 KB 1,795.8 us / 631.87 KB 4,041.1 us / 1,175.38 KB 3,940.8 us / 1,175.38 KB 2,605.5 us / 1,124.13 KB twitter.json 1,008.8 us / 504.91 KB 587.4 us / 555.84 KB 1,371.6 us / 557.09 KB 1,401.6 us / 557.09 KB 1,370.6 us / 530.05 KB Serialize: Mean / Allocated Dataset RE:Dox System.Text.Json STJ (JsonTypeInfo) Utf8Json canada.json 13,615.5 us / 2,041.41 KB 14,388.3 us / 2,042.85 KB 14,433.1 us / 2,042.85 KB 11,714.2 us / 6,042.21 KB citm_catalog.json 668.7 us / 494.41 KB 1,085.4 us / 494.85 KB 1,073.8 us / 494.87 KB 707.3 us / 1,389.64 KB twitter.json 557.3 us / 465.15 KB 789.0 us / 467.95 KB 800.3 us / 467.91 KB 709.4 us / 1,361.37 KB Reproduce with: dotnet run -c Release --project benchmarks/REDox.Json.Benchmarks Benchmark results depend on data shape, target type, runtime, CPU, and serializer options.