Re: [PATCH v2] rust: alloc: satisfy `aligned_alloc` requirements

Miguel Ojeda
2025-02-06T17:56:50Z

On Sun, Feb 2, 2025 at 12:27 PM Tamir Duberstein <tamird@gmail.com> wrote:
>
> requirements of `aligned_alloc`. These requirements may not be enforced
> on all systems, but they are on macOS. Ensure that alignment is at least

Which requirements? `aligned_alloc` comes from ISO C, and POSIX says
it is aligned with it; i.e. the change to make it work in macOS seems
fine, but please see below.

> + // According to `man aligned_alloc`:
> + //
> + // aligned_alloc() returns a NULL pointer and sets errno to EINVAL if size is not an
> + // integral multiple of alignment, or if alignment is not a power of 2 at least as large as
> + // sizeof(void *).

These requirements seem to come from the macOS man pages, not the
actual specification. The C one seems required to fail on invalid
alignments, but is the set of those the ones that macOS mentions? (It
seems the history of the requirements of that function is convoluted
and involves at least a DR, and glibc is very lax, more than
apparently its docs say)

Anyway, if those requirements are not the actual requirements from the
spec, then we should explain better why we are using those stricter
ones, e.g. we could prepend something like "In macOS, the set of valid
alignments is stricter than in other platforms, thus follow those to
support the test in that platform: ..." or similar.

> base-commit: 89a010129b2a60185d34d7377ef8aec7fbb92e76

Hmm... I don't have this base commit (but the patch applied fine).

Thanks!

Cheers,
Miguel