aboutsummaryrefslogtreecommitdiff
path: root/tests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Minor tweaksv3.16.1Benoit Germain2023-08-162-3/+1
|
* Update deadlock.luaBenoit Germain2022-02-071-0/+2
|
* fix require() wrapper to return all values returned by original require()Benoit Germain2021-09-221-2/+6
|
* fixed some testsBenoit Germain2021-06-283-4/+6
|
* changed lanes.threads() output so that several lanes with the same name ↵Benoit Germain2021-06-161-0/+72
| | | | | | don't clobber each other in the result table In the original implementations, the debug name was used as key, which meant that several lanes using the same name would cause only the oldest non-collected one to be listed in the results. Now the result is an array of tuples.
* Create manual_register.luaBenoit Germain2019-12-131-0/+35
| | | | New test sample to demonstrate on_state_create and manual function registration.
* Lane cancellation reworkBenoit Germain2019-04-264-67/+139
| | | | | opt.cancelstep is gone, hook is installed by lane:cancel() if requested lane:cancel() rework (see doc)
* lane:cancel internal code refactorizationBenoit Germain2019-04-191-56/+56
|
* don't test __lanesignore for POD types (-> slightly faster when trasnfering ↵Benoit Germain2018-11-301-2/+1
| | | | | | lots of data) + more code refactoring
* Lua 5.4 supportBenoit Germain2018-11-271-1/+1
|
* test script tweaksBenoit Germain2018-11-232-7/+18
|
* Raise an error instead of crashing when attempting to transfer a non-deep ↵Benoit Germain2018-11-231-3/+6
| | | | full userdata
* Create lanes_as_upvalue.luaBenoit Germain2018-11-211-0/+8
|
* Internal code tweaksBenoit Germain2018-11-191-0/+6
| | | | | | * Registry access code utility macros * CONFIG_REGKEY and LOOKUP_REGKEY are now lightuserdata instead of strings * Stack checking debug macros improvements
* Improved deadlock bug test scriptBenoit Germain2018-11-081-10/+19
|
* Make sure any linda operation that can raise an error won't ever leave a ↵Benoit Germain2018-11-081-0/+28
| | | | mutex unreleased
* New test protect_allocatorBenoit Germain2018-10-311-0/+50
|
* Fix protectproxy.luaBenoit Germain2018-10-301-2/+1
|
* Table transfer improvementsBenoit Germain2017-06-051-6/+7
| | | | | | | | * new API function lanes.register( "name", module) to manually register a module table after it was required * Transfering registered module tables will link the equivalent in the destination state instead of cloning it * bumped version to 3.11
* Add test for table caching in basic.luaBenoit Germain2017-05-161-0/+8
| | | | | When transfering a table through multiple references, the transfer result should preserve reference equality.
* Fix package test for Lua 5.2 and Lua 5.3mpeterv2015-02-251-8/+10
| | | | Starting from Lua 5.2, package.loaders is renamed as package.searchers.
* Multiverse compatibilityBenoit Germain2014-02-262-2/+2
| | | | | | | | | | | | | | | * bumped version to 3.9.2 * Internal rework: the whole Lanes engine now works "per universe" to allow concurrent Lanes execution in more than one embedded master state * this universe is a full userdata created in the master state, selfdestruct_gc is the __gc for this userdata * most of what was initialized only once is now per-universe * Fixed potential crashes at desinit if problems occur during keeper states initialisation * Fixed require() not always serialized properly * Raise an error instead of crashing on deep userdata prelude memory allocation failure * Added forgotten mutex desinitialisation at universe shutdown
* lindas can have a group for keeper state assignation controlBenoit Germain2014-02-171-2/+2
|
* more fixes/tweaks about cancelled lindasBenoit Germain2014-02-132-2/+32
| | | | | | | | | | * bumped version to 3.8.5 * linda:limit() returns lanes.cancel_error on a limited linda * lanes.genlock() and lanes.genatomic() support cancelled lindas by returning lanes.cancel_error whenever appropriate * fixed a possible Lua stack overflow when calling linda:dump() * fixed cases where linda:send() and linda:receive() would not return lanes.cancel_error when they should
* new API linda:cancel("read"|"write"|"both"|"none")Benoit Germain2014-02-101-2/+17
| | | | | | | * bumped version to 3.8.4 * all linda operations return lanes.cancel_error on a cancelled linda * raised an internal string length so that longer linda names are fully output before truncation applies when doing tostring( linda)
* 2 crash fixes and 1 experimentBenoit Germain2014-01-221-0/+1
| | | | | | | | | | * bumped version to 3.8.3 * fixed a possible Lua stack overflow when sending complex function through lindas or as lane body * experimental: lanes.nameof() scans the registry if a regular search didn't yield anything interesting * fixed lanes.nameof() misbehaving when encountering a LUA_TTHREAD object
* new lane launcher option gc_cbBenoit Germain2014-01-221-10/+26
| | | | | | | | * bumped version to 3.8.2 * new lane launcher option gc_cb to set a callback that is invoked when a lane is garbage collected * Fix more invalid memory accesses when fetching the name of a joined lane with lanes:threads() (because its lua_State is closed)
* linda performance improvementBenoit Germain2014-01-201-76/+54
| | | | | slightly improve linda performance when the producer/consumer scenario leaves leave the key empty
* Turn potential malicious-crafted code crashes into normal Lua errorsBenoit Germain2014-01-201-2/+7
| | | | | | | | | | | | | * bump version to 3.8.1 * new function lane:get_debug_threadname() * Fix invalid memory accesses when fetching the name of a joined lane with lanes:threads() (because its lua_State is closed) * use luaL_newmetatable() to create the metatable for lane objects * prevent malicious code from crashing by calling lane methods without passing the lane as first argument (raise an error instead) * set_debug_threadname() is no longer registered in the function lookup databases because it holds a C pointer as upvalue and it might crash if used maliciously
* Cancellation improvements and some fixesBenoit Germain2014-01-163-13/+105
| | | | | | | | | | | | | | | * bumped version to 3.7.8 * lane:cancel() now accepts a boolean second argument when soft cancelling (negative timeout) to wake the thread if necessary * if a blocked linda send() or receive() call is interrupted by a cancellation request, it returns CANCEL_ERROR so that this case can be differentiated from a simple timeout * fixed WIN32 THREAD_CREATE() wrong _beginthreadex() error detection * fatal WIN32 threading errors retrieve and output the error description string with FormatMessage() * fixed missing lanes.set_singlethreaded * fixed perftest.lua * added test/cancel.lua
* errors inside finalizers generate a full stack just like any other errorBenoit Germain2013-10-221-3/+2
|
* version 3.7.0Benoit Germain2013-10-113-8/+9
| | | | | | | | | | | | * fix lanes.threads() not being available in a lane where lanes.configure() settings didn't contain track_lanes although the initial configure() call did. * require "lanes".configure() sequence is only necessary at the first require "lanes". * fix a crash at application shutdown where in some situations we could deinitialize the protected allocator mutex while a lane was still using it. * fix timers broken by change 69
* Update fibonacci.luaBenoit Germain2013-10-031-8/+8
| | | | Fix issue #61. Pulling lanes as an upvalue is not a good idea after all, due to the fact that lanes.core changes its public API when lanes.core.configure() is called.
* version 3.6.3v3.6.3Benoit Germain2013-08-133-6/+13
| | | | | | | | * lane:cancel(<negative-timeout>) only causes cancel_test() to return true but won't interrupt execution of the lane during linda operations * more explicit errors when trying to transfer unknown source functions (with new configure option verbose_errors) * default options wrap allocator around a mutex when run by LuaJIT
* version 3.5.0Benoit Germain2013-01-304-5/+60
| | | | | | | | | | | | | | * new: API lanes.require(), use it instead of regular require() for modules that export C functions you need to send over. * new: lanes no longer require 'lanes.core' by default in every created state. Use {required={"lanes.core"}} if you need to transfer lanes functions. * internal: because of the above, reworked the timer implementation to remove upvalue-dependency on lanes.core * new: API lanes.timer_lane, to be able to operate on timer lane if need be * improved: if a module is a full userdata, scan its metatable for function database population * improved: on_state_create can be a Lua function * changed: on_state_create is called after the base libraries are loaded * package[loaders|searchers] is no longer transfered as function naming depends on slot order * internal: changed separator from '.' to '/' in lookup databases to be able to distinguish search levels and dot coming from module names * added some mode debug spew * updated tests to reflect the above changes
* version 3.4.4v3.4.4Benoit Germain2013-01-261-18/+71
| | | | | | | | * bugfix: take into account the fact that "coroutine" is no longer part of base library in Lua 5.2 * bugfix: if "bit32" was listed in the libraries, it wouldn't open (library list parsing failing on digits) * bugfix: Use luaL_requiref() to open standard libraries in Lua 5.2 as we should * bugfix: any Lua state created by Lanes reuses the allocator function of the originating state * bugfix: don't call on_state_create() while GC is suspended during lua state initialization
* version 3.4.3v3.4.3Benoit Germain2013-01-243-15/+31
| | | | | | | | | | | * raise an error if lane generator libs specification contains a lib more than once * bit32 is a valid lib name in the libs specification (silently ignored by the Lua 5.1 build) * improved lanes.nameof to search inside table- and userdata- metatables for an object's name * fixed an unwarranted error when trying to discover a function name upon a failed transfer * contents of package.[path,cpath,preload,loaders|searchers] are pulled *only once* inside keeper states at initialisation * Lua function upvalues equal to the global environment aren't copied by value, but bound to the destination's global environment especially useful for Lua 5.2 _ENV * fixed loading of base libraries that didn't create the global tables when built for Lua 5.2
* Create rupval.luaBenoit Germain2013-01-101-0/+25
|
* Update tests/basic.luaBenoit Germain2012-12-171-0/+1
|
* Update tests/timer.luaBenoit Germain2012-12-171-0/+9
|
* version 3.4.0Benoit Germain2012-09-269-22/+84
| | | | | | | | | | * new method linda:dump() that outputs the full contents of a linda as a table, also linked to __towatch for Decoda support * linda:receive() API change! * instead of [val, key], linda:receive( timeout, key) returns [key, val] * instead of [val, [...]], linda:receive( timeout, linda.batched key) returns [key, val[, ...]] this is to unify the return values of regular and batched mode, and to be able to tell when batched mode is interrupted by a lane cancellation * fixed Lua 5.2 build to take into account the "loaders"->"searchers" name change in 'package' module. * a bit of html cleanup and added some infos in the documentation regarding the Lanes internals
* version 3.3.0Benoit Germain2012-09-102-3/+5
| | | | | | | | | | | | * lane.status can return "killed" if lane was forcefully killed with lanes:cancel() * lane:join(): return nil, "killed" if called on a killed lane. * lane[<n>]: produces [1] = nil, [2] = "killed" if the lane was killed * lane:join(): fixed an assertion in debug builds when joining a lane forcefully cancelled with lane:cancel( <x>, true). * indexing a lane with a string other than "join", "cancel" or "status" raises an error. * fixed configure() to correctly apply defaults when they are missing from the provided settings * added a shutdown_timeout to control the duration Lanes will wait for graceful termination of running lanes at application shutdown. Default is 0.25. Among other things, fixes issue #31.
* * fixed 'require' test scriptBenoit Germain2012-06-271-2/+2
|
* Merge pull request #17 from LuaDist/550dd55b0e571577a4ca6ccc880738f1268adb57benoit-germain2012-04-241-1/+1
|\ | | | | merge commits from steve
| * assert() throws because result is too large to be an integersteve donovan2011-03-161-1/+1
| |
* | * changed lanes.configure signature to receive a table instead of individual ↵Benoit Germain2012-02-1823-23/+23
| | | | | | | | | | | | parameters * added support for an on_state_create callback called to load custom functions in a state in addition to the base libraries
* | * process exit change: close everything at GC when main state closes, not ↵Benoit Germain2011-11-0524-29/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | when atexit() handlers are processed * Lua 5.2-style module: * module() is no longer used to implement lanes.lua * a global "lanes" variable is no longer created when the module is required * the Lanes module table is returned instead * Lanes must be initialized before used: * the first occurence of 'require "lanes"' produces a minimal interface that only contains a configure() function * the remainder of the interface is made available once this function is called * subsequent calls to configure() do nothing * configure() controls the number of keeper states and the startup of timers * LuaJIT 2 compatibility * non-Lua functions are no longer copied by creating a C closure from a C pointer, but through 2-way lookup tables * this means that if a lane function body pulls non-Lua functions, the lane generator description must contain the list of libraries and modules that exports them * introduces a change in configuration .globals management: contents are copied *after* std libs are loaded * new .required configuration entry to list modules that must be require()'ed before lane body is transferred * lane:cancel() wakes up waiting lindas like what is done at lane shutdown
* | * linda uses a fast FIFO implementation to speed up data exchangesBenoit Germain2011-04-181-0/+223
|/ | | | | | | | * new linda:count() method * new linda batched data read mode * proper key type check in all linda methods * fix setup-vc.cmd to support Visual Studio 2010 and Windows 7 64 bits * bugfix: release keeper state mutex at desinit
* * fixed potential crash at application shutdown when calling lua_close() on ↵Benoit Germain2011-03-011-0/+45
| | | | | | | a killed thread's VM. * exposed cancel_test() in the lanes to enable manual testing for cancellation requests. * removed kludgy {globals={threadName}} support, replaced with a new function set_debug_threadname().
* Lane userdata implementation refactoring:Benoit Germain2011-02-175-14/+43
| | | | | | | | | | | | | | | - Refactor lane proxy implementation: it is now a full userdata instead of a table, and its methods are implemented in C instead of Lua. * its metatable is no longer accessible. * writing to the proxy raises an error. * it is no longer possible to overwrite its join() and cancel() methods - when a deep userdata idfunc requests a module to be required, manually check that it is not loaded before requiring it instead of relying on the require function's loop detection feature. - when a module must be required, raise an error if the 'require' function is not found in the target state. - we know Lanes is loaded in the master state, so we don't force it to be required in every lane too when a linda deep userdata is copied.