Eleven bindings: the two structs raylib needs for them, load/valid?/unload, four draw forms, and the shapes-texture and collision-rectangle calls. IsTextureReady does not exist in raylib 5.5 - it was renamed - so IsTextureValid is what is bound; the old name would have been a link error. The test is the point. The obvious one - hand raylib a Texture2D, read it back, compare - passes for any layout, because store-and-return is symmetric and C writes and reads the same wrong slots. Permuting two fields in the defstruct produced identical output. What replaced it makes raylib compute something from the fields: GetCollisionRec pins Rectangle completely, four numbers from four different field pairs, and SetShapesTexture's default substitution pins the id against the rest of Texture2D. Each was verified by permuting fields and watching the test fail. The limit is stated where someone will find it: width, height and mipmaps are not pinned against each other, because nothing raylib computes without a GL context reads them. A width/height swap shows only as a visibly wrong sprite. That half is verified by running sand under Xvfb and looking, which is recorded as manual and not asserted anywhere.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%