summaryrefslogtreecommitdiff
path: root/src/tools.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* version 3.5.1v3.5.1Benoit Germain2013-02-131-7/+73
| | | | | | | * 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
* Fix issue #45Benoit Germain2013-02-051-1/+1
|
* foward on_state_create error to main state if anyBenoit Germain2013-02-011-1/+5
|
* version 3.5.0Benoit Germain2013-01-301-33/+59
| | | | | | | | | | | | | | * 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-254/+323
| | | | * A bit of code cosmetics
* version 3.4.4v3.4.4Benoit Germain2013-01-261-78/+94
| | | | | | | | * 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-83/+166
| | | | | | | | | | | * 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
* Enable transfer of recursive upvalued functionsBenoit Germain2013-01-101-68/+55
| | | Removed a limitation preventing Lua functions with indirect recursive upvalue references from being transferable.
* Added some upvalues inter-copy debug codeBenoit Germain2013-01-091-21/+28
|
* Raise an error on multiple-named functions.Benoit Germain2012-10-251-43/+41
| | | | | | | | | | | | | Lua 5.2 introduced a hash randomizer seed which causes table iteration to yield a different key order on different VMs even when the tables are populated the exact same way. When Lua is built with compatibility options (such as LUA_COMPAT_ALL), this causes several base libraries to register functions under multiple names. This, with the randomizer, can cause the first name of a function to be different on different VMs, which breaks function transfer. This means that Lua 5.2 must be built with compatibility off to be able to use Lanes. Even under Lua 5.1, this may cause trouble (even if this would be much less frequent) Unfortunately, this fails with string.gfind/string.gmatch when Lua 5.1 is built with LUA_COMPAT_GFIND (which is the case of LuaBinaries), so for the time being, fail only for Lua 5.2 as the randomizer is the real show breaker here.
* Fixed the fix...Benoit Germain2012-10-231-1/+1
|
* Fixed thread name retrieval in main state.Benoit Germain2012-10-231-2/+7
|
* More informative messages on failed transfers.Benoit Germain2012-10-231-4/+7
|
* code updated to build against Lua 5.1 and Lua 5.2v3.1.6Benoit Germain2012-08-141-6/+8
|
* * when a transfered function is not found in source, guess its name to help ↵v3.1.4Benoit Germain2012-06-271-14/+125
| | | | | | the user find out what's wrong * new function lanes.nameof()
* Improve LuaJIT compatibility, part #1: "*" library list is loaded through ↵benoit-germain2012-04-261-2/+10
| | | | luaL_openlibs()
* Fix issue #15 (lanes fails to build on Linux x86_64 (gcc 4.6.1) size_t vs ↵benoit-germain2012-04-241-4/+1
| | | | int size)
* * changed lanes.configure signature to receive a table instead of individual ↵Benoit Germain2012-02-181-34/+47
| | | | | | parameters * added support for an on_state_create callback called to load custom functions in a state in addition to the base libraries
* some more compilation warning fixesBenoit Germain2011-11-091-2/+2
|
* * fix all compilation warnings raised by -WextraBenoit Germain2011-11-071-2/+2
| | | | * fix a multithreading issue at desinit causing invalid memory accesses (to be verified)
* * process exit change: close everything at GC when main state closes, not ↵Benoit Germain2011-11-051-151/+498
| | | | | | | | | | | | | | | | | | | | 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
* Debug code to check why LuaJIT2-beta8 fails to load the module.benoit-germain2011-06-241-5/+14
|
* * keeper.lua is now embedded in text form instead of bytecode to improve ↵Benoit Germain2011-02-181-0/+69
| | | | | | LuaJIT2-compatibility (but this is not enough). * moved keeper-related code in a separate source file
* Lane userdata implementation refactoring:Benoit Germain2011-02-171-42/+79
| | | | | | | | | | | | | | | - 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-141-31/+47
| | | | 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-70/+100
| | | | lua-callable and to be able to require the module it was exported from in the target lanes.
* Changed luaG_push_proxy to cache deep userdata proxies.dptr19882011-01-191-3/+46
|
* Take all code from Asko Kauppi's SVN server, and push it here so that the ↵Benoit Germain2011-01-041-152/+108
| | | | | | | | | | | | 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-011-0/+1198