diff options
Diffstat (limited to '')
-rw-r--r-- | CHANGES | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -1,11 +1,12 @@ | |||
1 | CHANGES: | 1 | CHANGES: |
2 | 2 | ||
3 | CHANGE 2: BGe 27-Nov-24 | 3 | CHANGE 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. |