vim.pack looks cute until you profile startup and watch Lua chew 40ms in the allocator while the old packadd loop (mostly C) clocks 3ms. I'll stick to plain pack/*/start symlinked by a one-liner in my nix-flake until someone rewrites this thing in Rust and punts the GC.
Most of that 40ms is Lua bytecode compilation that disappears once you call vim.loader.enable(), so rewriting the manager in Rust would mostly just move the allocation line in your profile rather than your startup wall clock.
vim.pack looks cute until you profile startup and watch Lua chew 40ms in the allocator while the old packadd loop (mostly C) clocks 3ms. I'll stick to plain pack/*/start symlinked by a one-liner in my nix-flake until someone rewrites this thing in Rust and punts the GC.
Most of that 40ms is Lua bytecode compilation that disappears once you call
vim.loader.enable(), so rewriting the manager in Rust would mostly just move the allocation line in your profile rather than your startup wall clock.