Skip to main content
Version: 1.1 (Latest)

Release Notes

October 8, 2026

Raptor SDK v1.1.0 Release Notes

Overview​

v1.1.0 delivers substantial performance and stability improvements to the localization and rendering pipelines, and introduces a second Jetson target (JetPack 7) and a configurable memory budget, alongside log level naming consistency and Python packaging improvements. It is API- and wire-compatible with v1.0.x: the PoseEstimator / Context call signatures, the wire protocol, and the Python API surface are unchanged.

Three narrow changes are called out under Breaking Changes below; none require source changes for the vast majority of consumers.

Migration difficulty: Low.


Performance & Stability Improvements​

This release includes significant performance and stability work across localization and rendering:

  • Faster pose estimation, with measurably lower CPU usage per pose update.
  • Improved throughput on multi-core systems during localization.
  • Smoother, more responsive map streaming, with fewer stalls.
  • Lower and more predictable memory usage, adapting to what the host machine has available.
  • Faster coordinate conversions.
  • Less map data loaded per view, reducing disk reads and memory use.
  • Faster queryMapIntersection() when querying many rays at once.

Critical Bug Fixes​

This release also fixes several crash and data-corruption conditions found during extended use:

  • Fixed several crashes during map loading, including under memory pressure and when a 3D Tiles map failed to finish loading.
  • Fixed a GPU memory leak and intermittent instability in the rendering path that could accumulate over long-running sessions.
  • Fixed crashes caused by unhandled GPU/driver failures, including during pose evaluation.
  • Fixed a crash in updatePose() / updatePosition() that could occur when a low maxTime value cut pose evaluation short.

Breaking Changes​

LogLevel Enumerators Renamed to PascalCase​

raptor::LogLevel enumerators have been renamed from SCREAMING_CASE to PascalCase to match the SDK's naming conventions:

v1.0.xv1.1.0
LogLevel::TRACELogLevel::Trace
LogLevel::DEBUGLogLevel::Debug
LogLevel::INFOLogLevel::Info
LogLevel::WARNINGLogLevel::Warning
LogLevel::ERRORLogLevel::Error
LogLevel::CRITICALLogLevel::Critical
LogLevel::OFFLogLevel::Off

The old names remain available as deprecated aliases (see Deprecations). Code that only uses the PascalCase names is unaffected.

The Python bindings now also expose the PascalCase names (e.g. raptor.LogLevel.Info); the original SCREAMING_CASE names (e.g. raptor.LogLevel.INFO) keep working. Existing Python code needs no changes.

Migration:

  • Replace old SCREAMING_CASE LogLevel values with the new PascalCase names in C++ code, e.g. raptor::LogLevel::INFO → raptor::LogLevel::Info.
  • Recommended ahead of removal of the deprecated aliases.
  • Python code may optionally adopt raptor.LogLevel.Info-style names; no action is required.

New ExpiredLicense Value on MapQueryError / OperationError / PoseEstimationError / DebugResult​

An expired license is now reported as ExpiredLicense instead of InvalidLicense, which is now reserved for a license that is otherwise invalid or missing a required feature flag. Also added to the Python bindings.

Migration: handle ExpiredLicense in any exhaustive switch, and also check for it wherever InvalidLicense was previously treated as covering expired licenses too.

raptor::kVersion Removed​

raptor::kVersion has been removed from <raptor/version.hpp>. Use raptor::Context::version() to retrieve raptor::Version instead; it has always been the supported accessor.


New Features​

JetPack 7 Jetson Support (New)​

v1.1.0 adds a second Jetson target, jetson-linux39-armv8 (L4T 39.2, Ubuntu 24.04), released alongside the existing JetPack 6 (L4T 36.4) target.

Configurable Memory Budget (New)​

raptor::Config gains a new MemoryBudget field (Config::memoryBudget) with gpuReserveBytes (default 256 MiB) and hostReserveBytes (default 1 GiB). These set the GPU and host memory headroom the SDK keeps available outside its own map-data caches. They are reserve targets, not hard caps on total SDK memory use; see the Memory Budget Configuration section in the integration guide for details. Also exposed via the JSON config (memoryBudget.gpuReserveBytes / memoryBudget.hostReserveBytes) and the Python bindings. The field is optional with defaults matching prior behavior, so no changes are required unless you want to tune it.

Self-Contained Python Wheel​

The Python wheel now bundles the raptor shared library and loads it from within the installed package, so pip install-ed wheels work out-of-the-box without the library needing to be on the system library search path.


General Improvements​

  • Improved range search accuracy and efficiency. When a prior pose covariance is supplied, the range search now provides better coverage while reducing wasted evaluations, particularly for oblique or high-altitude views.
  • Thread-safety documentation clarified. The raptor::guide::PoseEstimator documentation (C++ and Python) now states precisely that at most one updatePose() / updatePosition() call may be in flight per raptor::Context at a time — including calls on different PoseEstimator instances bound to the same context. Using separate instances does not provide safe concurrency; calls sharing a Context must be serialized. This is a documentation clarification only; behavior is unchanged from v1.0.x.
  • Debug capture archives are now CANV v6.1. Archives written by PoseEstimator::startDebug() carry a per-stream time-origin, set to the first captured frame's timestamp, with frame timestamps stored relative to it.
  • CANV tooling compatibility. python/tools/refine_canv_poses.py has been updated for the pycanv release that supports CANV v6.1 recordings.

Deprecations​

  • The legacy SCREAMING_CASE raptor::LogLevel enumerators (TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL, OFF) are deprecated in favor of the new PascalCase names and may be removed in a future release.

Migration Checklist​

LogLevel Rename​

  • Replace SCREAMING_CASE raptor::LogLevel values with PascalCase (e.g. LogLevel::INFO → LogLevel::Info) in C++ code; recommended ahead of removal of the deprecated aliases.
  • No change needed for Python code; raptor.LogLevel.INFO etc. still work, and the new raptor.LogLevel.Info-style names are now also available if you'd like to adopt them.

License Error Handling​

  • Handle the new ExpiredLicense value in any switch over MapQueryError / OperationError, and anywhere InvalidLicense was previously treated as covering expired licenses too.

Version Access​

  • Replace any direct use of raptor::kVersion with raptor::Context::version(). No action needed if you never referenced kVersion directly.

No Action Needed​

  • PoseEstimator / Context call signatures, the wire protocol, and the rest of the Python API are unchanged from v1.0.x.
  • The new Config::memoryBudget field is optional with defaults matching prior behavior; no action needed unless you want to tune the GPU/host memory reserves.
  • Debug capture archives are unchanged for consumers using pycanv or Vantor 3D Explorer. If you read the stream index with your own tooling, compute absolute frame times as time-origin + timestamp.

Additional Notes​

  • See the updated Thread safety, Logger Configuration, and Memory Budget Configuration sections in integration-guide.md for the current guidance.