Skip to content
Docs

Changelog

  • entrypoint manifest field that pins the in-container binary across both Docker and Apptainer. Replaces the engine-specific docker_command / apptainer_command / singularity_command chain and the --entrypoint flag smuggled through docker_args. See the Entrypoints guide for migration.
  • Deprecation warnings emitted from the shimlink-dispatch path now actually reach stderr. Previously log::warn! calls fired into an uninitialized logger when bulker was invoked via a shim symlink (the normal execution path).
  • docker_command, apptainer_command, singularity_command — use entrypoint instead. Bulker emits a warning on every use and will remove these fields in the next minor bump.
  • --entrypoint inside docker_args — use the entrypoint manifest field instead.
  • Breaking: Replace blocklist env var forwarding with allowlist. Containers now receive only a curated set of host variables (terminal, locale, SSH, HPC scheduler, proxy, etc.) instead of everything. This fixes locale warnings and silent LD_LIBRARY_PATH breakage on HPC systems.
  • Breaking: Remove --strict-env flag and BULKER_STRICT_ENV env var. The allowlist behavior is now the default.
  • Breaking: bulker config add envvars and bulker config remove envvars now error with a redirect to bulker env add / bulker env remove.
  • Apptainer always uses --cleanenv with explicit --env flags. The LC_ALL=C prefix in apptainer templates has been removed.
  • Config default_envvars() is now empty — config envvars are purely additive on top of compiled-in defaults.
  • bulker env top-level command for managing env var forwarding: env (show), env add, env set, env remove.
  • --host-env / -H flag on activate and exec to forward all host env vars (escape hatch for the old behavior).
  • no_default_envvars option in both config and per-command manifest to skip compiled-in defaults.
  • BULKER_EXTRA_ENVVARS env var for adding patterns at runtime (comma-separated).
  • Glob pattern support in envvar allowlist (e.g., SLURM_*, AWS_*).
  • KEY=VALUE support in envvar allowlist for hardcoded values (e.g., LANG=C).
  • Fix cross-device link error (EXDEV / os error 18) when pulling apptainer SIF images. The build template now sets APPTAINER_TMPDIR to the image folder and pulls to a .tmp file before renaming, ensuring all file operations stay on the same filesystem.
  • Auto-pull missing apptainer SIF images at runtime. If the .sif file doesn’t exist when a shimlink is invoked, bulker now runs apptainer pull automatically instead of failing.
  • Support for deprecated Singularity config keys: container_engine: singularity, singularity_image_folder, singularity_args, and singularity_command are now accepted as aliases for their apptainer equivalents, with deprecation warnings.
  • container_engine: singularity now correctly uses the apptainer code path. Previously it fell through to the Docker template, producing invalid flags like --rm that apptainer/singularity doesn’t support.
  • Prevent double activation at both binary and shell function levels. Running bulker activate when a crate is already active now errors instead of silently overwriting state (which leaked temp directories and corrupted the prompt).

Initial development releases.