aboutsummaryrefslogtreecommitdiff
path: root/src/tools.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Bring all interesting fixes from the C++ implementation back into the C ↵Benoit Germain2024-04-111-4/+12
| | | | implementation
* Changed all indentations to all whitespacesBenoit Germain2022-02-071-3/+3
| | | | Tabs mess up alignment of stack contents comments, so I'm done with them.
* fix stack overflow when transfering a clonable userdata referencing itself ↵Benoit Germain2021-06-261-0/+13
| | | | through a uservalue
* correctly transfer the uservalue of a deep userdataBenoit Germain2021-06-241-8/+0
|
* Moved cancellation code in separate filesBenoit Germain2019-04-221-2/+0
|
* protect_allocator configure option is gone, long live allocator (more ↵Benoit Germain2018-11-251-0/+4
| | | | embedders-friendly)
* Internal code tweaksBenoit Germain2018-11-191-3/+8
| | | | | | * Registry access code utility macros * CONFIG_REGKEY and LOOKUP_REGKEY are now lightuserdata instead of strings * Stack checking debug macros improvements
* split linda code in a separate fileBenoit Germain2018-11-151-1/+1
|
* fix a bunch of compilation warnings (issue #157)Benoit Germain2018-11-111-1/+1
|
* fix an internal error trying to call on_state_create in a lane without any ↵Benoit Germain2018-11-031-1/+0
| | | | | | | libs loaded always duplicate the config structure in new lanes even when no libraries are initialized by the generator
* Enum buildfixBenoit Germain2018-11-021-8/+0
|
* More MinGW buildfixes (I hope)Benoit Germain2018-10-251-4/+5
|
* Fix Lanes build by reorganizing types around a bitBenoit Germain2018-10-251-31/+15
|
* Fix for deep-aware modulesBenoit Germain2017-08-011-114/+4
| | | | | | Don't crash when using a module that creates Lanes-compatible deep userdata. Added a sample deep-aware module.
* Improve LuaJIT supportBenoit Germain2017-05-101-1/+3
| | | | | | | * better LuaJIT-specific headers detection * add LuaJIT-specific libraries when known * properly raise an error when attempting to transfer a LUAT_CDATA value * some compilationg warning fixes
* preliminary Lua 5.3 supportBenoit Germain2014-12-161-1/+1
| | | | Untested, but it might just work :).
* LuaJIT auto detect FIXStepets2014-04-201-4/+6
|
* LuaJIT auto detectStepets2014-04-201-4/+5
|
* moved compatibility code in a separate fileBenoit Germain2014-04-031-25/+0
|
* Don't mutex-wrap require() more than onceBenoit Germain2014-03-191-1/+1
|
* Fixed some compilation warningsBenoit Germain2014-02-261-63/+66
|
* Multiverse compatibilityBenoit Germain2014-02-261-18/+67
| | | | | | | | | | | | | | | * 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
* Lanes init crash fixBenoit Germain2014-02-181-2/+2
| | | | | | | | | | | * 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-5/+11
| | | | | | | | | | | | * 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)
* fix on_state_create circular logic issueBenoit Germain2014-01-061-1/+2
| | | | | | * 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
* supposedly improved pthread supportBenoit Germain2013-11-291-0/+11
| | | | | | | | | * 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
* Minor macro definition fixBenoit Germain2013-11-161-1/+1
|
* Fixed missing extern variable declarations resulting in multiple variable ↵Benoit Germain2013-11-061-2/+2
| | | | instances
* version 3.7.0Benoit Germain2013-10-111-4/+8
| | | | | | | | | | | | * 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
* GCC compilation error fixv3.6.6Benoit Germain2013-10-021-4/+4
|
* Reduce memory footprint, simplify module order setup in conjuction with ↵Benoit Germain2013-09-261-3/+10
| | | | | | | | | | | | 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-0/+3
| | | | | | | | * 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
* Added lua_lessthan to 5.2 build retrocompatibilityBenoit Germain2013-04-051-0/+1
|
* version 3.5.1v3.5.1Benoit Germain2013-02-131-0/+1
| | | | | | | * 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-3/+2
| | | | | | | | | | | | | | * 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-4/+13
| | | | * A bit of code cosmetics
* version 3.4.4v3.4.4Benoit Germain2013-01-261-1/+1
| | | | | | | | * 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-6/+14
| | | | | | | | | | | * 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
* Separated public "deep" API declarations in a dedicated header.Benoit Germain2012-11-181-5/+1
|
* code updated to build against Lua 5.1 and Lua 5.2v3.1.6Benoit Germain2012-08-141-5/+22
|
* * when a transfered function is not found in source, guess its name to help ↵v3.1.4Benoit Germain2012-06-271-0/+2
| | | | | | the user find out what's wrong * new function lanes.nameof()
* * changed lanes.configure signature to receive a table instead of individual ↵Benoit Germain2012-02-181-3/+1
| | | | | | parameters * added support for an on_state_create callback called to load custom functions in a state in addition to the base libraries
* * process exit change: close everything at GC when main state closes, not ↵Benoit Germain2011-11-051-4/+5
| | | | | | | | | | | | | | | | | | | | 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
* * keeper.lua is now embedded in text form instead of bytecode to improve ↵Benoit Germain2011-02-181-0/+3
| | | | | | LuaJIT2-compatibility (but this is not enough). * moved keeper-related code in a separate source file
* Fixed application hang-up because keeper state was not released in case of ↵Benoit Germain2011-02-141-2/+2
| | | | 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-3/+5
| | | | lua-callable and to be able to require the module it was exported from in the target lanes.
* Take all code from Asko Kauppi's SVN server, and push it here so that the ↵Benoit Germain2011-01-041-0/+2
| | | | | | | | | | | | 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/+72