From af2ecfc91986323951e2dd3874618ef380c96354 Mon Sep 17 00:00:00 2001 From: Charles-Schleich Date: Tue, 29 Oct 2024 08:56:51 +0000 Subject: [PATCH] deploy: 3a856466e6e372e064b2a426dfdcba06864e9827 --- blog/2024-10-21-zenoh-firesong/index.html | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/blog/2024-10-21-zenoh-firesong/index.html b/blog/2024-10-21-zenoh-firesong/index.html index 52936bf0..e826d6c6 100644 --- a/blog/2024-10-21-zenoh-firesong/index.html +++ b/blog/2024-10-21-zenoh-firesong/index.html @@ -1,6 +1,6 @@ Zenoh 1.0.0 "Firesong" is ready to rock! · Zenoh - pub/sub, geo distributed storage, query

Zenoh 1.0.0 "Firesong" is ready to rock!

21st October 2024

As a result of an incredible effort from the whole Zenoh team and Zenoh community, we can finally announce that Zenoh 1.0.0 Firesong is out!

Zenoh comic October 2024

This release marks an incredible milestone for Zenoh and comes with a lot of features and improvements:

  • API stabilization. Great attention has been given to the API, its revision and rework to provide the necessary level of stability and future extensibility.
  • The very first alpha version of the new TypeScript API.
  • A full rework of the Shared Memory subsystem in Zenoh, with a new API and more supported topologies.
  • Improved batching and jitter performance for high frequency publications.
  • Improved protocol for write-side filtering.

Let us take a closer look at what Zenoh 1.0.0 brings to the table.


Improved API approach

Zenoh’s API has been improved in terms of ergonomics, clarity, and composability for future extensibility! +

Zenoh 1.0.0 "Firesong" is ready to rock!

21st October 2024

As a result of an incredible effort from the whole Zenoh team and Zenoh community, we can finally announce that Zenoh 1.0.0 Firesong is out!

Zenoh comic October 2024

This release marks an incredible milestone for Zenoh and comes with a lot of features and improvements:

  • API stabilization. Great attention has been given to the API, its revision and rework to provide the necessary level of stability and future extensibility.
  • The very first alpha version of the new TypeScript API.
  • A full rework of the Shared Memory subsystem in Zenoh, with a new API and more supported topologies.
  • Improved batching and jitter performance for high frequency publications.
  • Improved protocol for write-side filtering.

Let us take a closer look at what Zenoh 1.0.0 brings to the table.


Improved API approach

Zenoh’s API has been improved in terms of ergonomics, clarity, and composability for future extensibility! The following sections highlight the main changes of the API in the various language bindings. The full migration guide of each language is available here.

Accessors

To better separate the public API from the internal implementation, we have introduced the accessor pattern in the Zenoh API across all language bindings. See an example in Rust below. @@ -304,7 +304,7 @@ When that will happen, we will provide a corresponding migration guide.


TypeScript API

The TypeScript API is in its alpha stage with the focus being put towards browser support, as majority of the requests from users have been to use Zenoh for UI and visualisation applications, and due to the numerous languages already supported for backend development. The Typescript API comes with the requirement of using a remote API plugin attached to a Zenoh router running on the backend. The remote API plugin works by starting a native Zenoh session inside the plugin and communicating over websockets with the browser instance, passing control and data messages between the browser instance and the plugin backend. All state exists inside the plugin and the Typescript API just keeps references to the state stored in the plugin. -It is advised for users to account for the general performance characteristics of a JavaScript runtime environment when designing their applications.

Below is an example of a subscriber taking a callback:

const session = await Session.open(Config.new("ws/127.0.0.1:10000"));
+It is advised for users to account for the general performance characteristics of a JavaScript runtime environment when designing their applications.

Below is an example of a subscriber taking a callback:

const session = await Session.open(new Config("ws/127.0.0.1:10000"));
   const callback = async function (sample: Sample): Promise<void> {
     console.log!(
       ">> [Subscriber] Received " +
@@ -321,15 +321,17 @@
 
   await sleep(1000 * 3);
   callback_subscriber.undeclare();
-

Below is an example of a publisher:

  const session = await Session.open(Config.new("ws/127.0.0.1:10000"));
-  let key_expr = KeyExpr.new("demo/example/zenoh-ts-pub");
+

Below is an example of a publisher:

  const session = await Session.open(new Config("ws/127.0.0.1:10000"));
+  let key_expr = new KeyExpr("demo/example/zenoh-ts-pub");
   let publisher: Publisher = session.declare_publisher(
 	key_expr,
-	Encoding.default(),
-	CongestionControl.BLOCK,
-	Priority.DATA,
-	true,
-	Reliability.RELIABLE
+    {
+      encoding: Encoding.default(),
+      congestion_control: CongestionControl.BLOCK,
+      priority: Priority.DATA,
+      express: true,
+      reliability: Reliability.RELIABLE
+    }
   );
   const payload = [122, 101, 110, 111, 104];