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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdb7bf2126361f3b9ae4097467832d950440b9a65c419a92394f230b4d7b0277
4
- data.tar.gz: ba8621f58ee2d5fb22f5eeb3b68917cb6ce9f9420d07230d5d69e246b9c53564
3
+ metadata.gz: 1100d56c90f65bbfdf0d6fcd5c383483e61bbb815ced349307e67226b07ebcdb
4
+ data.tar.gz: 6adef73606920ab9e432b9bddf430038924181d77bdaa5d2fb60e424882204d7
5
5
  SHA512:
6
- metadata.gz: cc43c0ab1f0076a148bcd65a648b0220eb8559912b296a7fdbb7b4810f108ab8f66d439e951e3c1a3fe24329ac6fb5a76593214c7571e3f18b55d833a917276d
7
- data.tar.gz: 48114f986885d604142a4fb369b1a31f4a7cb6d1dbff95ffc0b0566e97801bbd646278cb498b4c0e1003c8a3b425a526262ffb384557eeb0cdc4a7e450b6bc63
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.