Skip to content

Releases: RobotWebTools/roslibjs

2.0.0

19 Nov 22:57
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Note

We understand that the removal of some lesser-used APIs may be painful for a subset of users. However, given the small team maintaining the project, we felt it necessary to reduce the scope of the library - at least temporarily - to make it possible to move forward on new features and better underlying implementations.

With that being said, we're excited to ship roslibjs 2.0, years in the making!

Highlights of roslibjs 2.0.0

Additions

  • Asynchronous callback support for Services.
  • Support for ROS 2 Actions.
  • Support for ROS 2 TF.
  • Support for injecting your own transport implementation into the Ros class.
  • Support for new rosbridge APIs, for example param retrieval failure cases.
  • Integration tests for ROS 2 to ensure ongoing support.
  • Greatly improved TypeScript declarations.
  • Internal migration from JavaScript to TypeScript to ensure provided TypeScript type declarations are always up-to-date.
    • No more need for @types/roslib as an extra dependency!
  • ECMAScript Modules (ESM) support to provide better bundling and static analysis support to downstream projects.

Removals

  • Classic "Universal Module Definition (UMD)" bundles of roslibjs. We only support the standardized ECMAScript Modules (ESM).
  • JSDelivr CDN releases, as there are many CDNs that serve NPM packages now, like UNPKG.
  • Removal of Web Worker mode.
  • Removal of non-WebSocket transport implementations (NodeTCP and WebRTC).
    • You can now provide these yourself - or any other socket implementation you can dream up - with the new Transport API!

Import syntax change

  • Due to the change to using standard ECMAScript Modules and optimization of the library for modern bundling practices, if you were previously importing roslib in either of the following ways:
    const ROSLIB = require("roslib");
    // or 
    import ROSLIB from "roslib";
    you will need to adapt your syntax for ESM. The easiest replacement is:
     import * as ROSLIB from "roslib";
    However, we would recommend a best practice of instead importing APIs of roslib directly by name, for instance
    import { Ros } from "roslib";
    to make it easier for your project's tooling to statically analyze and bundle your code.

Future changes

We hope this is just the beginning of a new era for the RobotWebTools JavaScript clients - an easier-to-contribute-to (thanks to type checking, better tests, etc.) set of libraries with more focused scope. Continuing forward, we will continue to emphasize ease of development and use, including some of the following efforts:

  • Integration of ros2djs and ros3djs into this repository as a monorepo to make it easier to work on the RWT frontend libraries together
  • Migration of the examples in roslibjs, ros2djs, and ros3djs into separate executable packages in the monorepo, with end-to-end tests to assure they stay functional and up-to-date
  • Migration of ROS 1 Action support to a separate extension package for roslibjs, to preserve its implementation as the core moves forward with a ROS 2 focus
  • Migration of ROS 1 TF support to a separate extension package for roslibjs, for the same reason (as it depends on ROS 1 Actions)

Acknowledgements

Reviving development of this library wouldn't have been possible without the help of long-time maintainer @MatthijsBurgh, more recent additions to the maintainer team @sea-bass, @bjsowa, and @EzraBrooks - and many contributions from other individuals such as @drewhoener, @douglascayers, @harsh-pal-robotics, @noah-wardlow, and more.

Thanks and kudos to everyone who made this happen!

Full Changelog: 1.4.1...2.0.0

2.0.0-alpha7

18 Nov 19:31
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

2.0.0-alpha7 Pre-release
Pre-release

What's Changed

Full Changelog: 2.0.0-alpha6...2.0.0-alpha7

2.0.0-alpha6

17 Nov 18:44
Immutable release. Only release title and notes can be modified.
d94b000

Choose a tag to compare

2.0.0-alpha6 Pre-release
Pre-release

What's Changed

Full Changelog: 2.0.0-alpha5...2.0.0-alpha6

2.0.0-alpha5

17 Nov 17:57
Immutable release. Only release title and notes can be modified.
ede2397

Choose a tag to compare

2.0.0-alpha5 Pre-release
Pre-release

What's Changed

Full Changelog: 2.0.0-alpha4...2.0.0-alpha5

2.0.0-alpha4

17 Nov 17:39
6060d6a

Choose a tag to compare

2.0.0-alpha4 Pre-release
Pre-release

What's Changed

Full Changelog: 2.0.0-alpha3...2.0.0-alpha4

2.0.0-alpha3

17 Nov 17:24
de1979b

Choose a tag to compare

2.0.0-alpha3 Pre-release
Pre-release

What's Changed

Full Changelog: 2.0.0-alpha2...2.0.0-alpha3

2.0.0-alpha2

17 Nov 17:13
e4753ae

Choose a tag to compare

2.0.0-alpha2 Pre-release
Pre-release

What's Changed

Full Changelog: 2.0.0-alpha1...2.0.0-alpha2

2.0.0-alpha1

17 Nov 16:58
52c8130

Choose a tag to compare

2.0.0-alpha1 Pre-release
Pre-release

What's Changed

Read more

1.4.1

04 Dec 21:14

Choose a tag to compare

Full Changelog: 1.3.0...1.4.1

This is the final v1 release

What's Changed

New Contributors

Full Changelog: 1.3.0...1.4.1