Is It Time to Rewrite the Operating System in Rust?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

Ah, it's on YouTube now, nice!

Previous discussion of the talk happened over on https://www.reddit.com/r/rust/comments/ahap4n/is_it_time_to_rewrite_the_operating_system_in/

👍︎︎ 21 👤︎︎ u/Darsstar 📅︎︎ Feb 25 2019 🗫︎ replies

11 minutes in, still nothing about either OS development or Rust. If you know when it begins, please provide the time link.

👍︎︎ 21 👤︎︎ u/Wilem82 📅︎︎ Feb 25 2019 🗫︎ replies

"I can write correct C."

Greek chorus enters stage right...

👍︎︎ 5 👤︎︎ u/nnethercote 📅︎︎ Feb 26 2019 🗫︎ replies
Captions
all right so my question is is it time to rewrite the operating system in Rus now I will give you a little bit of a spoiler alert this is better jizz law of headlines that any article that that kind of asks a question you can reasonably say no to so on I but I I you're not gonna get a no out of me on this one you're gonna get a bunch of qualified yeses but just to give you a spoiler it is a question mark not necessarily an exclamation point for reasons I'll get into but first and I actually I think it's pretty great that I don't even think I'm the first maybe not even the second presentation to have a slide on what even is the operating system I mean we're we're in the OS track operating systems been around a long time and apparently we don't even know what they are and it's actually harder to define than you might think if you think this is easy by the way just say like what what is software give me a definition of what software is and I can wrap you around the axle on your definition of software so I guess I will pose you this follow-up question is Euclid's GCD algorithm software was you could writing software when he wrote the GCD algorithm and if your answer is like well no of course not because this predates hardware you're gonna it's gonna be very hard to come up with a self-consistent answer to what software is I actually made the mistake I know Mike Olson who was one of the founders of cloud era and I was up at Cloudera in very early days or like six people in the office I don't even know why he had me by but I was having a weird day and I was like really grappling with this like what is software question and they're like well software's the thing that runs on hardware it's like okay well what's hardware you kind of take that apart and all everything starts breaking down like you are t-minus 10 minutes away from an existential crisis and you realize that you know nothing that the ancient Sumerians were running software that software is merely knowledge that we run it doesn't have to be to already complete and at one point like mike can kind of see his team like you know Jeff hammer Bakker I think is beginning to like stare at his hands and wonder if anything means anything and mike takes me aside he's like what's going on are you are you on drugs I mean what's like are you are you high right now I'm like no Mike I'm just like what is like I can't just like talk about something else or whatever get out of here anyway so you have the same problem the operating system I go what is the operating system or a kind of any definition do we would say well the operating system is the thing that abstract hardware but like well how about virtual hardware I mean surely abstracting virtual hardware surely the guest operating system that you run on your AWS instance is surely an operating system that's not abstracting Hardware not physical Hardware it's abstracting virtual hardware so it's really easy to kind of migrate around or wander around and not have a record size since I Stefan ition but I think for our purposes let's say that an operating system is the program because it is a program that abstracts the hardware to allow for the execution of other programs so I think that the fact that the operating system is itself just a program it's just kind of a super program it's kind of an important observation my friend Mike Demuro is here was I went to work for a company called Tara that you haven't heard of Tara actually bought Cray and then took craze name which is always an interesting sign when you when the acquiring company takes the acquired company's name you know did not have real good brand recognition but Tara was a super interesting company doing a lot of interesting things and Michael is doing kernel development for them and had done that for maybe a year or two and he and I caught up and he's like you know what I really thought an operating system is right as a program it's a complicated program it's an asynchronous program it's an interrupt driven program but I was kind of offended by that cuz I'm like I'm not just a programmer I'm a curl programmer like don't rob me of my dignity but then you guys like actually it is just a program it's a complicated program but it is a it's a program that runs other programs I do think that if your program doesn't run other programs it's a lot of great things that's valuable to society and humanity but we probably shouldn't call it an operating system and I think that the operate system also should be abstracting Hardware in some way shape or form but even that is it is there shades of gray there and I think the operating system you have to say defines the liveness of the programs that it's running if the operating system dies everything that it's running dies can't live without the operating system so it's essentially not regard and we it's important not to conflate the actual the operating system with the operating system kernel the operating system kernel is the thing that runs in the privileged context of the microprocessor that's going to be ring zero if your x86 although ring zero becomes complicated because if again if you're in virtual hardware you're at a virtual ring zero nested vert you could be in ring zeros that several rings away from the actual hardware but you are in whether it's virtual hardware or physical hardware you are seeing the entire machine or what you believe to be the Machine virtualization has made this so complicated like if everything has to have asterisks now is a lot easier when we weren't virtualizing hardware but the operating system kernel is only one part of the broader operating system the operating system also includes libraries it includes commands it includes daemons includes facilities and yes in yes you know Justin was in his earlier talk was describing how we want to strip all the stuff away he blamed it all on Sun somewhat strangely and then said that we needed to strip it all away and that is true to a point but there's still even in Justin's stripped-down world there are still a bunch of components that are running at that highest level of privilege on the microprocessor a virtual microprocessor but we would still consider the operating systems the operating system is bigger than just the kernel anything that that's that's really important now I mean if you see me talk before you know there's no way we're getting out of here without a history lesson and especially when we're talking about operating systems we've got to turn the wayback dial and we've got to talk about history so operating systems were actually they used to be called executives which is a very kind of like strange post-world War two hierarchical kind of like I'm not sure you know this is like a managerial structure I guess executives I mean other things that could have been worse but we had executives for a while and they changed it to operating systems and originally these things were all written in assembly of course they were all written in machine code and if there's you know one really interesting architecture to look at it's the Burroughs be 5000 1961 was a super interesting machine and that was the first the first operating system which was called the mCP which is the master control program yes if you've seen Tron it's a map control program in Tron if you haven't seen Tron do not see Tron it is a terrible terrible movie I'm go see wargames instead so you've got you're trying to catch up on the movies you missed because they happen 20 years before you're born go watch war games not Tron please but mCP was the master control program master control executive just like all about dominating programs I guess but the thing it was really interesting is this thing was written in its own alcohol derivative called s ball and if s ball I just feel like I get Esperanto in my head immediately say s ball and s pause it turns out Islam a not to be confused with a university in Ecuador who's da is s ball so probably a much more famous s ball at this point but s ball was this alcohol derivative that they wrote the mCP in and this was a machine that was way ahead of its time in many different dimensions and I can tell you as a technologist who has had the misfortune of being ahead of my time several times over being ahead of your time is not commercially fruitful you know the basically the biggest upside to being ahead of your time is you apparently need no introduction of the OS track but other than that it's it's it's also burrows is a machine is is was a wildly inventive company incredible machine but you haven't heard of it because they went on business so but the mCP was really interesting and then in 1964 project Mac at MIT was looking to build a follow-on for CTS s compatible time sharing system and they wanted to do everything right now this is something we call second system syndrome and second system syndrome every time I think second system is a bit invented and maybe it's a relic maybe it's kind of mythical man-month kind of hold over the 60s I get hit by another second system so I think it is a it is a truth a second system syndrome is hey as long as we're gonna rewrite this we should also rewrite that and revisit this and we do we should finally do this the right way and let's do that the right way and let's finally change the database to be something and next thing you know you have this massive system that ships later and later and later and later and finally never ships at all and that's the second system syndrome project Mac had maybe the case of second system syndrome with multics and multics and then this is also just a misfortune of history in terms of when they came on they knew they wanted to do it in a higher-level language but I guess they just didn't like the higher-level languages that were out at the time now on the one hand according to more things like well the only thing that picks with the only things to pick from were really Fortran and COBOL and that's actually not the case so um someone you probably ever heard of named Jean Sammet was an early computer scientist and she wrote an incredible book called programming languages which is a taxonomy of programming languages circa 1963 when that book was written and known tell you that book is more than two pages long okay like there were there were a lot of programming languages so maybe too many programming languages like you know like a Mesozoic era programming language is too much co2 in the in the programming language atmosphere or something you know 80-foot tall ferns or whatever but the there were a lot of probably language to pick from but whatever they didn't like them all so fine so we're gonna do it in this programming language that hasn't yet been implemented but has this really amazing specification called pl/1 so they did this in in in pl/1 that is a Roman numeral one by the way if you want to put Pele one in your own slides do not call that a that that's on an Arabic one that is a Roman one very important point and so they adopted pl/1 and then they wrote the full specification for multix with not not only not a line of code not a compiler they didn't have a compiler in fact they had they they decided why do you do this they like let's outsource the compiler it's like okay that makes sense let's outsource they the first pl/1 compiler ever be written we're gonna outsource this to this like group in los angeles that no one had ever heard of who I mean shows you how some things never change they're like sure we could have 2001 compiler and then you know a year later they kind of fly out be like where's the PLO I think about it like we don't know what we're doing we cannot week away we we cannot implant a PLO on compilers all right well we have no PL one compiler so but we have an amazing operating system that has been very detailed be very specified but we can't actually write any of it because they're Nova de parar um so this is like ultimate waterfall like a nightmare waterfall and so they didn't have a puppy to power until 1966 and I mean that is that is a major problem now I think it is really funny about multics and multix is one of these things that's like a super divisive history in that depending on who you talk to both exercise of this amazing success that no one gives adequate credit to or this dismal failure and I'm sure the truth is in the middle but the even you and kobato wrote a hotel I guess they wrote a an interesting piece multics the first seven years in 1971 after multics is already kind of failed ish a bunch of companies had pulled out of multics and they viewed PL 1 as being this great aspect of both X and there's no real mention of the fact like well you know you didn't have a compiler for three years I'm not sure that it's it's an unabashed success because it to me and again it's hard because this is all before I was born it's it's hard to know for certain but to me looking back on it the fact the compiler was not available for so long had to have exacerbated the decline of the coalition and actually called in the triumvirate the triumvirate that ran multics and in particular Bell Labs pulled out of the multics project so Bell Labs is like alright we're done this is crazy like this is not going anywhere like the compiler hasn't shown up it doesn't work they actually done because PL 1 wasn't there they developed a different dialect of PL one called EPL and there's another things that you read like what the EPL people say they're like boy that we saved the day we came up with a style like them appeal one called EPL then you read Corbett oh he's like people gave up with the dialogue to PA one but we never used that it was completely insignificant so it's like alright I've got no idea what happened it's like watching Rashomon for operating systems um anyway Bell Labs pulls out of multix 1969 and there's a researcher that was formerly on the multics effort Kenny Thompson presumably implanted a one implement a new operating system and now didn't have multix so implanted this thing on the PDP 7 it was later ported to the PDP 11 20 and it was named UNIX as a wordplay if kind of a somewhat peculiar one on on the complexity of multix and you know every time I gonna reread the UNIX history I get kind of something different out of it I mean there is it's unquestionable that eunuchs a lot came together at eunuchs in terms of the the late 60s especially the early 70s they were in the right place at the right time one of the things that I see especially reading it side by side of the multix history is it was really top-down software versus bottom-up software and multics was very top-down commanding control right specification maybe we'll get a compiler maybe we won't kind of software UNIX was like Alice just gets up and working and then I'll get something to work in and then we'll we'll write a man page for whatever we already got working and it was it was very organic and I think that the world was ready for that kind of software model and you begin to realize it kind of you know looking at it in the larger lens of what was going on socially and everything else the as my my mother is fond of reminding me that the because I did I wasn't alive in 1968 I've got no idea what a society on the brink actually looks like every time I complained about the president has nothing compared to 1968 like all right all right mom fine you know mom you're kind of confirming the stereotype of baby boomers so let's move on um but he in particular UNIX was implemented entirely in assembly and I think it's it's a bit of a myth that that UNIX was implemented in C it wasn't it was important in a seminal uv7 it was ported to assembly on the P to be allowing and yes there was be there was a dis interpreted language that was B that was around it's a BCPL derivative B had a there's a very kind of like strange kind of connection to multix in that that b and e PL we're both implemented in this thing called TM g TM g i know that sounds like a teen web series that my kids would watch I feel like I would like my 14 year old we watching the latest episode of TMJ but no TMG was the transmogrifier that was a transpiler and b was actually interpreted and the actually TM g and another kind of sorry footnote on a footnote was implanted by robert morris bob morris the father of Robert Morris jr. who was the Morris worm even though I think Paul Graham begins like his eye twitch is what everyone says the Morris worm because he and Robert Morris patterned company together doesn't like anyone to talk about the Morris worm but it wasn't um Tan's attendance but so be actually was only used and he's like super auxilary capacities in in unix and the it was using the assembler it was using an early version of DC DC a command that you only may know from miss typing CD you're it and that's where it's like you want to like CD to your home directory or whatever you just like CD entering your a DC enter and you're like wait what just happened and you're like a captive prompt and you're like control c and it's like eats the control see you're like what is going on you're at control d like quit you're like I don't know how to quit or whatever it says I just say that it doesn't actually say anything DC is a it reflects its B heritage suffice it to say I'm but do they realize that B was not gonna do it didn't perform on they needed a much higher performing language than B in particular day Dennis Ritchie in Ken Thompson saw the power of implementing the operating system in higher-level language but they knew that B in particular had no byte address ability so the lack of byte address ability was gonna be a big problem so they came up with a new language that they called C and so C followed on for be kind of it made sense but again contrary to the myth these are they they are not twins they're not born at the same time UNIX is born UNIX begats C in a very important I guess biblical way their siblings are not they're not twins and UNIX is very much the older sibling and so C is is rightfully called portable assembly I like the people call portable and C portable assembly as a slur but I view it as praise I love I mean like why it's assembly and it's portable that sounds great i there's a lot that is great about C and C also was way ahead of its time and if you look at those other programming languages from that era and then you look at C they are mning into modernity suddenly first of all the caps lock key disappears it feels like every language prior to see was like screamed it's like I said was the caps lock key broken and you know I I like to to collect old programming manuals and I bought a kind of a weird lot from someone in the UK and this box shows up it's like a bunch of crap and then there's this manual for this language called language H and language H is a COBOL derivative that you've not heard of for a reason this is an NCR Elliott initiated language that had sterling as a key word every language H program begins with chapter 1 and you're like oh ok all right this is cool like it's a book like I get it like whatever it's like super new computing a super new and a book is the is the best they don't like and then you chapter one it'll be like you know sterling and you die today they're talking on tapes and all these kind of calculations and then every program there's no chapter 2 by the way it's only tap on the every program ends with the keyword obey it's like what like how about epilogue or end doesn't make any sense it's like now all of a sudden he's all like orders the Creator or whatever it doesn't make sense and so that's what we went from like obey and chapter 1 to modernity kind of in a very short period of time and the the C Revolution was it was real on and it was organic and I think one thing is interesting again if you look at this multics as this top-down approach this kind of command and control approach and UNIX as this more bottom-up approach one of the differences you see is that see kind of grew things as it needed them the first imitation of C didn't have structures they added trying to admittedly structures around in 1973 this came in early but they didn't actually implement the UNIX kernel in C until they had structures they employed instructors because they needed them for the UNIX kernel uhm they implemented bit fields because any of these were made simpler things as they needed them which had strengths and weaknesses one of the weaknesses from my perspective I there is no logical XOR in C this is one of the things that pisses me off about C I know ok I know this isn't this is an arcane thing to get kind of spun up about but there's no logical export you've got you've got large you've got you've got bitwise XOR but and you've got bitwise an bitwise or and you've got logical and logical or so wick where's logical XOR and there are actually times when you want logical XOR in C where you want to assert one of these conditions is true or the other tation is true but not both of them and at least one of them like that logical XOR and you'll know you're in my code because that code has that assertion yes done with bitwise exercise I know how to do it okay with an extra line of code and then a block comment like cursing the ghost of Dennis Ritchie for not having logical XOR even more galling actually was bi worked with a guy Roger Faulkner who worked with Dennis Ritchie and I was complaining about this he said you know there's no logic works for because law clerks or can't storm circuit I'm like ma I know that logic works one can short-circuit but like didn't these are it's some sort of biblical commandment that logical operations must be able to sort so he's like no I'm just telling you that that's the reason I'm like that's that's not the reason it's like well I'm gonna ask I'll ask Dennis but go ask Dennis do it and of course Dennis amelie replies I don't know we don't have a lock store because they can't short-circuit and you should just use bitwise I'm thinking anyway so I was wrong but so there was this kind of organic growth the organic growth was was important in particular see grew very important facilities like macro processing macro processing and rust has actually caused me to reflect back on my own use of macros because it's one of things I absolutely love about rust the the macro facilities NC are really really really important yes I know you've been told never to use the preprocessor and yeah I get it but like that's the same thing like we tell our kids about like you know that they shouldn't you know drink and they shouldn't do drugs and they shouldn't have sex noises but they're like fun stuff that like actually they should do when they get older and they can do so safely and be like I want grandkids like a meetings at some point like figure it out but they not now I'm the and and the the preprocessor is the same way the the preprocessor is really essential as a central person DTrace is essential in CFS was essential for a lot of the things we've done because but the preprocessor it leaves a lot to be desired there were standardization efforts but they came late they were content tests and so on um so through the 80s see just dominated and it was an excellent fit for operating systems essentially every OS with some exceptions I know the Mac was in pascal find it was gonna be one of those in every class and there were there were some research operating systems I don't imply this is the totality of operating systems but the vast majority of reduction systems were there and see or they were still in assembly because they were Dass but many of them were were in sea in the 1990s a great darkness came across the land it was really a terrible time to be alive I'm convinced so the and now I can speak from personal experience I really would it really felt very because obviously my programming we felt like there was this kind of this mission this industrial complex object-oriented us triol complex that then insisted that everything be object-oriented and the sea based systems were thought to be relics everything was gonna be any sea based system was the walking dead and this is all gonna be replaced by these beautiful C++ systems or Java based systems that are going to replace all this so you can keep working on this legacy garbage if you want but all of us are going to go over here all the the flowery people are getting over here the architects are going to architect this great beauty and all of those systems failed and they failed I think for a bunch of reasons but one is they were all framed as second systems and they a lot of them suffered from the second system syndrome so apples Copeland I mean I do you know kids grew up today to think of Apple as the trillion dollar company I still remember when Gil Amelio was running Apple and every other Silicon Valley company was eyeing them for their real estate because they couldn't ship an operating system they had the second season called Copeland it was going nowhere son had spring there was written all in C++ um please I was an undergraduate at the time we got this like this hot release of spring he thought we would get we were getting like some sort of something that was like illegal I mean it was like okay I'm gonna give this to you on a CD but it's amazing and you run it it's like is this a hard drive stress test because all this thing is doing is rattling the spindle and it's just under I go how much DRAM do you have and now and at the time this is a this is a souped-up machine that had 32 megabytes of vram and they're like well oh no no no that's not nearly enough to UM you need to have 128 megabytes of DRAM which is like saying today oh you only have 512 gigs of DRAM yeah you're gonna need like 2 terabytes of diorama yeah who has that like well all the spring developers have that like that's a bad idea like I died do I need to tell you that that's a very bad idea to give you don't want to give your OS developers so much memory because they'll use it all and then it can't be used on a system that's got so there was some spring there was talent and we were heard of talents do you know yeah so you're so tower gent was talent was gonna rule us all so talent was going to it was IBM and Apple it was the best and the brightest were going to to go up to the ivory tower and hand us down the operating system that we would run couchant as it turns out I actually didn't thankfully didn't know this at the time I might have I might have really gone nominator Towser turns out it's a portmanteau of talented and intelligent like boy it's like how about arrow hole how about that like that's a call your company that and and as it turns out they like nailed the worst of IBM meeting the worst of Apple in an effort that was a total disaster and it and again in they were gonna do this this kind of sovereign system and they just and it wasn't this way their fault it was getting is like because they were taking this from scratch approach it's just that it attracts all sorts of abstraction garbage like some sort of terrible abstraction fly strips so and then the job of these hopping systems I mean I was at Sun so I'm you know I'm obligated to remind us all that Java OS actually went nowhere we did this we're gonna do job everywhere gives you job miss microprocessors would do a job OS Java had no unsigned type hard to talk to Harbor we have no unsigned type as it turns out so that did that didn't didn't work very well um but then Linux arrived and the nice thing about Linux enough excited six is that UNIX had a huge resurgence um and but with that see based systems became really deeply entrenched and there there were a bunch of C++ efforts they all kind of withered and there I mean there are exceptions to this you know haiku is an exception to this but you know when haiku is is listed as your example of a serious attempt I mean I love haiku first of all but haiku is was designed as like the hobbyist operating system to emulate be it's great I love it but it's the counter example I mean I'm sure there are others but basically C++ kernels whether or doesn't see and at the same time um we were there was kind of era that was very kind of hegemonic all around Java and C++ but especially Java Java Java and then appear to other languages first Ruby and then Python JavaScript JavaScript as you could popular new jobs but over time there's kind of this dip where JavaScript was used to like you know for blank tags or whatever and then in 2006 I like a bunch of people we realized like wait a minute there's a language on the browser and okay I've got to use it because like I need to build something that's gonna be this kind of web app and I again like I think a lot of people waited in the JavaScript I mean I was like this is a real language actually this is like this actually is Lisp in disguise in the browser but with no parentheses and I kind of hate the parentheses so I'm not fun to that and to JavaScript was super interesting I mean there are a lot of things that were interesting about that but all those languages we focus on the developer in development and the speed of Dylan the pace of development I cannot bring myself to put developer velocity on a slide because it makes me want to throw up but that is what we were trying to do that is we're trying they were trying to make developers faster but there wasn't I don't think if there's a Ruby OS effort or a Python OS ever it's like if it's like Steve's like oh my god we promise never to speak of the Ruby OS effort exactly a lot of mistakes were made I know I was experimenting I wasn't it was age-appropriate I know that makes subtle sense but there would be a lot of problems making a ruby OS or python oh I said it wouldn't be it would be something you would do because you were in college which is fine but there were no real serious efforts um so we hit kind of I guess what we're gonna end up calling the teens which makes no sense to me but we hit the 20 to the 2010s and system programmers were looking for something different they they want the a we want the performance of C but they we had used these other languages and you know it's actually it's kind of nice to use a map or a hash or it it's kind of nice to be able to to use the you know to use split or write your expressions what-have-you the things that are powerful constructs but I want them in the in the system that I'm building and there were kinds of interesting things that came out of that I'm one of them I'm a giant and so one of the things that was an interesting artifact around that is that there there was a JavaScript war in the browser which led to some very powerful JavaScript runtimes v8 in particular that we could actually run on the server and we could run reasonable servers writing in JavaScript on the server side nodejs and that was really interesting now as it turns out that left a lot to be desired because it's still JavaScript but yeah I love JavaScript i but i javascript is the failed state of programming languages the in that javascript is wants anything to go wants to allow so much that it can become difficult and things like typescript kind of came into that gap and so on but in JavaScript wasn't necessarily yet for we used it a lot of joint but there are lots of challenges in the broader world first for system software the Bell Labs refugees at Google developer they'd like to be called that or not I mean that is praise not not damnation but on develop go of course maybe we'll use go go definitely solve some of these problems but there are some idiosyncrasies I'm trying to put that in the best possible way I could there are some idiosyncrasies if you didn't see it aaden's I had a great talk earlier on G Weiser and some of the the I would say both the promise and the peril of go for a very creative use case one of the problems with go from an operating system perspective is that go and jobs work and others are GC their garbage collected and they are very mean speaking for v8 because I know v8 better than Co it's very sophisticated GC I mean it's very sophisticated arbors collection but it's still garbage collection and garbage collection even when it's sophisticated it's not the garbage collect if you like to blame the garbage collector it's like the garbage collectors ruining my processes that you know the garbage is ruining your process like you're creating the garbage designed to GC hates you it just like stop creating crap and the GC won't have to do this or worse stop creating these huge mean when the GC is really exhausting itself it's because you have a memory leak it's like but I can't remember in legacy scene it's like us is exactly how we got here but you because what you have is a big object graph that's very connected and in JavaScript it's very easy to accidentally have a closure that has a reference into this big object graph and now none of this can go away because it's not garbage it's not a garbage collector it's a heap scanner and it's not binding it if they it's scanning your very well thank you very much um and this is tough this is just tough and it makes it like GC I I honor GC I uh I think it's great for a lot of software but there's a class of system software for which GC just doesn't work and it doesn't work because you don't have predictable performance because the Layton sees can be significant and because I think because it doesn't force the programmer to really think about this stuff and I think thinking is important for wait that sounds pejorative the way I'm gonna raise it by no means pejoratively I think there is a class of software for which I I don't mind requiring deeper thought upfront and then there's another class of software for like hey let's get something working and that's fine so it's did this is not like the entire world should be GC door none of the world should you be GC I actually do think there are right tools for the job but for system software for the operating system for that infrastructure I think GC is a real problem and at least for me like I I II am at the point where it's like I don't want to do performance critical software in in GC and then so I was actually at a bit of a quandary because like the node thing like wasn't working out I was kind of getting out of a bad relationship on that one and then it's like what what's next and like C++ I had done way too much Depot supposed to talk about college I done way too much T plus plus so Stephen and Ruby OS I had written a hundred thousand lines C++ they were both age appropriate mistakes I think we would say in retrospect um I didn't want to go back to C++ it was like no no but C Mo's Moses I totally change now like that's great for C++ and I want C++ to have a happy and productive life but steeple I suppose dragged all my into the street lit it on fire so like I am NOT going back to C++ ever and that's not a value judgment that's just like that's self-preservation why I'm not going back to C with less so forget C++ it's not going to see bus boss even though again I honor the change they made to it all right and it kind of like looking at this I was getting increasingly excited about Russ Russ was really interesting and I think how many people are aware of rust okay what hands how many people have kind of pined after rust but haven't written any okay how many VX you been rust that's a good number actually oh yeah it's a good number right yeah it's gonna but okay but a lot of you were in the category that I was in not that long ago which is kind of like I was seriously rust curious I you know I was like reading all the blog entries and kind of like you know like it's like go out like that looks interesting and this looks interesting and I'm like but what do you put whitespace you know cuz I got all you gotta find a reason to hate it which is wrong right you don't wanna do that like get over your whitespace this is why I've learned a tough lesson but like I I was really interested if I was intrigued by rust and in particular and the values of rust really represented the values that I have for my own software so values in the values of rust that said very upfront you go to any rust website it's gonna say that it is a system system software language that runs fast and is designed to be safe and that was really interesting because those are the things that I want to do and I want to build permanent software I want to build software that that outlives me I'm already written software that I know absolutely well live me and not because I plan to walk in the traffic tonight but because I I on the there is software that I've written that's simply going to be uh NECA nama chol to to rewrite because it works and the thing that is beautiful and amazing about software is like Euclid's GC D algorithm 2,000 years ago when software works we've always focus on how software's always broken in the world is terrible which is fine that's true but when software works it works forever for the problem that it's solving it is mathematical machine we are really lucky because I you most of us are software developers and we are lucky to be alive now we live in a golden age of this stuff the our descendants will look back at this time as this is like amazing time when all this offer was being written and now that said some of the software is not gonna last forever some of the software we are gonna have to to rewrite with software that can survive in perpetuity and what I see from rust is that aspiration for if in perpetuity and the the I know rust has like eight different origin stories all from grading I mean Graydon came up with an it has got like eight different reasons why call the trust but the one that I like is that I like kind of that industrial sense of building things that that survives such that the chemical reaction with oxygen is like their biggest problem on that's pretty neat um so Russ is really interesting the thing that is super interesting about Russ and to the best of my knowledge unique is the notion of ownership so Russ is able to statically figure out who owns what and when you you being like the threat of control own the memory that you're dealing with and when you don't and when you don't when you're done when it realizes like okay you're done with this I will take care of freeing this for you there is no free in rust per se in memory is allocated for you and then it is freed when you were done with it now that is it that the compiler makes this huge bargain with you it's like the compiler says to you I will do this for you I the russ compiler will do this I will give you this incredible superpower where you don't need to think about this but you're gonna need to help me out and you're gonna need to help me out when I don't know where this memory is going or who owns it so I'm gonna allow you to lend this memory out I'm gonna allow you a car to borrowing right but I need to know when it comes back and sometimes I get confused I the compiler get confused and sometimes it uses lexical lifetimes a lot to figure out like what owns what when and sometimes I will give you an incredibly cryptic error message because I am confused about what about who owns what when and you are gonna grind on this to get this working even though it feels painful and it feels like I'm giving you mixed messages and telling you to like fetch rocks because I'm gonna do this incredible thing for you where I'm gonna give you the power of a garbage collected language with the performance of manual memory management and that's amazing and it's really important and it's important for different people for different reasons so there is a demographic probably a big demographic done a lot of folks for whom it's like the great thing about that is memory safety that I can't overwrite anyone else's memory and that is really important i I'm not gonna I'm not going to have you know be zeroes that have got the wrong size on them mem copies that have the wrong I'm not going to more things I love about rust among other things is rust there's lots of kinds of data corruption that rust prevents one thing is when you initialize the structure you have to initialize all fields and on the one you okay it rust get out of my grill like why do I have to digitize all of these and the rest should be like what's your problem like why don't you want to initialize this like you're the one with a problem like you initialize this give me a value I give it to me zero put a zero there fortunately like the Russ compiler doesn't like get that belligerent with you but in fact actually what's really funny is like the Russ compiler has like such a fearsome reputation for somewhat legitimate reasons just because the when when the borrowed checkers angry with you it can feel like I don't know what to do so the as a result the Russ compiler totally overcompensates and is like the friendliest compiler I've ever encountered on because Russ is like oh I don't think you meant this I think you meant about this thing and like here's exactly what I'm like look I got all these ascii colors where i'm showing you exactly where it is and you're like why are you being so helpful this is great it's like just remember this later okay just like remember my helpfulness at your darkest hour because your darkest hour is probably coming so I actually do I love I love love love the Russ compiler and the reason this is important is for me memory safety isn't as big of an issue because and this is gonna sound I don't want to sound arrogant but this is like I can write correct see I and now I've got another hard way it's not something that I would recommend for everybody but like I can write correct see and I've written a lot of correct C I can write C that frees memory properly that that doesn't overwrite and that basically doesn't suffer from memory corruption the arithmetic overflows are a lot harder actually Russ actually helps do that that one I'm not going to make the claim because I've been there those are super hard but the on memory safety I can I can do that but Russ is still valuable for me because what it would I can do that because I'm controlling heaven and earth in my software it makes it very hard to compose software because even if you and I both know how to write memory safe see it's very hard for us to have an interface boundary where we can agree about who does what so you know had a free memory properly and I know how to free memory properly oh but I didn't realize that in that era condition I was supposed to free the handle that you had given me not you or I it's just it's a miscommunication and it's really easy to see is very very hard to compose properly and one of the things that we do a lot actually to compose see is we use something called intrusive data structures where you embed nodes of a data structure in your larger structure which is great for C it's terrible for Ross we'll talk about that in a bit um but rust it allows you to actually compose truly compose because you don't need to worry about the the borrowed checker has assured that you that the contracts for who owns what are implicitly abided by and that it's it's amazing it really is amazing because it you can build these really sophisticated primitives and in my experience and again you know everyone's mileage may vary and I'm not trying to you have this blog entry comparing the performance of Ross the performance of C for my application and I have like these like eight paragraphs trying to explain how this is not trying to draw broader conclusions about the performance of severs the performances but of course it's like it's the Internet's the first columns like I can't believe this jerk things that Russ is always faster than say it's like that's not what I'm saying for the software that I wrote the the I had a body of software that was in C it was to see an end node I rewrote it and rust and when I rewrote and rust my expectations were why should say when I was doing that I was almost inhibited by the fact that I was effectively porting my C because I tried to do some of the things the same way I had done them and C and in particular in C we have multiple ownership all the time so when you and doubly linked list is actually two linked lists right and a given object is actually owned by two things the thing your your next thing and your previous thing they both think they own you rust does not want to do that I mean you can't do it and there's a great blog entry but what series of blog entries on so you really want to write a doubly linked list and rust you really don't want to do it and what you want to do is with rust and I think at the end and the whole rust community has been very upfront about this bargain that you're buying into with rust is you want to rethink your problem and implement it in a way that makes your ownership clear so if you convey your ownership queerly rust will give you very high performing code as a result like okay I can buy that so I had done so many things I've got five minutes until we're done boy that went fast um all right we're gonna pick up base oh yeah that's four questions I'm not taking questions that's fine all right false alarm false sense of time um so the in but in my experience the so I would go in for the singing Ross I've made all these compromises because I just got to the point where I got so beaten down I mean - I wanna question but I I was bargaining I was in the bargaining phase I'm like I will do anything to get this working I got any did I get this work cuz I was trying to make it high-performing and do what I doesn't say I'm like I need to stop doing that I just need to get this damn thing working so I got it working and I'm like I don't think it's gonna have anywhere near the performance of C because I the way I did it was so dumb I mean it's like I just did it like the knuckleheaded way I implemented and in particular I implemented a doubly-linked list effectively by having hash tables of uu ideas where I'm like constantly like you you want to get your next one you like Anna look up the CEO idea effectively this time stamping it's the next thing and I'm like this is terrible this is gonna be this is gonna perform abysmally and it outperformed my safe it's like hell and so I'm like I gotta take that apart what actually happened what actually happened is and it gets right to the composability of rust what actually happened is this particular code spends all of its time searching in a data structure I in a sorted data structure which in my C implementation was an AVL tree for a lot of good reasons we use trees all over the place because they're super easy to use you can embed an AVL node and your broader C structure you can have a given C structure that's on 15 different AVL trees at the same time by embedding different AVL nodes we've got a library that gets it right and you know and so on and so forth so it's it there's a lot of good reasons do it but an AVO tree is actually not it's good but it's not the best data structure to use and in particular rust uses B trees and B trays yes from databases rust implants data structures you just a it's binary tree structure is a b-tree and it turns out it in this era in the memory hierarchy being what it is cache line sizes being what they are um a beech tree is actually a better implementation and the implementation for B trees and rust is total rocket science and there's some great blog entries describing the the kind of the iteration on that but it's amazing stuff so a lot of this is a lot of the performance Delta here and this is the this is run time on the on the y axis and the the rectangles kind of varies this data set saw has effectively for this particular application on a lot of the win on the one hand was beat race and easy music well that's just like that's be trees not trees it's like yeah but the reason I could use a be tree and not an AVL tree is because that composability of rust like a be tree and C is gnarly and because a be tree in like is just I can't talk about intrusive it's very intrusive it's very kind of up and everything's underwear and the and someone of course the inner is like why you're going to use this be tree implementation you look at the bee tree imitations like this is rocky and if this thing has if there's a memory corruption issue in here I do not want to have to go find it so it's the it I would still use an AVL tree and see even though I know I'm giving up some small amount of performance but in Rus I get to use a bee tree which is really amazing now beyond ownership there are tons of features in rust that I love algebraic types allow for amazing error handling so algebraic types say you know this is a thing that can be this or that or this other thing it's only one of these things it's a basically a union but a C Union but with really first-class support and the great thing about rust is if you return a result that if that that is one of these things you need to figure out which one of these things it is is this is an error is that it is this an actual thing that I can unwrap and it's beautiful ruin resulting in terrific error handling go into more details not now but you can find that online as a terrific chapter arm in in the book on on error handling on hygienic macros um I so didn't have hygienic macros in see that I I kid you not I did not know how to spell hygienic until I wrote a blog entry on this like two months ago like I literally did not know how to spell hygienic as a C programmer it's like that extra I what's that do it in there but the hygienic macros do they say macros that can actually get into the abstract syntax tree or a first-class primitive in rust and it's amazing you can do crazy powerful stuff in macros um crazy powerful safe stuff in macros the the foreign function interface which is so difficult with GC languages right with GC a point I made earlier we talked about GC languages part of the reason they are an ill fit for an operating system is because it's very hard to have C code that lives beside GC D code and can actually share objects across them um the foreign function interface in rust is very well thought out very full and supports I kind of invented this term I'm sure there's a better one out there full duplex integration and that you can take C and drop it into rust or rust and drop it into C and that is really interesting and there's a lot of I'd say community interest in that and one of the ulsan the neat thing for rust is that there's an unsafe keyword that you can use for unsafe operation it's not arbitrary operation you can't just like you know have the unsafe keyword and then just like go to town um but you so there are certain things that they get relaxed on when you unsafe keyword which allows you to overrule the safety guarantees just ever so slightly where you need to though with obvious peril but in particular that allows you to build a composable data structures that can be used by other things so um and there's a ton of other great features um but also and I with with actually Steve in the room it's a terrific community stiphu community view out the room and I didn't mean to imply that it's only to give you your other but the the Russ community is actually really amazing so if you are in and I go to the point where like open source communities just kind of give me a throbbing headache because it can be really difficult to accommodate you know such diverse opinions and everything else and I don't necessarily you know it's it that is saying less difficult in rust but I think that the the values of rust tend to drive conversations that there are is it feels like there's a keel in the water I mean it's still the Internet so of course like it's still like they're still bad everything else but the but but it just is it feels so much more constructive because the values for rust are so clear so I really know there's a lot of value to it so okay operating system in rust finally the main event so for I would say first of all if the history of OS development teaches us anything it's that the runtime characteristics of an operating system trump its development time nobody cares how long it took you to develop it and that it was easy to develop or hard to develop it's like no one cares they care if it works in a care of fastest that's the care back and when I say day I mean you that's what you care about you who do not develop hours kernels and so you should care about it's like that's what we want we wanted to be fast I want to be correct and if it was easy even n nimble man great if it was harder than the new one well okay is it fast and correct yes it's fast and direct like well okay that's someone else's problem and that's fine but we have to understand that those are the load stars so we can't actually throw those things out if we're gonna reemployment an LS and Rost and we have remember that structured languages replace assembly because they perform as well they hadn't performed as well they would not have replaced them and every operating system has assembly somewhere in it but with but with rust and I do think that it's important to realize that rust does represent a new opportunity that we have not had in 30 years more which is a new programming language that actually is a candidate this stuff so a first - the first time that I'm aware of is Alex lights Redux this was a teaching operating system called winix that was reimplemented in rust as an undergrad thesis the under-bed thesis itself is a great read where Alex goes into a bunch of the challenges that he ran into as he implemented this the biggest challenge was that rust then did not allow for any allocation failure so if all allocations effectively block work or death like we all like why live lets us all blow or blow ourselves up which is fine I mean I get that's actually not necessarily a bad attitude especially musicland but in the operating system we can't do in the operating system we need to be able to know if this allocation is not gonna work and if we are out of memory I need to go do some work to free up memory it's like well how are you can you for like how can an application possibly for your memory it's like well this application is the operating system so we've got ways of free I'm every we I I will throw out dead processes until we've got memory freed up which we don't want to do I mean I'd be this is a definitely point of divergence between Linux in other kernels it's like we actually don't want to throw out dead processes but there are lots of things that we can go do to free up memory in the system because we control all the memory in the system so it's very hard to run a modern operating system we smart OS because it's very hard to run smart notes out of memory on we but we have to be able to still potentially fail allocations in some isolated cases so one things we did in the kernel a long time ago is we introduced the notion of sleeping allocations most allocations are sleeping allocations that can't fail some allocations are no sleeping allocations which means they don't have that they can accommodate failure and we need the ability to implement something like that this is an area that is was made much better with the addition of global allocators which was added I was like 127 something like that once a six month but the dealing with memory allocation failure is still a very much an active issue and unsettled the area for rust I would check out on the RV RFC number that you can check out there these RFC's if you do real rust development you're gonna end up in the RFC's pretty quickly as you go to understand because things are new enough that you're gonna be even if you're using things that are there you're gonna inevitably come back the design discussions on I and those design sessions can be really interesting and actually uplifting and one of the things that the the way rust does raw literals for example which is with are the character are a pound sign or an octave Thorpe or a hash tag depending what generation you are which I swear it's a hash tag but now like my kids always say hash tag of everything so it's like it's not a hash tag it's a pound sign whatever be our and then hash tag whatever I sum number of hash tags and then your literal and then the same number of hashtags as open little but just looking at that discussions a really interesting discussion because everyone's talking about how all these different systems do it and actually the absence of raw string literals problem for me in JavaScript and in situ as well and it's actually it's a many many things of a love and rust but that design discussions were interesting email it's a super small issue these RFC's will get you into those design discussions this particular area is an area that's still unsettled with respect to allocation failure but is settled with respect to global allocators which actually allow you a lot of it since 2015 there have been a there's been this a kind of explosion of little operating systems in rust if I forgot yours I'm really sorry I tried to get them all I try to get the ones that still compile so you got redox just kind of the big one then TIFF 'ln and talk and Intermezzo sand rust OS and quilt OS rocks and then philip opens blog OS philip Oberman please give this thing a name call it whatever you want you get to name something it's like important enough to name it I don't want to have to call it philip opens blog OS so just give it an ever name it's a great thing you're doing right please give it a different name if blog OS I guess that's what it is so on some of them are teaching systems Intermezzo blog OS somewhere unit kernels like quilt OS that all that only are going to allow for rust programs the kind of limited in regard some targeted IOT like talk on the the attribute that all these systems have in common is they are all Denova they are all written from scratch which is great on the one hand because it's rust allows us to explore these new ideas and build these operating systems and all these efforts should be encouraged and especially the teaching ones all terrific it's great to butts on that one is it means that you're forsaking Linux binary compatibility and that just means that a lot of the world software's not going to work and which is fine I mean I honor that I've experimented with that approach for many years I for me it doesn't work but you know it's I like having the world software work and I say that as a UNIX operating system that's very very very very very close to Linux I'm serious but like no no so so we've done all sorts of things to allow for Linux final cut out ability just to talk about some of those in his talk that Linux binary compatibility is a really long tail it's really brutal it's very hard to do you end up in a lot of really ugly gray areas and the you know Friedan's talk for some of the gray areas that they ran into and we've run into a bunch so that you get all those problems which you don't want to have to go resolve you don't have to deal with v4 can sick child semantics cross like be Forex semantics terrible sick child semantics terrible v4 plus sake child semantics like unspeakable semantics Superfund site that no one should have to deal with on and they also means that they are all fighting second system syndrome they are all fighting like well as long as like the train is leaving let's get let's back up the truck and let's do a new file system let's do a new way of thinking about devices and let's and that can be really productive and interesting but that can also be paralyzing so that that's that's a challenge um the it's also a challenge like what is the advantage of rewriting things that are actually working code in rust and I you know I don't know um because the safety argument just doesn't carry as much weight for kernel developers not because the safety argument isn't really really important it's just because like it's safe because when it's not safe like it blows up and everyone gets really upset we figure out why and we fix it and we develop a lot of great tooling to not have these problems so it has to have more of a grab than just the safety the performance is great there are things that are bad that are great but this is working code that we want to replace like why don't one other place that's working code especially with respect to the kernel which has multiplied own data structures everywhere everything is on many lists I mean there are things that are where you've got these nice kind of like hierarchies of objects but most things don't actually have that and yes some of those are semantic sewers and should be re-implemented some of them there are some endemic problems and you look at like thread dispatch and so on there are some endemic problems and they're like okay well we're just gonna walk around this with unsafe like okay but like every time you use an unsafe and your rust operating system it's like you're losing a little bit of the advantage of rust but you know whatever um so I think an OS kernel despite you know the historic appeal and the superficial fit I don't know that that's worth it I don't know that's that's the good that's the right first approach I mean again these other operating system should be encouraged I think it's great but I think for the OS is that we're gonna use for the rest of our lives I'm not sure that that's a good right first approach maybe we'll get there eventually I don't want to rewrite CFS and rust that's opposed down to like I wake up in a cold sweat when I think what were you writing ZFS and rust and go to like well go look at the CIO pipeline and tell me you want to rewrite that thing in rust it's just like uh uh no thank you I mean the rust compiler the rest compiler would slay me ye and I and I would lose but let's look at hybrid approaches so we cuz I think a hybrid approach is really the right approach here one is to have rusty and Carl components so I love the fact that rust can interoperate with C so one hybrid approach is that you retain your existing C assembly based Carl the way we we have had for many years and then you allow for rust based things to be developed rust based drivers rust based file systems rust base in Carl software where the points that estimated in his talk was that we want to have more in colonel software well this is a safe way of doing it now maybe the safety argument is a big win because now it's like hey more people can safely develop the colonel towed yes fine existing kernel developers are not gonna write the kernel but having a safe rust sandbox inside the kernel that might be interesting um it would allow for an incremental approach which I think like let's take that UNIX BC approach and it allows for us to be used for new development where you're not trying to kind of port existing C structure and being burdened by the C implementation there's a prototype of that's a freebsd others are possible I think we definitely wonder this in smart of us at some point on a hybrid programmer to rust osq modes and operates ISM is not just the girl there's a lot of other stuff out there there is utilities daemons service management device Penta default management the debuggers etc yes system B is a part of your operating system whether you acknowledge it or not system B is you know you've got these things that are part of the operating system these things are great candidates frog if you were writing system D now no question that it's in rust you're speaking for us if we're writing SMF now no question in my mind that that's in rust that is like and in part because by the way like let me tell you something that most kernel developers won't tell you it's harder to write user level software it's hard to write use available software because more can go wrong like do a problem that I never have in the kernel a configuration file that someone deleted all right this is not the way we roll in the kernel like we don't have that like the configuration file is the girl like if you deleted me I'm not here it's not my problem like you can't boot anything I mean I got lots of other problems I got like I got a boot this thing and then I got like Intel interesting vulnerabilities left her and said odds on the problem I have plenty of problems but I don't have the problems I don't have distribute systems problems I don't have these kind of operation failures there were a lot of feelers that aren't have and that's the stuff that Russ is really good at so that might be a really good candidate for lost so I think a lot of those are especially the OS expands to beyond just an operating system and consists of entire crowd control plane and then the the third approach one that I'm excited about at the moment is you know there's there is another operating system out there an operating system that hasn't advanced technologically as much or at all that's basically still running glorified Dass but it's running all of humanity on top of it and that is that this absolute sewer of unobservable system critical mission critical software called firmware and firmware has lots of problems as I've been as I'm fond of saying like it is it is humanity versus firmware and everyone needs to pick a side um and I think that that you look at some of the challenges of firmware I was like oh man that is that's a good fit for rust yes some of the embedded challenges that we have but those seem much more sugar metal I don't think you have like that the multiple ownership disasters that you have in a kernel you don't have the same expectations or unbinding credibility you don't throw reimpose EFS it means like it's a smaller kind of a thing and so when I look at like open BMC I view open BMC as on its knees with tears streaming down its face begging for someone to please rewrite me and rust because if you're if we're going to have the the BMC that's gonna hang out a socket over the internet god forbid or even over the network I want that thing to be in Ross I don't want that to be in C++ um and there's a lot of stuff like that so I think that is where I want to see the world right now firmware is the proprietary software that we're all forced to run I want to see a world we get to open firmware and I want to see a lot of that written in rust because it's a much much much better foundation for Humanity move the humanity a huge favor so looking forward I mean I'm very bullish on rust I'm very excited about rust it's something we really haven't seen in a long time it's a true alternative we can use it deep in the stack I think it is I think we can use it in from where I think we can use an operating systems I just think that that practically it's going to be really really hard but I think we can definitely use it in the way we extend the colonel and the beauty of rust is that it allows these hybrid approaches that the beauty of rust is its ability to interoperate cooperate with native systems with C Bay systems allow for vistas to open up and for us in system software it is a very very exciting time with that thank you very much I have two minutes for questions any questions yes um the no no I don't hate I first off I've never felt III have only tried to bargain with a borrow checker I have never even when it is absolutely thrashing me I know it is out of its own love for what it's trying to do and and I think actually with with rust it's important to get over that hump like the one thing I would advise if you have not implanted rust please for the love of God don't start with a doubly-linked list in fact I wouldn't start like it's very often that you like I've got like oh I've got like the sodoku thing or I've got the you know the this solver or that thing that I've written plant in every language I'm gonna go implement it and Russ to try it on precise don't do that it's a bad idea it's a just because if you haven't seen what the borrowed checker can do for you the first time it begins to to fight with you for lack of a better word for something tells you in particular it will tell you like hey I think you want to make that mute okay I'll make that mute and I go you wanna make that a reference like we gotta make that around you know if you doing that every reference at all oh that doesn't work at all it's like I just didn't you told me to do it now I've got like so many more errors but and that's when the tears begin to wail up um don't do that and one of the things that I did that I would recommend is so they're the the two books on rust are terrific there's you guys call it triple I call triple or turbo turbo line the Russ programming language so steep ionic and Kelvin and the entire community wrote that which is great and you want to have that reference and then the other one is what's programming in rust but programming rust on and the O'Reilly book and I think that they I like having both those books side by side one of these I really like a program in rust there is a fully worked example and I just like type that in when I first got into Ross like I haven't done that literally since enter magazine from back in the day I got a feature as old as I am but like you're like opening up the back of inter magazine like typing in your basic on the c64 or whatever um it was really valuable to do that because you'd have typos and then you'd fix them but they'd all be very gentle typos and you know that you've got something that's correct and by the time even I gotten through that simple exercise I'm like okay I see the value so in the borrowed checker began to torment me I'm like I know this is out of love and not hate because it can feel confusing other systems don't have ownership and this is a novel thing about the system I think the community does a great job doing this but just to emphasize this with rust you need to learn it and if you are of the age where you're learning lots of stuff that's easy and if you're of my age where it's like I've been able to kind of like wing it by just like pounding stuff out for a while it's like I need to go back in time and actually buy the book sit down read the book in a quiet place really understand it read it again weed another source and but Russ rewards that it rewards that education a lot long answer the question yes so I'm a late comer so ie for me yes because I haven't lived in this kind of tortured past where I think there are people that use rusts two years ago we're like oh my god never again and because they you know we had the wearer because they'd it was early for me it's been great and it performs well it generates I think the incremental compilers incremental support added early this year so like that sound that long ago like to me that's always been there so it's like you know like why is everyone complain about the compile times of rust like this is great it's like because like just before you showed up it was a serious problem that's why I was so things like that like rust is really solidifying I think quickly to me I would not hesitate to use it for production software in the hills because I'm making a very recent past but you know whatever I think it's ready yes sure I mean I think that there is been and I'll tell you a couple of the benefits will be that the this is a I think Russ is a big deal for system software and I think waiting for another year is going to give you that many more resources to learn from it's gonna be the documentation is gonna be that much better the crates are gonna be that much better you're gonna be that much less likely to get it into the rfcs I mean you're gonna have non lexical lifetimes in a year right okay December 6th December 6th perhaps of 2025 but but you're gonna and if you use rust after non lexical lifetimes integrates you're not even gonna realize what the fuss was about borrowing Jackie look why does everyone like you my another project I've never had a problems like because you right now I'm rust really only uses lexical lifetimes and there are times they're like no seriously rust I swear I'm done with us like look like we'll get the code with me trust compile like we're done with it it's like well no no no I only use lexical items when you have no lexical items did you which is in nightly and you can you can enable it obviously December sake is getting rating subjects or 1576 I don't care how broken it is we are approaching it on December 6 right if that can make a big difference they and because again that's gonna make a difference that you literally won't even be aware of you will just not understand what the fuss was about bought the bar checker I think I'm a nerd if you guys hear that but I think I think it's gonna make a big big big big difference right so and and but and gives you high quality high quality artifacts and everything else so yeah I think there's there's I mean this is not like hey hey do this I mean I honestly think Russ is gonna be around forever I really do I think this is like you the this is the formation of ancient Greek so I mean there's no rush you've got thousands of years I mean there's no like you know take your time and there anyway it is gonna get better but I also think if you've been waiting because things are too crazy you you don't need to wait that much longer or don't even wait at all all right with that I think we're done thank you very much Justin [Applause]
Info
Channel: InfoQ
Views: 234,412
Rating: 4.7026205 out of 5
Keywords: Development, DevOps, InfoQ, Operating Systems, QCon, QCon San Francisco, System Programming, Rust, Transcripts
Id: HgtRAbE1nBM
Channel Id: undefined
Length: 69min 17sec (4157 seconds)
Published: Mon Feb 25 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.