From: "brian m. carlson" <sandals@crustytoothpaste•net>
To: Ezekiel Newren <ezekielnewren@gmail•com>
Cc: Patrick Steinhardt <ps@pks•im>,
git@vger•kernel.org,
"Haelwenn (lanodan) Monnier" <contact@hacktivis•me>,
Ben Knoble <ben.knoble@gmail•com>,
Christian Brabandt <cb@256bit•org>,
Collin Funk <collin.funk1@gmail•com>,
Eli Schwartz <eschwartz@gentoo•org>,
Elijah Newren <newren@gmail•com>,
Johannes Schindelin <Johannes.Schindelin@gmx•de>,
Junio C Hamano <gitster@pobox•com>,
Phillip Wood <phillip.wood123@gmail•com>,
Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm•com>,
Sam James <sam@gentoo•org>, Taylor Blau <me@ttaylorr•com>
Subject: Re: [PATCH RFC v3 5/8] rust: implement a test balloon via the "varint" subsystem
Date: Mon, 8 Sep 2025 22:22:50 +0000 [thread overview]
Message-ID: <aL9XOj1sVmHGjDRn@fruit.crustytoothpaste.net> (raw)
In-Reply-To: <CAH=ZcbA_8JM1hdUAfFe3ho0ShuniguEpV1308S0nCkCHOCsmmg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2206 bytes --]
On 2025-09-08 at 17:19:20, Ezekiel Newren wrote:
> On Mon, Sep 8, 2025 at 8:13 AM Patrick Steinhardt <ps@pks•im> wrote:
> > +use std::os::raw::c_int;
> > +use std::os::raw::c_uchar;
>
> I'd really rather avoid using C types in Rust, in favor of using Rust
> types in C. I have written a commit that talks about why C should use
> Rust primitive types and why Rust should avoid using C types, here:
> https://lore.kernel.org/git/2a7d5b05c18d4a96f1905b7043d47c62d367cd2a.1757274320.git.gitgitgadget@gmail.com/.
> In my opinion, the type c_void is the only appropriate C type that
> should be used on the Rust side, and should be used sparingly.
>
> The std::os::raw::c_* directly inherits the problems of core::ffi,
> which changes over time and seems to make a best guess at the correct
> definition for a given platform/target. This probably isn't a problem
> for all platforms that Rust supports currently, but can anyone say
> that Rust got it right for all C compilers of all platforms/targets?
It also poses problems because if we use `c_ulong` and it's 64 bit, then
trying to do a `.into()` to convert it to a `u64` will cause the
compiler and linters to complain, even if it does compile successfully.
But on 32-bit systems or Windows, `c_ulong` will be `u32` and it will be
required to convert, since Rust doesn't allow automatic conversion
between types. I have some personal Rust code which works with
`mode_t`, which on some Unix systems is 16 bits and on some systems is
32 bits and it has made me want to scream quite a bit. It gets even
worse if the types differ in signedness.
It would be better to do `usize` and `u8` on the Rust side here and
`size_t` and `uint8_t` on the C side. I think `unsigned char` and `u8`
is also fine, since we are not targeting systems where `unsigned char`
is not 8 bits in size.
I don't know how you plan to deal with the fact that Rust doesn't expose
`uintmax_t`, but I think that's 64-bit on all known systems (because
making it 128-bit would break ABI and nobody wants to bump libc's
SONAME), so you could try `u64` and `uint64_t` for the value instead.
--
brian m. carlson (they/them)
Toronto, Ontario, CA
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
next prev parent reply other threads:[~2025-09-08 22:22 UTC|newest]
Thread overview: 210+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-04 14:26 [PATCH RFC 0/3] Introduce Rust and announce that it will become mandatorty Patrick Steinhardt
2025-09-04 14:26 ` [PATCH RFC 1/3] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-04 18:50 ` Junio C Hamano
2025-09-05 7:53 ` Patrick Steinhardt
2025-09-04 22:06 ` brian m. carlson
2025-09-04 22:46 ` Junio C Hamano
2025-09-05 7:49 ` Patrick Steinhardt
2025-09-05 1:16 ` Eli Schwartz
2025-09-05 7:50 ` Patrick Steinhardt
2025-09-05 13:20 ` Eli Schwartz
2025-09-04 14:26 ` [PATCH RFC 2/3] rust: implement a test balloon via the "varint" subsystem Patrick Steinhardt
2025-09-04 22:37 ` brian m. carlson
2025-09-05 7:54 ` Patrick Steinhardt
2025-09-04 23:39 ` Ezekiel Newren
2025-09-05 2:00 ` Eli Schwartz
2025-09-05 7:54 ` Patrick Steinhardt
2025-09-05 13:39 ` Eli Schwartz
2025-09-07 20:07 ` Ben Knoble
2025-09-08 4:39 ` Junio C Hamano
2025-09-08 11:39 ` Patrick Steinhardt
2025-09-09 0:49 ` Ben Knoble
2025-09-09 15:27 ` Junio C Hamano
2025-09-08 6:44 ` Patrick Steinhardt
2025-09-04 14:26 ` [PATCH RFC 3/3] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-04 17:38 ` Eric Sunshine
2025-09-05 7:54 ` Patrick Steinhardt
2025-09-05 11:50 ` [PATCH RFC v2 0/7] Introduce Rust and announce that it will become mandatorty Patrick Steinhardt
2025-09-05 11:50 ` [PATCH RFC v2 1/7] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-05 17:47 ` Justin Tobler
2025-09-08 6:42 ` Patrick Steinhardt
2025-09-07 4:54 ` Elijah Newren
2025-09-08 6:42 ` Patrick Steinhardt
2025-09-05 11:50 ` [PATCH RFC v2 2/7] Makefile: introduce " Patrick Steinhardt
2025-09-05 20:21 ` brian m. carlson
2025-09-08 6:40 ` Patrick Steinhardt
2025-09-07 4:58 ` Elijah Newren
2025-09-08 6:41 ` Patrick Steinhardt
2025-09-07 15:26 ` SZEDER Gábor
2025-09-08 6:41 ` Patrick Steinhardt
2025-09-05 11:50 ` [PATCH RFC v2 3/7] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-05 19:51 ` brian m. carlson
2025-09-07 5:00 ` Elijah Newren
2025-09-05 11:51 ` [PATCH RFC v2 4/7] rust: implement a test balloon via the "varint" subsystem Patrick Steinhardt
2025-09-05 21:46 ` Junio C Hamano
2025-09-05 22:39 ` Junio C Hamano
2025-09-05 23:04 ` brian m. carlson
2025-09-05 11:51 ` [PATCH RFC v2 5/7] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-05 12:45 ` Matthias Aßhauer
2025-09-05 13:38 ` Patrick Steinhardt
2025-09-05 14:38 ` Eli Schwartz
2025-09-08 6:42 ` Patrick Steinhardt
2025-09-07 5:31 ` Elijah Newren
2025-09-08 6:42 ` Patrick Steinhardt
2025-09-05 14:22 ` Phillip Wood
2025-09-05 14:32 ` Eli Schwartz
2025-09-05 19:34 ` brian m. carlson
2025-09-07 5:25 ` Elijah Newren
2025-09-05 11:51 ` [PATCH RFC v2 6/7] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-07 0:21 ` Junio C Hamano
2025-09-08 6:41 ` Patrick Steinhardt
2025-09-05 11:51 ` [PATCH RFC v2 7/7] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-05 19:56 ` brian m. carlson
2025-09-08 6:40 ` Patrick Steinhardt
2025-09-05 21:00 ` Junio C Hamano
2025-09-08 6:40 ` Patrick Steinhardt
2025-09-05 14:14 ` [PATCH RFC v2 0/7] Introduce Rust and announce that it will become mandatorty Phillip Wood
2025-09-05 14:28 ` Patrick Steinhardt
2025-09-07 4:31 ` Elijah Newren
2025-09-08 6:44 ` Patrick Steinhardt
2025-09-08 23:00 ` brian m. carlson
2025-09-10 8:21 ` Patrick Steinhardt
2025-09-09 6:33 ` Elijah Newren
2025-09-10 8:21 ` Patrick Steinhardt
2025-09-09 9:12 ` Phillip Wood
2025-09-10 8:21 ` Patrick Steinhardt
2025-09-10 9:32 ` Phillip Wood
2025-09-10 10:49 ` Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 0/8] " Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 1/8] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-08 22:09 ` brian m. carlson
2025-09-09 1:03 ` brian m. carlson
2025-09-10 8:22 ` Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 2/8] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 3/8] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 4/8] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 5/8] rust: implement a test balloon via the "varint" subsystem Patrick Steinhardt
2025-09-08 17:19 ` Ezekiel Newren
2025-09-08 22:22 ` brian m. carlson [this message]
2025-09-10 8:22 ` Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 6/8] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 7/8] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 8/8] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-08 14:20 ` [PATCH RFC v3 0/8] Introduce Rust and announce that it will become mandatorty Kristoffer Haugsbakk
2025-09-10 15:35 ` [PATCH RFC v4 0/9] Introduce Rust and announce that it will become mandatory Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-11 21:33 ` brian m. carlson
2026-01-20 22:18 ` [PATCH RFC v4 1/9] meson: add infrastructure to build internal D. Ben Knoble
2026-01-20 23:23 ` [PATCH RFC v4 1/9] meson: add infrastructure to build internalg brian m. carlson
2026-01-21 8:00 ` Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-10 21:04 ` Junio C Hamano
2025-09-10 15:35 ` [PATCH RFC v4 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-10 21:20 ` Junio C Hamano
2025-09-15 10:53 ` Patrick Steinhardt
2025-09-22 16:24 ` Junio C Hamano
2025-09-23 5:32 ` Patrick Steinhardt
2025-09-23 8:53 ` LTS "lieutenant", was " Johannes Schindelin
2025-09-24 13:47 ` Patrick Steinhardt
2025-09-23 14:31 ` Junio C Hamano
2025-09-24 12:53 ` Patrick Steinhardt
2025-09-24 17:43 ` Junio C Hamano
2025-09-10 21:42 ` Kristoffer Haugsbakk
2025-09-15 10:53 ` Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-10 15:35 ` [PATCH RFC v4 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-11 21:55 ` [PATCH RFC v4 0/9] Introduce Rust and announce that it will become mandatory brian m. carlson
2025-09-15 10:53 ` Patrick Steinhardt
2025-09-12 15:45 ` SZEDER Gábor
2025-09-12 16:32 ` Junio C Hamano
2025-09-15 10:50 ` Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 " Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-17 22:09 ` SZEDER Gábor
2025-09-18 1:19 ` brian m. carlson
2025-09-22 19:34 ` SZEDER Gábor
2025-09-22 20:59 ` Junio C Hamano
2025-09-22 22:15 ` brian m. carlson
2025-09-22 22:56 ` Junio C Hamano
2025-09-23 1:59 ` Elijah Newren
2025-09-23 4:54 ` Patrick Steinhardt
2025-09-23 14:17 ` Junio C Hamano
2025-09-23 0:43 ` Ezekiel Newren
2025-09-19 13:59 ` Phillip Wood
2025-09-22 13:01 ` Patrick Steinhardt
2025-09-22 14:07 ` Phillip Wood
2025-09-22 14:38 ` Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-15 17:12 ` [PATCH v5 0/9] Introduce Rust and announce that it will become mandatory Junio C Hamano
2025-09-16 2:03 ` Ezekiel Newren
2025-09-16 10:06 ` Patrick Steinhardt
2025-09-17 12:07 ` Sam James
2025-09-17 17:30 ` Ezekiel Newren
2025-09-16 22:25 ` Ramsay Jones
2025-09-16 23:38 ` Ezekiel Newren
2025-09-17 18:32 ` Ramsay Jones
2025-09-18 3:47 ` Elijah Newren
2025-09-25 1:10 ` what's missing from newer C? [was: [PATCH v5 0/9] Introduce Rust ....] Eric Wong
2025-09-26 22:17 ` Ezekiel Newren
2025-10-04 1:02 ` Eric Wong
2025-10-06 9:13 ` Pierre-Emmanuel Patry
2025-09-19 18:41 ` [PATCH RFC 0/3] Introduce Rust and announce that it will become mandatorty John Paul Adrian Glaubitz
2025-09-22 13:01 ` Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 0/9] Introduce Rust and announce that it will become mandatory Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-23 15:29 ` Phillip Wood
2025-09-23 17:29 ` Junio C Hamano
2025-09-24 5:03 ` Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-23 9:45 ` [PATCH v6 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-23 20:15 ` [PATCH v6 0/9] Introduce Rust and announce that it will become mandatory Ezekiel Newren
2025-09-24 5:02 ` Patrick Steinhardt
2025-09-24 14:34 ` Ezekiel Newren
2025-09-25 6:30 ` [PATCH v7 " Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-25 21:33 ` Ramsay Jones
2025-09-25 6:30 ` [PATCH v7 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-30 13:34 ` Kristoffer Haugsbakk
2025-10-01 17:22 ` Ezekiel Newren
2025-10-02 7:30 ` Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-10-01 17:21 ` Ezekiel Newren
2025-10-01 19:44 ` Junio C Hamano
2025-09-25 6:30 ` [PATCH v7 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-25 6:30 ` [PATCH v7 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-25 16:35 ` [PATCH v7 0/9] Introduce Rust and announce that it will become mandatory Junio C Hamano
2025-10-01 18:43 ` Ezekiel Newren
2025-10-02 7:29 ` [PATCH v8 " Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-10-02 7:29 ` [PATCH v8 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-10-02 16:38 ` [PATCH v8 0/9] Introduce Rust and announce that it will become mandatory Junio C Hamano
2025-10-07 9:59 ` Patrick Steinhardt
2025-10-02 23:35 ` Ezekiel Newren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aL9XOj1sVmHGjDRn@fruit.crustytoothpaste.net \
--to=sandals@crustytoothpaste$(echo .)net \
--cc=Johannes.Schindelin@gmx$(echo .)de \
--cc=ben.knoble@gmail$(echo .)com \
--cc=cb@256bit$(echo .)org \
--cc=collin.funk1@gmail$(echo .)com \
--cc=contact@hacktivis$(echo .)me \
--cc=eschwartz@gentoo$(echo .)org \
--cc=ezekielnewren@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=me@ttaylorr$(echo .)com \
--cc=newren@gmail$(echo .)com \
--cc=phillip.wood123@gmail$(echo .)com \
--cc=pierre-emmanuel.patry@embecosm$(echo .)com \
--cc=ps@pks$(echo .)im \
--cc=sam@gentoo$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox