Skip to content

Commit fda135a

Browse files
committed
docs: Update documentation for 0.25.0 release
1 parent a858fdf commit fda135a

36 files changed

+351
-30
lines changed

cli/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
[project]
88
name = "cloe-launch"
9-
version = "0.24.0"
9+
version = "0.25.0"
1010
description = "Launch cloe-engine with Conan profiles."
1111
license = { text = "Apache-2.0" }
1212
authors = [

docs/changelog.rst

+65
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,71 @@ readable perspective on new releases.
5858

5959
Note that the most recent release is at the *top* of the document.
6060

61+
62+
0.25.0 (2024-07-15)
63+
-------------------
64+
65+
This is the first Cloe release that contains the Lua and DataBroker integration.
66+
Read all about the changes :doc:`here <news/release-0.25.0>`.
67+
68+
**Engine:**
69+
70+
- engine: Make probe output trigger schema `[6c6c71cb] <https://github.com/eclipse/cloe/commit/6c6c71cb7e539f1f3e74ab10759b041ee522e7bb>`_
71+
- engine: Add probe subcommand `[4be46cb1] <https://github.com/eclipse/cloe/commit/4be46cb158411d4fc4b78d60048b4b7e7b5c27e9>`_
72+
- engine: Fix some findings from clang-tidy `[58382a67] <https://github.com/eclipse/cloe/commit/58382a670fabb556bc339fbc2617856ddf6af45c>`_
73+
- engine: Add --output-path to cloe-engine `[4fc65ac9] <https://github.com/eclipse/cloe/commit/4fc65ac906dcc24cb639c6979807347d0e1329c8>`_
74+
- engine: Replace boost::filesystem with std::filesystem `[71844110] <https://github.com/eclipse/cloe/commit/71844110d79f9eea9fdcba20fe8acf5eb50927e9>`_
75+
- engine: Replace boost::optional with std::optional `[8b0acb2f] <https://github.com/eclipse/cloe/commit/8b0acb2f4375e9ce9405a6a14008801ce96e0092>`_
76+
- engine: Add LRDB debugging support `[c60a3ef9] <https://github.com/eclipse/cloe/commit/c60a3ef9a70d3c9acefd7e71bceddbb7450d61b0>`_
77+
- engine: Add Lua scripting support `[d182d035] <https://github.com/eclipse/cloe/commit/d182d035b7608b3207f0ab98f1216f92fb97b098>`_
78+
- engine: Vendor linenoise library `[12fb330c] <https://github.com/eclipse/cloe/commit/12fb330c0528901406ef70f623a9a03b96d3717b>`_
79+
- engine: Restructure code for better compilation times `[a1137367] <https://github.com/eclipse/cloe/commit/a113736729b097ddc6fa5442ec8c1d2df1734360>`_
80+
- engine: Extract SimulationProgress into simulation_progress.hpp `[30b05f5f] <https://github.com/eclipse/cloe/commit/30b05f5f836c7bb06241438d8b4dbfed95fdfb72>`_
81+
- engine: Set stack options in own scope `[5e3d4efe] <https://github.com/eclipse/cloe/commit/5e3d4efe479761508755449ecdc22f28610f20cf>`_
82+
- engine: Remove --distinct option from check command `[fa7d2586] <https://github.com/eclipse/cloe/commit/fa7d258628b4f22ada0442b2307e5d911de31676>`_
83+
- tests: Add test for cloe-engine --write-output and --output-path `[d9fcd704] <https://github.com/eclipse/cloe/commit/d9fcd704103a2d6272c51633d68a424f81013578>`_
84+
85+
**Core Libraries:**
86+
87+
- all: Improve DataBroker interface for common types `[0d9509cc] <https://github.com/eclipse/cloe/commit/0d9509cc9ff3d7c209869ff36c4e340897895314>`_
88+
- all: Add DataBroker and Signals concepts `[34fcf16d] <https://github.com/eclipse/cloe/commit/34fcf16d99adaca1a985ae26105ea73859d7a9c1>`_
89+
90+
- fable: Implement clang-tidy suggestions `[3f017f36] <https://github.com/eclipse/cloe/commit/3f017f36141cbfcbf7eef26e63f184d5ea098914>`_
91+
92+
- runtime: Fix duplicate definitions in set_action.hpp `[1cf804f6] <https://github.com/eclipse/cloe/commit/1cf804f6b6832d9ae30b1fb6f09699effcb5d9c7>`_
93+
- runtime: Replace boost::filesystem with std::filesystem `[aec4bce1] <https://github.com/eclipse/cloe/commit/aec4bce148003c1cf5045317099cd13443dadcc1>`_
94+
- runtime: Add CallbackResult return value to all action operator() `[51f3c0ae] <https://github.com/eclipse/cloe/commit/51f3c0aebd507f3e7ee42df33c49a0929ebb8a67>`_
95+
96+
- stack: Refactor stack into its own library `[55dc93e5] <https://github.com/eclipse/cloe/commit/55dc93e59f543a5da4e14759b254a4c538185d4d>`_
97+
98+
- osi: Fix compatiblity with protobuf > v25 `[3b7bf9d7] <https://github.com/eclipse/cloe/commit/3b7bf9d751a384aaddb2590e6d1d3507d38277f9>`_
99+
100+
**Plugins:**
101+
102+
- basic: Replace boost::optional with std::optional `[e59a6360] <https://github.com/eclipse/cloe/commit/e59a63600d22268391a39b06dd5aa1b6b8352b3b>`_
103+
104+
- speedometer: Implement data broker `[a29afa6a] <https://github.com/eclipse/cloe/commit/a29afa6a56eaf7c3dbe3efb0710b66e4ba371bea>`_
105+
106+
- mocks: Add delay action to demo_stuck `[984fda42] <https://github.com/eclipse/cloe/commit/984fda421aaa9cd657533fb59a5041eb95dce1b9>`_
107+
108+
**Tooling & Dependencies:**
109+
110+
- tests: Add (disabled) test combining cloe with external package `[e401c0f7] <https://github.com/eclipse/cloe/commit/e401c0f7fc1aba154ca7f426a60170daafee5be1>`_
111+
112+
- ci: Reduce number of jobs run for branches `[906a6a21] <https://github.com/eclipse/cloe/commit/906a6a214072cbc9c2ac49b4b4f9c17e683e24c0>`_
113+
- ci: Enable Github workflows for important branches `[dbfefddd] <https://github.com/eclipse/cloe/commit/dbfefddd6489751943e3959605b63e26321576a5>`_
114+
115+
- tooling: Add Bazel support `[73d24a43] <https://github.com/eclipse/cloe/commit/73d24a4333a11a5875c18a67d347f873daeb840a>`_
116+
- tooling: Disable dependabot for the UI `[c22e9d74] <https://github.com/eclipse/cloe/commit/c22e9d746df9b3c537bbd7e7872cfada2c82d8b1>`_
117+
- tooling: Improve grep-uuids to better show duplicates `[e58c48fe] <https://github.com/eclipse/cloe/commit/e58c48fe96cfeb5d6eb10a42b223681f4e3427d3>`_
118+
- tooling: Add VS Code project configuration `[6c03bd5f] <https://github.com/eclipse/cloe/commit/6c03bd5fb86954b63429ac7cfb4c2d0dfb8286ce>`_
119+
- tooling: Update deploy-all to simply call cloe-launch deploy `[29eed02f] <https://github.com/eclipse/cloe/commit/29eed02fa015087c0a27353db6676031cab0d710>`_
120+
- tooling: Fix interspersed $() and ${} in Makefiles `[a2494825] <https://github.com/eclipse/cloe/commit/a24948251dbd2dc1f97091512fd3a832d726694c>`_
121+
- tooling: Move tests into project root tests directory `[1a9436dd] <https://github.com/eclipse/cloe/commit/1a9436dd3c07fd38229e30a32afd4864fe0704be>`_
122+
- tooling: Make cloe a super-build of all packages `[65a4aef8] <https://github.com/eclipse/cloe/commit/65a4aef8542b4968e3fb10e42507ac06585cc06c>`_
123+
124+
- vendor/open-simulation-interface: Add full_package_mode `[d5f33148] <https://github.com/eclipse/cloe/commit/d5f33148a21359f80836fccd6c8587b43de8565d>`_
125+
61126
0.24.0 (2024-05-06)
62127
-------------------
63128

docs/contributing/creating-a-new-release.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Run ``conan search`` to check that your cache only has the expected packages.
7272

7373
Then, compile the entire project locally::
7474

75-
make purge-all export-vendor export smoketest-deps smoketest
75+
make purge-all export-cli export-vendor export-all smoketest-deps smoketest
7676

7777
This should run through without errors. Then make sure to do the same with
7878
the optional packages::

docs/news.rst

+22
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,35 @@ News
2323
:hidden:
2424
:maxdepth: 1
2525

26+
news/release-0.25.0
2627
news/release-0.24.0
2728
news/release-0.23.0
2829
news/release-0.22.0
2930
news/release-0.21.0
3031
news/release-0.20.0
3132
news/release-0.19.0
3233

34+
:doc:`Version 0.25.0 Release <news/release-0.25.0>`
35+
---------------------------------------------------
36+
37+
This release contains the initial implementation of Lua support with the new
38+
DataBroker and Signals concept.
39+
40+
- New command ``shell`` for cloe-engine allows running Lua scripts and/or
41+
provides an interactive shell prompt (similar to the ``lua`` command).
42+
- New command ``probe`` for cloe-engine dumps available triggers, signals, and
43+
other metadata for a simulation without running the simulation in its entirety.
44+
45+
The Cloe build has been streamlined and simplified:
46+
47+
- Discontinue `cloe` meta-package. It was not possible to continue using this
48+
with Conan 1 due to technical limitations.
49+
(The `conanfile.py` in the repo root is now a superbuild of cloe for
50+
development purposes only.)
51+
- Move tests from various sub-directories into a single unified tests directory.
52+
- Add experimental Bazel build tooling configuration.
53+
54+
Read more about these changes and more :doc:`here <news/release-0.25.0>`.
3355

3456
:doc:`Version 0.24.0 Release <news/release-0.24.0>`
3557
---------------------------------------------------

docs/news/release-0.25.0.md

+222
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
# Version 0.25.0 Release
2+
3+
This release contains the initial implementation of Lua support with the new
4+
DataBroker and Signals concept.
5+
6+
## Add Lua support
7+
8+
Lua is a lightweight embedded language that can now be used to define simulation
9+
configuration and test execution and evaluation.
10+
11+
For example:
12+
13+
```lua
14+
cloe = require("cloe")
15+
proj = require("project")
16+
cloe.load_stackfile("existing_configuration.json")
17+
cloe.schedule_test {
18+
id = "e03fc31f-586b-4e57-80fa-ff2cba5ff9dd",
19+
on = events.start(),
20+
run = function(test, sync)
21+
cloe.log("info", "Entering test")
22+
test:wait_duration("1s")
23+
24+
-- Enable Cruise Control
25+
proj.enable_hmi()
26+
test:wait_duration("4s")
27+
28+
-- Set speed and increase
29+
local speed = cloe.signal(proj.Signals.VehicleSpeed).kmph()
30+
proj.buttons.plus.push("1500ms")
31+
test:wait_duration("4s")
32+
33+
-- Check that new speed is higher than before but lower than
34+
-- the speed-limit.
35+
local new_speed = cloe.signal(proj.Signals.VehicleSpeed).kmph()
36+
test:assert_gt(new_speed, speed)
37+
test:assert_le(new_speed, proj.scenario.speed_limit)
38+
test:succeed()
39+
end
40+
}
41+
```
42+
43+
The above test-case is a hypothetical, yet realistic way that such a test can
44+
be written. The results are written to an output file and the terminal output
45+
in JSON format, so they can be easily processed.
46+
47+
The engine comes with a new `shell` command, which allows you to launch an
48+
interactive Lua session or just run Lua files.
49+
50+
A simulation with or without Lua can be run as before with the `run` command.
51+
The JSON stackfile interface is still supported and can be mixed with Lua.
52+
In particular, all the features in the stackfiles can be now used from Lua
53+
in a backwards-compatible way. Your existing test files do not need to be
54+
rewritten, but you can achieve better results by adding Lua or switching
55+
completely.
56+
57+
See {doc}`the usage documentation <../usage/lua-introduction>` for more!
58+
59+
## New probe sub-command
60+
61+
The new `probe` sub-command of `cloe-engine` allows you to probe a simulation
62+
configuration with merged stack files.
63+
64+
In this mode, a simulation is set up and all the participants are connected,
65+
probed, and then disconnected. That means:
66+
67+
- the simulation must be fully configured,
68+
- failures may occur during connection phase, and
69+
- scripts included must be correct.
70+
71+
The output of the probe is a JSON written to stdout:
72+
73+
```json
74+
{
75+
"http_endpoints": [ "/endpoints", ... ],
76+
"plugins": {
77+
"PLUGIN_NAME": "PLUGIN_PATH",
78+
...
79+
},
80+
"signals": {
81+
"SIGNAL_NAME": "DESCRIPTION",
82+
...
83+
},
84+
"tests": {
85+
}
86+
"trigger_actions": [ "ACTION1", "..." ],
87+
"trigger_events": [ "EVENT1", ... ],
88+
"uuid": "UUID",
89+
"vehicles": {
90+
"NAME": [ "COMPONENT1", ... ]
91+
}
92+
}
93+
```
94+
95+
The tests section is only defined if the simulation configuration
96+
contains Lua that defines tests (via `cloe.schedule_test()` API).
97+
You can use tools like `jq` to further filter and refine the output.
98+
99+
Examples:
100+
101+
cloe-engine probe tests/test_nop_smoketest.json
102+
cloe-engine probe my_lua_test.lua | jq -r '.tests | keys | .[]'
103+
104+
## Engine changes
105+
106+
- Add `--output-path` option to ``run`` command.
107+
108+
This allows you to specify where output files should be written without having
109+
to configure it in the stackfile.
110+
111+
- Remove `--distinct` flag from ``check`` command.
112+
113+
It wasn't used much and complicated the code. This old behavior can be easily
114+
achieved with outside tooling, such as `xargs` and `find`, so there is no loss
115+
in functionality overall.
116+
117+
## Tooling changes
118+
119+
The `cloe` Conan package was previously a meta-package containing all packages
120+
created from this repository.
121+
122+
This package is being discontinued from this version of Cloe.
123+
It was primarily meant for testing purposes, and thanks to new dependencies
124+
in our project and the limitations of Conan 1, it no longer fulfills this role.
125+
126+
**Migration:**
127+
> If you have been using the `cloe` package as a first-level dependency, then
128+
> you will need to specify all the packages individually that you need.
129+
>
130+
> It is highly recommended to split your build Conanfile from your deployment
131+
> Conanfile. For your controller build Conanfile, you generally only need:
132+
>
133+
> def requirements(self):
134+
> def cloe_requires(dep):
135+
> self.requires(f"{dep}/0.25.0@cloe/develop")
136+
>
137+
> cloe_requires("cloe-runtime")
138+
> cloe_requires("cloe-models")
139+
>
140+
> And for your deployment Conanfile you should only include the plugins you
141+
> actually use:
142+
>
143+
> def requirements(self):
144+
> def cloe_requires(dep):
145+
> self.requires(f"{dep}/0.25.0@cloe/develop")
146+
>
147+
> cloe_requires("cloe-engine")
148+
> cloe_requires("cloe-plugin-clothoid-fit")
149+
> cloe_requires("cloe-plugin-frustum-culling")
150+
> cloe_requires("cloe-plugin-gndtruth-extractor")
151+
> cloe_requires("cloe-plugin-noisy-sensor")
152+
> cloe_requires("cloe-plugin-esmini")
153+
> self.requires("your-plugin")
154+
> self.requires("esmini-data/2.37.4@cloe/stable")
155+
>
156+
> # Override as needed:
157+
> self.requires("esmini/2.37.4@cloe/stable", override=True)
158+
> self.requires("fmt/9.1.0", override=True)
159+
> self.requires("inja/3.4.0", override=True)
160+
> self.requires("nlohmann_json/3.11.3", override=True)
161+
> self.requires("incbin/cci.20211107", override=True)
162+
> self.requires("boost/1.74.0", override=True)
163+
> self.requires("zlib/1.2.13", override=True)
164+
> self.requires("protobuf/3.21.12", override=True)
165+
166+
For developing Cloe, the root Conanfile is now a super-build of Cloe, which
167+
provides a vastly simplified workflow for editing Cloe code:
168+
169+
echo "0.26.0-nightly" > VERSION
170+
make editable
171+
172+
And then iterate changes and (re-)builds with
173+
174+
make all
175+
176+
This is a boon to development, as we make `cloe` editable and only have to work
177+
with a single package. It also massively speeds up compilation:
178+
179+
- Conan and CMake configuration is only performed once.
180+
- All cores can now be utilized much more effectively during the build process.
181+
182+
The main Makefile has been adjusted for this:
183+
184+
- `status` is now `status-all`
185+
- `deploy` is now `deploy-all`
186+
- `clean` is now `clean-all`
187+
- `purge` is now `purge-all`
188+
189+
The following top-level Make targets just refer to `cloe` super-build package:
190+
191+
- `package`
192+
- `smoketest`
193+
- `smoketest-deps`
194+
- `status`
195+
- `export`
196+
197+
Finally, we moved all tests into project root tests directory.
198+
We still support multiple profiles, but this makes it easier to support the
199+
cloe super-build and should also make it easier to develop and maintain tests.
200+
201+
## Bazel Build
202+
203+
We have added experimental support for Bazel builds. Bazel is a promising
204+
build system for enterprises, as it radically simplifies the build tooling
205+
required. We have a single tool Bazel, instead of three or four layers of tools;
206+
in our case: Make -> Conan -> CMake -> Make/Ninja.
207+
208+
The `.bazelrc.user` file needs to be configured in order for certain third-party
209+
modules to be found (see repository `README.md`)
210+
211+
- `bazel build //...` builds everything in the project.
212+
- `bazel test //...` runs all tests.
213+
- `bazel run :cloe_shell` launches a shell wherein `cloe-engine` is available.
214+
215+
Full feature parity with Conan is not yet achieved. For example, there is
216+
no Bazel build for VTD or ESmini yet. Contributions are welcomed! :-)
217+
218+
## Library changes
219+
220+
At various places, `boost::optional` and `boost::filesystem` types and methods are
221+
replaced by their C++17 counterparts. This makes our libraries more lightweight
222+
by reducing their dependence on Boost.

docs/reference/plugins/basic.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Name: basic
22
Type: controller
3-
Path: ~/.conan/data/cloe-plugin-basic/0.24.0/cloe/develop/package/b604e04f9a20730e6de510c8305e28e783869866/lib/cloe/controller_basic.so
3+
Path: ~/.conan/data/cloe-plugin-basic/0.25.0/cloe/develop/package/722452d8f3bfc1eef1fc5de534638769b66120b8/lib/cloe/controller_basic.so
44
Usage: {
55
"acc": "object :: ACC configuration",
66
"aeb": "object :: AEB configuration",

docs/reference/plugins/basic_schema.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$id": "~/.conan/data/cloe-plugin-basic/0.24.0/cloe/develop/package/b604e04f9a20730e6de510c8305e28e783869866/lib/cloe/controller_basic.so",
2+
"$id": "~/.conan/data/cloe-plugin-basic/0.25.0/cloe/develop/package/722452d8f3bfc1eef1fc5de534638769b66120b8/lib/cloe/controller_basic.so",
33
"$schema": "http://json-schema.org/draft-07/schema#",
44
"additionalProperties": false,
55
"description": "very basic vehicle controller",

docs/reference/plugins/clothoid_fit.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Name: clothoid_fit
22
Type: component
3-
Path: ~/.conan/data/cloe-plugin-clothoid-fit/0.24.0/cloe/develop/package/8f9ac47c1ba762e10f909572a2501bc20131849f/lib/cloe/component_clothoid_fit.so
3+
Path: ~/.conan/data/cloe-plugin-clothoid-fit/0.25.0/cloe/develop/package/8bbe28227abbfb1588c2b6b2f814b6f165c9c063/lib/cloe/component_clothoid_fit.so
44
Usage: {
55
"enable": "boolean :: enable or disable component",
66
"frustum_culling": "boolean :: enable or disable frustum culling"

docs/reference/plugins/clothoid_fit_schema.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$id": "~/.conan/data/cloe-plugin-clothoid-fit/0.24.0/cloe/develop/package/8f9ac47c1ba762e10f909572a2501bc20131849f/lib/cloe/component_clothoid_fit.so",
2+
"$id": "~/.conan/data/cloe-plugin-clothoid-fit/0.25.0/cloe/develop/package/8bbe28227abbfb1588c2b6b2f814b6f165c9c063/lib/cloe/component_clothoid_fit.so",
33
"$schema": "http://json-schema.org/draft-07/schema#",
44
"additionalProperties": false,
55
"description": "fit clothoids to polylines",
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Name: demo_printer
22
Type: controller
3-
Path: ~/.conan/data/cloe-plugin-mocks/0.24.0/cloe/develop/package/b604e04f9a20730e6de510c8305e28e783869866/lib/cloe/controller_demo_printer.so
3+
Path: ~/.conan/data/cloe-plugin-mocks/0.25.0/cloe/develop/package/722452d8f3bfc1eef1fc5de534638769b66120b8/lib/cloe/controller_demo_printer.so
44
Usage: null
55
Defaults: {}

docs/reference/plugins/demo_printer_schema.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$id": "~/.conan/data/cloe-plugin-mocks/0.24.0/cloe/develop/package/b604e04f9a20730e6de510c8305e28e783869866/lib/cloe/controller_demo_printer.so",
2+
"$id": "~/.conan/data/cloe-plugin-mocks/0.25.0/cloe/develop/package/722452d8f3bfc1eef1fc5de534638769b66120b8/lib/cloe/controller_demo_printer.so",
33
"$schema": "http://json-schema.org/draft-07/schema#",
44
"additionalProperties": false,
55
"description": "print a lot of information",

0 commit comments

Comments
 (0)