aboutsummaryrefslogtreecommitdiff
path: root/CHANGES
diff options
context:
space:
mode:
authorBenoit Germain <benoit.germain@ubisoft.com>2024-04-09 15:49:18 +0200
committerBenoit Germain <benoit.germain@ubisoft.com>2024-04-09 15:49:18 +0200
commit95932749a53f46ae5901798a17e1f0c4c33ac6b2 (patch)
tree327d85f6f634edfacc01dc587492d96f9200344d /CHANGES
parent98ff4191c2cd215c7d6a429e9ddd66f7a6a30316 (diff)
downloadlanes-95932749a53f46ae5901798a17e1f0c4c33ac6b2.tar.gz
lanes-95932749a53f46ae5901798a17e1f0c4c33ac6b2.tar.bz2
lanes-95932749a53f46ae5901798a17e1f0c4c33ac6b2.zip
C++ migration: use strong type safety for source and destination states in transfer functions
Diffstat (limited to 'CHANGES')
-rw-r--r--CHANGES744
1 files changed, 2 insertions, 742 deletions
diff --git a/CHANGES b/CHANGES
index d93f5b4..3725674 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,746 +1,6 @@
1CHANGES: 1CHANGES:
2 2
3CHANGE 159: BGe 19-Mar-24 3CHANGE 1: BGe 9-Apr-24
4 * fix small internal issue with when hitting timeout on thread kill during thread_cancel() in pthread implementation 4 * reset changelog, next entry will list API changes since last C-implementation.
5
6CHANGE 158: BGe 22-Feb-24
7 * naive luajit detection in PUC-Lua-based builds, and vice-versa to detect mismatches
8 * internal version bumped to 3.16.3
9
10CHANGE 157: Mitalie 17-Aug-23
11 * Prevent crash on linux as non-root
12 * internal version bumped to 3.16.2
13
14CHANGE 156: BGe 9-Aug-23
15 * new configuration option .internal_allocator to help LuaJIT users.
16 * internal version bumped to 3.16.1
17
18CHANGE 155: BGe 28-Jul-23
19 * tweaks to linux thread priority management: do nothing if not super-user. if super-user, do nothing if nothing is provided (instead of trying to force a prio when LINUX_SCHED_RR is defined).
20
21CHANGE 154: eligovision 1-Mar-22
22 * Fix 3-parametrized __lanesclone
23
24CHANGE 153: BGe 17-Feb-22
25 * NEVER use allocator obtained from lua_getallocf to allocate stuff manually when compiling for LuaJIT
26
27CHANGE 152: BGe 7-Feb-22
28 * bumped version to 3.16.0
29 * __lanesclone is now called only once with 3 parameters dest, source, size -> BREAKS CUSTOM DEEP USERDATA API
30
31CHANGE 151: BGe 7-Feb-22
32 * bumped version to 3.15.2
33 * Lanes no longer relies on malloc/free for internal allocations, but uses the primary alloc function from the master Lua state
34
35CHANGE 150: BGe 22-Sep-21
36 * fix require() wrapper to return all values returned by original require()
37
38CHANGE 149: BGe 8-Jul-21
39 * bumped version to 3.15.1
40 * fix function transfer with lua_dump for Lua 5.4 failing for functions big enough to necessitate a buffer reallocation
41
42CHANGE 148: BGe 23-Jun-21
43 * __lanesclone now receives the original as light userdata the first time it is called -> BREAKS CUSTOM DEEP USERDATA API
44
45CHANGE 147: BGe 16-Jun-21
46 * changed lanes.threads() output so that several lanes with the same name don't clobber each other in the result table -> BREAKS API
47 * bumped version to 3.15 because of the API change
48
49CHANGE 146: BGe 26-Apr-19
50 * lane:cancel() rework (see doc).
51 * opt.cancelstep is gone, hook is installed by lane:cancel() if requested
52
53CHANGE 145: BGe 28-Nov-18
54 * more code refacto
55 * don't test __lanesignore for POD types (-> slightly faster when trasnfering lots of data)
56
57CHANGE 144: BGe 28-Nov-18
58 * some code refacto
59
60CHANGE 143: BGe 27-Nov-18
61 * Lua 5.4 support
62 * __lanesclone and lanes.nameof support userdata uservalue(s)
63
64CHANGE 142: BGe 26-Nov-18
65 * Version is available in public header
66
67CHANGE 141: BGe 25-Nov-18
68 * protect_allocator configure option is gone, long live allocator (more embedders-friendly)
69
70CHANGE 140: BGe 22-Nov-18
71 * Raise an error instead of crashing when attempting to transfer a non-deep full userdata
72
73CHANGE 139: BGe 21-Nov-18
74 * more DEBUGSPEW
75
76CHANGE 138: BGe 19-Nov-18
77 * Registry access code utility macros
78 * CONFIG_REGKEY and LOOKUP_REGKEY are now lightuserdata instead of strings
79 * Stack checking debug macros improvements
80
81CHANGE 137: BGe 15-Nov-18
82 * Deep userdata must embed DeepPrelude to save an allocation (also changes Deep protocol)
83
84CHANGE 136: BGe 15-Nov-18
85 * split linda code in a separate file
86 * rockspec for version v3.13.0
87
88CHANGE 135: BGe 11-Nov-18
89 * fix a bunch of compilation warnings
90
91CHANGE 134: BGe 3-Dec-13
92 * new API lanes.set_thread_affinity()
93 * set_debug_threadname implemented with win32 pthread
94
95CHANGE 133: BGe 8-Nov-18
96 * Make sure any linda operation that can raise an error won't ever leave a mutex unreleased
97 * lane:join() now returns nil, "timeout" in case of timeout
98
99CHANGE 132: BGe 7-Nov-18
100 * __lanesclone mechanism should actually work now
101
102CHANGE 131: BGe 7-Nov-18
103 * Fix potential crash at application shutdown when deep userdata were created before Lanes is required
104
105CHANGE 130: BGe 2-Nov-18
106 * always duplicate the config structure in new lanes even when no libraries are initialized by the generator
107 (fixes an internal error trying to call on_state_create in a lane without any libs loaded)
108
109CHANGE 129: BGe 2-Nov-18
110 * Bumped version to 3.13
111 * fix error when autodetecting protect_allocator when running under LuaJIT
112
113CHANGE 128: BGe 31-Oct-18
114 * Better default value autodetection for protect_allocator setting
115
116CHANGE 127: BGe 30-Oct-18
117 * restrict internal light userdata constants to 47 significant bits when building against LuaJIT-x64
118
119CHANGE 126: Bge 29-Oct-18
120 * Add deep user data cloning support
121
122CHANGE 125: BGe 25-Oct-18
123 * Fix Lanes build by reorganizing types around a bit
124
125CHANGE 124: BGe 9-Jul-18
126 * Fix a stack overflow when copying large tables with verbose_errors option enabled
127 * Support for integer formatting in verbose errors
128
129CHANGE 123: BGe 2-Aug-17
130 * added support for user-provided __gc in deep userdata
131 * more complete deep userdata sample
132
133CHANGE 122: BGe 1-Aug-17
134 * fix crash trying to use a deep-aware module while not requiring Lanes
135 * bumped version to 3.12
136
137CHANGE 121: BGe 13-Jun-17
138 * no longer internally assert when an error message is not a string
139
140CHANGE 120: BGe 5-Jun-17
141 * new API function lanes.register( "name", module) to manually register a module table after it was required
142 * Transfering registered module tables will link the equivalent in the destination state instead of cloning it
143 * bumped version to 3.11
144
145CHANGE 119: BGe 10-May-17
146 * Fixed some compilation warnings
147 * Improved LuaJIT support
148
149CHANGE 118: trukanduk 21-Nov-16
150 * bumped version to 3.10.1
151 * objects with a metatable that contains __lanesignore are skipped during data transfers
152
153CHANGE 117: mpeterv 21-Nov-16
154 * Fix an implicit number-to-string conversion
155
156CHANGE 116: BGe, mpeterv 27-Apr-15
157 * bumped version to 3.10.0
158 * segfault fixed in LG_lane_new
159 * Lua 5.3 support
160
161CHANGE 115: BGe 18-Sep-14
162 * bumped version to 3.9.7
163 * new function lanes.sleep()
164
165CHANGE 114: BGe 8-Jul-14
166 * Postponed _G scan for function lookup database to after on_state_create invocation
167 * Fixed a crash when USE_DEBUG_SPEW == 1
168
169CHANGE 113: BGe 17-Jun-14
170 * bumped version to 3.9.6
171 * 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
172 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()
173
174CHANGE 112 BGe 16-May-14
175 * bumped version to 3.9.5
176 * fix linda.__towatch to return non-nil when the linda is empty
177 * lanes.gen() error reporting improvements
178
179CHANGE 111 BGe 24-Apr-14
180 * fixed linda:send() possibly returning an undefined value
181
182CHANGE 110 Stepets 20-Apr-14
183 * fix LuaJIT detection issues
184
185CHANGE 109 BGe 03-Apr-14
186 * moved some Lua-version compatibility code in separate source files
187
188CHANGE 108: BGe 20-Mar-14
189 * bumped version to 3.9.4
190 * set_finalizer throws an error if provided finalizer isn't a function
191 * fix error handling when the error doesn't generate an error handler call (IOW, all errors but LUA_ERRRUN)
192 * provide callstack if LUA_ERRRUN occurs inside a finalizer
193
194CHANGE 107: BGe 19-Mar-14
195 * Make sure we don't mutex-wrap require() more than once, just in case
196
197CHANGE 106: BGe 17-Mar-14
198 * Fixed crash when using protect_allocator option
199
200CHANGE 105: BGe 27-Feb-14
201 * Bumped version to 3.9.3
202 * new exposed variable linda.null that exposes the internal NIL_SENTINEL marker
203 * linda:send() interprets send key linda.null as authorization to silently send a single nil when not provided with anything to send
204 (useful when sending results of a function that can return nothing)
205
206CHANGE 104: BGe 25-Feb-14
207 * Bumped version to 3.9.2
208 * Internal rework: the whole Lanes engine now works "per universe" to allow concurrent Lanes execution in more than one embedded master state
209 * this universe is a full userdata created in the master state, selfdestruct_gc is the __gc for this userdata
210 * most of what was initialized only once is now per-universe
211 * Fixed potential crashes at desinit if problems occur during keeper states initialisation
212 * Fixed require() not always serialized properly
213 * Raise an error instead of crashing on deep userdata prelude memory allocation failure
214 * Added forgotten mutex desinitialisation at universe shutdown
215
216CHANGE 103: BGe 24-Feb-14
217 * Fix lookup database table not being created when it should if Lanes is required in more than one Lua master state
218
219CHANGE 102: BGe 18-Feb-14
220 * raise an error instead of dereferencing a NULL pointer on deep userdata creation and lane struct creation
221
222CHANGE 101: BGe 18-Feb-14
223 * version 3.9.1
224 * removed some keeper desinit legacy dead code
225 * keeper array is allocated with master state's alloc function instead of malloc()/free()
226 * prevent application crash when specifying a very large number of keepers in the configuration options
227 * any error occuring during one-time inits is raised outside the one-time mutex protected code region
228
229CHANGE 100: BGe 17-Feb-14
230 * lanes.linda() accepts an optional integer group to give control on keeper state repartition
231
232CHANGE 99: BGe 17-Feb-14
233 * version 3.9.0
234 * keepers now require "package", receive package.path & package.cpath, and call on_state_create() if it is a C function
235 * changed the deep public API (improved deep idfunc signature, renamed luaG_deep_userdata to luaG_newdeepuserdata)
236 * if an error occurs while copying a deep userdata, don't raise inside the keeper state
237 * fixed situations where raised errors could lead to memory leaks (deep gc)
238
239CHANGE 98: BGe 13-Feb-14
240 * version 3.8.5
241 * linda:limit() returns lanes.cancel_error on a limited linda
242 * lanes.genlock() and lanes.genatomic() support cancelled lindas by returning lanes.cancel_error whenever appropriate
243 * fixed a possible Lua stack overflow when calling linda:dump()
244 * fixed cases where linda:send() and linda:receive() would not return lanes.cancel_error when they should
245
246CHANGE 97: BGe 10-Feb-14
247 * version 3.8.4
248 * new API linda:cancel("read"|"write"|"both"|"none")
249 * all linda operations return lanes.cancel_error on a cancelled linda
250 * raised an internal string length so that longer linda names are fully output before truncation applies when doing tostring( linda)
251
252CHANGE 96: BGe 24-Jan-14
253 * another Lua stack overflow fix when sending complex function through lindas or as lane body
254
255CHANGE 95: BGe 22-Jan-14
256 * version 3.8.3
257 * fixed a possible Lua stack overflow when sending complex function through lindas or as lane body
258 * experimental: lanes.nameof() scans the registry if a regular search didn't yield anything interesting
259 * fixed lanes.nameof() misbehaving when encountering a LUA_TTHREAD object
260
261CHANGE 94: BGe 22-Jan-14
262 * version 3.8.2
263 * new lane launcher option gc_cb to set a callback that is invoked when a lane is garbage collected
264 * Fix more invalid memory accesses when fetching the name of a joined lane with lanes:threads() (because its lua_State is closed)
265
266CHANGE 93: BGe 20-Jan-14
267 * slightly improve linda performance when the producer/consumer scenario leaves leave the key empty
268
269CHANGE 92: BGe 20-Jan-14
270 * version 3.8.1
271 * new function lane:get_debug_threadname()
272 * Fix invalid memory accesses when fetching the name of a joined lane with lanes:threads() (because its lua_State is closed)
273 * use luaL_newmetatable() to create the metatable for lane objects
274 * prevent malicious code from crashing by calling lane methods without passing the lane as first argument (raise an error instead)
275 * 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
276
277CHANGE 91: BGe 20-Jan-14
278 * version 3.8.0
279 * linda:set() accepts multiple values to set in the specified slot
280 * linda:get() accepts an optional count to peek several values at once
281
282CHANGE 90: BGe 16-Jan-14
283 * version 3.7.8
284 * lane:cancel() now accepts a boolean second argument when soft cancelling (negative timeout) to wake the thread if necessary
285 * if a blocked linda send() or receive() call is interrupted by a cancellation request,
286 it returns CANCEL_ERROR so that this case can be differentiated from a simple timeout
287 * fixed WIN32 THREAD_CREATE() wrong _beginthreadex() error detection
288 * fatal WIN32 threading errors retrieve and output the error description string with FormatMessage()
289 * fixed missing lanes.set_singlethreaded
290 * fixed perftest.lua
291 * added test/cancel.lua
292
293CHANGE 89: BGe 09-Jan-14
294 * version 3.7.7
295 * fix crash when calling linda:count() on unknown keys
296 * purge key storage with linda:set( key, nil) on an unlimited key to reduce memory usage with lots of keys
297 * linda:limit() wakes write-blocked threads if necessary when the new limit enables writes to occur again
298 * linda:set() wakes write-blocked threads if necessary if the operation created some room to write into
299
300CHANGE 88: BGe 06-Jan-14
301 * version 3.7.6
302 * if config.on_state_create() is a C function, call it by direct C closure reconstruction in newly created states
303
304CHANGE 87: BGe 20-Dec-13
305 * version 3.7.5
306 * 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
307 * new setting demote_full_userdata to select between light userdata demotion or raising an error when attempting to transfer a non-deep full userdata
308
309CHANGE 86: BGe 3-Dec-13
310 * version 3.7.4
311 * internal refactoring of pthread priority management code
312 * new API lanes.set_thread_priority()
313
314CHANGE 85: BGe 28-Nov-13
315 * version 3.7.3
316 * set pthread thread cancel type to PTHREAD_CANCEL_ASYNCHRONOUS
317 * lane_h:cancel() accepts a 3rd timeout argument used when waiting for actual thread termination (hitting the timeout raises an error)
318 * added PROPAGATE_ALLOCF macro to select state creation mode (lua_newstate or luaL_newstate)
319
320CHANGE 84: BGe 18-Nov-13
321 * Fix a deadlock when GCing during a linda operation.
322 * Fix a compilation warning about an unused variable
323 * Get rid of uintptr_t to remove dependency on stdint.h
324 * Fix internal error at lane creation when the generator doesn't open any base library
325
326CHANGE 83: BGe 16-Nov-13
327 * version 3.7.2
328 * Fixed function returned by lanes.genlock() not handling numeric keys properly when release lock
329 * Enable lanes.genlock() to attempt lock with an optional "try" mode
330 * make EnableCrashingOnCrashes a one-time operation
331
332CHANGE 82: BGe 13-Nov-13
333 * Fix a case where an error could be raised inside a keeper state
334
335CHANGE 81: BGe 07-Nov-13
336 * Make set_finalizer(), set_debug_threadname(), cancel_test() and set_error_reporting() transferable from lane to lane
337 * Improved some DEBUGSPEW output
338
339CHANGE 80: BGe 06-Nov-13
340 * Fix a few compilation warnings about uninitialized variables
341 * Fixed a bad extern variable declaration resulting in multiple instances (crashes the Pelles-C build)
342
343CHANGE 79: BGe 04-Nov-13
344 * Fix lanes.nameof() crashing when encountering a light userdata
345
346CHANGE 78: BGe 25-Oct-13
347 * Fix windows build not exporting public 'deep' API
348 * Don't call on_state_create in keeper states, as it is no longer necessary
349 * Remove inclusion of stdint.h
350 * Fix windows build for WINVER > 0x400
351
352CHANGE 77: BGe 22-Oct-13
353 * version 3.7.1
354 * errors inside finalizers generate a full stack just like any other error
355
356CHANGE 76: BGe 10-Oct-13
357 * version 3.7.0
358 * fix lanes.threads() not being available in a lane where lanes.configure() settings didn't contain track_lanes although the initial configure() call did.
359
360CHANGE 75: BGe 7-Oct-13
361 * require "lanes".configure() sequence is only necessary at the first require "lanes".
362
363CHANGE 74: BGe 7-Oct-13
364 * fix a crash at application shutdown where in some situations we could deinitialize the protected allocator mutex while a lane was still using it.
365
366CHANGE 73: BGe 4-Oct-13
367 * fix timers broken by change 69
368
369CHANGE 72: BGe 3-Oct-13
370 * bugfix: no longer create a global named "lanes.core" inside lanes having "*" as library list
371
372CHANGE 71: BGe 30-Sept-13
373 * version 3.6.6
374 * properly handle cases when a Lua C module is a C function
375
376CHANGE 70: BGe 27-Step-13
377 * no longer call core.configure with dummy params when requiring lanes more than once (fixes potential multithreading issues with LuaJIT allocator)
378 * activated EnableCrashingOnCrashes() is active on Win32 debug builds
379 * fixed some comments in code
380
381CHANGE 69: BGe 26-Sept-13
382 * version 3.6.5
383 * Reduce memory footprint, simplify module order setup in conjuction with Lanes, and send over native functions a bit faster as well
384 * Lanes no longer has to internally require modules inside the keeper states because they no longer need a lookup database
385 the lookup name is stored as-is and actually converted in the destination state
386 * optimisation: bypass cache when sending native functions over
387 * removed all the KEEPER_MODEL_LUA code, as it can no longer work anyway
388
389CHANGE 68: BGe 24-Sept-13
390 * version 3.6.4
391 * Fix possible application hang at shutdown if a keeper state referenced a linda.
392
393CHANGE 67: BGe 2-Aug-13
394 * version 3.6.3
395 * lane:cancel(<negative-timeout>) only causes cancel_test() to return true but won't interrupt execution of the lane during linda operations
396
397CHANGE 66: BGe 31-Jul-13
398 * more explicit errors when trying to transfer unknown source functions (with new configure option verbose_errors)
399
400CHANGE 65: BGe 23-Jul-13
401 * default options wrap allocator around a mutex when run by LuaJIT
402
403CHANGE 64: BGe 20-Jul-13
404 * WIN32 builds against pre-Vista versions no longer use PulseEvent to fix occasional hangs when a wake event is missed
405
406CHANGE 63: BGe 20-May-13
407 * version 3.6.2
408 * WIN32 builds use condition variables instead of PulseEvent() when available.
409 * first steps toward fixing make-vc.cmd
410
411CHANGE 62: BGe 05-Apr-13
412 * version 3.6.1
413 * function lookup database population keeps the 'smaller' name in case of multiple hits, to remove the no-LUA_COMPAT_ALL restriction on Lua5.2 builds
414
415CHANGE 61: BGe 14-Mar-13
416 * version 3.6.0
417 * protect_allocator is an API change -> version bump
418 * bugfix: allocator protection should be done once per primary Lua state, not once only the first time ever Lanes is required
419
420CHANGE 60: BGe 13-Mar-13
421 * version 3.5.2
422 * stricter validation of with_timers config option: validator was accepting any non-boolean value
423 * new configuration option protect_allocator for VMs with thread unsafe allocators (such as LuaJIT)
424 * removed some obsolete bits of dead code
425
426CHANGE 59: BGe 12-Feb-13
427 * version 3.5.1
428 * new lanes.h header and API call luaopen_lanes_embedded() for embedders
429 * "lanes.core" is an acceptable library in the generator libs argument
430 * library "*" wildcard also opens lanes.core
431 * tweaked code for Xbox 360 build
432
433CHANGE 58: BGe 30-Jan-13
434 * version 3.5.0
435 * new: API lanes.require(), use it instead of regular require() for modules that export C functions you need to send over.
436 * new: lanes no longer require 'lanes.core' by default in every created state. Use {required={"lanes.core"}} if you need to transfer lanes functions.
437 * internal: because of the above, reworked the timer implementation to remove upvalue-dependency on lanes.core
438 * new: API lanes.timer_lane, to be able to operate on timer lane if need be
439 * improved: if a module is a full userdata, scan its metatable for function database population
440 * improved: on_state_create can be a Lua function
441 * changed: on_state_create is called after the base libraries are loaded
442 * package[loaders|searchers] is no longer transfered as function naming depends on slot order
443 * internal: changed separator from '.' to '/' in lookup databases to be able to distinguish search levels and dot coming from module names
444 * added some mode debug spew
445 * updated tests to reflect the above changes
446
447CHANGE 57: BGe 28-Jan-13
448 * More detailed DEBUG_SPEW logs
449 * A bit of code cosmetics
450
451CHANGE 56: BGe 25-Jan-13
452 * version 3.4.4
453 * bugfix: take into account the fact that "coroutine" is no longer part of base library in Lua 5.2
454 * bugfix: if "bit32" was listed in the libraries, it wouldn't open (library list parsing failing on digits)
455 * bugfix: Use luaL_requiref() to open standard libraries in Lua 5.2 as we should
456 * bugfix: any Lua state created by Lanes reuses the allocator function of the originating state
457 * bugfix: don't call on_state_create() while GC is suspended during lua state initialization
458
459CHANGE 55: BGe 24-Jan-13
460 * version 3.4.3
461 * raise an error if lane generator libs specification contains a lib more than once
462 * bit32 is a valid lib name in the libs specification (silently ignored by the Lua 5.1 build)
463 * improved lanes.nameof to search inside table- and userdata- metatables for an object's name
464 * bugfix: fixed an unwarranted error when trying to discover a function name upon a failed transfer
465 * contents of package.[path,cpath,preload,loaders|searchers] are pulled *only once* inside keeper states at initialisation
466 * Lua function upvalues equal to the global environment aren't copied by value, but bound to the destination's global environment
467 especially useful for Lua 5.2 _ENV
468 * bugfix: fixed loading of base libraries that didn't create the global tables when built for Lua 5.2
469
470CHANGE 54: BGe 10-Jan-13
471 * version 3.4.2
472 * Don't pull "package" settings in the timer lane
473 * removed a limitation preventing Lua functions with indirect recursive upvalue references from being transferable
474
475CHANGE 53: BGe 11-Dec-2012
476 * version 3.4.1
477 * new function lanes.timers(), returns a list of all active timers.
478
479CHANGE 52: BGe 03-Dec-2012
480 * linda:send() and linda:receive() no longer triggers string->number autocoercion when checking for the optional timeout argument:
481 a string is always a linda slot, even if coercible.
482
483CHANGE 51: BGe 27-Nov-2012
484 * linux flavors with older glibc use prctl instead of pthread_setname_np
485 * selfdestruct chain handling is now the same on all platforms
486
487CHANGE 50: BGe 22-Nov-2012
488 * bugfix: linda:set() no longer clears the storage limit
489
490CHANGE 49: BGe 21-Nov-2012
491 * fix application shutdown crash by not registering anything with atexit()
492 * rockspec for version v3.4.0
493
494CHANGE 48: BGe 25-Sep-2012
495 * version 3.4.0
496 * new method linda:dump() that outputs the full contents of a linda as a table, also linked to __towatch for Decoda support
497 * linda:receive() API change!
498 * instead of [val, key], linda:receive( timeout, key) returns [key, val]
499 * instead of [val, [...]], linda:receive( timeout, linda.batched key) returns [key, val[, ...]]
500 this is to unify the return values of regular and batched mode, and to be able to tell when batched mode is interrupted by a lane cancellation
501 * fixed Lua 5.2 build to take into account the "loaders"->"searchers" name change in 'package' module.
502 * a bit of html cleanup and added some infos in the documentation regarding the Lanes internals
503
504CHANGE 47: BGe 13-Sep-2012
505 * implemented set_debug_threadname() for pthread builds where possible
506 * refactored linda __tostring and __concat
507
508CHANGE 46: BGe 10-Sep-2012
509 * version 3.3.0
510 * lane.status can return "killed" if lane was forcefully killed with lanes:cancel()
511 * lane:join(): return nil, "killed" if called on a killed lane.
512 * lane[<n>]: produces [1] = nil, [2] = "killed" if the lane was killed
513 * lane:join(): fixed an assertion in debug builds when joining a lane forcefully cancelled with lane:cancel( <x>, true).
514 * indexing a lane with a string other than "join", "cancel" or "status" raises an error.
515 * fixed configure() to correctly apply defaults when they are missing from the provided settings
516 * added a shutdown_timeout to control the duration Lanes will wait for graceful termination of running lanes at application shutdown. Default is 0.25.
517
518CHANGE 45: BGe 21-Aug-2012
519 * keeper internals implemented in C instead of Lua for better performances
520 * fixed arguments checks in linda:limit() and linda:set()
521
522CHANGE 44: BGe 13-Aug-2012
523 * lanes code updated to build against Lua 5.1 and Lua 5.2
524 * removed the search for MSVCR80.DLL when building for MinGW32 since it no longer seems to be necessary
525
526CHANGE 43: BGe 09-Aug-2012
527 * fix possible crash at application shutdown when a race condition causes linda objects to be collected after the keeper states are cleaned up.
528
529CHANGE 42: BGe 06-Aug-2012
530 * lanes.linda() accepts an optional name for debug purposes
531
532CHANGE 41: BGe 07-Jul-2012
533 * lua51-lanes renamed lanes/core
534 * keeper state microcode is no longer embedded inside lanes.core, but located and loaded with package.loaders[2]
535 * changed rockspec build type from "make" to "builtin"
536
537CHANGE 40: BGe 26-Jun-2012
538 * when a transfered function is not found in source, guess its name to help the user find out what's wrong
539 * new function lanes.nameof()
540
541CHANGE 39: BGe 23-Jun-2012
542 * lanes.timer() accepts a first_secs=nil to stop a timer
543 * timer lane catches errors and prints them
544 * fixed some typos in manual
545
546CHANGE 38: BGe 11-Jun-2012
547 * linda:receive() batched mode now accepts a max_count optional argument
548
549CHANGE 37: BGe 4-Jun-2012 (fix and idea courtesy of sonoro1234)
550 * fixed thread_cancel() not working when called without argument
551 * new lane-global function set_error_reporting() to enable more data detailed data provided by lane_error()
552
553CHANGE 36 BGe 26-Apr-2012
554 * improved LuaJIT2 compatibility by handling "*" library set through luaL_openlibs()
555
556CHANGE 35 BGe 17-Feb-2012
557 * changed lanes.configure signature to receive a table instead of individual parameters
558 * added support for an on_state_create callback called to load custom functions in a state in addition to the base libraries
559
560CHANGE 34 BGe 14-Nov-2011
561 * removed packagepath and packagecpath options, replaced by a package table, whose fields path, cpath, loaders, preload are transfered
562 * code cleanup to facilitate transition between WIN32 and PTHREAD implementations
563 * tentative fix for desinit crashes when free running lanes are killed at process shutdown
564
565CHANGE 33 BGe 5-Nov-2011: Lanes version 3.0-beta
566 * process exit change: close everything at GC when main state closes, not when atexit() handlers are processed
567 * Lua 5.2-style module:
568 * module() is no longer used to implement lanes.lua
569 * a global "lanes" variable is no longer created when the module is required
570 * the Lanes module table is returned instead
571 * Lanes must be initialized before used:
572 * the first occurence of 'require "lanes"' produces a minimal interface that only contains a configure() function
573 * the remainder of the interface is made available once this function is called
574 * subsequent calls to configure() do nothing
575 * configure() controls the number of keeper states and the startup of timers
576 * LuaJIT 2 compatibility
577 * non-Lua functions are no longer copied by creating a C closure from a C pointer, but through 2-way lookup tables
578 * 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
579 * introduces a change in configuration .globals management: contents are copied *after* std libs are loaded
580 * new .required configuration entry to list modules that must be require()'ed before lane body is transferred
581 * lane:cancel() wakes up waiting lindas like what is done at lane shutdown
582
583CHANGE 32 BGe 14-May-2011
584 * raise an error when linda:send() has nothing to send
585
586CHANGE 31 BGe 17-Apr-2011
587 * linda uses a fast FIFO implementation to speed up data exchanges
588 * new linda:count() method
589 * new linda batched data read mode
590 * proper key type check in all linda methods
591 * fix setup-vc.cmd to support Visual Studio 2010 and Windows 7 64 bits
592 * bugfix: release keeper state mutex at desinit
593
594CHANGE 30 BGe 30-Mar-2011
595 * linda honors __tostring and __concat
596 * new accessor linda:keys(), to retrieve the list of keys with pending data inside a linda
597 * new lanes options packagepath and packagecpath, in case one needs to set them differently than the default
598
599CHANGE 29 BGe 1-Mar-2011
600 fixed potential crash at application shutdown when calling lua_close() on a killed thread's VM.
601 exposed cancel_test() in the lanes to enable manual testing for cancellation requests.
602 removed kludgy {globals={threadName}} support, replaced with a new function set_debug_threadname().
603
604CHANGE 28 BGe 18-Feb-2011
605 - moved keeper-related code in a separate source file
606 - keeper.lua is now embedded in text form instead of bytecode to improve LuaJIT2-compatibility
607
608CHANGE 27 BGe 17-Feb-2011
609 - we know Lanes is loaded in the master state, so we don't force it
610 to be required in every lane too when a linda deep userdata is copied
611 - Refactor lane proxy implementation: it is now a full userdata instead
612 of a table, and its methods are implemented in C instead of Lua
613 * its metatable is no longer accessible
614 * writing to the proxy raises an error
615 * it is no longer possible to overwrite its join() and cancel() methods
616 - when a deep userdata idfunc requests a module to be required, manually
617 check that it is not loaded before requiring it instead of relying on
618 the require function's loop detection feature
619 - when a module must be required, raise an error if the 'require' function
620 is not found in the target state
621
622CHANGE 26 BGe 14-Feb-2011:
623 Fixed application hang-up because keeper state was not released in case of errors thrown by
624 inter-state data copy for unsupported types
625
626CHANGE 25 BGe 12-Feb-2011:
627 Changed idfunc signature and contract to clarify that fact it is not lua-callable
628 and to be able to require the module it was exported from in the target lanes
629
630CHANGE 24 DPtr 25-Jan-2011:
631 Changed lanes.c to export functions as a module rather than writing them directly to the globals table.
632
633CHANGE 23 DPtr 23-Jan-2011:
634 Fixed bug where reference to Linda object was dropped for a short time ( crashing if GC was run during that time ).
635 Changed the atexit code to trip the timer thread's write signal.
636
637CHANGE 22 DPtr 19-Jan-2011:
638 Changed luaG_push_proxy to cache deep userdata proxies.
639
640CHANGE 21 (bugfixes) BGe 3-Jan-2011:
641 Several fixes by Martin Krpan:
642 - linda_send was waiting on the wrong signal
643 - buildfix when using i586-mingw32msvc-gcc cross compiler
644 - lanes_h:cancel() returns a boolean as it should
645 - timers could get blocked sometimes because they were initialized with negative values
646 - prepare_timeout could generate an illegal setting
647
648CHANGE 20 BGe 3-Dec-2010:
649 Enable to specify a string as lane code instead of a function so that we dont use lua_dump, which
650 isn't supported by LuaJIT.
651
652CHANGE 19 BGe 2-Dec-2010:
653 No longer rely on global function 'tostring' to generate unique identifiers when caching data being transfered through la linda. Should fix a compatilibity issue with LuaJIT2.
654
655CHANGE 18 BGe 6-Oct-2010:
656 Fixed 'memory leak' in some situations where a free running lane is collected before application shutdown
657 A bit of code cleanup
658
659CHANGE 17 BGe 21-Sept-2010:
660 Fixed stupid compilation errors.
661
662CHANGE 16 PLM 24-Aug-2010:
663 Releasing memory at gc / atexit.
664 Finalizers actually get error strings.
665 Fixed missing argument propagation in lane:cancel
666 Added variable threadName sent trough globals-table. Set in s_lane, and in debuggers on windows.
667 Added argument checking for linda-objects, where missing them caused crashes.
668
669CHANGE 15 (minor) BGe 27-Jul-2010:
670 Version bump for a true upgrade release (2.0.4 package was only a renamed 2.0.3)
671
672CHANGE 14 (bug fix) BGe 09-Jul-2010:
673 Fixed lane status to be correctly returned as "waiting" when it should.
674
675CHANGE 13 (fix for multithreaded host apps) AKa 24-Jun-2009:
676 <borisusun-at-gmail> mentioned Lanes expects the host application to be singlethreaded,
677 and there are troubles if Lanes is used from multiple threads, opened by the host
678 (before requiring Lanes). This is true, and fix should now be in place.
679
680CHANGE 12 (bug fix on Windows, 2.0.3) AKa 25-Jan-2009:
681 Did CHANGE 9 the way it should be done.
682
683CHANGE 11 (new feature, 2.0.3) AKa 23-Jan-2009:
684 Finalizers ('set_finalizer()') for being able to do cleanup of a lane's
685 resources, whether it returned succesfully or via an error.
686
687CHANGE 10 (new feature, 2.0.3) AKa 23-Jan-2009:
688 Call stack showing where an error occurred is not merged with the error
689 message, but delivered as a separate stack table ({ "filename:line" [, ...] }).
690 Getting call stacks of errorred lanes is now possible.
691
692CHANGE 9 (bug fix on Windows) AKa 10-Dec-2008 (> 2.0.2):
693 Applied patch from Kriss Daniels to avoid issues on 'now_time()' in Win32
694 (http://luaforge.net/forum/forum.php?thread_id=22704&forum_id=1781).
695
696CHANGE 8 (bug fix) AKa 26-Oct-2008:
697 Avoids occasional segfault at process exit (on multicore CPUs). Does this
698 by keeping track of "free running" threads (s.a. the time thread) and
699 cancelling them at process exit.
700
701 Tested (2.0.2) on Linux 64,x86, OS X, WinXP.
702
703CHANGE 7 (bug fix) AKa 15-Oct-2008:
704 Recursive functions that use themselves as direct upvalue can now be
705 passed to other lanes, and used as a lane function.
706
707CHANGE 6 (bug fix) AKa 15-Oct-2008:
708 Added local caches of the following to src/lanes.lua (was otherwise getting
709 errors at least in 'tests/irayo_recursive.lua').
710
711 local assert= assert
712 local string_gmatch= assert( string.gmatch )
713 local select= assert( select )
714 local type= assert( type )
715 local pairs= assert( pairs )
716 local tostring= assert( tostring )
717 local error= assert( error )
718 local setmetatable= assert( setmetatable )
719 local rawget= assert( rawget )
720
721 Thanks to Irayo for detecting and reporting this.
722
723CHANGE 5 (new feature):
724 Modifying Makefile so it's better suited to LuaRocks.
725
726CHANGE 4 (new feature):
727 Metatable copying, allowing Lua objects to be copied across lanes.
728
729CHANGE 3 (bug fix) AKa 5-Aug-2008:
730 The '__gc' method was not tied to thread userdata, at all. Caused memory
731 lifespan problems at least on OS X when threads were cancelled (EINVAL).
732
733CHANGE 2 (bug fix) AKa 5-Aug-2008:
734 Better calculation of timeouts, always making them absolute (even in Win32)
735 to allow for events that wake the lane up but don't read/write the Linda
736 key that it was observing.
737
738CHANGE 1 (bug fix) AKa 4-Aug-2008:
739 Signalling woke up only one waiting thread, not all. This caused i.e.
740 receive to not wake up if there was another thread waiting on the same
741 Linda object.
742
743 PThread fix: using 'pthread_cond_broadcast()' instead of 'pthread_cond_signal()'
744 Win32 fix: using manual events and 'PulseEvent()'
745 5
746(end) 6(end)