Talk on what a systems programming language needs to replace C

Paulo Pinto pjmlp at progtools.org
Mon Aug 26 12:31:23 UTC 2019


On Monday, 26 August 2019 at 10:37:29 UTC, Russel Winder wrote:
> On Mon, 2019-08-26 at 06:51 +0000, IGotD- via Digitalmars-d 
> wrote:
>> On Sunday, 25 August 2019 at 10:06:07 UTC, Dibyendu Majumdar 
>> wrote:
>> > https://youtu.be/l9hM0h6IQDo
>> 
>> What he doesn't mention is that compared to other languages 
>> many of the algorithms and programming models will not work in 
>> Rust and you have rethink them often making them more 
>> complicated and slower. Therefore I think Rust is a bad fit 
>> for "system programming".
>
> Given that the person's goal is to make Rust a superset of C, I 
> do not see how you make the above inference. What algorithms 
> and programming models are possible in C that are not possible 
> in Rust?
>
> I suspect if there are N programmers in the world, there are 
> 3N+10 definitions of "systems programming". Go developers have 
> changed their mind on the definition a few times over the years.
>
>> The entire talk is about evangelizing Rust contrary to what he 
>> says. He also says he constantly have to add more stuff into 
>> the language in order to make work better as a systems 
>> programming language which kind of contradicts the idea that 
>> Rust is suitable for system programming.
>
> I disagree. He clearly states he isn't evangelising Rust but 
> hopes that people feel evangelised for Rust due to the talk, 
> which is weird. The entire talk is about transforming Rust to 
> be a superset of C.
>
>> There are other languages that can do anything C can without 
>> any changes to the language.
>
> And Rust is already one of those.
>
> Given there is C and people feel it is time to move on to a 
> better language, and we have D, C++, Rust, and Go as the 
> obvious candidates, there is a problem none of these are 
> actually candidates for the job of replacing C. Even Go, which 
> is supposed explicitly to be C for the 2010s.

Apparently ARM, Google, Apple and Microsoft think otherwise, 
given that:

- Android's GPGPU debugger is mostly written in Go

- The hypervisor used on ChromeOS and Google Cloud Computer, 
gVisor, is written in Go

- Fuchsia TCP/IP stack and volume management tooling is written 
in Go

- ChromeOS sandboxing is written in Rust

- Android since Treble uses Java and C++ for drivers, the 
classical Linux drivers are deemed legacy

- Apple's kernel and future driver stack is written in a mix of 
C++ and Swift

- Windows uses a mix of C++ and .NET, since Windows 8 kernel code 
has been being migrated to C++, with COM (UWP) increasing its 
focus as userspace API

- Fuchsia is written in a mix of C++, Dart and Rust, with the L4 
C bits being migrated to C++

- ARM mbed is written in C++

One thing that everyone seems to be missing from this talk, lost 
in the usual D vs Rust argumentations, is that the speaker has a 
responsability position at Intel, and it also relates to Intel's 
adoption of Rust.


More information about the Digitalmars-d mailing list