aboutsummaryrefslogtreecommitdiff
path: root/tests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* Fixed application hang-up because keeper state was not released in case of ↵Benoit Germain2011-02-143-7/+22
| | | | errors thrown by inter-state data copy for unsupported types
* Changed idfunc signature and contract to clarify that fact it is not ↵Benoit Germain2011-02-121-12/+5
| | | | lua-callable and to be able to require the module it was exported from in the target lanes.
* Take all code from Asko Kauppi's SVN server, and push it here so that the ↵Benoit Germain2011-01-043-26/+96
| | | | | | | | | | | | github repository becomes the official Lanes source codebase. Note that Asko's SVN server holds version 2.0.9, whereas this is version 2.0.10, but I don't see any real need to update SVN if it is to become deprecated. Next steps: - upgrade the rockspec to the latest version - make the html help available online somewhere Signed-off-by: Benoit Germain <bnt.germain@gmail.com>
* Import to gitPeter Drahoš2010-10-0120-0/+1675