Merged
Conversation
atlv24
reviewed
Jun 27, 2025
atlv24
reviewed
Jun 27, 2025
Contributor
atlv24
left a comment
There was a problem hiding this comment.
monumental! cursory review looks great, will go more in depth later. Is replacing C with mikktspace-sys gonna be a different PR?
Contributor
Author
Yeah a follow-up PR. |
This was referenced Jun 30, 2025
atlv24
approved these changes
Jun 30, 2025
Contributor
atlv24
left a comment
There was a problem hiding this comment.
Fantastic cleanup, and I can't spot any functional deviation from the procedure. LGTM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Foreword
This PR makes substantial changes to the current implementation's structure, but it is byte-accurate with the original and the C implementation. Most changes are in the structure and control flow rather than the actual floating point operations. Reviewing the diff on GitHub itself my be challenging, so I recommend checking out the before and after in their entirety.
Objective
libmas a dependency, allowing this crate to stabilize.Solution
core::slice::sort. Since the original implementations were correct, we can use the language provided sorts instead.alloc::collections::BTreeMap.libmas a dependency and removed all features, making this crate purelyno_std. Instead, users must provide aVectorSpaceimplementation alongside the implementation ofGeometry. This has the two-fold benefit of simplifying internal code and allowing users the freedom to choose their maths library (avoiding issues whereglamwas pegged to a particular version for example).//comments existed.core::slice::split_at(_mut)to track the relationship between indices and buffer regions.Notes
This PR removes about a third of the code from this crate while adding customization options for the end user and paving a clear path to stabilization. But, it is also a substantial departure from the structure of the original C implementation. As such, I expect this to be somewhat controversial.