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.