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 lowmaxTimevalue 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.x | v1.1.0 |
|---|---|
LogLevel::TRACE | LogLevel::Trace |
LogLevel::DEBUG | LogLevel::Debug |
LogLevel::INFO | LogLevel::Info |
LogLevel::WARNING | LogLevel::Warning |
LogLevel::ERROR | LogLevel::Error |
LogLevel::CRITICAL | LogLevel::Critical |
LogLevel::OFF | LogLevel::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_CASELogLevelvalues 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::PoseEstimatordocumentation (C++ and Python) now states precisely that at most oneupdatePose()/updatePosition()call may be in flight perraptor::Contextat a time — including calls on differentPoseEstimatorinstances bound to the same context. Using separate instances does not provide safe concurrency; calls sharing aContextmust 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-streamtime-origin, set to the first captured frame's timestamp, with frame timestamps stored relative to it. - CANV tooling compatibility.
python/tools/refine_canv_poses.pyhas been updated for the pycanv release that supports CANV v6.1 recordings.
Deprecations
- The legacy
SCREAMING_CASEraptor::LogLevelenumerators (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_CASEraptor::LogLevelvalues 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.INFOetc. still work, and the newraptor.LogLevel.Info-style names are now also available if you'd like to adopt them.
License Error Handling
- Handle the new
ExpiredLicensevalue in anyswitchoverMapQueryError/OperationError, and anywhereInvalidLicensewas previously treated as covering expired licenses too.
Version Access
- Replace any direct use of
raptor::kVersionwithraptor::Context::version(). No action needed if you never referencedkVersiondirectly.
No Action Needed
-
PoseEstimator/Contextcall signatures, the wire protocol, and the rest of the Python API are unchanged from v1.0.x. - The new
Config::memoryBudgetfield 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.