Skip to content

Documentation rewritten; Aether 0.839.0 - #188

Merged
nicolas-maman merged 3 commits into
mainfrom
docs/rewrite-aether-0839
Oct 22, 2026
Merged

nicolas-maman merged 3 commits into
mainfrom
docs/rewrite-aether-0839

Conversation

@nicolas-maman

Copy link
Copy Markdown
Collaborator

Two things, one commit each.

Aether 0.839.0

0.838.0 checks a by-value struct parameter that holds a pointer the way it checks a ptr parameter (E0902). Two functions take over a struct's buffers, and now declare it @keep:

  • broad_phase.copy_tree
  • snapshot.replace_pool

No caller changed. Every module checks clean on 0.839.0, and CI pins it (aeb v0.330). Both are the latest releases.

The documentation

The README was a 266-line wall. It had a module table with paragraph-sized cells, test-check counts and issue numbers in the prose, no example of using the engine, and stale links. It also had two false claims:

  • it described a top-level aephysics module as "the public API", and no such module exists;
  • it gave the ragdoll benchmark as 0.9x Box3D's time, and the record says 1.05x.

design.md was a development log.

New and rewritten:

  • README.md: features, a quick start (install, ae add, the C flags, a hello world), performance against Box3D with each number linked to its run, building and testing.

  • docs/guide.md: the user's guide.

    • Sections: worlds, bodies, shapes, materials and filters, joints, events, queries, threads, determinism, ragdolls, snapshots and replay, debug drawing, fitting into a host, and where aephysics goes past Box3D.
    • Every call it names is a real export.
    • The behaviours it states were checked in the code: sensor rules, filter groups, event flags, and who owns which geometry.
  • docs/architecture.md (replaces design.md): the modules against the Box3D files they port, the data, a step, precision, SIMD, threads, determinism, memory, the C file, and the departures from Box3D.

  • docs/testing.md: what scripts/test.sh runs, what each test holds the engine to, the golden trace, CI, the benchmarks and the profiler.

  • bench/RESULTS.md: a title, how to read the record, where it stands, and linked contents on top. The dated sections are unchanged.

  • examples/:

    • hello_world;
    • events_and_queries: a chain on spherical joints, hit events, a ray and an overlap;
    • ragdoll_and_snapshot: a snapshot loaded into a second world steps on to the same bits.

    scripts/test.sh now builds and runs every example, so CI keeps them working.

…eclare it @keep

0.838.0 checks a struct parameter taken by value that holds a pointer as
it checks a ptr one (E0902): a function that stores its pointers past the
call declares it @keep. broad_phase.copy_tree moves a tree's storage into
another and snapshot.replace_pool hands a loaded id pool over; both keep
their src, and now say so. No caller changed.

CI pins 0.839.0, the latest release (aeb v0.330). Every module checks
clean on it.
…ting

The README was a 266-line wall: a module table with paragraph-sized
cells, check counts and issue numbers in its prose, no example of using
the engine, stale links, a top-level module that does not exist, and a
ragdoll benchmark (0.9x) the record does not hold (it is 1.05x).

- README.md: what the engine is, its features, a quick start (install,
  `ae add`, the C flags, a hello world), the performance against Box3D
  with each number linked to its run, building and testing.
- docs/guide.md: using the engine: worlds, bodies, shapes, materials and
  filters, joints, events, queries, threads, determinism, ragdolls,
  snapshots and replay, debug drawing, fitting into a host, and where it
  goes past Box3D. Every call it names is an export; the behaviours it
  states were read in the code (sensor rules, filter groups, event flags,
  who owns which geometry).
- docs/architecture.md, from design.md (a development log): the modules
  against the Box3D files they port, the data, a step, precision, SIMD,
  threads, determinism, memory, the C file, the departures from Box3D.
- docs/testing.md: what scripts/test.sh runs, what each test holds the
  engine to, the golden trace, CI, the benchmarks and the profiler.
- bench/RESULTS.md: a title, how to read the record, where it stands,
  and linked contents on top of the dated sections.
- examples/: hello_world, events_and_queries (a chain on spherical
  joints, hit events, a ray and an overlap), ragdoll_and_snapshot (a
  snapshot loaded into a second world steps on to the same bits).
  scripts/test.sh now builds and runs every one, so CI keeps them true.
- tests/test_contact_solver_wide.ae's header said three paths and native
  lanes; the native lanes are long gone and the test compares two.
Released level with nothing to damp it, the chain is a pendulum: after
three seconds its tip is back near level (y 5.65), which the example
printed as where it hangs. It now tracks the lowest point the tip
reached (y 3.25, the chain's 3 m below the anchor) and prints both.
@nicolas-maman
nicolas-maman merged commit 9490d2b into main Oct 22, 2026
3 checks passed
@nicolas-maman
nicolas-maman deleted the docs/rewrite-aether-0839 branch October 22, 2026 02:35
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