- Fixes:
- normalize namespace names to lowercase when performing dependency resolution, to match CLI behavior
luarocks build
: ensure--force
worksluarocks init
: check if we can create .gitignore- Unix: honor umask correctly
- Fix error when failing to open cached files
- Fix behavior of luarocks.lock file when dealing with dependencies
- Features:
luarocks build
andluarocks install
no longer rebuild or reinstall if the version is already installed (--force
overrides).- More aggressive caching of the manifest file (does not
hit
luarocks.org
again if the cached manifest is younger than 10 seconds). - Drops stale lock files (older than 1 hour).
- More informative error reports on bad configurations of
Lua paths (
LUA_INCDIR
,LUA_LIBDIR
). - Better error messages when lacking permissions.
- Bumps vendored dkjson dependency to 2.7.
--verbose
output now prints the LuaRocks configuration, for more informative bug reports.
- Fixes:
- Passing
--global
always LuaRocks target the system tree. - Does not crash if
root_dir
is a table. - Does not try to lock rocks trees when using
--pack-binary-rock
or--no-install
. - Checks permissions ahead of trying to lock trees, to provide better error messages.
- Avoids LuaSec version mismatch by refusing to use LuaSec versions below 1.1.
- Does not set up a "project environment" when running
make
on the LuaRocks sources. - Windows:
- Avoid excessive calls to
icacls
, resulting in performance improvements. - Parses slashes correctly when reading a rock's
rock_manifest
. - Fix setting of environment variables.
- install.bat sets LUALIB.
- Improved help for
luarocks path
.
- Avoid excessive calls to
- Passing
- Features:
- Introduce file-based locking for concurrent access control. Previously, LuaRocks would produce undefined behavior when running two instances at the same time.
- Rockspec quality-of-life improvements:
- Using an unknown
build.type
now automatically implies a build dependency forluarocks-build-<build.type>
. - Improve
rockspec.source.dir
autodetection. builtin
build mode now automatically inherits include and libdirs fromexternal_dependencies
if not set explicitly.
- Using an unknown
- improved and simplified Lua interpreter search.
lua_interpreter
config value is deprecated in favor ofvariables.LUA
which contains the full interpreter path.
luarocks-admin remove
now supports thefile://
protocol for managing local rocks servers.- Bundled dkjson library, so that
luarocks upload
does not require an external JSON library. - New flags for
luarocks init
:--no-gitignore
,--no-wrapper-scripts
,--wrapper-dir
. luarocks config
now attempts updating the system config by default whenlocal_by_default
isfalse
.- New flag for
luarocks path
:--full
, for use with--lr-path
and--lr-cpath
.
- Fixes:
- various Windows-specific fixes:
build.install_command
now works correctly on Windows.- do not attempt to set "executable" permissions for folders on Windows.
- better handling of Windows backslash paths.
- fix program search when using absolute paths and
.exe
files. - improved lookup order for library dependencies.
LUALIB
filename detection is now done dynamically at runtime and not hardcoded by the Windows installer.- prevent LuaRocks from blocking
luafilesystem
from being removed on Windows.
luarocks build
no longer looks for Lua headers when installing pure-Lua rocks.luarocks build
table in rockspecs now gets some additional validation to prevent crashes on malformed rockspecs.build.builtin
now compiles C modules in a temporary directory, avoiding name clashesbuild_dependencies
now correctly installs dependencies for the Lua version that LuaRocks is running on, and not the one it is building for with--lua-version
.build_dependencies
can now use a dependency available in any rocks tree (system, user, project).luarocks config
now prints boolean values correctly on Lua 5.1.luarocks config
now ensures the target directory exists when saving a configuration.luarocks init
now injects the project'spackage.(c)path
in the Lua wrapper.luarocks lint
no longer crashes if a rockspec misses adescription
field.luarocks test
now handles malformedcommand
entries gracefully.- if
--lua-*
flags are given in the CLI, the hardcoded values are never used. - the "no downloader" error is now shown only once, and not once per failed mirror.
- project dir is always presented normalized
- catch the failure to setup
LUA_BINDIR
early. - when using
--pack-binary-rock
and azip
program is unavailable, report that instead of failing cryptically. - More graceful handling when failing to create a local cache.
- Avoid confusion with macOS multiarch binaries on system detection.
- Add
--tree
to the rocks trees list. - Better support for LuaJIT versions with extra suffixes in their version numbers.
- Don't use floats to parse Lua version number.
- Various fixes related to path normalization.
- various Windows-specific fixes:
- Configuration now honors typical compiler environment variables
for all build backends:
MAKE
,CC
,AR
,RANLIB
on UnixMAKE
,CC
,AR
,WINDRES
,LINK
,MT
on Windows
builtin
build mode now supports Clang on Windowsluarocks test
now checks/installs all dependency kinds (build, runtime, test), so you don't need to runluarocks make --only-deps
in CI environments to get all dependencies needed to run a test- MinGW: default to x86_64 compiler on 64-bit platforms
- Fixed crash if
variables.LUA*
are unset in configuration - Fix
luarocks test --prepare
behavior for non-Busted tests - Internal API fixes
path.path_to_module
: accept custom file extensions in package path variablespersist.save_from_table
: ensure directory exists when saving a file
- Fixed error message when Lua library is not found
- Fixed build of Windows binary
- A couple of minor feature additions:
- API:
loader.which
has a new mode for searchingpackage.path/cpath
- Adds a new second argument,
where
, a string which indicates places to search for the module. Ifwhere
contains"l"
, it will search using the LuaRocks loader; if it contains"p"
, it will look in the filesystem usingpackage.path
andpackage.cpath
. You can use both at the same time.
- Adds a new second argument,
--no-project
flag can be used to override.luarocks
project directory detection
- API:
builtin
build mode now always respects CC, CFLAGS and LDFLAGS- Check that lua.h version matches the desired Lua version
- Check that the version of the Lua C library matches the desired Lua version
- Fixed deployment of non-wrapped binaries
- Fixed crash when
--lua-version
option is malformed - Fixed help message for
--pin
option - Unix: use native methods and don't always rely on $USER to determine user
- Windows: use native CLI tooling more
- macOS: support .tbd extension when checking for libraries
- macOS: add XCode SDK path to search paths
- macOS: add best-effort heuristic for library search using Homebrew paths
- macOS: avoid quoting issues with LIBFLAG
- macOS: deployment target is now 11.0 on macOS 11+
- added DragonFly BSD support
- LuaRocks test suite now runs on Lua 5.4 and LuaJIT
- Internal dependencies of standalone LuaRocks executable were bumped
- Support GitHub's protocol security changes transparently.
- The raw git:// protocol will stop working on GitHub. LuaRocks already supports git+https:// as an alternative, but to avoid having to update every rockspec in the repository that uses git://github.com, which would require a large coordinated effort, LuaRocks now auto-converts github.com and www.github.com URLs that use git:// to git+https://
luarocks test
has a new flag--prepare
that checks, downloads and installs the tool requirements and rockspec dependencies but does not run the test suite for the rockspec being tested.- Code tweaks so that LuaRocks can run on a Lua interpreter built without
the
debug
library. luarocks upload
supports uploading pre-packaged.src.rock
files.- Configuration fixes for OpenBSD.
- Respect the existing value for the
variables.LUALIB
configuration variable if given explicitly by the user in the config file, rather than trying to override it with auto-detection. - Windows fixes for setting file permissions:
- Revert the use of
Everyone
back to*S-1-1-0
- Quote the use of the
%USERNAME%
variable to support names with spaces
- Revert the use of
- Improved connectivity resiliency
- LuaRocks can now use mirrors for downloading rocks even if downloading the manifest from the main server succeeds. In previous versions, LuaRocks would check whether to use a mirror in the first download operation, when it fetches the manifest. Once the server (luarocks.org or one of its default mirrors) was chosen, it would stick with it for the rest of the command. The resulting behavior was that if the manifest fails to load, it switches to a mirror and continues from there. But if the manifest fetches ok and the then actual rock download fails, it would give up, instead of trying that in a mirror as well. Now, it retries every download on a mirror whenever the base URL matches one configured in cfg.rocks_servers. The original behavior was satisfactory if there was complete downtime in the main server, but this new behavior should make the CLI much more resilient with regard to any intermittent failures happening on the main server.
- On Unix, it now respects environment variables $XDG_CACHE_HOME and $XDG_CONFIG_HOME
- This means the user's configuration typically resides in ~/.config/luarocks/ as per the XDG standard
- The legacy path ~/.luarocks/ continues to be tested first, for backwards compatibility
- Fixes check for the default Lua version set in the user's home configuration
- Fixes an issue on Windows where it would incorrectly revoke permissions from the current user when installing
- Adds a double-check step to verify that all files from a rock are installed
- Improve resilience of the manifest reader to deal with manifests written with older versions of LuaRocks lower than 3.0
luarocks pack
now checks that the directory inside the archive being packed as a.src.rock
actually exists, refusing to pack an invalid rock from a badly configured rockspec.- Fixes behavior of
luarocks pack
when theurl
entry of a rockspec points to a bare file. - Remove an entry from the manifest if the rock itself is already missing
- The
configure
script now checks that the version oflua.h
found matches that of the Lua interpreter detected or configured - Fixes the renaming of scripts when multiple versions are installed
- Fixes availability check for
svn
for rockspecs using Subversion - Fixes for running with an empty PATH environment variable
- Portability improvements:
- Windows: vcvarsall.bat output is now properly redirected to NUL
meaning that the output of
luarocks path
can be used in scripts - Fixes autodetection for Cygwin
- Handles macOS versions greater than 10.10
- Adds platform specific configurations for NetBSD
- Respects CC/CFLAGS/LDFLAGS on FreeBSD
- Windows: vcvarsall.bat output is now properly redirected to NUL
meaning that the output of
- Luacheck now runs on the LuaRocks CI
- Distributed binaries are built using Lua 5.3
This is a small release:
- Added support for MSYS2 and Mingw-w64
- Reverted the change in MSVC environment variable set up script
- Fixes a bug where
--verbose
raised an exception with a nil argument - Added proper error messages when lua.h is invalid
luarocks make
now supports--only-deps
luarocks make
new flag:--no-install
, which only performs the compilation step--deps-only
is now an alias for--only-deps
(useful in case you always kept getting it wrong, like me!)luarocks build
andluarocks make
now support using--pin
and--only-deps
at the same time, to produce a lock file of dependencies in use without installing the main package.luarocks show
can now accept a substring of the rock's name, likelist
.luarocks config
: when running without system-wide permissions, try storing the config locally by default. Also, if setting both lua_dir and --lua-version explicitly, auto-switch the default Lua version.luarocks
with no arguments now prints more info about the location of the Lua interpreter which is being usedluarocks new_version
now keeps the old URL if the MD5 doesn't change.DEPS_DIR
is now accepted as a generic variable for dependency directories (e.g.luarocks install foo DEPS_DIR=/usr/local
)- Handle quoting of arguments at the application level, for improved Windows support
- All-in-one binary bundles
dkjson
, so it runsluarocks upload
without requiring any additional dependencies. - Tweaks for Terra compatibility
- win32: generate proper temp filename
- No longer assume that Lua 5.3 is built with compat libraries and
bundles
bit32
luarocks show
: do not crash when rockspec description is empty- When detecting the location of
lua.h
, check that its version matches the version of Lua being used - Fail gracefully when a third-party tool (wget, etc.) is missing
- Fix logic for disabling mirrors that return network errors
- Fix detection of Lua path based on arg variable
- Fix regression on dependency matching of luarocks.loader
This is a bugfix release:
- Fix downgrades of rocks containing directories: stop it from creating spurious 0-byte files where directories have been
- Fix error message when attempting to copy a file that is missing
- Detect OpenBSD-specific dependency paths
- Dependency pinning
- Adds a new flag called
--pin
which creates aluarocks.lock
when building a rock withluarocks build
orluarocks make
. This lock file contains the exact version numbers of every direct or indirect dependency of the rock (in other words, it is the transitive closure of the dependencies.) Formake
, theluarocks.lock
file is created in the current directory. The lock file is also installed as part of the rock in its metadata directory alongside its rockspec. When using--pin
, if a lock file already exists, it is ignored and overwritten. - When building a rock with
luarocks make
, if there is aluarocks.lock
file in the current directory, the exact versions specified there will be used for resolving dependencies. - When building a rock with
luarocks build
, if there is aluarocks.lock
file in root of its sources, the exact versions specified there will be used for resolving dependencies. - When installing a
.rock
file withluarocks install
, if the rock contains aluarocks.lock
file (i.e., if its dependencies were pinned with--pin
when the rock was built), the exact versions specified there will be used for resolving dependencies.
- Adds a new flag called
- Improved VM type detection to support moonjit
- git: Support for shallow recommendations
- Initial support for Windows on ARM
- Support for building 64-bit Windows all-in-one binary
- More filesystem debugging output when using
--verbose
(now it reports operations even when using LuaFileSystem-backed implementations) --no-manifest
flag for creating a package without updating the manifest files--no-doc
flag is now supported byluarocks make
- Speed up dependency checks
- Speed up installation and deletion when deploying files
- build: do not download sources when when building with
--only-deps
- New flag
--check-lua-versions
: when a rock name is not found, only checks for availability in other Lua versions if this flag is given
- safer rollback on installation failure
- config: fix
--unset
flag - Fix command name invocations with dashes (e.g.
luarocks-admin make-manifest
) - Fix fallback to PATH search when Lua interpreter is not configured
- Windows: support usernames with spaces
- Windows: fix generation of temporary filenames (#1058)
- Windows: force
.lib
over.dll
extension when resolvingLUALIB
- fix installation of LuaRocks via rockspec (
make bootstrap
andluarocks install
): correct a problem in the initialization of the luarocks.fs module and its interaction with the cfg module. - fix luarocks build --pack-binary-rock --no-doc
- fix luarocks build --branch
- luarocks init: fix Lua wrapper for interactive mode
- fix compatibility issues with command add-ons loaded via luarocks.cmd.external modules
- correct override of config values via CLI flags
LuaRocks 3.2.0 now uses argument parsing based on argparse instead of a homegrown parser. This was implemented by Paul Ouellette as his Google Summer of Code project, mentored by Daurnimator.
Release highlights:
- Bugfix: luarocks path does not change the order of pre-existing path items when prepending or appending to path variables
- Bugfix: fix directory detection on the Mac
- When building with --force-config, LuaRocks now never uses the "project" directory, but only the forced configuration
- Lua libdir is now only checked for commands/platforms that really need to link Lua explicitly
- LuaJIT is now detected dynamically
- RaptorJIT is now detected as a LuaJIT variant
- Improvements in Lua autodetection at runtime
- luarocks new_version: new option --dir
- luarocks which: report modules found via package.path and package.cpath as well
- install.bat: Improved detection for Visual Studio 2017 and higher
- Bundled LuaSec in all-in-one binary bumped to version 0.8.1
This is another bugfix release, that incldes a couple of fixes, including better Lua detection, and fixes specific to MacOS and FreeBSD.
This is again a small fix release.
This is a hotfix release fixing an issue that affected initialization in some scenarios.
The luarocks config
command used to only list the current
configuration. It is now able to query and also set individual
values, like git config
. You can now do things such as:
luarocks config variables.OPENSSL_DIR /usr/local/openssl luarocks config lua_dir /usr/local luarocks config lua_version 5.3
and it will rewrite your luarocks configuration to store that value
for later reuse. Note that setting lua_version
will make that Lua
version the default for luarocks
invocations (you can always
override on a per-call basis with --lua-version
.
You can specify the scope where you will apply the configuration
change: system-wide, to the user's home config (with --local), or
specifically to a project, if you run the command from within a
project directory initialized with luarocks init
.
Some users prefer that LuaRocks default to system-wide installations,
some users prefer to install everything to their home directory. The
local_by_default
configuration file controls this preference: when
it is off, the --local
file triggers user-specific. Before 3.1.0
there was no convenient way to trigger system-wide installations when
local_by_default
was set to true. LuaRocks 3.1.0 adds a --global
flag to this purpose. To enable local-by-default, you can now do:
luarocks config local_by_default true
A rockspec can include embedded patch files, which are applied when a
source rock is built. Now, when you run luarocks make
on a source
tree unpacked with luarocks unpack
, the patches will be applied as
well (and a hidden lockfile is created to avoid the patches to be
re-applied incorrectly).
When working on a project initialized with luarocks init
, the
presence of a ./.luarocks/config-5.x.lua file will be enough to detect
the project-based workflow and have luarocks
default to that 5.x
version. That means the ./luarocks
wrapper becomes less necessary;
the luarocks
from your $PATH will deal with the project just fine,
git-style.
There are also other improvements. LuaRocks uses the manifest cache a bit more aggressively, resulting in increased performance. Also, it no longer complains with a warning message if the home cache cannot be created (it just uses a temporary dir instead). And of course, the release includes multiple bugfixes.
- Fork-free platform detection at startup
- Improved detection of the default rockspec in commands such as
luarocks test
- Various minor bugfixes
LuaRocks 3.0.3 is a minor bugfix release, fixing a regression in luarocks.loader introduced in 3.0.2.
- Improvements in luarocks init, new --reset flag
- write_rockspec: --lua-version renamed to --lua-versions
- Improved behavior in module autodetection
- Bugfixes in luarocks show
- Fix upgrade/downgrade when a single rock has clashing module filenames (should fix the issue when downgrading luasec)
- Fix for autodetected external dependencies with non-alphabetic characters (should fix the libstdc++ issue when installing xml)
- Numerous bugfixes including:
- Handle missing global
arg
- Fix umask behavior
- Do not overwrite paths in format 5.x.y when cleaning up path variables (#868)
- Do not detect files under lua_modules as part of your sources
when running
luarocks write_rockspec
- Windows: do not hardcode MINGW in the all-in-one binary: instead it properly detects when running from a Visual Studio Developer Console and uses that compiler instead
- configure: --sysconfdir was fixed to its correct meaning: it now
defaults to /etc and not /etc/luarocks (
/luarocks
is appended to the value of sysconfdir) - configure: fixed --force-config
- Handle missing global
- Store Lua location in config file, so that a user can run
luarocks init --lua-dir=/my/lua/location
and have that location remain active for that project - Various improvements to the Unix makefile, including $(DESTDIR) support and an uninstall rule
- Autodetect FreeBSD-style include paths (/usr/include/lua5x/)
- New rockspec format
- New commands, including luarocks init for per-project workflows
- New flags, including
--lua-dir
and--lua-version
for using multiple Lua installs with a single LuaRocks - New build system
- General improvements, including namespaces
- User-visible changes, including some breaking changes
- Internal changes
New rockspec format: if you add rockspec_format = "3.0"
to your rockspec,
you can use a number of new features. Note that these rockspecs will only work
with LuaRocks 3.0 and above, but older versions will detect that directive and
fail gracefully, giving the user a message telling them to upgrade. Rockspecs
without the rockspec_format
directive are interpreted as having format 1.0
(the same format from LuaRocks series 1.x and 2.x) and are still supported.
The following features are only enabled if rockspec_format = "3.0"
is set in
the rockspec:
- Build type
builtin
is the default ifbuild.type
is not specified. - The
builtin
type auto-detects modules using the same heuristics aswrite_rockspec
(for example, if you have asrc
directory). With auto-detection of the build type and modules, many rockspecs don't even need an explicitbuild
table anymore. - New table
build_dependencies
: dependencies used only for runningluarocks build
but not when installing binary rocks. - New table
test_dependencies
: dependencies used only for runningluarocks test
- New table
test
: settings for configuring the behavior ofluarocks test
. Supports atest.type
field so that the test backend can be specified. Currently supported test backends are:"busted"
, for running Busted"command"
, for running a plain command.- Custom backends can be loaded via
test_dependencies
- New field
build.macosx_deployment_target = "10.9"
is supported in Mac platforms, and adjusts$(CC)
and$(LD)
variables to export the corresponding environment variable. - LuaJIT can be detected in dependencies and uses version reported by the
running interpreter: e.g.
"luajit >= 2.1"
. - Auto-detection of
source.dir
is improved: when the tarball contains only one directory at the root, assume that is where the sources are. - New
description
fields:labels
, an array of strings;issues_url
, URL to the project's bug tracker.
cmake
build type now supportsbuild.build_pass
andbuild_install_pass
to disablemake
passes.git
fetch type fetches submodules by default.- Patches added in
patches
can create and delete files, following standard patch rules.
- New command:
luarocks init
. This command performs the setup for using LuaRocks in a "project directory":- it creates a
lua_modules
directory in the current directory for storing rocks - it creates a
.luarocks/config-5.x.lua
local configuration file - it creates
lua
andluarocks
wrapper scripts in the current directory that are configured to uselua_modules
and.luarocks/config-5.x.lua
- if there are no rockspecs in the current directory, it creates one based on the directory name and contents.
- it creates a
- New command:
luarocks test
. It runs a rock's test suite, as specified in the newtest
section of the rockspec file. It also does some autodetection, so it already works with many existing rocks as well. - New command:
luarocks which
. Given the name of an installed, it tells you which rock it is a part of. For example,luarocks which lfs
will tell you it is a part ofluafilesystem
(and give the full path name to the module). In this sense,luarocks which
is the dual command toluarocks show
.
- New flags
--lua-dir
and--lua-version
which can be used with all commands. This allows you to specify a Lua version and installation prefix at runtime, so a single LuaRocks installation can be used to manage packages for any Lua version. It is no longer necessary to install separate copies of LuaRocks to manage packages for Lua 5.x and 5.y. - New flags added to
luarocks show
:--porcelain
, giving a stable script-friendly output (named after the Git--porcelain
flag that serves the same purpose) and--rock-license
. - New flag
--temp-key
forluarocks upload
, allowing you to easily upload rocks into an alternate account without disrupting the stored configuration of your main account. - New flag
--dev
, for enabling development-branch sub-repositories. This adds support for easily requestingdev
modules from LuaRocks.org, as in:luarocks install --dev luafilesystem
. The list of URLs configured inrocks_servers
is prepended with a list containing "/dev" in their paths. luarocks config
, when called with no arguments, now displays your entire active configuration, using the same Lua syntax as the configuration file. It is sensitive to the flags given to it (--tree
,--lua-dir
, etc.) so it presents the resulting configuration produced by loading the currently-active configuration files and the given flags.
New build system: the configure
and Makefile
scripts were completely
overhauled, making use of LuaRocks 3 features to greatly simplify them:
- Much of the detection and configuration work they performed were moved to runtime, to make LuaRocks more dynamic and resilient to environment changes
- The system-package-manager-friendly mode is still available, as the
default target (
make
, formerlymake build
). - The LuaRocks-as-a-rock mode (
make bootstrap
) is also still available, and was greatly simplified: it no longer uses custom Makefiles: LuaRocks installs itself usingluarocks make
, and its own rockspec uses thebuiltin
build mode. - A new build mode:
make binary
compiles all of LuaRocks into a single executable, bundling various Lua modules to make it self-sufficient, such as LuaFileSystem, LuaSocket and LuaSec.- For version 3.0, this will remain as an option, as we evaluate its suitability moving forward to become the default mode of distribution.
- The goal is to eventually use this mode to produce the Windows
version of LuaRocks. We currently include an experimental
make windows-binary
target which builds a Windows version using the MinGW-w64 cross-compiler on Linux.
- New feature: namespaces:
you can use
luarocks install user/package
to install a package from a specific user of the repository. - Improved defaults for finding external libraries on Linux and Windows.
- Detection of the Lua library and header directories is now done at runtime.
This uses the same machinery that LuaRocks employs for
external_dependencies
in general (with some added logic to cope with the unfortunate rampant inconsistency in naming of Lua libraries and header paths due to lack of upstream standardization). luarocks-admin add
now works withfile://
repositories- some UI improvements in
luarocks list
andluarocks search
. - Preliminary support for the upcoming Lua 5.4: LuaRocks is written in the common dialect supporting Lua 5.1-5.3 and LuaJIT, but since a single installation can manage packages for any Lua version now, it can already manage packages for Lua 5.4 even though that's not out yet.
- Breaking change: The support for deprecated unversioned paths
(e.g.
/usr/local/lib/luarocks/rocks/
and/etc/luarocks/config.lua
) was removed, LuaRocks will now only create and use paths versioned to the specific Lua version in use (e.g./usr/local/lib/luarocks/rocks-5.3/
and/etc/luarocks/config-5.3.lua
). - Breaking changes:
luarocks path
now exports versioned variablesLUA_PATH_5_x
andLUA_CPATH_5_x
instead ofLUA_PATH
andLUA_CPATH
when those are in use in your system. - Package paths are sanitized to only reference the current Lua version.
For example, if you have
/some/dir/lua/5.1/
in your$LUA_PATH
and you are running Lua 5.2,luarocks.loader
and theluarocks
command-line tool will convert it to/some/dir/lua/5.2/
. - LuaRocks now uses
dev
instead ofscm
as the favored version identifier to describe development versions of a rock, aligning it with the terminology used in https://luarocks.org. It still understandsscm
as a compatibility fallback. - LuaRocks no longer conflates modules
foo
andfoo.init
as being the same in its internal manifest. Instead, theluarocks.loader
module is adapted to handle the.init
case. - Wrappers installed using
--tree
now prepend the tree's prefix to their package paths. luarocks-admin
commands no longer creates anindex.html
file in the repository by default (it does update it if it already exists)
- Major improvements in the test suite done by @georgeroman as part of the ongoing Google Summer of Code 2018 program. The coverage improvements and test suite speed-ups have been essential in getting the sprint towards LuaRocks 3.0 more efficient and reliable!
- Modules needed by
luarocks.loader
were moved below theluarocks.core
namespace. Modules inluarocks.core
only depend on otherluarocks.core
modules. (Notably,luarocks.core
does not useluarocks.fs
.) - Modules representing
luarocks
commands were moved into theluarocks.cmd
namespace, andluarocks.command_line
was renamed toluarocks.cmd
. Eventually, all CLI-related code will live underluarocks.cmd
, as we move towards a clean CLI-API separation, in preparation for a stable public API. - Likewise, modules representing
luarocks-admin
commands were moved into theluarocks.admin.cmd
namespace. - New internal objects for representing interaction with the repostories:
luarocks.queries
andluarocks.results
- Type checking rules of file formats were moved into the
luarocks.type
namespace.