The first release candidate for the upcoming 1.0.0 GA. Public API is frozen since v0.5.0 and now hardened with field-level diagnostics, modernized Javadoc, comprehensive null-safety annotations, and a stress/chaos testing framework. Deprecated APIs from the 0.5.0 line have been removed.
Important
This is a release candidate intended for evaluation and integration testing. The public API is considered stable, but until 1.0.0 GA we reserve the right to apply corrective changes in response to RC feedback.
- ✅ API Hardening - Public API surface frozen since 0.5.0; deprecated wrappers from the 0.5.0 line removed
- ✅ Field-Level Diagnostics - New
FieldOperation/FieldAwareRulemodel surfaces per-field metadata inMigrationReport - ✅ Modernized Javadoc - Comprehensive Javadoc overhaul across every module for 1.0.0 readiness
- ✅ Pervasive Null-Safety -
@NotNull/@Nullableannotations applied across the public API and internals - ✅ JMH Benchmark Suite - New
aether-datafixers-benchmarksmodule with reproducible performance benchmarks - ✅ Stress & Chaos Testing - High-concurrency, sustained-load, memory-pressure, and chaos injection ITs
- ✅ Migration Guide - Detailed v0.5.x → 1.0.0 migration documentation including automated patterns
- ✅ Operational Runbook - Production troubleshooting guide and operational documentation
- ✅ Aether Style Guard - CI-enforced style guard ensures consistent code style across all modules
- ✅ DCO & Contributor Recognition - Developer Certificate of Origin and
CONTRIBUTORS.mdadded - ✅ Bug Fix Sweep - 100+ issues addressed across API, codec, core, CLI, testkit, schema-tools, and Spring Boot starter
Tip
All Aether artifacts are published to Maven Central — no extra repository required.
Warning
Release candidates are pre-release artifacts. Pin the exact version; do not rely on version ranges in production code paths.
<dependency>
<groupId>de.splatgames.aether.datafixers</groupId>
<artifactId>aether-datafixers-core</artifactId>
<version>1.0.0-rc.1</version>
</dependency>Using the BOM
<dependencyManagement>
<dependencies>
<dependency>
<groupId>de.splatgames.aether.datafixers</groupId>
<artifactId>aether-datafixers-bom</artifactId>
<version>1.0.0-rc.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- No version needed -->
<dependency>
<groupId>de.splatgames.aether.datafixers</groupId>
<artifactId>aether-datafixers-core</artifactId>
</dependency>
</dependencies>dependencies {
implementation 'de.splatgames.aether.datafixers:aether-datafixers-core:1.0.0-rc.1'
// Or with BOM:
implementation platform('de.splatgames.aether.datafixers:aether-datafixers-bom:1.0.0-rc.1')
implementation 'de.splatgames.aether.datafixers:aether-datafixers-core'
}dependencies {
implementation("de.splatgames.aether.datafixers:aether-datafixers-core:1.0.0-rc.1")
// Or with BOM:
implementation(platform("de.splatgames.aether.datafixers:aether-datafixers-bom:1.0.0-rc.1"))
implementation("de.splatgames.aether.datafixers:aether-datafixers-core")
}TypeRewriteRule instances now carry structured FieldOperation metadata, enabling field-aware diagnostics throughout the migration pipeline.
MigrationReport report = fixer.update(typeRef, dynamic, fromVersion, toVersion);
for (FixExecution exec : report.executions()) {
for (FieldOperation op : exec.fieldOperations()) {
System.out.printf("%s on field '%s' (type %s)%n",
op.type(), // FieldOperationType: RENAME, ADD, REMOVE, TRANSFORM, ...
op.fieldName(),
op.typeReference());
}
}Features:
FieldAwareRulemarker interface implemented by all field operations and compositions inRules- Field operations bubble up through
seq,seqAll,choice,batch,topDown,bottomUp - CLI exposes field-level details via the
--diagnosticsflag (aether-datafixers-cli) - Spring Boot Actuator
/actuator/datafixersendpoint reports field operations per execution - Static field-level coverage analysis available via
MigrationAnalyzer
Every public type in every module received a Javadoc pass focused on the 1.0.0 audience:
- Consistent voice and structure across modules
- Explicit thread-safety contracts on every public type
- Behavioral guarantees, ordering invariants, and failure modes documented
{@inheritDoc}with explicit@param/@returnto satisfy the Aether Style Guard- Cross-references (
{@link}) between related types repaired and expanded
@NotNull and @Nullable annotations now cover the public API and internals, providing static null-safety guarantees for callers using nullability-aware tooling (IntelliJ, Checker Framework, NullAway).
// API contracts are now explicit at compile time
@NotNull DataResult<Typed<T>> apply(@NotNull Typed<T> input,
@Nullable DiagnosticContext context);The new aether-datafixers-benchmarks module provides reproducible JMH benchmarks for the core migration paths:
# Build the shaded benchmark JAR and run the suite
./run-benchmarks.shInitial baselines are committed under benchmark-results/ for regression comparisons.
New stress / chaos integration tests under aether-datafixers-functional-tests:
| Test | Focus |
|---|---|
HighConcurrencyMigrationStressIT |
100+ concurrent migration threads |
SustainedLoadMigrationStressIT |
Minutes-long sustained throughput |
MixedRegistryAccessStressIT |
Concurrent registry read/write workloads |
MemoryPressureStressIT |
GC pressure and memory-leak detection |
RandomDelaysChaosIT |
Random delays injected into fix execution |
RandomFailuresChaosIT |
Random failure injection in fix execution |
Run with:
mvn verify -Pstress -pl aether-datafixers-functional-tests
mvn verify -Pit -pl aether-datafixers-functional-tests -Dgroups=chaosCode style is now enforced in CI via the Aether Style Guard. The opt-in styleguard profile is wired up on every module and validated by .github/workflows/ci-pr.yml and ci-push.yml.
- v0.5.x → 1.0.0 Migration Guide — step-by-step migration patterns, breaking changes, and troubleshooting (
docs/migration/) - Operational Runbook — production debugging, error scenarios, monitoring, and recovery procedures (
docs/operations/) - Troubleshooting Guide — common errors and debugging tips (
docs/troubleshooting/)
DCOfile added; PRs now sign off under the Developer Certificate of OriginCONTRIBUTORS.mdrecognizes every contributor to the project
The deprecated wrappers announced in v0.5.0 have been removed in 1.0.0:
| Removed | Replacement |
|---|---|
de.splatgames.aether.datafixers.codec.gson.GsonOps |
de.splatgames.aether.datafixers.codec.json.gson.GsonOps |
de.splatgames.aether.datafixers.codec.jackson.JacksonOps |
codec.json.jackson.JacksonJsonOps (JSON) or the format-specific classes (JacksonYamlOps, JacksonTomlOps, JacksonXmlOps) |
TestData.jackson() |
TestData.jacksonJson() |
See docs/migration/v0.5-to-v1.0.md for the full migration guide.
| Module | Description |
|---|---|
aether-datafixers-api |
Core interfaces and API contracts (stable, frozen) |
aether-datafixers-core |
Default implementations |
aether-datafixers-codec |
DynamicOps for JSON, YAML, TOML, XML |
aether-datafixers-testkit |
Testing utilities with fluent API + multi-format support |
aether-datafixers-cli |
Command-line interface with multi-format handlers |
aether-datafixers-schema-tools |
Schema analysis, validation, and diffing |
aether-datafixers-spring-boot-starter |
Spring Boot 3.x auto-configuration |
aether-datafixers-examples |
Practical usage examples |
aether-datafixers-functional-tests |
E2E, integration, stress, and chaos tests |
aether-datafixers-benchmarks |
JMH benchmark suite |
aether-datafixers-bom |
Bill of Materials for version management |
New in 1.0.0-rc.1
- Introduced field-level diagnostics:
FieldOperation,FieldOperationType, andFieldAwareRulepropagated through every combinator inRules - Static field-level coverage analysis added to
MigrationAnalyzer - CLI
--field-diagnosticsflag and Spring Boot Actuator endpoint surface field-level details - New
aether-datafixers-benchmarksmodule with JMH benchmark suite and baseline results - Stress and chaos integration tests:
HighConcurrencyMigrationStressIT,SustainedLoadMigrationStressIT,MixedRegistryAccessStressIT,MemoryPressureStressIT,RandomDelaysChaosIT,RandomFailuresChaosIT - Comprehensive Javadoc modernization across all modules
- Pervasive
@NotNull/@Nullableannotations across the public API and internals - Aether Style Guard integrated into PR and push CI workflows
- Migration guide (v0.5.x → 1.0.0), benchmark guide, and operational runbook added
- Developer Certificate of Origin (DCO) and
CONTRIBUTORS.mdintroduced MigrationResultnow implementsequals/hashCodeFinder.index()validates non-negative indices at constructionTyped.encodeAndGetnow returnsDataResultwith structured error reporting- 100+ targeted bug fixes across API, codec, core, CLI, testkit, schema-tools, and the Spring Boot starter
- Hardened devcontainer for Java / Python / Claude Code sandboxing
Removed (previously deprecated in 0.5.0)
de.splatgames.aether.datafixers.codec.gson.GsonOpswrapperde.splatgames.aether.datafixers.codec.jackson.JacksonOpswrapperTestData.jackson()factory method
Full Changelog: v0.5.0...v1.0.0-rc.1
Only the three deprecated wrappers from 0.5.0 are removed (see table above). All other public API is source-compatible with v0.5.0.
- Update Maven / Gradle coordinates to
1.0.0-rc.1 - Replace any remaining imports of the removed wrappers with their replacements
- Re-run
mvn verifyagainst your project; the compiler will catch every removed reference - Optional: opt into field-level diagnostics by inspecting
FixExecution#fieldOperationsonMigrationReport
Detailed walkthrough in docs/migration/v0.5-to-v1.0.md.
Please file RC feedback as GitHub issues against the aether-datafixers repository. Any blocker reported during the RC window will be considered for inclusion in the 1.0.0 GA.
- Promote
1.0.0-rc.1to1.0.0after the RC feedback window - Final documentation polish and tutorial coverage
- Semantic-versioning guarantees activated for the 1.0.x line
- Extended cookbook and video tutorials
- Additional codec integrations driven by community demand
MIT - see LICENSE.