Skip to content

Releases: RobotWebTools/rclnodejs

rclnodejs v1.1.0

23 May 08:19

Choose a tag to compare

This is the first version starting to support ROS2 Kilted 🎉

Feature added

  • Support type description service (#1146)
  • Add missing methods for node (#1140)
  • Support waitForAllAcked() for publisher (#1138)
  • Support getting the lifecycle state machine status (#1136)
  • [Kilted] Support to configure introspection for action client/server (#1128)
  • Add support for Kilted (#1125)
  • Add GetNumEntities() for action client (#1123)

Bug fixed

  • Fix the type error of client example (#1144)

Other

  • Support arm64 arch for ROS2 Rolling (#1130)
  • Reorg the actions badge (#1133)
  • Only run workflow on develop branch for arm64 arch (#1132)
  • Add nodejs 24 for actions (#1126)

rclnodejs v1.0.0

06 May 05:27

Choose a tag to compare

🎉Celebrating 1.0.0 Release🎉

As rclnodejs reaches this significant milestone of version 1.0.0, it's worth reflecting on the journey from its inception to becoming a robust, production-ready ROS 2 client library for JavaScript and TypeScript.

Project Evolution

rclnodejs began as an experimental bridge between the Robot Operating System (ROS 2) and the Node.js ecosystem in year of 2017, with the vision of bringing robotics capabilities to the vast JavaScript developer community. What started as a proof of concept has matured into a feature-complete, high-performance client library that stands alongside the official ROS 2 client libraries.

Core Achievements

Communication Patterns

  • Complete Implementation: Fully implemented all ROS 2 communication patterns including publishers/subscribers, services/clients, actions, and parameters
  • N-API Integration: Moved from NAN to N-API for better stability, performance, and compatibility with newer Node.js versions
  • Quality of Service: Comprehensive support for ROS 2 QoS configurations and content filtering

Language and Platform Support

  • TypeScript Integration: Added comprehensive TypeScript type definitions for enhanced development experience
  • Cross-Platform: Robust support for Linux and Windows environments
  • ROS 2 Distro Compatibility: Maintained compatibility with multiple ROS 2 releases, including Humble Hawksbill and Jazzy Jalisco

Advanced Features

  • Lifecycle Nodes: Full implementation of the ROS 2 managed node lifecycle
  • Parameter System: Complete parameter management with parameter events and callbacks
  • Time API: Flexible time abstractions including simulated time support
  • Graph Introspection: Comprehensive API for examining the ROS graph, including node counts, publishers, and subscribers

Developer Experience

  • Message Generation: Automated generation of JavaScript and TypeScript interfaces from ROS 2 IDL files
  • CLI Tools: Created rclnodejs-cli for project scaffolding and message generation
  • Extensive Documentation: Comprehensive API documentation with examples
  • Electron Support: Integration with Electron for desktop GUI applications

Technical Excellence

Throughout development, emphasis has been placed on:

  • Performance: Native bindings optimization for minimum overhead
  • Memory Management: Careful handling of resources to prevent leaks in long-running applications
  • Safety: Comprehensive error handling and validation
  • Testing: Extensive test suite ensuring reliability across supported platforms

Community and Growth

The project has fostered an active community of contributors and users, evidenced by:

  • Increasing Adoption: Growing download statistics on npm
  • Contributor Base: Diverse community of contributors bringing varied expertise
  • Integration Ecosystem: Adoption in various robotics projects connecting JavaScript applications with ROS 2

Looking Forward

After 78 releases in the past 8 years, version 1.0.0 represents a stable foundation for production use. Future development will focus on:

  1. Supporting new ROS 2 releases and features
  2. Further performance optimizations
  3. Enhanced tooling for developer experience
  4. Expanding integration with web technologies

This release marks rclnodejs as a mature client library, ready to support real-world robotics applications leveraging the power of JavaScript and TypeScript with ROS 2.

rclnodejs v0.33.0

08 Apr 10:35

Choose a tag to compare

Features

  • feat: add descriptor namespaces #1095
  • Support rcl_get_client_names_and_types_by_node #1097

rclnodejs v0.32.5

31 Mar 06:29

Choose a tag to compare

Changes

  • Only enable C++20 when nodejs >= 23 #1092

rclnodejs v0.32.4

13 Mar 08:45

Choose a tag to compare

Changes

  • Generate UUID by crypto (#1082)
  • Remove rimraf from dependencies (#1084)
  • Leverage terser to mangle/compress the generated js messages (#1086), size change (generated/): 5.20MB => 3.13MB

rclnodejs v0.32.3

11 Mar 07:59

Choose a tag to compare

Bug fix

  • Move uuid to dependencies (#1075)
  • Use path in triple-slash directives (#1080)

rclnodejs v0.32.2

10 Mar 08:52
0081720

Choose a tag to compare

Bug fix

  • Catch the error when loading library failed (#1071)

rclnodejs v0.32.1

08 Mar 15:28

Choose a tag to compare

This is a hotfix release to solve the npm install failure (#1065) introduced by #1055

Bug fix

  • Move rimraf to dependencies (#1067)

Others

  • Update .npmignore (#1062)
  • Re-enable coveralls (#1064)
  • Exclude .nycrc.yml from npm package (#1069)

rclnodejs v0.32.0

06 Mar 02:45

Choose a tag to compare

Feature

  • [ROSIDL] Add toPlainObject() method for array messages (#1047)

Bug fix

  • Fix typo in registerOnDeactivate method in lifecycle.d.ts (#1059)

Others

  • Pump deep-equal to latest version (#1045)
  • Remove dependency array.prototype.flat (#1049)
  • Replace dtslint with tsd to test .d.ts files (#1051)
  • Cleanup code (#1053)
  • Remove unused dependencies from package.json (#1055)
  • Re-enable cpplint & eslint for Linux platform actions (#1057)

rclnodejs v0.31.0

25 Feb 05:21

Choose a tag to compare

Feature

  • Change timer period to type of bigint in nanoseconds #1038
  • Leverage BigInt for Time/Duration #1039
  • [TypeScript] Update .ts files for Time/Timer/Duration #1042