Skip to content

Releases: aether-framework/aether-pack

🚀 Aether Pack v0.1.0 — Initial Release

24 Dec 17:49

Choose a tag to compare

🚀 Aether Pack v0.1.0 — Initial Release

Aether Pack is a modern binary archive format for the JVM.
It provides chunked storage with built-in support for compression, encryption, and error correction
designed for game assets, save files, and any application requiring efficient, secure, and reliable data storage.


🎯 Highlights in v0.1.0

  • Chunked Storage
    • Large files split into configurable chunks (default 256KB) for streaming and random access.
  • Compression
    • ZSTD (levels 1-22) and LZ4 via pluggable CompressionProvider SPI.
  • Encryption
    • AES-256-GCM and ChaCha20-Poly1305 with AEAD for confidentiality and integrity.
  • Key Derivation
    • Argon2id and PBKDF2 for secure password-based encryption.
  • Error Correction
    • Reed-Solomon ECC for data recovery from corruption.
  • Checksums
    • XXH3-64 (default) and CRC-32 for integrity verification.
  • Container & Stream Mode
    • Table of Contents (TOC) for random access or sequential streaming.
  • Custom Attributes
    • Key-value metadata per entry (String, Long, Double, Boolean, Bytes).
  • CLI Tool
    • Full command-line interface: create, extract, list, info, verify.

📦 Installation

Tip

All Aether artifacts are available on Maven Central — no extra repository required.

Maven

<dependency>
    <groupId>de.splatgames.aether.pack</groupId>
    <artifactId>aether-pack-core</artifactId>
    <version>0.1.0</version>
</dependency>

<!-- For compression support -->
<dependency>
    <groupId>de.splatgames.aether.pack</groupId>
    <artifactId>aether-pack-compression</artifactId>
    <version>0.1.0</version>
</dependency>

<!-- For encryption support -->
<dependency>
    <groupId>de.splatgames.aether.pack</groupId>
    <artifactId>aether-pack-crypto</artifactId>
    <version>0.1.0</version>
</dependency>

Gradle (Groovy)

dependencies {
    implementation 'de.splatgames.aether.pack:aether-pack-core:0.1.0'
    implementation 'de.splatgames.aether.pack:aether-pack-compression:0.1.0'
    implementation 'de.splatgames.aether.pack:aether-pack-crypto:0.1.0'
}

Gradle (Kotlin)

dependencies {
    implementation("de.splatgames.aether.pack:aether-pack-core:0.1.0")
    implementation("de.splatgames.aether.pack:aether-pack-compression:0.1.0")
    implementation("de.splatgames.aether.pack:aether-pack-crypto:0.1.0")
}

🧰 Usage

1) Create an Archive

ApackConfiguration config = ApackConfiguration.builder()
    .compressionProvider("zstd")
    .compressionLevel(6)
    .checksumProvider("xxh3-64")
    .build();

try (AetherPackWriter writer = AetherPackWriter.create(path, config)) {
    writer.addEntry(EntryMetadata.of("data/config.json"), configBytes);
    writer.addEntry(EntryMetadata.of("assets/texture.png"), textureBytes);
}

2) Read an Archive

try (AetherPackReader reader = AetherPackReader.open(path)) {
    for (Entry entry : reader.getEntries()) {
        System.out.printf("%s (%d bytes)%n", entry.getName(), entry.getOriginalSize());
    }

    try (InputStream in = reader.openEntry("data/config.json")) {
        byte[] data = in.readAllBytes();
    }
}

3) CLI Commands

# Create archive with ZSTD compression
apack create -c zstd archive.apack files/

# Create encrypted archive
apack create -c zstd -e aes-256-gcm archive.apack files/

# Extract archive
apack extract archive.apack -o output/

# List contents
apack list -l archive.apack

# Verify integrity
apack verify archive.apack

📝 Changelog

New in 0.1.0

  • 🎉 Initial release with complete archive format implementation:
    • Binary format with 64-byte file header, chunked entries, and trailer with TOC
    • AetherPackWriter and AetherPackReader for archive I/O
    • CompressionProvider SPI with ZSTD and LZ4 implementations
    • EncryptionProvider SPI with AES-256-GCM and ChaCha20-Poly1305
    • KeyDerivation with Argon2id and PBKDF2-SHA256
    • ChecksumProvider SPI with XXH3-64 and CRC-32
    • Reed-Solomon error correction codec
    • Processing pipeline: Checksum → Compress → Encrypt
    • CLI tool with create, extract, list, info, verify commands
    • Comprehensive JavaDoc documentation

🗺️ Roadmap (next)

  • 0.2.x

    • Graphical User Interface (GUI) for archive management
  • 1.0.x

    • Stable API surface
    • Comprehensive documentation
    • Production-ready release

📜 License

MIT — see LICENSE.