We are pleased to announce rclnodejs v1.8.1! This patch release focuses on improving stability, fixing critical bugs related to concurrency and Electron compatibility, and significantly enhancing test coverage and reliability.
🐛 Bug Fixes
Critical Race Condition Fix (#1372)
- Resolved a crash (
SIGABRT/ "pure virtual method called") that occurred when callingsetContentFilter()while the node was spinning. - Solution: The fix enforces a thread-safe pattern. Users should stop the node before modifying content filters and restart it afterwards.
Electron Compatibility (#1375, #1379)
- File System Operations: Replaced
fs.access()withfs.stat()for file existence checks. This ensures compatibility with Electron's ASAR packaging system, wherefs.accesscan sometimes fail. - Demo Updates: Updated Electron demos to use Electron v40.0.0 and fixed type issues in the
turtle_tf2demo by usingBigIntfor timer periods.
Message Type Correctness (#1371)
- Time.toMsg(): Corrected the return type of
Time.toMsg(). It now returns JavaScript numbers instead ofBigIntsforsecandnanosecfields, aligning correctly with the ROS 2builtin_interfaces/msg/Timespecification.
Stability Improvements
- Content Filtering: Fixed memory allocation bugs (using wrong size calculation) and improved error handling in content filter operations (#1369).
- Flaky Tests: Resolved test flakiness in
type-description-serviceand content filtering tests (#1367, #1369).
🧪 Enhancements & Infrastructure
- Test Coverage: Major effort to improve unit test coverage. Added comprehensive tests for core modules like
utils.js,client.js,logging.js, andtimer.js, achieving >80% coverage (#1363). - Windows CI: Fixed GitHub Actions failures on Windows by explicitly configuring Python 3.11 (#1376).
- Dependencies: Updated
globalspackage to v17.0.0 (#1365).
Full Changelog: 1.8.0...1.8.1