d1961e79fc
Integrate 182 upstream commits throughb2473e60while retaining MoonWell packaging, branding and the community ruRU pack. Upstream replaces the C Lua/mlua host with benilla-lua/benilla-mlua and the native glue screens with stock GlueXML. The update also includes the new locale/DBC/name rules, cache and interaction handling, rendering, quest log and chat behavior, including the latest quest completion and timed-quest failure fixes. Fork adaptations use the new APIs: stock Wow.ini locales remain intact, while the ruRU overlay reads column zero and retains its ruRU authentication tag and Lua identity. Russian names keep their twelve-letter policy and Unicode roster matching; fonts, spell costs, race/class labels and translated options retain real-pack regression coverage. Windows regression fixes keep the locale-default test valid under instrumented window overrides and the shader assertion independent of checkout line endings. The original C Lua 5.1 host, rebuilt fromc0630f3din an isolated directory, reproduces the complete Windows cos-sweep answer byte for byte; cos now uses platform-specific goldens. Validation on Windows: scripts/gates.sh passed all automatic gates, including real-data and no-install workspace tests, reference tables, documentation, message catalog, render-pass lint, player clippy/tests and engine boots with and without data. MoonWell player clippy also passed with -D warnings. The committed tree exactly matches the full green stamp; five vendored Kira files retain the tested checkout's line endings, with normalized contents unchanged. All three actual ruRU pack regressions passed in both builds. Fifteen test archives were restored read-only from the published client and SHA-256 checked. Each real-data/player rung skipped 31 tests because the optional addon corpus is absent (24 general, 7 Quiver). Live smoke was not run: no declared probe account; no player-account login or character creation was performed. Linux/macOS changes were not locally built.
37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
//! Call micro-benchmarks, best of five.
|
|
use std::time::Instant;
|
|
const CASES: &[(&str, &str)] = &[
|
|
("empty call", "local function f() end for i = 1, 3000000 do f() end"),
|
|
("arg+ret", "local function f(x) return x end local s = 0 for i = 1, 3000000 do s = s + f(i) end"),
|
|
("upvalue call", "local f f = function(x) return x end local function g() local s = 0 for i = 1, 3000000 do s = s + f(i) end return s end g()"),
|
|
("method", "local C = {} C.__index = C function C:m() return self end local o = setmetatable({}, C) for i = 1, 3000000 do o:m() end"),
|
|
("method on self", "local o = {} function o:m() return self end for i = 1, 3000000 do o:m() end"),
|
|
("loop only", "local s = 0 for i = 1, 3000000 do s = s + i end"),
|
|
];
|
|
fn best<F: FnMut()>(mut f: F) -> f64 {
|
|
(0..5)
|
|
.map(|_| {
|
|
let t = Instant::now();
|
|
f();
|
|
t.elapsed().as_secs_f64() * 1e3
|
|
})
|
|
.fold(f64::MAX, f64::min)
|
|
}
|
|
fn main() {
|
|
if let Some(only) = std::env::args().nth(1) {
|
|
let src = CASES.iter().find(|c| c.0.contains(&only)).unwrap().1;
|
|
for _ in 0..20 {
|
|
let mut vm = benilla_lua::new_state();
|
|
vm.exec(src.as_bytes(), b"=b").unwrap();
|
|
}
|
|
return;
|
|
}
|
|
for (name, src) in CASES {
|
|
let ours = best(|| {
|
|
let mut vm = benilla_lua::new_state();
|
|
vm.exec(src.as_bytes(), b"=b").unwrap();
|
|
});
|
|
println!("{name:<16} {ours:6.2} ms");
|
|
}
|
|
}
|