|
1 | 1 | # Roadmap
|
2 | 2 |
|
3 |
| -## v0.5 |
| 3 | +## v0.6 |
4 | 4 |
|
5 | 5 | ### Main Focus
|
6 | 6 |
|
7 |
| -* [ ] (Waitset), event multiplexing and advanced push notifications |
8 |
| -* [ ] Finalize C and C++ API |
9 |
| -* [ ] Fully dynamic payload for pub/sub |
10 |
| -* [ ] ROS 2 rmw binding |
11 |
| -* [ ] Health monitoring |
12 |
| -* [ ] Reliability features for pub/sub |
| 7 | +The list is sorted by priority |
| 8 | + |
| 9 | +* [ ] Request/Response |
| 10 | +* [ ] Zenoh Gateway |
| 11 | +* [ ] Finalize C and C++ API (still some tiny things open) |
| 12 | +* [ ] Add `libc` based platform for better cross-compilation support |
| 13 | +* [ ] `#![no_std]` for low-level crates |
| 14 | +* [ ] Finish ROS 2 rmw binding (requires request/response) |
13 | 15 |
|
14 | 16 | ### Bonus
|
15 | 17 |
|
| 18 | +The list is sorted by priority |
| 19 | + |
16 | 20 | * [ ] Derive macro for SHM transferable types
|
| 21 | +* [ ] proof of concept with <https://github.com/rkyv/rkyv> |
17 | 22 | * [ ] `serde`-based shm serialization to transmit arbitrary types
|
18 |
| -* [ ] Request/Response |
19 | 23 |
|
20 |
| -## Moonshots |
| 24 | +## Backlog |
| 25 | + |
| 26 | +### Moonshots |
21 | 27 |
|
22 | 28 | * [ ] high performance d-bus alternative (thanks to true zero-copy)
|
23 | 29 | * [ ] `#![no_std]` on `nightly` on all tier 1 platforms
|
24 | 30 | * [ ] `#![no_std]` on `stable` on all tier 1 platforms
|
25 |
| -* [ ] completely dynamic setup with dynamic shared memory |
| 31 | +* [x] completely dynamic setup with dynamic shared memory |
26 | 32 | * [ ] iceoryx on a rover on the moon
|
27 | 33 |
|
28 |
| -## Shared Memory Container & Types |
| 34 | +### Shared Memory Container & Types |
29 | 35 |
|
30 | 36 | * [ ] Make `iceoryx2_bb_container` public with announcement
|
31 | 37 | * [ ] Create and document dynamic size container concept for shared memory and
|
|
38 | 44 | * [ ] Add `derive` proc macro to ensure that only shm compatible types can be
|
39 | 45 | transferred via zero-copy
|
40 | 46 |
|
41 |
| -## Language Bindings |
| 47 | +### Language Bindings |
42 | 48 |
|
43 | 49 | * [x] C
|
44 | 50 | * [x] C++
|
45 |
| -* [ ] Lua |
46 | 51 | * [ ] Python
|
| 52 | +* [ ] Swift |
| 53 | +* [ ] Kotlin |
| 54 | +* [ ] Typescript |
| 55 | +* [ ] Lua |
47 | 56 | * [ ] Zig
|
| 57 | +* [ ] C# |
48 | 58 |
|
49 |
| -## Building Blocks |
| 59 | +### Building Blocks |
50 | 60 |
|
51 |
| -* [ ] WaitSet - event multiplexer based on reactor pattern |
| 61 | +* [x] WaitSet - event multiplexer based on reactor pattern |
52 | 62 | * [ ] Introduce trait and proc macro to generate types that can be sent via
|
53 | 63 | shared memory
|
54 | 64 | * ensure that only these types are used for inter-process communication
|
55 | 65 |
|
56 |
| -## Gateways |
| 66 | +### Gateways |
57 | 67 |
|
58 | 68 | * [ ] Host2Host Communication based on <https://github.com/smoltcp-rs/smoltcp>
|
59 | 69 | * [ ] mqtt (rumqtt)
|
|
62 | 72 | * [ ] someip (maybe sommr)
|
63 | 73 | * [ ] dbus (zbus)
|
64 | 74 |
|
65 |
| -## Microservices (Quality of Life Improvements) |
| 75 | +### Microservices (Quality of Life Improvements) |
66 | 76 |
|
67 |
| -### iceoryx Tooling |
| 77 | +#### iceoryx Tooling |
68 | 78 |
|
69 | 79 | * [ ] Service Discovery
|
70 | 80 | * [ ] Introspection Service
|
|
75 | 85 | * [ ] Tooling for advanced introspection, cool WebGUI
|
76 | 86 | * [ ] Command line client as interface to microservices
|
77 | 87 |
|
78 |
| -### Tools and Gadgets |
| 88 | +#### Tools and Gadgets |
79 | 89 |
|
80 | 90 | * [ ] System Monitor (show CPU load etc. like top)
|
81 | 91 |
|
82 |
| -## Communication |
| 92 | +### Communication |
83 | 93 |
|
84 | 94 | * [x] publish subscribe
|
85 | 95 | * [x] events
|
|
104 | 114 | * Introduce runtime fixed-size types
|
105 | 115 | * [x] Untyped API
|
106 | 116 |
|
107 |
| -## Expert/Advanced Features |
| 117 | +### Expert/Advanced Features |
108 | 118 |
|
109 | 119 | * [ ] Filtering/Routing of messages in pub-sub
|
110 | 120 | * [ ] Handle approach to resend samples that could not be delivered caused by a
|
111 | 121 | full queue in pub-sub
|
112 | 122 |
|
113 |
| -## Robustness |
| 123 | +### Robustness |
114 | 124 |
|
115 | 125 | * [X] Node as basis for monitoring and resource cleanup
|
116 | 126 | * [ ] Add ability to recover samples when subscriber died
|
|
121 | 131 | OS
|
122 | 132 | * add `iceoryx2_cal` implementations that are using the `SharedMemoryGroup`
|
123 | 133 |
|
124 |
| -## Platform Support |
| 134 | +### Platform Support |
125 | 135 |
|
126 | 136 | * [ ] Android
|
127 | 137 | * [x] Linux
|
|
132 | 142 | * [x] FreeBSD
|
133 | 143 | * [ ] FreeRTOS
|
134 | 144 | * [ ] QNX
|
| 145 | +* [ ] VxWorks |
| 146 | +* [ ] BareMetal |
| 147 | +* [ ] Sandbox Mode (only process internal communication) |
135 | 148 |
|
136 |
| -## Hardware Support |
| 149 | +### Hardware Support |
137 | 150 |
|
138 | 151 | * [x] x86_64
|
139 | 152 | * [x] aarch64
|
140 | 153 | * [ ] armv7
|
141 | 154 | * [ ] x32
|
142 | 155 | * [ ] risc-v
|
143 | 156 |
|
144 |
| -## Framework Integration |
| 157 | +### Framework Integration |
145 | 158 |
|
146 | 159 | * [ ] ROS2 rmw binding
|
147 | 160 | * [ ] dora-rs integration
|
148 | 161 |
|
149 |
| -## Safety & Security |
| 162 | +### Safety & Security |
150 | 163 |
|
151 |
| -* [ ] Mixed Criticallity setup, e.g. applications do not interfer with each |
| 164 | +* [ ] Mixed Criticality setup, e.g. applications do not interfere with each |
152 | 165 | other
|
153 |
| -* [ ] Sample Tracking when application crashes |
| 166 | +* [x] Sample Tracking when application crashes |
154 | 167 | * [ ] Identity and Access Management, e.g. service that create additional
|
155 | 168 | services
|
156 | 169 | * [ ] Use Kani, Loom and Miri for tests of lock-free constructs
|
157 | 170 |
|
158 |
| -## Development |
| 171 | +### Development |
159 | 172 |
|
160 | 173 | * [ ] Tracing integration for advanced performance measurements, see google
|
161 | 174 | chrome chrome://tracing/ and flame graphs See lttng, add trace points to
|
162 | 175 | the source code on the important functions
|
163 | 176 |
|
164 |
| -## Quality Of Life Improvements |
| 177 | +### Quality Of Life Improvements |
165 | 178 |
|
166 | 179 | * [ ] Evaluate and refactor basic error handling approach based on enums
|
167 | 180 | * all error classes should implement `std::error::Error` for the non `no_std`
|
|
172 | 185 | `publish_subscribe`
|
173 | 186 | * or maybe rename it into behavior: queue and ringbuffer, get inspired by
|
174 | 187 | crossbeam queues
|
175 |
| -* [ ] Provide `[T]` (slice) as special transmission type for pub/sub |
| 188 | +* [x] Provide `[T]` (slice) as special transmission type for pub/sub |
176 | 189 | * `loan_slice`, `loan_uninit_slice` and `loan_uninit_slice_with_alignment`
|
177 | 190 | * [ ] QoS feature for blocking publisher or pub/sub failures to perform custom
|
178 | 191 | error handling or expert behavior
|
179 | 192 | * explore implementation as trait
|
180 | 193 | * explore implementation as callback
|
181 |
| -* [ ] Explore if it is useful to have the same service name for different |
| 194 | +* [x] Explore if it is useful to have the same service name for different |
182 | 195 | messaging patterns
|
183 | 196 | * separate them via internal suffix/prefix
|
184 | 197 | * simple use case: pub/sub + event to notify subscriber to notify sample send
|
185 | 198 | * would reduce error handling: connect to service with wrong messaging pattern
|
186 |
| -* [ ] Implement Resizable SharedMemoryConcept that is able to extend the shared |
| 199 | +* [x] Implement Resizable SharedMemoryConcept that is able to extend the shared |
187 | 200 | memory by adding additional POSIX shared memory objects
|
188 | 201 |
|
189 |
| -## Integration Into Other Projects |
| 202 | +### Integration Into Other Projects |
190 | 203 |
|
191 | 204 | * [ ] Maybe Hyprland
|
0 commit comments