aboutsummaryrefslogtreecommitdiff
path: root/CHANGES (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* more graceful handling of out-of-memory errorsBenoit Germain2014-02-181-0/+3
| | | | | * raise an error instead of dereferencing a NULL pointer on deep userdata creation and lane struct creation
* Lanes init crash fixBenoit Germain2014-02-181-0/+7
| | | | | | | | | | | * bumped version to 3.9.1 * keeper array is allocated with master state's alloc function instead of malloc()/free() * prevent application crash when specifying a very large number of keepers in the configuration options * removed some keeper desinit legacy dead code * any error occuring during one-time inits is raised outside the one-time mutex protected code region
* lindas can have a group for keeper state assignation controlBenoit Germain2014-02-171-0/+3
|
* Deep userdata support improvementsBenoit Germain2014-02-171-0/+7
| | | | | | | | | | | | * bumped version to 3.9.0 * keepers now require "package", receive package.path & package.cpath, and call on_state_create() if it is a C function * changed the deep public API (improved deep idfunc signature, renamed luaG_deep_userdata to luaG_newdeepuserdata) * if an error occurs while copying a deep userdata, don't raise inside the keeper state * fixed situations where raised errors could lead to memory leaks (deep gc)
* more fixes/tweaks about cancelled lindasBenoit Germain2014-02-131-0/+7
| | | | | | | | | | * 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-0/+6
| | | | | | | * 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)
* another Lua stack overflow fixBenoit Germain2014-01-241-0/+3
|
* 2 crash fixes and 1 experimentBenoit Germain2014-01-221-0/+6
| | | | | | | | | | * 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-0/+5
| | | | | | | | * 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-0/+3
| | | | | 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-0/+8
| | | | | | | | | | | | | * 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
* get()/set() improvementsBenoit Germain2014-01-201-0/+5
| | | | | | | * bumped version to 3.8.0 * linda:set() accepts multiple values to set in the specified slot * linda:get() accepts an optional count to peek several values at once * nil values are now converted just as in send()/receive()
* Cancellation improvements and some fixesBenoit Germain2014-01-161-0/+11
| | | | | | | | | | | | | | | * 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
* Linda fixesBenoit Germain2014-01-091-0/+7
| | | | | | | | | | | * bumped version to 3.7.7 * fix crash when calling linda:count() on unknown keys * purge key storage with linda:set( key, nil) on an unlimited key to reduce memory usage with lots of keys * linda:limit() wakes write-blocked threads if necessary when the new limit enables writes to occur again * linda:set() wakes write-blocked threads if necessary if the operation created some room to write into
* fix on_state_create circular logic issueBenoit Germain2014-01-061-0/+4
| | | | | | * if config.on_state_create() is a C function, call it by direct C closure reconstruction in newly created states * bumped version to 3.7.6
* fixed a shutdown crashBenoit Germain2013-12-201-0/+5
| | | | | | | * fixed a crash that can occur at shutdown when an object stored inside a keeper state performs a linda operation on a linda making use of another keeper * bumped version to 3.7.5
* new API lanes.set_thread_priority()Benoit Germain2013-12-041-0/+5
|
* supposedly improved pthread supportBenoit Germain2013-11-291-0/+6
| | | | | | | | | * bumped version to 3.7.3 * set pthread thread cancel type to PTHREAD_CANCEL_ASYNCHRONOUS * lane_h:cancel() accepts a 3rd timeout argument used when waiting for actual thread termination (hitting the timeout raises an error) * added PROPAGATE_ALLOCF macro to select state creation mode (lua_newstate or luaL_newstate)
* Update CHANGESBenoit Germain2013-11-181-0/+6
|
* Update CHANGESBenoit Germain2013-11-161-0/+6
|
* Update CHANGESBenoit Germain2013-11-131-0/+3
|
* Update CHANGESBenoit Germain2013-11-121-0/+4
|
* Update CHANGESBenoit Germain2013-11-061-0/+4
|
* Update CHANGESBenoit Germain2013-11-051-0/+9
|
* errors inside finalizers generate a full stack just like any other errorBenoit Germain2013-10-221-0/+4
|
* version 3.7.0Benoit Germain2013-10-111-1/+14
| | | | | | | | | | | | * 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 CHANGESBenoit Germain2013-10-031-1/+4
|
* Update CHANGESBenoit Germain2013-09-301-0/+3
|
* version 3.6.6Benoit Germain2013-09-271-0/+6
| | | | | | | | no longer call core.configure with dummy params when requiring lanes more than once (fixes potential multithreading issues with LuaJIT allocator) activated EnableCrashingOnCrashes() Win32 debug builds fixed some comments in code
* Reduce memory footprint, simplify module order setup in conjuction with ↵Benoit Germain2013-09-261-0/+8
| | | | | | | | | | | | Lanes, and send over native functions a bit faster as well * Lanes no longer has to internally require modules inside the keeper states because they no longer need a lookup database. the lookup name is stored as-is and actually converted in the destination state * optimisation: bypass cache when sending native functions over * removed all the KEEPER_MODEL_LUA code, as it can no longer work anyway
* Update CHANGESBenoit Germain2013-09-241-0/+4
|
* version 3.6.3v3.6.3Benoit Germain2013-08-131-0/+10
| | | | | | | | * 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
* Ditch PulseEvent usage on WIN32 buildsBenoit Germain2013-07-201-0/+3
|
* version 3.6.2Benoit Germain2013-05-201-0/+5
| | | | | * WIN32 builds use condition variables instead of PulseEvent() when available. * first steps toward fixing make-vc.cmd
* Update CHANGESBenoit Germain2013-04-051-0/+4
|
* version 3.6.0Benoit Germain2013-03-141-0/+5
| | | | | * protect_allocator is an API change -> version bump * bugfix: allocator protection should be done once per primary Lua state, not once only the first time ever Lanes is required
* version 3.5.2Benoit Germain2013-03-131-0/+6
| | | | | | * stricter validation of with_timers config option: validator was accepting any non-boolean value * new configuration option protect_allocator for VMs with thread unsafe allocators (such as LuaJIT) * removed some obsolete bits of dead code
* version 3.5.1v3.5.1Benoit Germain2013-02-131-0/+7
| | | | | | | * new lanes.h header and API call luaopen_lanes_embedded() for embedders * "lanes.core" is an acceptable library in the generator libs argument * library "*" wildcard also opens lanes.core * tweaked code for Xbox 360 build
* version 3.5.0Benoit Germain2013-01-301-1/+15
| | | | | | | | | | | | | | * 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
* * More detailed DEBUG_SPEW logsBenoit Germain2013-01-281-0/+4
| | | | * A bit of code cosmetics
* version 3.4.4v3.4.4Benoit Germain2013-01-261-2/+10
| | | | | | | | * 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-241-1/+12
| | | | | | | | | | | * 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
* Update CHANGESBenoit Germain2013-01-101-0/+5
|
* Update CHANGESBenoit Germain2012-12-121-0/+4
|
* Update CHANGESBenoit Germain2012-12-031-0/+4
|
* Update CHANGESBenoit Germain2012-11-271-1/+5
|
* Update CHANGESBenoit Germain2012-11-221-0/+3
|
* fix application shutdown crash by not registering anything with atexit()v3.4.0Benoit Germain2012-11-211-0/+4
|
* version 3.4.0Benoit Germain2012-09-261-0/+10
| | | | | | | | | | * 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
* minor internal changesBenoit Germain2012-09-131-1/+5
| | | | | | * implemented set_debug_threadname() for pthread builds where possible * refactored linda __tostring and __concat * linda metatable's __metatable is a string instead of a boolean