diff options
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 744 |
1 files changed, 2 insertions, 742 deletions
@@ -1,746 +1,6 @@ | |||
1 | CHANGES: | 1 | CHANGES: |
2 | 2 | ||
3 | CHANGE 159: BGe 19-Mar-24 | 3 | CHANGE 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 | |||
6 | CHANGE 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 | |||
10 | CHANGE 157: Mitalie 17-Aug-23 | ||
11 | * Prevent crash on linux as non-root | ||
12 | * internal version bumped to 3.16.2 | ||
13 | |||
14 | CHANGE 156: BGe 9-Aug-23 | ||
15 | * new configuration option .internal_allocator to help LuaJIT users. | ||
16 | * internal version bumped to 3.16.1 | ||
17 | |||
18 | CHANGE 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 | |||
21 | CHANGE 154: eligovision 1-Mar-22 | ||
22 | * Fix 3-parametrized __lanesclone | ||
23 | |||
24 | CHANGE 153: BGe 17-Feb-22 | ||
25 | * NEVER use allocator obtained from lua_getallocf to allocate stuff manually when compiling for LuaJIT | ||
26 | |||
27 | CHANGE 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 | |||
31 | CHANGE 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 | |||
35 | CHANGE 150: BGe 22-Sep-21 | ||
36 | * fix require() wrapper to return all values returned by original require() | ||
37 | |||
38 | CHANGE 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 | |||
42 | CHANGE 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 | |||
45 | CHANGE 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 | |||
49 | CHANGE 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 | |||
53 | CHANGE 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 | |||
57 | CHANGE 144: BGe 28-Nov-18 | ||
58 | * some code refacto | ||
59 | |||
60 | CHANGE 143: BGe 27-Nov-18 | ||
61 | * Lua 5.4 support | ||
62 | * __lanesclone and lanes.nameof support userdata uservalue(s) | ||
63 | |||
64 | CHANGE 142: BGe 26-Nov-18 | ||
65 | * Version is available in public header | ||
66 | |||
67 | CHANGE 141: BGe 25-Nov-18 | ||
68 | * protect_allocator configure option is gone, long live allocator (more embedders-friendly) | ||
69 | |||
70 | CHANGE 140: BGe 22-Nov-18 | ||
71 | * Raise an error instead of crashing when attempting to transfer a non-deep full userdata | ||
72 | |||
73 | CHANGE 139: BGe 21-Nov-18 | ||
74 | * more DEBUGSPEW | ||
75 | |||
76 | CHANGE 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 | |||
81 | CHANGE 137: BGe 15-Nov-18 | ||
82 | * Deep userdata must embed DeepPrelude to save an allocation (also changes Deep protocol) | ||
83 | |||
84 | CHANGE 136: BGe 15-Nov-18 | ||
85 | * split linda code in a separate file | ||
86 | * rockspec for version v3.13.0 | ||
87 | |||
88 | CHANGE 135: BGe 11-Nov-18 | ||
89 | * fix a bunch of compilation warnings | ||
90 | |||
91 | CHANGE 134: BGe 3-Dec-13 | ||
92 | * new API lanes.set_thread_affinity() | ||
93 | * set_debug_threadname implemented with win32 pthread | ||
94 | |||
95 | CHANGE 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 | |||
99 | CHANGE 132: BGe 7-Nov-18 | ||
100 | * __lanesclone mechanism should actually work now | ||
101 | |||
102 | CHANGE 131: BGe 7-Nov-18 | ||
103 | * Fix potential crash at application shutdown when deep userdata were created before Lanes is required | ||
104 | |||
105 | CHANGE 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 | |||
109 | CHANGE 129: BGe 2-Nov-18 | ||
110 | * Bumped version to 3.13 | ||
111 | * fix error when autodetecting protect_allocator when running under LuaJIT | ||
112 | |||
113 | CHANGE 128: BGe 31-Oct-18 | ||
114 | * Better default value autodetection for protect_allocator setting | ||
115 | |||
116 | CHANGE 127: BGe 30-Oct-18 | ||
117 | * restrict internal light userdata constants to 47 significant bits when building against LuaJIT-x64 | ||
118 | |||
119 | CHANGE 126: Bge 29-Oct-18 | ||
120 | * Add deep user data cloning support | ||
121 | |||
122 | CHANGE 125: BGe 25-Oct-18 | ||
123 | * Fix Lanes build by reorganizing types around a bit | ||
124 | |||
125 | CHANGE 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 | |||
129 | CHANGE 123: BGe 2-Aug-17 | ||
130 | * added support for user-provided __gc in deep userdata | ||
131 | * more complete deep userdata sample | ||
132 | |||
133 | CHANGE 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 | |||
137 | CHANGE 121: BGe 13-Jun-17 | ||
138 | * no longer internally assert when an error message is not a string | ||
139 | |||
140 | CHANGE 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 | |||
145 | CHANGE 119: BGe 10-May-17 | ||
146 | * Fixed some compilation warnings | ||
147 | * Improved LuaJIT support | ||
148 | |||
149 | CHANGE 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 | |||
153 | CHANGE 117: mpeterv 21-Nov-16 | ||
154 | * Fix an implicit number-to-string conversion | ||
155 | |||
156 | CHANGE 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 | |||
161 | CHANGE 115: BGe 18-Sep-14 | ||
162 | * bumped version to 3.9.7 | ||
163 | * new function lanes.sleep() | ||
164 | |||
165 | CHANGE 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 | |||
169 | CHANGE 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 | |||
174 | CHANGE 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 | |||
179 | CHANGE 111 BGe 24-Apr-14 | ||
180 | * fixed linda:send() possibly returning an undefined value | ||
181 | |||
182 | CHANGE 110 Stepets 20-Apr-14 | ||
183 | * fix LuaJIT detection issues | ||
184 | |||
185 | CHANGE 109 BGe 03-Apr-14 | ||
186 | * moved some Lua-version compatibility code in separate source files | ||
187 | |||
188 | CHANGE 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 | |||
194 | CHANGE 107: BGe 19-Mar-14 | ||
195 | * Make sure we don't mutex-wrap require() more than once, just in case | ||
196 | |||
197 | CHANGE 106: BGe 17-Mar-14 | ||
198 | * Fixed crash when using protect_allocator option | ||
199 | |||
200 | CHANGE 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 | |||
206 | CHANGE 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 | |||
216 | CHANGE 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 | |||
219 | CHANGE 102: BGe 18-Feb-14 | ||
220 | * raise an error instead of dereferencing a NULL pointer on deep userdata creation and lane struct creation | ||
221 | |||
222 | CHANGE 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 | |||
229 | CHANGE 100: BGe 17-Feb-14 | ||
230 | * lanes.linda() accepts an optional integer group to give control on keeper state repartition | ||
231 | |||
232 | CHANGE 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 | |||
239 | CHANGE 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 | |||
246 | CHANGE 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 | |||
252 | CHANGE 96: BGe 24-Jan-14 | ||
253 | * another Lua stack overflow fix when sending complex function through lindas or as lane body | ||
254 | |||
255 | CHANGE 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 | |||
261 | CHANGE 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 | |||
266 | CHANGE 93: BGe 20-Jan-14 | ||
267 | * slightly improve linda performance when the producer/consumer scenario leaves leave the key empty | ||
268 | |||
269 | CHANGE 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 | |||
277 | CHANGE 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 | |||
282 | CHANGE 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 | |||
293 | CHANGE 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 | |||
300 | CHANGE 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 | |||
304 | CHANGE 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 | |||
309 | CHANGE 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 | |||
314 | CHANGE 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 | |||
320 | CHANGE 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 | |||
326 | CHANGE 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 | |||
332 | CHANGE 82: BGe 13-Nov-13 | ||
333 | * Fix a case where an error could be raised inside a keeper state | ||
334 | |||
335 | CHANGE 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 | |||
339 | CHANGE 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 | |||
343 | CHANGE 79: BGe 04-Nov-13 | ||
344 | * Fix lanes.nameof() crashing when encountering a light userdata | ||
345 | |||
346 | CHANGE 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 | |||
352 | CHANGE 77: BGe 22-Oct-13 | ||
353 | * version 3.7.1 | ||
354 | * errors inside finalizers generate a full stack just like any other error | ||
355 | |||
356 | CHANGE 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 | |||
360 | CHANGE 75: BGe 7-Oct-13 | ||
361 | * require "lanes".configure() sequence is only necessary at the first require "lanes". | ||
362 | |||
363 | CHANGE 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 | |||
366 | CHANGE 73: BGe 4-Oct-13 | ||
367 | * fix timers broken by change 69 | ||
368 | |||
369 | CHANGE 72: BGe 3-Oct-13 | ||
370 | * bugfix: no longer create a global named "lanes.core" inside lanes having "*" as library list | ||
371 | |||
372 | CHANGE 71: BGe 30-Sept-13 | ||
373 | * version 3.6.6 | ||
374 | * properly handle cases when a Lua C module is a C function | ||
375 | |||
376 | CHANGE 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 | |||
381 | CHANGE 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 | |||
389 | CHANGE 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 | |||
393 | CHANGE 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 | |||
397 | CHANGE 66: BGe 31-Jul-13 | ||
398 | * more explicit errors when trying to transfer unknown source functions (with new configure option verbose_errors) | ||
399 | |||
400 | CHANGE 65: BGe 23-Jul-13 | ||
401 | * default options wrap allocator around a mutex when run by LuaJIT | ||
402 | |||
403 | CHANGE 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 | |||
406 | CHANGE 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 | |||
411 | CHANGE 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 | |||
415 | CHANGE 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 | |||
420 | CHANGE 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 | |||
426 | CHANGE 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 | |||
433 | CHANGE 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 | |||
447 | CHANGE 57: BGe 28-Jan-13 | ||
448 | * More detailed DEBUG_SPEW logs | ||
449 | * A bit of code cosmetics | ||
450 | |||
451 | CHANGE 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 | |||
459 | CHANGE 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 | |||
470 | CHANGE 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 | |||
475 | CHANGE 53: BGe 11-Dec-2012 | ||
476 | * version 3.4.1 | ||
477 | * new function lanes.timers(), returns a list of all active timers. | ||
478 | |||
479 | CHANGE 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 | |||
483 | CHANGE 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 | |||
487 | CHANGE 50: BGe 22-Nov-2012 | ||
488 | * bugfix: linda:set() no longer clears the storage limit | ||
489 | |||
490 | CHANGE 49: BGe 21-Nov-2012 | ||
491 | * fix application shutdown crash by not registering anything with atexit() | ||
492 | * rockspec for version v3.4.0 | ||
493 | |||
494 | CHANGE 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 | |||
504 | CHANGE 47: BGe 13-Sep-2012 | ||
505 | * implemented set_debug_threadname() for pthread builds where possible | ||
506 | * refactored linda __tostring and __concat | ||
507 | |||
508 | CHANGE 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 | |||
518 | CHANGE 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 | |||
522 | CHANGE 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 | |||
526 | CHANGE 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 | |||
529 | CHANGE 42: BGe 06-Aug-2012 | ||
530 | * lanes.linda() accepts an optional name for debug purposes | ||
531 | |||
532 | CHANGE 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 | |||
537 | CHANGE 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 | |||
541 | CHANGE 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 | |||
546 | CHANGE 38: BGe 11-Jun-2012 | ||
547 | * linda:receive() batched mode now accepts a max_count optional argument | ||
548 | |||
549 | CHANGE 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 | |||
553 | CHANGE 36 BGe 26-Apr-2012 | ||
554 | * improved LuaJIT2 compatibility by handling "*" library set through luaL_openlibs() | ||
555 | |||
556 | CHANGE 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 | |||
560 | CHANGE 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 | |||
565 | CHANGE 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 | |||
583 | CHANGE 32 BGe 14-May-2011 | ||
584 | * raise an error when linda:send() has nothing to send | ||
585 | |||
586 | CHANGE 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 | |||
594 | CHANGE 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 | |||
599 | CHANGE 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 | |||
604 | CHANGE 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 | |||
608 | CHANGE 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 | |||
622 | CHANGE 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 | |||
626 | CHANGE 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 | |||
630 | CHANGE 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 | |||
633 | CHANGE 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 | |||
637 | CHANGE 22 DPtr 19-Jan-2011: | ||
638 | Changed luaG_push_proxy to cache deep userdata proxies. | ||
639 | |||
640 | CHANGE 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 | |||
648 | CHANGE 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 | |||
652 | CHANGE 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 | |||
655 | CHANGE 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 | |||
659 | CHANGE 17 BGe 21-Sept-2010: | ||
660 | Fixed stupid compilation errors. | ||
661 | |||
662 | CHANGE 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 | |||
669 | CHANGE 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 | |||
672 | CHANGE 14 (bug fix) BGe 09-Jul-2010: | ||
673 | Fixed lane status to be correctly returned as "waiting" when it should. | ||
674 | |||
675 | CHANGE 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 | |||
680 | CHANGE 12 (bug fix on Windows, 2.0.3) AKa 25-Jan-2009: | ||
681 | Did CHANGE 9 the way it should be done. | ||
682 | |||
683 | CHANGE 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 | |||
687 | CHANGE 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 | |||
692 | CHANGE 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 | |||
696 | CHANGE 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 | |||
703 | CHANGE 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 | |||
707 | CHANGE 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 | |||
723 | CHANGE 5 (new feature): | ||
724 | Modifying Makefile so it's better suited to LuaRocks. | ||
725 | |||
726 | CHANGE 4 (new feature): | ||
727 | Metatable copying, allowing Lua objects to be copied across lanes. | ||
728 | |||
729 | CHANGE 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 | |||
733 | CHANGE 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 | |||
738 | CHANGE 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) |