[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: [ANN] Lanes 3.0-beta
- From: Benoit Germain <bnt.germain@...>
- Date: Sat, 5 Nov 2011 17:59:50 +0100
I am pleased to announce a new major release of Lanes.
Lanes is a lightweight, native, lazy evaluating multithreading library for
Lua 5.1. It allows efficient use of multicore processors in Lua, by passing
function calls into separate OS threads, and separate Lua states.
The changes in this version are the following:
* process exit change: close everything at GC when main state closes, not 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
* raise an error when linda:send() has nothing to send
* linda uses a fast FIFO implementation to speed up data exchanges
* new linda:count() method
* new linda batched data read mode
* proper key type check in all linda methods
* fix setup-vc.cmd to support Visual Studio 2010 and Windows 7 64 bits
* bugfix: release keeper state mutex at desinit
* linda honors __tostring and __concat
* new lanes options packagepath and packagecpath, in case one needs to set them differently than the default
Win32 build passes self-tests both with Lua 5.1 and LuaJIT2-beta8.
I need volunteers to check that linux/pthread builds are ok too since I don't have the necessary OS handy.
Bug reports are welcome, pull request at https://github.com/LuaLanes/lanes with fixes even more so :-).