summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-02-09Make LLFloaterLUADebug store a persistent LuaState.Nat Goodspeed
That means that as you use the floater, variables that you assign and functions that you define are available to subsequent Lua chunks.
2024-02-09Merge pull request #22 from secondlife/implicit-printnat-goodspeed
When an LLFloaterLUADebug script returns a value, display the value.
2024-02-09Merge branch 'implicit-print' of viewer-private into implicit-printNat Goodspeed
2024-02-09Change the LuaFunction subclass instance name suffix to _lua.Nat Goodspeed
We add a suffix to let us publish a Lua foo() function that wraps a C++ foo() function. Of course the lua_CFunction must accept lua_State* and extract its parameters from the Lua stack, so it must invoke different C++ code than the C++ foo() function it's trying to reach. So the lua_CFunction is a method of the LuaFunction subclass instance named foo_lua. The suffix was _luadecl, but since the class name shows up in log messages, make it the more streamlined _lua instead.
2024-02-09When LLFloaterLUADebug script returns a value, display the value.Nat Goodspeed
The chunk: return 1, 2, {} differs in two ways from: print(1, 2, {}) First, print() engages the Lua tostring() builtin, so it displays values as Lua sees them. (For a table, tostring() displays "table: hex", which isn't so wonderful.) But LLFloaterLUADebug serializes the LLSD converted from the Lua return values. Second, we've overridden print() to engage a function that writes to the viewer log as well as displaying to LLFloaterLUADebug. (As we go forward, most Lua scripts won't be run manually by LLFloaterLUADebug.) The values returned by a Lua chunk aren't implicitly logged. Each C++ caller wanting to evaluate a Lua expression can choose whether to log the results.
2024-02-09Update luau lib linksMnikolenko Productengine
2024-02-08Merge pull request #21 from secondlife/lua_functionnat-goodspeed
Break out lua_function.h to enable decentralizing Lua entry points to C++.
2024-02-08Add required helptext parameter to lua_function() macro.Nat Goodspeed
Extend the LuaFunction::Registry map to store helptext as well as the function pointer. Add help text to every existing lua_function() invocation.
2024-02-08Align forward declaration of lua_State with official declaration.Nat Goodspeed
2024-02-08Defend lluau::error() from platform-specific diagnostics.Nat Goodspeed
macOS clang produces fatal warnings when trying to pass a const char* parameter to luaL_error() (-Wformat-security). Temporarily suppressing that requires #pragma clang directives which, in turn, produce fatal warnings in VS. Moreover, VS recognizes that luaL_error() never returns, and so diagnoses the following return statement as unreachable code. But that return statement is the whole reason for lluau::error()'s existence...
2024-02-08Updated llgltfmaterial_test.cpp sizeof check.Nat Goodspeed
2024-02-08Another missing #include.Nat Goodspeed
2024-02-07Fix tests broken by switching from Lua 5.4 to Luau.Nat Goodspeed
Add a new test<1>() that tests returning values from a Lua chunk using LLLUAmanager::waitScriptLine(). This exercises lua_tollsd() without yet involving LLEventPump machinery. For that purpose, extract from test<2>() the sequence of (description, expression, LLSD expected) triples into a static C array. The new test<1>() returns each such expression as a result; test<2>() posts each such expression to a test LLEventPump. test<2>() now uses waitScriptLine() instead of pumping the coroutine scheduler a few times and hoping. The pump-and-hope tactic worked before, but no longer does. waitScriptLine() is more robust anyway. Move the former test<1>() to test<3>() because it exercises still more machinery, specifically listen_events() and await_event(). Because this test involves a handshake with C++ code, use startScriptLine() to launch the Lua coroutine while providing a definite way to wait for completion later. Again, startScriptLine() followed by get() on the returned future is more robust than the previous pump-and-hope code. Similarly, the former test<3>(), now renamed test<4>(), uses startScriptLine() and Future::get() instead of pump-and-hope.
2024-02-07Add LLLUAmanager::startScriptFile(), startScriptLine() functions.Nat Goodspeed
Break out for LLLUAmanager consumers the promise/future semantics of waitScriptFile() and waitScriptLine(). startScriptMumble() uses runScriptMumble() to launch a coroutine to run the specified Lua script or chunk, providing an internal adapter callback to set a promise on completion. It then returns to its caller the future obtained from that promise. This allows a caller to call startScriptMumble(), run in parallel with the Lua coroutine for a while and then call get() on the returned future to wait for results. waitScriptMumble() is then trivially implemented using startScriptMumble(). Fix runScriptLine()'s logic to abbreviate the passed Lua chunk for use as the description. We were erroneously assigning back through a string_view of the parameter, which overwrote a temporary string in the argument list. With Lua 5.4, listen_events() tried to discover the main "thread" (Lua coroutine) associated with the current lua_State so we could call async callbacks on that thread. Luau doesn't seem to provide that feature, so run callbacks on whichever thread calls listen_events(). Reinstate original multi-argument lua_print_msg(), tweaked to avoid the Lua 5.4 lua_rotate() function, which is missing from Luau.
2024-02-07Fix lluau::dostring() for return values.Nat Goodspeed
We were calling lua_pcall() in such a way as to discard any values returned by the Lua chunk. Work around Luau's broken lua_tointegerx(), which unlike vanilla Lua's does not report whether the value at the specified index is or is not an integer.
2024-02-07Fix up a few longstanding missing #includes.Nat Goodspeed
2024-02-07Merge pull request #757 from secondlife/signal/ymlSignal Linden
Rename ISSUE_TEMPLATE/config.yaml to config.yml
2024-02-07Rename config.yaml to config.ymlSignal Linden
Issue template configuration is the only github configuration file I've found which does not support both `*.yaml` and `*.yml` extensions. Drat.
2024-02-07Merge pull request #738 from secondlife/signal/feedback-linkVir Linden
Add link to feedback portal
2024-02-07Add machinery to capture result of running a Lua script or snippet.Nat Goodspeed
Add LuaState::expr() that evaluates a Lua snippet and reports back any result (or error) left on the stack. Add LLLUAmanager::runScriptFile() and runScriptLine() overloads that accept a callback with an (int count, LLSD result) signature. The count disambiguates (error, no result, one result, array of results). Also add overloads that accept an existing LuaState instance. Also add waitScriptFile() and waitScriptLine() methods that pause the calling coroutine until the Lua script completes, and return its results. Instead of giving LuaState a description to use for all subsequent checkLua() calls, remove description from its constructor and data members. Move to expr() and checkLua() parameters: we want a description specific to each operation, rather than for the LuaState as a whole. This prepares for persistent LuaState instances. For now, the existing script_finished_fn semantics remain: the callback will be called only when the LuaState is destroyed. This may need to change as we migrate towards longer-lasting LuaState instances. Make lua_function(name) macro append suffixes to the name for both the LuaFunction subclass declaration and the instance declaration. This allows publishing a lua_function() name such as sleep(), which already has a different C++ declaration. Move the Lua sleep() entry point to a standalone lua_function(sleep), instead of a lambda in the body of runScriptFile().
2024-02-06Break out lua_function.h,.cpp and lualistener.h,.cpp.Nat Goodspeed
The intention is to decentralize Luau entry points into our C++ code, permitting a given entry point to be added to the .cpp file that already deals with that class or functional area. Continuing to add every such entry point to llluamanager.cpp doesn't scale well. Extract LuaListener class from llluamanager.cpp to its own header and .cpp file. Extract from llluamanager into lua_function.h (and .cpp) declarations useful for adding a lua_function Luau entry point, e.g.: lua_register() lua_rawlen() lua_tostdstring() lua_pushstdstring() lua_tollsd() lua_pushllsd() LuaPopper lua_function() and LuaFunction class LuaState lua_what lua_stack DebugExit
2024-02-05Add link to feedback portalSignal Linden
Provide a link to feedback.secondlife.com from the issue creation page.
2024-02-01Merge pull request #702 from secondlife/signal/reduce-buildsVir Linden
build.yaml: Build shared branches
2024-01-31build.yaml: Build shared branchesBennett Goble
We're currently building every single commit pushed to Github. This is racking up $20k in build charges a month and is generally superfluous. This changeset alters build triggers so that builds automatically run if they are committed to a **shared branch**: - `release/*` - A release stabilization branch - `project/*` - A project viewer branch - `main/*` - The default/stable branch PR commits are also automatically built. ...need to build another commit? Developers can trigger one using a manual workflow run.
2024-01-31Merge branch DRTVWR-589-luau into luau-scriptingMaxim Nikolenko
LuaU scripting project
2024-01-31strip lua testing functionsMnikolenko Productengine
2024-01-30Merge pull request #692 from secondlife/vir-linden-issue-templates-1Vir Linden
Update enhancement.md
2024-01-29DRTVWR-589: get rid of pragma and update windows libsMnikolenko Productengine
2024-01-29Merge pull request #693 from secondlife/vir-linden-issue-templatesVir Linden
Update bug.yaml
2024-01-29Update enhancement.mdVir Linden
2024-01-29Update bug.yamlVir Linden
2024-01-29Merge pull request #688 from secondlife/signal/contributorsVir Linden
Add a basic CONTRIBUTING.md
2024-01-29Merge pull request #666 from secondlife/issue_templatesVir Linden
Issue templates
2024-01-29DRTVWR-589: add mac luau libsMaxim Nikolenko
2024-01-26Add a basic CONTRIBUTING.mdBennett Goble
Provide basic instructions in-repository for contributing to Second Life.
2024-01-26DRTVWR-589: update to start using Luau libsMnikolenko Productengine
2024-01-24Create enhancement.mdRunitaiLinden
2024-01-24Create bug.yamlRunitaiLinden
2024-01-12Move "team:viewer" label action to labeler.yaml.Nat Goodspeed
This avoids the need for a separate job step.
2024-01-12Fold PR labeling into existing label.yaml.Nat Goodspeed
2024-01-12Grant write permission for pull requests.Nat Goodspeed
2024-01-12Add a workflow to auto-label new PRs with team:viewer.Nat Goodspeed
When a PR appears on the QA board, QA wants to know whose team it came from. So every PR on the viewer repo should be labeled with team:viewer.
2024-01-09DRTVWR-589: Merge branch 'DRTVWR-589' of into DRTVWR-589-plus-D596Nat Goodspeed
2024-01-09Merge pull request #13 from secondlife/DRTVWR-589-alt-fixnat-goodspeed
DRTVWR-589: Fix build errors resulting from merge with main.
2024-01-08DRTVWR-589: Merge branch 'main' into DRTVWR-589.Nat Goodspeed
2024-01-08DRTVWR-589: Fix build errors resulting from merge with main.Nat Goodspeed
LLDispatchListener::getPumpName() went away when LLEventStream became one of its base classes. The assumption was that LLEventStream::getName() would suffice. Re-add getPumpName(), forwarding to getName(), for backwards compatibility.
2024-01-08Increment viewer version to 7.1.3Nat Goodspeed
following promotion of DRTVWR-596
2024-01-05DRTVWR-589: Post-merge fixMnikolenko Productengine
2024-01-04DRTVWR-589: Merge branch 'main' into DRTVWR-589Nat Goodspeed
2023-12-14Merge branch 'DRTVWR-601' of github.com:secondlife/viewer into DRTVWR-601RunitaiLinden