| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
| |
Fix lookup database table not being created when it should if Lanes is
required in more than one Lua master state
|
|
|
|
|
| |
* raise an error instead of dereferencing a NULL pointer on deep
userdata creation and lane struct creation
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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)
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
| |
* 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)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
| |
* 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)
|
|
|
|
|
| |
slightly improve linda performance when the producer/consumer scenario
leaves leave the key empty
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
| |
* 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()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
| |
* 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 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
|
| |
|
|
|
|
|
|
|
|
|
| |
* 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 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
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
| |
* WIN32 builds use condition variables instead of PulseEvent() when available.
* first steps toward fixing make-vc.cmd
|
| |
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
| |
* A bit of code cosmetics
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|