After listening to the WHOLE thing, I highly recommend it. The long winded OS history lesson is actually helpful and foundational to his conclusions. So, not a waste of time unless you know everything already, which is unlikely. Also, it was great to hear that his experience with Rust's borrow checker were exactly the same as mine.. ("wait, I think you want this mutable.. oh, now this should be a reference.. oh, wait, that's totally wrong"), and that he understands why it's all so important. You can't ask for a better proponent of Rust.
This is the most entertaining and informative talk I've seen in possibly ever. The use of Multics and Unix to illustrate the extremes of both waterfall and ad hoc agile development is pretty mind blowing!
Not only was Taligent a portmanteau of Talent and Intelligent, but it was Talent with out the NT (as in Windows NT) and Intelligent without the Intel (as in x86)
Funny how Redox OS still gets lots of activity on its gitlab repository, but I did not hear any news about it for two years (and no new release as well).
I feel like Gandalf. “I was there…” - worked at Unisys’s Burroughs unit as an intern writing WFL and Algol for test cases against the OS. Algol was interesting, and I was a newbie, but the MCP felt like a crazy advanced technology. The fact that the CPU microcode was loaded at boot time (I believe that was right) was wild to me. A shame there were layoffs back then as my internship was over, and then I wandered through the woods with PowerBuilder and Sybase for nearly a decade. But I always remember the A-Series mainframes as an innovative platform that never could transition to the modern era.
@@marcusaurelius6607 Yes, as are the people in the C++ standards committee then ... according to your "logic". C++ is a disgraceful mess. If you have a friend that is a programmer and want to do him a favor then get him as far away from C++ as possible.
@@marcusaurelius6607 Yes, as are the people in the C++ standards committee then ... according to your "logic". C++ is a disgraceful mess. If you have a friend that is a programmer and want to do him a favor then get him as far away from C++ as possible.
@@xnoreq C++ is amazing. And for a large majority of people, C++ is "too amazing". So much so that often you end up misusing all the power it gives you, which inevitably leads to confusion and jade.
@@xplorethings This is simply misleading. A powerful language doesn't need to be as remotely as messy as C++ is. You're trying to sell powerfulness as a feature, which is not even a USP of C++. Instead, lack of foresight and proper design, maintenance of backwards compatibility (which is not always true), arbitrary rules and introduction of new arbitrary rules, undefined behaviors etc. make C++ a language that is unique in how easily you can get even trivial programs wrong. Compared to other popular languages it's unique in the high cognitive load that the language itself causes rather than the application and application domain the developer should be concerned with.
A few of corrections, Burroughs B5000 MCP was written in Algol-60 second they are still in business after merging with Sperry to form UNISYS, and 3 MCP was not an executive it was an operating system
If anyone wants a much more in depth look into how Unix was ported to the PDP-11, Tom Lyons was featured on the podcast "On The Metal" a few months ago. He was one of the main people who ported it iirc!
C *has* a logical XOR operator; it is "!=". For example if I want to check if "a" is greater than 6 or if "b" is grater than 6 but not both, I can write: a > 6 != b > 6. Of course, there is no possibility of short-circuit evaluation, as the value of one operator of XOR is never enough to determine the value of the whole operation.
Rust has a really good use case in the SoC that has unified memory. macOS on ARM for example would have a much easier time as there are not two memory pools that they have to talk to. It's really just passing pointers around. "CPU: Hey GPU, your memory is here. Go play with it."
This is a cross between a lecture and stand-up comedy. lol I enjoyed it. It took a little while to stop finding him annoying, then I started liking his presentation.. by the end I was really satisfied.
I like the OS definition of the creator of smalltalk. "Operating System - anything that didn't fit into the programming language; there shouldn't be one."
The way he describes people fighting the borrow checker but it being worth the effort is rather like what I've heard about the Haskell type checker that forces you to think harder about your program when you're writing it in return for being more likely to run correctly once written.
It's not just the borrow checker. Compared to C++ templates, which are duck-typed, Traits in Rust are checked at each declaration and each definition. That means that the contract is defined explicitly upfront, not based on what methods you call on an object 10 layers deep into a web of inheritance and templated structures. This makes debugging Templates / Traits actually quite pleasant, with a cost of being slightly more onerous to write, since you need many "where:" statements. Lifetimes are built into this as well.
My first thoughts here are that if you are writing Linux kernel drivers that you intend to share with upstream, you should use C. I've got the feeling that it would be hard to convince the upstream developers to add the Rust compiler to the development dependencies. That said, have any of you had any experience with this? Have the upstream Linux kernel maintainers ever shown any interest in languages other than C and assembly?
Rust has already been considered and is being included into the Linux compiler. Obviously you can't rewrite millions of lines of code (that'd be a waste of time and money), but going forward you can start to do things differently. So I'd say stuff is changing. It's gaining momentum. I'm sure even they will start to slowly come along too.
I can write correct C... provided that all use cases are upfront defined, there's no business pressure to release-release-release, I'm the only person who touches the code and the problem doesn't exceed Fizz-Buzz complexity.
Any talk with BCantrill, i'm on it .. the guy is the youngest Unix gray beard you can find.. he's rubbed shoulders with some of the giants in the Unix community and is (in?)famous for some of his old school rants and clashes on the Linux/Unix newsgroup message boards...
Write your own os firstly in rust. then compare to present os in c\c++. After that let's think about replace.. Future c\c++ version updates may lead to follow the conventional standard to write os in c
things were a lot simpler when we weren't virtualising hardware -- programmer encountering virtual 86 mode in 1985 If you don't want your garbage collector hogging up the system, don't keep creating things, like in the functional paradigm His is right, he is far ahead of it's time. In a few years this platform will be filled with videos focusing on only that.
I suspect that the speed up from switching to B-Trees from AVL trees comes from Cache behavior. BTree accesses will have more cache hits and benefit more from cache pre-fetches. There is an assumption in AVL trees that all memory accesses have the same cost. Thats not the case.
@Headspin3d Actually, it could be used a lot of times. In systems programming (embedded especially), it is sort of an everyday task to compare previous and current states to extract what's changed. It is true though, that most of the time it have to be done on binary data (I/O peripheral values or something), and there is a binary XOR eventually. Using != for the logical one on the other hand is just more readable in most of the cases.
My experience with Rust and Cargo trying to write kernel was bitter. You need to run updates very often and you don’t have control on what it downloads
@@_tsu_ Right. Inheritance simply isn't possible to do right with value types in a systems language because you lose the LSP and the size of a type is part of its spec. If you inherit from a concrete type and add fields, you change its size. So both have to be ref types for the LSP to hold. Which directly clashes with any ambition to make it a systems language without giving up on a big part of the power of inheritance. You can still have inheritance from abstract types and interfaces though. Which is effectively what Rust gives you with traits.
Yes, it kind of is. And the reason for that is that using other people's code is monumentally easier in Rust than in C or C++. And while you can provide Rust bindings to C libraries, first you have to build those libraries, and there is no one way to build a C library. Although CMake has made things better in recent years, even that is a monstrosity that nobody knows how to use correctly. So yes, there is an inclination among some people, who have some free time, to just ditch the bindings and go 100% Rust, because it makes your life easier, once you've passed that hurdle.
If you would bother to actually watch the talk before criticising it, you would find that it is an example of a hypothetical question as commonly used in headlines: if it's asking, the answer is no. (but he explains why "no" in detail, and why it's more like a "no, but")
I think I am ready to leave everything behind... C++, Java, Python, Haskell... There is just Rust and it has everything and does everything I need and I would be happy.
Normally i share your thoughts, but .. What even is an operating system is even in a philosophical discourse not a question. It is a system to operate a system. That's why there are systems, that operate themselves. That's why there are systems that operate other systems, that have nothing in common but an interface of any kind. Some systems are just the interface, some are bridges made of interfaces to interface bridges and/or systems. I really do wonder, since when you are doubting the very nature of what you are - operating - on. No there is no exception. The operating system never abstracts the hardware. Software that abstracts the hardware is called interface. Hardware was Software. Hardware is in most cases a static assenbly of anonymous functions. - People call that lambda calculus. You know - it is a thing - do you? The operating system has almost nothing to do with 'liveness' - without it programs do run in most cases far more performant, have less attack surface and a heckload less problems that are not caused by the program, but by anything but the program. At this point you might try to windout argumenting that you are talking about 'modern' and 'most common' operating systems, which all (many like to oversimplify things to not have to dive ito it in detail - it is called methodology) share 'a more or less' similar hierarchical structure. - Yes, in an ubersimplified way that is true - 'more or less'. The operating system software that runs with the highest level of architectural privilege is the operating system kernel? - Wow. That is utter bullshit and evidently wrong in any case and under any assumption one could interpret that; What defines high? The Ring-Model? Specifically on X86-Systems? Well that is about 3% of all computational Hardware actively running worldwide. - Aaaahh, soooorrryyyyy, yyyeeeeessss - for sure - you meant PC-only, right? Yeah, well ... before the kernel gets loaded, there has to be something that loads it and if you think that is picking on things, then you should start to wonder how much of 'what you define as features of the kernel' are actually only possible because of the software beforehand - spending 'liveness' to what gets corrupted and mangled shortly after by what you call Kernel, or precisely by malware 'in the eyes of the beholder' - i mean, you do know that now where we are talking about PC and X86 only the biggest chunk of the market is plastered with Minix-Parallel-Machines, that -in contrast to the OS that you are talking about- is running always, as long as energy is available and is always able to interrupt, redirect, clone and autonomously remote-distribute In- and Out- -out of what you call hardware and what you call software, right? You do know .. that.. right?? Oh and if you are looking for three prime examples how it can be done by applying halfway sane principles: Illumos (everyone who is tempted to comment now, doesn't get the joke - just go), NetBSD, Sculpt But to get to the point of - what i assume is merely a meditative marketing for managers (which is the exact opposite of what you are known for and it's sad seeing you sunken to that level) - Can Rust be an option at all to re-write an operating-system? From the perspective of sane and secure software, yes, sure. And it isn't even a question worth, as you can just automatically replace|transcribe|transpile 99.9999% of it, don't you? ... Oh, yeah, yea, right. Easily, but those, you know those specific system thingy ... yeah, no you can't, because it runs on X86. Darn it. Yeah, no - not possible, sorry folks - Rust contradicts the exact core principles of x86-Hardware. Sure, Itanium, Sparc, PPC, Core, Cortex and many many many more, no problem, BUT x86? INTEL x86?? HOW DARE YOU??? --- For everybody who wants to add some reasoning, please, feel free to dump a pile on it. - For everybody who doesn't even have the slightest slice of an idea, what i am talking about, just forget and watch the next ...
Wow tour de force talk, he talks a bit fast for those new to the arena, but wow, and Rust is the real deal, C++ is legacy, and C is narrowly still relevant. I love Rust, thank you for making this language.
If Euclid's GCD algorithm is codified and stored upon readable media that can be loaded into hardware memory, and executed on that system's processor(s), then it is software.
Well, I have here a piece of paper (which is readable media) upon which is written the algorithm. I then read it, step by step, thereby loading its instructions in my brain, and execute them.
enjoyed this; recursive self rep glossolalia, it's OK to push as long as you pop, right? And a doubly linked ring is best represented as a mobius strip, on a calabi-yau manifold, so everything pwns itslf, ouroubourotically... The halting problem is strong with this one ;^)
Why did I put off listening to this talk for so long? I've seen it in my recommendations for a while, but just haven't. It's great! Will recommend! Would watch again!
history lessons by Cantrill are awesome! The MCP rulllleeeezzzzz I can’t wait for a operating system that is less than 10000 lines of code......and can run like the millennium falcon .....on crack...
Wow, this has generated a fair amount of pretty negative comments, yet others seem to greatly enjoy it. Polarising. For what it's worth, I enjoyed it. It's worthwhile to read the blog of the talk author, he goes into more detail regarding his explorations of Rust as well as many many other software and hardware topics.
Some Rust language features (like safer memory management, C API interoperability, unsafe) remind me to C#, which Microsoft Research used for a new operating system research project.
Are you sure no OS was written in Python? I believe there are many but none of them was able to finish booting sequence yet. However, all were implemented under one week around 1995 - great development speed
@three sixes It is hard to compare the complexity of package manager and operating system. Besides, there are q* tools (qsearch, qdepends etc.) which are advertised on Gentoo site as "collection of very fast utilities written in C, which are meant to offer a faster but more limited alternative" and "The utilities may be much more efficient than the equivalent ones from gentoolkit and might be better suited to be used in scripts that need to call Portage repeatedly". So even gentoo guys know how painfully slow python is. Can you even imagine OS kernel implemented in python? Scheduler would probably occupy 2-3 cores at 100% to give processes any CPU time to run. On 1 CPU you would get 10 seconds per frame experience :)
Burroughs was an atrocity. Slowest hardware on the planet and brought us the punch card transliteration that could only fit 60 characters across the 80 column card and put the rest on a second line. You had to be there I guess. Honeywell mainframes were the bomb. Every line of GCOS written in assembler. Ran circles around IBM. Sure, it crashed occasionally, but it booted 20 times faster than an IBM. Honeywell poured a ton of money into multics too. B also thrived on Honeywell mainframes. It's still alive today at the University of Waterloo. How he gives this talk and never mentions Honeywell is beyond me.
1. yes kernel programmers are just programmers but they think they are more special. 2. OS: collection of programs that manage hardware and software resources.
It's like watching a standup comedy. Btw I don't know any rust or any deep understanding of a programming language, system. But this talk is awesome. Made me sit in front of the computer for the entire duration.
Hardware is anything physical. Software is the systems the make is all work. Without software hardware is just individualize components. Without Hardware software is just an idea.Software can take the form of hardware. A fruit can be a vegetable too, they are not self exclusive or hard to define.
software: instructions or logical input to a physical machine that can be interpreted by said machine to consistently achieve a desired logical output.
I would say “software” is fundamentally just automated data processing, and an “operating system” is software that manages the execution of other software.
well what would you say if i said, sure, euler's gcd algorithm can be software, and the computer you run it on is yourself if you don't have an automated machine to do it
@@bocckoka There's all kinds of things you could have in place before the OS. Various firmwares, simple program launchers which simply launch another program, execute and return. The purpose of an OS is to launch other programs, and usually multiple other programs, because that's what allows the useful abstraction of functionality into discrete units, and if you're not doing that you don't really NEED an OS.
I feel like I am watching a stand up comedian, but with topics I like to listen too.
_Seinfeld_ _voice_ What's the deal with dc!? The only time I type dc, it's because I'm trying to type cd! _slap_ _bass_
His talk about Oracle is legendary
Best stand up that I know.
Yeah. Thought he was making a parody of Uncle Bob (Robert C. Martin)..
@@user-ee1fn4vt8b What is the title of the talk about Oracle? After a brief search I can't see a good fit for your description. Cheers
I'm gonna write my mom's traditional chocolate oatmeal cookie recipe in Rust.
CHAPTER 1
One pound salted butter
...
OBEY
share donation link !
My cookie baking skills are rusty too.
You can provide git link
@@microcolonel great comment.
This guy has more stories to tell than all of my great grandfathers combined
yeah yeah,,, he knows his stuff very very well
I absolutely love his style. Kind of like the edge of manic but enthusiastic and experienced all in one. And he’s hilarious.
After listening to the WHOLE thing, I highly recommend it. The long winded OS history lesson is actually helpful and foundational to his conclusions. So, not a waste of time unless you know everything already, which is unlikely.
Also, it was great to hear that his experience with Rust's borrow checker were exactly the same as mine.. ("wait, I think you want this mutable.. oh, now this should be a reference.. oh, wait, that's totally wrong"), and that he understands why it's all so important. You can't ask for a better proponent of Rust.
Unlikely ... is just Statistics ...
@@whoisabishag3433 What is the book mention at 1:04:12 ? English is not my first language. Thanks.
The Rust Programming Language.
By Steve Klanic.
It's the Official Book mention on the Rust Site.
This guy’s passion is contagious. Love it!
This is the most entertaining and informative talk I've seen in possibly ever. The use of Multics and Unix to illustrate the extremes of both waterfall and ad hoc agile development is pretty mind blowing!
Came for the Rust, stayed for the history. Brilliant.
Not only was Taligent a portmanteau of Talent and Intelligent, but it was Talent with out the NT (as in Windows NT) and Intelligent without the Intel (as in x86)
Taleligent.
AIM was a complete failure so no wonder.
As long as we can play FreeCell and Pinball in Redox OS someday ( or some other Rust-based OS ), I can finally ditch Windows 95 as my daily driver.
Funny how Redox OS still gets lots of activity on its gitlab repository, but I did not hear any news about it for two years (and no new release as well).
@@juliankandlhofer7553 No. We are talking about RedoxOS. Written in Rust, microkernel based.
LOL hilarious reply!
I feel like Gandalf. “I was there…” - worked at Unisys’s Burroughs unit as an intern writing WFL and Algol for test cases against the OS. Algol was interesting, and I was a newbie, but the MCP felt like a crazy advanced technology. The fact that the CPU microcode was loaded at boot time (I believe that was right) was wild to me. A shame there were layoffs back then as my internship was over, and then I wandered through the woods with PowerBuilder and Sybase for nearly a decade. But I always remember the A-Series mainframes as an innovative platform that never could transition to the modern era.
"C++ dragged all of my shit into the street and lit it on fire" .. i know the feels, man xD
efraimdeluxe too stupid to write in c++.
@@marcusaurelius6607 Yes, as are the people in the C++ standards committee then ... according to your "logic".
C++ is a disgraceful mess.
If you have a friend that is a programmer and want to do him a favor then get him as far away from C++ as possible.
@@marcusaurelius6607 Yes, as are the people in the C++ standards committee then ... according to your "logic".
C++ is a disgraceful mess.
If you have a friend that is a programmer and want to do him a favor then get him as far away from C++ as possible.
@@xnoreq C++ is amazing. And for a large majority of people, C++ is "too amazing". So much so that often you end up misusing all the power it gives you, which inevitably leads to confusion and jade.
@@xplorethings This is simply misleading. A powerful language doesn't need to be as remotely as messy as C++ is.
You're trying to sell powerfulness as a feature, which is not even a USP of C++.
Instead, lack of foresight and proper design, maintenance of backwards compatibility (which is not always true), arbitrary rules and introduction of new arbitrary rules, undefined behaviors etc. make C++ a language that is unique in how easily you can get even trivial programs wrong.
Compared to other popular languages it's unique in the high cognitive load that the language itself causes rather than the application and application domain the developer should be concerned with.
Philipp Oppermann's Blog OS -> PHOBOS
Obviously, duh.
actually quite nice
A few of corrections, Burroughs B5000 MCP was written in Algol-60 second they are still in business after merging with Sperry to form UNISYS, and 3 MCP was not an executive it was an operating system
He didn't discuss Ada at all! It is superior to Rust in every way!
Hey DJ! The MCP was written in ESPOL, which was a superset of Algol-60.
@@capability-snob No, original MCP was written in Algol-60, they changed later to ESPOL. ESPOL didnt appear until 1966, and MCP was written in 1959.
49:12 finally starts talking about Operating Systems in Rust
No garbage collection in speech.
Thank you!
For a guy that speaks this fast, it took a while
more like 50:36
Thank you! If I had to listen to that pedantic egghead go off into another useless tangent, I was going to /wrists.
Lol the way he talked about the team discussing "what is software" really hit me hard. xD
Great start for a presentation. This one will be gold.
The hybrid approach is what Mozilla is doing with Firefox. It seems to be working well.
If anyone wants a much more in depth look into how Unix was ported to the PDP-11, Tom Lyons was featured on the podcast "On The Metal" a few months ago. He was one of the main people who ported it iirc!
C *has* a logical XOR operator; it is "!=". For example if I want to check if "a" is greater than 6 or if "b" is grater than 6 but not both, I can write: a > 6 != b > 6. Of course, there is no possibility of short-circuit evaluation, as the value of one operator of XOR is never enough to determine the value of the whole operation.
Word
@@thegeniusfool What is the book mention at @ ? English is not my first language. Thanks.
Rust has a really good use case in the SoC that has unified memory. macOS on ARM for example would have a much easier time as there are not two memory pools that they have to talk to. It's really just passing pointers around. "CPU: Hey GPU, your memory is here. Go play with it."
This is a cross between a lecture and stand-up comedy. lol I enjoyed it. It took a little while to stop finding him annoying, then I started liking his presentation.. by the end I was really satisfied.
My exact experience. Wish there'd been more rust, though.
Many IT talks are both funny and informational, I'd even say most. Unfortunately I didn't stop finding him annoying...
gave up after 2 min of tedious gamma soy
I feel like this could be titled "The Gospel of Rust according to Bryan"
I like the OS definition of the creator of smalltalk.
"Operating System - anything that didn't fit into the programming language; there shouldn't be one."
What is the book mention at @ ? English is not my first language. Thanks.
22:05 The Macintosh was mostly in m68k assembly (at least to start), Pascal was used sparingly and more of a Lisa-thing
Yeah, I think the confusion comes from the fact that it was written to the Pascal ABI. I.e., the Pascal way and order of framing a call.
20:20 My favorite way to logical XOR is !=
!a != !b
If you want to handle anything non-zero as true
(edit: at which point you should maybe just use !a ^ !b which is more obvious)
The way he describes people fighting the borrow checker but it being worth the effort is rather like what I've heard about the Haskell type checker that forces you to think harder about your program when you're writing it in return for being more likely to run correctly once written.
It's not just the borrow checker. Compared to C++ templates, which are duck-typed, Traits in Rust are checked at each declaration and each definition. That means that the contract is defined explicitly upfront, not based on what methods you call on an object 10 layers deep into a web of inheritance and templated structures. This makes debugging Templates / Traits actually quite pleasant, with a cost of being slightly more onerous to write, since you need many "where:" statements. Lifetimes are built into this as well.
My first thoughts here are that if you are writing Linux kernel drivers that you intend to share with upstream, you should use C. I've got the feeling that it would be hard to convince the upstream developers to add the Rust compiler to the development dependencies. That said, have any of you had any experience with this? Have the upstream Linux kernel maintainers ever shown any interest in languages other than C and assembly?
@AB Someone actually has. It’s called Redox OS.
Rust has already been considered and is being included into the Linux compiler. Obviously you can't rewrite millions of lines of code (that'd be a waste of time and money), but going forward you can start to do things differently.
So I'd say stuff is changing. It's gaining momentum. I'm sure even they will start to slowly come along too.
"It's scanning your heap very well, thank you very much" TROLOLOLOLO
Great presentation and very fun discussion of the history of programming languages. It will remain a relevant video for years to come.
Famous last words: "I can write correct C" ;-)
I can definitely write correct C, it's really not that hard. I did a C course on Pluralsight.
/s ;)
That's the job of ATS ;)
After you get experienced with Rust you really feel like you can write correct C.
"I can" != "I do"
I can write correct C... provided that all use cases are upfront defined, there's no business pressure to release-release-release, I'm the only person who touches the code and the problem doesn't exceed Fizz-Buzz complexity.
Semantic Superfund Site? That was an epic alliteration right there. 55:46
3:50 so emacs _is_ an OS? got it.
That's been established for awhile
If only it had a decent text editor.
The computational environment that edits. Now CE has been blessed up to OS.
@@Diggnuts evil mode
@@mechanicalmonk2020 I'd like to use Emacs just for the Org mode thing. Somehow Spacemacs hasn't worked for me yet...
Any talk with BCantrill, i'm on it .. the guy is the youngest Unix gray beard you can find.. he's rubbed shoulders with some of the giants in the Unix community and is (in?)famous for some of his old school rants and clashes on the Linux/Unix newsgroup message boards...
wipe your chin man
Nothing wrong with a bit of hero worship.
I can totally see this guy as a hero, he kinda is starting to be one for me
Take no heroes, only inspiration
@@FindecanorNotGmail - in that case, we could redefine »hero« to mean »person from which to take inspiration«. Done. :-)
Write your own os firstly in rust. then compare to present os in c\c++. After that let's think about replace.. Future c\c++ version updates may lead to follow the conventional standard to write os in c
while Rust users were busy arguing over syntax and CoCs, Terry Davis was already on his second fully functioning operating system all by himself
I love his style. Enthusiastic and engaging. I wish he taught all my classes in school.
There is a logical xor in c, but it's called "not equal" operator. At least for booleans, but after all, it is a boolean operation.
This guy has such charisma and he's funny as well. What a fantastic talk.
I can't have a memory leak, it's GC'd! == I can't be overdrawn, I still have checks!
You still have checks but in other parts of the world the check system disappeared 30 years ago.
things were a lot simpler when we weren't virtualising hardware
-- programmer encountering virtual 86 mode in 1985
If you don't want your garbage collector hogging up the system, don't keep creating things, like in the functional paradigm
His is right, he is far ahead of it's time. In a few years this platform will be filled with videos focusing on only that.
I suspect that the speed up from switching to B-Trees from AVL trees comes from Cache behavior. BTree accesses will have more cache hits and benefit more from cache pre-fetches. There is an assumption in AVL trees that all memory accesses have the same cost. Thats not the case.
I like how he defined a driver as an operating system
Logical xor in C is just "!=". Possibly with the operands double-negated if any non-zero value needs to be considered true
why so low! bump!
@Headspin3d Actually, it could be used a lot of times. In systems programming (embedded especially), it is sort of an everyday task to compare previous and current states to extract what's changed. It is true though, that most of the time it have to be done on binary data (I/O peripheral values or something), and there is a binary XOR eventually. Using != for the logical one on the other hand is just more readable in most of the cases.
My experience with Rust and Cargo trying to write kernel was bitter. You need to run updates very often and you don’t have control on what it downloads
Dude, Object Oriented programming was a dark time indeed.
Indeed... On the flip side, I did learn a bit more about animal taxonomy.
Get ready for the age of Monads.
In my opinion, it's not OO, It's inheritance. Rust has OO, put its done right though.
@@_tsu_ Right. Inheritance simply isn't possible to do right with value types in a systems language because you lose the LSP and the size of a type is part of its spec.
If you inherit from a concrete type and add fields, you change its size. So both have to be ref types for the LSP to hold. Which directly clashes with any ambition to make it a systems language without giving up on a big part of the power of inheritance.
You can still have inheritance from abstract types and interfaces though. Which is effectively what Rust gives you with traits.
Youre talking like OOP is going away. It‘s not.
Is this just a thing that happens when one learns Rust, you just become obsessed with rewriting everything in Rust?
Apparently it is. It's like the mental blindness introduced by Java. If your only tool is a hammer, then every problem begins to look like a nail.
one wonders at the point of rust to begin with. it's just a more annoying c++, and c++ is already annoying.
Yes, it kind of is. And the reason for that is that using other people's code is monumentally easier in Rust than in C or C++. And while you can provide Rust bindings to C libraries, first you have to build those libraries, and there is no one way to build a C library. Although CMake has made things better in recent years, even that is a monstrosity that nobody knows how to use correctly. So yes, there is an inclination among some people, who have some free time, to just ditch the bindings and go 100% Rust, because it makes your life easier, once you've passed that hurdle.
@@androth1502 Have you even used it? Or just formed your opinions from what other people have said?
If you would bother to actually watch the talk before criticising it, you would find that it is an example of a hypothetical question as commonly used in headlines: if it's asking, the answer is no.
(but he explains why "no" in detail, and why it's more like a "no, but")
I think I am ready to leave everything behind... C++, Java, Python, Haskell... There is just Rust and it has everything and does everything I need and I would be happy.
I found someone who talks the way i think and now i need to listen to all of his talks.
What an excellent, excellent communicator. Well done !
First time I'm hearing this guy and the way he's presenting is legendary!
I think a few code samples would have been great. But apart from that it was very interesting, high energy guy!
Normally i share your thoughts, but ..
What even is an operating system is even in a philosophical discourse not a question. It is a system to operate a system. That's why there are systems, that operate themselves. That's why there are systems that operate other systems, that have nothing in common but an interface of any kind. Some systems are just the interface, some are bridges made of interfaces to interface bridges and/or systems.
I really do wonder, since when you are doubting the very nature of what you are - operating - on.
No there is no exception. The operating system never abstracts the hardware. Software that abstracts the hardware is called interface. Hardware was Software. Hardware is in most cases a static assenbly of anonymous functions. - People call that lambda calculus. You know - it is a thing - do you?
The operating system has almost nothing to do with 'liveness' - without it programs do run in most cases far more performant, have less attack surface and a heckload less problems that are not caused by the program, but by anything but the program.
At this point you might try to windout argumenting that you are talking about 'modern' and 'most common' operating systems, which all (many like to oversimplify things to not have to dive ito it in detail - it is called methodology) share 'a more or less' similar hierarchical structure. - Yes, in an ubersimplified way that is true - 'more or less'.
The operating system software that runs with the highest level of architectural privilege is the operating system kernel? - Wow. That is utter bullshit and evidently wrong in any case and under any assumption one could interpret that; What defines high? The Ring-Model? Specifically on X86-Systems? Well that is about 3% of all computational Hardware actively running worldwide. - Aaaahh, soooorrryyyyy, yyyeeeeessss - for sure - you meant PC-only, right? Yeah, well ... before the kernel gets loaded, there has to be something that loads it and if you think that is picking on things, then you should start to wonder how much of 'what you define as features of the kernel' are actually only possible because of the software beforehand - spending 'liveness' to what gets corrupted and mangled shortly after by what you call Kernel, or precisely by malware 'in the eyes of the beholder' - i mean, you do know that now where we are talking about PC and X86 only the biggest chunk of the market is plastered with Minix-Parallel-Machines, that -in contrast to the OS that you are talking about- is running always, as long as energy is available and is always able to interrupt, redirect, clone and autonomously remote-distribute In- and Out- -out of what you call hardware and what you call software, right? You do know .. that.. right??
Oh and if you are looking for three prime examples how it can be done by applying halfway sane principles:
Illumos (everyone who is tempted to comment now, doesn't get the joke - just go), NetBSD, Sculpt
But to get to the point of - what i assume is merely a meditative marketing for managers (which is the exact opposite of what you are known for and it's sad seeing you sunken to that level) - Can Rust be an option at all to re-write an operating-system?
From the perspective of sane and secure software, yes, sure. And it isn't even a question worth, as you can just automatically replace|transcribe|transpile 99.9999% of it, don't you?
... Oh, yeah, yea, right. Easily, but those, you know those specific system thingy ... yeah, no you can't, because it runs on X86. Darn it. Yeah, no - not possible, sorry folks - Rust contradicts the exact core principles of x86-Hardware. Sure, Itanium, Sparc, PPC, Core, Cortex and many many many more, no problem, BUT x86? INTEL x86?? HOW DARE YOU???
---
For everybody who wants to add some reasoning, please, feel free to dump a pile on it. - For everybody who doesn't even have the slightest slice of an idea, what i am talking about, just forget and watch the next ...
Leahpar Suidualc this is informative! Thank you
10/10 rant
This is the most /thread that the thread has ever been
I always enjoy a good schizo rant esp if I understand it
Wow tour de force talk, he talks a bit fast for those new to the arena, but wow, and Rust is the real deal, C++ is legacy, and C is narrowly still relevant. I love Rust, thank you for making this language.
If Euclid's GCD algorithm is codified and stored upon readable media that can be loaded into hardware memory, and executed on that system's processor(s), then it is software.
Well, I have here a piece of paper (which is readable media) upon which is written the algorithm. I then read it, step by step, thereby loading its instructions in my brain, and execute them.
Purpose of any operating system is managing the continous allocation of all hardware resources of exactly that system.
"It's not a garbage collector...it's a heap scanner." This dude is too damn much lmao!
I really congratulate the presenter in relation to the tempo. Most talks are slow...
enjoyed this; recursive self rep glossolalia, it's OK to push as long as you pop, right? And a doubly linked ring is best represented as a mobius strip, on a calabi-yau manifold, so everything pwns itslf, ouroubourotically... The halting problem is strong with this one ;^)
"Javascript is the failed state of programming languages". That has to be one of the greatest observations on javascript that I've ever heard.
Bad: Not moving to rust for future operating systems
Sad: Missing this talk because "Bryan Cantrill" isn't in the title
Why did I put off listening to this talk for so long? I've seen it in my recommendations for a while, but just haven't.
It's great! Will recommend! Would watch again!
I have no idea about OS but this talk is super engaging and entertaining. Great Talk.
25:00 - How about Arrohole? :)
Firefox is the operating system for javascript files and that is what Rust was invented for.
What OS is he talking about? Also, does he mention Terry Davis?
history lessons by Cantrill are awesome! The MCP rulllleeeezzzzz
I can’t wait for a operating system that is less than 10000 lines of code......and can run like the millennium falcon .....on crack...
Wow, this has generated a fair amount of pretty negative comments, yet others seem to greatly enjoy it. Polarising.
For what it's worth, I enjoyed it.
It's worthwhile to read the blog of the talk author, he goes into more detail regarding his explorations of Rust as well as many many other software and hardware topics.
Speedy like m/c gun yet enjoyable presentation.
Some Rust language features (like safer memory management, C API interoperability, unsafe) remind me to C#, which Microsoft Research used for a new operating system research project.
25:09 I'm loving this talk. This kid will be the next Uncle Bob
Rashomon for OSes... he won't stop with the social commentary, I love this guy :))
Are you sure no OS was written in Python?
I believe there are many but none of them was able to finish booting sequence yet.
However, all were implemented under one week around 1995 - great development speed
@three sixes It is hard to compare the complexity of package manager and operating system. Besides, there are q* tools (qsearch, qdepends etc.) which are advertised on Gentoo site as "collection of very fast utilities written in C, which are meant to offer a faster but more limited alternative" and "The utilities may be much more efficient than the equivalent ones from gentoolkit and might be better suited to be used in scripts that need to call Portage repeatedly". So even gentoo guys know how painfully slow python is.
Can you even imagine OS kernel implemented in python? Scheduler would probably occupy 2-3 cores at 100% to give processes any CPU time to run. On 1 CPU you would get 10 seconds per frame experience :)
Does that mean JVM and .net CLR are operating systems, cause programs run on to of them?
RedoxOS already exits, a unix-like os, but it is in preAlpha stage at the best
This is like a 70 minute long infomercial for Adderall
Why not use TEMPLE OS, why reinvent the wheel?!!! Just add network and GPU drivers ! Done!
exactly my thoughts, god/daddy Terry made us the best thing a single man could do, is just continue and polish his work and nothing more...
Shrine fork already has networking stack implemented.
Didn't Terry not want a network stack due to his paranoia?
@@daviddow5591 true, but at the same time he wanted people to develop it... so idk... conflicting point of views from god/daddy Terry
7:00 Actually the most recent TRON is a very good movie.
Burroughs was an atrocity. Slowest hardware on the planet and brought us the punch card transliteration that could only fit 60 characters across the 80 column card and put the rest on a second line. You had to be there I guess.
Honeywell mainframes were the bomb. Every line of GCOS written in assembler. Ran circles around IBM. Sure, it crashed occasionally, but it booted 20 times faster than an IBM.
Honeywell poured a ton of money into multics too. B also thrived on Honeywell mainframes. It's still alive today at the University of Waterloo. How he gives this talk and never mentions Honeywell is beyond me.
26:36 Python was before Ruby! I know, you don't care, but I think it's important, because this makes the existance of ruby even stranger.
A SQL Engine is essentially an OS
In Rust We Trust
and then fail
In Trust we Rust
In Ferris We Cherish
@@chbrules No we don't.
@@wanderer7480 Yes we didn't.
Hmm RedoxOS anyone?
1. yes kernel programmers are just programmers but they think they are more special.
2. OS: collection of programs that manage hardware and software resources.
"Arohole, lets call our company that!" Typing through tears. 🤣
It's like watching a standup comedy. Btw I don't know any rust or any deep understanding of a programming language, system. But this talk is awesome. Made me sit in front of the computer for the entire duration.
Hardware is anything physical. Software is the systems the make is all work. Without software hardware is just individualize components. Without Hardware software is just an idea.Software can take the form of hardware. A fruit can be a vegetable too, they are not self exclusive or hard to define.
Is the same of rewrite the operating system in golang or nodejs
software: instructions or logical input to a physical machine that can be interpreted by said machine to consistently achieve a desired logical output.
"I see OpenBMC on its knees with tears streaming down its face, begging for someone to please rewrite me in Rust" - This dude is a great speaker :-)
Nice one really enjoyed your talk
No. Compiling that shit would take me years...
Is this the Herodotus of computer science?
Wow, really enjoying presentation. Never expect to finished the whole presentation but just can’t stop watching it.
Dude, I couldn't stop either. I just watched this thing straight through... And like was late as shit
I would say “software” is fundamentally just automated data processing, and an “operating system” is software that manages the execution of other software.
You take that back about Tron!
Isn't != logical xor?
If you took OS in school and would like to skip a history lesson: 33:12
well what would you say if i said, sure, euler's gcd algorithm can be software, and the computer you run it on is yourself if you don't have an automated machine to do it
Every computer can run a program. An operating system's fundamental job is to allow it to run programs, plural.
I'd say the OS is the first level of abstraction above the machine (regardless whether or not the machine has a protected mode or preemption).
@@bocckoka There's all kinds of things you could have in place before the OS. Various firmwares, simple program launchers which simply launch another program, execute and return.
The purpose of an OS is to launch other programs, and usually multiple other programs, because that's what allows the useful abstraction of functionality into discrete units, and if you're not doing that you don't really NEED an OS.
Are you kidding me here? A young Larry David standup video about OSys? Priceless.
That coffee was very strong.