aboutsummaryrefslogtreecommitdiff
path: root/src/tools.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Added __lanesignore field for metatablesIlya Uvarenkov2016-04-201-1/+17
|
* Fix standard library lists for Lua 5.3mpeterv2015-04-121-0/+5
| | | | | Fixes crash on require under Lua 5.3 without LUA_COMPAT_5_2. Fixes utf8 library not loaded under Lua 5.3.
* Merge pull request #115 from mpeterv/fix-lua-dumpBenoit Germain2015-04-121-2/+2
|\ | | | | Do not strip debug info of dumped functions on Lua 5.3
| * Do not strip debug info of dumped functions on Lua 5.3mpeterv2015-02-251-2/+2
| |
* | Apply _ENV-related logic to Lua 5.3mpeterv2015-02-251-5/+5
|/ | | | It was only applied to Lua 5.2.
* preliminary Lua 5.3 supportBenoit Germain2014-12-161-5/+4
| | | | Untested, but it might just work :).
* fix lookup of globals created by on_state_createBenoit Germain2014-07-081-0/+19
| | | | | | * Postponed _G scan for function lookup database to after on_state_create invocation * Fixed a crash when USE_DEBUG_SPEW == 1
* Deep userdata changesBenoit Germain2014-06-171-468/+4
| | | | | | | | | * bumped version to 3.9.6 * separate deep userdata code in a dedicated file to allow external modules to implement Lanes-compatible deep userdata without requiring a binary dependency against the Lanes module. because of this linda_id function(eDO_metatable) must push 2 values on the stack: a metatable and a deep version string obtained from luaG_pushdeepversion()
* Fix build issues with compat.c/hBenoit Germain2014-04-231-3/+1
|
* moved compatibility code in a separate fileBenoit Germain2014-04-031-43/+0
|
* Don't mutex-wrap require() more than onceBenoit Germain2014-03-191-4/+5
|
* Multiverse compatibilityBenoit Germain2014-02-261-150/+197
| | | | | | | | | | | | | | | * 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
* more graceful handling of out-of-memory errorsBenoit Germain2014-02-181-1/+4
| | | | | * raise an error instead of dereferencing a NULL pointer on deep userdata creation and lane struct creation
* Lanes init crash fixBenoit Germain2014-02-181-11/+22
| | | | | | | | | | | * 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
* Deep userdata support improvementsBenoit Germain2014-02-171-419/+372
| | | | | | | | | | | | * 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)
* another Lua stack overflow fixBenoit Germain2014-01-241-1/+2
|
* 2 crash fixes and 1 experimentBenoit Germain2014-01-221-9/+13
| | | | | | | | | | * 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
* fix on_state_create circular logic issueBenoit Germain2014-01-061-13/+43
| | | | | | * 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.
* new config option demote_full_userdataBenoit Germain2013-12-201-3/+22
| | | | | use demote_full_userdata to select between light userdata demotion or raising an error when attempting to transfer a non-deep full userdata
* supposedly improved pthread supportBenoit Germain2013-11-291-4/+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 internal error at lane creation when the generator doesn't open any base ↵Benoit Germain2013-11-181-5/+4
| | | | | library Fix issue #77.
* Changed a DEBUGSPEW outputBenoit Germain2013-11-161-1/+1
|
* Fix a case where an error could be raised inside a keeper stateBenoit Germain2013-11-131-1/+2
|
* Improved some DEBUGSPEW outputBenoit Germain2013-11-071-2/+6
|
* Fix an unitialized variable usageBenoit Germain2013-11-061-0/+1
|
* Fix lanes.nameof() crashing when encountering a light userdataBenoit Germain2013-11-041-12/+20
|
* version 3.7.0Benoit Germain2013-10-111-28/+68
| | | | | | | | | | | | * 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
* bugfix: no longer create a global named "lanes.core" inside lanes when libs ↵Benoit Germain2013-10-031-17/+11
| | | | list is "*"
* Fix crash when a module is a simple C function (issue #59)Benoit Germain2013-09-301-15/+34
|
* version 3.6.6Benoit Germain2013-09-271-4/+4
| | | | | | | | 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-216/+230
| | | | | | | | | | | | 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
* version 3.6.3v3.6.3Benoit Germain2013-08-131-48/+120
| | | | | | | | * 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
* remove 2 weird characters in commentsBenoit Germain2013-05-201-2/+2
|
* Fix MinGW compiler warnings-as-errorsBenoit Germain2013-04-081-6/+7
|
* Removed LUA_COMPAT_ALL-less Lua5.2 restrictionBenoit Germain2013-04-051-41/+57
|
* 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
|