Skip to content

Idiomize#1

Merged
mattnite merged 4 commits intomasterfrom
idiomize
Feb 25, 2026
Merged

Idiomize#1
mattnite merged 4 commits intomasterfrom
idiomize

Conversation

@mattnite
Copy link
Contributor

No description provided.

mattnite and others added 4 commits February 24, 2026 22:57
Replace the old Sdk.zig/vendor submodule approach with a full Zig wrapper
module that consumers can @import("ode"). The bindings cover World, Body,
Mass, Joint (17 types), Space (4 types), Geom (10 types), Heightfield,
Rotation utilities, and collision detection. Handle types use file-is-struct
with methods, Mass is a value type, and common methods on Geom/Joint types
are generated via comptime GeomMethods/JointMethods functions. build.zig
exposes the "ode" module with automatic C library linkage and a test step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Port 3 upstream ODE demos as headless Zig executables (chain, hinge,
slider) that print physics state to stdout. Add 5 targeted tests for
collision, joints, spaces, mass, and force accumulation.

Build fixes:
- Work around upstream UBSan trap in lcp.cpp (uninitialized bool array)
  by compiling it with -fno-sanitize=bool so dWorldStep works in Debug
- Define dNODEBUG in non-Debug builds to match CMake behavior
- Rename lib root module variable to avoid shadowing the Zig module

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mattnite mattnite merged commit e0e61bb into master Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant