Getting Started with xPack LLVM clang
Overview
xPack LLVM clang is a standalone cross-platform (Windows, macOS, GNU/Linux) binary distribution of LLVM clang, intended for reproducible builds.
The clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective C/C++, etc) for tLLVM, a project maintained by the LLVM Foundation.
clang is an open source project hosted on GitHub.
The open source xPack LLVM clang project is hosted on GitHub as
xpack-dev-tools/clang-xpack
;
it provides the platform specific binaries as
release assets.
In addition to the binary archives and the package metadata, this project also includes the build scripts.
Features
All binaries are:
- self-contained (include all required libraries)
- file-system relocatable (can be installed in any location)
- built on slightly older systems (to make them run on both old and new systems)
Compatibility with older systems
Given that most operating systems maintain significant compatibility with older versions, building an application on an older system ensures that the same binary can run on newer versions. Conversely, building an application on a newer system may utilize library features that are not available in older versions, making backward compatibility less feasible.
Benefits
The main advantages of using the xPack LLVM clang are:
- a convenient, uniform and portable install/uninstall/upgrade procedure; the same procedure is used for all major platforms (x64 Windows, x64 macOS, arm64 macOS, x64 GNU/Linux, arm64 GNU/Linux, arm GNU/Linux)
- multiple versions of the same package can be installed at the same time on the same system
- no need to worry about dependent libraries, all are included
- significantly lighter and easier to use than Docker images that provide similar functionality and are GNU/Linux centric
- projects can be tied to specific tools versions; this provides a good reproducibility, especially useful in CI/CD environments.
Compatibility
The xPack LLVM clang project is fully compatible with the upstream LLVM clang.
The xPack LLVM clang distribution includes support for C/C++ and a limited set of the LLVM utilities.
Install
The binaries can be installed automatically as binary xPacks or manually as portable archives.
The details of installing the xPack LLVM clang on various platforms are presented in the Install Guide.
Documentation
The original LLVM clang documentation is available from the project web site:
Release schedule
This distribution generally follows the official LLVM clang releases, which are 2 major releases per year.
Given that between the major releases there are 5-8 intermediate releases (spaced 2 weeks apart), only the final patch of each minor version is retained (like 18.1.[5678]). The rule is to wait for the new upstream release (like 19.1.0), and release the previous one (18.1.[5678])
However, in order to spot possible issues, it is recommended to run builds as soon as new versions are available (like 18.1.1), without making public releases.
Support & feedback
The quick advice for getting support and providing feedback is to use the GitHub Discussions.
For additional information, please refer to the Help Centre page.
Change log
The release and change log is available in the repository
CHANGELOG.md
file.
Maintainer & Developer information
For information on the workflow used to make releases, please see the Maintainer Info page.
For information on how to build the binaries, please see the Developer Info page.
However, the ultimate source for details are the build scripts themselves,
all available from the
clang-xpack.git/build-assets/scripts
folder. The scripts include common code from the @xpack-dev-tools/xbb-helper
package.
License
Unless otherwise stated, the original content is released under the terms of the MIT License, with all rights reserved to Liviu Ionescu.
The binary distributions include several open-source components; the
corresponding licenses are available in each archive in the
distro-info/licenses
folder.
Releases
The list of releases is available in the Releases pages.