← Blog
The Nub Team

Nub 0.2.1

Installs are resilient on resource-constrained CI and containers, and repeated work is shaved off the install and warm-cache paths.

This release makes nub install resilient on resource-constrained CI and containers, and shaves repeated work off the install and warm-cache paths.

Important

Installs no longer abort under thread, PID, or CPU-quota pressure. On constrained CI runners, nub ci could exit 101 at the install tail when an OS thread spawn failed — with the abort-on-panic build, that crashed the whole install instead of degrading. Spawns are now guarded, and the install's CPU-bound pools size to the cgroup CPU quota rather than the host core count. If you saw intermittent exit-101 installs in a container, this release fixes them.

Install resilience and performance

AreaWhat changed
InstallEvery thread spawn is guarded, with a cgroup-aware concurrency cap, so install degrades gracefully instead of aborting under thread or PID exhaustion (#136)
Pool sizingThe CPU-bound install pools size to the box's cgroup CPU quota instead of the over-reported host core count, avoiding over-subscription and the throttle latency cliff (#140)
File descriptorsThe soft file-descriptor limit is raised on engine startup, fixing intermittent "Too many open files" on large dependency trees on macOS (#143)
Config readsEach config file is read and parsed once per command via an mtime-validated cache, dropping repeated reads from 3× to 1× with byte-identical output (#137)
Transpile cacheWarm transpile-cache hits collapse from three body copies to one, reusing the read buffer in place (#139)

CPU-quota auto-detection stays wired in, with no public CPU knob in any namespace. (#150)

nub run

nub run <script> <args> already forwarded args to the underlying command, but the echoed command preamble showed only the script body. It now includes the forwarded args, shell-quoted exactly as they run, so the displayed command matches what executes. (#147)

The full release notes list every change in this release.

Get started

Or paste this "Get Started" prompt into an agent. It will install Nub and explain how it can be used in your project. (It won't make any changes without permission.)