Skip to content

Commit 2921d44

Browse files
authored
Merge pull request #735 from ApexAI/iox-#482-three-pillars
iox-#482 three pillars for website
2 parents d7ce64a + 4a6bb95 commit 2921d44

File tree

15 files changed

+81
-18
lines changed

15 files changed

+81
-18
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Change Log
22

3-
## [v1.0.0](https://github.com/eclipse-iceoryx/iceoryx/tree/v1.0.0) (2021-04-30)
3+
## [v1.0.0](https://github.com/eclipse-iceoryx/iceoryx/tree/v1.0.0) (2021-04-15)
44

5-
[Full Changelog](https://github.com/eclipse-iceoryx/iceoryx/compare/v0.90.0...v1.0.0)
5+
[Full Changelog](https://github.com/eclipse-iceoryx/iceoryx/compare/v0.90.7...v1.0.0)
66

77
Description:
88
This is the first major release for Eclipse iceoryx. That means it is the first release with long-term support and the adopters of iceoryx can rely on a stable API. The release called Almond allows for true zero-copy inter-process-communication on Linux, QNX and MacOS and provides C and modern C++ user APIs. This release is supported until 2022-04-01.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.99.7
1+
1.0.0

cmake/package/package.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#
1515
# SPDX-License-Identifier: Apache-2.0
1616
cmake_minimum_required(VERSION 3.5)
17-
set(IOX_VERSION_STRING "0.99.7")
17+
set(IOX_VERSION_STRING "1.0.0")
1818

1919
project(iceoryx_package VERSION ${IOX_VERSION_STRING})
2020

doc/aspice_swe3_4/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
cmake_minimum_required(VERSION 3.10)
1818

19-
set(IOX_VERSION_STRING "0.99.7")
19+
set(IOX_VERSION_STRING "1.0.0")
2020

2121
#find_package(iceoryx_utils REQUIRED)
2222

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,64 @@
11
# What is Eclipse iceoryx?
2+
3+
The technology behind Eclipse iceoryx originated in the automotive domain. With the introduction of video-based driver
4+
assistance, the amount of data to be exchanged between different threads of execution increased to GBytes/sec. The
5+
resources on these embedded systems were constrained and a solution was needed to use precious runtime for functional
6+
computations, not for shifting around bytes in memory.
7+
8+
The simple answer was to avoid copying of messages inside the middleware that manages the data communication between
9+
the different software nodes. This can be done by using shared memory that can be accessed by the producers and
10+
consumers of messages. On its own, this is not a new innovation as the approach has been used since the 1970s.
11+
However, iceoryx takes the approach further, ending up in an inter-process-communication technology with a
12+
publish/subscribe architecture that is fast, flexible and dependable.
13+
14+
15+
## Fast
16+
17+
With the iceoryx API, a publisher can write the message directly into a chunk of memory that was previously requested
18+
from the middleware. When the message is delivered, subscribers receive reference counted pointers to these memory
19+
chunks, which are stored in queues with configurable capacities. With this iceoryx achieves what we refer to as true
20+
zero-copy — an end-to-end approach from publishers to subscribers without creating a single copy.
21+
22+
Avoiding the copies on API level is crucial when GBytes of sensor data have to be processed per second on robotics and
23+
autonomous driving systems. Therefore the iceoryx team contributed to the standardization of true zero-copy capable
24+
APIs in [ROS 2](https://www.ros.org/) and [AUTOSAR Adaptive](https://www.autosar.org/standards/adaptive-platform/).
25+
26+
On modern processors iceoryx has a latency of less than 1 µs for transferring a message. And the best message is that
27+
this latency is constant as size doesn't matter. Want to give it a try? Then have a look at our
28+
[iceperf example](../examples/iceperf) after having made the first steps.
29+
30+
## Flexible
31+
32+
iceoryx already supports Linux, QNX and MacOS as operating systems as well as C and C++ as user APIs. Windows and Rust
33+
are the next ones on the list. The typed C++ API is the most comfortable when you want to directly use the iceoryx API
34+
on the user side. The untyped C++ API and the C API provide a data agnostic interface that is often preferred when
35+
integrating iceoryx as shared memory backbone into a bigger framework.
36+
37+
The APIs support polling access and event-driven interactions with the [Waitset](../overview/#waitset) and
38+
[Listener](../overview/#listener). Applications can be started and stopped flexibly as there is a service discovery
39+
behind the scenes that dynamically connects matching communication entities.
40+
41+
That iceoryx has the right set of features can be seen from the already existing integrations in middleware and
42+
frameworks such as [Eclipse Cyclone DDS](https://github.com/eclipse-cyclonedds/cyclonedds),
43+
[eCAL from Continental](https://continental.github.io/ecal/),
44+
[RTA-VRTE from ETAS](https://www.etas.com/en/products/rta-vrte.php) and
45+
[Apex.OS from Apex.AI](https://www.apex.ai/apex-os).
46+
47+
## Dependable
48+
49+
The predecessor of iceoryx is running in millions of vehicles worldwide. All iceoryx maintainers hail from the
50+
safety critical automotive domain. Hence, they know the necessary requirements and have these in mind for the
51+
design and implementation of features. The usage of heap, exceptions and any undefined behavior are to be avoided
52+
to increase the predictability. Instead a custom memory allocation is being used, based on static memory pools.
53+
Additionally, the handling of return values and error cases was inspired by upcoming C++ features and other
54+
languages like Rust (details can be found
55+
[here](../../advanced/how-optional-and-error-values-are-returned-in-iceoryx/)).
56+
57+
As different processes are operating on shared data structures, avoiding deadlocks is becoming all the more important.
58+
iceoryx uses look-free data structures like the multi-producer multi-consumer (MPMC) queue that was written portably
59+
thanks to modern C++.
60+
61+
The tools available for automotive-compliant software development are always one or two releases behind the latest C++
62+
standard. This fact, combined with our already mentioned constraints, led to a bunch of STL like C++ classes that have
63+
the goal to combine modern C++ with the reliability needed for the domains iceoryx is used in. They can be found in
64+
the iceoryx utils which are introduced [here](../../advanced/iceoryx_utils/)

doc/website/index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ title: Home
88
width="50%">
99
</p>
1010

11-
Eclipse iceoryx™ is a true zero-copy inter-process communication that allows virtually limitless data transfer at constant time.
11+
Eclipse iceoryx™ is an inter-process-communication midddleware that enables virtually limitless data transmissions at constant time.
1212

13-
| <h2>:octicons-stopwatch-16: Easy</h2> | <h2>:material-shield-half-full: Safe</h2> | <h2>:material-truck-fast: Fast</h2> |
13+
| <h2>:material-truck-fast: Fast</h2> | <h2>::material-puzzle: Flexible</h2> | <h2>:material-shield-half-full: Dependable</h2> |
1414
|----|----|-----|
15-
|<ul><li>Simple publish-subscribe API with service discovery</li><li>Straightforward usage for ROS2 and Adaptive AUTOSAR</li><li>Runs on QNX, Linux, MacOS and Windows</li></ul>|<ul><li>Automotive-grade (ISO26262 certification ongoing)</li><li>Lock-free algorithms prevent deadlocks</li><li>Huge library with safe STL implementations</li></ul>|<ul><li>Written in C++14</li><li>C binding available</li><li>Zero-copy data transmission with shared memory</li><li>Ultra low latency</li></ul>|
16-
|[Learn more](getting-started/what-is-iceoryx.md#easy){ .md-button }|[Learn more ](getting-started/what-is-iceoryx.md#safe){ .md-button }|[Learn more](getting-started/what-is-iceoryx.md#fast){ .md-button }|
15+
|<ul><li>True zero-copy shared memory communication</li><li>Message transfers with a latency of less than 1 µs</li><li>Made to handle GBytes/sec data transfers</li></ul>|<ul><li>Support of various operating systems, communication patterns and APIs</li><li>Service discovery enables the design of dynamic systems</li><li>Easy to integrate into frameworks like ROS 2 or AUTOSAR Adaptive</li></ul>|<ul><li>Developed according to automotive requirements</li><li>Implementation based on static memory and lock-free algorithms</li><li>Huge C++ library with safe STL implementations</li></ul>|
16+
|[Learn more](getting-started/what-is-iceoryx.md#fast){ .md-button }|[Learn more ](getting-started/what-is-iceoryx.md#flexible){ .md-button }|[Learn more](getting-started/what-is-iceoryx.md#dependable){ .md-button }|

iceoryx_binding_c/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# SPDX-License-Identifier: Apache-2.0
1717
cmake_minimum_required(VERSION 3.7)
1818

19-
set(IOX_VERSION_STRING "0.99.7")
19+
set(IOX_VERSION_STRING "1.0.0")
2020

2121

2222

iceoryx_binding_c/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>iceoryx_binding_c</name>
5-
<version>0.99.7</version>
5+
<version>1.0.0</version>
66
<description>Eclipse iceoryx inter-process-communication (IPC) middleware C-Language Binding</description>
77
<maintainer email="michael.poehnl@apex.ai">Eclipse Foundation, Inc.</maintainer>
88
<license>Apache 2.0</license>

iceoryx_dds/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# SPDX-License-Identifier: Apache-2.0
1717
cmake_minimum_required(VERSION 3.7)
1818

19-
set(IOX_VERSION_STRING "0.99.7")
19+
set(IOX_VERSION_STRING "1.0.0")
2020

2121
project(iceoryx_dds VERSION ${IOX_VERSION_STRING})
2222

iceoryx_integrationtest/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>iceoryx_integrationtest</name>
5-
<version>0.99.7</version>
5+
<version>1.0.0</version>
66
<description>iceoryx Software Integrationtest</description>
77
<maintainer email="michael.poehnl@apex.ai">Eclipse Foundation, Inc.</maintainer>
88
<license>Apache 2.0</license>

0 commit comments

Comments
 (0)