Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Dec 2018 08:02:23 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Eric McCorkle <eric@metricspace.net>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: Speculative: Rust for base system components
Message-ID:  <CANCZdfrMY73-7vK6F6q-iPdW7EOUP8CPThkyxwOoOWedyMu5Ag@mail.gmail.com>
In-Reply-To: <ca76e5f7-6e59-bd67-144a-90ad66f0252e@metricspace.net>
References:  <ca76e5f7-6e59-bd67-144a-90ad66f0252e@metricspace.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 30, 2018 at 10:41 PM Eric McCorkle <eric@metricspace.net> wrote:

> Before I begin, I want to be clear that everything here is in the realm
> of speculative, long-term discussion.  My goal is to start a
> conversation, not to propose anything concrete right now.
>

Today, this is a losing bid. The cost for rust is high (both in terms of
people and added compile time), it's not well supported on all our
architectures (and its robustness on the ones it does support has only been
tested in limited scenarios), and there's 0 software it enables from day
one. Plus, since it's a fast evolving language, we'll still need the ports
to support those things that use it today since the likelihood of a version
mismatch is high (and supporting 1 version would be a big stretch, multiple
version is right out). So any sane cost / benefit analysis says: way more
cost than benefit, forget about it. We simply don't have the man-power to
maintain a high-cost, zero-benefit component in the tree. Lord knows we
have a lot of non-zero-cost-with-almost-zero-benefit things in the tree
today that we need to get rid of.

In the future, when there are actual replacement things written, or there
are new features written, that will shift the cost / benefit equation. And
the circumstances about what makes up base will also have shifted, if we're
lucky, and we'll be able to have a conversation. We imported perl and tcl
on the speculative notion that people would build great things. That never
really panned out, and they became a high-cost burden to keep modern for
only minor benefit. And version skew in Perl was terrible by the end. Forth
and Lua live in the tree because they have benefit (though Forth will be
departing, most likely by 13, and definitely by 14). They are also small
and easy to update to new versions.

And we can't say, with certainty, that if a bunch of rust things show up
we'll use them in base. We'll have to see what they provide to benefit the
system.

TBH, there's a stronger case for python than rust: there's actual python
scripts in the tree today that we have to install a port to use. And there
the benefit, while not zero, is small and the effort is large compared to
just dragging it in as a port, so it hasn't been done. It's another fast
evolving language that requires multiple versions as well...

So write something that everybody wants, that must be in base, and that
requires rust, and then we can have the conversation...

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfrMY73-7vK6F6q-iPdW7EOUP8CPThkyxwOoOWedyMu5Ag>