Serdar Yegulalp
Senior Writer

Buckaroo brings package management to C/C++ projects

news
May 8, 20173 mins

Buckaroo uses Facebook's Buck build system and has its own curated repository of packages

While it’s fashionable to dump on C and C++ for being old school, they’re still hard to beat for sheer speed or power. But what’s often lacking is modern toolchain elements like a package manager. Go, Rust, Node.js, Ruby, and Python all have standard-issue methods to perform package management; C and C++ don’t—and that’s where third-party tools have an opportunity to step in.

One recent example is Buckaroo, which comes from LoopPerfect, creator of an interactive C++ development environment called Jyt. Buckaroo is an open source system for adding packages from a managed repository to a C/C++ project “in a controlled and cross-platform way.” Here, “cross-platform” means Windows, Linux, and MacOS, using whatever compiler is available.

Buckaroo uses the Buck build system created by Facebook, which provides mechanisms for managing and tracking dependencies in a project. Buckaroo’s CLI lets you spin up a new project with one command using a “hello world” template—or start a new empty project—then add and manage dependencies.

Languages with their own package management features typically have a managed repository of packages: PyPI for Python, NPM for Node.js, or Crates.io for Rust. Buckaroo aims to do something similar for C/C++, as it offers a curated list of packages rather than merely serve as an interface to a GitHub repository or local directory. Many popular libraries are available, including zlib, OpenSSL, and libraries from the Boost collection.

This curated approach has a drawback: It’s only possible to use Buckaroo with packages in its official repo. Also, there’s currently no tool for automating submissions to the repository; a project’s maintainer has to open a GitHub issue and work with Buckaroo’s maintainers to do this.

Another possible drawback is Buckaroo’s dependence on Buck. On the one hand, it’s a smart idea—why reinvent a wheel when there’s one available that has the resources of Facebook behind it? But it also means that projects dependent on other building systems have to be ported to Buck first, in order to make full use of what Buck provides. In the case of a building system like CMake, there doesn’t appear to be an automated path for porting projects to Buck. That means Buckaroo’s biggest benefits will be for new projects or those with few dependencies or a minimally complex build system.

There’s nothing that says a language already outfitted with a package management system can’t try different approaches. Node.js, for instance, has long had the NPM repository and package management system, but Facebook recently introduced Yarn, which touts faster package installation and better management of dependencies in projects.

Serdar Yegulalp

Serdar Yegulalp is a senior writer at InfoWorld. A veteran technology journalist, Serdar has been writing about computers, operating systems, databases, programming, and other information technology topics for 30 years. Before joining InfoWorld in 2013, Serdar wrote for Windows Magazine, InformationWeek, Byte, and a slew of other publications. At InfoWorld, Serdar has covered software development, devops, containerization, machine learning, and artificial intelligence, winning several B2B journalism awards including a 2024 Neal Award and a 2025 Azbee Award for best instructional content and best how-to article, respectively. He currently focuses on software development tools and technologies and major programming languages including Python, Rust, Go, Zig, and Wasm. Tune into his weekly Dev with Serdar videos for programming tips and techniques and close looks at programming libraries and tools.

More from this author