aboutsummaryrefslogtreecommitdiff
path: root/CHANGES
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CHANGES14
1 files changed, 9 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 713249c..17a79f7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,11 +1,12 @@
1CHANGES: 1CHANGES:
2 2
3CHANGE 2: BGe 27-Nov-24 3CHANGE 2: BGe 05-Jun-25
4 * Internal changes 4 * Internal changes
5 - Lanes is implemented in C++20: thread, condition_variable, mutex, string_view, variant, lambdas, templates, and more! 5 - Lanes is implemented in C++20: thread, condition_variable, mutex, string_view, variant, lambdas, templates, and more!
6 - Almost all platform-specific code is gone (only a small bit for thread priority and affinity remains). 6 - Almost all platform-specific code is gone (only a small bit for thread priority and affinity remains).
7 - Decoda support inactive by default. 7 - Decoda support inactive by default.
8 - Deep userdata interface fully revamped to C++20 too. 8 - Deep userdata interface fully revamped to C++20 too.
9 - Supports Lua 5.5
9 * Lanes API changes 10 * Lanes API changes
10 - Version is now 4.0.0 11 - Version is now 4.0.0
11 - Lanes module: 12 - Lanes module:
@@ -14,8 +15,9 @@ CHANGE 2: BGe 27-Nov-24
14 - lanes.sleep() accepts a new argument "indefinitely" to block forever (until hard cancellation is received). 15 - lanes.sleep() accepts a new argument "indefinitely" to block forever (until hard cancellation is received).
15 - function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name. 16 - function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name.
16 - new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes. 17 - new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes.
18 If some lanes still run after the finalizer, Universe::__gc with raise an error or freeze, depending on its return value.
17 - new function lanes.collectgarbage(), to force a full GC cycle in the keeper states. 19 - new function lanes.collectgarbage(), to force a full GC cycle in the keeper states.
18 If some lanes still run after the finalizer, Lanes with throw an exception or freeze, depending on its return value. 20 - new function lanes.thread_priority_range(), to query the valid range of priorities.
19 - Configuration settings: 21 - Configuration settings:
20 - Boolean parameters only accept boolean values. 22 - Boolean parameters only accept boolean values.
21 - allocator provider function is called with a string hint to distinguish internal allocations, lane and keeper states. 23 - allocator provider function is called with a string hint to distinguish internal allocations, lane and keeper states.
@@ -26,6 +28,8 @@ CHANGE 2: BGe 27-Nov-24
26 - verbose_errors removed. Use lane error_trace_level instead. 28 - verbose_errors removed. Use lane error_trace_level instead.
27 - with_timers is false by default. 29 - with_timers is false by default.
28 - Non-deep full userdata are processed during module registration just like ordinary module C functions, making them valid transferable (up)values (for example: io.stdin). 30 - Non-deep full userdata are processed during module registration just like ordinary module C functions, making them valid transferable (up)values (for example: io.stdin).
31 - thread API errors cause a Lua error instead of aborting the program.
32 - thread priorities can now be set using the native range of values, if desired.
29 - Lanes: 33 - Lanes:
30 - Can no longer be "killed" by hard-stopping their thread without any resource cleanup (see lane:cancel()). 34 - Can no longer be "killed" by hard-stopping their thread without any resource cleanup (see lane:cancel()).
31 - lanes.gen() settings: 35 - lanes.gen() settings:
@@ -34,10 +38,9 @@ CHANGE 2: BGe 27-Nov-24
34 - name added. Can be used to set the name early (before the lane body calls lane_threadname()). 38 - name added. Can be used to set the name early (before the lane body calls lane_threadname()).
35 - New generator lanes.coro() to start a lane as a coroutine. 39 - New generator lanes.coro() to start a lane as a coroutine.
36 - New __close metamethod that calls join(). 40 - New __close metamethod that calls join().
37 - lane:join() 41 - lane:join() returns nil, error in case of problem, else returns true followed by the lane body return values.
38 - Returns nil, error in case of problem.
39 - Forces lane function body must return a non-nil first value on success because of the above.
40 - lane:get_debug_threadname() renamed get_threadname(). 42 - lane:get_debug_threadname() renamed get_threadname().
43 - cancel_test() returns "soft"/"hard" instead of true when a cancellation request is active.
41 - Lindas: 44 - Lindas:
42 - lanes.linda() 45 - lanes.linda()
43 - Arguments can be provided in any order. 46 - Arguments can be provided in any order.
@@ -45,6 +48,7 @@ CHANGE 2: BGe 27-Nov-24
45 - Providing "auto" as name when constructing a Linda cause Lanes to provide a name built from the source location of the construction. 48 - Providing "auto" as name when constructing a Linda cause Lanes to provide a name built from the source location of the construction.
46 - Specifying a group to lanes.linda() is mandatory when Lanes is configured with user Keepers. 49 - Specifying a group to lanes.linda() is mandatory when Lanes is configured with user Keepers.
47 - linda:deep() result no longer contains the raw C pointer of the Linda object. 50 - linda:deep() result no longer contains the raw C pointer of the Linda object.
51 - new function linda:receive_batched() to replace linda:receive(linda.batched). linda.batched special value is removed.
48 - linda :receive(), :send(), :get(), :set(), :limit() return nil, error in case of problem. Returned values in case of success change too. 52 - linda :receive(), :send(), :get(), :set(), :limit() return nil, error in case of problem. Returned values in case of success change too.
49 - linda:limit() can be used to read the value if no new limit is provided. 53 - linda:limit() can be used to read the value if no new limit is provided.
50 - linda:restrict() can restrain the use of send/receive or set/get on any key. 54 - linda:restrict() can restrain the use of send/receive or set/get on any key.