Changelog
All notable changes to Alien::Xmake will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v0.9.2 - 2026-09-02
Aliens based on xrepo install only what end users need (libs, binaries, etc.) and not all the tools installed along the way (compilers, cmake, python, etc.).
Added
- Just a bunch of examples in the docs.
Changed
::Base::Builder::_resolve_aliennow re-exports installed packages with (xrepo export -k shared --shallow) to avoid extra toolchain clutter in the sharedir install. This might not be the best place to do it but it's the current place.::Baseavoids reinstalling everything when running unit tests
v0.9.1 - 2026-09-02
More polish as I inch towards v1.0.0.
Added
- Multi-package support in
Alien::Xrepo::Base(borrowing fromAlien::Build:- New
alt( [$pkg] )accessor, modeled onAlien::Base->alt: without an argument (or with the primary name) it returns$self; with a non-primary name it returns a delegate whosecflags,libs,libpath,bin_dir,kind,dynamic_libs,dist_dir,install_type,version, and related accessors are pinned to that package. The delegate is the newAlien::Xrepo::Base::Altclass. - New
Alien::Base-style accessors:cflags_static,libs_static,dynamic_libs,dist_dir,install_type, andsplit_flags. package_namesreturns the bound package names, andinstallreturns the list of package infos in list context.- This will allow me to merge Alien::SDL3_mixer, Alien::SDL3_image, Alien::SDL3_ttf into Alien::SDL3
- New
- Security and Contributing policy files
v0.9.0 - 2026-09-01
The docs have been greatly expanded since January but the stars of this release are Alien::Xrepo and Alien::Xrepo::Base, an Alien::Base stand-in for installing tools and libraries from xrepo, vcpkg, conan, brew (homebrew/linuxbrew), conda, dub (Dlang libs), pacman (if you use arch, btw) clib, apt on Debian/Ubuntu, Cargo for Rust crates, Portage on Gentoo, Nimble for nimlang, NuGet for .NET, Zypper on openSUSE, and even your own custom repositories with smart prerequisite management in just a few lines of Perl.
Changed
- We install the latest tagged release of xmake rather than hardcoding a version. If the system install is older, we leave it alone and create a local install in our dir.
Fixed
Alien::Xreposhouldn't choke when xrepo sends chatter toSTDOUTlike the compiler probe before the actual JSON we're looking for
Added
- Alien::Xrepo::Base.
- New examples:
eg/webui.plwraps webUI for fast, local, browser based GUIseg/nuklear/builds the header-only Nuklear GUI library via xmake into a shared library (GDI backend on Windows, Xlib on Unix) and uses Affix to wrap that libeg/repo_features.plis a feature tour covering third-party package manager support (vcpkg::,conan::,brew::,pacman::,dub::, ...) and creation of dependency graphs (info( ..., depgraph => 1, format => 'dot' )for Graphvizeg/xrepo_inline_c.plan Inline::C walkthrough for downloading and linkinglibpngandzlibeg/xrepo_binary.pldemonstrates using xrepo to install and run binaries; in this caseninja- Two example CPAN-style dists under
eg/examples/demonstrating how to build a thinAlien::module onAlien::Xrepo::Base:Alien-Zstandard: a runnable example with three demo scripts (Affix, Affix with compression, and FFI::Platypus) and unit tests; installed via xrepo as thezstdpackageAlien-Lsquic: the plumbing for a heavylsquicinstall with unit tests
- Automatic confirmation for xmake/xrepo prompts: both
Alien::XmakeandAlien::Xrepoaccept new constructor optionsyesandconfirmwith per-callyes/confirmoverrides. - Full coverage of xrepo actions in Alien::Xrepo
fetchreturns parsed package info (or raw--cflags/--ldflags) without reinstallinginfosupports--depgraphand--format=jsonscanlists installed packages (optional lua-pattern filter)downloadfetches package source archivesimport_pkg/exporthandle offline package distributionlist_repolists configured remote repositoriesenvsets up a package environment and runs a program (or--showit)searchsupports--addonuninstallsupports--alland--force_build_argsnow understands jobs, force/shallow/build, VS/NDK/SDK/MingW toolchain switches, and--toolchain_host
- Full coverage of xmake actions and plugins in Alien::Xmake
- New constructor option
verboseto echo commands as they run - Actions:
build,clean,create,configure,global,install,uninstall,package,pack,require,run,test,update,service,addon - Plugins:
check,doxygen,format,lua,macro,project,repo,show,watch - Generic escape hatch
task( $name, %options )for tasks without a dedicated method showstrips ANSI codes, splits listings, and decodes--format=jsoninto a data structure- The xmake
f-style config switches are mapped to options likeplat,arch,mode,kind,vs,ndk,mingw,sdk,toolchain, ... (plus asethash for any--key=value) globalgets only the config keys xmake actually accepts there (vs,ndk,qt, ...)- Version-build accessor renamed
build()tobuildid()sobuildis the build action; the xmakeconfigaction is exposed asconfigure()to keep config( $key )` as the install-time data accessor
- New constructor option
- New
installdir/cachediroptions to force a project-local package store (viaXMAKE_PKG_INSTALLDIR/XMAKE_PKG_CACHEDIR) for reproducible, isolated builds ::PackageInfogains...- an
installdiraccessor (from fetchartifacts.installdir, else derived from the first libfile/include dir) andbin_dirfalls back to<installdir>/bin, so tool packages (ninja, python, ...) can be installed and run as binaries - a
kindaccessor (libraryvsbinary), surfaced byprint/dump/_data_printer
- an
Alien::Xrepo->new( root => $dir )becomes the defaultinstalldirfor every store-touching method, so one install call can run against a project-local store; used byAlien::Xrepo::Base- Alien::Xrepo POD now describes binary/tool installs and not just shared libs for FFI
- New
themeconstructor option (defaultplain) so xmake/xrepo output carries no ANSI color codes; passed as$ENV{XMAKE_THEME}on every store-touching method, overridable per-call withtheme => ...
0.08 - 2026-01-11
Changed
- Don't bother with making sure we can install a lib on CPAN smokers. I can't diagnose a system I have no access to.
0.07 - 2026-01-09
Changed
- Switch xmake to plain text mode on CPAN smokers
0.06 - 2026-01-07
Added
- Support system installs on Windows
- Expose xrepo
- Demos in
eg/eg/xmake_demo.plcreates and builds a simple shared library in Ceg/xrepo_demo.plqueries for zlib's info, installs it locally, and spews the flags required to build against it
Changed
- Bump to Xmake 3.0.6
0.05 - 2024-03-18
Fixed
- Resort to git when we fail to download snapshot with HTTP::Tiny (kinda pointless but the code was already there)
0.04 - 2024-03-17
Changed
- Install v2.8.8 on platforms that build from source
- Pull tarball instead of git clone on platforms that build from source
0.03 - 2024-03-17
Changed
- Install v2.8.8 on Windows
0.02 - 2024-03-17
Changed
- Minor documentation changes
- Move to Test2::V0
0.01 - 2023-10-02
Changed
- It exists.