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.
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.
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!
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
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.
@@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.
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!
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.
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 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 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."
@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.
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...
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.
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
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
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.
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.
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 ...
@@_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.
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.
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 ;^)
@@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.
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.
@@riccardoorlando2262 I like the idea of Monopoly being software that is run concurrently and makes no attempt to resolve contention between the executors aside from leaving the rules in the box 🙂
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 :)
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.
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.
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.
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...
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.
I would say “software” is fundamentally just automated data processing, and an “operating system” is software that manages the execution of other software.
The Pound sign is not equal to Hashtag. The Pound sign is equal to a hashmark. A hashtag is the hashmark in combination with a tag which is for example a word.
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.
Of course Rust can do a lot of other things well. The reason it is often discussed in the context of rewrites is because it's one of the best new languages for rewriting software: it's as fast as C and at the same time brings a lot of advantages with its safeties & guarantees.
He's discussing rewrites because there are quite a few systems-programmers who would like to move to some language which is better than C. And by that I mean "That's better than C in their opinion", not yours, so you don't need to tell me how there is nothing better than C or C++ or whatever language you love. *Those* programmers are wondering about rewrites. I know because I'm one of them, and I have seen that interest in *some* other systems-programmers. Obviously not all of them, and if you're a systems-programmer then there's also something to be said about not-running-after whatever the newest and coolest-sounding language is. It takes many years of work to build up everything which is needed for a serious language.
I built a implementation of a ML algorithm that's 2-3x faster than the previous best version of this. Rust let me do concurrency that wouldn't have been possible safely in C or C++.
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
He completely ignored Ada, a highly reliable, highly performant and widely used programming language used throughout industry over the past 40 years. Rust is no match for Ada.
Redox OS is interesting due to it's micro kernel architecture, which in theory has the potential to greatly improve performance on a wide range of devices while also improving stability when performing updates.
Well, a microkernel typically has less performance because of userspace overhead n all, but this can be minimised (as proven in L4) The advantages are that if a driver crashes, the kernel doesn't and it can just restart the driver without affecting other drivers. And in security microkernels keep drivers in userspace, so they can't mess with each other, and can't mess with the system. As long as the kernel doesn't need an update (it's a microkernel. It may only need an update to patch a bug, which are rarer, and to add a new processor) you will never have to restart the kernel. Safer, fewer places for bugs, still fast. I hope it gets somewhere.
@@nextlifeonearth The performance mostly comes from not loading unneeded drivers, which is easy if they are all in user space. When you have to compile the kernel yourself and set all the right flags to only grab the drivers you need then only a small % of people will actually do this. as such for a plug and play solution where drivers are loaded only as needed instead of wholesale a micro kernel can outperform a standard kernel.
@@ithraldharzul6887 Linux doesn't load unneeded drivers either though. This is not much of a performance thing, but rather a portability thing. The drivers simply aren't present on your system with a microkernel as opposed to a monolithic one. Not having these drivers makes the install size smaller. They wouldn't be loaded either way. Linux only loads drivers it needs after detecting and identifying the hardware. What you might be thinking of is how drivers can be loaded (and unloaded) from external sources at runtime? Generally drivers are pretty small, so if the hardware is present, you can keep the drivers loaded no problem, because loading it back in when you need it is guaranteed to be slower than keeping a few bytes in memory occupied and polling the hardware every so often.
'greatly improve performance'? The reason mikrokernels failed time and time again is precisely because of the performance hit you take when all your OS communication constantly crosses the kernel/userspace boundary. Yes, there are improvements, but no, it's still nowhere close to solved. Redox OS is interesting in its own right, but making wild claims backed by nothing don't really help the cause. Read up and stop parroting something you've heard on a message board.
The notion of "ownership" is not unique to Rust, it's uniquely enforced by Rust. You can abide by ownership in other languages, just without the guard rails.
I am still trying to decide if I will watch this speedy tragic mess, not liking rust syntax at first sight, trying to scratch the surface of new buzzwords, almost expecting some hitlerjugend style of pushing new world against the perfectly working history ...
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.
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.
I absolutely love his style. Kind of like the edge of manic but enthusiastic and experienced all in one. And he’s hilarious.
This guy has more stories to tell than all of my great grandfathers combined
yeah yeah,,, he knows his stuff very very well
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.
Philipp Oppermann's Blog OS -> PHOBOS
Obviously, duh.
actually quite nice
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.
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.
The hybrid approach is what Mozilla is doing with Firefox. It seems to be working well.
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.
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.
"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.
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!
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"
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.
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.
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 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.
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.
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.
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. :-)
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...
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.
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.
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.
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
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)
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
"It's scanning your heap very well, thank you very much" TROLOLOLOLO
Bad: Not moving to rust for future operating systems
Sad: Missing this talk because "Bryan Cantrill" isn't in the title
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
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.
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.
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
Great presentation and very fun discussion of the history of programming languages. It will remain a relevant video for years to come.
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.
I love his style. Enthusiastic and engaging. I wish he taught all my classes in school.
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.
In Rust We Trust
In Trust we Rust
In Ferris We Cherish
@@chbrules No we don't.
First time I'm hearing this guy and the way he's presenting is legendary!
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 ;^)
I really congratulate the presenter in relation to the tempo. Most talks are slow...
Hmm RedoxOS anyone?
Purpose of any operating system is managing the continous allocation of all hardware resources of exactly that system.
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.
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.
"It's not a garbage collector...it's a heap scanner." This dude is too damn much lmao!
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.
@@riccardoorlando2262 I like the idea of Monopoly being software that is run concurrently and makes no attempt to resolve contention between the executors aside from leaving the rules in the box 🙂
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 :)
RedoxOS already exits, a unix-like os, but it is in preAlpha stage at the best
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.
What OS is he talking about? Also, does he mention Terry Davis?
while Rust users were busy arguing over syntax and CoCs, Terry Davis was already on his second fully functioning operating system all by himself
My vote is that the next operating system should be implemented in Emacs Lisp. 👹
Doesn't that operating system already exist?
@@kevinklement2621 It's only missing a boot loader :)
@@johnwarren6966 That, and a decent text editor. (**ducks for cover**)
@@kevinklement2621 it has evil-mode, it has a good editor ;')
YESSSS!!!!!
Firefox is the operating system for javascript files and that is what Rust was invented for.
"Javascript is the failed state of programming languages". That has to be one of the greatest observations on javascript that I've ever heard.
Does that mean JVM and .net CLR are operating systems, cause programs run on to of them?
25:00 - How about Arrohole? :)
I found someone who talks the way i think and now i need to listen to all of his talks.
I like how he defined a driver as an operating system
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.
Semantic Superfund Site? That was an epic alliteration right there. 55:46
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.
Rashomon for OSes... he won't stop with the social commentary, I love this guy :))
I think a few code samples would have been great. But apart from that it was very interesting, high energy guy!
Is this the Herodotus of computer science?
Is the same of rewrite the operating system in golang or nodejs
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...
I think someone should write an OS in Excel. Any takers?
I see your Excel and I raise with LabView
Isn't that called Windows (insert least favorite version here)?
I have no idea about OS but this talk is super engaging and entertaining. Great Talk.
This is like a 70 minute long infomercial for Adderall
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.
This guy needs to reduce his amphetamine intake.
This may be the jibber jabber that Mister T used to talk about
More like LSD. Amphetamines cause too much tunnel vision.
Why? I think it’s made him a really good speaker and obviously very productive as well.
Is Rust a solution in search of a problem?
I would say “software” is fundamentally just automated data processing, and an “operating system” is software that manages the execution of other software.
Speedy like m/c gun yet enjoyable presentation.
Facebook is an operating system.
I hate you for saying that out loud, but you are not wrong.
The Pound sign is not equal to Hashtag. The Pound sign is equal to a hashmark. A hashtag is the hashmark in combination with a tag which is for example a word.
What an excellent, excellent communicator. Well done !
25:09 I'm loving this talk. This kid will be the next Uncle Bob
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.
If you took OS in school and would like to skip a history lesson: 33:12
Makes you wonder, is Rust good for anything beside of "rewriting things".
Of course Rust can do a lot of other things well. The reason it is often discussed in the context of rewrites is because it's one of the best new languages for rewriting software: it's as fast as C and at the same time brings a lot of advantages with its safeties & guarantees.
He's discussing rewrites because there are quite a few systems-programmers who would like to move to some language which is better than C. And by that I mean "That's better than C in their opinion", not yours, so you don't need to tell me how there is nothing better than C or C++ or whatever language you love.
*Those* programmers are wondering about rewrites. I know because I'm one of them, and I have seen that interest in *some* other systems-programmers. Obviously not all of them, and if you're a systems-programmer then there's also something to be said about not-running-after whatever the newest and coolest-sounding language is. It takes many years of work to build up everything which is needed for a serious language.
I built a implementation of a ML algorithm that's 2-3x faster than the previous best version of this. Rust let me do concurrency that wouldn't have been possible safely in C or C++.
@@garanceadrosehn9691 Shh, you're interrupting the sarcastic "rewrite it in Rust" blind hate-meme with actual reasoning!
what else do you do beside rewriting things? All of the problems nowadays are just repeated/
Isn't != logical xor?
I think someone who starts of with "I was grappling with this question"..."what is software" is not the best person to answer this question.
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
He completely ignored Ada, a highly reliable, highly performant and widely used programming language used throughout industry over the past 40 years. Rust is no match for Ada.
They don't want people knowing about Ada, for rust is the messiah (he's not the messiah!...)
Ada isn’t “widely used” except in very specific niches. It definitely has more history, though, sure.
7:00 Actually the most recent TRON is a very good movie.
Redox OS is interesting due to it's micro kernel architecture, which in theory has the potential to greatly improve performance on a wide range of devices while also improving stability when performing updates.
Well, a microkernel typically has less performance because of userspace overhead n all, but this can be minimised (as proven in L4)
The advantages are that if a driver crashes, the kernel doesn't and it can just restart the driver without affecting other drivers.
And in security microkernels keep drivers in userspace, so they can't mess with each other, and can't mess with the system.
As long as the kernel doesn't need an update (it's a microkernel. It may only need an update to patch a bug, which are rarer, and to add a new processor) you will never have to restart the kernel.
Safer, fewer places for bugs, still fast. I hope it gets somewhere.
@@nextlifeonearth The performance mostly comes from not loading unneeded drivers, which is easy if they are all in user space. When you have to compile the kernel yourself and set all the right flags to only grab the drivers you need then only a small % of people will actually do this. as such for a plug and play solution where drivers are loaded only as needed instead of wholesale a micro kernel can outperform a standard kernel.
@@ithraldharzul6887 Linux doesn't load unneeded drivers either though. This is not much of a performance thing, but rather a portability thing. The drivers simply aren't present on your system with a microkernel as opposed to a monolithic one.
Not having these drivers makes the install size smaller. They wouldn't be loaded either way. Linux only loads drivers it needs after detecting and identifying the hardware.
What you might be thinking of is how drivers can be loaded (and unloaded) from external sources at runtime?
Generally drivers are pretty small, so if the hardware is present, you can keep the drivers loaded no problem, because loading it back in when you need it is guaranteed to be slower than keeping a few bytes in memory occupied and polling the hardware every so often.
'greatly improve performance'? The reason mikrokernels failed time and time again is precisely because of the performance hit you take when all your OS communication constantly crosses the kernel/userspace boundary. Yes, there are improvements, but no, it's still nowhere close to solved.
Redox OS is interesting in its own right, but making wild claims backed by nothing don't really help the cause. Read up and stop parroting something you've heard on a message board.
The notion of "ownership" is not unique to Rust, it's uniquely enforced by Rust. You can abide by ownership in other languages, just without the guard rails.
2 years ago. What's the update.
I am still trying to decide if I will watch this speedy tragic mess, not liking rust syntax at first sight, trying to scratch the surface of new buzzwords, almost expecting some hitlerjugend style of pushing new world against the perfectly working history ...
He started slowing down. Someone get him a coffee!