Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.2 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-07-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.2 (2026-07-07)
3.1.1 (2026-07-04)
3.1.0 (2026-07-03)
- Merge pull request #1376 from MRPT/port/2x-fixes-jul2026 Port 2.x fixes: COutputLogger thread-safety, octomap build flag
- Contributors: Jose Luis Blanco-Claraco
3.0.4 (2026-06-17)
3.0.3 (2026-06-15)
- Fix rawlog-edit CLI unittest failure on Windows CI (#1370)
- Increase unit test coverage for mrpt_math, mrpt_io, mrpt_system (#1365)
- Contributors: Jose Luis Blanco-Claraco
3.0.2 (2026-06-11)
3.0.1 (2026-06-11)
3.0.0 (2026-06-06)
2.20.0 (2026-06-06)
- Last release of the 2.x series. Starting from 3.0.0, changes are tracked in each module's own CHANGELOG.rst file.
- Contributors: Jose Luis Blanco-Claraco
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.4 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-09-06 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.4 (2026-09-04)
-
Merge pull request #1393 from MRPT/test/coverage-system test(mrpt_system): cover the untested helpers and the file system watcher
-
Merge remote-tracking branch 'origin/develop' into test/coverage-comms
-
Merge remote-tracking branch 'origin/develop' into test/coverage-system
-
fix(mrpt_system): don't use CancelIoEx in the watcher destructor It is not declared with the SDK settings this build uses. Closing the notification handle already makes the watch thread's pending ReadDirectoryChangesW() return, which is what the join needs.
-
fix(mrpt_system): join CFileSystemWatcher's watch thread on destruction On Windows the constructor starts a std::thread and the destructor only closed the notification handle, so destroying a successfully-constructed watcher hit std::thread's destructor with a joinable thread and called std::terminate(). The new unit tests are the first code to ever destroy one, and they took the whole test binary down with them. The pending ReadDirectoryChangesW() is now cancelled before the handle is closed, the thread is joined, and whatever it had queued but nobody read is freed instead of leaked. Also fixes the POSIX branch, which called inotify_rm_watch() with a descriptor it had already closed and reset to -1.
-
Merge pull request #1392 from MRPT/test/coverage-io test(mrpt_io): cover the stream, compression and path helpers
-
test(mrpt_system): skip the missing-directory watcher test where unsupported Without inotify (macOS, and any other platform with no notification backend) CFileSystemWatcher's constructor is a no-op, so it never notices that the watched directory does not exist. Skip that expectation there, and pin the empty-path assertion, which does hold everywhere.
-
test(mrpt_system): cover the untested helpers and the file system watcher Four files in this module had never had an assertion run against them ([CFileSystemWatcher.cpp]{.title-ref}, [CObserver.cpp]{.title-ref}, [progress.cpp]{.title-ref}, [hyperlink.cpp]{.title-ref}), and several others were only covered incidentally by other modules' tests. New test files:
* [CFileSystemWatcher_unittest.cpp]{.title-ref} watches a temporary directory and checks that file creation, deletion and sub-directory creation are all reported, skipping itself where the platform provides no notification support (0% -> 91%).
* [CObserver_unittest.cpp]{.title-ref} covers the observer/observable pair: publishing to several subscribers, unsubscribing, and the two destruction orders --observer first and observable first, the latter of which publishes mrptEventOnDestroy before dropping everyone.
* [misc_system_unittest.cpp]{.title-ref} covers progress(), hyperlink(), the CRC helpers, every thread and process priority level, and CRateTimer.
* [os_unittest.cpp]{.title-ref} covers the os:: C-library wrappers, getMRPTLicense(), executeCommand() (including its working-directory form), launchProcess() and the plug-in loader's failure paths.
* [datetime_format_unittest.cpp]{.title-ref} covers the timestamp formatters, the parts/timestamp round trip in both UTC and local time, and every unit branch of intervalFormat() (16.7% -> 97.0% for datetime.cpp). Bugs found and fixed:
* [mrpt::system::consoleColorAndStyle()]{.title-ref} had its stream selection inverted: [applyToStdErr = true]{.title-ref} emitted the escape sequence on stdout and vice versa. COutputLogger passes that flag for its error-level messages, so the color codes landed on the opposite stream from the text they were meant to color. Its memo of the last colors applied was also shared between the two streams, which would suppress a needed escape sequence when alternating between them; it is now kept per stream. Module coverage: 66.0% -> 82.5% lines, 48.2% -> 62.3% branches.
-
test(mrpt_io): cover the stream, compression and path helpers New test files for the parts of the module that had never been exercised directly: CStream's printf/printf_vector/getline, CMemoryStream's cursor and buffer management, the file input/output streams (including every error path), the compressed streams (a parameterized round-trip over None/Gzip/Zstd plus the CFileGZ* pair), the zip:: helpers, detect_compression, the lazy-load path helpers and CTextFileLinesParser. Bugs found and fixed:
* [mrpt::io::CompressionType]{.title-ref} was defined twice, identically, in [detect_compression.h]{.title-ref} and in [compression_options.h]{.title-ref}, both in namespace `mrpt::io`: including both headers in the same translation unit did not compile. [detect_compression.h]{.title-ref} now includes the other one.
* [zip::decompress()]{.title-ref}'s std::vector overload passed an uninitialized length to zlib's [uncompress()]{.title-ref}, which
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.2 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/mrpt/mrpt.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-07-07 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.2 (2026-07-07)
3.1.1 (2026-07-04)
3.1.0 (2026-07-03)
- Merge pull request #1376 from MRPT/port/2x-fixes-jul2026 Port 2.x fixes: COutputLogger thread-safety, octomap build flag
- Contributors: Jose Luis Blanco-Claraco
3.0.4 (2026-06-17)
3.0.3 (2026-06-15)
- Fix rawlog-edit CLI unittest failure on Windows CI (#1370)
- Increase unit test coverage for mrpt_math, mrpt_io, mrpt_system (#1365)
- Contributors: Jose Luis Blanco-Claraco
3.0.2 (2026-06-11)
3.0.1 (2026-06-11)
3.0.0 (2026-06-06)
2.20.0 (2026-06-06)
- Last release of the 2.x series. Starting from 3.0.0, changes are tracked in each module's own CHANGELOG.rst file.
- Contributors: Jose Luis Blanco-Claraco
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_system at Robotics Stack Exchange
Package Summary
| Version | 3.1.2 |
| License | BSD |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MRPT/mrpt.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-07-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
Changelog for package mrpt_system
3.1.2 (2026-07-07)
3.1.1 (2026-07-04)
3.1.0 (2026-07-03)
- Merge pull request #1376 from MRPT/port/2x-fixes-jul2026 Port 2.x fixes: COutputLogger thread-safety, octomap build flag
- Contributors: Jose Luis Blanco-Claraco
3.0.4 (2026-06-17)
3.0.3 (2026-06-15)
- Fix rawlog-edit CLI unittest failure on Windows CI (#1370)
- Increase unit test coverage for mrpt_math, mrpt_io, mrpt_system (#1365)
- Contributors: Jose Luis Blanco-Claraco
3.0.2 (2026-06-11)
3.0.1 (2026-06-11)
3.0.0 (2026-06-06)
2.20.0 (2026-06-06)
- Last release of the 2.x series. Starting from 3.0.0, changes are tracked in each module's own CHANGELOG.rst file.
- Contributors: Jose Luis Blanco-Claraco
Package Dependencies
| Deps | Name |
|---|---|
| mrpt_common | |
| mrpt_containers |
System Dependencies
| Name |
|---|
| pybind11-dev |
| python3-dev |
| cmake |