|
1 | | -## 5.0.0 |
2 | | - |
3 | | -### PubSub improvements |
4 | | -- [x] avoid strdupping topic when creating pubsub_msg_t |
5 | | -- [x] Only use one pubsub msg for every module, instead of creating one for each recipient |
6 | | -- [x] Keep a reference count for each "sent" pubsub msg: when it reaches 0 it means all recipients received the message, and then in can be freed |
7 | | -- [x] Add an autofree field to module_tell/module_pubsub that automatically frees sent data when last recipient receives it |
8 | | -- [x] Avoid strdupping module's name and ctx's name |
9 | | -- [x] Avoid any allocation inside library and ALWAYS TRUST USER POINTER as core rule |
10 | | -- [x] Add a self() alias to _self |
11 | | -- [x] module_subscribe/unsubscribe should avoid checking if topic is registered in context |
12 | | -- [x] Add new System messages: MODULE_STARTED/STOPPED |
13 | | -- [x] Avoid telling system messages like MODULE_STARTED/TOPIC_REGISTERED to ourselves |
14 | | -- [x] Test pubsub messagging for paused modules |
15 | | -- [x] Fix memleaks! |
16 | | -- [x] Unsubscribe shopuld not check if topic is registered in ctx as otherwise umsubscribing from a deregistered topic would not work. |
17 | | -- [x] pubsub interface should take "const void *" instead of "const unsigned char *" as data |
18 | | -- [x] Add a new parameter "bool global" to module_broadcast? |
19 | | -- [x] FIX: if first context does not receive a global broadcast, message will be destroyed as it has 0 refs... |
20 | | -- [x] Rename pubsub_msg to ps_msg inside msg_t |
21 | | -- [x] Rename pubsub_msg_t to ps_msg_t |
22 | | -- [x] Rename pubsub_priv_t to ps_priv_t |
23 | | -- [x] Add a module_poisonpill() function, to send a system message to a module to stop it -> this will be enqueued in module's message queue, |
24 | | -conversely to module_stop that should stop module right away freeing all its enqueued messages. |
25 | | -- [x] Always destroy messages in flush_pubsub_msg()? RIght now it delivers all of them if we're stopping looping on ctx |
26 | | -- [x] module_poisonpill should only be sent to RUNNING modules |
27 | | -- [x] when stop looping on a context, flush all pubsub messages to RUNNING modules only. Destroy messages for non-running modules. |
28 | | -- [x] Drop (de)register_topic? |
29 | | -- [x] mod->subscriptions map lazy creation |
30 | | -- [x] Support regex topic subscriptions |
31 | | - |
32 | | -### Map |
33 | | -- [x] FIx: avoid incrementing map size on value update |
34 | | -- [x] Add test for update |
35 | | -- [x] map->dtor should default to memhook._free, and fallback to default if map_set_dtor is called with NULL callback parameter |
36 | | -- [x] Add map_itr_t interface |
37 | | -- [x] Add tests for new interface |
38 | | -- [x] Improve hashmap implementation |
39 | | -- [x] Add a stress test for hashmap implementation |
40 | | -- [x] Fix map_clear implementation |
41 | | -- [x] Add map_iterate test |
42 | | -- [x] Set keydup and autofree in map_new() |
43 | | -- [x] Drop map_set_dtor |
44 | | -- [x] Destroy old value upon val update |
45 | | -- [x] Avoid destroying map value on update with same pointer; just return MAP_OK |
46 | | - |
47 | | -### Stack |
48 | | -- [x] stack->dtor should default to memhook._free, and fallback to default if stack_set_dtor is called with NULL callback parameter |
49 | | -- [X] Add stack_itr_t interface |
50 | | -- [x] Add tests for new interface |
51 | | -- [x] Stack_iterate to follow same logic as map_iterate |
52 | | -- [x] Set autofree in stack_new() |
53 | | -- [x] Drop stack_set_dtor |
54 | | - |
55 | | -### Queue |
56 | | -- [x] Add queue API |
57 | | -- [x] Add doc |
58 | | - |
59 | | -### Generic |
60 | | -- [x] Add some diagnostic API, eg: module_dump() (to dump each module's state) |
61 | | -- [x] Add a module_load/unload function, to load a module from a compiled object at runtime |
62 | | -- [x] simplify interface for module_load/unload? ie: module_load(path, ctx_name) |
63 | | -- [x] Add test.so build to Easy example |
64 | | -- [x] Re-evaluate module_register/deregister parameters (ie: self_t should not be a const!) |
65 | | -- [x] Provide a default (weak symbol) main() that just runs modules_ctx_loop() on any ctx it found |
66 | | -- [x] Rename MODULE_DEFAULT_CTX and MODULE_MODULE_MAX_EVENTS to MODULES_* |
67 | | -- [x] Actually call init() callback first time module is started, even without passing from evaluate_module (thus without looping ctx) |
68 | | -- [x] module_load/unload should use RTLD_NOLOAD flag instead of yet another hashmap |
69 | | -- [x] module_get_name/ctx to return a strdup string |
70 | | -- [x] Rename modules_set_memalloc_hook to modules_set_memhook() + rename memalloc_hook to memhook_t |
71 | | -- [x] stop() and start() should avoid err_str parameter. |
72 | | -- [x] Stop looping on context when there are no RUNNING modules |
73 | | -- [x] Cleanup some out of date comments in examples |
74 | | -- [x] Avoid exposing in modules.h main() and modules_pre_start() functions: they're not part of libmodule's API and cannot be called as functions. |
75 | | -- [x] Rename module to mod_t and m_context to ctx_t |
76 | | -- [x] Rename module_poll_t to fd_priv_t |
77 | | -- [x] FIX: avoid sending with MODULE_STOPPED pubsub message a not-exishtent reference to mod->self when deregistering, as module gets freed right after. Send NULL. |
78 | | -- [x] FIX: when deregistering, remove module from context before stopping it |
79 | | -- [x] Rename userhook to userhook_t, following other types |
80 | | - |
81 | | -### Doc |
82 | | -- [x] module_dump |
83 | | -- [x] module_subscribe/unsubscribe |
84 | | -- [x] self() |
85 | | -- [x] module_register/deregister |
86 | | -- [x] module_load/unload |
87 | | -- [x] module_tell/publish/broadcast |
88 | | -- [x] MODULE_STARTED/MODULE_STOPPED new sysmessages |
89 | | -- [x] Avoid telling system messages like MODULE_STARTED/TOPIC_REGISTERED to ourselves |
90 | | -- [x] Document main() weak symbol! |
91 | | -- [x] Add a new page about trusting pointers |
92 | | -- [x] modules_set_memhook/memhook_t |
93 | | -- [x] new stop behaviour (stop will always destroy pubsub messages instead of delivering them, except when a module gets stopped through module_poisonpill) |
94 | | -- [x] module_poisonpill |
95 | | -- [x] New modules_loop behaviour (stop looping when no RUNNING modules) |
96 | | -- [x] New Map API |
97 | | -- [x] New Stack API |
98 | | -- [x] Dropped (de)register_topic! |
99 | | - |
100 | | -### Samples |
101 | | -- [x] Fix samples |
102 | | - |
103 | | -### Test |
104 | | -- [x] Fix tests |
105 | | -- [x] add module_dump tests |
106 | | - |
107 | 1 | ## 5.1.0 |
108 | 2 |
|
109 | 3 | ### Submodules |
|
0 commit comments