Skip to content

Commit

Permalink
Update compatibility.md
Browse files Browse the repository at this point in the history
Add a note on light C functions that Lua 5.2 added; suggested by #512.
  • Loading branch information
zeux authored Jun 1, 2022
1 parent 61766a6 commit 10ed024
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions docs/_pages/compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Sandboxing challenges are [covered in the dedicated section](sandbox).
| `\0` in patterns | ✔️ | |
| `bit32` library | ✔️ | |
| `string.gsub` is stricter about using `%` on special characters only | ✔️ | |
| light C functions | 😞 | this changes semantics of fenv on C functions and has complex implications wrt runtime performance |

Two things that are important to call out here are various new metamethods for tables and yielding in metamethods. In both cases, there are performance implications to supporting this - our implementation is *very* highly tuned for performance, so any changes that affect the core fundamentals of how Lua works have a price. To support yielding in metamethods we'd need to make the core of the VM more involved, since almost every single "interesting" opcode would need to learn how to be resumable - which also complicates future JIT/AOT story. Metamethods in general are important for extensibility, but very challenging to deal with in implementation, so we err on the side of not supporting any new metamethods unless a strong need arises.

Expand Down

0 comments on commit 10ed024

Please sign in to comment.