Alex Orlenko
49958f4827
Split Luau thread event callback to creation and collection callbacks.
...
We need this because they have different requirements:
- Thread creation callback can return Error or panic
- Thread collection callback runs during Luau GC cycle and cannot make any Lua calls or trigger panics.
2025-04-06 13:57:15 +01:00
Alex Orlenko
39b3af2ff2
Fix warnings when testing documentation
2025-04-05 23:44:25 +01:00
Alex Orlenko
b805939320
Make Lua::weak() method and WeakLua struct public.
...
This can be useful to prevent circular dependencies between Rust and Lua
or check that Lua instance is still alive.
2025-04-05 23:40:05 +01:00
Alex Orlenko
12e61e01f6
Restrict access to Luau VM from UserData destructors.
...
It's unsafe to make almost any Lua calls when userdata destructor is running.
This can cause recursive GC run and crash.
See https://github.com/luau-lang/luau/pull/510 for some details.
2025-04-05 10:31:39 +01:00
Alex Orlenko
53ff494ab9
Prepare for custom (Luau) userdata destructors.
...
We need to add logic later to prevent calling any Lua functions when UserData destructor is running.
2025-04-04 16:36:06 +01:00
Alex Orlenko
1cb081d20a
Do not propagate collect_garbage flag when clonning Lua
2025-04-04 10:58:08 +01:00
Alex Orlenko
c1a018a60d
Add AnyUserData::type_id method
2025-03-31 22:41:42 +01:00
Alex Orlenko
4d2ff45a8b
Update Lua::poll_pending doc (still hidden)
2025-03-31 22:26:47 +01:00
Alex Orlenko
87fa663ac1
Remove deprecated functions
2025-03-28 13:24:15 +00:00
Alex Orlenko
1f970824b4
Support user thread creation callback (Luau)
2025-03-28 11:51:35 +00:00
Alex Orlenko
8d864e2687
Reduce stack operations when creating userdata
2025-03-22 14:23:59 +00:00
Alex Orlenko
b0140cdb9e
Add Chunk::name(), Chunk::environment() and Chunk::mode() functions.
...
They can be used to retrieve existing chunk params.
2025-03-22 09:31:24 +00:00
Alex Orlenko
806817212e
Rename Lua::init_from_ptr to Lua::get_or_init_from_ptr.
...
Return reference to `&Lua` with unbound lifetime (chosen by user).
2025-03-21 21:28:30 +00:00
Alex Orlenko
95c623e94d
Use c string literal where appropriate
2025-03-21 15:57:15 +00:00
Alex Orlenko
0a1a1fe0b6
Move some userdata helpers from crate::util to crate::userdata::util
2025-03-21 15:13:53 +00:00
Alex Orlenko
4fe7d151a1
Refactor userdata-wrappers feature.
...
Support borrowing underlying data in `UserDataRef` and `UserDataRefMut`.
2025-03-21 14:19:38 +00:00
Alex Orlenko
edbf1e9150
Change Lua library name constants from &str to *const c_char.
...
It makes easier to pass them to Lua API functions.
2025-03-14 23:10:14 +00:00
Alex Orlenko
69011a89d2
Revert "Add initial pluto support"
...
This reverts commit 0ed11e4134 .
2025-03-14 22:59:06 +00:00
Alex Orlenko
0ed11e4134
Add initial pluto support
...
Pluto is a superset of Lua 5.4 with a focus on general-purpose programming.
`pluto` feature also enables `lua54` feature since they are compatible and share the same API.
2025-03-14 11:38:07 +00:00
Alex Orlenko
1ebb4b468a
Support 52-bit integers for Luau
...
Simply to float conversion (it actually never fails or goes out of range)
2025-03-13 16:18:44 +00:00
Alex Orlenko
5ab97666d7
Fix clippy warnings
2025-03-07 22:34:50 +00:00
Alex Orlenko
e706ae4fcb
Remove Roblox from references to Luau
...
Closes #537
2025-02-24 19:03:36 +00:00
Alex Orlenko
ae7cdcb934
Remove (internal) borrow counter and use instead "locked" flag and strong reference counter
2025-02-14 14:41:37 +00:00
Alex Orlenko
dacddfa967
Add Variadic to prelude
2025-02-14 12:08:57 +00:00
Alex Orlenko
18497f1528
Add library constants support for Luau compiler.
...
Add ability to specify compile-time constants for known library members.
2025-02-11 00:16:22 +00:00
Alex Orlenko
c1f8abba9e
Do not allow recursive warnings (Lua 5.4)
2025-02-09 15:08:52 +00:00
Alex Orlenko
d1a587f49a
Wrap hooks in refcounter instead of box, same as previously.
...
This allows to obtain independent clone of closure.
Ensure that stack is always clean when running thread hook.
2025-02-08 22:11:11 +00:00
Alex Orlenko
5bbd23ed1a
Fix hook tests
2025-02-08 11:51:38 +00:00
Alex Orlenko
74b4601b48
Rework Lua hooks:
...
- Support global hooks inherited by new threads
- Support thread hooks, where each thread can have its own hook
This should also allow to enable hooks for async calls.
Related to #489 #347
2025-02-07 22:42:17 +00:00
Joel Natividad
20f7ce097d
Fix typos ( #522 )
...
* fix various typos in the codebase
* fix typos in CHANGELOG.md
2025-02-05 16:16:20 +00:00
Alex Orlenko
fca38a6637
Imporove BorrowedStr/BorrowedBytes ergonomic.
...
Implement `FromLua` and `IntoLua` for these types to allow working with them directly.
2025-01-30 23:07:02 +00:00
Alex Orlenko
cdd6a99136
Support Thread::resume_error call (Luau)
...
This method uses Luau-specific C API extension `lua_resumerror`
that allow to throw an error immediately when resuming a thead.
Closes #500 #513
2025-01-28 22:57:26 +00:00
Alex Orlenko
21d39a069d
Pass &Scope instead of &mut Scope to Lua::scope closure.
...
It was a leftover from an experimental implementation that has been removed.
2025-01-28 18:23:18 +00:00
Alex Orlenko
58965c6255
Move lifetime from AsChunk<'a> to AsChunk::source
2025-01-28 18:17:29 +00:00
Alex Orlenko
8574682ffc
Improve From/Into Lua char conversion
2025-01-28 10:41:10 +00:00
tk
47bc372096
impl FromLua/IntoLua for char (#516 )
2025-01-28 10:10:28 +00:00
Alex Orlenko
d376cb9403
Enable Thread::reset() for all Lua versions
2025-01-28 10:08:16 +00:00
Alex Orlenko
ea5ecccf02
Change AsyncThread<A, R> to AsyncThread<R>.
...
Push arguments in `Thread::into_async()` to the thread during the call instead of first poll.
The pushed arguments will be automatically used on resume.
Fixes #508 and relates to #500 .
2025-01-28 10:08:08 +00:00
Radiant
b5d38ab2e3
Set Default for LuaValue to be nil. ( #512 )
2025-01-19 23:52:58 +00:00
Alex Orlenko
cd4091f64d
Allow exhaustive match on Value.
...
It was not possible because `ValueRef` variant in `Value::Other` was private.
Closes #502 and #503
2024-12-10 23:37:19 +00:00
Alex Orlenko
91e069a77e
Optimize (and simplify) protected mode for Rust function calls
2024-12-07 00:04:12 +00:00
Alex Orlenko
cacd3dc70f
Add Table::set_safeenv method (Luau)
2024-12-04 10:40:49 +00:00
Alex Orlenko
5fd96c7908
Don't run GC finalizers on ref thread.
...
If this happen then we don't have full access to the ref thread stack.
Fixes #491
2024-11-30 01:00:31 +00:00
Alex Orlenko
7a3f19b857
Ensure that buffer with Luau compiled code is always freed
2024-11-29 13:36:51 +00:00
Alex Orlenko
55a5d7ef10
Protect Lua(u) during chunk loading if memory limit is enforced
...
Relates to #488
2024-11-27 00:34:21 +00:00
Alex Orlenko
af31dbd180
Use c string literal in few places
2024-11-25 22:53:59 +00:00
Alex Orlenko
9ae3cb0a7c
Add doc about possible chunk name prefixes
2024-11-24 12:00:06 +00:00
Alex Orlenko
fc1c80c142
Mark Chunk::wrap as non-public
2024-11-22 20:03:17 +00:00
Alex Orlenko
ee7ced6334
Add Chunk::wrap method
2024-11-22 14:40:52 +00:00
Alex Orlenko
d8307d0e4c
Reduce visibility of Wrapped* structs
2024-11-22 13:08:57 +00:00