-
Notifications
You must be signed in to change notification settings - Fork 97
/
CHANGES
63 lines (60 loc) · 4.61 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
CHANGES:
CHANGE 2: BGe 27-Nov-24
* Internal changes
- Lanes is implemented in C++20: thread, condition_variable, mutex, string_view, variant, lambdas, templates, and more!
- Almost all platform-specific code is gone (only a small bit for thread priority and affinity remains).
- Decoda support inactive by default.
- Deep userdata interface fully revamped to C++20 too.
* Lanes API changes
- Version is now 4.0.0
- Lanes module:
- lanes.register() is also available as lanes_register() in the exported C API.
- lanes.sleep() accepts a new argument "indefinitely" to block forever (until hard cancellation is received).
- function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name.
- new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes.
- new function lanes.collectgarbage(), to force a full GC cycle in the keeper states.
If some lanes still run after the finalizer, Lanes with throw an exception or freeze, depending on its return value.
- Configuration settings:
- Boolean parameters only accept boolean values.
- allocator provider function is called with a string hint to distinguish internal allocations, lane and keeper states.
- demote_full_userdata removed. Use __lanesconvert instead (see below).
- keepers_gc_threshold added. Controls when GC runs inside keepers.
- nb_keepers changed to nb_user_keepers. limited to 100 keepers on top of the internal keeper used by the timer Linda.
- strip_functions added. Only useful for Lua 5.3+.
- verbose_errors removed. Use lane error_trace_level instead.
- with_timers is false by default.
- 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).
- Lanes:
- Can no longer be "killed" by hard-stopping their thread without any resource cleanup (see lane:cancel()).
- lanes.gen() settings:
- stricter check of base libraries (can raise an error if it doesn't exist in the Lua flavor it's built against).
- error_trace_level added. Replaces the global verbose_errors setting.
- name added. Can be used to set the name early (before the lane body calls lane_threadname()).
- New generator lanes.coro() to start a lane as a coroutine.
- New __close metamethod that calls join().
- lane:join()
- Returns nil, error in case of problem.
- Forces lane function body must return a non-nil first value on success because of the above.
- lane:get_debug_threadname() renamed get_threadname().
- Lindas:
- lanes.linda()
- Arguments can be provided in any order.
- Accepts a callback to be invoked by __close (see below).
- Providing "auto" as name when constructing a Linda cause Lanes to provide a name built from the source location of the construction.
- Specifying a group to lanes.linda() is mandatory when Lanes is configured with user Keepers.
- linda:deep() result no longer contains the raw C pointer of the Linda object.
- linda :receive(), :send(), :get(), :set(), :limit() return nil, error in case of problem. Returned values in case of success change too.
- linda:limit() can be used to read the value if no new limit is provided.
- linda:restrict() can restrain the use of send/receive or set/get on any key.
- New __close metamethod that calls any suitable handler that was provided at Linda creation.
- linda:dump() outputs <key>.limit as 'unlimited' instead of -1 for unlimited keys.
- linda:wake() can wake up threads waiting for a Linda without doing any I/O on it.
- linda.status reads the cancel status of the Linda.
- new function linda:collectgarbage() to force collection of all stale data in the associated keeper.
- Deep userdata are an acceptable key to send data into (for example, another linda).
- Full userdata conversion:
- __lanesconvert added.
- __lanesignore removed. Use __lanesconvert instead.
CHANGE 1: BGe 9-Apr-24
* reset changelog, next entry will list API changes since last C-implementation.
(end)