diff --git a/doc/changelog.rst b/doc/changelog.rst index 19436ea2..e408b4fa 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -2,54 +2,54 @@ Changelog ========= -Upcoming version (not yet released) ------------------------------------ +Version 3.8.1 (May 11, 2026) +---------------------------- General ^^^^^^^ -- Added island support for the :ref:`PGS solver`. -- The :ref:`PGS solver` now iterates over constraints in pseudo-random order, improving performance by - ~20%. -- Added support for :ref:`elastic2d` for trilinear and quadratic flex - :ref:`dofs`. -- :ref:`Midpoint integration` is now restricted to the ``implicitfast`` - :ref:`integrator` and is disabled when fluid forces are active - (nonzero :ref:`density` or :ref:`viscosity`). - Midpoint integration treats external forces as zero-order-hold constants, which causes - energy gain in the presence of contacts and in fluid media. -- Added :ref:`mju_sym2dense`, converting a lower-triangular, implicitly symmetric CSR matrix to a dense - symmetric matrix. The inertia matrix ``mjData.M`` is an example of such a matrix. -- Added :ref:`mjs_getOriginSpec`, returning the spec that originally defined an element, prior to attachment. This is in - contrast to :ref:`mjs_getSpec` which returns the spec currently owning the element. If the element is not the result - of an attach operation, the functions are identical. +1. Added island support for the :ref:`PGS solver`. +2. The :ref:`PGS solver` now iterates over constraints in pseudo-random order, improving performance by + ~20%. +3. Added support for :ref:`elastic2d` for trilinear and quadratic flex + :ref:`dofs`. +4. :ref:`Midpoint integration` is now restricted to the ``implicitfast`` + :ref:`integrator` and is disabled when fluid forces are active + (nonzero :ref:`density` or :ref:`viscosity`). + Midpoint integration treats external forces as zero-order-hold constants, which causes + energy gain in the presence of contacts and in fluid media. +5. Added :ref:`mjs_getOriginSpec`, returning the spec that originally defined an element, prior to attachment. This is + in contrast to :ref:`mjs_getSpec` which returns the spec currently owning the element. If the element is not the + result of an attach operation, the functions are identical. +6. Added :ref:`mju_sym2dense`, converting a lower-triangular, implicitly symmetric CSR matrix to a dense symmetric + matrix. The inertia matrix ``mjData.M`` is an example of such a matrix. .. admonition:: Future breaking API changes :class: warning - - The introduction of :ref:`mju_sym2dense` is a step towards the removal of the legacy-format ``mjData.qM`` in favor - of the CSR-format ``mjData.M``. This removal will involve a future breaking change to :ref:`mj_fullM` (which - currently accepts a ``qM``-like matrix as an argument). To prevent a future breakage, replace - ``mj_fullM(m, dst, d->qM)`` with - |br| ``mju_sym2dense(dst, d->M, m->nv, m->M_rownnz, m->M_rowadr, m->M_colind)``. - + 7. The introduction of :ref:`mju_sym2dense` is a step towards the removal of the legacy-format ``mjData.qM`` in favor + of the CSR-format ``mjData.M``. This removal will involve a future breaking change to :ref:`mj_fullM` (which + currently accepts a ``qM``-like matrix as an argument). To prevent a future breakage, replace + ``mj_fullM(m, dst, d->qM)`` with + |br| ``mju_sym2dense(dst, d->M, m->nv, m->M_rownnz, m->M_rowadr, m->M_colind)``. Bug fixes ^^^^^^^^^ -- Fixed default for multiccd in :doc:`mjcPhysics `. +8. Fixed default for multiccd in :doc:`mjcPhysics `. Python ^^^^^^ -- Added ``MjSpec.encode`` method, wrapping :ref:`mj_encode`. -- Added ``mujoco.MjVfs`` Python binding to interact with the Virtual File System directly from Python. - See :ref:`Virtual File System ` for usage details. +9. Added ``MjSpec.encode`` method, wrapping :ref:`mj_encode`. +10. Added ``mujoco.MjVfs`` Python binding to interact with the Virtual File System directly from Python. + See :ref:`Virtual File System ` for usage details. + + .. warning:: + The previous way of passing assets via a dictionary mapping asset names to bytes is **deprecated** and will be + removed in an upcoming release. You cannot specify both the ``assets`` dictionary and the ``vfs`` argument at the + same time. ``MjVfs`` should be used as a drop-in replacement. - .. warning:: - The previous way of passing assets via a dictionary mapping asset names to bytes is **deprecated** and will be - removed in an upcoming release. You cannot specify both the ``assets`` dictionary and the ``vfs`` argument at the same - time. ``MjVfs`` should be used as a drop-in replacement. Version 3.8.0 (April 24, 2026) ------------------------------