Repository navigation
Release v2.1.1
Since v2.1.0 (2026-05-27)
A small performance and build-targets release.
Performance
- Skip port read-back on explicit ports (#67) — when a challenge launches with explicit
CMGR_PORTS, the host ports are already reserved and bound beforeContainerCreate, so the post-startContainerInspect/backoff loop could only re-read values cmgr already knows. That loop is now gated onportLow == 0and skipped on the explicit-port path, removing the inspect round-trips and backoff sleeps from the hot launch path while networking settles. Docker-assigned ephemeral ports still read back as before, and the rebuild flow (which clearsinstance.Portsbefore restarting) is correctly detected as "not yet known" so it continues to read the bound port back. - Cache Docker
OSTypeonce at init (#67) — the daemon'sOSType(used only to decide whether to apply the Linux seccomp profile) is immutable for the daemon's lifetime. It's now fetched once ininitDockerinstead of via a heavyInfocall on every build, launch, and solve.
Hardening
- Container ports with no reverse-port-map entry are now logged and skipped during read-back instead of being written under an empty key, which previously could drop the real mapping or clobber other unmapped ports (#67).
Build & CI
- Dropped the Intel Mac (
darwin_amd64) release target (99fc129) — published binaries now coverlinux_amd64anddarwin_arm64(Apple Silicon). Intel Mac and Linux ARM builds are no longer published; build from source for those platforms.
Testing
- Added unit coverage for the explicit-port skip logic and the unmapped-port edge case (
cmgr/database_operations_test.go, +158 lines).
Documentation
- README install note updated to reflect the published platform targets and source-build guidance for unsupported ones.