rvirding/luerl
62.0
Adequate · 23 September 2026
18.9k
lines of production code
Erlang
with Lua
5
measurements over time
What this system is
Luerl is a Lua interpreter implemented in Erlang, designed to execute and benchmark Lua scripts within the Erlang ecosystem. The system provides both a legacy and a modern API, with the latter optimized for idiomatic usage in Elixir via pipe-friendly wrappers. It includes comprehensive test coverage for core functions and library interactions, alongside benchmarking tools to evaluate performance across various language features.
Features
Add Elixir-style API wrappers for Luerl
Introduces new Erlang modules, \Elixir.Luerl\ and \Elixir.Luerl.Old\, which provide Elixir-friendly wrappers for the Luerl Lua interpreter. These modules reposition the VM state argument to the first position, enabling idiomatic usage with the Elixir pipe operator. The \Elixir.Luerl\ module wraps the new Luerl interface, while \Elixir.Luerl.Old\ wraps the legacy interface.
src · high confidence
Add Lua benchmark runner and test suites
Added a new benchmarking tool for the luerl Lua interpreter, including a Makefile and a \benchmarks.erl\ runner that executes Lua scripts from the \suites/\ directory. The update also introduces a collection of Lua benchmark suites (e.g., \accum\, \arguments\, \callmap1\) that test various language features and performance characteristics.
examples/benchmark · high confidence
Add Luerl benchmarking examples
Added two new benchmarking examples, minibench and minibench2, which measure the performance of frequent calls to small Luerl scripts. These examples demonstrate various usage patterns including state initialization, parsing, and execution, providing a way to evaluate the Luerl engine's speed for common operations.
examples/minibench · high confidence
Added Project Euler benchmarking examples
Added ten Lua scripts (problem\_001 through problem\_010) that solve Project Euler problems using the luerl Lua interpreter, along with a Makefile to compile and run them. These examples serve as benchmarks for the new flat emulator loop and updated luerl API.
examples/euler · high confidence
Initial release of Luerl 1.5.1
The project introduces a formal CHANGELOG to track version history and adopts the Apache License, Version 2.0. The release includes a Makefile for building and testing, a rebar3 configuration with ex\_doc integration, and a README with community links. The CHANGELOG documents that this version fixes the display of illegal tokens, updates community links to Discord, and includes various parser and scanner improvements.
(repo-wide) · high confidence
Behavioural changes
Add application metadata for Luerl 1.5.1
The ebin/luerl.app file was added to define the Luerl application metadata, specifying version 1.5.1 and listing all associated modules, dependencies, and configuration. This enables the Erlang runtime to properly recognize and manage the Luerl library as a standard application.
ebin · high confidence
Added luerl.hrl header file to the include directory
The luerl.hrl header file, containing all basic macros and records for Luerl (such as luerlstate, luerldata, and various internal record definitions), has been added to the include directory. This ensures the header is available for compilation and includes updated versioning and cleanup of the file structure.
include · high confidence
Moved legacy Luerl documentation to doc\_legacy
The legacy Luerl documentation, including man pages and source files for the main interface (luerl), the old interface (luerl\_old), and the sandbox interface (luerl\_sandbox), has been moved into the doc\_legacy directory. This change prevents collisions with the new ex\_doc-based documentation, ensuring that the older API references remain accessible in their original location.
_doc\legacy · high confidence
Updated hello examples to use the new Luerl API
The hello examples have been updated to use the new Luerl API, including the introduction of a Makefile for building and running the examples, and the addition of new example files (hello2, hello\_funcalls, hello\_sandbox, hello\_table, hello\_userdata) that demonstrate the updated interface for executing Lua code, handling function calls, sandboxing, table access, and userdata.
examples/hello · high confidence
Test coverage
Expanded test coverage for Luerl core and library functions
Added comprehensive test suites for the Luerl Erlang/OTP integration, including new test modules for function calls, return values, and the \os.date\ library. The changes introduce tests for encoding and decoding Lua values, handling variable arguments, managing private state, and verifying Unicode and table indexing behavior. Additionally, the suite now covers error propagation via \pcall\ and validates the \\_\_newindex\ metamethod, ensuring robustness across different time zones and external function interactions.
test · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 54 → 62 (+8.0)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 66 → 87 (+20.8)
- Architecture 100 → 100 (+0.0)
- Maturity 33 → 34 (+1.7)
- Readiness 78 → 78 (+0.0)
- Security 68 → 97 (+29.8)
- Event Sourcing 100 → 100 (+0.0)
Resolved (15)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Off-boarding risk: anonymized user #1
- Test reliability not included
- TooManyMethods: luerl_emul (src/luerl_emul.erl)
- TooManyMethods: luerl_lib_string (src/luerl_lib_string.erl)
- TooManyMethods: ttdict (src/ttdict.erl)
- complexity unreadable for .erl, .hrl — churn × complexity hotspots could not be measured
New (48)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
- Duplicated block (11 lines × 2) (src/luerl.erl)
- Duplicated block (12 lines × 2) (src/luerl.erl)
- Duplicated block (12 lines × 2) (src/luerl.erl)
- Duplicated block (12 lines × 2) (src/luerl.erl)
- Duplicated block (12 lines × 2) (src/luerl_comp_env.erl)
- Duplicated block (15 lines × 2) (src/luerl.erl)
- Duplicated block (5 lines × 2) (src/luerl_comp.erl)
- Duplicated block (5 lines × 2) (src/luerl_comp_env.erl)
- Duplicated block (5 lines × 2) (src/luerl_comp_env.erl)
- Duplicated block (5 lines × 2) (src/luerl_comp_vars.erl)
- Duplicated block (5 lines × 2) (src/luerl_emul.erl)
- Duplicated block (5 lines × 2) (src/luerl_heap.erl)
- Duplicated block (5 lines × 2) (src/luerl_lib_string.erl)
- Duplicated block (6 lines × 2) (src/luerl.erl)
- Duplicated block (6 lines × 2) (src/luerl_comp_cg.erl)
- Duplicated block (6 lines × 2) (src/luerl_emul.erl)
- Duplicated block (7 lines × 2) (src/luerl_comp_lint.erl)
- Duplicated block (7 lines × 2) (src/luerl_lib_table.erl)
- …and 28 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
rvirding/luerl was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 41f14bf01abaad9f84e9bb43203c5ab6b3f27e4c — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.