| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| mujoco-3.14.0-macos-universal2.dmg.sha256 | 2026-09-22 | 101 Bytes | |
| mujoco-3.14.0-macos-universal2.dmg | 2026-09-22 | 52.5 MB | |
| mujoco-3.14.0-windows-x86_64.zip.sha256 | 2026-09-22 | 99 Bytes | |
| mujoco-3.14.0-windows-x86_64.zip | 2026-09-22 | 22.1 MB | |
| mujoco-3.14.0-linux-aarch64.tar.gz.sha256 | 2026-09-22 | 101 Bytes | |
| mujoco-3.14.0-linux-aarch64.tar.gz | 2026-09-22 | 32.8 MB | |
| mujoco-3.14.0-linux-x86_64.tar.gz.sha256 | 2026-09-22 | 100 Bytes | |
| mujoco-3.14.0-linux-x86_64.tar.gz | 2026-09-22 | 33.3 MB | |
| 3.14.0 source code.tar.gz | 2026-09-22 | 76.0 MB | |
| 3.14.0 source code.zip | 2026-09-22 | 77.3 MB | |
| README.md | 2026-09-22 | 9.1 kB | |
| Totals: 11 Items | 294.1 MB | 37 | |
Version 3.14.0 (September 22, 2026)
General
-
458189298Added theipcflag, an experimental contact mode of thediscreteintegrator for penetration-free flex contact. Each step minimizes an incremental potential subject to linearized contact constraints, using a barrier-free augmented Lagrangian whose subproblems are the discrete solve. Every committed position update is verified intersection-free by continuous collision detection, so flex contact cannot tunnel. Supported for dim-2 flexes: a flex with edge equality constraints keeps its elasticity in the constraint solver, whileelastic2delasticity is integrated implicitly through the effective metric. The contacts the mode resolves are frictionless. The mode keeps contact multipliers across steps that no state specification covers, somj_getState/mj_setStatedo not capture its full state and exact replay is not supported. -
2fec92237Introduced archive resource providers (mjp_registerArchiveResourceProvider). Archive providers use themjpResourceProviderinterface to mount and read archive containers (such as.mjz/.zip), decoupling container handling from format decoders and enabling on-demand asset extraction without requiring a pre-allocated VFS. -
e312ce82dFrames are now preserved when saving MJCF:<frame>elements are written with theirposandquatand their contents in frame-relative coordinates, so a saved model reloads with the same frames. Previously the frame transformation was accumulated into the children on save and only the frame's name was kept. Changes to theposorquatof a frame in anmjSpecnow also take effect when the spec is recompiled.
Engine
[!WARNING] Breaking API changes
dc8bb1364mj_readCtrlnow matches the signature and semantics ofmj_readSensorto support multi-input actuators (e.g., pid, dcmotor, orientation): it takes an output bufferresultof sizeactuator_ctrlnum[id]and returnsconst mjtNum*(a pointer intomjData.ctrlormjData.historyon zero-order-hold or exact timestamp matches, orNULLwhen interpolated values are written toresult). Actuator history buffers now storeactuator_ctrlnum[id]values per sample, andmj_initCtrlHistoryexpectsnsample * actuator_ctrlnum[id]values (#3597).
-
9e0c6b577The mjWARN_INERTIA warning is now also raised by the modified-inertia factorizations of theimplicitfastand damped-Eulerintegrators (previously silent) and of theimplicitintegrator (previously a fatal error). -
35c0631deThe sparse Newton solver no longer aborts with a "rank-deficient sparse Hessian" error when rounding loses a pivot of its Hessian, as can happen in single precision with ill-conditioned inertia. The pivot is now clamped and its row decoupled, as in the dense factorization.
Bug fixes
2a3f1f5a4Procedural model editing is no longer quadratic in the number of elements.mjSpecpreviously recomputed the compilation signature on everymjs_addGeom-like call, andmjs_setNamerescanned every name of the element's type. Both are now incremental. Building a spec with 8000 geoms is roughly 10x faster.
[!WARNING] Breaking API changes
mjsElement.signatureis now0whenever the spec has been structurally edited since it was last compiled, rather than being eagerly recomputed on each edit. It is still equal tomjModel.signatureafter a successfulmj_compile, which is whatmj_copyBackand the Pythonbindmethods rely on. Code that compared the signature of an uncompiled spec against anything other than0must compile first. Additionally, whenmjs_setNamefails on a duplicate name, the element's previous name is now preserved rather than being overwritten with the duplicate name.
-
ac329bd17Fixed the torque applied by weld constraints inmj_rnePostConstraint. The rotational constraint force was used directly as a world-frame torque, missing the scaling by0.5 * torquescaleand the rotation into the world frame. Force and torque sensors on bodies held by a weld that carries torque were wrong (#2533). -
263c638c0mj_rnePostConstraintnow accounts for the forces of spatial tendons (spring, damper, actuator, limit, friction loss, equality and armature), so force and torque sensors register the forces that tendons apply to bodies (#832). -
eb662fcafTendon actuatorfrclimited now defaults to "auto" as documented. Previously the default was "false" andactuatorfrcrangewas silently ignored unlessactuatorfrclimitedwas set explicitly. -
54be9cce6mjd_transitionFDandmjd_inverseFDnow raise an error when sleeping is enabled. Previously, their repeated evaluations changed the sleep state, leading to internal errors or wrong derivatives. -
e38573c64Fixed a memory leak inmjs_deletewhere deleted elements and subtrees were retained inmjSpecuntilmj_deleteSpec(#2882). -
65ea54c3cFixed an out-of-bounds read when parsing the header of a GMSH file loaded by flexcomp. Truncated headers are now reported as an error.