Skip to content

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 07 Aug 19:27
· 23 commits to main since this release
v0.1.3
b5c9d05

Install

cargo install mandible

Or download a pre-compiled binary from the assets below. Verify with the accompanying .sha256.


This release restores critical functionality for developers using version managers and formalizes Mandible's architectural specifications based on real-world edge cases.

Toolchain Resolution & Shim Support

  • Version Manager Compatibility: Restored parsing for developer tools managed by rustup, pyenv, nvm, asdf, sdkman, and volta. Previously, Mandible's strict execution sandboxing—which redirects $HOME to a scratch directory—prevented these tool shims from resolving their underlying binaries.
  • Targeted Sandbox Exemptions: Safely bypassed this limitation by explicitly passing through specific toolchain variables (such as RUSTUP_HOME, PYENV_ROOT, and NVM_DIR) while keeping the core $HOME redirect intact.
  • Restored Coverage: Essential developer tools are fully readable again. For example, cargo now correctly parses 12 nodes and 13 flags instead of throwing a resolution error.

Architecture & Specification Updates

  • Framework Detection Constraints (Spec §7): Documented the rationale behind the ~17% implemented detection rate versus the theoretical 71% recall rate. Mandible strictly optimizes for high-precision markers over broad recall; guessing the wrong framework silently applies the wrong grammar and corrupts output, while unidentified tools safely fall back to the general engine.
  • Process Containment Limits (Spec §6): Detailed the root cause of hanging coverage-sweep shards. Background processes that call setsid (like chromedriver or vimtutor) escape their process group and avoid timeout termination. Full containment requires OS-level sandboxing, as cheaper mitigations like PR_SET_PDEATHSIG require pre_exec, violating the project's strict #![forbid(unsafe_code)] guarantee.

General Updates

  • Crate Metadata: The authors field in the manifest now explicitly names the maintainer rather than using a placeholder.