Linus Torvalds' Initial Comment On Rust Code Prospects Within The Linux Kernel
Kernel developers appear to be eager to debate the merits of potentially allowing Rust code within the Linux kernel. Linus Torvalds himself has made some initial remarks on the topic ahead of the Linux Plumbers 2020 conference where the matter will be discussed at length.
[...] Linus Torvalds chimed in though with his own opinion on the matter. Linus commented that he would like it to be effectively enabled by default to ensure there is widespread testing and not any isolated usage where developers then may do "crazy" things. He isn't calling for Rust to be a requirement for the kernel but rather if the Rust compiler is detected on the system, Kconfig would enable the Rust support and go ahead in building any hypothetical Rust kernel code in order to see it's properly built at least.
Linus Torvalds Wishes Intel's AVX-512 A Painful Death
According to a mailing list post spotted by Phoronix, Linux creator Linus Torvalds has shared his strong views on the AVX-512 instruction set. The discussion arose as a result of recent news that Intel's upcoming Alder Lake processors reportedly lack support for AVX-512.
Torvalds' advice to Intel is to focus on things that matter instead of wasting resources on new instruction sets, like AVX-512, that he feels aren't beneficial outside the HPC market.
Related: Rust 1.0 Finally Released!
Results of Rust Survey 2016
AVX-512: A "Hidden Gem"?
Linus Torvalds Rejects "Beyond Stupid" Intel Security Patch From Amazon Web Services
(Score: 1, Funny) by Anonymous Coward on Monday July 13 2020, @08:51PM (5 children)
"The discussion arose as a result of recent news that Intel's upcoming Alder Lake processors reportedly lack support for AVX-512."
I don't get it. Intel is dropping AVX-512 in their upcoming processor and everyone is complaining that AVX-512 shouldn't be included and it's a waste of space.
If that went over your head...
Democrats won the election, but Democrats are complaining a Democrat won the election.
(Score: 0) by Anonymous Coward on Monday July 13 2020, @09:02PM
(Score: 1, Insightful) by Anonymous Coward on Monday July 13 2020, @09:58PM (3 children)
It's crap because it's an instruction set for only some intel processors, which even intel is not including in all their processors, which only makes it even useless than it already is. So a waste of resources for pretty much every which way.
(Score: 2) by driverless on Tuesday July 14 2020, @03:02AM
Makes Intel look good on specific benchmarks though.
(Score: 1) by petecox on Tuesday July 14 2020, @03:08AM (1 child)
I use a package-based distribution, so yes, I probably wouldn't see any benefit.
Some use to Gentoo's user base who compile every optimisation for every piece of software on their machines!
(Score: 0) by Anonymous Coward on Tuesday July 14 2020, @04:43AM
AVX-512 is only a benefit in really specific circumstances. Other than those, it hurts performance and can hurt it quite badly. One of the biggest reasons why is that in order for AVX-512 to work, the entire CPU is clocked down, slowing all other threads on that chip for the duration of that part of the pipeline.
(Score: 0) by Anonymous Coward on Monday July 13 2020, @09:12PM (28 children)
Those in the know, chime in with your pro-con of these two language, aiming to replace C/C++.
From the little I read, I am leaning towards Go - seems cleaner and "less-is-more" kinda language - it's THE lesson C++ taught us.
Rust seems a more "managed' language, to save the programmers from themselves, and that mentality doesn't seem right for replacing C/C++.
Go is a spawn of Google. Rust is a spawn of Mozilla. Make of it what you will.
So go ahead. Make your case for either, or both, or neither.
(Score: 5, Informative) by NickM on Monday July 13 2020, @09:29PM (4 children)
I a master of typographic, grammatical and miscellaneous errors !
(Score: 3, Funny) by Anonymous Coward on Monday July 13 2020, @10:36PM (3 children)
Dude. Like, we are nerds, right?! We don't do subtlety too good, you know?
Don't post comment like that again. In the medieval times, your sort got hunged, and rightfully so.
(Score: 2, Funny) by Anonymous Coward on Tuesday July 14 2020, @01:51AM (2 children)
I've been hung all my life
(Score: 0) by Anonymous Coward on Tuesday July 14 2020, @03:39AM
Ladies?
A well hung man is hard to find.
(Score: 2) by Bot on Wednesday July 15 2020, @12:48PM
That's what she said, sarcastically.
Account abandoned.
(Score: 5, Interesting) by turgid on Monday July 13 2020, @09:38PM (15 children)
I'm leaning towards D because it's much cleaner than either and designed by a guy (Walter Bright) with years of experience writing C and C++ compilers. When Go came out, I was underwhelmed by it. Rust seems to be designed by people who haven't heard of Test Driven Development and it suffers from some of the same problems as C++.
If I had another 20-30 IQ points then perhaps I would have some to spare on difficult languages like C++ and Rust, but I just want to get things done with what I have. I have no interest in being "clever" and a language lawyer. I prefer not to put bugs in my code by keeping it simple and quick to compile, running the tests every time I change a line of code.
Why is there a fashion for compilers (and languages) to become ever more complex, slow and potentially flaky?
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 3, Insightful) by DannyB on Monday July 13 2020, @10:11PM (2 children)
Why do we have dishwashers when we can do dishes by hand?
Why the noise and complexity of a backhoe when you can quietly dig a long ditch with a shovel.
Because: human productivity.
Compilers and languages have gotten more complex for the last sixty years. For that reason. To make humans more productive.
In the last three decades we reached a point where human programming cost exceeds the cost of computers. Thus runtime inefficiency is a net dollars and cents gain if you can program the machine faster.
Ask anyone (end users, customers, managers, etc), would you rather have your XYZ software delivered six months sooner, or have it be more efficient at runtime? Guess which one they will pick?
There is also a consideration of languages protecting programmers from themselves. This is a Good Thing. As long as you can deliberately get around it when necessary by telling the compiler "I know what I'm doing". Fact: humans make mistakes.
Now I'm going to mention Java as an extreme example, which is completely inappropriate when talking about the Linux kernel. But the economic reality is why Java has been the #1 or #2 language for the last 15 years in a row. [youtube.com] Java must be doing something right. GC must be a net economic win. (argument: the threads that service a customer request incur zero cpu cycles of memory management. GC threads on other cores incur that cost -- but not inline with servicing the customer request. The customer request naturally has to make enough money to pay the freight of the GC -- and it does.)
There are different levels of abstraction, and protecting programmers, for different types of programming work. Writing kernels and microcontroller code is certainly different than business software. But some of these arguments apply about human productivity, economics, eliminating entire classes of bugs automatically if possible, using the compiler as your first line of unit testing. If the code won't even compile, then it fails the first unit test. :-) Letting those errors slide until runtime is simply a lazy approach and means that they might not be found in your unit testing, but will be found by your ultimate customer. I remember in the early 1980s reading about a rocket that was lost due to a type error that would have been a compile error in Pascal. Yes, early 1980s story.
If a lazy person with no education can cross the border and take your job, we need to upgrade your job skills.
(Score: 4, Insightful) by turgid on Monday July 13 2020, @10:40PM (1 child)
My point is that, in my humble opinion, some have got so complex that they have the opposite effect. I have yet to see any "good" C++ code in a commercial setting. There are whole books written on what you shouldn't do when writing C++, for example.
I agree that there are some languages that facilitate this. They tend to be clean, simple, elegant and high-level with a great deal of abstraction. Unfortunately, they tend not to get used much because they're not in fashion like e.g. Java, C++, C# and maybe now Rust.
There is often a lot of hubris involved when someone decides, "I know what I'm doing, and I'm going to ignore what the compiler is trying to tell me." It often ends in tears. If you are having to resort to such bodges, (1) check your understanding of the problem, (2) check your understanding of the language and (3) redesign your solution or (4) choose a better language.
It allows mediocre programmers to get simple programs working in a nice cross-platform sandbox. I use Java every day. It's too wordy. The standard class libraries aren't vert good.
Agreed, but compilers and static analysis can't catch all those bugs. The code has to be executed and made to fail. Branches must be checked. Use cases must be exercised. C++ and Rust and the intel itanics of programming languages. They are enormous, baroque and make magical promises which can never be fulfilled because code must be run.
For this reason, there has to be a good balance between compile-time safety (good), static analysis (good), unit testing (good) and regression testing (good).
If the language is so difficult and complex that it's slow to get something through the compiler, people will hack around it. Then you lose 1 and 2. You also don't get around to 3 and 4 until much later, if at all.
Bugs are expensive the later they are discovered. It's best not to put them in in the first place.
If your language is big and difficult, and your compiler is big and slow steps 3 and 4 get put off until much later than they should. Some people are so confident in their fancy languages and compilers that they think they don't have to write unit tests!
There needs to be a healthy balance. Making languages more complex is not the answer. It doesn't work.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 2) by DannyB on Tuesday July 14 2020, @01:57PM
Both C and C++ are the kind of languages that I am arguing against not for.
It is unfortunate that some good languages never take hold and get the recognition they deserve. I've seen talk about that for a long time and no good solution. Betting on a programming language for a big project is a huge bet. A gigantic risk. It is amusing that the only modern languages to gain any traction are mostly created by corporations. Java, Swift, Rust, C#, Go, Dart.
That can be true. I think back to languages like Pascal and Modula 3. It is important for small bits of code that might manipulate the hardware to turn off some features. In Pascal, I remember an example like:
* Declare a constant, named "memory" that is a pointer to a byte array, and initialized to zero.
Talk about instant PEEK / POKE. Anywhere you could do: memory^[16384] = 227;
That is just an example, where if you were writing code to manipulate the hardware of an IBM PC's video display, being able to say "I know what I'm doing" is quite useful and not hubris. Since it's a constant, it doesn't use up a global stack slot as a variable. Once it is initialized, it is "safe" to use anywhere. But you might limit its visibility to a specific "unit" (pascal term) where you are providing an abstraction over some hardware diddling.
I use Java every day too. So far as I am able to determine, I have not yet been involuntarily committed to any mental institution. (But even if so, I can't tell, because I wake up every day and program Java.)
Java has its warts. As do most languages. The things that it does well vastly outweigh the warts. Otherwise nobody would use it.
The success of Java is an economic argument. And this is what most programmers miss. Programmers think too much in purely technical terms without other considerations. Completely unable to see what drove Java to success. Or why it is so widely used. Especially by huge financial institutions, banks, or other corporate enterprise software. So much so that Microsoft needed to try to steal it.
The previous paragraph especially applies to garbage collection. People who hate GC don't understand the economic argument. But there are also technical arguments for it. I'm not saying GC should be used everywhere. But for higher level languages used to write applications, I'll let the evolution of languages speak for itself. How many modern high level languages have GC? Python. JavaScript. Go. Visual Basic. Visual FoxPro. Java. C#. Lisp and its variants. Haskell et all. Prolog style languages. Theorem provers. Computer Algebra System languages. I would add any language that runs on the JVM (Kotlin, Scala, Groovy, etc, etc)
While people argue about languages that manipulate bits and bytes and teeny bits of technical efficiency, and lack of high level abstractions, the high level language users can get things done, much more quickly, and laugh all the way to the bank.
Compilers CAN and DO catch certain types of errors 100%.
Compilers can NEVER catch certain types of errors, that is 0%.
A compiler is never going to know that a check should be subtracted, and a receipt should be added to a total. But a compiler can catch an error where you're trying to assign a String to an HtmlString or to an SqlString without going through an "escape" function, because those two string types are incompatible.
It is important and beneficial that languages and compilers now catch more types of errors than long ago. Entire classes of bugs have been eliminated by language design. I would just point out that GC eliminated three different types of memory bugs that are the scourge of all software that has ever been written in C or C++, and the source of many security problems.
You're preaching to the choir.
Languages need to be small. Comprehensible. Never put something into a language that could go into a "standard library". Follow the "scheme" philosophy more than the "common lisp" philosophy.
Compilers need to be FAST. At least for development. The speed of the Edit-Compile-Debug cycle is extremely important.
If a lazy person with no education can cross the border and take your job, we need to upgrade your job skills.
(Score: 2, Troll) by The Mighty Buzzard on Monday July 13 2020, @10:50PM (9 children)
Veto.
If you can't write a single line of code without needing to check that you're not fucking it up, I don't want to work with you. Not ever. I write the entirety of whatever project or feature I'm working on in one go unless it goes over a couple thousand lines. And rarely have to fix more than a dozen piddly little things (mostly punctuation or enclosure matching because I code entirely in vanilla vim). I'm not saying everyone should hold themselves to that level but they should at least be able to write a twenty-five line function in one go without having to ask the compiler if they know what they're doing.
Also, if your shit is so monolithic that it compiles slow as hell in Rust, it's going to compile slow in anything else. If you're using modular code for a large project and only change one file, you only rebuild the one file and relink, even in Rust. And it doesn't even need to compile to tell you when you fucked something up at the language level. Your algorithms are of course on you.
My rights don't end where your fear begins.
(Score: 4, Insightful) by turgid on Monday July 13 2020, @11:17PM (6 children)
I'd you never make mistakes then you either don't know you've made any because you don'tknow where to look or you are regurgitating a boiler-plate solution from memory (in which case you should be reusing not reinventing). If it's the former, you are passing on debugging to your users and technical debt to your colleagues. If it's the latter, you can be scripted.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 1, Offtopic) by The Mighty Buzzard on Tuesday July 14 2020, @12:06AM (5 children)
To begin, I'd +1 Funny you for the typos but I'm out of points.
As to the assertion itself? Compilers can only catch you out making stupid mistakes that can be corrected easily all at once when you're done. They will not tell you if your shiny, happy algorithm (that had damned well better take more than one line) is doing something slightly different than what you meant it to. That's what unit tests, fuzzing, and martybs are for.
To be clear, I wasn't insulting you. You expressed an extreme lack of confidence in your ability to write something correctly the first time. I took you at your word that you can't. I can though. Yes, I may have to recompile half a dozen times when I'm done to fix the few errors I inevitably code in but I will not have to recompile a couple thousand times like you would have.
My rights don't end where your fear begins.
(Score: 2) by turgid on Tuesday July 14 2020, @10:07AM (4 children)
Typos? It was past midnight and I was on my Android phone. I'd spent the evening doing battle with a micro SD card in an Android tablet. I accidentally formatted it as internal storage and it moved 7.5 GB of data. I had to figure out how to undo it. I learned all about MTD and failed to backup all the data to my laptop. Eventually I found the right pictures to point at on the Android device. Then I took the card out to reformat on my laptop. For the first time in my life I made a typo writing the exfat file system and hosed my laptops's EFI boot partition by mistake, so I had to fix that too.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 2) by The Mighty Buzzard on Wednesday July 15 2020, @10:10AM (3 children)
Erm, when did we go from coding in a compiled language to system administration? But, yeah, anyone who's spent any significant sysadmin time has an "ARGH!" story or two.
My rights don't end where your fear begins.
(Score: 2) by turgid on Wednesday July 15 2020, @12:17PM (2 children)
You asked about the typos and I obliged.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 2) by The Mighty Buzzard on Wednesday July 15 2020, @02:33PM (1 child)
Oh, I meant the ones in the post. If it was intentional, it was funny. If it wasn't, it was even more funny.
My rights don't end where your fear begins.
(Score: 2) by turgid on Wednesday July 15 2020, @03:17PM
That's why I made typos in the post: I had a stressful late evening culminating in the erasing of my boot partition due to a typo, just to be absolutely clear. Typos everywhere.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 1, Informative) by Anonymous Coward on Tuesday July 14 2020, @07:39AM (1 child)
not that I disagree with the 25 line function statement, but please note that in C++ with templates and abstract classes on top a small change can lead to a long recompilation time even if your code is technically modular.
(Score: 2) by The Mighty Buzzard on Wednesday July 15 2020, @10:08AM
Fair nuff, and that's a small part of why I despise most templates and macros.
My rights don't end where your fear begins.
(Score: 0) by Anonymous Coward on Tuesday July 14 2020, @08:16AM (1 child)
Last I checked, D uses a tracing collector, which is completely unacceptable in any kind of space, time, or latency constrained system.
(Score: 3, Informative) by turgid on Tuesday July 14 2020, @10:00AM
No one is forcing you to use the garbage collector though, or array bounds checking either for that matter. That's one of the many good things about D.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 1, Funny) by Anonymous Coward on Monday July 13 2020, @10:00PM (5 children)
I prefer Rust, because as a Mozilla project it is more likely to hold to the highest social justice standards. I don't like to be browsing through code and come across things that might trigger me, like the > operator which implies arbitrary ordinality (when you say 4 > 3, you might as well say you endorse the KKK's views on BIPOCs).
(Score: 2) by Freeman on Monday July 13 2020, @10:22PM (3 children)
You had me until BIPOC. What is a BIPOC? In any case, I sure hope your post was supposed to be satire.
Joshua 1:9 "Be strong and of a good courage; be not afraid, neither be thou dismayed: for the Lord thy God is with thee"
(Score: 0) by Anonymous Coward on Monday July 13 2020, @10:27PM
Them losers Keep coming up with shits like "bipoc" whatever the fuck it means.
(Score: 0) by Anonymous Coward on Monday July 13 2020, @10:33PM
https://bipocinfiber.com/ [bipocinfiber.com]
Some rich white woman put the site up to help her get richer.
(Score: 0) by Anonymous Coward on Monday July 13 2020, @11:33PM
Blacks, Indians, Pakis and Odorous Columbians
(Score: 0) by Anonymous Coward on Monday July 13 2020, @10:24PM
Is bipok better than a kapok life preserver? How many bipoks does a 180 pound man need to stay afloat for a month?
(Score: 0) by Anonymous Coward on Tuesday July 14 2020, @12:46AM
You will never replace C
That's like the Air Force replacing the B-52
Besides, screw C, if you can't do assembly, you're a punk!
(Score: 3, Insightful) by Runaway1956 on Monday July 13 2020, @10:15PM (4 children)
I did a search for "rust". I started scrolling - and scrolling - and scrolling - It took about half a day to scroll all the way through the various librust* libraries. Alright, maybe I exaggerate - it was less than six hours.
Anyway, I'm reminded that most open source vulnerabilities are introduced by way of libraries that no one seems to control.
https://nakedsecurity.sophos.com/2020/05/27/open-source-libraries-a-big-source-of-application-security-flaws/ [sophos.com]
“I have become friends with many school shooters” - Tampon Tim Walz
(Score: 2) by The Mighty Buzzard on Monday July 13 2020, @11:14PM
Base security of native Rust libraries is quite high compared to C/C++ but many of the libraries are not native Rust libraries; they're wrappers around shared libs installed on the system. Also, they're constantly in flux and the maintainers love nothing better than to introduce breaking changes because a shiny, new thing came out and they just have to use it in their lib.
My rights don't end where your fear begins.
(Score: -1, Spam) by gtwregegcwcfew on Monday July 13 2020, @11:59PM (2 children)
(Score: 0) by Anonymous Coward on Tuesday July 14 2020, @02:13AM (1 child)
I suppose that spam could be useful, to someone.
(Score: 2) by The Mighty Buzzard on Wednesday July 15 2020, @10:12AM
It could be useful to me. But it's still Spam.
My rights don't end where your fear begins.
(Score: 1, Funny) by Anonymous Coward on Monday July 13 2020, @10:20PM (2 children)
Listen, linus, what linux needs is not rust, hell, no.
Did you hear about Scala? It's, like, the next-level shit, forget rust, c++ can't polish scala's shoes!!
Get woke. All the cool kids (from, like, couple decades ago) are WITH IT.
Get it on, man.
Linux, together with Scala, the Two Towers will ...
(Score: 2) by turgid on Monday July 13 2020, @10:42PM (1 child)
Scala? Nah, cut out all that unnecessary syntax and go straight to LISP.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 1, Funny) by Anonymous Coward on Monday July 13 2020, @10:54PM
The language's designer is ... well, he's the one that cooked up the brilliant invention called "Java generics."
I mean, syntactic gymnastics to make it "look like" DSM? The guy actually saw Rube Goldberg as his role model.
(Score: 2) by turgid on Monday July 13 2020, @10:43PM
Once (about 1997?) some people took it upon themselves to rewrite the Linux kernel the "proper way" : in C++.
I refuse to engage in a battle of wits with an unarmed opponent [wikipedia.org].
(Score: 5, Informative) by Subsentient on Monday July 13 2020, @11:49PM (2 children)
I agree with Linus on this -- 99% of my code in all my projects just uses straight integers of 64-bits width or smaller. The only time I end up using floats is when something else uses floats and wants a float. I suspect that to be true unless you're doing a lot of graphics or scientific work.
Integer performance is what really matters. Just optimize that.
That said, Intel has become so evil that I don't want them to succeed. I don't want them to improve -- I want them to die. And I want ARM64 and RISC-V to rise as new competitors for AMD.
"It is no measure of health to be well adjusted to a profoundly sick society." -Jiddu Krishnamurti
(Score: 1, Insightful) by Anonymous Coward on Tuesday July 14 2020, @07:42AM (1 child)
not to rain on your parade, but people use computers mostly for media consumption and games.
i.e. floating point operations are happening all the time and everyone wants them to be fast.
now that I think about it, you may have a point in saying servers only need integer operations though.
if I was a chip-maker, I'd worry about both integers and floating point numbers.
(Score: 0) by Anonymous Coward on Tuesday July 14 2020, @11:02PM
That may be, but AVX-512 doesn't help you there either.
(Score: 1) by weirsbaski on Tuesday July 14 2020, @05:20AM (1 child)
We do a lot of AVX-related stuff where I work, so I've been making the joke that after AVX1 (128-bit), AVX2 (256-bit), and AVX-512, the only way to make the FP any wider would be to direct-wire the floating-point unit into the on-chip graphics block.
(Score: 2) by takyon on Tuesday July 14 2020, @02:09PM
https://community.arm.com/developer/tools-software/hpc/b/hpc-blog/posts/technology-update-the-scalable-vector-extension-sve-for-the-armv8-a-architecture [arm.com]
[SIG] 10/28/2017: Soylent Upgrade v14 [soylentnews.org]
(Score: 1, Funny) by Anonymous Coward on Tuesday July 14 2020, @04:43PM
avx-1024
avx-2048
avx-4096
...
avx-to-infinity-and-beyond!
nb: don't look at the docs for amx, advanced matrix extensions. just. don't. do. it.