Changelog
Changelog
Steel changes, newest first, grouped by month and area. Steel is newton.solvers.SolverSteel in
Newton.
- Upstream entries are merged pull requests on newton-physics/newton. Unmarked entries shipped in Newton 1.8.0; entries marked (Newton main) are on main after that release.
- Integration branch entries are commits on skild-ai/newton
mainthat are not upstream yet. They reach Newton through upstream pull requests.
Generated by gen_changelog.py on 2026-11-11.
In review upstream
- Warn when SolverSteel ignores joint spring stiffness. #5236 by @jaredmejia
- Add per-body gravity scale (part 1 of #5179). #5232 by @jaredmejia
- Add ASV benchmarks for Steel contact friction and torsion preparation. #5231 by @jaredmejia
- Add queries for update flags and notify capture. #5098 by @eric-heiden
- Add per-shape friction modes. #5064 by @adenzler-nvidia
- Integrate passive joint damping implicitly in SolverSteel. #5010 by @cola1917
- Add rolling and spin friction rows to SolverSteel free-body contacts. #5005 by @jaredmejia
- MuJoCo-style tendons for SolverSteel, in review on the integration branch.
November 2026
Solver core
- Add Nesterov momentum to Steel’s matrix-free Gauss-Seidel sweep. #5229 by @jaredmejia (Newton main)
- Serial and colored solve modes, remove split, run matrix-free on CPU. #5150 by @LuckyIYI
- Skip sleeping articulations’ propagation work in colored Steel. #5119 by @jaredmejia
- Accept same-articulation propagation rows with the colored sweep. #5113 by @jaredmejia
- Allow sleeping with colored Steel propagation. #5106 by @jaredmejia
- Add per-world body shape variants on shared storage. #4959 by @eric-heiden
- Publish the input state of Steel bodies outside every articulation. #5000 by @jaredmejia
Contacts and friction
- Add contact adhesion through the per-shape steel:adhesion attribute.
f6fc82a8bby @jaredmejia (integration branch) - Keep carried contacts matched and add a rotating color order (propagation_color_order=“rotating”).
baffc2abbby @jaredmejia (integration branch) - Walk contact-torsion group members in the Steel matrix-free sweep. #5174 by @jaredmejia
- Clamp SolverSteel’s coupled Coulomb Newton normal impulse at zero. #5117 by @jaredmejia
- Support mesh surface velocity in SolverSteel. #5109 by @jaredmejia
- Solve Steel contact torsion rows on colored propagation. #5108 by @jaredmejia
- Support contact compliance on colored Steel propagation. #5107 by @jaredmejia
- Drop Steel torsion rows per world on capacity overflow. #5104 by @jaredmejia
- Add opt-in body-pair contact reduction. #5007 by @jaredmejia
- Carry frozen Steel friction-patch pairs in parallel. #5096 by @jaredmejia
- Skip the second friction row of each pair in SolverSteel’s matrix-free Gauss-Seidel sweeps. #5070 by @jaredmejia
- Release Steel friction anchors that slip inside the final cone. #5069 by @jaredmejia
- Prepare SolverSteel’s compliant contact rows on the device. #5006 by @jaredmejia
- Support friction_mode other than fixed_normal on colored Steel propagation. #5002 by @jaredmejia
- Bound history-less Steel patch anchor seeds by their patch cone. #5001 by @jaredmejia
- Apply SolverSteel CONNECT impulses at a shared anchor. #4998 by @jaredmejia
Joints and drives
- Apply passive joint springs in SolverSteel. #5159 by @jaredmejia (Newton main)
- Add FIXED (weld) loop closures to SolverSteel for link-break loops. #5158 by @jaredmejia
- Fix MJCF joint equality endpoints. #5029 by @M-Colley
- Apply rigid-body linear damping in SolverSteel. #5105 by @jaredmejia
- Support loop-closing REVOLUTE joints in SolverSteel. #4999 by @jaredmejia
Performance
- Cut single-world latency for large articulations.
2e4d770afby @LuckyIYI (integration branch) - Keep Steel’s contact-bearing local owners to small world batches. #5201 by @dylanturpin
- Keep Steel’s sparse factors with friction patches on and form the paired inverse factors in registers. #5200 by @dylanturpin
- Form Steel’s body inertias one body per thread and carry the published kinematics into the next step. #5199 by @dylanturpin
- Reserve Steel’s ordered row slots with one block per world. #5176 by @jaredmejia
- Visit only the velocity-limit rows’ span in the Steel matrix-free sweep. #5175 by @jaredmejia
- Run the allocation-free prefix scan in one launch. #5173 by @jaredmejia
- Keep Steel latency-mode launch parameters under 4 KB.
8b1f6bc50by @jaredmejia (integration branch) - Run Steel’s deterministic row scans on preallocated scratch. #5153 by @jaredmejia
- Add multi-DOF warp tree kernels, cooperative overlap refinement and a one-launch latency mode.
6516b18e5by @LuckyIYI (integration branch) - Shorten SolverSteel’s matrix-free Gauss-Seidel dense-row latency chain. #5071 by @jaredmejia
API and observables
- Move Newton warning categories to the root namespace. #5266 by @adenzler-nvidia
- Raise on SolverSteel constraint_row_watermarks() during graph capture. #5142 by @jaredmejia
- Raise on SolverSteel compliance count reads during graph capture. #5118 by @jaredmejia
- Report Steel constraint status from a device snapshot. #5072 by @jaredmejia
- Promote passive joint springs to the core API. #4521 by @eric-heiden
Fixes
- Check the Steel overflow flags instead of captured printf on Windows. #5252 by @dylanturpin
- Keep Steel’s torsion member lists ahead of the matrix-free pair cache. #5204 by @jaredmejia
October 2026
Solver core
- Add propagation_constraint_max to SolverSteel. #4997 by @jaredmejia
- Add a longest-first color order to Steel colored propagation. #4994 by @jaredmejia
- Restart the sleeping history of worlds selected by a masked SolverSteel.reset(). #4951 by @jaredmejia
- Remove the propagation_fused contact response from SolverSteel. #4885 by @jaredmejia
- Add an opt-in run-to-run deterministic mode to SolverSteel. #4821 by @jaredmejia
- Join the Steel double-buffer clear before step() returns. #4749 by @jaredmejia
- Add the experimental Steel solver. #4522 by @jaredmejia
Contacts and friction
- Gate Steel restitution on the step-start closing speed. #4992 by @jaredmejia
- Solve Steel contact torsion rows on the plain propagation response. #4954 by @jaredmejia
- Add friction and restitution combine modes to SolverSteel.
7565a26b1by @jaredmejia (integration branch) - Fix kinematic supports and zero-gap resting contacts in Steel’s coupled friction modes. #4907 by @jaredmejia
- Support articulated torsional and rolling friction rows on colored Steel propagation.
21ae5d994by @jaredmejia (integration branch) - Support free-body rolling and spin rows on colored propagation.
c9820fbc3by @jaredmejia (integration branch) - Solve free-body rolling and spin rows on the propagation response.
b642e9313by @jaredmejia (integration branch) - Express Steel free-rigid rows in the FREE joint’s anchor frame. #4748 by @jaredmejia
- Keep shapes with different condim in separate body-pair reduction groups.
3ba3ce9d4by @jaredmejia (integration branch) - Add experimental rolling and spin friction rows for free-body contacts (steel:condim 4 and 6).
14cf39b77by @jaredmejia (integration branch)
Joints and drives
- Add load-proportional joint friction to SolverSteel. #4993 by @jaredmejia
- Split Steel propagation mobility per shared joint. #4906 by @jaredmejia
- Add dry joint friction rows to Steel. #4760 by @jaredmejia
Performance
- Compile the row phase into SolverSteel’s matrix-free GS kernel. #5004 by @jaredmejia
API and observables
- Report SolverSteel BODY_PARENT_F from the solved step. #5003 by @jaredmejia
- Add Steel determinism examples. #4883 by @jaredmejia
- Add per-joint write masks to forward kinematics. #4881 by @eric-heiden
- Add a Steel sleeping example and a BODY_AWAKE observable. #4823 by @jaredmejia
- Add interactive Steel mechanism examples.
db9cd5ea5by @LuckyIYI (integration branch) - Run Steel notify_model_changed on the device and limit warm-start invalidation to a world mask. #4759 by @jaredmejia
- Use NewtonWarning for Steel solver warnings. #4767 by @adenzler-nvidia
- Add interactive tabletop examples.
4ba4f149eby @LuckyIYI (integration branch)
Coupling
- Let SolverSteel own rigid entries in the coupled solvers. #4824 by @jaredmejia
Steel docs and tutorials are licensed under Apache-2.0. Third-party notices. "Skild", "Skild AI" and the Skild logo are trademarks of Skild AI and are not licensed under Apache-2.0.