1 00:00:00,017 --> 00:00:02,877 That's easier than you think. Joshua, go ahead. 2 00:00:23,037 --> 00:00:27,957 Commodore is having a good time so far. Hopefully, you're in the right room. 3 00:00:27,957 --> 00:00:29,757 We might have to sign a new civil order in August. 4 00:00:30,777 --> 00:00:33,677 Unfortunately, we have a little bit of technical trouble, but I think they're 5 00:00:33,677 --> 00:00:37,197 still gonna be on time. We have a lot to talk about today. 6 00:00:37,897 --> 00:00:41,657 And there's gonna be quite a bit of government for questions that we get after 7 00:00:41,657 --> 00:00:45,157 you hold them. And I gotta go through these slides pretty quickly here. 8 00:00:47,457 --> 00:00:53,097 So when you hear this presentation for some of our office today, 9 00:00:53,357 --> 00:00:57,777 okay, cause some of you probably have a few questions in your head and be like, rust? 10 00:00:58,217 --> 00:01:03,377 Why? Why rust? Why not this? Why not that? Why use cutene with rust and all 11 00:01:03,377 --> 00:01:05,517 that kind of, all those kind of questions. 12 00:01:05,657 --> 00:01:10,377 I just want you to hold those in your head for a moment and just let me trace you for a little bit. 13 00:01:10,897 --> 00:01:15,597 And I'm not trying to like, I'm not coming here to try to convert you to some 14 00:01:15,597 --> 00:01:18,597 kind of like close lover of a salad or something like that. 15 00:01:18,717 --> 00:01:21,117 But I think this is something that was really, you know, considered. 16 00:01:21,697 --> 00:01:25,497 And I could a lot more be more knowledgeable about this. 17 00:01:25,817 --> 00:01:31,437 So, what are we going to be talking about today? We're going to be talking about the work of office. 18 00:01:31,917 --> 00:01:37,297 We have, I'm going to try to split this up into kind of the two different sections 19 00:01:37,297 --> 00:01:39,617 here. So, I'm going to go over sort of the non-technical. 20 00:01:39,757 --> 00:01:45,597 Well, things that maybe what non-people might understand and know about. 21 00:01:45,737 --> 00:01:49,397 And then in the later half, I'm going to go over the actual technologies that 22 00:01:49,397 --> 00:01:54,797 you can use to engineer and see what slots you can get together. 23 00:01:57,617 --> 00:02:01,957 Hopefully, okay, so I just want to ask everybody a question. 24 00:02:02,117 --> 00:02:05,377 How many people in here, raise your hand if you're interested in this. 25 00:02:07,583 --> 00:02:10,783 Okay hold them drop your hands up well 26 00:02:10,783 --> 00:02:13,563 keep your hand raised if you know that there's already 27 00:02:13,563 --> 00:02:17,843 process that it can't even say there's a 28 00:02:17,843 --> 00:02:20,563 if there's if we raise the chamber of hand 29 00:02:20,563 --> 00:02:23,423 raised if you know that there's rust inside of tv held right 30 00:02:23,423 --> 00:02:26,083 now before this time okay that's a 31 00:02:26,083 --> 00:02:29,083 lot of these amount of people so uh hopefully this 32 00:02:29,083 --> 00:02:31,723 okay yeah so i 33 00:02:31,723 --> 00:02:36,063 split uh since west is a relatively new thing i was really curious if someone 34 00:02:36,063 --> 00:02:40,103 did a talk about this before the previous academy so there was uh three major 35 00:02:40,103 --> 00:02:47,043 instances that i defined we have um bias talking about of trusts but flint in 36 00:02:47,043 --> 00:02:49,823 uh master's academy which of course i haven't said you know too, 37 00:02:50,343 --> 00:02:57,023 um the mom would talk about us and we also have a talk about rest supporting 38 00:02:57,023 --> 00:03:01,283 chain at all So hopefully this is sort of a new topic to a lot of us here. 39 00:03:02,523 --> 00:03:06,483 And who am I? Who is the person you're going to be staring at for the next hour or so? 40 00:03:06,803 --> 00:03:13,523 I'm Joshua Gollins, also known as Brett String, I've been a software engineer here at KDAB. 41 00:03:13,663 --> 00:03:16,403 You can see our nice little logo there on the front. 42 00:03:16,783 --> 00:03:20,863 And I've been hacking away from KD for a couple of years now. 43 00:03:20,943 --> 00:03:26,943 You probably know who I am, hopefully. But I've been also using Rust outside 44 00:03:26,943 --> 00:03:31,603 of work for a lot of personal projects, and I find, of course, 45 00:03:31,623 --> 00:03:33,963 some better work in DE I really like to do. 46 00:03:34,083 --> 00:03:37,923 So I'm really, really interested in how to glue those two things together, 47 00:03:37,983 --> 00:03:38,983 my two favorite technologies. 48 00:03:39,983 --> 00:03:44,723 Anyway, we're going to go into some surface level details about what Rust is, 49 00:03:44,963 --> 00:03:47,723 sort of the purported benefits of it. 50 00:03:47,723 --> 00:03:52,163 But in case this is going to be really quickly for people who already know Rust, 51 00:03:52,163 --> 00:03:55,923 it's probably going to be really boring for anybody who's not familiar. 52 00:03:56,063 --> 00:03:57,983 Hopefully this will shed a little bit of light for you. 53 00:03:58,283 --> 00:04:02,843 So what is Rust? It's a instance like, what did you just like? C++ or C? 54 00:04:03,283 --> 00:04:07,683 It's relatively new. I think 1.0 came out in 2015. 55 00:04:08,063 --> 00:04:14,323 It's been a development earlier than that, but obviously it's pretty young compared to like C or C++. 56 00:04:16,623 --> 00:04:22,623 And a really big talking point, which we'll get into later, is safety. 57 00:04:22,923 --> 00:04:28,183 We're considering a lot of safety systems language, especially compared to C++. 58 00:04:29,623 --> 00:04:35,263 And on the surface level, it has a lot of similar syntax and concepts, has few differences. 59 00:04:36,804 --> 00:04:41,964 Pretty big differences that we'll be able to go over here. But what are some other rough features? 60 00:04:42,284 --> 00:04:45,904 We already know that it's safe. We already know that it's new and shiny. 61 00:04:46,264 --> 00:04:50,704 But what's some other, like, kind of benefits that people go on and on about in Rust? 62 00:04:52,244 --> 00:04:56,044 Kind of my favorite thing is a lot of, there's a lot of matters included. 63 00:04:56,524 --> 00:05:00,544 So, for example, it has its own testing suite. That's all those C++ developers 64 00:05:00,544 --> 00:05:02,944 and guys will know we have, like, a bajillion of those. 65 00:05:03,164 --> 00:05:07,444 So, it's nice that they have standard ones. not even working on a standard benchmark tool. 66 00:05:08,184 --> 00:05:12,904 We, um, and also the problem is, obviously it has its own real system that had 67 00:05:12,904 --> 00:05:18,604 to enter, which C++ also, uh, C++ doesn't. 68 00:05:18,684 --> 00:05:22,004 So that's kind of an interesting difference between the two languages. 69 00:05:22,444 --> 00:05:28,264 Um, RUN almost has a pretty large and rich standard library, a lot of library. 70 00:05:29,124 --> 00:05:32,804 Um, it's probably not, I think I'm hearing it's not as big as C++, 71 00:05:32,804 --> 00:05:35,124 but it's still pretty sizable, I think. 72 00:05:35,304 --> 00:05:39,104 And also another thing I've kind of loved about this language is that it makes 73 00:05:39,104 --> 00:05:40,484 tool chain management really easy. 74 00:05:41,104 --> 00:05:45,444 A lot of secure targets for like, I don't know, embedded, you have like web 75 00:05:45,444 --> 00:05:46,504 assembly and stuff like that. 76 00:05:46,664 --> 00:05:52,104 Stuff that we also have in C++ land, but I like that it's all centralized and rough. 77 00:05:55,464 --> 00:05:58,524 There's usually not like a bunch of boards so the last compile of that you have 78 00:05:58,524 --> 00:06:00,424 these are like a million years out of date. 79 00:06:02,084 --> 00:06:06,644 So, what are some of the kind of props to that cluster? Rust attempts to me. 80 00:06:07,084 --> 00:06:11,824 It tries to be more safe than C++. It does stuff like tracks for memory safety. 81 00:06:12,304 --> 00:06:16,704 Threats to safety. It has much stronger ownership battle, which we'll get into 82 00:06:16,704 --> 00:06:18,844 in the technical words at the top. 83 00:06:19,124 --> 00:06:23,524 But next I'm going to talk about Rust's ID, and I have to say which one I have. 84 00:06:24,464 --> 00:06:30,204 I did not even start this ad with that slide. So, my show of cancer earlier, 85 00:06:30,604 --> 00:06:34,844 not that people know that there's actually rust inside of the kidney today, 86 00:06:35,184 --> 00:06:42,304 but I just want to go over, like, our kidney is mostly C++ code, 87 00:06:42,464 --> 00:06:46,364 so why do we care about rust at all? 88 00:06:49,344 --> 00:06:55,664 And I want to kind of go over like what can be brought to the table and I just 89 00:06:55,664 --> 00:07:00,404 want to say don't ask my lesson not x, y, z or your mates for the table like 90 00:07:00,404 --> 00:07:01,504 which you're on h, x, or m. 91 00:07:01,904 --> 00:07:05,124 But I feel like the lesson is also kind of special because it has a lot and 92 00:07:05,124 --> 00:07:11,004 a lot of ways to deal with C and C plus us and since it's so similar it's also a system language. 93 00:07:12,504 --> 00:07:18,064 I think it's a pretty good candidate if we want a second language or a third 94 00:07:18,064 --> 00:07:19,664 language to be count five on this IDE. 95 00:07:20,104 --> 00:07:22,504 I think Rust is a pretty good candidate for that. 96 00:07:25,561 --> 00:07:28,221 Um something um the kind of the 97 00:07:28,221 --> 00:07:31,281 cost of my talk is uh there's a lot and 98 00:07:31,281 --> 00:07:34,281 a lot of talk especially this year about how can 99 00:07:34,281 --> 00:07:39,541 we attract link contributors to kd and if you ever get inside of i don't know 100 00:07:39,541 --> 00:07:46,861 if you ever looked at one of the contributors saying uh when they're first contributed 101 00:07:46,861 --> 00:07:53,821 uh a really close like every few months someone asked us why can i not use rust And if I think, 102 00:07:53,861 --> 00:07:59,881 I think Rust is a much more interesting language for contributors, I think, 103 00:08:00,781 --> 00:08:05,001 well, the thought process with them is that they think C++ is a legacy language. 104 00:08:05,361 --> 00:08:08,841 They think it's like a waste of time, like, why should I even bother learning this? 105 00:08:09,081 --> 00:08:12,681 And I know for a lot of us in the audience, we would disagree, I disagree too. 106 00:08:12,821 --> 00:08:16,761 I think C++ is so long enough, I feel like there's still a reason to learn it. 107 00:08:16,901 --> 00:08:19,941 But we can't deny this is kind of what people think. 108 00:08:22,161 --> 00:08:28,501 For example, if they wanted to choose the open source, are they going to choose 109 00:08:28,501 --> 00:08:31,101 K-E, which forces them to learn C++? 110 00:08:31,441 --> 00:08:35,121 Are they going to go to another blockchain that uses Rust, because they might 111 00:08:35,121 --> 00:08:36,361 be interested in Rust only? 112 00:08:37,321 --> 00:08:42,501 So I think it's worth looking at Rust, even for this point of all, 113 00:08:42,641 --> 00:08:44,341 to find out the facts and contributors. 114 00:08:45,081 --> 00:08:50,861 And I feel like we kind of see a microcosm of this already. For example, 115 00:08:50,941 --> 00:08:55,121 how many people here, or how many people have you seen, that only started off 116 00:08:55,121 --> 00:08:58,801 working in the Q part of Blackboard, or like a TE organization? 117 00:08:59,421 --> 00:09:04,501 And then they slowly, but surely, maybe they make like a C++ pitch here, 118 00:09:04,561 --> 00:09:09,301 or C++ pitch there, and it's sort of like that, but it has to be other languages, like a TE. 119 00:09:09,521 --> 00:09:15,161 So I'm like thinking, maybe we have a few REST boxes in TE that people like 120 00:09:15,161 --> 00:09:20,061 to work on. And new contributors can go like, oh, I want to learn this. 121 00:09:20,201 --> 00:09:23,121 I don't really care about D++ that much. I'll get shipping to this. 122 00:09:23,701 --> 00:09:26,621 And it's sort of just like the down-nose off of there. 123 00:09:27,841 --> 00:09:33,221 And I'm going to go over a little bit of statistical data to kind of back up this claim. 124 00:09:35,181 --> 00:09:40,461 So this is an answer from the Stack Overflow developer survey reporting to my core. 125 00:09:41,841 --> 00:09:44,841 Also, just noting that I have QR codes for all the. 126 00:09:48,031 --> 00:09:52,871 Your phone camera but that goes to uh it's just a link on this slide in this to your progress walls, 127 00:09:53,391 --> 00:09:58,631 but um i really don't like this section but it's basically let's see if i'm 128 00:09:58,631 --> 00:10:04,911 basically we're gonna share this red part is what they call desire like desire 129 00:10:04,911 --> 00:10:07,731 to use a language so as you can see, 130 00:10:08,591 --> 00:10:16,011 this line here run it needs to prevent and blue line here is what i use it uh 131 00:10:16,011 --> 00:10:19,051 you can actually to use the language inside your day job. 132 00:10:19,271 --> 00:10:26,271 So if we compare this to C++, 82% of respondents want to use refs and unfortunately, 133 00:10:26,471 --> 00:10:31,031 C++ is lower, it is like 53.1%. 134 00:10:31,591 --> 00:10:38,911 So that's a very good number. So I don't really trust this survey because it 135 00:10:38,911 --> 00:10:45,171 says 18% of people use C++ in their daily work, 136 00:10:45,171 --> 00:10:49,571 but then they go ahead and say like 28% use Rust, which I don't blame at all. 137 00:10:49,811 --> 00:10:57,971 But I hope you guys see here that in general, Rust is obviously much more popular 138 00:10:57,971 --> 00:11:01,271 than C++ right now, but C++ is still a lot better. 139 00:11:01,651 --> 00:11:05,231 It's not the only way in people's minds to get the jobs. 140 00:11:05,631 --> 00:11:11,811 But if you were to take this language here, I'd be putting in Rust, right? 141 00:11:15,271 --> 00:11:19,991 This is kind of, I think I've said much of this before, but... 142 00:11:22,833 --> 00:11:31,353 But in the context of Rust inside of KDE, I feel like we're kind of in a special situation here. 143 00:11:31,653 --> 00:11:37,933 So to anybody who is very active in the Rust ecosystem, and to let the people 144 00:11:37,933 --> 00:11:43,613 outside of the know, Rust doesn't really have a user interface library. 145 00:11:43,913 --> 00:11:48,273 For example, when you think of C++, and you're like, I want to write this C++ 146 00:11:48,273 --> 00:11:51,313 application that needs to do what, by one of the first things that comes to mind. 147 00:11:51,593 --> 00:11:57,193 It's Qube, obviously, but when it comes to not really their own Qube, 148 00:11:57,193 --> 00:12:01,273 there's like a bunch of like different user interface libraries that they're 149 00:12:01,273 --> 00:12:05,993 developing, but since it's so new, it's sort of like the no man's land, 150 00:12:06,713 --> 00:12:13,153 where they're quickly trying to develop a solution, but there's like nothing like Qube. 151 00:12:13,273 --> 00:12:18,553 And so I think we can both benefit from this arrangement. 152 00:12:19,673 --> 00:12:25,073 If Rust needs a UR library and Qt wants to try to meet the distributors, 153 00:12:25,273 --> 00:12:28,573 why don't we start Rust Pro? 154 00:12:36,633 --> 00:12:44,653 I feel like making it easier to write Qt-enabled Rust programs and sort of programming 155 00:12:44,653 --> 00:12:47,253 Rust within the Qt community can help both sides. 156 00:12:47,253 --> 00:12:54,833 And I'll get into this more later about how we can even use T inside of like Rust, Qt, S. 157 00:12:55,173 --> 00:13:00,153 But I don't think it's really an unpopular opinion that would come from people 158 00:13:00,153 --> 00:13:02,973 using Qt, but we want more people using KDE software. 159 00:13:03,413 --> 00:13:09,273 So we can make it easier to use like KDE libraries like Kirigami or our translation 160 00:13:09,273 --> 00:13:13,653 framework and they make it advertising enough. 161 00:13:14,253 --> 00:13:19,413 I think people will use it. And I don't know if you can catch on the side of 162 00:13:19,413 --> 00:13:22,693 the rest of the media and to catch on the side of not teaching me to kind of 163 00:13:22,693 --> 00:13:24,253 like benefit both parties here. 164 00:13:27,773 --> 00:13:33,233 So I also want to go over the kind of safety point for us because for Kiki, 165 00:13:33,333 --> 00:13:35,253 I feel like it's not too important. 166 00:13:35,493 --> 00:13:38,353 Of course we do handle like a little bit of security stuff by them. 167 00:13:38,353 --> 00:13:42,913 I think we generally make like that some software that doesn't really have to 168 00:13:42,913 --> 00:13:46,433 be secure, but that doesn't mean we still can't benefit from this point. 169 00:13:46,713 --> 00:13:53,553 For example, I'll go into this later, but for example, we recently, inside of Convive, 170 00:13:54,953 --> 00:13:59,753 there's an optional REST thing that we can use for the SQL parsing that, 171 00:13:59,773 --> 00:14:02,453 since anything we can do with it, it's just real practice. 172 00:14:03,173 --> 00:14:07,533 So I think, I'll get into this more later, but I feel like I've kind of got it across, 173 00:14:10,258 --> 00:14:13,278 uh could be beneficial beneficial to us as well i 174 00:14:13,278 --> 00:14:16,558 mean to uh as well so um another 175 00:14:16,558 --> 00:14:19,678 point i want to know is i personally don't care about 176 00:14:19,678 --> 00:14:23,478 the safety stuff too much when it comes to us oh what's way more interesting 177 00:14:23,478 --> 00:14:28,098 to me is the is the thing that people build in us people build these libraries 178 00:14:28,098 --> 00:14:37,418 what they call it basically there's like tons and tons and tons of useful base builds and Rust. 179 00:14:40,838 --> 00:14:46,238 Well, a little bit more how we can actually learn from those later, 180 00:14:46,398 --> 00:14:50,278 but I just want to show you what I mean with a really, really good example. 181 00:14:51,318 --> 00:14:56,058 How many people in here have heard of the servo validation? Nice. 182 00:14:58,398 --> 00:15:01,618 So here's a really good case right here with Rust. 183 00:15:01,818 --> 00:15:07,398 So here at TeamLab, we've developed a QML component that if you use this on 184 00:15:07,398 --> 00:15:10,278 your criminal application will show you a servo value and, 185 00:15:11,878 --> 00:15:15,098 this is sort of like the perfect case right where 186 00:15:15,098 --> 00:15:18,558 um if you don't know servo it's written in rust but 187 00:15:18,558 --> 00:15:21,838 since it's quickly developing they don't want to exactly commit 188 00:15:21,838 --> 00:15:25,298 to a c or c plus lcmi so it's 189 00:15:25,298 --> 00:15:29,878 going to be very hard for c++ applications to use it so we can use for us to 190 00:15:29,878 --> 00:15:35,018 kind of glue those two things together and i'll go into what css2 is here but 191 00:15:35,018 --> 00:15:42,118 that's kind of one of the examples of like a really cool rust thing um that we can then uh find to, 192 00:15:42,678 --> 00:15:47,538 and then use to try a few applications uh and definitely the work i think for 193 00:15:47,538 --> 00:15:51,838 like mobile c++ new applications so if you want to use the server menu i would 194 00:15:51,838 --> 00:15:55,038 suggest using that because that's just a prototype, but that just goes to show, 195 00:15:55,698 --> 00:16:00,758 that there is, there's a new system for Rust, even if you're more of Rust-like. 196 00:16:03,110 --> 00:16:06,910 So another thing I want to avoid is I'm not here to tell you to rewrite your 197 00:16:06,910 --> 00:16:10,410 KDE code in Rust. I also find that to be a pretty clueless endeavor. 198 00:16:11,290 --> 00:16:14,890 I don't think I need to go on this point too much because I think it's, 199 00:16:14,890 --> 00:16:21,230 I think the period, the honeymoon period, everyone's going to rewrite everything in Rust. 200 00:16:29,370 --> 00:16:34,630 Post code and start throwing everything in Rust. I like to take a much more 201 00:16:34,630 --> 00:16:36,530 focused, pragmatic approach with them. 202 00:16:37,450 --> 00:16:44,930 So, I think it's about time to start going into the technical bits of how we 203 00:16:44,930 --> 00:16:46,770 actually integrate these two things together. 204 00:16:47,770 --> 00:16:51,330 So, how do we integrate VOS and C++? 205 00:16:52,270 --> 00:16:57,410 Real quick, I just want to go over how we've already done the integration on the KDE side. 206 00:16:57,730 --> 00:17:02,970 So, as I already mentioned, Like Kondai uses a crate for Haitian wildflowers to move security. 207 00:17:03,590 --> 00:17:07,850 In our progressive drawing application, we also use a rust pick or tessellation 208 00:17:07,850 --> 00:17:08,930 analysis to find the game. 209 00:17:09,350 --> 00:17:16,510 In Angelfish, and I think I've seen it now as well, we use an ad-locking crate. And I... 210 00:17:23,750 --> 00:17:25,730 Put one... To this. 211 00:17:35,010 --> 00:17:40,430 So, clearly, Kenny is on straight from us, and all of these will be using technology that we already did. 212 00:17:41,130 --> 00:17:45,550 But since we're in the tentacle bit, I kind of want to give a good showcase 213 00:17:45,550 --> 00:17:51,010 of rough safety for anyone who's not familiar with the ownership model, 214 00:17:51,190 --> 00:17:53,150 and just to give you the idea of like, 215 00:17:56,910 --> 00:18:01,610 Like, what are some of the technical and safety reasons why you might want to adopt a dog? 216 00:18:02,050 --> 00:18:07,850 And let's see, Sharon. 217 00:18:16,965 --> 00:18:22,305 Okay so i'm going to give you a really contract example in z plus plus of something 218 00:18:22,305 --> 00:18:25,045 that russ kind of tries to pick over a little bit. 219 00:18:26,285 --> 00:18:29,225 So if you look here i'm defining a some class 220 00:18:29,225 --> 00:18:32,025 uh with formatting that the 221 00:18:32,025 --> 00:18:34,705 browser is deciding to describe we have a 222 00:18:34,705 --> 00:18:37,525 method here called do your thing we have a list of 223 00:18:37,525 --> 00:18:40,385 values uh that are integers and then this 224 00:18:40,385 --> 00:18:43,325 do your thing has uh it calls 225 00:18:43,325 --> 00:18:46,065 to clear this list and then in 226 00:18:46,065 --> 00:18:49,745 my name i set the list from array to one to five and then 227 00:18:49,745 --> 00:18:52,525 i lift through those and print the values but you 228 00:18:52,525 --> 00:18:59,165 see here i'm changing the values too and then i call do your thing and for all 229 00:18:59,165 --> 00:19:02,825 the c plus plus burgers and audience you're probably screaming at me right now 230 00:19:02,825 --> 00:19:06,825 you're saying you should not do this because what will happen is we'll you will 231 00:19:06,825 --> 00:19:10,065 invalidate your iterators here and then this This thing will completely explode. 232 00:19:10,365 --> 00:19:16,185 Here the compiler for some reason printed through the whole list, and you can stop it too. 233 00:19:17,205 --> 00:19:23,545 But what I'm going to go into is sort of what does this look like in Rust? 234 00:19:23,865 --> 00:19:27,445 If we try to rewrite the same thing in Rust, what does it look like? 235 00:19:27,905 --> 00:19:34,945 And here's the Rust version. So you can see we define the struct in Rust. 236 00:19:35,385 --> 00:19:40,905 We say it's a list of values. We also clear the values in the do your thing function. 237 00:19:41,365 --> 00:19:44,245 We set the values to one, two, three, four, five. You can't see the five because 238 00:19:44,245 --> 00:19:46,625 it's behind the bubble. Then we loop through the values. 239 00:19:47,005 --> 00:19:51,265 And we do the same thing here. When the value equals two, we say do your thing. 240 00:19:51,625 --> 00:19:55,345 But can anybody tell me what happens here? 241 00:19:57,125 --> 00:20:03,665 Do you like the one? Yes. And so I know my talk is a little bit of a mess, 242 00:20:03,785 --> 00:20:07,705 but this is what's really cool. cool to me. 243 00:20:07,805 --> 00:20:10,405 So yes, you're right, it does not compile. 244 00:20:10,585 --> 00:20:12,885 And we can actually see the error message right here. 245 00:20:13,885 --> 00:20:17,685 And in my opinion, this is really cool. 246 00:20:17,845 --> 00:20:23,445 So this is part of what makes rust safer than C++. And. 247 00:20:26,102 --> 00:20:34,902 I feel like when people talk about mass safety, they sort of pretend that you 248 00:20:34,902 --> 00:20:37,542 can't make safe C++ code. 249 00:20:38,062 --> 00:20:44,122 But it's not, I don't think it's as simple as that. I think it's just harder to write safe C++. 250 00:20:45,142 --> 00:20:49,562 For example, there's ways to make them a previous C++ snippet like safer. 251 00:20:49,762 --> 00:20:53,002 Like obviously you should be reading the documentation for a clear function 252 00:20:53,002 --> 00:20:55,482 to know that it actually has a and it's a really weird side effect. 253 00:20:56,102 --> 00:20:59,802 But the fact that Rust does not allow you to do it at all, it doesn't even allow 254 00:20:59,802 --> 00:21:03,762 all these unsafe mirrors to happen, is really cool. 255 00:21:04,202 --> 00:21:10,742 And so, I would say that when we're working with Rust, 256 00:21:11,662 --> 00:21:18,302 as a C++ developer, in my experience, it's made me a better C++ developer, 257 00:21:18,682 --> 00:21:23,882 because I've definitely written code like this before. 258 00:21:24,422 --> 00:21:27,742 And because the compiler or the optimizer 259 00:21:27,742 --> 00:21:31,182 sort of just like nothing airs 260 00:21:31,182 --> 00:21:33,942 out nothing no warnings come out this stuff kind 261 00:21:33,942 --> 00:21:37,282 of like slips live with what's this really cool because it points out hey you 262 00:21:37,282 --> 00:21:41,822 really should not be doing this day this really unsafe thing and i know this 263 00:21:41,822 --> 00:21:46,802 is kind of the time to sample but this is sort of this is sort of my experience 264 00:21:46,802 --> 00:21:50,322 with uh when learning ruts this out it kind of makes it without a program in 265 00:21:50,322 --> 00:21:53,342 general this even when i go back to c plus. 266 00:21:58,702 --> 00:22:06,902 Of course, it's not a silver bullet, there's, for example, watching bugs are 267 00:22:06,902 --> 00:22:09,262 still very much possible, there's like this C++. 268 00:22:11,522 --> 00:22:18,442 Even though there are security benefits here, I feel like when it comes to running 269 00:22:18,442 --> 00:22:22,962 code in non-configured scenarios, it's probably a better idea if you're already using C++. 270 00:22:22,962 --> 00:22:26,582 Plus to just learn how to write same person plus plus and. 271 00:22:33,629 --> 00:22:38,109 I want to quickly go through some of the libraries that we use to integrate 272 00:22:38,109 --> 00:22:40,869 this new technology. So, I think I'm going to mention... 273 00:22:44,029 --> 00:22:48,429 Okay, I think I'm going to mention first is called Corrosion. So, for... 274 00:22:50,809 --> 00:22:56,069 We still... Okay, so, when you... In your projects, you probably still want to use Scenic. 275 00:22:56,709 --> 00:23:00,609 But, as you know, as I mentioned, I have a system called Argo. 276 00:23:00,709 --> 00:23:04,129 So, how you sort of unify those things. Obviously, you don't want to like call 277 00:23:04,129 --> 00:23:07,229 cargo and then you sort of like manually link it then. 278 00:23:07,589 --> 00:23:14,509 So, this is a really cool, it's a thing you can include in CMA that would basically 279 00:23:14,509 --> 00:23:15,949 allow you to invoke cargo. 280 00:23:15,989 --> 00:23:19,509 Also, it works here if you have like a Rust function, I don't know, 281 00:23:19,529 --> 00:23:21,169 to code some user table data. 282 00:23:21,449 --> 00:23:25,869 You can simply print that little Rust library, include it in your project, 283 00:23:26,049 --> 00:23:27,869 then call corrosion gear. 284 00:23:28,729 --> 00:23:33,389 And it will auto-build it and it will also expose it as a normal CMA target 285 00:23:33,389 --> 00:23:35,249 to use like anything else. 286 00:23:35,569 --> 00:23:37,869 Of course, we want to build more on top of this. 287 00:23:38,209 --> 00:23:41,589 So how do we do that? We use a framework called CSS. 288 00:23:42,709 --> 00:23:47,009 It includes C++ and Rust together in sort of like this high-profile fashion. 289 00:23:47,209 --> 00:23:52,269 So it's possible to use Rust-type C++ as if they were C++-types, 290 00:23:52,309 --> 00:23:54,469 and you can also do vice versa. 291 00:23:54,469 --> 00:24:00,389 And I will say this is very opinionated, so if you take a look at their website, 292 00:24:00,549 --> 00:24:02,569 they have a very specific way of doing things. 293 00:24:03,289 --> 00:24:08,129 But the point is to make it feel random on both sides and just to make you pay 294 00:24:08,129 --> 00:24:11,089 yourself for having to go through like the scene FFI layer. 295 00:24:12,049 --> 00:24:15,309 And it also can like see like, wait a sec, function. 296 00:24:17,789 --> 00:24:19,429 What is it, it's like the... 297 00:24:24,469 --> 00:24:24,769 Oh. 298 00:24:28,173 --> 00:24:31,833 So a little bit of background is that I did it in the C as a bottom end and 299 00:24:31,833 --> 00:24:38,113 I gave myself a couple of bottom ends that I also did compute and I decided 300 00:24:38,113 --> 00:24:42,493 kind of incorrectly that I wasn't going to use CSS and I was going to create 301 00:24:42,493 --> 00:24:47,153 a C API instead and I will say please do not do that just because you create CSS. 302 00:24:48,213 --> 00:24:51,933 I'll go into a little bit of an example. Yes, in the next slide I'll show you 303 00:24:51,933 --> 00:24:56,813 an example, a real world example of things that we had inside of KDE and it's, 304 00:24:56,813 --> 00:24:58,013 Trust me, it's so much better. 305 00:24:58,113 --> 00:25:01,313 You don't want to use crates like this. You don't want to try running C API's. 306 00:25:01,453 --> 00:25:05,173 Oh, what's also cool is that it also handles C++ population. 307 00:25:05,653 --> 00:25:11,493 So for example, if you did some C++ blue code, it will also handle the boolean, 308 00:25:11,493 --> 00:25:16,053 the, they also handle the boolean compiler and all that fun stuff. 309 00:25:19,193 --> 00:25:27,013 So, so I want to go into how simple this can be. So here, this is actually all 310 00:25:27,013 --> 00:25:31,693 of the rest of, let's say, the non-condi right now. We're gluing these two things together. 311 00:25:31,993 --> 00:25:35,853 So also the H1 parts are pretty identical to us. Just give us three. 312 00:25:36,413 --> 00:25:41,373 So if we want to call it for C++, that's all we need. 313 00:25:41,493 --> 00:25:46,193 We define the function right here. We say this function is from green, 314 00:25:46,313 --> 00:25:51,973 H0 as my H0 dot len. And then I don't have the C++ side, but it's literally 315 00:25:51,973 --> 00:25:53,193 just like one function call. 316 00:25:55,473 --> 00:26:02,773 Then I just want to be ready with this candy symbol. I just want to point that out that. 317 00:26:11,178 --> 00:26:14,798 Your life doesn't have to be difficult when you're done, but of course, 318 00:26:14,818 --> 00:26:18,718 this is a really simple example, but when you sort of get into more complex 319 00:26:18,718 --> 00:26:20,378 applications, you can kind of go with them. 320 00:26:20,678 --> 00:26:27,298 But this is not an unsolved problem. I just want to put it that way. 321 00:26:29,118 --> 00:26:33,878 And now I'm going to get into this logic version of the talk. 322 00:26:33,878 --> 00:26:37,318 Okay, so this is all really cool, but this has nothing to do with Qube, right? 323 00:26:37,618 --> 00:26:43,158 So if we want to build Rust, KDAF, V6, and Rust, how do we do that? 324 00:26:43,318 --> 00:26:45,398 We use a tool called CXXQ. 325 00:26:45,778 --> 00:26:50,518 It's created by my company, KDAF. It was created in about 2021, 326 00:26:51,078 --> 00:26:56,138 and it's still being maintained today by Andrew and Leon, and it's been updating 327 00:26:56,138 --> 00:26:57,358 continually ever since. 328 00:26:57,558 --> 00:27:00,658 We think this is the future of Rust plus Qt. 329 00:27:00,778 --> 00:27:04,318 We aren't the first people to do it. But in my opinion, we are following the 330 00:27:04,318 --> 00:27:11,858 most leisure-filled and complete solution for using QT in Rust. 331 00:27:12,638 --> 00:27:17,538 So I also wanted to mention that the maintainers are very receptive to contributions. 332 00:27:18,398 --> 00:27:21,698 To be clear, this is not a problem if we're trying to sell you and we have to, 333 00:27:21,698 --> 00:27:24,698 you know, license or anything like that. 334 00:27:25,278 --> 00:27:28,078 There's also a little CLA as well. So if you know a 335 00:27:28,078 --> 00:27:31,038 little bit of Rust and you want to try to help merge these two worlds 336 00:27:31,038 --> 00:27:33,918 together that'd be very appreciated oh and another thing 337 00:27:33,918 --> 00:27:37,138 i was told to mention is that css can be a single partner development 338 00:27:37,138 --> 00:27:41,678 but as you can see it's still um it is usable but just keep that in mind guys 339 00:27:41,678 --> 00:27:46,438 we're always trying to improve this thing uh i said this kind of unsolved album 340 00:27:46,438 --> 00:27:52,078 version us as rustin can you take the item russ and c++ together but there's 341 00:27:52,078 --> 00:27:54,638 still ways to improve for the developers. 342 00:27:56,324 --> 00:28:02,904 So now I'm going to go to the example of what CXXQ allows you to do. 343 00:28:03,044 --> 00:28:07,864 And I just want to make this disclaimer that this is really focused on the QML side. 344 00:28:08,864 --> 00:28:14,144 We don't have that much QT widgets at all support in CXXQ right now because, 345 00:28:14,244 --> 00:28:16,864 as you may know, it's a huge C++ API. 346 00:28:17,264 --> 00:28:22,504 So we figured it's probably easier to define the interface with QLite. 347 00:28:22,824 --> 00:28:27,584 QLite is the latest part of that. With QML, it's actually right and close to 348 00:28:27,584 --> 00:28:33,684 QObjects to properly single and multiple sets of probably a much easier place to start. 349 00:28:33,944 --> 00:28:39,204 But I want to say that it's not impossible to maybe write the Qt widgets application to us. 350 00:28:39,404 --> 00:28:42,824 I just will not recommend it. And I don't think there's many tools for that right now. 351 00:28:43,244 --> 00:28:48,404 So for all the people who know how to write QML applications, 352 00:28:48,624 --> 00:28:51,644 you probably have a good idea in your head of like how to 353 00:28:51,644 --> 00:28:54,584 set up a Q object to cover to uh attach properties to 354 00:28:54,584 --> 00:28:58,284 it and how to register and stuff like that and eventually in 355 00:28:58,284 --> 00:29:03,824 CXXQ that's much much similar so you have to look through all the rust systems 356 00:29:03,824 --> 00:29:09,084 right here you can see in the very small time sorry about that that we have 357 00:29:09,084 --> 00:29:16,104 a sort of same system so we have a Q object macro being called uh to of course 358 00:29:16,104 --> 00:29:18,044 register with the metatype system. 359 00:29:18,384 --> 00:29:21,684 We have a QML underscore element, just like in C++. 360 00:29:22,064 --> 00:29:24,904 You can define properties and stuff like that. 361 00:29:25,144 --> 00:29:32,444 And so I don't have it on the slide, but you see right there this myOpticRust, 362 00:29:32,524 --> 00:29:34,044 that's just a normal Rust drum set. 363 00:29:34,824 --> 00:29:40,924 So you can define variables on it, if there's two even arbitrary properties for that. 364 00:29:41,024 --> 00:29:43,444 For example, this number is a number. 365 00:29:45,644 --> 00:29:49,844 You can also just do normal setters, getters, and singles and stuff like that. 366 00:29:50,044 --> 00:29:54,584 But really, this is all the glue code you need. And then the rest of the snippet, 367 00:29:54,644 --> 00:29:57,164 of course, we just need like normal rust code. 368 00:29:57,524 --> 00:30:05,164 And so with this, you can build fully rust QML applications today just using this system. 369 00:30:05,384 --> 00:30:09,124 And even though there's a really simple example, we also support looking into 370 00:30:09,124 --> 00:30:14,284 Qt in much more ways. For example, you can, of course, pay the inviolables and 371 00:30:14,284 --> 00:30:19,504 those can be called from all three sides, the June 1st and June 12th plus from QML, of course. 372 00:30:19,744 --> 00:30:22,244 We also support fund inheritance. 373 00:30:23,493 --> 00:30:26,153 So whenever you have to create a queue with apps like Aiva model, 374 00:30:26,273 --> 00:30:27,973 we also support overriding the base magnets. 375 00:30:28,373 --> 00:30:33,233 We also support also looking into the Qt and Qt-Driving system. 376 00:30:33,513 --> 00:30:35,233 We also support WordPress for Qt. 377 00:30:35,733 --> 00:30:38,053 Names, engines, all that kind of stuff, you expect. 378 00:30:38,633 --> 00:30:43,493 And, of course, there's also a huge swath of CXQ that's just exposing normal 379 00:30:43,493 --> 00:30:46,073 Qt core types like Qt.NET or whatever. 380 00:30:46,493 --> 00:30:49,713 And examples for all this can also be found in our repository. 381 00:30:49,713 --> 00:30:54,513 I'm not going to make you think of why I flipped through a million writing clients. 382 00:30:55,633 --> 00:31:02,013 But as I just said, I wish there was a real-world example that you use today, 383 00:31:02,973 --> 00:31:06,393 showcasing that you can write your best Canadian applications, 384 00:31:06,633 --> 00:31:12,233 like your normal QL applications that we have today in Canadian. 385 00:31:12,653 --> 00:31:18,393 And I already said, please don't start rewriting everything in Rust. 386 00:31:18,393 --> 00:31:20,073 I was starting to know people about that. 387 00:31:21,013 --> 00:31:22,753 I'm gonna make it one exception here. 388 00:31:24,073 --> 00:31:27,753 So, who knows contrast, the simple QML map. 389 00:31:28,013 --> 00:31:32,153 Yeah, not that many people. It's like a contrast chart you can put two different 390 00:31:32,153 --> 00:31:33,733 colors or sample it from your desktop. 391 00:31:34,093 --> 00:31:38,133 It's really helpful to find the colors that contrast enough so it's actually 392 00:31:38,133 --> 00:31:40,313 accessible to people like you will. 393 00:31:40,413 --> 00:31:45,933 And so, what Zone has made is basically a rough version of that. 394 00:31:46,013 --> 00:31:50,833 So that's something you can try out any now. Now you can see it uses Turing-Garmin. 395 00:31:51,153 --> 00:31:53,713 It's certainly a little bit hard. You don't worry about that, 396 00:31:53,813 --> 00:31:58,353 but it's a good showcase because core simple, at least the simple female applications, 397 00:31:58,553 --> 00:31:59,713 we have all the tools available. 398 00:31:59,873 --> 00:32:04,113 This is fully processed. There's no C++ in the repository at all. 399 00:32:04,493 --> 00:32:08,453 I'll link to the repository in the next slide as well. But I just want to show 400 00:32:08,453 --> 00:32:10,553 you, just looks like any other regular application. 401 00:32:10,793 --> 00:32:15,873 There's nothing special that needs C++ here. So we have like, 402 00:32:16,133 --> 00:32:19,533 it's not that complex as like your models involved, but you have like the queue 403 00:32:19,533 --> 00:32:20,993 properties, of course, the color. 404 00:32:21,273 --> 00:32:24,933 We have signals because you have to be able to like change the queue and that 405 00:32:24,933 --> 00:32:28,633 also changes the hex code and the actual contrast that it shows. 406 00:32:28,973 --> 00:32:31,813 We have the totals because of course the buttons have to do stuff. 407 00:32:32,173 --> 00:32:36,513 But it's just just, it just shows that we already have all these tools to create 408 00:32:36,513 --> 00:32:39,833 for us to be able to get the animation. So I'm just asking how they're doing. 409 00:32:40,773 --> 00:32:43,873 Here's a little bit more information about the project. I'm not the one who created it. 410 00:32:43,873 --> 00:32:46,613 Here with our fun in the king rustling which i'll 411 00:32:46,613 --> 00:32:51,153 also link to later in the slide i just i'll just clean it up a little bit and 412 00:32:51,153 --> 00:32:57,293 yeah this whole rust and q amount no c++ involved it just used it's like a normal 413 00:32:57,293 --> 00:33:04,333 rust project so you just like include cxx uh q and cxx obviously and and. 414 00:33:08,441 --> 00:33:14,061 And since this is a rewrite, we can actually do a little bit of statistical analysis about this. 415 00:33:14,981 --> 00:33:17,921 Even though I really don't like comparing lines of thought between languages, 416 00:33:18,101 --> 00:33:20,241 I still think this is kind of interesting to go over. 417 00:33:20,681 --> 00:33:26,321 So obviously with C++, you have like a header and a definition file, it runs like one day. 418 00:33:26,461 --> 00:33:32,521 So actually this rush to rewrite it is smaller than the contrast that we have right now. 419 00:33:32,781 --> 00:33:37,021 Of course, this is only like a simple case. I'm sure for bigger applications 420 00:33:37,021 --> 00:33:40,061 that actually might be different funds. 421 00:33:42,041 --> 00:33:46,901 I mentioned that this also needs some KDE technologies. So how do we do that for us? 422 00:33:47,001 --> 00:33:50,301 I haven't showcased that yet. It's called Sanscript-KDE frameworks. 423 00:33:50,541 --> 00:33:54,581 And just to clean the room, this is not supposed to be official in any sort 424 00:33:54,581 --> 00:33:55,681 of the class that you've awarded. 425 00:33:55,881 --> 00:34:00,761 So I guess this is also created by George Hahn and I've been trying to help out a little bit with it. 426 00:34:00,881 --> 00:34:04,501 So like, for example, in that contrast, we were like, we still use Gerigami. 427 00:34:04,501 --> 00:34:07,421 We still use TmCore Downs for TML data. 428 00:34:07,721 --> 00:34:11,641 We still use the regular KDE translation systems. 429 00:34:11,841 --> 00:34:15,801 And we all be buying that across the disease. So having to do that at C++ and 430 00:34:15,801 --> 00:34:16,921 then for QL applications. 431 00:34:18,001 --> 00:34:21,981 You can check it out here. It's not really, it really only has the bare minimum. 432 00:34:22,581 --> 00:34:26,441 But I also, oh, oh, yeah. 433 00:34:26,521 --> 00:34:28,461 I have to say something about what the AGI looks like. And again, 434 00:34:28,601 --> 00:34:35,161 what's very similar to what you can do But if we have our valve damper right 435 00:34:35,161 --> 00:34:38,861 here, our application gate, you can see it actually lines up quite well with 436 00:34:38,861 --> 00:34:40,981 Rust, certainly in the concept. 437 00:34:41,441 --> 00:34:46,281 Of course, we initialized the localization engine here. That's all the normal. 438 00:34:46,581 --> 00:34:50,601 In order to have really ugly wire rubs, I'm not using a local module. 439 00:34:50,821 --> 00:34:52,301 That's something I'd actually work on soon. 440 00:34:52,741 --> 00:34:57,441 But I also wanted to, I actually have some open questions about this project. 441 00:35:00,641 --> 00:35:05,001 Do we even want this to become a visual? And if it does become a visual, 442 00:35:05,081 --> 00:35:10,721 and we're putting that out there, what would the sort of layout look like? 443 00:35:10,901 --> 00:35:17,361 And I'm also curious what kind of outer frame response we need to worry about mining and rust. 444 00:35:17,781 --> 00:35:21,561 Because of course, I'm thinking like the next one, I would be like, 445 00:35:21,581 --> 00:35:22,821 can't think for configuration. 446 00:35:23,161 --> 00:35:26,381 Also, I wonder actually how much we can actually have to worry about. 447 00:35:27,101 --> 00:35:32,161 And I have to, if there's any digital people I'm really curious much what the 448 00:35:32,161 --> 00:35:36,401 situation with the hack issue and distributing REST applications are. 449 00:35:36,641 --> 00:35:40,501 Because obviously I think this is still pretty new. 450 00:35:40,661 --> 00:35:43,881 I personally haven't used the rest of those Qt applications. 451 00:35:44,021 --> 00:35:49,301 I'm really curious that there's like some sort of, if there's going to be a 452 00:35:49,301 --> 00:35:53,281 huge roadblock or something that we might run into a question that we might have to solve. 453 00:35:55,141 --> 00:35:56,821 So how much time do I have? 454 00:35:59,961 --> 00:36:04,281 Oh, perfect, perfect, perfect, because I'm mapping that. So I know that was 455 00:36:04,281 --> 00:36:09,301 kind of a method of talk, but I hope you probably took the idea that not a lot 456 00:36:09,301 --> 00:36:11,021 of people know about Rust. 457 00:36:12,501 --> 00:36:16,241 Okay, I'm on my side. A lot of people don't know that he already has Rust, 458 00:36:16,241 --> 00:36:20,281 and I think this is a real shame, because I think this is the way to go, 459 00:36:20,361 --> 00:36:23,081 that more and more people want to use Rust, 460 00:36:23,341 --> 00:36:28,441 and I feel like we, of course, want games to survive, even outside of C++, 461 00:36:28,701 --> 00:36:29,621 so I think it's worthwhile. 462 00:36:29,961 --> 00:36:35,581 To think about this kind of things and encourage more and more people to use 463 00:36:35,581 --> 00:36:39,541 us inside of TV and show teams that this is actually possible today. 464 00:36:39,821 --> 00:36:41,961 We just have to start about putting more effort. 465 00:36:42,321 --> 00:36:47,501 And here's also some more links. So like I said, we're not trying to develop 466 00:36:47,501 --> 00:36:51,521 CMS Institute as a product of the acne, question, statistical, or conceptual. 467 00:36:52,241 --> 00:36:55,541 They are available in this dual chat. This is all the links in the workbook. 468 00:36:55,801 --> 00:36:59,321 So don't worry about like, worry about uh losing 469 00:36:59,321 --> 00:37:02,421 this link it's not the rust zula it's a separate zulu 470 00:37:02,421 --> 00:37:05,761 chat um they're of course also receptive on makeup 471 00:37:05,761 --> 00:37:08,941 so if you want to raise that issue if you're like why does this work 472 00:37:08,941 --> 00:37:12,761 and why is this difficult go while they answer you also 473 00:37:12,761 --> 00:37:18,581 on the kitty side we have a kitty rust mixture i very very much suggest even 474 00:37:18,581 --> 00:37:21,901 if you have no interest in rust at all i suggest just being that road because 475 00:37:21,901 --> 00:37:28,721 our fun working is gone off uh and it's really really impressive and I think 476 00:37:28,721 --> 00:37:31,341 that's it I think I'm going to open up for a short question, 477 00:37:32,441 --> 00:37:33,881 for what 10 minutes. 478 00:37:39,802 --> 00:37:41,462 And hopefully they'll ask for it. 479 00:38:07,582 --> 00:38:12,762 I was not aware that Russ is in KDE today. 480 00:38:13,562 --> 00:38:18,682 You mentioned that there are questions about packaging and the development, 481 00:38:19,082 --> 00:38:22,542 which means the build system, also dependency management. 482 00:38:23,782 --> 00:38:31,822 And I agree with you that this is probably the most irritating or biggest hurdle 483 00:38:31,822 --> 00:38:36,382 to entrance to this. And you also mentioned two possible solutions to that, 484 00:38:36,442 --> 00:38:37,502 if I understood this correctly. 485 00:38:37,762 --> 00:38:42,562 Do you have more resources on that? What are people doing? 486 00:38:42,682 --> 00:38:46,362 Or if you have an idea for a tutorial or anything, 487 00:38:46,522 --> 00:38:50,242 we say, okay, well, this is a way you can start, or this is a way that you can 488 00:38:50,242 --> 00:38:56,022 look into starting to set up some reasonable development workflow that doesn't 489 00:38:56,022 --> 00:39:00,322 end up in chaos with build systems fighting against each other in the end. Thank you. 490 00:39:01,642 --> 00:39:05,282 I mean, so for it. 491 00:39:11,982 --> 00:39:16,382 Yeah, well, this whole part of it, of the library that I mentioned earlier, 492 00:39:16,582 --> 00:39:20,402 a condiment cost, so it had something else. I ate no fish. 493 00:39:20,562 --> 00:39:25,962 Those are good examples of how to just add a little bit small rust without going 494 00:39:25,962 --> 00:39:27,882 insane and messing up your bell system. 495 00:39:30,442 --> 00:39:34,442 And I sort of don't have the answer for you because I don't know if anyone's 496 00:39:34,442 --> 00:39:41,722 shipping a Rust application right now publicly on my distribution. 497 00:39:43,142 --> 00:39:46,722 I would love to hear how it's going to make it. 498 00:39:48,362 --> 00:39:54,142 But I don't have the answer for you. Hopefully, once we're starting to break 499 00:39:54,142 --> 00:39:58,622 through a couple of ideas of like a real world application, that's not going 500 00:39:58,622 --> 00:39:59,982 to be right. That's not a toy. 501 00:40:00,322 --> 00:40:03,082 And we'll kind of cross that bridge when we get back. 502 00:40:04,802 --> 00:40:10,162 But hopefully it's not a huge deal for packagers and global. 503 00:40:30,762 --> 00:40:30,822 Thank you. 504 00:40:37,033 --> 00:40:42,133 For example, with calling out the internet HTML parts, does that end up being 505 00:40:42,133 --> 00:40:44,133 static linked or is it dynamic linked? 506 00:40:44,573 --> 00:40:50,073 Okay, this is a good question. For that, for the HTML parts, 507 00:40:50,073 --> 00:40:52,493 I believe it's static linked. 508 00:40:53,433 --> 00:40:58,453 Totally possible since you're dynamic linked. I believe if you build concepts 509 00:40:58,453 --> 00:41:03,133 right now, it will, I don't know if it will try to static link GT and stuff like that. 510 00:41:03,133 --> 00:41:07,793 But it will never do same dynamic it's a little bit more complex when it comes 511 00:41:07,793 --> 00:41:15,973 to rust there are like only rust and stuff like that like the HL brush it's not impossible I think, 512 00:41:17,113 --> 00:41:23,693 but it's I think when it comes to rust they're much more it's like statically 513 00:41:23,693 --> 00:41:28,373 linking and it's sort of like bypassing everything you do in the shared linker so, 514 00:41:29,553 --> 00:41:33,853 it's possible to do dynamic linking but you have to sort of be cautious about 515 00:41:33,853 --> 00:41:36,613 it and make sure your dependency is supported and that kind of stuff, 516 00:41:36,673 --> 00:41:38,573 will be able to make it really easy. 517 00:41:42,233 --> 00:41:48,013 I have a question with the get capability. To use Kirigami, is DXX cute enough 518 00:41:48,013 --> 00:41:51,293 or is DXX KDE frameworks required? 519 00:41:52,853 --> 00:41:58,353 You're asking me if Kirigami... Sorry, I don't understand your question. 520 00:42:00,173 --> 00:42:03,013 The example you showed was using Kirigami, right? 521 00:42:03,233 --> 00:42:12,653 Yes. And if I would want to write a Rust application using Kirigami is CXX cute 522 00:42:12,653 --> 00:42:15,233 enough or do I need the CXX KDE framework? 523 00:42:16,153 --> 00:42:19,993 Because Kirigami is a tier 1 framework it doesn't require any other framework, 524 00:42:20,113 --> 00:42:25,313 so CXX KDE is enough But of course, as a KDE developer, I would suggest you use. 525 00:42:30,853 --> 00:42:35,113 But that's also a good thing, because if you want to use Curriculum application, 526 00:42:35,593 --> 00:42:39,293 then you basically are now reaching into this writing and CSS framework, right? 527 00:42:42,786 --> 00:42:47,206 And threading libraries or frameworks we normally care about in ADI. 528 00:42:47,746 --> 00:42:52,786 What's your feeling for that version of Rust in the direction you want to use in ADI? 529 00:42:59,686 --> 00:43:05,986 Sorry, so you're saying my view is about something, Rust is changing something while it's in ADI? 530 00:43:08,106 --> 00:43:11,146 What do you mean by that? More like it evolved. 531 00:43:17,906 --> 00:43:21,346 If I understand correctly, do you think, like, it will start, 532 00:43:21,506 --> 00:43:26,326 if we start using this in production, will, like, will, like, 533 00:43:26,326 --> 00:43:29,566 NDI issues sort of snowball into something greater? 534 00:43:29,746 --> 00:43:32,326 I would say that's probably not. 535 00:43:32,786 --> 00:43:35,906 I feel like that's something we're going to have to go out in the hallway and discuss. 536 00:43:36,046 --> 00:43:38,546 That's also something I'm interested in. And then sort of like, 537 00:43:38,606 --> 00:43:42,906 again, with the packaging, it's something I feel like could be a little bit 538 00:43:42,906 --> 00:43:45,126 more, you know, that's where I want. 539 00:43:45,266 --> 00:43:48,186 It could be a little bit more awkward to it. 540 00:43:48,706 --> 00:43:50,086 But I'm pretty confident it's 541 00:43:50,086 --> 00:43:53,906 a solvable issue. It's just an issue I don't know off the top of my head. 542 00:44:18,546 --> 00:44:23,006 That's also something that I don't know how I should discuss, 543 00:44:23,866 --> 00:44:27,726 I don't, nothing off the top of my head, I'm not sure. 544 00:44:29,226 --> 00:44:35,306 This is also one of those things that we are, I don't think about. 545 00:44:36,906 --> 00:44:39,526 I'm sitting in the hallway right now. That's an interesting question. 546 00:44:39,726 --> 00:44:43,206 I can answer it for you, but I can't just do it right now. 547 00:44:43,546 --> 00:44:48,886 I don't think anything should be a problem in that area. 548 00:44:50,366 --> 00:44:54,526 It's sort of like, do the Python lines have that issue? 549 00:44:54,766 --> 00:44:58,406 I mean, that's sort of the same idea. DR. DR. DR. DR. DR. DR. 550 00:45:04,566 --> 00:45:04,966 DR.