aboutsummaryrefslogtreecommitdiff
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fixed error handling when handler isn't calledBenoit Germain2014-03-201-206/+207
| | | | | | | | * bumped version to 3.9.4 * set_finalizer throws an error if provided finalizer isn't a function * fix error handling when the error doesn't generate an error handler call (IOW, all errors but LUA_ERRRUN) * provide callstack if LUA_ERRRUN occurs inside a finalizer
* Don't mutex-wrap require() more than onceBenoit Germain2014-03-194-7/+8
|
* Fixed crash when using protect_allocator optionBenoit Germain2014-03-172-16/+16
|
* Fix a lane close crashBenoit Germain2014-02-281-4/+2
|
* linda:send() improvementsBenoit Germain2014-02-273-12/+30
| | | | | | | | | * Bumped version to 3.9.3 * new exposed variable linda.null that exposes the internal NIL_SENTINEL marker * linda:send() interprets send key linda.null as authorization to silently send a single nil when not provided with anything to send (useful when sending results of a function that can return nothing)
* Fixed a pure C compilation errorBenoit Germain2014-02-271-2/+2
|
* Fix some MinGW _WIN32_WINNT-related build issuesBenoit Germain2014-02-262-12/+20
|
* Fixed some compilation warningsBenoit Germain2014-02-262-66/+68
|
* Multiverse compatibilityBenoit Germain2014-02-265-532/+627
| | | | | | | | | | | | | | | * 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
* Multi-state initialisation issueBenoit Germain2014-02-241-7/+7
| | | | | Fix lookup database table not being created when it should if Lanes is required in more than one Lua master state
* more graceful handling of out-of-memory errorsBenoit Germain2014-02-182-14/+20
| | | | | * raise an error instead of dereferencing a NULL pointer on deep userdata creation and lane struct creation
* Lanes init crash fixBenoit Germain2014-02-185-61/+95
| | | | | | | | | | | * 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-174-39/+57
|
* Deep userdata support improvementsBenoit Germain2014-02-175-574/+575
| | | | | | | | | | | | * 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-133-118/+132
| | | | | | | | | | * 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-160/+245
| | | | | | | * 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)
* Fix compilation error against Lua 5.1Benoit Germain2014-02-041-1/+3
|
* another Lua stack overflow fixBenoit Germain2014-01-241-1/+2
|
* 2 crash fixes and 1 experimentBenoit Germain2014-01-222-10/+14
| | | | | | | | | | * 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-222-32/+93
| | | | | | | | * 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-5/+9
| | | | | 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-99/+108
| | | | | | | | | | | | | * 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-204-70/+80
| | | | | | | * 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-163-105/+125
| | | | | | | | | | | | | | | * 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
* Fix argument checks in linda:limit()Benoit Germain2014-01-091-3/+3
|
* Linda fixesBenoit Germain2014-01-092-55/+96
| | | | | | | | | | | * 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-065-29/+61
| | | | | | * 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
* Update tools.cAlexanderKhilo2013-12-281-0/+2
| | | Actually, you shouldn't need malloc.h at all, it's obsolete; including stdlib.h should take care of what malloc.h used to handle.
* fixed a shutdown crashBenoit Germain2013-12-202-15/+26
| | | | | | | * 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 config option demote_full_userdataBenoit Germain2013-12-202-37/+38
| | | | | use demote_full_userdata to select between light userdata demotion or raising an error when attempting to transfer a non-deep full userdata
* Fix an incorrect assertion in lanes.require()Benoit Germain2013-12-131-4/+4
|
* new API lanes.set_thread_priority()Benoit Germain2013-12-044-91/+133
|
* no need for pthread_cleanup_ pair when THREADWAIT_METHOD == THREADWAIT_CONDVARBenoit Germain2013-12-041-0/+5
|
* Fixed missing extern variable declarations resulting in multiple variable ↵Benoit Germain2013-12-021-1/+1
| | | | instances
* MinGW-pthread doesn't seem to have pthread_timedjoin_np after allBenoit Germain2013-12-021-1/+1
|
* pthread thread priority refacto: threading.cBenoit Germain2013-12-021-216/+212
|
* pthread thread priority refacto: threading.hBenoit Germain2013-12-021-6/+3
|
* pthread thread priority refacto: lanes.cBenoit Germain2013-12-021-1/+2
|
* pthread thread priority refacto: lanes.luaBenoit Germain2013-12-021-1/+1
|
* Fix a macro checkBenoit Germain2013-11-291-1/+1
|
* supposedly improved pthread supportBenoit Germain2013-11-296-32/+89
| | | | | | | | | * 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)
* Fix a macro redefinition when compiling against Lua 5.2 with compatibility ↵Benoit Germain2013-11-261-0/+2
| | | | options enabled
* Fix a macro redefinition when compiling against Lua 5.2 with compatibility ↵Benoit Germain2013-11-261-0/+2
| | | | options enabled
* Fix a 64 bits compilation warningBenoit Germain2013-11-261-1/+1
|
* Fix a 64 bits compilation warningBenoit Germain2013-11-261-1/+1
|
* Added a comment in thread_new()Benoit Germain2013-11-221-1/+3
|
* MinGW-pthread supports -3/+3 thread priority range, so accept it API-side tooBenoit Germain2013-11-221-0/+7
|
* MinGW-pthread supports -3/+3 thread priority range, so accept it API-side tooBenoit Germain2013-11-221-1/+4
|
* Correct MinGW pthread_attr_setschedpolicy replacement.Benoit Germain2013-11-211-2/+2
|
* Add a dummy pthread_attr_setschedpolicy() for MinGW builds to fix a ENOTSUP ↵Benoit Germain2013-11-211-0/+17
| | | | failure.