Releases: aether-framework/aether-mixins
Releases · aether-framework/aether-mixins
🚀 Aether Mixins v0.1.0 — Initial Release
🚀 Aether Mixins v0.1.0 — Initial Release
Aether Mixins is a lightweight, safe bytecode weaving framework for the JVM.
It provides both load-time (agent) and in-app runtime weaving with a clean, annotation-driven API.
🎯 Highlights in v0.1.0
- ✅ Agent & In-App Weaving
- Run with
-javaagentor wire the runtime pipeline programmatically.
- Run with
- ✅ Annotation API (MVP)
@Mixin,@Inject(HEAD|TAIL),@Redirect(...).
- ✅ ASM-backed weaver
- Precise, deterministic bytecode edits with frame recomputation when configured.
- ✅ Refmap + YAML config
- Symbolic targeting via JSON refmaps; simple
mixins.ymlsession config.
- Symbolic targeting via JSON refmaps; simple
- ✅ Safety-first runtime
- Safe-mode (skip failing patches), structured diagnostics, predictable ordering.
- ✅ Annotation Processor
- Generates refmap JSON and a minimal
mixins.ymldirectly at compile time.
- Generates refmap JSON and a minimal
📦 Installation
Tip
All Aether artifacts are available on Maven Central — no extra repository required.
Maven
<dependency>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-mixins-runtime</artifactId>
<version>0.1.0</version>
</dependency>Optional components
<!-- Annotations only -->
<dependency>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-mixins-core</artifactId>
<version>0.1.0</version>
<scope>provided</scope>
</dependency>
<!-- Compile-time refmap generation -->
<dependency>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-mixins-processor</artifactId>
<version>0.1.0</version>
<scope>provided</scope>
</dependency>Gradle (Groovy)
dependencies {
implementation 'de.splatgames.aether:aether-mixins-runtime:0.1.0'
// Optional:
compileOnly 'de.splatgames.aether:aether-mixins-core:0.1.0'
annotationProcessor 'de.splatgames.aether:aether-mixins-processor:0.1.0'
}Gradle (Kotlin)
dependencies {
implementation("de.splatgames.aether:aether-mixins-runtime:0.1.0")
// Optional:
compileOnly("de.splatgames.aether:aether-mixins-core:0.1.0")
annotationProcessor("de.splatgames.aether:aether-mixins-processor:0.1.0")
}ℹ️ The agent JAR is used at runtime via
-javaagent(see below). You do not need to depend on it in your app classpath.
🧰 Usage
1) Run with the Java Agent
java \
-javaagent:/path/to/aether-mixins-agent-0.1.0.jar \
-Daether.mixins.config=/path/to/mixins.yml \
-jar yourapp.jar2) Minimal mixins.yml
version: 1
mixins:
- name: core
files:
- mixins/app.refmap.json
runtime:
safe_mode: true
verify_frames: strict3) Compile-time refmap generation (optional)
Use the annotation processor to auto-generate a refmap and a minimal mixins.yml from your
@Mixin, @Inject, and @Redirect declarations.
📝 Changelog
New in 0.1.0
- 🎉 Initial release with end-to-end pipeline:
- Agent & in-app runtime
@Inject(HEAD|TAIL)and@Redirect- ASM-backed weaving & optional frame recomputation
- Refmap + YAML session configuration
- Safe-mode & structured diagnostics
- Annotation processor for refmap/mixins.yml generation
🗺️ Roadmap (next)
-
0.2.x
- Replace MVP shortcuts with richer injection logic
- Conflict handling improvements & prioritization
- Expanded
@Atsupport,@ModifyArg/@ModifyVar - Tooling polish and better diagnostics
-
0.3.x
- Hot-reload (dev), mapping adapters, more sample projects
📜 License
MIT — see LICENSE.