Skip to content

Commit 181c982

Browse files
committed
Update dependency versions, introduce high-performance APIs, optimize internals, and update documentation for v0.2.0 release
1 parent 2a3fee1 commit 181c982

4 files changed

Lines changed: 45 additions & 18 deletions

File tree

docs/appendix/changelog.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,33 @@ New convenience methods in `Rules` class for common transformation patterns:
6262
- `ifFieldMissing(ops, field, rule)` — Apply rule if field missing
6363
- `ifFieldEquals(ops, field, value, rule)` — Apply rule if field equals value
6464

65+
### High-Performance APIs
66+
67+
New APIs for optimized transformations:
68+
69+
**BatchTransform:**
70+
- `Rules.batch(ops, builder)` — Apply multiple operations in single encode/decode cycle
71+
- `BatchTransform.rename(from, to)` — Rename field in batch
72+
- `BatchTransform.remove(field)` — Remove field in batch
73+
- `BatchTransform.set(field, valueSupplier)` — Set field in batch
74+
- `BatchTransform.transform(field, fn)` — Transform field in batch
75+
- `BatchTransform.addIfMissing(field, valueSupplier)` — Add if missing in batch
76+
77+
**Single-Pass Conditionals:**
78+
- `Rules.conditionalTransform(ops, predicate, transform)` — General conditional
79+
- `Rules.ifFieldExists(ops, field, transform)` — Function overload (single-pass)
80+
- `Rules.ifFieldMissing(ops, field, transform)` — Function overload (single-pass)
81+
- `Rules.ifFieldEquals(ops, field, value, transform)` — Function overload (single-pass)
82+
83+
### Performance Optimizations
84+
85+
Internal optimizations with no API changes:
86+
87+
- Path parsing uses character-based parsing with memoization cache
88+
- `DataFixRegistry.getFixes()` pre-allocates result list
89+
- `DataFixerImpl` moves validation to registration time
90+
- Reduced allocations in hot paths
91+
6592
### New How-To Guides
6693

6794
- [Batch Operations](../how-to/batch-operations.md) — Rename/remove multiple fields

docs/getting-started/installation.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Add the core dependency to your `pom.xml`:
2424
<dependency>
2525
<groupId>de.splatgames.aether</groupId>
2626
<artifactId>aether-datafixers-core</artifactId>
27-
<version>0.1.0</version>
27+
<version>0.2.0</version>
2828
</dependency>
2929
```
3030

@@ -35,12 +35,12 @@ Add the core dependency to your `pom.xml`:
3535
<dependency>
3636
<groupId>de.splatgames.aether</groupId>
3737
<artifactId>aether-datafixers-core</artifactId>
38-
<version>0.1.0</version>
38+
<version>0.2.0</version>
3939
</dependency>
4040
<dependency>
4141
<groupId>de.splatgames.aether</groupId>
4242
<artifactId>aether-datafixers-codec</artifactId>
43-
<version>0.1.0</version>
43+
<version>0.2.0</version>
4444
</dependency>
4545
<!-- Gson is optional in codec module, add explicitly -->
4646
<dependency>
@@ -121,16 +121,16 @@ The Bill of Materials (BOM) ensures consistent versions across all modules:
121121

122122
```groovy
123123
dependencies {
124-
implementation 'de.splatgames.aether:aether-datafixers-core:0.1.0'
124+
implementation 'de.splatgames.aether:aether-datafixers-core:0.2.0'
125125
}
126126
```
127127

128128
With JSON support:
129129

130130
```groovy
131131
dependencies {
132-
implementation 'de.splatgames.aether:aether-datafixers-core:0.1.0'
133-
implementation 'de.splatgames.aether:aether-datafixers-codec:0.1.0'
132+
implementation 'de.splatgames.aether:aether-datafixers-core:0.2.0'
133+
implementation 'de.splatgames.aether:aether-datafixers-codec:0.2.0'
134134
implementation 'com.google.code.gson:gson:2.11.0'
135135
}
136136
```
@@ -139,16 +139,16 @@ dependencies {
139139

140140
```kotlin
141141
dependencies {
142-
implementation("de.splatgames.aether:aether-datafixers-core:0.1.0")
142+
implementation("de.splatgames.aether:aether-datafixers-core:0.2.0")
143143
}
144144
```
145145

146146
With JSON support:
147147

148148
```kotlin
149149
dependencies {
150-
implementation("de.splatgames.aether:aether-datafixers-core:0.1.0")
151-
implementation("de.splatgames.aether:aether-datafixers-codec:0.1.0")
150+
implementation("de.splatgames.aether:aether-datafixers-core:0.2.0")
151+
implementation("de.splatgames.aether:aether-datafixers-codec:0.2.0")
152152
implementation("com.google.code.gson:gson:2.11.0")
153153
}
154154
```

docs/tutorials/basic-migration.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@ Add the dependencies to your project:
3030
<dependency>
3131
<groupId>de.splatgames.aether</groupId>
3232
<artifactId>aether-datafixers-core</artifactId>
33-
<version>0.1.0</version>
33+
<version>0.2.0</version>
3434
</dependency>
3535
<dependency>
3636
<groupId>de.splatgames.aether</groupId>
3737
<artifactId>aether-datafixers-codec</artifactId>
38-
<version>0.1.0</version>
38+
<version>0.2.0</version>
3939
</dependency>
4040
<dependency>
4141
<groupId>com.google.code.gson</groupId>
4242
<artifactId>gson</artifactId>
43-
<version>2.11.0</version>
43+
<version>2.13.2</version>
4444
</dependency>
4545
```
4646

pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424

2525
<!-- definition of versions for dependencies -->
2626
<jetbrains.annotations.version>26.0.2</jetbrains.annotations.version>
27-
<gson.version>2.11.0</gson.version>
28-
<jackson.version>2.18.3</jackson.version>
29-
<guava.version>33.4.8-jre</guava.version>
30-
<junit.jupiter.version>5.12.0</junit.jupiter.version>
31-
<assertj.version>3.25.1</assertj.version>
32-
<slf4j.version>2.0.16</slf4j.version>
27+
<gson.version>2.13.2</gson.version>
28+
<jackson.version>2.19.0</jackson.version>
29+
<guava.version>33.5.0-jre</guava.version>
30+
<junit.jupiter.version>5.13.4</junit.jupiter.version>
31+
<assertj.version>3.27.6</assertj.version>
32+
<slf4j.version>2.0.17</slf4j.version>
3333

3434
<!-- definition of versions for plugins -->
3535
<plugin.compiler.version>3.11.0</plugin.compiler.version>

0 commit comments

Comments
 (0)