asterism 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +110 -0
- data/README.md +277 -62
- data/lib/asterism/cruby/objects.rb +25 -10
- data/lib/asterism/cruby/ros.rb +6 -4
- data/lib/asterism/cruby/zenoh.rb +428 -72
- data/lib/asterism/version.rb +1 -1
- data/lib/asterism.rb +2 -2
- data/mrblib/asterism.rb +112 -19
- data/mrblib/cdr.rb +5 -1
- data/mrblib/future.rb +11 -2
- data/mrblib/proxy.rb +13 -3
- data/mrblib/ros.rb +121 -41
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1100d56c90f65bbfdf0d6fcd5c383483e61bbb815ced349307e67226b07ebcdb
|
|
4
|
+
data.tar.gz: 6adef73606920ab9e432b9bddf430038924181d77bdaa5d2fb60e424882204d7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2bc05b237dc8cd2fc04b169c132263004718ef8c5fe04f7037bf8ec415ae72e3da57e962d77ccd93b224f5875187004c511e13b25145f496e3c85f5ef0006135
|
|
7
|
+
data.tar.gz: c12becb195ae73c664bb31e274865ff738c2074d42ffc0381312ccf32b73c883c9ec0605079b5c867272c47246116e37b65ca51db7a8e2b5c287ba020032b70a
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to asterism (the CRuby gem) and picoruby-asterism (the
|
|
4
|
+
mrbgem; the same `mrblib/`). Nothing has been published to rubygems.org
|
|
5
|
+
yet; the versions below are the ones in this repository. From 0.4.0 the
|
|
6
|
+
two Zenoh bindings (asterism-zenoh, picoruby-asterism-zenoh) carry the
|
|
7
|
+
same version number.
|
|
8
|
+
|
|
9
|
+
## 0.4.0
|
|
10
|
+
|
|
11
|
+
The first step of the API review toward 1.0 (docs/api_review.md):
|
|
12
|
+
additions, deprecations and fixes. Every 0.3.0 call works as before.
|
|
13
|
+
Needs asterism-zenoh / picoruby-asterism-zenoh 0.4.0.
|
|
14
|
+
|
|
15
|
+
Added
|
|
16
|
+
|
|
17
|
+
- Time limits in seconds everywhere: `Asterism[path, timeout: 2.0]` (or
|
|
18
|
+
`timeout_ms:`), `client.call` / `node.call(timeout:)`,
|
|
19
|
+
`Asterism.connect(connect_timeout:, check_timeout:)`; on the CRuby API
|
|
20
|
+
`timeout_ms:` next to `timeout:` and `query_timeout:` on
|
|
21
|
+
`advanced_subscriber`. Giving a time limit twice raises `ArgumentError`.
|
|
22
|
+
Time-out messages give both units (`within 2.0 s (2000 ms)`).
|
|
23
|
+
- `node.every(ms: 500)`, `Timer#period_ms`.
|
|
24
|
+
- `Future#took`, `ROS::Call#took` (seconds).
|
|
25
|
+
- `request:` on `client.call` / `call_async` / `node.call`.
|
|
26
|
+
- `node.subscribe(topic, type)` without a block returns the subscription
|
|
27
|
+
(as `node.subscription`) instead of raising, on the boards as on CRuby.
|
|
28
|
+
- `pending` / `received` on `ROS::Subscription`.
|
|
29
|
+
- `Proxy#remote_methods`.
|
|
30
|
+
- `Asterism.off_join` / `off_leave` (and on `Net`).
|
|
31
|
+
- One error tree under `Asterism::Error`: `TimeoutError` (was `Timeout`),
|
|
32
|
+
`ROS::TimeoutError` (under `TimeoutError`; was `ROS::Timeout`),
|
|
33
|
+
`ROS::UnknownType` and `CDR::DecodeError` moved under it, and the
|
|
34
|
+
bindings' `Zenoh::Error` / `Zenoh::ClosedError` are under it too. The ROS
|
|
35
|
+
layer raises `Zenoh::ClosedError` when its session or entity is closed.
|
|
36
|
+
- CRuby API: `Connection#connection_count`, `Subscription#each_sample`,
|
|
37
|
+
`c.liveliness(key) { }` and `c.publisher(key) { |pub| }` (closed after
|
|
38
|
+
the block), `net[path, timeout_ms:]`.
|
|
39
|
+
- `DEFAULT_TIMEOUT`, `CHECK_TIMEOUT`, `Client::DEFAULT_TIMEOUT` (seconds).
|
|
40
|
+
- CRuby API: `depth:` on `Connection#get`, `#liveliness_get` and
|
|
41
|
+
`Querier#get`. A get's queue held 16 and could not be changed, so a
|
|
42
|
+
wildcard get past the 16th reply lost the rest (a router answers in one
|
|
43
|
+
burst; `liveliness_get("@ros2_lv/**")` returned 16 of 31).
|
|
44
|
+
- CRuby API: `dropped` (with `received`, and `errors` for gets) on what a
|
|
45
|
+
get gives: `liveliness_get` returns a `KeyList` (an Array with
|
|
46
|
+
`dropped` / `received`), `get` and `Querier#get` without a block a
|
|
47
|
+
`GetEnumerator` (an Enumerator with the counts of the last get it sent).
|
|
48
|
+
`Watch#dropped` / `pending` / `received` (before only through
|
|
49
|
+
`w.watch.dropped`).
|
|
50
|
+
- CRuby API: a get, liveliness watch or subscription whose depth was left
|
|
51
|
+
at the default warns once (`Asterism.warn_once`) when something was
|
|
52
|
+
dropped. So does the object layer's watch, on every Ruby.
|
|
53
|
+
- README: "Which API?" (the portable API and the CRuby API), the error
|
|
54
|
+
tree, the defaults, the threads table, the deprecations and what 1.0
|
|
55
|
+
changes, reserved keywords. Internal methods are marked `@api private`.
|
|
56
|
+
|
|
57
|
+
Changed
|
|
58
|
+
|
|
59
|
+
- CRuby API: the default depth of `get`, `liveliness_get`, `Querier#get`
|
|
60
|
+
and `liveliness_watch` is the binding's `DEFAULT_GET_DEPTH` /
|
|
61
|
+
`DEFAULT_WATCH_DEPTH`, 1024 (was 16; the boards stay at 16).
|
|
62
|
+
- The object layer's liveliness watch (behind `Asterism.each` and
|
|
63
|
+
`Asterism.nodes`) holds 1024 on CRuby (64 on the boards, as before).
|
|
64
|
+
|
|
65
|
+
Deprecated (each warns once per name; `Asterism.deprecations = :raise`
|
|
66
|
+
raises instead)
|
|
67
|
+
|
|
68
|
+
- `Asterism[path, ms]` (the time as a positional argument; a Float there
|
|
69
|
+
warns with its own message: it is milliseconds).
|
|
70
|
+
- `Asterism::Timeout`, `Asterism::ROS::Timeout` (the names; they still
|
|
71
|
+
rescue the same errors, through `const_missing`, so that inside
|
|
72
|
+
`module Asterism` the name `Timeout` is Ruby's again).
|
|
73
|
+
- `Proxy#methods` returning the remote methods: `remote_methods`.
|
|
74
|
+
- CRuby API: `Connection#peers` (`connection_count`) and
|
|
75
|
+
`Connection::Subscription#each_pending` (`each_sample`).
|
|
76
|
+
- A request field named `timeout` / `timeout_ms` given as a keyword to
|
|
77
|
+
`client.call` (use `request:`).
|
|
78
|
+
|
|
79
|
+
Fixed
|
|
80
|
+
|
|
81
|
+
- A Float as the positional time limit was taken as milliseconds and
|
|
82
|
+
truncated (`Asterism[path, 2.0]` waited 2 ms); it now warns and says so.
|
|
83
|
+
- A service whose request has a field named like the time-limit keyword
|
|
84
|
+
could not be called with keyword fields: `request:` (or a Hash) now
|
|
85
|
+
carries the request, and `timeout:` the time limit.
|
|
86
|
+
|
|
87
|
+
## 0.3.0
|
|
88
|
+
|
|
89
|
+
- CRuby API: publishers, queriers, the advanced publisher / subscriber and
|
|
90
|
+
events with blocks; `Asterism.connect(config:)` for TLS.
|
|
91
|
+
- Strings are built from a fresh String (frozen literals); CI on Ruby 3.2
|
|
92
|
+
to 4.0 and with frozen literals, against asterism-zenoh main, and an
|
|
93
|
+
installed-gem check.
|
|
94
|
+
- docs/api_review.md (the review this version starts on) and profile/
|
|
95
|
+
(the Ruby profile of the shared layer across implementations).
|
|
96
|
+
|
|
97
|
+
## 0.2.0
|
|
98
|
+
|
|
99
|
+
- The CRuby API: blocks, a receiving thread and Enumerators over the
|
|
100
|
+
portable API (`Asterism::Zenoh.open`, `Asterism.connect { |net| }`,
|
|
101
|
+
`Asterism::ROS.connect`).
|
|
102
|
+
- In the shared layer: `on_join` / `on_leave`, `node.every`,
|
|
103
|
+
`node.subscribe` blocks and `deconstruct_keys`.
|
|
104
|
+
|
|
105
|
+
## 0.1.0
|
|
106
|
+
|
|
107
|
+
- The pure Ruby layers as one source for the CRuby gem and the mrbgem: the
|
|
108
|
+
object layer (`Asterism.connect / expose / [] / poll`), `Asterism::CDR`,
|
|
109
|
+
`Asterism::ROS` (topics and services over rmw_zenoh's wire format), the
|
|
110
|
+
type generator and the bundled ROS 2 Jazzy types.
|