Menu
Sign In Pricing Add Podcast
Podcast Image

Rust in Production

Volvo with Julius Gustavsson

Thu, 23 Jan 2025

Description

The car industry is not known for its rapid adoption of new technologies. Therefore, it's even more exciting to see a company like Volvo Cars embracing Rust for core components of their software stack.We talked to Julius Gustavsson, System Architect at Volvo Cars, about the use of Rust for their Electronic Control Units (ECUs) in Volvo's EX90 and Polestar 3 models and how they are building a Rust ecosystem within the company.

Audio
Featured in this Episode
Transcription

2.088 - 28.148 Matthias Endler

It's Rostium Production, a podcast about companies who use Rost to shape the future of infrastructure. I'm your host, Matthias Endler from Corot, and today we talk to Julius Gustafsson from Volvo about putting the good kind of Rost into cars. Julius, thanks for being a guest. Thanks for taking the time. Can you introduce yourself and Volvo, the company you work for?

0
💬 0

29.224 - 53.699 Julius Gustavsson

I'm Julius Gustafsson, and I work for Volvo Cars, and I am the main architect and team lead for the LPA project at Volvo Cars. And the LPA, which stands for the Low Power Processor, is the first ECU in the automotive industry, at least as far as we know, that is fully written in Rust. And it's rolling off the production line as we speak.

0
💬 0

55.071 - 76.017 Matthias Endler

The first time I heard about this project was even a few years ago when we were at a conference. I can't even remember which one. But someone mentioned that Volvo was working with Rust. And by Rust, we mean Rust, the programming language, of course, not Rust, the oxidation process.

0
💬 0

76.638 - 103.437 Matthias Endler

But it was way back in the day, and I didn't even know what parts of it were public or if that was a separate vendor. Now, take us back to maybe 2018 or so when this project started. What was the situation with Rust back then? What was the situation, especially with embedded Rust? And how did you even think about using Rust at Volvo?

0
💬 0

104.864 - 115.603 Julius Gustavsson

Yeah, so I joined Volvo in 2017, and that's about the same time as this Spa 2 project started. And right...

0
💬 0

117.745 - 142.423 Julius Gustavsson

basically that when i was joining i was also discovering or i was i'd already discovered rust a couple years back but i was getting more and more certain that this was something that that we needed to look into and so we started out with a few products when we were like in this very very initial stages of that project we were doing all kinds of proof of concepts and

0
💬 0

143.504 - 168.982 Julius Gustavsson

And the first thing I did there to test out Rust was to, since I came from an Android background, so I had, I knew the ins and outs of the Android system. So I was able to build an Android hull, an automotive hull in Android, was able to get that to build and link and do all kinds of shenanigans to get that to work because the build system didn't really support it. But yeah.

0
💬 0

169.744 - 197.882 Julius Gustavsson

I was able to work around that. So this Android HAL, basically, the point of it was to use the Android UI to control the AC or the fans in the car. And we had already built this small system that was running on a separate, like a Raspberry Pi, that would actually send the CAN signals to the fan. So we needed to communicate with that, to send commands to that system, basically.

0
💬 0

198.602 - 207.33 Julius Gustavsson

And so I used, or I created a, how that actually communicated with that over gRPC, if I remember correctly.

0
💬 0

208.491 - 236.541 Julius Gustavsson

using futures and and and back then there was no async await so this was like yeah uh futures zero zero point one or yeah and and it was it was such an amazing experience because yeah you know you had to do all these things to get everything to work because there was so many moving parts to get like the things to build in the build system and and yeah getting the whole like

0
💬 0

237.493 - 263.06 Julius Gustavsson

from the button to the actual methods being called in the HAL and then having that send out something over gRPC, over Wi-Fi to that other chip. And basically when I had it all wired up and it started to build, it took me a while, the fans just turned on on the first try. So it's just super amazing. I had never experienced that before.

0
💬 0

263.121 - 268.986 Julius Gustavsson

And so that was like a first proof point that this is definitely something.

0
💬 0

270.134 - 276.879 Matthias Endler

How much of that was because of Rust and how much of it was because of your experience with embedded systems?

0
💬 0

278.099 - 306.683 Julius Gustavsson

I would say, of course, my experience didn't hurt. But I know for a fact I've been doing C and C++ for mostly C though, but a fair bit of C++ as well for the better part of 20 years. And every single time there is always something, or at least something creeps up. Especially when you're least expecting it.

0
💬 0

306.703 - 333.1 Julius Gustavsson

There's something that you didn't think about, or someone else didn't think about, or something you thought of that wasn't written down, and then someone else broke that assumption. There's always something that... that makes these kind of, especially when it's so many moving parts in this little proof of concept that I was doing there, that, yeah, that just wouldn't have happened.

0
💬 0

334.2 - 363.912 Julius Gustavsson

Or at least not for me, that's for sure. So yeah, Rust definitely did the heavy lifting there, or at least made sure that I had, because Rust tends to make you think through the whole design up front, basically, or at least, you know, a much larger part. So, yeah, so there are these fine, you know, loose ends that you also need to tie up before it actually builds and runs.

0
💬 0

364.012 - 366.693 Julius Gustavsson

And I think that those are the things that make the difference.

0
💬 0

367.753 - 377.897 Matthias Endler

Why did you decide to build that with AsyncRust, given that it was still in an alpha version? Couldn't you have done something with Syncrust?

0
💬 0

378.757 - 395.473 Julius Gustavsson

Probably, but the nature of the, since we were doing like gRPC communication over Wi-Fi, it was very asynchronous in its nature. So I wanted to try it out and see how it would work. So yeah, that was the idea.

0
💬 0

396.758 - 412.01 Matthias Endler

A lot of backend developers hearing that might be a bit scared by the way AsyncRust worked back in the day where even back in the day, I think you needed to build your own futures. Was that still the case back then?

0
💬 0

412.21 - 414.532 Julius Gustavsson

Yeah, that was definitely the case.

0
💬 0

414.972 - 424.4 Matthias Endler

And you still saw the potential there, even though it was a bit, let's say, half-baked or it wasn't completely fleshed out yet?

0
💬 0

425.413 - 436.34 Julius Gustavsson

Yeah, absolutely. Well, needless to say, then maybe we'll come to that later on how we came to the LPA project, but where we're not using it, at least not yet.

0
💬 0

437.521 - 457.955 Julius Gustavsson

But yeah, I'd done a fair bit of... And also a lot of embedded systems are callback-driven in their nature because you're getting all kinds of events from hardware peripherals, from other things, then your main thread constantly and also your... When you're achieving something, you usually need to do it in steps.

0
💬 0

457.995 - 478.713 Julius Gustavsson

So you do something, register a callback, wait for that callback to be called, then you continue. And even in that stage of futures at the time, it was still removing a lot of boilerplate already then. So that's why I thought it was intriguing.

0
💬 0

479.674 - 493.728 Matthias Endler

Given your background as a C developer and probably also as someone who has a fair share of experience with embedded systems, how would you have done that with the technologies that you used before? C, how would that look like?

0
💬 0

495.35 - 535.205 Julius Gustavsson

It's a good question. I guess I would most likely use some sort of async framework in C++, I guess, since we had gRPC, and gRPC, protobuf, all that stuff was already fairly well supported in C++, so I guess I would go for that. And I don't remember how... if those async frameworks at that time in C++ were, how far they'd come. They probably had similar sort of features.

0
💬 0

535.225 - 555.977 Julius Gustavsson

The problem there is that you usually don't... When the closure that you register actually gets called, you're basically on your own because the... There are all sorts of assumptions that need to be upheld for that to actually work properly.

0
💬 0

557.438 - 559.019 Matthias Endler

For instance, which assumptions?

0
💬 0

560.74 - 572.247 Julius Gustavsson

For example, memory or variables or pointers and things that might not exist when it comes back. So yeah, dangling pointers is a common issue.

0
💬 0

573.604 - 577.407 Matthias Endler

Even for someone like you who has quite a ton of experience in that area?

0
💬 0

577.867 - 590.536 Julius Gustavsson

I would probably trip on those a couple of times before I, you know, before I get it working. But because it's so easy to, yeah, it's super easy to misstep when it comes to those things.

0
💬 0

591.471 - 617.187 Matthias Endler

So for some context, we are in 2018-ish and you built your first hardware abstraction layer for controlling the fans from Android. And you saw it working on first try. That must have made you pretty excited about Rust and its potential to go from idea to first prototype layer. in a reliable manner. Did you show that prototype to other colleagues?

0
💬 0

617.247 - 621.589 Matthias Endler

Did you talk about Rust back in the day, or was it more of a hobby and side project?

0
💬 0

621.769 - 649.683 Julius Gustavsson

No, I was probably quite obnoxious. I'm pretty sure there were some colleagues that were getting quite fed up because I was talking about it a lot. I remember I did a talk back in 2017, or no, it must have been early 2018, where I tried to do a basic introduction, but also to point out all the upsides.

0
💬 0

650.844 - 684.343 Julius Gustavsson

And then when this SPA2 project started to crystallize more and we started to productify everything that we had in our plans, i i started looking for places where or or see if this was actually viable as as a language to use and unfortunately none of the platforms so so the so this yeah if we go go back a little the the spot two project is it's the electrical system in in the

0
💬 0

686.183 - 711.757 Julius Gustavsson

in the Volvo cars that are coming to market now. And the main big feature of that system is the core computer, which you can probably Google and read about. And this core computer is essentially a centralized box with multiple different processors, all running different functional domains, doing different things. Like you have security, you have...

0
💬 0

713.018 - 742.308 Julius Gustavsson

high integrity for like braking and steering and, and these safety critical things. And then you have a high performance compute for, for, uh, these more big number crunching things and, and 88 us functionality, you know, autonomous driving or, or yeah, that, that kind of use cases and, and all these, yeah, these were all different platforms running different operating systems or hardware, uh,

0
💬 0

743.028 - 777.437 Julius Gustavsson

And none of them actually had good Rust support, except for the security gateway. But we, yeah. That's a long story why we didn't start off there. But yeah, so we had a QNIC system and there was no QNIC support. We had tricore-based units, which tricore is a common automotive-based microcontroller specifically designed for safety-critical type of use cases.

0
💬 0

778.337 - 781.578 Julius Gustavsson

And none of these had Rust support at the time.

0
💬 0

782.717 - 803.49 Matthias Endler

I'm trying to put myself into the position of a team member or a colleague of yours in 2018. So you're telling me about Rust. You're enthusiastic about it. I see the prototype. I see that it's working. But I don't really know. I don't really have any Rust experience. And I don't know how long it took to build that prototype.

0
💬 0

804.13 - 823.38 Matthias Endler

So I look at all of the tooling that we built in C and C++ and the ecosystem that requires... And then I ask you about QNX support or tricore support for Infineon CPUs. And you say, well, it doesn't exist or it's a work in progress. Suffice to say, I'd be a little skeptical.

0
💬 0

824.721 - 849.511 Julius Gustavsson

True. And Volvo is also an automotive or a car maker. And automotive people tend to be quite conservative when it comes to new things. We like to use well-proven technologies. So yeah, definitely. But I always saw that this was actually something different, something that could actually provide real value.

0
💬 0

850.011 - 869.496 Matthias Endler

Thinking about the situation in 2018 and 2019 when things were not completely fleshed out, was everyone on board already or was there some political infighting as well about whether to go forward with Rust or maybe be a bit more conservative here? Because you also mentioned that the car industry is conservative.

0
💬 0

870.727 - 894.405 Julius Gustavsson

Yeah. So I wouldn't say political infighting, but the one question that always came up and that was, is it safety qualified? So is it qualified and certified to use in a safety critical setting? And that was a, That was basically a no. I mean, nothing had been done on that front at that time.

0
💬 0

895.286 - 911.461 Julius Gustavsson

So that was kind of a non-starter because most of these functional domains that I mentioned earlier, these CPUs, they are running, they have a safety rating, so to say. These ACL levels that the automotive standards define.

0
💬 0

912.116 - 917.217 Matthias Endler

Why are they necessary for a toolchain to fulfill?

0
💬 0

917.857 - 940.183 Julius Gustavsson

The safety standards that the automotive industry uses, basically they talk about how do you provide the evidence that the product that you've developed actually does what you think it's doing and that there are no hidden errors or dangers that you could have foreseen and mitigated. That's basically the...

0
💬 0

941.043 - 948.511 Julius Gustavsson

The reason why everything needs to be vetted, so to say, both the tooling, but also the code and everything that you use.

0
💬 0

950.031 - 965.917 Matthias Endler

Did you back in the day already know about the efforts of building a compiler, safety-critical Rust compiler that would be allowed to be used in such environments, like things that Ferris systems built, for example?

0
💬 0

967.158 - 988.477 Julius Gustavsson

No. And Ferris system, they actually started maybe six months later or something. We met them at a conference in, I think it was OxidizeConf. And they soon after announced the first scene where it was called Sealed Rust at that time. But yeah, so that started soon after. But I always felt that

0
💬 0

990.462 - 1017.44 Julius Gustavsson

that that wouldn't be an issue over time, because obviously we are doing safety-critical systems in C and C++, and we know all the... And it's riddled with things where you can shoot yourself in the foot, and you need all kinds of tooling to basically ensure that you're not doing... The things that you're not allowed to do. While Rust is preventing most of those things up front.

0
💬 0

1018 - 1041.536 Julius Gustavsson

Just by design, you can't do most of those things. So I felt right from the get-go that... And it was quite ironic that here, all of a sudden, you have a language that... And basically, you know, does all that stuff for you, but it doesn't have the all the paperwork or all the necessary evidence in place.

0
💬 0

1041.596 - 1072.011 Julius Gustavsson

So therefore, you can't use it, even if it's, or at least according to me, you know, much better. But at the same time, I realized that it was probably a non-starter for anything where safety certification was needed. And then we come to basically the fifth processor on this chip, and that is the small low-power microcontroller or processor, which is called the LPA.

0
💬 0

1073.391 - 1106.721 Julius Gustavsson

And that one was bare metal Cortex M4 based chip that no one was accidentally working on at that time because they had some basic software running on it that, you know, just to power up the thing. But otherwise it was being neglected because everyone was focusing on the other chip. And then it turned out that Cortex-M4 was actually the best supported embedded target at that time for Rust.

0
💬 0

1108.222 - 1136.191 Julius Gustavsson

And 2018 edition of Rust was actually the first edition that made building things for embedded possible and stable. So yeah, so the stars aligned a bit there. So me and a colleague who was and is as enthusiastic about Rust, we teamed up and got help from some of our managers who had seen Rust.

0
💬 0

1136.989 - 1165.67 Julius Gustavsson

my talk, for example, and was also convinced that we needed to really need to look into this for the future because we needed, basically, we need better tools to get our things done more effectively and more with better quality. So we've convinced them that, hey, we have this chip here that no one is working on yet. It's perfect testbed for as a Rust project.

0
💬 0

1166.251 - 1206.592 Julius Gustavsson

It doesn't have a safety level on it because it's It's actually constructed in a way that we power on the board or this box when certain events happen, but we can't power them off by ourselves. Each CPU has to power itself off. And since a car in an off state is not considered, or it's considered safe when it's power off. So, so going from off to on is not a safety critical thing.

0
💬 0

1206.632 - 1238.567 Julius Gustavsson

But of course, going from on to off, you know, when you're driving, that would be completely, you know, high safety. No, exactly. So the hardware is constructed in a way that makes that impossible. So the shutdown is done in a safety-certified way where we are not involved. So that was the three things that added up. It was pretty well supported by Rust already.

0
💬 0

1238.587 - 1248.895 Julius Gustavsson

It wasn't safety-critical, so we could use it as a testbed. And no one else was actually paying attention to it. So we were able to form a team and get to work.

0
💬 0

1249.816 - 1260.787 Matthias Endler

It sounds like a good strategy for testing out new things in general and maybe specifically testing out Rust in embedded environments or maybe in larger organizations.

0
💬 0

1262.136 - 1297.741 Julius Gustavsson

Yeah, absolutely. And yeah, if you have these conditions, then it's definitely something I would recommend. One thing we also did from the start was to get help, external help. So we got a few people from Greppit here in Sweden. They're placed up in Luleå, North Sweden. And many of them are deeply involved in the Arctic scheduling framework. Yeah, it's not really a real-time OS.

0
💬 0

1298.462 - 1323.836 Julius Gustavsson

But yeah, so needless to say, we also use Arctic in LPA. Yeah, so we brought on these experts. They were the foremost experts in Sweden at the time. And they helped us get started and helped us with a lot of the driver development and things like that.

0
💬 0

1323.876 - 1336.146 Julius Gustavsson

So I would say that is also a big piece of the puzzle to get good people to help you get started, either from within the company or externally, depending on what options do you have.

0
💬 0

1336.834 - 1348.708 Matthias Endler

Who made the decision to hire external? Was it you because you maybe wanted to get an extra pair of hands? Was it the management? Was it a requirement from Volvo itself?

0
💬 0

1349.669 - 1379.118 Julius Gustavsson

It was a team together with management. We also needed to... We needed to start fairly quickly and we needed to size up the team fairly fast with some knowledgeable people. And also, at the time, we weren't really sure how much effort the driver situation would be. So we felt that we needed to have someone to hold their hand there.

0
💬 0

1379.943 - 1391.931 Matthias Endler

Did you have a deadline on, for example, you decided that you would be done by that time or you would have something to show by that time and if not, then the project would be canceled?

0
💬 0

1392.812 - 1425.238 Julius Gustavsson

Yeah, so I don't think there was, there was never a risk of it being canceled as such, but yeah, we wanted to, we set ourselves a deadline that, yeah, so like I said earlier, We already had some C code running there that was basically produced by the company that made the actual hardware. And that was doing most of the basic things, and we felt that it would be fairly straightforward to...

0
💬 0

1426.331 - 1452.07 Julius Gustavsson

to revert back to that and build that out in case. So we had always that as a backup. And in fact, we started off working from that base and trying to build Rust on top of that. But we quite quickly figured that having a 100% Rust-based solution would actually be a much better choice. Why?

0
💬 0

1452.55 - 1462.881 Julius Gustavsson

Yeah, because you don't have to worry about all these FFI boundaries between C and also when you're building it on

0
💬 0

1464.082 - 1492.063 Julius Gustavsson

on bare metal embedded it kind of depends on what compiler you're using what linkers you're using how the because the c libraries they expect certain you know initialization to be done in a certain way and and so there may be incompatibilities there that yeah so even though rust and c can interoperate seamlessly there are there can be some issues when you're when you're doing it on a

0
💬 0

1493.063 - 1516.168 Julius Gustavsson

on a bare metal target like this and and since we were like we were taking us already working c project and then adding rust on top and that was yeah we it was bringing us more headache than than just rewriting that little piece of or the those few few lines of code that how long did it take you to rewrite these pieces of code

0
💬 0

1516.937 - 1544.929 Julius Gustavsson

So there was mostly Grepid that did the initial bring up and it took them about a couple of months. They did it over a summer basically. And so, yeah, when we came back after vacation, they already had a demo of an application that did basically exactly the same as the one that we had. And when we had that working, we saw that, okay, now there's no point to carry on with the other one.

0
💬 0

1545.595 - 1562.831 Matthias Endler

But even then, going forward, did you compare your maybe output with the output of the C-based version in order to make sure that it was compatible? Or was it mostly, you know, it's up now, we can compare the gRPC outputs, essentially?

0
💬 0

1563.311 - 1585.194 Julius Gustavsson

Yeah, so now we're not doing gRPC anymore, so it's a different kind of communication. But yeah, we already had started working on a CI pipeline with tests and things like that. So yeah, that was like the first goal to ensure that the same test suite would pass with the new Rust version.

0
💬 0

1586.335 - 1591.936 Matthias Endler

Interesting. So you don't use gRPC anymore. What were some of the issues that you faced?

0
💬 0

1591.976 - 1615.542 Julius Gustavsson

Basically, that prototype that I did back then, that was basically the Android infotainment system communicating with a prototype of this core system that we are now building. So that was that communication. But now we are inside the core system and communicating between the

0
💬 0

1617.063 - 1646.109 Julius Gustavsson

the cpus on that's on a much lower level so so yeah so we're we're not doing grpc on this node i can understand is that a public protocol an open protocol or instead of volvo specific protocol Yeah, so the one we're using now is actually Volvo specific. So the LPA is connected to via UARTs to all the CPUs. So that's the only way to communicate with it. And

0
💬 0

1647.879 - 1677.583 Julius Gustavsson

We searched high and low for a protocol that would give us... Because in a car, you need to deal with a lot of EMC, electromagnetic interference. And so it's quite common that you get corrupt messages and things like that. So we need some sort of protocol that is similar to TCP. Yeah, but much lightweight, of course, since it's just a point-to-point.

0
💬 0

1677.923 - 1686.849 Julius Gustavsson

But something where you can detect that messages are missing or corrupt or malformed in various ways.

0
💬 0

1687.569 - 1705.2 Matthias Endler

Right, and my assumption would be that you had to build out a Rust library for reading and writing that format. Yes, yes. And was it hard for you? Did you use any existing libraries to build that parser or... to serialize the messages over the POS?

0
💬 0

1705.78 - 1740.096 Julius Gustavsson

So we actually use both, or this protocol allows us to send different types of payloads over the, so depending on if the payload is, we'll probably get to that later, but we also need to comply with the automotive diagnostic standards called UDS, universal diagnostic standards. And so depending on if the message is a UDS payload, then it has certain format that is standardized by that standard.

0
💬 0

1740.376 - 1767.164 Julius Gustavsson

Or if it's like in-band messages between the processors. Then we're actually using C bore as a messaging format. So, and, and at that time there wasn't any C bore library for no, no STD. So we wrote that. And then of course we, we used 30 as a, which is a, this is a super awesome. Yeah.

0
💬 0

1768.598 - 1779.784 Matthias Endler

And what about the automotive diagnostic standard, I guess you called it? What about that protocol? Was there an existing implementation or was it easy to write?

0
💬 0

1779.804 - 1812.984 Julius Gustavsson

It's fairly straightforward. It's basically made for, up until now, these ECUs in cars, these electronic control units, which are the... basically the building blocks of an electrical system in a car. And those have existed for a long time. They're always increasing in numbers. Now we're up to almost 200 or something in the current generations.

0
💬 0

1814.284 - 1828.389 Julius Gustavsson

And these are traditionally very small microcontrollers with very little RAM, flash, things like that. So that protocol is fairly compact and simple. But yeah, we needed to write a parser from scratch for that.

0
💬 0

1830.168 - 1855.215 Matthias Endler

That's super amazing because there are a couple other vendors that use Rust in production now. For example, Renault, which is also a prominent car manufacturer. I wonder if they use similar protocols or if they have a different setup. I do know that everyone sort of used or uses CAN bus, but then the wire protocols might be different, right? You have different requirements. Yeah.

0
💬 0

1856.035 - 1864.503 Matthias Endler

Is there any collaboration going on between those car vendors on a message bus level, on a protocol level?

0
💬 0

1867.426 - 1898.233 Julius Gustavsson

They're not directly... at the moment, but things are actually, or they are, I guess they are improving now with all these different SDV or software defined vehicle organizations that are sprouting all over the place. You have Eclipse SDV and you have Covisa and you have others. Through those, I hope we can, or we will be able to collaborate more. But yeah,

0
💬 0

1898.714 - 1907.977 Julius Gustavsson

But yeah, so during this project, we didn't have a chance to do too much of that. We were mostly focused on getting our product out the door.

0
💬 0

1908.652 - 1919.375 Matthias Endler

Are you planning to open source some of that work? Are people ever going to be able to take a look at this and maybe use it in some way?

0
💬 0

1920.635 - 1956.345 Julius Gustavsson

I hope so. So all the drivers that we developed have been open sourced or have been upstreamed to the AtSAMD project. And then we commissioned Greppi to write this MCAN library, which is hardware abstraction for this MCAN peripheral that is quite common and should be available to everyone. Yeah, if you have a SOC that has that peripheral, then you can use that crate out of the box.

0
💬 0

1957.706 - 1990.475 Julius Gustavsson

Then we have a bunch of other things that we've developed that might make sense to open source, but we need to look at that more going forward. But for example, the UDS stack might be something, or this diagnostic stack might We have this seaboard library, for example. Now, actually, there are a few in the community already. So we have some compression, error correction. Yeah, a bunch of things.

0
💬 0

1991.235 - 2001.059 Julius Gustavsson

Things like, for example, trace. So being able to tag the tests with requirements so that you can...

0
💬 0

2002.255 - 2028.511 Julius Gustavsson

produce reports where you can connect, because that's a big part of providing evidence that your code actually works, or that the code actually does what it's supposed to do, rather, is that you have these higher-level requirements, and then they are broken down into individual component requirements, and then there are tests that ensure that those requirements are actually being met.

0
💬 0

2029.78 - 2054.361 Julius Gustavsson

And then you need to show basically in a traceability matrix that all the requirements are actually being tested and functioning according to... And so we've developed a lot of tooling around that to give us or show our coverage of requirements and things like that. Some of those might be...

0
💬 0

2056.095 - 2069.084 Julius Gustavsson

yeah something that that might be good to open source others are fairly volvo specific so they might not be as as yeah it doesn't make as much sense but but yeah we'll see

0
💬 0

2070.327 - 2096.795 Matthias Endler

It feels like to be able to pull this off, you first had to invent or create the universe because there were so many small little bits and pieces that someone would have to write and you needed to build this entire tool chain. So moving forward, probably... As a next project, this will be way easier because you built out a lot of the tooling. But I wondered if the Rust ecosystem also helped you.

0
💬 0

2096.995 - 2107.666 Matthias Endler

So what are some of the things that you used from day one or maybe you even use today? A couple of nice projects that you want to mention here. Yeah.

0
💬 0

2108.706 - 2114.268 Julius Gustavsson

Yeah, so I mentioned Serdi already. Probe RS is definitely something.

0
💬 0

2115.969 - 2121.091 Matthias Endler

Shout out to Noah, who is one of the maintainers of Probe.

0
💬 0

2121.111 - 2136.058 Julius Gustavsson

Yeah, they've done an amazing job. We actually use... So what we do with Probe RS is we created our own wrapper around it. So it's basically a command line tool that is tailored for this particular chip, and it does...

0
💬 0

2137.038 - 2156.413 Julius Gustavsson

flashing and debugging and setting up all the peripherals in a correct way and disabling write locks on certain things so that you can flash or erase different things in different orders and stuff like that. So we have our own called LPA probe, which is basically a wrapper around Probe RS.

0
💬 0

2156.573 - 2171.241 Julius Gustavsson

But we also have a Python binding package around Probe RS so that we can use that in our system tests, which are Python-based packages. And then you can essentially use it as any other Python library within our system tests.

0
💬 0

2172.382 - 2185.474 Matthias Endler

I do wonder, are there any things in Probe RS that are missing right now? And things in the embedded or automotive ecosystem that you would like to have reflected in Rust, in the Rust ecosystem?

0
💬 0

2186.491 - 2212.923 Julius Gustavsson

I don't know about probe RS for the use cases that we have had. There hasn't been, can't recall anything specific that we haven't been able to fix together with them, but otherwise sure. There are, you know, we, we want to make rust, uh, fully first-class alternative to, to, uh, CNC plus plus when it comes to safety critical.

0
💬 0

2213.963 - 2250.451 Julius Gustavsson

And in order to get there, we need, you know, the tool chain needs to be certified, which is now actually available. But we also need, there are still libraries that need certification and we need tooling around it. For example, MCDC coverage and other tooling for better access. traceability to trace the requirements in an even better way to get better coverage metrics for the code reports.

0
💬 0

2250.952 - 2273.892 Julius Gustavsson

Clippy, for example, would be nice if Clippy would produce reports, even if you can set it to... to warnings as errors, it would still be nice to give an overview of what warnings you actually have or what remarks it has in the project.

0
💬 0

2275.213 - 2278.557 Matthias Endler

Do you have a requirement to create a software bill of materials?

0
💬 0

2279.691 - 2308.265 Julius Gustavsson

Yes, I was going to get to that as well. We do that, and that's part of our build infrastructure that we've built out. Cargo, by default, it helps you to get the total list of everything that you're using in the project. But we want to know what are we actually shipping, so how much of that is actually tooling that is never leaving

0
💬 0

2309.335 - 2328.583 Julius Gustavsson

leaving the company and what is actually the binary that is getting flashed in the car. So we had to do, yeah, add some filtering on top of that to produce an SBOM that is more accurate in terms of what is actually being deployed.

0
💬 0

2329.002 - 2344.053 Matthias Endler

And where do these files end up? You certainly use it for internal documentation, but do you also have to hand them out to some other authority which approves certain software?

0
💬 0

2345.454 - 2366.924 Julius Gustavsson

I'm not sure, but they need to be available at request. And we have, there's open source portal at Volvo Cars that you can, actually, if you own a car, you're always able to request. The license notice is basically for everything.

0
💬 0

2368.225 - 2390.212 Julius Gustavsson

So those files are used for that, but also they're used for internal monitoring, for example, for cargo audit or other forms of auditing and monitoring to ensure that if there's a vulnerability somewhere that we know about it and are able to react to it,

0
💬 0

2392.9 - 2421.444 Matthias Endler

I know from my car that there is a list of tools or a list of software that got used, especially I would say maybe larger applications or larger libraries. For example, curl is a very popular thing. And we had Daniel Sandberg in the podcast as well. But I wonder how far it goes down. Because you have dependencies and sub-dependencies and dependencies of these dependencies.

0
💬 0

2422.685 - 2431.851 Matthias Endler

Is that all listed somewhere? Can I access that as a user? Can I maybe get the entire cargo tomo of the project or would that be too much?

0
💬 0

2433.021 - 2448.508 Julius Gustavsson

So the entire cargo tunnel would contain much more than we're actually shipping. So we're not providing that as part of the car. There it's only the software that is actually running on the car.

0
💬 0

2450.009 - 2454.531 Matthias Endler

For example, Sardi, would it show up somewhere? Yeah, it would show up, definitely. Okay.

0
💬 0

2455.492 - 2465.654 Julius Gustavsson

So yeah, so all, all dependencies that are, that are like getting compiled and linked into the, into the binary are, are would show up.

0
💬 0

2466.226 - 2492.126 Matthias Endler

Let's say I started Volvo and I'm in your team and I want to start working on this project in Rust. What would my day-to-day look like? I plug myself into an embedded device? Certainly not. There's probably some other device somewhere I need authentication for. And then we have some CICD process. We have ProBias somewhere in the tool chain. We have an IDE.

0
💬 0

2492.846 - 2506.15 Matthias Endler

And then we have a build process in the end. And eventually... There will be a binary and a software bill of materials and probably some sort of integration of all the components later on. So walk us through all the steps.

0
💬 0

2507.13 - 2537.423 Julius Gustavsson

Absolutely. But first we must talk about the hardware. So this core computer that I described in the beginning, where we're actually running inside the car. That one, so when we're running there, it's quite hard to test the LPA on its own because it's essentially a small island surrounded by a bunch of other processors. And there are not that many connections to the outside world towards that one.

0
💬 0

2538.183 - 2569.391 Julius Gustavsson

So yeah, if you want to test the LPA individually, you would have to essentially... deploy some sort of distributed test program on the other CPUs and then have those test programs like probing and prodding the LPA and sending back results and stuff. And that would be quite cumbersome. So we fairly quickly, we realized that for this to be effective, we need to have our own development hardware.

0
💬 0

2570.191 - 2603.426 Julius Gustavsson

And yeah, we sketched out basically a block diagram, how it would look, where basically we take the LPA circuitry as it looks on the core computer. take it over to a separate PCB and then we hook up all kinds of components like a debug probe, a USB to CAN device, USB to GBIO devices and current measurements and other things. And so what we end up with is this.

0
💬 0

2604.106 - 2636.017 Julius Gustavsson

It's a small circuit board with one USB cable, and it costs a few hundred euros a piece. And we make it ourselves, or at least Grappit, who are also hardware specialists, they make Yeah, they basically did it in just a few number of weeks we had the first samples. So we have these in some, or at least big enough quantity that every developer can have one at his or her desk.

0
💬 0

2636.877 - 2639.259 Julius Gustavsson

And then we have a bunch of those in CI.

0
💬 0

2640.22 - 2640.5 Matthias Endler

Nice.

0
💬 0

2640.821 - 2650.909 Julius Gustavsson

Which is based on Zool and Zool CI, where we then, so for every patch that we do, it then runs the whole test suite on the hardware.

0
💬 0

2651.434 - 2654.495 Matthias Endler

What's so special about Zool? Because not many people might know it.

0
💬 0

2655.476 - 2686.197 Julius Gustavsson

Yeah, ZoolCI is quite interesting. So I would say its main selling point is that it can do speculative merging. And what that means is that you can have... Normally, especially if you're multiple projects working in a common code base, you could have one team or one developer doing a change and it's working fine and all the tests are going through.

0
💬 0

2686.657 - 2713.377 Julius Gustavsson

At the same time, someone else is doing a different patch for something else. And that is also fine and going through. So both of them get merged, but it turns out that those two together don't actually work. So when both of them get merged, it breaks. Zool actually is able to speculatively check all the patches that are in flight and testing them together before they actually get merged.

0
💬 0

2713.557 - 2719.601 Julius Gustavsson

So you have much higher likelihood of the master branch actually working.

0
💬 0

2720.166 - 2746.963 Matthias Endler

Isn't it also true that we're dealing with embedded devices here? I know roughly how that would work for a backend service, say. But for embedded devices, I would be scared that the device would be in a weird limbo state or... wasn't completely flashed when the test ran. So how do you ensure that the tests are always correct and start from a deterministic position?

0
💬 0

2747.384 - 2779.458 Julius Gustavsson

Good question. So the actual test framework is Robot Framework, which is a Python-based behavior-driven development type of thing, similar to Cucumber or... Yeah, systems like that, where the tests are basically on a system level, like you essentially tell statements about how the system should behave, and then you connect those statements to actual code that is being run on the target.

0
💬 0

2780.098 - 2810.438 Julius Gustavsson

And of course, every test suite then has quite extensive setup loop, basically, where it takes the device and flashes the correct version, resets it into the correct state, and sets up whatever preconditions that need to be in place before the test start. And then same when it's done, it will do some cleanup and But that's all like that's agnostic. So Zool doesn't care about that.

0
💬 0

2810.678 - 2815.967 Julius Gustavsson

It just starts the test framework and it does its magic and then it can report back.

0
💬 0

2817.549 - 2819.312 Matthias Endler

How long does a typical build take?

0
💬 0

2821.423 - 2842.691 Julius Gustavsson

So on the local machine, it takes about, depending on the machine, maybe between 5 and 10 minutes. And then the test itself, I think another 15, 20. But then in the CI, we're doing more extensive things. So that is around an hour or so.

0
💬 0

2843.391 - 2848.152 Matthias Endler

And that includes setting up all the devices and running the integration test?

0
💬 0

2848.252 - 2870.318 Julius Gustavsson

Yeah, yeah. So, yeah, around an hour. If it starts to take more than an hour, we usually try to sit down and figure out if we can parallelize it more, if we need to add more units to the CI so that we can run more in parallel, or if we can optimize the tests somehow so that they run faster.

0
💬 0

2870.338 - 2875.219 Matthias Endler

Does that include all of the components, or does it include just the Rust components?

0
💬 0

2875.839 - 2879.08 Julius Gustavsson

So it includes all of the LPA components, yeah.

0
💬 0

2879.798 - 2883.261 Matthias Endler

And how often is Rust the culprit of failing a build?

0
💬 0

2884.522 - 2900.435 Julius Gustavsson

Almost never. I mean, that is, since it's mostly taken care of at build time. So you can't really, you know, if it doesn't build, you already know that in the build step. And that's usually something you catch locally. Okay.

0
💬 0

2900.933 - 2909.766 Matthias Endler

Does it mean you don't even flash to the device that often because you have a very iterative way of building the software with your IDE and with the type system?

0
💬 0

2910.899 - 2931.298 Julius Gustavsson

Yeah, I definitely would think so, compared to another system where less of the things were taken care of up front. You would absolutely need to flash it more often just to see that, no, that didn't work. So yeah, I would definitely think that that is the case.

0
💬 0

2933.1 - 2936.162 Matthias Endler

How big is the codebase, the Rust codebase?

0
💬 0

2937.011 - 2952.675 Julius Gustavsson

So the Rust code base is around 75,000 lines. And then we have additional 50,000 lines of system tests and CI and other tooling. So yeah, around 125,000, 30,000 lines.

0
💬 0

2953.095 - 2956.836 Matthias Endler

And that was developed by how many people? What's the team size?

0
💬 0

2956.996 - 2966.618 Julius Gustavsson

So we've been ranging between five and 10 developers overall during this three and a half years. We've been

0
💬 0

2968.12 - 2991.464 Matthias Endler

Yeah, very nice. A very substantial code base, but also, I would say, still manageable. So I would assume a lot of work also went into speccing out things, creating architecture diagrams, making sure that everything is wired up correctly, communication and so on. There's a lot of complexity introducing a completely new toolchain, new language, everything.

0
💬 0

2991.864 - 3022.092 Julius Gustavsson

absolutely absolutely and and and like i said earlier i didn't even go through the whole list of things that we have had to build out as well to get this get this working so so yeah my team has done an amazing amazing job there couldn't give them enough credit and but but i've also found that using Rust or this setup that we have is super empowering for everyone.

0
💬 0

3022.112 - 3033.716 Julius Gustavsson

So everyone feels quite confident when they're working in the code base, and especially that you're not as afraid of breaking things because the compiler will actually let you know upfront.

0
💬 0

3035.777 - 3060.622 Julius Gustavsson

So, you know, especially when we're onboarding new developers to the team, they are usually quite quick to get up to speed because they can, you know, they can hack around without fear because, you know, as soon as the bills pass and the tests pass and everything, then you're fairly certain that, you know, nothing weird has been done.

0
💬 0

3061.801 - 3064.062 Matthias Endler

How long until they are fully ramped up?

0
💬 0

3065.102 - 3074.905 Julius Gustavsson

Everything from two weeks, which was the extreme case, to maybe three to six months, something like that.

0
💬 0

3077.985 - 3087.488 Matthias Endler

So it's a bit of a myth that the Rust learning curve is a huge problem for people that want to work with Rust professionally.

0
💬 0

3088.623 - 3120.356 Julius Gustavsson

I would say so. It's absolutely something to respect, and I would definitely, like we did, we seeked help, and we got some people on board that were already really good at this. I wasn't super proficient in Rust when we started. I had done this project and some other smaller hobby things, and actually none of our regular developers are... had worked with Rust in any big capacity before.

0
💬 0

3120.396 - 3134.243 Julius Gustavsson

So we've all picked it up on the job. But of course, they are experienced C and C++ programmers. Not everyone even embed it. So they've had to learn that as well.

0
💬 0

3135.379 - 3150.729 Matthias Endler

And how did you learn how to write idiomatic Rust? Do you have any coding guidelines? Did you talk to the people from Grappit on how to write idiomatic Rust? Are there any resources that you maybe recommended to your team?

0
💬 0

3151.81 - 3174.885 Julius Gustavsson

We read a lot of code. from yeah from the community we we also have we use clippy a lot to to avoid you know the bigger issues rust format and and rust and and clippy of course are mandatory and and we use pedantic clippy pedantic

0
💬 0

3177.602 - 3197.755 Julius Gustavsson

and and no warnings allowed so to say so that so that takes and that gives us a lot of pointers but but then i mean our our code has evolved over time you know going back to some things that we did in the beginning or we can absolutely see that there are some some c isms here and there uh

0
💬 0

3201.336 - 3227.114 Matthias Endler

And when I would be tasked with building code for cars, I would be extremely defensive because I know that I wouldn't be able to just connect to the car or maybe have a shell connection and just troubleshoot on the live machine. These cars, they run for years and sometimes they have to go without maintenance or people don't do those updates that regularly as they should.

0
💬 0

3227.654 - 3247.631 Matthias Endler

So how defensive is the code? How, let's say, painstaking is it to work with inputs and outputs? How does the error handling story look like? Is it... Would it be normal Rust code that people could understand or is it very specific Rust code?

0
💬 0

3248.692 - 3276.413 Julius Gustavsson

There are definitely exceptions, but I would say in general, it's very common Rust code. The robustness of just Rust in its default form is really high. But of course, you can't just unwrap all over the place. You have to... You have to ensure that errors are actually getting handled and logged properly.

0
💬 0

3277.934 - 3291.984 Julius Gustavsson

And we have a quite extensive, so we talked about this diagnostic stack, and we also have like a framework for creating diagnostic monitors that are monitoring different conditions and reporting that.

0
💬 0

3293.045 - 3294.906 Matthias Endler

Do you have a custom panic handler? Sure.

0
💬 0

3295.798 - 3296.818 Julius Gustavsson

Yes, yes.

0
💬 0

3299.439 - 3309.122 Matthias Endler

That means failing is not an option. You need to handle every condition. Because if you're the thing that boots things, then who boots you if you fail?

0
💬 0

3309.403 - 3331.011 Julius Gustavsson

Yeah. And of course, if it panics, we need to reset back to a working condition. But we also use the chip as a watchdog. that we also need to activate so that in case it would lock up for some reason, the watchdog would then hard reset it.

0
💬 0

3331.731 - 3333.712 Matthias Endler

Are there any rules around allocation?

0
💬 0

3334.893 - 3348.42 Julius Gustavsson

Yes and no. Of course, there are rules about everything when it comes to automotive software. In our case, we don't use any allocation. We don't have an allocator, so we don't use it. So everything is static.

0
💬 0

3349.26 - 3350.881 Matthias Endler

That means you disabled the allocator.

0
💬 0

3352.188 - 3375.609 Julius Gustavsson

Yeah, so we don't use that dependency at all. And the heap is zero size, basically. But that means that we use the stack a lot, and we use heap less for a lot of these things. But also, yeah, we put our buffers and things, they're statically allocated here.

0
💬 0

3377.031 - 3386.769 Matthias Endler

Because you know the sizes of the payloads that you have to handle at compile time. Yeah, exactly. It's similar to how Oxide does it. They have this predictable...

0
💬 0

3387.697 - 3406.708 Julius Gustavsson

scheduler i would say or part of the operating system hubris and they do something similar where they only have certain message types that they can handle yeah yeah exactly the same way so everything is statically known beforehand or the worst case is known so yeah we never have to deal with any

0
💬 0

3407.628 - 3432.96 Julius Gustavsson

unknown buffer sizes and then when it comes to input you asked about input validation that is of course super important and that's why it's important also to have a well-defined so that all all messages that we are sending are of well-defined format so that you can easily you know at the parsing stage see if it's actually valid or not and reject it already there um yeah

0
💬 0

3433.34 - 3444.522 Matthias Endler

If someone wants to buy a car that has rust components now, which cars would they need to buy? You said there are production cars. There's probably one Volvo and one Polestar, as far as I'm aware.

0
💬 0

3444.602 - 3459.664 Julius Gustavsson

Yeah, that's true. It's the Polestar 3 and EX90. Volvo EX90. And then just keep on the lookout for Spa 2-based cars. And more will be coming soon.

0
💬 0

3460.605 - 3475.721 Matthias Endler

Did you have any issues in production? With the hardware or with... Well, let's say both. But I'm curious if you sold a car and then it came back because of a rust bug, because of an issue in the rust code.

0
💬 0

3476.061 - 3477.482 Julius Gustavsson

That has not happened yet.

0
💬 0

3478.641 - 3491.614 Matthias Endler

Is that a common thing when you ship certain components and they are C-based, for example, that usually you covered most of the edge cases when things hit production? Or are there any rollbacks or changes?

0
💬 0

3492.835 - 3516.019 Julius Gustavsson

Yeah, I can't really say how... I would guess it's fairly common in automotive in general. I mean, if you look at... you know, what is called warranty, warranty in general, and things that are being replaced due to that, that is quite often software that is at fault. So yeah, I would definitely...

0
💬 0

3516.859 - 3538.74 Julius Gustavsson

And of course, it's still early times, so I'm not going to say that that is not going to happen for us, but so far it has. We have seen some manufacturing issues, but those have been hardware related so far and hopefully something that we will be able to catch in the early stages.

0
💬 0

3541.304 - 3551.165 Matthias Endler

Can you give us an outlook into the future, maybe one, two, three, four, five years down the road? What is Rust usage at Volvo going to look like?

0
💬 0

3553.565 - 3577.45 Julius Gustavsson

I'm just going to hop into my time machine and get back. Now, I would, of course, love to see it in more places. So that is what I'm actively working on now to find or to see where it would fit. Because it doesn't make sense to rewrite or replace everything with Rust. Because when you're already...

0
💬 0

3578.831 - 3608.098 Julius Gustavsson

When you already have the thing working and it's tested and it's according to specification, it's seldom that it actually makes sense to rip it out. But there are cases where that is possible. especially when it comes to cybersecurity-critical user-facing code, things that need to do validation of data that is coming from the outside world, things like that.

0
💬 0

3608.738 - 3640.287 Julius Gustavsson

So I definitely see a possibility for those kind of use cases where we're interfacing with the internet, for example, or things of that nature. But yeah, now that the hurdles I mentioned earlier, the hurdles that we had in the beginning, we didn't have support for neither the hardware nor the OSs that are commonly used. But all of those hurdles are falling one by one.

0
💬 0

3641.249 - 3672.54 Matthias Endler

Now, I find it extremely surprising that a lot of the dependencies that I use for writing Rust and writing Rust in production is the same that you use for an embedded project at Volvo. And this is really cool because you can reuse the code You can share ideas, you can share different bits and pieces and the entire ecosystem becomes much better. So you kind of cross different boundaries with Rust.

0
💬 0

3673.781 - 3677.464 Matthias Endler

And how does it look like in comparison between Dev and Prod?

0
💬 0

3677.724 - 3707.177 Julius Gustavsson

Yeah, it's funny you say that because there is actually no difference. We build one binary, and that is the binary that we test on our test hardware, and that is the binary that goes unmodified to the core computer. And so far, there's nothing that we can't actually test on our dev board, or at least very few things. There are, of course...

0
💬 0

3707.878 - 3726.609 Julius Gustavsson

A few things that change when you're in the context of a whole car. But when it comes to the LPA functionality, we can test essentially everything before we deploy it. So it's almost unheard of that we get some sort of issues due to the fact that something was working differently on our test hardware.

0
💬 0

3727.628 - 3751.995 Julius Gustavsson

So, so yeah, so one, one binary for no difference between dev and prod and, and that in that sense, but what you said with possibility to reuse, and that is definitely one of rust's huge, strong points that, that the fact that you can actually, you know, take different components from the community and you can re use them with.

0
💬 0

3753.206 - 3777.626 Julius Gustavsson

with confidence that you don't really have another, I mean, both hassle-free almost always it's just builds and works and you can just use it. And, and also the, you know, all these things about that you always have to take care of first. You need to, okay. Can you get it to build? in my build system. And first time, probably not. You probably need to spend a lot of time to get that to work.

0
💬 0

3778.086 - 3799.423 Julius Gustavsson

But then when it actually builds and you start to use it, does it use memory in the same way as you do? Does it make the same assumptions? Like who is allocating this buffer? Who is freeing it? Who has the responsibility to do what? And so on and so forth. And those are not standardized in C and C++.

0
💬 0

3800.729 - 3824.519 Julius Gustavsson

Meaning that, yeah, so even if you can build it, it's no guarantee that you can actually use it in a, you know, in any productive way. But in Rust, on the other hand, everything is... Maybe it's not true to say everything, but you're pretty much guaranteed that it will work.

0
💬 0

3824.779 - 3842.776 Julius Gustavsson

And also, like you said, I don't think there's any language that is as scalable from the lowest, smallest microcontrollers to backend systems or... or whatever biggest server farms that you can imagine and everything in between.

0
💬 0

3843.917 - 3854.53 Matthias Endler

That sounds really empowering and probably very encouraging for a lot of people who might listen. Would that be your message to the Rust community?

0
💬 0

3855.427 - 3891.426 Julius Gustavsson

Yeah, empowering is definitely the key word. We have been super, super happy with this project, and it really shows that Rust has a bright future. The hurdles that we mentioned before when we started the project, which made it basically a non-starter for most of the ECUs that we wanted to use it, those are all coming down or have come down already. So now you have QNX support, for example.

0
💬 0

3891.466 - 3918.562 Julius Gustavsson

You have Infineon tricore support. There was recently an article on how to run Rust together with Autostar Classic. Autostar Classic is the common automotive software framework that most automotive software runs in. And now that is becoming available for Rust as well. There is work being done on... on various different automotive platforms and components.

0
💬 0

3919.943 - 3930.77 Julius Gustavsson

So for automotive, it's definitely a bright future. And we'll see where we'll take it at Volvo.

0
💬 0

3932.311 - 3937.755 Matthias Endler

And where can people learn more about this project, about Rust at Volvo?

0
💬 0

3938.464 - 3973.967 Julius Gustavsson

Yeah, so there are two interviews out, actually. One from a couple years back, where we were kind of in the starting position, and you can find that on the Volvo Tech blog. It's called Why... Volvo thinks you should have rust in your car or something similar. Silly pun. And then now recently there was an article, Tvede Holv's blog, where we talked about this project and how it has been going.

0
💬 0

3974.318 - 3984.601 Matthias Endler

Yeah, that was a really nice one. I read this one and also this prompted me to reach out. And where can people learn more about yourself?

0
💬 0

3986.114 - 4013.575 Julius Gustavsson

You can find me on LinkedIn and on X, Mastodon, all these different platforms. I also was fortunate enough to join the Rust Safety Critical Consortium that was started last month at RustConf in Montreal. And together we are aiming to close the final hurdle, which is to make Rust a fully accessible

0
💬 0

4014.595 - 4032.69 Julius Gustavsson

viable alternative to do safety critical software so that is that is what we're doing now and you can find more about that at at the rust foundation web page and there's also a github repo where you can join if you like admission is free

0
💬 0

4033.803 - 4046.953 Matthias Endler

That means people will run into you at some point or another, and we hope to see you at a conference or at an event speaking about Rust and Volvo or safety-critical components. Yeah, let's hope so.

0
💬 0

4048.474 - 4067.568 Julius Gustavsson

We're at least super stoked about the current project and how well it has worked out. Definitely going to be pushing that forward within the company and hopefully we can find some other exciting avenues for it.

0
💬 0

4069.209 - 4076.634 Matthias Endler

Julius, thanks for taking the time and thanks for being an ambassador of Rust in the car manufacturing space.

0
💬 0

4077.509 - 4078.41 Julius Gustavsson

Yeah, thanks for having me.

0
💬 0

4079.05 - 4099.769 Matthias Endler

It was a great chat. Rustium Production is a podcast by Corot. It is hosted by me, Matthias Endler, and produced by Simon Brüggen. For show notes, transcripts, and to learn more about how we can help your company make the most of Rust, visit corot.dev. Thanks for listening to Rustium Production.

0
💬 0
Comments

There are no comments yet.

Please log in to write the first comment.