Age | Commit message (Collapse) | Author |
|
|
|
For WaitQueue, nail down the mechanism for declaring a subclass and for
calling a base-class method from a subclass override. Break out new
_wake_waiters() method from Enqueue(): we need to do the same from close(), in
case there are waiting consumers. Also, in Lua, 0 is not false.
Instead of bundling a normal/error flag with every queued value, make
ErrorQueue overload its _closed attribute. Once you call ErrorQueue:Error(),
every subsequent Dequeue() call by any consumer will re-raise the same error.
util.count() literally counts entries in a table, since #t is documented to be
unreliable. (If you create a list with 5 entries and delete the middle one, #t
might return 2 or it might return 5, but it won't return 4.)
util.join() fixes a curious omission from Luau's string library: like Python's
str.join(), it concatenates all the strings from a list with an optional
separator. We assume that incrementally building a list of strings and then
doing a single allocation for the desired result string is cheaper than
reallocating each of a sequence of partial concatenated results.
Add qtest test that posts individual items to a WaitQueue, waking waiting
consumers to retrieve the next available result. Add test proving that calling
ErrorQueue:Error() propagates the error to all consumers.
|
|
Also qtest.lua to exercise the queue classes and inspect.lua (from
https://github.com/kikito/inspect.lua) for debugging.
|
|
This is an unusual use case in which lua_tollsd() is called by C++ code
without the Lua runtime farther up the call stack.
|
|
The build step no longer needs these variables at all: they're used in a
subsequent workflow job.
|
|
From https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#using-secrets-in-a-workflow :
"Secrets cannot be directly referenced in if: conditionals. Instead, consider
setting secrets as job-level environment variables, then referencing the
environment variables to conditionally run steps in the job."
|
|
The previous construct produced:
Unrecognized named-value: 'secrets'. Located at position 1 within expression:
secrets.AZURE_KEY_VAULT_URI && ...
|
|
Specifically, when secrets aren't available (e.g. for external PRs), skip the
affected steps.
|
|
Issue #54 LLRender::init crash and SL-17896
|
|
Mark issues as stale but do not close them.
|
|
|
|
Under debug LL_ERRS will show a message as well, but release won't show
anything and will quit silently so show a notification when applicable.
|
|
|
|
correct erms..."
This reverts commit 60debe828b87c33fdbd33e3a5fcef423e544fe55.
|
|
|
|
instead of the branch that got pulled.
(cherry picked from commit b42e01d7acf5d4c55612c3a7df0e1ff6ee5ed951)
|
|
instead of on the current tag 7.1.2-release.
(cherry picked from commit 27b298d8bc720ff315c8e74cc5bff9ff9ead0552)
|
|
This should (!) allow us to generate full release notes relative to the
previous viewer release, instead of letting action-gh-release guess
incorrectly.
Also try again to add to the release page a back-link to the specific build.
(cherry picked from commit 88ebb92f05dade00cc8fc519cc062a458ecd48f2)
|
|
(cherry picked from commit 4edd78f2e54b3cd2e0b0a4b9300dfc669231dd98)
|
|
Using github.ref as action-gh-release's target_commitish produces:
⚠️ GitHub release failed with status: 422
[{"resource":"Release","code":"invalid","field":"target_commitish"}]
(cherry picked from commit c6a6db8488a8b3e7ea6534fbf5e2fe2b17864421)
|
|
Also try to cross-reference release page and build page.
(cherry picked from commit a908b4cfa98716d4a838fc1e5a6789faa15d16cf)
|
|
Put whatever release notes we retrieve into the generated release page.
(cherry picked from commit ff543b744ee0b0fd4dd90b46419ae50a570572ab)
|
|
Now that which_branch.py has moved to viewer-build-util, so has the PyGithub
dependency.
(cherry picked from commit dd0ec112fe5ded8ed5f69b72b3df26343ca12d35)
|
|
which_branch.py has moved to viewer-build-util as a reusable action.
(cherry picked from commit 09f66828ba573515c3766cce32f4746b8189efcf)
|
|
(cherry picked from commit 2c5066f1fcc0c9f145698ef3aaec72d27bce7181)
(cherry picked from commit ff1741cecae0fac6d94507fa4a6e4662219af707)
|
|
in viewer's autobuild-package.xml.
Ensure that AUTOBUILD_VCS_BRANCH is set before the build.
(cherry picked from commit b782ab73e640e434e4ed67fa8dfc951f09757585)
(cherry picked from commit 6e8d4f48466a5bbad2fcc27bc2877a30e575d4ce)
|
|
The release job has been dependent on sign-and-package-windows and
sign-and-package-mac, each of which depends on build. But that indirect
dependency doesn't convey access to ${{ needs.build.outputs.xxx }}. Add the
build job to direct dependencies so release can access its outputs.
(cherry picked from commit 819604d2cee6d4527cc436bebfacddf8642635ff)
|
|
(cherry picked from commit 6654ad14eed674e894d2903e0f2ea37c4e806c0f)
|
|
(cherry picked from commit 59eeaed1187e7592fd83380045916f2d8b9d58e7)
|
|
For a tag build that generates a release page, try to deduce the git branch to
which the tag we're building corresponds and add that to release notes.
(cherry picked from commit 9e99bb04a32f2ecc0f0b99686ce5a7adb356596d)
|
|
(cherry picked from commit f71662225eadf1589f5331e763e02e0bb1b72137)
|
|
|
|
|
|
emoji release -> maint yz merge
|
|
|
|
# Conflicts:
# indra/newview/llinventorygallery.cpp
|
|
|
|
following promotion of secondlife/viewer #673
|
|
|
|
Refactor `require()` to make it easier to reason about Lua stack usage.
|
|
Add Queue.lua from roblox.com documentation.
|
|
|
|
|
|
|
|
The code to save the loaded module was using the wrong key.
|
|
|
|
Push throwing Lua errors down into LLRequireResolver::findModule() and
findModuleImpl() so their callers don't have to handle the error case. That
eliminates finishrequire().
require() itself now only retrieves (and pops) the passed module name and
calls LLRequireResolver::resolveRequire() to do the actual work.
resolveRequire() is now void. It only instantiates LLRequireResolver and calls
its findModule().
findModule() is now also void. It's guaranteed to either push the loaded Lua
module or throw a Lua error. In particular, when findPathImpl() cannot find
the specified module, findModule() throws an error. That replaces
ModuleStatus::NotFound.
Since std::filesystem::path::append() aka operator/() detects when its right
operand is absolute and, in that case, discards the left operand, we no longer
need resolveAndStoreDefaultPaths(): we can just invoke that operation inline.
When findModule() pushes _MODULES on the Lua stack, it uses LuaRemover (below)
to ensure that _MODULES is removed again no matter how findModules() exits.
findModuleImpl() now accepts the candidate pathname as its argument. That
eliminates mAbsolutePath.
findModuleImpl() now returns only bool: true means the module was found and
loaded and pushed on the Lua stack, false means not found and nothing was
pushed; no return means an error was reported.
Push running a newly found module's source file down into findModuleImpl().
That eliminates the distinction between Cached and FileRead, which obviates
ModuleStatus: a bool return means either "previously cached" or "we read it,
compiled it, loaded it and ran it." That also eliminates the need to store the
module's textual content in mSourceCode.
Similarly, once loading the module succeeds, findModuleImpl() caches it in
_MODULES right away. That eliminates ResolvedRequire since we need not pass
the full pathname of the found module (or its contents) back up through the
call chain.
Move require() code that runs the new module into private runModule() method,
called by findModuleImpl() in the not-cached case. runModule() is the only
remaining method that can push either a string error message or the desired
module, because of its funny stack manipulations. That means the check for a
string error message on the stack top can move down to findModuleImpl().
Add LuaRemover class to ensure that on exit from some particular C++ block,
the specified Lua stack entry will definitely be removed. This is different
from LuaPopper in that it engages lua_remove() rather than lua_pop().
Also ditch obsolete await_event() Lua entry point.
|
|
Disable copy assignment operator as well as copy constructor.
Use std::uncaught_exceptions() in destructor to report whether there's an
in-flight exception at block exit. Since that was the whole point of the
DEBUGIN / DEBUGEND macros, those become obsolete. Ditch them and their
existing invocations.
|
|
instead of the branch that got pulled.
|
|
|