diff options
| author | Benoit Germain <benoit.germain@ubisoft.com> | 2024-07-04 11:30:54 +0200 |
|---|---|---|
| committer | Benoit Germain <benoit.germain@ubisoft.com> | 2024-07-04 11:30:54 +0200 |
| commit | 202355f9028ba04824de205f2b637c401d6989fa (patch) | |
| tree | 740258f341b140d30722c437679ad73c48c35f37 | |
| parent | dc55ffcf9cf3592b822bbdb90b63c72ed61ec668 (diff) | |
| download | lanes-202355f9028ba04824de205f2b637c401d6989fa.tar.gz lanes-202355f9028ba04824de205f2b637c401d6989fa.tar.bz2 lanes-202355f9028ba04824de205f2b637c401d6989fa.zip | |
Reorganize CHANGES contents
| -rw-r--r-- | CHANGES | 75 |
1 files changed, 40 insertions, 35 deletions
| @@ -1,49 +1,54 @@ | |||
| 1 | CHANGES: | 1 | CHANGES: |
| 2 | 2 | ||
| 3 | CHANGE 2: BGe 11-Jun-24 | 3 | CHANGE 2: BGe 04-Jul-24 |
| 4 | * Internal changes | ||
| 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). | ||
| 7 | - Decoda support inactive by default. | ||
| 8 | - Deep userdata interface fully revamped to C++20 too. | ||
| 4 | * Lanes API changes | 9 | * Lanes API changes |
| 5 | - Version is now 4.0.0 | 10 | - Version is now 4.0.0 |
| 6 | - Lanes configuration settings: | 11 | - Lanes module: |
| 7 | - Boolean parameters only accept boolean values. | 12 | - lanes.sleep() accepts a new argument "indefinitely" to block forever (until hard cancellation is received). |
| 8 | - allocator provider function is called with a string hint to distinguish internal allocations, lane and keeper states. | 13 | - function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name. |
| 9 | - demote_full_userdata removed. Use __lanesconvert instead. | ||
| 10 | - keepers_gc_threshold added. Controls when GC runs inside keepers. | ||
| 11 | - nb_keepers changed to nb_user_keepers. limited to 100 keepers on top of the internal keeper used by the timer Linda. | ||
| 12 | - strip_functions added. Only useful for Lua 5.3+. | ||
| 13 | - verbose_errors removed. Use lane error_trace_level instead. | ||
| 14 | - with_timers is false by default. | ||
| 15 | - Full userdata conversion: | ||
| 16 | - __lanesignore removed. Use __lanesconvert instead. | ||
| 17 | - __lanesconvert added. | ||
| 18 | - Lanes API and behavior: | ||
| 19 | - new generator lanes.coro() to start a lane as a coroutine. | ||
| 20 | - new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes. | 14 | - new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes. |
| 21 | - If some lanes still run at shutdown, Lanes with throw an exception (or freeze, this is to be decided). | 15 | If some lanes still run after the finalizer, Lanes with throw an exception or freeze, depending on its return value. |
| 22 | - lanes have a __close metamethod that calls join(). | 16 | - Configuration settings: |
| 23 | - lanes can no longer be "killed" by hard-stopping their thread without any resource cleanup (see lane:cancel()). | 17 | - Boolean parameters only accept boolean values. |
| 24 | - lane:join() returns nil, error in case of problem. | 18 | - allocator provider function is called with a string hint to distinguish internal allocations, lane and keeper states. |
| 19 | - demote_full_userdata removed. Use __lanesconvert instead (see below). | ||
| 20 | - keepers_gc_threshold added. Controls when GC runs inside keepers. | ||
| 21 | - nb_keepers changed to nb_user_keepers. limited to 100 keepers on top of the internal keeper used by the timer Linda. | ||
| 22 | - strip_functions added. Only useful for Lua 5.3+. | ||
| 23 | - verbose_errors removed. Use lane error_trace_level instead. | ||
| 24 | - with_timers is false by default. | ||
| 25 | - Lanes: | ||
| 26 | - Can no longer be "killed" by hard-stopping their thread without any resource cleanup (see lane:cancel()). | ||
| 27 | - lanes.gen() settings: | ||
| 28 | - stricter check of base libraries (can raise an error if it doesn't exist in the Lua flavor it's built against). | ||
| 29 | - error_trace_level added. Replaces the global verbose_errors setting. | ||
| 30 | - name added. Can be used to set the name early (before the lane body calls lane_threadname()). | ||
| 31 | - New generator lanes.coro() to start a lane as a coroutine. | ||
| 32 | - New __close metamethod that calls join(). | ||
| 33 | - lane:join() | ||
| 34 | - Returns nil, error in case of problem. | ||
| 35 | - Forces lane function body must return a non-nil first value on success because of the above. | ||
| 25 | - lane:get_debug_threadname() renamed get_threadname(). | 36 | - lane:get_debug_threadname() renamed get_threadname(). |
| 26 | - lane function body must return a non-nil first value on success if lane is waited upon with lane:join(). | ||
| 27 | - lanes.sleep() accept a new argument "indefinitely" to block forever (until hard cancellation is received). | ||
| 28 | - lanes.gen() is stricter wrt base libraries (can raise an error if it doesn't exist in the Lua flavor it's built against). | ||
| 29 | - function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name. | ||
| 30 | - Lindas: | 37 | - Lindas: |
| 31 | - providing "auto" as name when constructing a Linda cause Lanes to provide a name built from the source location of the construction. | 38 | - lanes.linda() |
| 32 | - specifying a group to lanes.linda() is mandatory when Lanes is configured with user Keepers. | 39 | - Arguments can be provided in any order. |
| 40 | - Accepts a callback to be invoked by __close (see below). | ||
| 41 | - Providing "auto" as name when constructing a Linda cause Lanes to provide a name built from the source location of the construction. | ||
| 42 | - Specifying a group to lanes.linda() is mandatory when Lanes is configured with user Keepers. | ||
| 33 | - linda:deep() result no longer contains the raw C pointer of the Linda object. | 43 | - linda:deep() result no longer contains the raw C pointer of the Linda object. |
| 34 | - linda :receive(), :send(), :get(), :set(), :limit() return nil, error in case of problem. Returned values in case of success change too. | 44 | - linda :receive(), :send(), :get(), :set(), :limit() return nil, error in case of problem. Returned values in case of success change too. |
| 35 | - linda:limit() can be used to read the value if no new limit is provided. | 45 | - linda:limit() can be used to read the value if no new limit is provided. |
| 36 | - Lindas have a __close metamethod that calls any suitable handler that was provided at Linda creation. | 46 | - New __close metamethod that calls any suitable handler that was provided at Linda creation. |
| 37 | - linda:dump outputs <key>.limit as 'unlimited' instead of -1 for unlimited keys. | 47 | - linda:dump outputs <key>.limit as 'unlimited' instead of -1 for unlimited keys. |
| 38 | - deep userdata are an acceptable key to send data into (for example, another linda). | 48 | - Deep userdata are an acceptable key to send data into (for example, another linda). |
| 39 | - Lane generator settings: | 49 | - Full userdata conversion: |
| 40 | - error_trace_level added. Replaces the global verbose_errors setting. | 50 | - __lanesconvert added. |
| 41 | - name added. Can be used to set the name early (before the lane body calls lane_threadname()). | 51 | - __lanesignore removed. Use __lanesconvert instead. |
| 42 | * Internal changes | ||
| 43 | - Lanes is implemented in C++20: thread, condition_variable, mutex, string_view, variant, and more! | ||
| 44 | - Almost all platform-specific code is gone (only a small bit for thread priority and affinity remains). | ||
| 45 | - Decoda support inactive by default. | ||
| 46 | - Deep userdata interface fully revamped to C++20 too. | ||
| 47 | 52 | ||
| 48 | CHANGE 1: BGe 9-Apr-24 | 53 | CHANGE 1: BGe 9-Apr-24 |
| 49 | * reset changelog, next entry will list API changes since last C-implementation. | 54 | * reset changelog, next entry will list API changes since last C-implementation. |
