Announcements
- Drake now supports Xcode 27 (#25067).
- The minimum supported macOS is now Tahoe (26) (#24988).
- Keying an STL container (e.g.,
map,set,unordered_set,unordered_map) ondrake::symbolic::Expressionordrake::symbolic::Variablenow requires additional syntax (#25014).- When using an ordered container (e.g.,
map,set), you must supplyExpression::CompareLess(orVariable::CompareLess) as theComparetemplate argument. - When using an unordered container (e.g.,
unordered_map,unordered_set), you must supplyExpression::CompareEqualTo(orVariable::CompareEqualTo) as theKeyEqualtemplate argument. - The prior spelling (leaving the template argument at its default value) will continue to work during the 3-month deprecation period, but after that will fail to compile. (When using Xcode 27, no deprecation period is possible so it will break immediately without the change.)
- Background: Newer libc++ introduced a map and set lookup optimization that
requires
std::lessspecializations to be equivalent tooperator<. Any other behavior is non-conforming. For more context on the change, see the discussion on the LLVM issues #178847 and #179319. For Expression and Variable, theiroperator<s are used for logical comparison while theirstd::lessspecializations are used for structural comparison (and ditto forstd::equal_tovs.operator==) so we must stop using thestd::lessspecialization for containers and spell out theCompareLessfunctor instead.
- When using an ordered container (e.g.,
Breaking changes since v1.57.0
- None
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.57.0
Dynamical Systems
New features
- Add
input_requiredoption toPassThrough(#24929)
Fixes
- Validate region of attraction SOS certificates (#25003)
Mathematical Program
New features
- Support setting NLopt local solver and other options (#24996, #25002)
- Add
NloptSolverpassthrough for nlopt_set_param (#25072)
Fixes
- Restore support for solving quadratic programs with CLP (#25019, #25020, #25055)
- Fix CSDP linesearch under small N (#25025)
- Fix NLopt Solver Error Due to Vacuous Constraint Rows (#24981)
- Ensure NLopt Returns Success = False for NaN Solutions (#25053)
- Prove exact membership in VPolytope::PointInSet (#25069)
Multibody Dynamics and Geometry
New features
- None
Fixes
- Remove light limit (and streamline shaders) in
RenderEngineGl(#24953) - Report nested URDF world-weld prefix errors via DiagnosticPolicy (#24965)
- Report model directives errors via DiagnosticPolicy (#24938)
- Throw an exception if CalcSpatialInertia frame is not in the plant (#24934)
- Treat world body safely in joint-locking contact filter (#25082)
Planning
New features
- Add
CollisionChecker::CalcRobotClearances(#25073)
Fixes
- Fix
SceneGraphCollisionCheckersigned distance gradient sign flip with padding (#25017)
Tutorials and examples
- None
Miscellaneous features and fixes
- Resolve a merge key whose source itself uses a merge key in yaml processing (#25085)
- Prefer dedicated mathematical comparators over specializations (#25014)
pydrake bindings
New features
- Switch default binder to nanobind for wheel builds (#24971)
Fixes
- Fix
yaml_load_typedforOptionaland nestedtyping.Listandtyping.Dict(#25039)
Build system
- Drake now supports Xcode 27 (#25067)
- Prepare for Bazel 10 (#25065)
- Improve handling of unstamped builds in version macros (#25005)
Build dependencies
- Update Python venv to latest (#25046)
- Update crate_universe to latest (#25044)
- Update dependency apple_support to 2.9.1 (#25037)
- Update dependency bazel to 9.3.0 (#25066)
- Update dependency buildifier_prebuilt to 10.1.0 (#25033)
- Update dependency curl_internal to 8.22.0 (#25050)
- Update dependency dm_control_internal to 1.0.47 (#25043)
- Update dependency doxygen_internal to 1.18.0 (#25031)
- Update dependency fcl_internal to latest (#25006)
- Update dependency glib to 2.82.2.bcr.11 (#25038)
- Update dependency ipopt_internal to 3.14.20 (#25048)
- Update dependency llvm to 0.8.24 (#25041)
- Update dependency nanobind to 3.1.0 (#25007)
- Update dependency patchelf to 0.19.1 (#25034)
- Update dependency rules_cc to 0.2.25 (#25029)
- Update dependency rules_jvm_external to 7.2 (#25077)
- Update dependency rules_python to 2.3.4 (#25030)
- Update dependency rules_rs to 0.0.112 (#25036)
- Update dependency rust to 1.99.0 (#25084)
- Update dependency scs_internal to 3.3.1 (#25047)
- Update dependency sphinx to 8.2.3 (#24970)
- Update dependency uwebsockets_internal to 20.80.0 (#25043)
- Update dependency vtk_internal to latest commit (#25049)
- Update dependency zlib to 1.3.2.bcr.2 (#25052)
Newly-deprecated APIs
std::less_to<drake::symbolic::Expression>specialization (#25014)- Instead, use
drake::symbolic::Expression::CompareLess
- Instead, use
std::equal_to<drake::symbolic::Expression>specialization (#25014)- Instead, use
drake::symbolic::Expression::CompareEqualTo
- Instead, use
std::less_to<drake::symbolic::Variable>specialization (#25014)- Instead, use
drake::symbolic::Variable::CompareLess
- Instead, use
std::equal_to<drake::symbolic::Variable>specialization (#25014)- Instead, use
drake::symbolic::Variable::CompareEqualTo
- Instead, use
Removal of deprecated items
- None
Notes
This release provides pre-compiled binaries. See Installation for instructions on how to use them.
Drake binary releases incorporate a pre-compiled version of SNOPT as part of the Mathematical Program toolbox. Thanks to Philip E. Gill and Elizabeth Wong for their kind support.