mirror of
https://github.com/luau-lang/luau.git
synced 2024-12-13 21:40:43 +00:00
docs: Cleanup compiler wording
This commit is contained in:
parent
2d07039efd
commit
71b40ba34e
1 changed files with 3 additions and 1 deletions
|
@ -21,7 +21,9 @@ Of course the interpreter isn't typical C code - it uses many tricks to achieve
|
|||
|
||||
## Optimizing compiler
|
||||
|
||||
Unlike Lua and LuaJIT, Luau uses a more classical compiler construction with a frontend that parses source into an AST and a backend that generates bytecode from it. This carries a small penalty in terms of compilation time, but results in more flexible code and, crucially, makes it easier to optimize the generated bytecode.
|
||||
Unlike Lua and LuaJIT, Luau uses a multi-pass compiler with a frontend that parses source into an AST and a backend that generates bytecode from it. This carries a small penalty in terms of compilation time, but results in more flexible code and, crucially, makes it easier to optimize the generated bytecode.
|
||||
|
||||
> Note: Compilation throughput isn't the main focus in Luau, but our compiler is reasonably fast; with all currently implemented optimizations enabled, it compiles 400K lines of Luau code in 0.5 seconds on a single core of a desktop Core i7 CPU.
|
||||
|
||||
While bytecode optimizations are limited due to the flexibility of Luau code (e.g. `a * 1` may not be equivalent to `a` if `*` is overloaded through metatables), even in absence of type information Luau compiler can perform some optimizations such as "deep" constant folding across functions and local variables, perform upvalue optimizations for upvalues that aren't mutated, do analysis of builtin function usage, and some peephole optimizations on the resulting bytecode. In the future we plan to do bytecode-level inlining and possibly other code transformation.
|
||||
|
||||
|
|
Loading…
Reference in a new issue