mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
Create function-newproxy-table-support
This commit is contained in:
parent
be52bd91e4
commit
563c05e48f
1 changed files with 25 additions and 0 deletions
25
rfcs/function-newproxy-table-support
Normal file
25
rfcs/function-newproxy-table-support
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# Support table as first argument to newproxy
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
Introduce a new way of creating `userdata` objects from Luau with an existing metatable.
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
Since Luau is derived from Lua 5.1 it retains the `newproxy` function used to create custom `userdata` objects from Lua. While this function is used by a number of libraries it has its limitations.
|
||||||
|
|
||||||
|
The `newproxy` function accepts a single, boolean parameter which specifies if the newly created `userdata` should be initialized with a metatable or not. If the `userdata` is initialized with a metatable then it can be retrieved and edited by calling `getmetatable`. Unfortunately, this means that a `userdata` created through `newproxy` cannot share a metatable with another `userdata`. There are two main implications of this:
|
||||||
|
- Memory - A `userdata` with a metatable has the same cost as a table with a metatable.
|
||||||
|
- Usability - `userdata` with the same 'type' do not have the same metatable.
|
||||||
|
|
||||||
|
## Design
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
## Drawbacks
|
||||||
|
|
||||||
|
TODO: It will increase the usage of newproxy which may not be desirable.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
|
||||||
|
TODO: New method entirely - add more support for userdata
|
Loading…
Add table
Reference in a new issue