Every release of wowlua, newest first. Each minor version closes a milestone of the roadmap. Binaries are on GitHub Releases ↗. Read from CHANGELOG.md.
Work toward M9 on main, not in a release yet: wowlua's emulation of the WoW
client, and the test framework that runs on it. The language server, the VS
Code extension and the milestones after M9 are planned; see the
roadmap.
added
wowlua-vm, a Lua 5.1 VM in Rust: the corpus compiles to luac's bytecode and lines, and the Lua 5.1 test suite passes (S1)
WoW's Lua environment in the VM: taint and secure execution with taint reports, secret values, the client's limits and call depths (S2)
wowlua-engine: the WoW API from Blizzard's documentation with its argument checks, frames, events, timers, units, auras and protected actions; Blizzard's UI code loads as secure code, and on WoW: Forever it logs in and runs without an error, as the client's does (S3)
wowlua test: a package's test files run per flavor in the emulated client, with the addon loaded from its TOC as the client loads it; test.blizzard-ui loads Blizzard's UI first; --watch (docs, S4)
wowlua:mock: units, combat, time and events of a simulated world, spies, stubs and fakes, waiting, printed output and errors, mock.module, user input (click, hover, drag, typing, key bindings), casting, vendors, mock.reloadUI, and taint assertions (toBeBlocked, toBeSecure) (S4)
World profiles: a test file starts with the character, money, gear, bags, place, auras and units of tests/profiles/<name>.json; /stdtest snapshot records one in the client (S4)
import internal reaches a module's private declarations from tests (S4)
Coverage and reports: wowlua test --coverage (lines, statements, branches, functions, conditions), test.coverage minimums, and the junit, tap, json, github, lcov, cobertura, coverage-json and html reporters (S5)
The three examples have tests
The standard library's tests run in the VM, on the engine
-j, --jobs (WOWLUA_JOBS, build.jobs) and build.jobs-memory: the worker threads of a build and the memory they may take
Lua compile results are kept between runs in the cache (build.compile-cache, build.compile-cache-size, WOWLUA_NO_COMPILE_CACHE)
changed
wowlua fmt formats all of wowlua's syntax (S6)
Builds parse, lower, check, lint and walk the load order's call graph on worker threads
Builds take less memory: smaller syntax trees and IR, each source's text kept once, source maps kept encoded
wowlua dev rebuilds once per batch of changes, keeps compiled files between builds, does not parse unchanged plain Lua files again and writes only the files that changed
Runs end with a count of errors and warnings; a source line longer than 160 characters is shown as a window around its labels
Load order: no W1033 for files whose order build.load-order or an XML file fixes
Load order: a load-on-demand addon may read its dependencies' tables while it loads without W1034
Load order: branches that run only when an argument is not a function no longer count for callers that pass one (fewer W1035)
fixed
Long operator chains build without a stack overflow or quadratic time, also on Windows
check.lints accepts the warning forms of name and type errors ("W2001": "allow")
wowlua dev ignores the output folder build.out names, not only dist/
Field assignments of an annotated variable are checked against its declared type
M8, the standard library: wowlua: modules written in wowlua, typed, and
tested in game on WoW: Forever. examples/core-demo uses no third-party
libraries for its events, saved variables, settings, minimap button,
keybindings and comms.
M7's exit criterion is met: SuuUI, a WoW: Forever addon adopted with
wowlua init, was published from CI to CurseForge, Wago and GitHub with one
tag push.
changed
CurseForge, Wago and WoWInterface targets build unminified unless the target sets minify
W6010 warns when an addon-site target publishes minified code, no longer for GitHub targets
M6, the package manager. Addons built with the BigWigs packager migrate with
wowlua init --from-pkgmeta and build the same, checked on thirty-six addons.
added
Git, SVN, path and archive sources, a global cache and wowlua.lock
M0, the foundation: an existing Lua addon builds and installs from a
wowlua.json, with generated TOCs for several flavors.
added
new, init (from a TOC), build for plain Lua projects (TOC generation, assets, LICENSES.txt, output validation), install, uninstall, dev (copy and link modes, safe installs), clean, toc and explain
.wowlua files that are pure Lua 5.1
wowlua.lock with the pinned flavor table
Release binaries for macOS, Linux and Windows on GitHub Releases