Announcements
- Drake now officially supports Amazon Linux 2023 when installing via
pip(#24250). - Drake now offers pre-release beta support for Ubuntu 26.04 (“Resolute”)
(#24378).
- We do not provide stable release binaries attached to this release, but nightly binaries are available and building from source should work.
- Drake no longer supports Ubuntu 22.04 (“Jammy”). End of life timelines are documented as part of the Supported Configurations.
- Drake has upgraded minimum requirements for supported versions:
- As previously announced, Drake is switching to a new AutoDiff implementation
(#23870).
- As of this release, the new implementation is now the default (#24298).
- Users can still opt-out back to the old implementation, via:
- CMake builds:
-DDRAKE_USE_EIGEN_LEGACY_AUTODIFF=ON. - Bazel builds:
--@drake//tools/flags:use_eigen_legacy_autodiff=True.
- CMake builds:
- On 2026-07-01 the old implementation will be removed.
- The drake-apt site at
https://drake-apt.csail.mit.eduis deprecated (#24282).- The site will continue to be updated with stable releases for Ubuntu 24.04 (“Noble”) for the next two years, but will not add support for newer versions of Ubuntu.
- Instead of using the
drake-aptsite, users should switch to directly installing the*.debpackage attached to Drake releases. See drake_cmake_installed_apt for an example.
- Drake has added more decoration to
fmt_eigendefault layout (#24363).- Specifically, the default format now contains brackets and commas. Add the “#” format spec option to opt-out back to the prior behavior.
fmt_eigennow also supportsfmt’s range format specs “s”, “?s”, and “n”.- Consider these changes in code that uses
fmt_eigen:- Remove brackets from hand-written format strings surrounding a formatted Eigen, because it’s built-in now.
- Remove calls to
transpose()withinfmt_eigen(vec.transpose())because the default format no longer has unwanted newlines for column vectors. - Note that
fmt::to_string(fmt_eigen(thing))now has different output; usefmt::format("{:#}", fmt_eigen(thing))to restore the original formatting.
Previously announced
- Docker images are deprecated and will no longer be published after 2026-06-01 (#24048).
Breaking changes since v1.51.1
- The
drake/common/text_logging.hheader no longer includes<spdlog/spdlog.h>directly (#24202).- Instead, we provide a re-implementation with a subset of the same API. Code that was using rare parts of the spdlog API may now fail to build.
- For downstream code that manipulates log levels, use
drake::logging::levelto configure log severity (#24201). - Code that needs to adjust the logging sink may continue to include
drake/common/text_logging_spdlog.hand use the functions therein to adjust log settings. - Other than
text_logging_spdlog.h, spdlog should now be considered a private implementation detail of Drake.
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.51.1
Dynamical Systems
New features
- None
Fixes
- Fix MultilayerPerceptron vector-indexing contract violation (#24283)
- Reject malformed event periods at declaration time (#24288)
Mathematical Program
New features
- None
Fixes
- None
Multibody Dynamics and Geometry
New features
- Allow CENIC to accept nested diagrams (#24207)
- Allow using CENIC on diagrams without SceneGraph (#24245)
- Implement weld constraint for CENIC (#24174)
Fixes
- Allow geometry names through RenderEngineGltfClient (#24209)
- Rewrite internal geometry memoization for thread-safety and C++20 (#24265)
- CENIC accepts 0-duration step as no-op (#24338)
Planning
New features
- None
Fixes
- Fix IrisNp2 constraint tolerance truncation in the RaySampler (#24241)
- Fix IrisNp2 to draw additional samples if the user requests more than the number needed for the probabilistic certificate (#24243)
Tutorials and examples
- None
Miscellaneous features and fixes
- Add more decoration to fmt_eigen default layout (#24363)
- Provide scalar format strings for fmt_eigen (#24349)
- Fix default precision of fmt_eigen floating point (#24351)
- Change default “use eigen legacy autodiff” to false (#24298)
- Move spdlog to an implementation detail (#24202)
- Change symbolic::Variable::Id to be an object, not a size_t (#24333)
- Widen symbolic::Variable::Id to 128 bits + random entropy (#24331)
- Add StackedTrajectory::children accessor (#24311)
pydrake bindings
New features
- Make pydrake.polynomial.Polynomial picklable (#24271)
- Make pydrake.symbolic.Variable picklable (#24320)
- Make pydrake.trajectories.BezierCurve picklable (#24286)
- Make pydrake.trajectories.CompositeTrajectory picklable (#24287)
- Make pydrake.trajectories.DiscreteTimeTrajectory picklable (#24296)
- Make pydrake.trajectories.PathParameterizedTrajectoy picklable (#24295)
- Make pydrake.trajectories.PiecewisePolynomial picklable (#24273)
- Make pydrake.trajectories.PiecewisePose picklable (#24322)
- Make pydrake.trajectories.PiecewiseQuaternionSlerp picklable (#24322)
- Make pydrake.trajectories.StackedTrajectory picklable (#24303)
Fixes
- Bind pydrake.geometry.SceneGraphInspector.GetParentFrame (#24332)
- Bind pydrake.multibody.plant.BaseBodyJointType (#24294)
- Bind pydrake.multibody.plant.MultibodyPlant.GetBaseBodyJointType (#24294)
- Bind pydrake.multibody.plant.MultibodyPlant.SetBaseBodyJointType (#24294)
- Bind pydrake.symbolic.Variable default constructor (#24330)
Build system
- CMake builds now respect the CMAKE_Fortran_COMPILER setting (#24249)
- Bazel builds now respect the FC environment variable (#24249)
- Install Python importlib metadata (#24342)
- Enable OpenMP by default on Linux (#24370)
Build dependencies
- Add dependency on
ca-certificatesto our Ubuntutar.gzbinary releases (#24398) - Add dependencies on
build-essential,ca-certificates,cmake, andpkg-configto our APT package releases (#24398, #24399) - Support user-provided zlib on macOS (#24254)
- Move libclang out of default source prereqs on Ubuntu (#24300)
- Update crate_universe to latest (#24324)
- Update python venv to latest (#24334)
- Update dependency apple_support to 2.5.2 (#24313)
- Update dependency bazel to 9.0.2 (#24379)
- Update dependency bazel_features to 1.44.0 (#24317)
- Update dependency clang-format to 21.1.8 (#24344)
- Update dependency clp_internal to 1.17.11 (#24323)
- Update dependency coinutils_internal to 2.11.13 (#24323)
- Update dependency common_robotics_utilities_internal to latest commit (#24323)
- Update dependency curl_internal to 8.19.0 (#24325)
- Update dependency dm_control_internal to 1.0.38 (#24323)
- Update dependency gurobi to 13.0.1 (#24234)
- Update dependency gz_math_internal to 9.1.0 (#24326)
- Update dependency libpng_internal to 1.6.56 (#24323)
- Update dependency mujoco_menagerie_internal to latest commit (#24323)
- Update dependency nasm to 2.16.03.bcr.3 (#24314)
- Update dependency rules_rust to 0.69.0 (#24257)
- Update dependency rules_shell to 0.7.1 (#24316)
- Update dependency tinygltf to 3.0.0 (#24327)
- Update dependency tinyobjloader_internal to latest commit (#24328)
- Update dependency toolchains_llvm to 1.7.0 (#24344)
- Update dependency uwebsockets_internal to 20.76.0 (#24323)
- Update dependency voxelized_geometry_tools_internal to latest commit (#24348)
- Update dependency vtk_internal to latest commit (#24329)
- Update supported Clang on Ubuntu to 20 (#24275)
- Update supported macOS CMake to 4.3 (#24277)
- Update supported Xcode on macOS Tahoe to 26.4 (#24277)
Newly-deprecated APIs
DRAKE_FMT8_CONST(#24223)HAVE_SPDLOG(#24253)drake::fmt_runtime(#24223)drake::fmt_streamed(#24223)drake::logging::kHaveSpdlog(#24253)drake::multibody::DifferentialInverseKinematicsStatus::operator<<(#24252)drake::ostream_formatter(#24223)drake::solvers::IntervalBinning::operator<<(#24258)drake::solvers::MathematicalProgram::operator<<(#24258)drake::solvers::SolutionResult::operator<<(#24258)drake::symbolic::Environment::operator<<(#24258)drake::symbolic::Expression::operator<<(#24258)drake::symbolic::Formula::operator<<(#24258)drake::symbolic::Variables::operator<<(#24258)drake::systems::Context::operator<<(#24258)drake::to_string(drake::FileSource)(#24255)https://drake-apt.csail.mit.edu(#24282)
Removal of deprecated items
drake/math/jacobian.hheader file (#24308)drake::math::hessian()(#24308)drake::math::jacobian()(#24308)
Notes
This release provides pre-compiled binaries named
drake-1.52.0-{noble|mac-arm64}.tar.gz. See Stable Releases 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.