Skip to content

Add multi-language codec support via Docker#12

Open
jakedgy wants to merge 13 commits intoagavra:mainfrom
jakedgy:feature/multi-language-support
Open

Add multi-language codec support via Docker#12
jakedgy wants to merge 13 commits intoagavra:mainfrom
jakedgy:feature/multi-language-support

Conversation

@jakedgy
Copy link
Contributor

@jakedgy jakedgy commented Jan 30, 2026

Summary

Adds support for non-Rust codec submissions via Docker containers:

  • New --docker CLI flag enables external codec discovery and execution
  • Auto-discovers codecs by scanning src/*/Dockerfile
  • Implements stdin/stdout ABI for encode/decode operations
  • Auto-enables Docker mode when targeting an external codec (e.g., --codec example-python)
  • Includes example Python codec demonstrating the ABI
  • Updates CI workflow to detect and test Docker-based submissions

Resolves #3

How This Was Built

This PR was developed as an educational experiment using Claude Code with the superpowers plugin. The workflow:

  1. Brainstorming - Collaborative design session to define the ABI, discovery mechanism, and CLI interface
  2. Planning - Generated a detailed 11-task implementation plan
  3. Subagent-driven development - Each task implemented by a fresh subagent with spec compliance review

The entire conversation and development happened in a single Claude Code session. This is experimental - feedback welcome!

Test Plan

  • cargo run --release -- --codec example-python shows example-python results
  • cargo run --release -- --codec naive works without Docker (existing behavior preserved)
  • Round-trip verification passes (encode → decode → compare)
  • cargo fmt --check passes

Example Output

┌────────────────────────┬────────────────┬────────────┐
│ Codec                  │           Size │ vs Naive   │
├────────────────────────┼────────────────┼────────────┤
│ Naive                  │    210,727,389 │   baseline │
│ example-python         │     25,837,747 │     -87.7% │
└────────────────────────┴────────────────┴────────────┘

All verifications passed

🤖 Generated with Claude Code + superpowers plugin

jakedgy and others added 13 commits January 30, 2026 13:54
Defines Docker-based ABI for non-Rust submissions:
- Containers implement encode/decode via stdin/stdout
- Convention-based discovery (src/{name}-{lang}/Dockerfile)
- Integrated into existing harness with --docker flag
- Same round-trip verification as Rust codecs

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Prevents worktree contents from being accidentally tracked.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
11 tasks covering:
- CLI flag and codec discovery
- Docker build/encode/decode functions
- Main loop integration
- Example Python codec for testing
- CI workflow updates
- README documentation

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
@agavra
Copy link
Owner

agavra commented Jan 30, 2026

Thanks @jakedgy - since this is a pretty big change I want to have time to review it properly. I probably won't get to it until next week since I'm out this weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

support evlauating submissions in other languages (Python, Java, C)

2 participants

Comments