Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jan 2024 16:22:47 -0700
From:      Alan Somers <asomers@freebsd.org>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Aleksandr Fedorov <wigneddoom@yandex.ru>, FreeBSD Hackers <freebsd-hackers@freebsd.org>,  Scott Long <scottl@freebsd.org>, "meka@tilda.center" <meka@tilda.center>
Subject:   Re: The Case for Rust (in the base system)
Message-ID:  <CAOtMX2jV%2B=-jYLxSbyPVhxX_Ce10JRZ5BXPr2bzDK3WoJ2--mw@mail.gmail.com>
In-Reply-To: <CANCZdfpqWgvV_RCvVO_pvTrmajQFspW%2BQ9TM_Ok3JrXZAfeAfA@mail.gmail.com>
References:  <CAOtMX2hAUiWdGPtpaCJLPZB%2Bj2yzNw5DSjUmkwTi%2B%2BmyemehCA@mail.gmail.com> <1673801705774097@mail.yandex.ru> <CANCZdfpqWgvV_RCvVO_pvTrmajQFspW%2BQ9TM_Ok3JrXZAfeAfA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jan 20, 2024 at 3:31=E2=80=AFPM Warner Losh <imp@bsdimp.com> wrote:
>
>
>
> On Sat, Jan 20, 2024 at 11:45=E2=80=AFAM Aleksandr Fedorov <wigneddoom@ya=
ndex.ru> wrote:
>>
>> What about external dependencies?
>>
>> https://github.com/Axcient/freebsd-nfs-exporter/blob/master/Cargo.toml#L=
19
>> https://github.com/asomers/gstat-rs/blob/master/gstat/src/main.rs#L20
>>
>> Is there any plan for which crates we should take into the base system?
>>
>> We have had C++ in base for many years, but I don=E2=80=99t see any good=
 libraries for CLI, logging, JSON, etc.
>>
>> https://doc.rust-lang.org/rustc/platform-support.html#tier-1-with-host-t=
ools
>>
>> Where is the support for Freebsd as a primary platform? ARM, RISC-V, Pow=
er? Should we rewrite devd?
>>
>> I think we need to start by providing official repositories (e.g git.Fre=
eBSD.org/rust.git or git.FreeBSD.org/go.git)
>> for different languages that include stable bindings to the system API:
>> - sysctl
>> - libgeom
>> - libifconfig
>> - netgraph
>> - jail
>> - etc.
>>
>> So that it=E2=80=99s not just some anonymous on crates.io that represent=
s these bindings, but our community.
>> Officially, with support for a stable ABI for releases, security patches=
, etc.
>>
>> After this, it will be possible to think about which components to inclu=
de in the base system.
>>
>> I would be glad to see a more modern language than C in the database, bu=
t I=E2=80=99m afraid that it will be like with C++,
>> that we will get a couple of daemons and utilities and that=E2=80=99s al=
l.
>
>
> These are all good questions that need good answers, though necessarily t=
o get started.
>
> But the other question that occured to me after my last posting was "What=
 about build integration?"
> How much of the rust automation do we take in vs how much do we drive fro=
m a future bsd.rust.mk.
> I can sketch out bsd.rust.mk (to pick an arbitrary name, we'd likely need=
 one for what we traditionally
> think of as libraries (which may or may not map 1:1 onto crates: we could=
 have c callable libraries
> written in rust in the future, for example) and one for binaries.  Initia=
lly, though, if we go with the
> 'make rust tests possible' then we'd likely need the appropriate packages=
 installed for whatever
> dependencies we'd have in the tests. This would give us a taste for what =
we'd need to do for
> base, I'd think. Once we had that notion, I can easily see there needing =
to be some sort of
> rust bindings for ATF/kyua as one of the first libraries / crates that wo=
uld test that aspect of
> the build system. That all would be up to the people writing the tests in=
 rust, I'd imagine.
>
> While I could jot out the basics of this integration (so one could just a=
dd the rust
> tools to a subdir or subdirs, include the bsd.rust.mk or whatever and the=
n it would build
> if rust is enabled, and would emit a warning it was skipped because rust =
was disabled).
> We'd find out if this is workable or not and iterate from there. But that=
 would also require
> active participation from the rust advocates to make it a reality: I can =
put together the
> build infrastructure for the disabled case, but likely can't on my own do=
 the rust enabled
> case. I'd be happy to work with someone to do that, but I'm not going to =
be able to do
> that myself: my need for rust is slight, my knowledge of rust is weak, et=
c. Working with
> someone (or ideally several someones), though it could become reality. So=
 please contact
> me if you'd like to work on this.

That sounds like a reasonable approach.  But what would be the first
tool or test suite to write in Rust?  The fusefs tests are now 16
kSLOC and I don't fancy rewriting them.  The tests that I DO want to
write are those that involve fsx-rs.  But those won't actually need
bsd.rust.mk, because they'll just be short sh scripts that invoke a
tool from ports.  I just need a ports committer to approve
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D276005 .  ATM I
don't have a ready project to be imp's guinea pig.

-Alan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2jV%2B=-jYLxSbyPVhxX_Ce10JRZ5BXPr2bzDK3WoJ2--mw>