Live data from Hacker News

Microsoft's Safe Systems Programming Languages Effort (Rust)

mybuild.microsoft.com

1–10 of 18 posts

Re: Microsoft's Safe Systems Programming Languages Effort (Rust)

#4
Good intro to the benefits of Rust for a broad audience, but one important omission: the Use-After-Free and Double-Free protection he mentioned is provided by compile-time static analysis, but Rust also does runtime bounds checks to prevent classic stack smashing (with minimal performance overhead).

That may not seem like a big deal for the x86_64 world where modern mitigations largely make shellcode a thing of the past (hence heap exploitation, ROP/JOP, etc) but it is a BIG DEAL for embedded microcontrollers that lack OS/HW memory protection - an area where #![no_std] Rust shines.

As a security researcher and not a developer, let me be very frank: you should STRONGLY consider Rust in place of C or C++. But know that release profile builds don't do integer overflow checking, so don't get cocky :P

Re: Microsoft's Safe Systems Programming Languages Effort (Rust)

#5
post #3

Defination of systems programming language is really contradicting. Go was sold as systems programming language in beginning.

Kubernetes is written in Go; I would consider that a "systems" project. I think of "systems" as "software whose purpose is to underpin other software", excluding same-language libraries and frameworks. This rough definition does a good job of covering most of the things people mean when they say "systems programming".

Re: Microsoft's Safe Systems Programming Languages Effort (Rust)

#7
post #2

He mentions this book as “the book” on Rust. https://www.amazon.com/Rust-Programming-Language-Steve-Klabn... I think it’s also available for free online. Here? https://doc.rust-lang.org/book/

Yep. Although in my opinion Programming Rust [0] is better even though dated. The word goes that the 2nd edition will be out by the end of the year.

[0]: https://www.amazon.com/Programming-Rust-Fast-Systems-Develop...

Re: Microsoft's Safe Systems Programming Languages Effort (Rust)

#8
post #5
post #3

Defination of systems programming language is really contradicting. Go was sold as systems programming language in beginning.

Kubernetes is written in Go; I would consider that a "systems" project. I think of "systems" as "software whose purpose is to underpin other software", excluding same-language libraries and frameworks. This rough definition does a good job of covering most of the things people mean when they say "systems programming".

That sounds like a pretty useless definition and needlessly confusing, because systems programming have always meant something closer to the metal. System as in Operating System. Sounds like Go people decided to repurpose the term for whatever reason.

If Kubernetes were written in JavaScript would you call it a systems programming language as well?

Re: Microsoft's Safe Systems Programming Languages Effort (Rust)

#9
post #5

Earlier quoted context omitted.

Kubernetes is written in Go; I would consider that a "systems" project. I think of "systems" as "software whose purpose is to underpin other software", excluding same-language libraries and frameworks. This rough definition does a good job of covering most of the things people mean when they say "systems programming".

That sounds like a pretty useless definition and needlessly confusing, because systems programming have always meant something closer to the metal. System as in Operating System. Sounds like Go people decided to repurpose the term for whatever reason. If Kubernetes were written in JavaScript would you call it a systems programming language as well?

It wouldn't be written in JavaScript because JavaScript wouldn't serve a systems use-case very effectively. That's exactly my point.

Assuming Microsoft isn't talking about solely using Rust in Windows The Operating System and Linux The Operating System, they agree with my definition.

Re: Microsoft's Safe Systems Programming Languages Effort (Rust)

#10
post #9

Earlier quoted context omitted.

That sounds like a pretty useless definition and needlessly confusing, because systems programming have always meant something closer to the metal. System as in Operating System. Sounds like Go people decided to repurpose the term for whatever reason. If Kubernetes were written in JavaScript would you call it a systems programming language as well?

It wouldn't be written in JavaScript because JavaScript wouldn't serve a systems use-case very effectively. That's exactly my point. Assuming Microsoft isn't talking about solely using Rust in Windows The Operating System and Linux The Operating System, they agree with my definition.

Kubernetes could have been written in Typescript, for instance. Pulumi is for writing infrastructure as code in Typescript. Is Javascript a systems language, them?

Keyword being "closer" to the operating system, of course it doesn't mean just syscalls and Assembly. If you define "system" in "systems programming" in this broad sense of "something that other things call" you dilute the meaning of the term. Any program becomes "systems programming" then.

I'm sure that most people didn't use the term in this sense before Go's creators did and till this day I see only the Go community re-purposing the expression. I'd be happy to be proven wrong, though.

Post reply on HN