Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Dec 2018 07:36:16 +0000
From:      "Poul-Henning Kamp" <phk@phk.freebsd.dk>
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:  <39272.1546241776@critter.freebsd.dk>
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
--------
In message <ca76e5f7-6e59-bd67-144a-90ad66f0252e@metricspace.net>, Eric Mc=
Corkl
e writes:

>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.

Tl;Dr:  Forget all about it.


The historical precedent is cvssup(1) which was written in Modula-3.

Cvsup was a very complex piece of machinery, and it was indisputably
incredibly important to the projects productivity, and we talked again and
again about including it in the tree.

The arguments were roughly (from memory:)

1. It would make porting to new platforms much harder. (M3 had its
   own threading implementation.)

2. Nobody but jdp@ knew or used M3, and he only used it for cvsup,
   because he wanted to try out the language in the first place.

3. It would increas buildworld time significantly.

4. Maintaining the M3 compiler in the tree would be a bother.

5. The only advantage over having it as a port were "It would be
   (more) convenient"

We never imported cvsup and it was not even a close call.


I think we can generalize and say that unless we are talking about
very big, complex and inescapable body of code, any potential benefits
will not outweigh the very concrete disadvantages.


So exactly which "base system components" are we talking about ?

The largest non-contrib program we maintain in the tree, is ppp(8)
and that is only 43KLOC.

That is not enough code to warrant a refactoring into a different
programming language, in particular not when usage is so low that
nobody has even bothered to merge the multi-link support from
net/mpd5 in the last 10 years.

So the only piece of code I can imagine which would ever come close
to qualifying, would be if somebody starts writing BSystemD(8)
from scratch.

And I'm 100% convinced that people will want that optional and firmly
segregated in a port for at least the first a decade.

And as far as I know, we *are* trying to make base more modular, and
migrate it to pkgbase to make the attachment of/to ports more
seamless, right?

Poul-Henning

-- =

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    =

Never attribute to malice what can adequately be explained by incompetence=
.



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