internal/dload
DLoad simplifies downloading and managing binary artifacts for PHP projects. Automatically fetch tools like RoadRunner, Temporal, and custom binaries at pinned versions, ensuring consistent, cross-platform dev environments without committing binaries to version control.
Developer Onboarding & Tooling Standardization:
Eliminates friction in setting up project-specific binaries (e.g., RoadRunner, Temporal, PHAR tools) by automating downloads and version pinning. Reduces "works on my machine" issues by ensuring consistent tooling across teams. As of 1.19.0, tool definitions can now ship inside Composer packages, meaning a platform team can publish acme/tools and have composer install provision every internal binary — no XML files, no installer scripts, no per-repo config drift.
Build vs. Buy Decision: Buy for projects requiring:
!=/<>, v prefixes, build metadata, numbered pre-releases, and 5+ part versions are all supported as of 1.19.0..tgz/.tar archives as well as raw binaries and PHARs.Roadmap Priorities:
dload into project templates (e.g., Laravel/Symfony starter kits) to auto-provision tools like rr, temporal, or buf.acme/tools meta-package — this is now a supported pattern and should be the default distribution mechanism for internal binaries.dload at self-hosted repositories (Nexus/Artifactory/internal GitLab) to remove the last external dependency from the toolchain.Use Cases:
rr/temporal during composer install (via post-update-cmd).dload’s built-in CI snippets).psalm, phpstan) without manual PHAR downloads.<package>#<id> addressing.Vendor Risk Readiness: Five minor releases shipped between 1.13.1 (May 2026) and 1.19.0 (Oct 2026), with no breaking changes and a documented, incremental surface. This is a healthy signal for a dependency that touches build reproducibility — it is actively maintained and additive rather than churning.
Adopt dload if:
buf).roadrunner:^2025.1.0, >=1.0 <2.0, 1.0.0 - 1.4.0).curl/wget scripts for tooling setup.Look elsewhere if:
Migration note: The 1.18 → 1.19 upgrade is additive, but two behaviors changed in ways worth verifying: version constraints now use DLoad’s own ordering (build metadata like +build.5 is ignored, long numeric parts compare numerically), and the downloader now skips OS packages and un-unpackable archives when a binary is expected and names the skipped packages in failure reports. Pin the DLoad version in CI and re-run your tool-install step once on upgrade.
*"DLoad solves a critical pain point in PHP development: consistent, automated tooling setup. Today, developers waste hours manually downloading and configuring binaries like RoadRunner or Temporal—leading to environment drift and onboarding delays. With DLoad, we:
composer install.roadrunner:^2025.1.0).Investment: Minimal (Composer dependency). ROI: faster dev cycles, fewer environment bugs, scalable tooling, and no external hosting dependency."*
*"DLoad is a batteries-included solution for managing PHP binaries/PHARs. Key benefits:
curl | bash scripts with composer require internal/dload + dload get.roadrunner-linux-amd64 vs. roadrunner-darwin-arm64), correctly ranks universal macOS builds and x86-64 microarchitecture levels, and unpacks .tgz/.tar assets.<package>#<id>. Publish one acme/tools package and every repo gets the same binaries and versions.Tradeoff: Still not the right fit for complex pre/post-download logic such as license acceptance or bespoke checksum verification. Note that version-constraint semantics changed in this release — build metadata is ignored and long numeric parts compare numerically — so re-verify pinned constraints once. For everything else, it’s 10x faster than manual setup."*
Call to Action:
dload to project templates and CI pipelines; standardize internal binary distribution through a shared Composer package.dload get in composer.json, and migrate hand-rolled curl scripts to repository-backed definitions.dload at self-hosted repositories to eliminate external hosting dependencies.How can I help you explore Laravel packages today?