Tutorial: Introduction to the ALiRe Package Manager
Quentin Dauprat, Université de Caen, Normandie, France
The Alire project (Ada Library Repository) is a community-oriented package manager for the Ada and SPARK open source ecosystem. Package managers simplify the dissemination and reuse of libraries, easing the development of new projects and fostering cooperation. They also allow simple upgrades of dependencies, which helps in bug fixing and vulnerability patching. Final applications can also be packaged for greater outreach. In this tutorial, participants will get to learn the basics of the Alire project, from design foundations to practical use. General concepts about dependency management will be presented intermixed with guided practicals that will allow participants to learn how to use available libraries in their own projects, as well as the workflow to publish a library in Alire. The tutorial will cover the new features and improvements introduced in Alire 2.X.X. Topics such as shared dependencies, binary crate installation, toolchain management enhancements, and advanced index submission workflows will be addressed. As a real use case, the tutorial will tackle the use of Alire to bootstrap a project with the support of libraries available (and not available) in the community index.
Presentation Topics
- Introduction to Alire and package managers
- Ecosystem overview
- Core concepts: crates, dependencies, versions
- Getting started with Alire
- Installation across platforms
- Creating new projects
- Basic commands and workflow
- Dependencies management
- Finding, adding, and removing dependencies
- Understanding version constraints
- Working with the dependency solver
- New features in Alire 2.X.X
- Shared dependencies system
- Binary crate installation
- Improved toolchain management
- Advanced publishing workflow with GitHub integration
- Build profiles and compiler switches
- Crate configuration
- Configuration variables
- Build profiles and customization
- Platform-specific code
- Publishing your projects
- Crate preparation
- Automated submission using GitHub tokens
- Best practices
- Advanced usage
- Working with local dependencies
- Multi-crate repositories
- Test crate organization
- Private indexes
- Hands-on session
- Creating a project with dependencies
- Working with compilation options
- Installing binaries
- Preparing for publication
Proposed Duration: Half-day
Level: Introductory to Intermediate
Basic knowledge of Ada and the GNAT compilation model is recommended, but not mandatory.
Reason for attending
Attendees will learn how to navigate the Ada ecosystem more efficiently using Alire 2.X.X. The tutorial will enable participants to create Ada projects that leverage existing libraries, effectively manage dependencies, and share their own work with the community. The 2.X.X release introduces significant improvements over the 1.X version, including shared dependency management to minimize rebuilds, binary installation for tools, enhanced toolchain handling, and streamlined publishing workflows. Participants will gain hands-on experience with these features, allowing them to integrate Alire into their development workflows immediately.
Presenter
Quentin Dauprat is completing his industrial PhD in Computer Science at the Université de Caen, Normandie, France, in collaboration with Adalog and Novasys Ingénierie. His research focuses on static code analysis for the Ada programming language. With seven years of experience in Ada development, Quentin has contributed to the Ada ecosystem through open-source projects, including publishing the dotenv crate to Alire. He has leveraged Alire in his research to create reproducible benchmarks by doing a dataset of multiple Ada projects. Quentin presented his work-in-progress research at the Ada-Europe conference in 2022. His expertise spans Ada development, graph databases (Neo4j), and artificial intelligence, having completed a master's degree in AI before moving to the Ada ecosystem. Quentin is passionate about strengthening the Ada open-source community through contributions and educational content, making complex technologies more accessible to both beginners and experienced developers.