- Integrate cargo-zigbuild as the default build backend, falling back
to cargo build with best-effort linker detection if not installed
- Auto-install rustup targets when missing (rustup target add)
- Use persistent target/krust/ directory instead of temp dirs so
incremental compilation works across runs
- Remove .cargo/config.toml from repo (add to .gitignore) since
zigbuild handles cross-linker configuration
- Improve error messages: suggest cargo-zigbuild when linker not found
- Simplify CI to use zigbuild instead of per-target system linkers
- Simplify Makefile by removing setup-cross-compile/verify targets
- Update README and CLAUDE.md to reflect new approach
https://claude.ai/code/session_01EcsZDNeWn56wFqryb4Wq7r
The CI environment provides musl-gcc instead of x86_64-linux-musl-gcc.
Update cargo config to use the available linker to resolve the
"linker not found" error during cross-compilation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update Makefile to use --verbose flag by default for build and test targets
- Simplify CI workflow to use standard make targets instead of verbose variants
- Improve debugging visibility in CI by showing detailed cargo output
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Images are now pushed by digest only by default, with optional tagging
via the new --tag flag. This addresses issue #27 by ensuring:
- No automatic :latest tags are applied during build
- Platform-specific images are never tagged for external use
- Only manifest lists can receive tags when explicitly requested
- Default behavior outputs digest-only references for reproducibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added `use_chunked_uploads` field to ClientConfig (default: true)
- Modified push_blob to respect the chunked upload configuration
- Configured krust to disable chunked uploads for better registry compatibility
- Added comprehensive tests for the new configuration option
This allows callers to control whether chunked/multi-part uploads are used,
which improves compatibility with registries that may not support them well.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add setup-cross-compile target to create cargo config
- Add verify-cross-compile target to check setup
- Update CI to use make verify-cross-compile
- Simplifies CI workflow and centralizes cross-compile logic
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add TEST_FLAGS variable for single-threaded test execution
- Create verbose targets for CI usage
- Update pre-commit hooks to use make targets
- Update CI workflow to use make targets
- This ensures consistency between local and CI test execution
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add .pre-commit-config.yaml with rustfmt, clippy, and cargo check
- Include standard pre-commit hooks for whitespace and file fixes
- Update README with development setup instructions
- Fix formatting and trailing whitespace in various files
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
krust builds container images for Rust applications without Docker:
- Builds static binaries using musl libc
- Creates minimal OCI container images
- Pushes to any OCI-compliant registry
- Outputs digest to stdout for composability
Inspired by ko.build for Go applications.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>