From c0dc27fd3de63c7af31f6dcc5fcb9e6b3d5c7a7c Mon Sep 17 00:00:00 2001 From: Christian Eltzschig Date: Thu, 14 Dec 2023 20:49:21 +0100 Subject: [PATCH 1/2] [#2] Set version to 0.1.0 --- Cargo.toml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index da45726c4..07821e5bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,26 +33,26 @@ license = "MIT OR Apache-2.0" readme = "README.md" repository = "https://github.com/eclipse-iceoryx/iceoryx2" rust-version = "1.72.1" -version = "0.0.5" +version = "0.1.0" [workspace.dependencies] -iceoryx2-bb-threadsafe = { version = "0.0.5", path = "iceoryx2-bb/threadsafe/" } -iceoryx2-bb-lock-free = { version = "0.0.5", path = "iceoryx2-bb/lock-free/" } -iceoryx2-bb-container = { version = "0.0.5", path = "iceoryx2-bb/container/" } -iceoryx2-bb-elementary = { version = "0.0.5", path = "iceoryx2-bb/elementary/" } -iceoryx2-bb-log = { version = "0.0.5", path = "iceoryx2-bb/log/" } -iceoryx2-bb-memory = { version = "0.0.5", path = "iceoryx2-bb/memory/" } -iceoryx2-bb-posix = { version = "0.0.5", path = "iceoryx2-bb/posix/" } -iceoryx2-bb-system-types = { version = "0.0.5", path = "iceoryx2-bb/system-types/" } -iceoryx2-bb-testing = { version = "0.0.5", path = "iceoryx2-bb/testing/" } +iceoryx2-bb-threadsafe = { version = "0.1.0", path = "iceoryx2-bb/threadsafe/" } +iceoryx2-bb-lock-free = { version = "0.1.0", path = "iceoryx2-bb/lock-free/" } +iceoryx2-bb-container = { version = "0.1.0", path = "iceoryx2-bb/container/" } +iceoryx2-bb-elementary = { version = "0.1.0", path = "iceoryx2-bb/elementary/" } +iceoryx2-bb-log = { version = "0.1.0", path = "iceoryx2-bb/log/" } +iceoryx2-bb-memory = { version = "0.1.0", path = "iceoryx2-bb/memory/" } +iceoryx2-bb-posix = { version = "0.1.0", path = "iceoryx2-bb/posix/" } +iceoryx2-bb-system-types = { version = "0.1.0", path = "iceoryx2-bb/system-types/" } +iceoryx2-bb-testing = { version = "0.1.0", path = "iceoryx2-bb/testing/" } -iceoryx2-pal-concurrency-sync = { version = "0.0.5", path = "iceoryx2-pal/concurrency-sync/" } -iceoryx2-pal-posix = { version = "0.0.5", path = "iceoryx2-pal/posix/" } -iceoryx2-pal-configuration = { version = "0.0.5", path = "iceoryx2-pal/configuration/" } +iceoryx2-pal-concurrency-sync = { version = "0.1.0", path = "iceoryx2-pal/concurrency-sync/" } +iceoryx2-pal-posix = { version = "0.1.0", path = "iceoryx2-pal/posix/" } +iceoryx2-pal-configuration = { version = "0.1.0", path = "iceoryx2-pal/configuration/" } -iceoryx2-cal = { version = "0.0.5", path = "iceoryx2-cal" } +iceoryx2-cal = { version = "0.1.0", path = "iceoryx2-cal" } -iceoryx2 = { version = "0.0.5", path = "iceoryx2/" } +iceoryx2 = { version = "0.1.0", path = "iceoryx2/" } bindgen = { version = "0.65.1" } bitflags = { version = "1.3.2" } From ef81584dbb0ec0233ba745cc501e649f03640b2b Mon Sep 17 00:00:00 2001 From: Christian Eltzschig Date: Thu, 14 Dec 2023 23:48:00 +0100 Subject: [PATCH 2/2] [#2] Update roadmap --- ROADMAP.md | 59 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index d03826950..cbc16d9e9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,16 +1,18 @@ # Roadmap -## Milestones +## Moonshots -* [ ] d-bus replacement -* [ ] `#![no_std]` on `nightly` on the unix platform -* [ ] `#![no_std]` on `stable` on the unix platform +* [ ] high performance d-bus alternative (thanks to true zero-copy) +* [ ] `#![no_std]` on `nightly` on all tier 1 platforms +* [ ] `#![no_std]` on `stable` on all tier 1 platforms +* [ ] completely dynamic setup with dynamic shared memory ## Language Bindings -* [ ] C / C++ -* [ ] Python +* [ ] C +* [ ] C++ * [ ] Lua +* [ ] Python * [ ] Zig ## Building Blocks @@ -22,18 +24,26 @@ ## Gateways * [ ] Host2Host Communication based on -* [ ] zbus -* [ ] sommr -* [ ] data-rs -* [ ] rustdds +* [ ] mqtt (rumqtt) +* [ ] dds (rustdds or dustdds) * [ ] zenoh -* [ ] rumqtt +* [ ] someip (maybe sommr) +* [ ] dbus (zbus) -## Microservices +## Microservices (Quality of Life Improvements) + +### Iceoryx Tooling * [ ] Service Discovery -* [ ] Health Monitor * [ ] Introspection Service +* [ ] Process Monitor (process can register and cleans up resources when process dies) +* [ ] Health Monitor +* [ ] Basic command line introspection tooling +* [ ] Tooling for advanced introspection, cool WebGUI +* [ ] Command line client as interface to microservices + +### Tools and Gadgets + * [ ] System Monitor (show CPU load etc. like top) ## Communication @@ -48,14 +58,17 @@ * [ ] PubSub, ReqRes, Pipeline variant that works with copies (poor mans mixed criticality) * [ ] Zero-copy GPU communication with Cuda, NvSci, Vulkan * [ ] Zero-copy across hypervisor partitions -* [ ] Zero-copy via QEmu ivshmem: +* [ ] Zero-copy via QEMU ivshmem: +* [ ] Support dynamic sized types in a memory efficient manner + * Buddy allocator for sender data-segment + * Introduce runtime fixed-size types ## Robustness * [ ] Add ability to recover samples when subscriber died * add sample tracker into ZeroCopyConnection * add detection when subscriber returns non-received samples -* [ ] Huge Communication Setup Support +* [ ] Large Communication Setup Support * handle the restriction of a max amount of posix shared memory objects of an OS * add `iceoryx2_cal` implementations that are using the `SharedMemoryGroup` @@ -84,12 +97,6 @@ * [ ] ROS2 rmw binding * [ ] dora-rs integration -## Tooling - -* [ ] Basic command line introspection tooling -* [ ] Tooling for advanced introspection, cool WebGUI -* [ ] command line client as interface to microservices - ## Safety & Security * [ ] Mixed Criticallity setup, e.g. applications do not interfer with each other @@ -99,8 +106,9 @@ ## Development -* [ ] Tracing integration for advanced performance measurements, see google chrome chrome://tracing/ and flame graphs - See lttng, add trace points to the source code on the important functions +* [ ] Tracing integration for advanced performance measurements, see google chrome + chrome://tracing/ and flame graphs + See lttng, add trace points to the source code on the important functions ## Quality Of Life Improvements @@ -108,13 +116,8 @@ * all error classes should implement `std::error::Error` for the non `no_std` build (maybe use `thiserror`) * should be compatible with `anyhow` and `eyre` * explore error pyramid concept -* [ ] Evaluate crate `log` and `tracing` as backend for iceoryx2 logger - * `log` / `tracing` / `console_logger` one of them should be the default logger, depending on feature flagA -* [ ] Use `&str` and UTF-8 in `ServiceName`, there is no need for a length or ASCII restriction * [ ] Rename `enable_safe_overflow` into `set_safe_overflow` in `ServiceBuilder` `publish_subscribe` * or maybe rename it into behavior: queue and ringbuffer, get inspired by crossbeam queues -* [ ] Rename `publisher::loan` into `publisher::loan_uninit` and provide `publisher::loan` with default - constructed type * [ ] Provide `[T]` (slice) as special transmission type for pub/sub * `loan_slice`, `loan_uninit_slice` and `loan_uninit_slice_with_alignment` * [ ] QoS feature for blocking publisher or pub/sub failures to perform custom error handling or expert behavior