00:00 < bridge> ppl would really hate that in ddrace 00:00 < bridge> ye ik thats why it would be cool to have the ddnet client support moving tiles on game layers 00:00 < bridge> its pretty annoying since its only serverside on kog 00:01 < bridge> that's not how that works 00:01 < bridge> it's just not predicted by the client 00:02 < bridge> yes 00:02 < bridge> it's still rendered fine 00:02 < bridge> exactly 00:02 < bridge> thats what i said 00:02 < bridge> its not that easy to add both server side and client side i suppose 00:02 < bridge> not that one-day task 00:03 < bridge> cant wait for a troll level with moving blocks 00:03 < bridge> there will perhaps be some questions about how to implement it. will it be possible to switch them on/off? will the tile move the player around when standing on it? and what if the player get stuck between a moving and a solid tile (or two moving tiles), should the player remain stuck or glitch out of it somehow? 00:03 < bridge> single-pixel onetilers :justatest: 00:03 < bridge> it means entities will use envelopes too kekw 00:04 < bridge> getting squished into the cieling: 00:04 < bridge> instant death 00:04 < bridge> i dont think thats even coded in lol 00:05 < bridge> let mapper choose lol 00:06 < bridge> imagine being able to teleport tee body if its stuck 00:06 < bridge> >teleports it to finish 00:06 < bridge> hey jao 00:06 < bridge> chillerdragon: 00:07 < bridge> you scared him off!! 00:07 < bridge> :santatrollet: 00:09 < bridge> :justatest: 00:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1112865276594237572/image.png 00:09 < bridge> as for the squshing ig 00:09 < bridge> imagine every skin squashed 00:09 < bridge> or something like this 00:09 < bridge> xD that would be fun! 00:16 < bridge> hydraulic press 01:31 < bridge> No reason not to, we were offered to be shown the code KoG has, but I don't think they intend to go open source anytime soon, so they'll either have to extract the moving tiles part or show someone they trust that has time to implement it the code. Overall a lot of moving parts that just haven't aligned yet, that's all 01:32 < bridge> Ah ok cool 01:47 < bridge> Kog has a server download you can use to test it. In theory it would not be hard to test all possible interactions from that 02:11 < bridge> `.release()` doesn't destroy the pointer, it's more like getting the raw pointer out of the unique pointer and forgetting that it was a `unique_ptr` (and not calling its destructor) 02:11 < bridge> Yeah, not the best word choice from mr 02:11 < bridge> me* 02:44 < bridge> https://youtu.be/1AiYCVzy6YY 04:27 < bridge> a little irritating that clang-tidy doesn't distinguish between `const` and `constexpr` variable definitions when using the `readability-identifier-naming` checks 04:28 < bridge> because i want a `constexpr` definition to be named like a macro, in `UPPER_CASE` 04:28 < bridge> but i want `const` variable definitions (which i only use over constexpr when it's not a compile-time evaluable expression) to be named like normal variables (`CamelCase`) 04:30 < bridge> because i want a `constexpr` variable definition to be named like a macro, in `UPPER_CASE` 04:30 < bridge> but i want `const` variable definitions (which i only use over constexpr when it's not a compile-time evaluable expression) to be named like normal variables (`CamelCase`) 04:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1112934591636967544/mmexport1685414441242.png 04:46 < bridge> New guys code be like: I'm gonna ignore the key to audioevent mapping and make it order dependant instead 04:48 < bridge> Sorry for off-topic, haven't been so disappointed by some code in quite a while, had to find somewhere to complaint before i yell at colleagues. 06:15 < bridge> that's obnoxious 06:15 < bridge> there's not even an enumeration for the sound names 06:15 < bridge> you're just supposed to guess? 06:29 < bridge> ack another thing clang-tidy `readability-identifier-naming` doesn't consider is lambdas 06:29 < bridge> i name them like functions but it wants to name them like variables 06:42 < bridge> ok, just teached our QA guy how to use C# reflection to grab types without an assembly reference and I'm regretting it 06:42 < bridge> Should've just said i don't know 06:43 < bridge> The QA guy is a vim user (well, vim plugin in Jetbrians' rider) 06:43 < bridge> So that's cool 06:44 < bridge> fakevim or whatever 06:44 < bridge> idk, I don't use vim 07:45 < bridge> Shouldn't be that hard knowing it's quad based 09:05 < bridge> - 09:05 < bridge> Haha, do note that this channel is logged though 😄 09:06 < bridge> I know. 09:06 < bridge> He knows 09:06 < bridge> :poggers2: 09:07 < bridge> I use this channel for work too. When I don't know how to do X I write "I'm disappointed that Rust doesn't support X", and the Rust fans will help me find the idiomatic solution 😄 09:07 < bridge> :poggers2: 09:07 < bridge> You are gaming the system 09:10 < bridge> ive been tricked 09:10 < bridge> but well i use it too for work 09:11 < bridge> e g const cast from ystday xd 09:11 < bridge> where are you using that 09:11 < bridge> beware 09:11 < bridge> read backlog 09:11 < bridge> i asked cuz i know its dangerous 09:11 < bridge> but i wont explain again xd 09:12 < bridge> :justatest: scrolling 09:12 < bridge> . 09:12 < bridge> @Ewan Green 09:14 < bridge> thanks 09:14 < bridge> yeah that’s pretty much it 09:15 < bridge> how do I stop myself from working 16hours day 09:16 < bridge> Find a hobby/girlfriend 09:16 < bridge> Or a bf 09:16 < bridge> while still meeting impossible ddl* 09:16 < bridge> :justatest: 09:16 < bridge> I'm only speaking from experience 😄 09:16 < bridge> also yes, a bf would be better 09:17 < bridge> Where do you get a hobby 09:18 < bridge> Switch to a western company with a more reasonable work culture. I haven't had any deadlines for a while. But I'm not sure how easy it is to work for them when living in China 09:18 < bridge> 09:18 < bridge> i'm fine with ddl 09:18 < bridge> but project manager doesn't understand how long things take 09:19 < bridge> we submit estimate, by the time it reaches the boss it was cut in half 09:19 < bridge> "This is a huge undertaking, I haven't done this before, so can't estimate the time. If you have to write something down, write 6 months." 09:19 < bridge> ye, and we got 3 09:19 < bridge> :hdog: 09:20 < bridge> I assumed you write 6 months when it will actually take 1 09:20 < bridge> well 09:20 < bridge> then I should write 2 years 09:21 < bridge> is it frowned upon to be gay in china? 09:21 < bridge> idk 09:21 < bridge> maybe 09:21 < bridge> so far everyone seems to be okay with it 09:21 < bridge> can u legally marry 09:21 < bridge> no 09:21 < bridge> thats the answer i guess 09:21 < bridge> :justatest: 09:22 < bridge> i've heard there's a hack to just get the gov to register each other as the other's legal guardian 09:22 < bridge> whyd u have to do him like that 09:23 < bridge> oh btw i have a boyfriend now 09:23 < bridge> not that exciting tho cuz we are in separate cities, and have only met twice. 09:24 < bridge> damn 09:24 < bridge> i need a job 09:24 < bridge> or a hobby 09:24 < bridge> or a gf any works 09:24 < bridge> Cool, congrats! 09:24 < bridge> mood 09:24 < bridge> xd 09:24 < bridge> i got a job and a hobby tho :BASEDHALT: 09:25 < bridge> something something sigma male 09:25 < bridge> i dont have either 09:25 < bridge> :justatest: 09:25 < bridge> how old r u 09:25 < bridge> 16 09:25 < bridge> maybe too early 09:25 < bridge> you hobby is school 09:25 < bridge> or job 09:25 < bridge> pick 09:26 < bridge> nobody in llvm server responded to my clang tidy questions yet 09:27 < bridge> it is unconsciously keeping me from going to bed 09:27 < bridge> make server mod 09:27 < ws-client> www.google.com 09:27 < bridge> ? 09:27 < bridge> i can make code my job or hobby but not both 09:27 < ws-client> all clang-tidy information u need 09:27 < bridge> ah bummer 09:27 < bridge> i did 09:27 < ws-client> is in the internet 09:27 < bridge> oh i thought that was a bot advertising some site 09:28 < bridge> lol? Not even docs say that’s why i ask 09:28 < ws-client> yeah let's make google great again xd 09:30 < bridge> 🕳️ 09:30 < bridge> I want to leave the house 09:30 < bridge> but idk where to go 09:31 < ws-client> shopping 09:33 < ws-client> https://duckduckgo.com/ * 09:34 < ws-client> google is spyware 09:34 < ws-client> duckduckgo is also american 09:34 < ws-client> https://github.com/BugBugGo/BugBugGo 09:34 < ws-client> then use bugbuggo 09:34 < ws-client> its german 09:34 < ws-client> https://www.ecosia.org/ 09:34 < ws-client> also german 09:34 < ws-client> :tree: 09:34 < ws-client> but they use bing backend 09:34 < ws-client> and bing is america 09:34 < ws-client> xd 09:34 < ws-client> so does duckduckgo 09:34 < ws-client> yeah 09:35 < ws-client> bing masterrace 09:35 < ws-client> microsft top G company 09:35 < ws-client> nanosoft 09:35 < ws-client> i am thinking about getting a load to buy ms stock 09:35 < bridge> what phone are u using chillerdragon and jstar 09:35 < ws-client> iphone 09:35 < ws-client> some android with broken display from my sis xd 09:35 < ws-client> premium libre applke device 09:36 < ws-client> F jupsti 09:36 < bridge> whats the purpose avoiding things like disc if u have iphone 09:36 < ws-client> ur sis play tw? 09:36 < ws-client> my other sis played it a bit 09:36 < ws-client> wowo so many sis 09:36 < ws-client> we are a family of equality 09:36 < ws-client> 2 boys, 2 girls 09:37 < ws-client> @Gewinum i tried the pinephone but it sucks ass xd 09:37 < ws-client> 1 cup 09:37 < ws-client> ah yeah i remember xDD 09:37 < ws-client> ddnet on your pinephone 09:37 < ws-client> 3 fps 09:37 < ws-client> yes pog times 09:37 < ws-client> still better than my 4090 09:37 < ws-client> :justatest: 09:37 < ws-client> true 09:37 < ws-client> probably because it didnt use gnome 09:37 < ws-client> axaxax 09:37 < bridge> who cares if it’s an American company 09:38 < ws-client> libre mobile is just not there yet for me to enjoy it 09:38 < ws-client> linux desktop is amazing 09:38 < ws-client> but linux mobile breaks me 09:38 < ws-client> i just try to avoid using the phone at all cost 09:38 < bridge> i embrace the phone 09:38 < ws-client> @Ewan if you didnt know, Linux comes from Europe. We value our privacy 09:38 < bridge> what? 09:38 < ws-client> We are proud of it 09:39 < bridge> linux comes from anywhere the contributors are 09:39 < bridge> many of them are American since most big tech companies are American and dump such money into OSS 09:39 < ws-client> yeah yeah sure 09:39 < bridge> amerikan much money 09:39 < bridge> that argument is silly lol 09:39 < ws-client> and they also dump all my privacy into their databases 09:40 < ws-client> gotta backup the privacy to make it safe 09:40 < bridge> hmm so the linuks is spyware 09:40 < ws-client> if you do not want to be spied on get a cabin in the woods 09:40 < ws-client> no other way 09:41 < ws-client> @Ewan the truth is, european companies are too bad to collect data succesfully, so politics were like: Ah nice no lobby against it, lets sell it as we love privacy xd 09:41 < ws-client> xd 09:41 < ws-client> if silicon valley would be in europe it wouldnt be like it here 09:41 < ws-client> skill issue 09:41 < bridge> im going to get a cabin in tue woods 09:41 < bridge> Hello, 09:41 < bridge> sorry to bother you devs, but i have to ask: 09:41 < bridge> Is it in progress to develop the possibility to return to the old freeze design with stars instead of a bar? Deen told me some long time ago to give it a try and get used to the new design. Since I was forced to, i gave it a try and i still dont like it 😄 09:41 < bridge> I would REALLY apreciate if you could add the possibility for costumizing the freeze animation :heartw: 09:42 < bridge> I’m not protecting malicious privacy practices but to say that software is inherently bad because it’s American is insane 09:42 < ws-client> no 09:42 < ws-client> my life hack was replacing the freeze skin by something so ugly that i forgot stars existed 09:43 < bridge> “no” :gigachad: 09:44 < bridge> no 09:45 < ws-client> @Ewan you have to understand one thing. Europe is not America and America is not Europe. Why do Americans hate China so much? Because they don't trust them. American companies did do weird shit, like spying the german chancellor. There simply is always mistrust against it here. You are right, most developers in America are probably good ppl. But capitalism wants more money, and data is money 09:45 < ws-client> so american companies = spy => money 09:45 < ws-client> simple 09:45 < ws-client> spy2win 09:45 < ws-client> thats why heinrich added teehistorian 09:45 < bridge> Americans hate China? 09:46 < ws-client> to maximise profits 09:46 < ws-client> ofc not all 09:46 < ws-client> China is soon overtaking american in terms of total economy 09:47 < ws-client> Ofc most americans don't like this fact 09:47 < ws-client> and not only the Trump fans, also Biden shoots against them 09:47 < ws-client> china evil is big propaganda even i got brainwashed into thinking that tiktok eats children soulds 09:47 < bridge> I can understand how you might think that but the majority of Americans don’t give a single shit 09:47 < ws-client> you sure? 09:47 < ws-client> I wouldn't be so sure about it 09:47 < bridge> 🇪🇺 09:47 < bridge> best 09:47 < bridge> Very few are lucky enough to have such little struggle in their life to get that invested in politics 09:47 < bridge> china and us bad 09:47 < ws-client> they might not be actively be against china 09:48 < bridge> :gigachad: 09:48 < ws-client> but if trump says, it's chinas fault. Suddenly all agree xd 09:49 < ws-client> china virus 09:49 < ws-client> all egos 09:49 < ws-client> when do we create an open world 09:50 < ws-client> the planet too big 09:50 < bridge> hi chiller 09:50 < ws-client> coberfita 09:50 < bridge> I have lived in the U.S.A. my whole life, people who consciously involve themselves in politics to the point of legitimately hating China for that reason are the loud minority 09:50 < ws-client> poor david wants to talk about freeze stars and yall spam it away with china offtopic 09:51 < bridge> Freeze stars just use an older client 09:51 < bridge> Can’t have any improvements without someone complaining 09:51 < bridge> i dont understand why people want freeze stars so much 09:53 < ws-client> @Ewan i still doubt it tbh xd. When u'd ask ppl to say 1 good and one bad thing about google in europe. it's probably: i can search anything -- they steal my data xdd 09:54 < bridge> Same in U.S.A. 09:54 < bridge> I’m not pretending to know how it works in Europe because I’ve never been there 09:54 < ws-client> the mistrust against a different country is always bigger tho 09:54 < bridge> Why are you so sure we don’t care about privacy 09:55 < ws-client> Different country, different cultures, different laws 09:55 < ws-client> Why are guns allowed in USA? 09:55 < ws-client> it's obvious that they cause so much mass shootings 09:55 < bridge> The loud minorities 09:55 < ws-client> and still they seem to have the power 09:55 < ws-client> cant be that minor 09:57 < bridge> Many have been convinced that guns are necessary because even if they wouldn’t think they need it to ‘protect themselves’, here there is the prospect of the person you’re defending yourself against having a gun 09:58 < bridge> So now owning a gun they at a statistical advantage in this theoretical situation that doesn’t really happen often enough to matter as much as the gun-advocates say 09:58 < bridge> Screwed up situation 09:59 < bridge> I am personally anti-gun, most people I know are anti-gun, and even those that aren’t are rarely super into it. Doesn’t mean they wouldn’t want to have one “just in case” 10:00 < bridge> Gun control is partially about selling a lifestyle that aligns with existing right-wing views, and for most people who are pro-gun it’s no longer about whether having them is a good idea, it’s about protecting their bullshit rights out of principle 10:26 < bridge> ye 10:26 < bridge> kali linux 10:27 < bridge> why pfp 10:36 < bridge> Mhh, then i dunno. Can u try the version from the website? 10:40 < bridge> :justatest: 10:52 < bridge> are we hacking yet 🤓 10:53 < ws-client> ? 10:56 < bridge> ye it worked thanks 10:57 < bridge> little brother installed that shit idk 10:57 < bridge> were using windows 10:57 < bridge> :brownbear: 10:58 < bridge> It's great. U have a good brother 10:58 < bridge> yea my brother got hacks its not my fault 10:58 < bridge> no idea how i get my main games on this os 10:59 < bridge> I recently let my brother play this amazing game. But when I got home my account had been banned until February 21st. My brother said he didn't know why this happened. Until I found out he had installed a hacked version of Ddrace. I'm sorry for what happened, but please release my account again. I really like this game, and I didn't want to be without playing it for so long. I promise this will never happen again 10:59 < bridge> With steam most games should work actually 10:59 < bridge> haha 10:59 < bridge> some games are not in steam 10:59 < bridge> U can still add them there 11:00 < bridge> Add steam foreign games 11:00 < bridge> no idea what you mean 11:00 < bridge> add non steam game 11:01 < bridge> and then u can use proton 11:01 < bridge> but how i install them 11:01 < bridge> https://lutris.net/ 11:02 < bridge> you can run the file from ddnet linux folder as an executable too, at least on ubuntu based os 11:02 < bridge> thanks mate 11:02 < bridge> not speaking about ddnet haha 11:02 < bridge> Minecraft, league of legends 11:02 < bridge> minecraft is linux native 11:03 < bridge> league sucks, play dota 11:03 < bridge> as opposed to an ubuntu cringe os 11:03 < bridge> well i played some rounds dota2 but i feel more comfortable with lol 11:03 < bridge> :Sigh: 11:04 < bridge> So true 11:04 < bridge> chess still the best game 11:04 < bridge> magnus goat 11:04 < bridge> + 11:04 < bridge> i beat this magnus random dw 11:05 < bridge> i just noticed who in ur pfp is xd 11:05 < bridge> the madafucking top g 11:05 < bridge> Don't correct me 11:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113030737181016074/Screenshot_20230530-110635.jpg 11:06 < bridge> this guy? 11:07 < ws-client> the guy owned by mf legend greta 11:07 < bridge> xd 11:07 < bridge> why he uses anime girls 11:07 < bridge> she is from oshi no ko iirc 11:08 < bridge> is he a weeb 💀 11:08 < bridge> he's been posting a lot of pics with anime girls lmao 11:11 < bridge> he is a douche canoe 11:18 < bridge> adding this (in a way that works with the current system) would be okay in principle. we'd need someone to do this. Learath2 said he might do it in the far future 11:22 < bridge> You'll need to find a developer to implement it. I'm interested in adding an option for it, but I don't have time. The people who do have time aren't interested in using that time to bring back an old option for a handful of people 11:34 < bridge> @c0d3d3v was working on it months ago, but I dunno if he has a prototype or smth 11:38 < bridge> Integer overflow in brain. Man had so many women around he accidentally revirginized himself 11:44 < bridge> https://www.phoronix.com/news/Vulkan-1.3.251-Released 11:44 < bridge> @Jupeyy_Keks 11:44 < bridge> epic logo 11:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113040598514024459/vulkan.webp 11:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113040900944306306/Vulkan-1.3-White-BG-sml_.png 11:58 < bridge> sweet 12:04 < bridge> Hot 12:45 < bridge> i like valve 12:48 < bridge> i'm actually curious when big companies contributing to open standard, is it a executive decision or just some guy in a technical department thought it might be fun to work on 12:54 < bridge> @Learath2 so bad mlir is not const correct 12:54 < bridge> ```cpp 12:54 < bridge> /// Return the dialect registry associated with this context. 12:54 < bridge> const DialectRegistry &getDialectRegistry(); 12:54 < bridge> ``` 12:54 < bridge> this should be const 12:54 < bridge> `const DialectRegistry &getDialectRegistry() const;` 12:55 < bridge> ```cpp 12:55 < bridge> const DialectRegistry &MLIRContext::getDialectRegistry() { 12:55 < bridge> return impl->dialectsRegistry; 12:55 < bridge> } 12:55 < bridge> ``` 12:55 < bridge> the impl 13:01 < bridge> I'll pay you with free membership of my onlyfans, If you inplement it :justatest: 13:01 < bridge> @heinrich5991 @Learath2 @Nouaa @David*°Villa @deen Big sorry from my side. 13:01 < bridge> Originally my thought was to add the new design only if there is an option to return to the original design. But at that time it was decided together to force only the new design. Meanwhile I promised some players to implement such an option (e.g. AOE). But because so many things have happened (to me) and I was mentally not so well, I had no motivation to spend time to implement it. But if it's ok for everyone now I will try to implement the featur 13:02 < bridge> My only requirement from it is that it happens client side. Please don't just make it a serverside toggle 13:03 < bridge> Also no need to apologize. It's all volunteer work. If you feel like doing something, do it, if not don't. It's not your responsibility alone 13:03 < bridge> wb 13:04 < bridge> God send you. Thx ❤️ 13:04 < bridge> Don't stress yourself since it's volunteer Work. I'm just glad to know someone ist working on it 🙂 13:05 < bridge> Stars are currently only server side generated. But I can try my best to generate them client side. 13:06 < bridge> hope you're feeling better 13:10 < bridge> @Learath2 this is why rust is better 13:10 < bridge> const by default 13:11 < bridge> otherwise 13:11 < bridge> people forget 13:11 < bridge> even llvm devs 13:11 < bridge> im mad 13:11 < bridge> 13:16 < bridge> stars position only is sent by the server, the rest is client-side, even the stars movement (going out of the tee etc..) 13:17 < bridge> stars position & direction only is sent by the server, the rest is client-side, even the stars movement (going out of the tee etc..) 13:18 < bridge> league has its own wine version, but very fucking unstable 13:18 < bridge> ge-lol version x 13:19 < bridge> I want to start the local server, but it reports an error and flashes back 13:19 < bridge> why 13:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113064104236691527/image.png 13:19 < bridge> im noooooooooooooooooooooooob 13:28 < bridge> is that the full log? 13:56 < bridge> yes I know... thats what I meant. Thanks 13:59 < bridge> maybe?idk where the log is 13:59 < bridge> its terminal's last lines 14:00 < bridge> what is the whole log that gets displayed in terminal? 14:01 < bridge> there is no error in terminal,i connected to lan server and after 1second it just broke down 14:02 < bridge> this is the last lines 14:02 < bridge> wired 14:02 < bridge> it's probably the map then. But I am not sure since the info you provided is very limited ¯\_(ツ)_/¯ 14:04 < bridge> sorry for occupied your time and Thank you 14:05 < bridge> 😭 14:06 < bridge> failed to open 'myServerconfig.cfg' 14:06 < bridge> i find it 14:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113076043725676594/image.png 14:07 < bridge> i cant find myServerConfig.cfg 14:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113076277612662857/image.png 14:07 < bridge> lol 14:08 < bridge> @QBQAQ if you could copy the content of the logs directly & show, maybe it is just misconfigured but running 14:10 < bridge> but when i connect to my server, it just broke down in 1second 14:34 < bridge> my server currently sends points, not time, i did a little hack there. once time score is properly added (i think it is now?) i will migrate to it 14:37 < bridge> it is not 14:37 < bridge> now 14:37 < bridge> it is 14:38 < bridge> @fokkonaut send client `"client_score_kind": "time"` 14:45 < bridge> ah perfect 15:04 < bridge> https://github.com/salsa-rs/salsa 15:04 < ws-client> ryos 15:04 < ws-client> rustup cant download a file, even tho when i download over the URL it says manually it works 15:04 < ws-client> any idea? 15:06 < ws-client> The rust docs 15:07 < ws-client> maybe im out of disk :joy: 15:10 < bridge> wat 15:10 < bridge> xs 15:10 < ws-client> yeah yeah sad af 15:11 < ws-client> the rust doc uses >600 MB :joy: 15:12 < ws-client> the target dir of my project uses fckn 18 GBytes xd 15:12 < ws-client> wtf is it doing there xD 15:16 < ws-client> chillerdragon: when will u be a server hoster? 15:17 < ws-client> apparently 18gbyte build data is sane 15:19 < ws-client> i am a server hoster 15:19 < ws-client> $/month? 15:19 < ws-client> how much disk space 15:20 < ws-client> my pricing is a bit rigged 15:20 < ws-client> what do you need it for? 15:20 < ws-client> do you need ssh? 15:20 < ws-client> host some projects 15:20 < ws-client> i am not a vserver hoster 15:21 < ws-client> i can host you a single project if i like the project 15:21 < ws-client> or if you pay :D 15:21 < ws-client> xd 15:21 < ws-client> guess i'll need to use my homeserver, didnt know building in debug mode uses 18gbyte build data 15:21 < ws-client> and VPS on the internet only have like 20-40gb ssd 15:21 < ws-client> so this is kindof a problem 15:23 < bridge> @Jupeyy_Keks (JStar) I also regularely run `cargo clean` in my bigger projects to gain back 10GB of space which accumulates over time 15:23 < ws-client> thats why i run my minecraft server on a home server 15:23 < ws-client> my mc world uses 1.8tb 15:23 < ws-client> i did cargo clean, lets see how much the rebuild costs :D 15:23 < bridge> https://github.com/rochacbruno/rust_memes 15:23 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113095457602801734/safety_speed_conc.png 15:23 < ws-client> nice 16gb less xd 15:24 < bridge> @Learath2 i found my logo! 15:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113095540738097232/strikeforce.png 15:24 < bridge> JStar nice ^^ 15:25 < ws-client> does it happen bcs of package upgrades? 15:25 < ws-client> we really need pings dont we jupsti? 15:25 < bridge> your whole server is "a little hack" 15:25 < ws-client> ChillerDragon: i take every feature u have xd 15:25 < ws-client> xd 15:26 < bridge> always has been, but works better than many other mods :P 15:26 < bridge> its the small details u have to take care of 15:26 < bridge> antiping: 15:26 < bridge> antiping is to be expected not to work with custom weapons :D 15:28 < bridge> @fokkonaut btw i got tunelock onto a server and prediction is weird even with antiping off 15:28 < bridge> @fokkonaut btw i got tunelock onto an online server and prediction is weird even with antiping off 15:28 < bridge> (at least to me) 15:28 < bridge> Of course, the client doesnt know about it. 15:28 < bridge> Everyone with different tunes as you will look buggy 15:29 < bridge> no, if i have the tunelock MYSELF 15:29 < bridge> its still buggy 15:29 < bridge> in how far? 15:29 < bridge> did you move all of the code? 15:29 < bridge> wdym how far 15:29 < bridge> in how far is it buggy 15:30 < bridge> i.e. what is happening 15:30 < bridge> my tee moves at like 10 fps 15:30 < bridge> instead of normal 15:31 < bridge> which tunedid u set 15:31 < bridge> jupstar not gonna lie 15:31 < bridge> since u went to that chat 15:31 < bridge> its like i ignore ur messages 15:31 < bridge> ground_friction 1 15:31 < bridge> less visbility idk 15:31 < bridge> also i tend to do cargo clean every once in a while 15:32 < bridge> specially with nightly rust updates 15:32 < bridge> tbh idk if cargo itself deletes old artifacts 15:32 < bridge> and the big target build dir.. well thats what u get with static linking 15:32 < bridge> and lot of debug info 15:32 < bridge> then for some reason it didnt get updated correctly to your client. 15:32 < bridge> cant tell why right now, i dont even know how you set up the server, so if you remember, on my server it was working 15:34 < bridge> Window dragger has been made and I'm happy with this method, this way it doesn't need to update every frame, but only when it needs to update. :feelsbossman: 15:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113098049707851817/2023-05-30_15-32-12.mp4 15:34 < bridge> Next up is making different variations of windows and the console will be set up in no time 15:35 < ws-client> next level GUI 15:38 < bridge> jupstar 15:38 < bridge> do u think a programming language focused on making guis but compiled is feasible 15:38 < bridge> i wonder how that would look 15:38 < bridge> :justatest: 15:38 < bridge> perhaps 15:38 < bridge> godot is basically that 15:39 < bridge> @fokkonaut is there no tune lock dump command 15:39 < bridge> there is 15:40 < bridge> i dont remember if it was f-ddrace only or also in the pr tho 15:40 < bridge> oh 15:40 < bridge> found it 15:40 < bridge> nice 15:40 < bridge> It sucks, but it's possible. E.g. by using wasm and hot reload the module. Or by having something like a url that automatically calls the UI u working on. 15:40 < bridge> what about tune lock reset 15:40 < bridge> and leave 15:40 < bridge> Best would be a rust interpreter ^^ 15:40 < bridge> And later compile 15:41 < bridge> (not sure what tune lock leave would be used for but its a command for tunezones) 15:42 < bridge> meh 15:42 < bridge> i am making edlang 15:42 < bridge> but maybe wanted to make it more domain specific 15:43 < bridge> but idk an interesting domain 15:45 < bridge> yes, client-side would be good, so the server doesn't get more complex due to this 15:45 < bridge> @TsFreddie did u update the chinese community on using the ddnet wiki? i think it has way more content now https://wiki.ddnet.org/wiki/Main_Page/zh 15:46 < bridge> also there is a new chinese translator working a lot it seems 15:49 < bridge> i did 15:51 < bridge> @TsFreddie 谢谢 15:51 < bridge> :justatest: 15:51 < bridge> im chinese now 15:51 < bridge> https://github.com/TeeworldsCN/teeworlds.cn/commit/e491ddf9ae8cba590bf5b3c7cb1e964e77942124 15:51 < bridge> just did this for good mesure 15:53 < bridge> https://www.unison-lang.org/ 15:53 < bridge> i think it has meta programming capabilities 15:53 < bridge> lisp of the future? 15:54 < bridge> > Many dependency conflicts arise from definitions competing for the same names. Since Unison references code by hash instead of by name, an entire class of conflicts can be eliminated. 15:54 < bridge> nothing beats https://wy-lang.org/ 16:06 < bridge> I recently found this site https://exercism.org/ which has "courses" for many languages. Here's the one for unison https://exercism.org/tracks/unison 16:07 < bridge> no gdscript :kek: 16:07 < bridge> let's made one and teach them how to make an editor :toptri: 16:07 < bridge> let's make one and teach them how to make an editor :toptri: 16:07 < bridge> 😆 16:08 < bridge> some languages listed there are extension eh? 16:08 < bridge> looks good tbh 16:09 < bridge> https://github.com/exercism 16:16 < ws-client> jopsti u here? 16:22 < bridge> Hi 16:23 < ws-client> ah nice 16:23 < ws-client> go reload webchat 16:23 < ws-client> user is already logged in 16:23 < ws-client> xd 16:23 < ws-client> classic 16:23 < ws-client> wait a second 16:24 < ws-client> btw it now sets a 30day cookie with last login name 16:24 < ws-client> auto highlights the input field 16:24 < ws-client> epic 16:24 < ws-client> so next time it shoould just be open url press enter and u in 16:24 < ws-client> oh @JStar2 and pings 16:24 < ws-client> also this works JStar2 16:24 < ws-client> i hope xd 16:25 < ws-client> lol, nice xD 16:25 < ws-client> pog 16:25 < bridge> @Jupeyy_Keks 16:25 < ws-client> ?xd 16:25 < ws-client> mhh i see, i need to use my dc name then 16:25 < ws-client> yes 16:25 < ws-client> this should ping @Jupstar ✪ 16:26 < ws-client> i mean Jupeyy_Keks 16:26 < ws-client> who dis 16:26 < ws-client> else im not pinged 16:26 < ws-client> its my "real" discord tag 16:26 < ws-client> wait so @Jupstar ✪ never pinged u? 16:26 < ws-client> it does 16:26 < ws-client> but? 16:26 < ws-client> bcs on ddnet server i have nickname 16:26 < ws-client> a 16:26 < ws-client> but if smn pings me on discord, it says Jupeyy_Keks 16:26 < ws-client> i see 16:30 < bridge> anooother game crash 16:30 < bridge> U the alt tab guy? 16:30 < bridge> I already told u simply use opengl 16:31 < bridge> i should just deete steam 16:31 < bridge> i should just delete steam 16:31 < bridge> Is it BCS of steam or what? 16:31 < bridge> Blame GPU manufacturer for not giving life time driver support. Xd 16:32 < bridge> doesnt happen if i dont use steam or if i dont use opengl as far as i know 16:33 < bridge> Rip to u, but simply use opengl 3.3 16:33 < bridge> With ur setup u probably don't care about more fps do u? 16:34 < bridge> i sent this at work, someone replied with this https://nas.sr/%D9%82%D9%84%D8%A8/ 16:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113113257352364162/repl.png 16:35 < bridge> epic 16:35 < bridge> https://en.wikipedia.org/wiki/Qalb_(programming_language) 16:36 < bridge> But it was no assert right? 16:36 < bridge> i get 30 fps if i open the scoreboard in a full server with opengl 16:37 < bridge> That's as much as any switch game 😂 16:37 < bridge> switch sux 16:38 < bridge> Mh i dunno bro. Just be mainstream and buy new hardware to enjoy the epicness of hightech 16:39 < bridge> i am broke 16:39 < bridge> Sell your liver 16:39 < bridge> Kidneys 16:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113114586862862346/image.png 16:40 < bridge> i mean i can post one 16:40 < bridge> I mean send me the latest one 16:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113114738998648892/DDNet_win64-steam_crash_log_2023-05-30_15-33-13_11152_8049f74bad64b7281da0e7f824d115e3a9238c2f.RTP 16:40 < bridge> But i probably can't help u tbh 16:40 < bridge> Alt tab crashes are weird 16:41 < bridge> No assert logs right? 16:41 < bridge> nope 16:41 < bridge> Ok ;/ 16:43 < ws-client> i added desktop notifcations lemme know if it works on your browser jopsti 16:43 < ws-client> they optional and opt in with da big bell 16:44 < bridge> @fokkonaut lmao 16:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113115669987348580/DDNet_Client_2023-05-30_16-43-04.mp4 16:45 < ws-client> i dont see them chiller 16:46 < ws-client> but i dont like them anyway ;) 16:47 < ws-client> ok good 16:47 < ws-client> but which browser do you use? which version? 16:47 < ws-client> u on debian? xd 16:48 < ws-client> firefox dev edition: 114.0b9 (64-Bit) 16:48 < ws-client> @ChillerDragon pinger 16:48 < bridge> pinger 16:48 < ws-client> ! 16:48 < ws-client> if you click the bell nothing happens? @JStar3 16:48 < ws-client> what bell :joy: 16:49 < ws-client> reload page 16:49 < ws-client> i did 16:49 < ws-client> under ddnet sever logo 16:49 < ws-client> ah troll 16:49 < ws-client> https://zillyhuhn.com/cs/.1685458150.png 16:49 < ws-client> black on black 16:49 < ws-client> huge troll 16:49 < ws-client> how is this hidden? xd 16:49 < ws-client> yeah ok 16:49 < bridge> dm me this 16:49 < ws-client> now tab out 16:49 < ws-client> i have monitor brightness low 16:49 < ws-client> @JStar get pinged 16:49 < ws-client> u only get notification when tabbed out of browser tab 16:50 < ws-client> @JStar @JStar @JStar @JStar 16:50 < ws-client> @JStar @JStar 16:50 < ws-client> @JStar @JStar 16:50 < ws-client> @JStar @JStar 16:50 < ws-client> thanks 16:50 < ws-client> does it worek?xd 16:50 < ws-client> wait 16:50 < ws-client> JStar 16:50 < ws-client> oh i saw the url 16:50 < ws-client> Jstar 16:50 < ws-client> JStar 16:50 < ws-client> i dunno 16:50 < ws-client> u cant ping ur self 16:50 < ws-client> u have to be tabbed out 16:50 < ws-client> write a text maybe 16:50 < ws-client> @JStar switch tab ffs 16:50 < bridge> JStar 16:50 < ws-client> JStar 16:50 < ws-client> JStar 16:50 < ws-client> yeah 16:50 < bridge> spam 16:50 < ws-client> worked? 16:50 < bridge> spam 16:50 < ws-client> works 16:51 < ws-client> nice pog 16:51 < ws-client> :justatest: 16:51 < ws-client> gg 16:51 < ws-client> fuck what happend to mr justatest 16:51 < bridge> the emoji doesnt work anyway 16:51 < ws-client> what spam TsFreddie? 16:51 < bridge> :justatest: 16:51 < ws-client> it's science 16:51 < bridge> u all 16:51 < ws-client> applied science 16:51 < bridge> worse ham 16:51 < ws-client> why do the images not show omg 16:52 < bridge> reply parser when 16:52 < bridge> this one looks like it has to do with the Steam overlay 16:52 < bridge> ``` 16:52 < bridge> amdvlk64.dll!vk_icdNegotiateLoaderICDInterfaceVersion+0x2f07a 16:52 < bridge> SteamOverlayVulkanLayer64.dll!vkGetSwapchainImagesKHR+0x42e 16:52 < bridge> graphics-hook64.dll!dummy_debug_proc+0x86c7 16:52 < bridge> vulkan-1.dll!vkDestroyDescriptorPool+0x47d1d 16:52 < bridge> ``` 16:52 < ws-client> reply is the worst 16:52 < bridge> Mh but he is the only person I know having this 16:52 < bridge> And he had ancient hardware 16:52 < ws-client> fix your ``` code block parser btw 16:53 < ws-client> true 16:53 < ws-client> fix your triple ` code block parser btw 16:53 < ws-client> but irc has no multiline 16:54 < ws-client> omg i sat all day waiting for delivery guy didnt leave da flat for 1s and now i got a email saying i wasnt there 16:54 < ws-client> u kidding me!? 16:54 < bridge> @cyberfighter but there u have it. Disable steam overlay 16:54 < bridge> Great that all these graphic hooks never cause problems😂😂😂 16:54 < ws-client> @TsFreddie ye its on todo first i gotta build fake mulitline messages on top of irc xd 16:54 < bridge> I found this old post relating to that dll: https://www.reddit.com/r/vulkan/comments/91r967/update_your_drivers_if_vkcreateswapchainkhr/e30xrgb/ 16:55 < ws-client> yeah, but sadly he has no update i think 16:55 < ws-client> and since it says amdvlk, its probs amd 16:55 < bridge> ChillerDragon 16:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113118571481010176/OIG.png 16:55 < ws-client> my emotes gone :c urs too? :pepeH: 16:56 < ws-client> lmao TsFreddie 16:56 < bridge> Not only would be good. I wouldn't really even consider merging a serverside fix for this 16:56 < bridge> @heinrich5991 i have a question and since u may have xp with cxx, how do u represent a method that returns a reference to something? 16:56 < bridge> for example my context (cpp class) has a method: `const DialectRegistry &getDialectRegistry();` 16:56 < bridge> how do i replicate this on rust, lifetime and all 16:56 < bridge> well i ask if u know any hints otherwise ill figure it eventually xd 16:57 < bridge> i figured that i can have a DialectRegistry & in rust directly, what i cant have is the DialectRegistry directly 16:57 < bridge> well idk if thats correct anyway 16:57 < bridge> I'd guess just `fn getDialectRegistry() -> &DialectRegistry` 16:58 < bridge> i guess 16:58 < bridge> i gotta abstract this, cuz u can also have a owned dialect registry 16:58 < bridge> ```rust 16:58 < bridge> pub struct DialectRegistry { 16:58 < bridge> pub(crate) ptr: UniquePtr, 16:58 < bridge> } 16:58 < bridge> ``` 16:58 < bridge> maybe i should have a hidden inner registry that is an enum 16:58 < bridge> owned and borrowed? 16:59 < bridge> Do you really need the distinction anywhere? 16:59 < bridge> @Learath2 i mean 17:00 < bridge> in rust i should be able to make a dialect registry that i own 17:00 < bridge> and i should also be able to call context.getdialectregistry() 17:00 < bridge> that returns a borrowed one no? 17:00 < bridge> or should i simply copy it 17:00 < bridge> xd 17:00 < bridge> yes, I worded it incorrectly 17:02 < bridge> I would leak the distinction between `UniquePtr` and `&DialectRegistry` to the caller 17:02 < bridge> i.e. not wrap it 17:02 < bridge> i see 17:03 < bridge> but i dont want to duplicate code 17:03 < bridge> maybe i should make a trait 17:03 < bridge> (DialectRegistry has methods) 17:03 < bridge> if you implement it on `DialectRegistry`, it should work with `UniquePtr` and `&DialectRegistry` 17:03 < bridge> hm 17:04 < bridge> `&self` methods, at least 17:04 < bridge> but i wanted to hide DialectRegistry from the ffi itself 17:04 < bridge> i mean i have my own struct DialectRegistry that wraps the ffi related structure 17:04 < bridge> inside 17:04 < bridge> I see 17:04 < bridge> (i kinda wanna make a safe interface) 17:04 < bridge> yes, newtyping stuff like that doesn't work well in rust 17:05 < bridge> cxx is supposed to be safe already(?) 17:05 < bridge> yeah it is 17:05 < bridge> (if u made it correct) 17:05 < bridge> but i want to make a safe and rusty interface 17:06 < bridge> ok 17:06 < bridge> i think i rly need to hide this 17:06 < bridge> maybe i can just use a pointer? 17:06 < bridge> it would work for ref and unique ptr 17:07 < bridge> Hm, I don't quite get why you'd want a distinction between the two. Don't you need to call into C++ to create an ownerd DialectRegistry? That would return a UniquePtr and the const reference stuff would be through a immutable borrow 17:07 < bridge> `*mut` you mean? 17:07 < bridge> ye 17:07 < bridge> dunno if you can go from `*mut` to `UniquePtr` 17:07 < bridge> it just crashed again but i turned off overlay in steam 17:07 < bridge> at least thats what its saying 17:07 < bridge> ```rust 17:07 < bridge> std::unique_ptr context_new() 17:07 < bridge> { 17:07 < bridge> return std::make_unique(); 17:07 < bridge> } 17:07 < bridge> 17:07 < bridge> const DialectRegistry& context_get_dialect_registry(const MLIRContext &context) 17:07 < bridge> { 17:07 < bridge> auto& reg = const_cast(context).getDialectRegistry(); 17:07 < bridge> return reg; 17:07 < bridge> } 17:07 < bridge> 17:07 < bridge> std::unique_ptr dialect_registry_new() 17:08 < bridge> { 17:08 < bridge> return std::make_unique(); 17:08 < bridge> } 17:08 < bridge> ``` 17:08 < bridge> i want to model this 17:08 < bridge> and take advante of lifetimes and ownership in rust ofc 17:08 < bridge> Do you have some crashdumps? 17:08 < bridge> Or do the jupstar advice, get a 4090 17:08 < bridge> (the const_cast is needed there, trust me on this) 17:08 < bridge> but you already have it, with `UniquePtr` and `&` 17:08 < ws-client> jupsti good life advisor 17:08 < bridge> (I sort of doubt it, but I'll try to trust you on that one) 17:08 < bridge> the const-cast doesn't look needed there, now that you mention it 😄 17:09 < bridge> the dump looks the same as before 17:09 < bridge> i.e. why is the method not taking `const this`? 17:09 < bridge> but i turned it off, wut 17:09 < bridge> i checked the llvm code, the have simple get method not marked const (they probs forgot) so i dont want to make the method on the rust side take &self mut, so i used const cast on the cpp side 17:09 < bridge> getDialectRegistry() is not const 17:09 < bridge> but it should be 17:10 < bridge> I see 17:10 < bridge> my rant 17:10 < bridge> Steamovertroll 17:10 < bridge> Well you don't even need a cast then, no? You can just do `const auto &` 17:10 < bridge> you do need the cast for `this` 17:11 < bridge> this being mlircontext 17:11 < bridge> right? 17:11 < bridge> ye 17:11 < bridge> im lost 17:11 < bridge> Ah, I misread that on the phone. Yeah I see 17:11 < bridge> what do u mean here 17:11 < bridge> Dont mind me. I thought you needed the return to be const but was okay with taking an &mut 17:12 < bridge> llvm literally doesnt use const for methods 17:12 < bridge> insane people kek 17:12 < bridge> it's just a hint, in C++ 17:12 < bridge> I can see why they do it ^^ 17:12 < bridge> a hint to the programmer 17:12 < bridge> It's still good to mark const things const 17:12 < bridge> yeah but cxx passes it as const for & in rust 17:12 < bridge> ye 17:21 < bridge> Btw idk if you can somehow end up with an actually const context that cast is ub. Don't know if possible 17:25 < bridge> well i control how the context is made 17:25 < bridge> (the new function) 17:25 < bridge> and its not const 17:25 < bridge> is that it? 17:25 < bridge> xd 17:28 < bridge> i think i got something 17:28 < bridge> i made my own ptr wrapper 17:28 < bridge> ```rust 17:28 < bridge> pub(crate) enum FFIPtr<'a, T> 17:28 < bridge> where 17:28 < bridge> T: UniquePtrTarget, 17:28 < bridge> { 17:28 < bridge> Owned(UniquePtr), 17:28 < bridge> Borrowed(&'a T), 17:28 < bridge> } 17:28 < bridge> 17:28 < bridge> impl<'a, T> FFIPtr<'a, T> 17:28 < bridge> where 17:28 < bridge> T: UniquePtrTarget, 17:28 < bridge> { 17:28 < bridge> pub fn pin_mut(&mut self) -> Pin<&mut T> { 17:28 < bridge> match self { 17:28 < bridge> FFIPtr::Owned(x) => x.pin_mut(), 17:28 < bridge> FFIPtr::Borrowed(_) => todo!(), 17:28 < bridge> } 17:28 < bridge> } 17:28 < bridge> } 17:28 < bridge> 17:28 < bridge> impl<'a, T> AsRef for FFIPtr<'a, T> where T: UniquePtrTarget { 17:28 < bridge> fn as_ref(&self) -> &T { 17:28 < bridge> match self { 17:28 < bridge> FFIPtr::Owned(x) => x, 17:28 < bridge> FFIPtr::Borrowed(x) => x, 17:28 < bridge> } 17:29 < bridge> } 17:29 < bridge> } 17:29 < bridge> ``` 17:29 < bridge> ok 17:29 < bridge> i forgot i ahd the todo 17:29 < bridge> xd 17:30 < bridge> wtf is 'a, T 17:33 < bridge> lifetime, generics 17:34 < bridge> @Voxel hi 17:35 < bridge> hi 17:47 < bridge> meh im lost 17:56 < bridge> isnt this like the 128371283712th time this happened to this server 17:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113133955567321089/screenshot_2023-05-30_17-56-22.png 17:58 < bridge> at least he made rainbow colors for the tees 17:59 < bridge> it happens quite often tho, that's right 17:59 < bridge> but heinrich is aware 17:59 < bridge> rgb flood 18:00 < bridge> gay flood 18:00 < bridge> it's ogay 18:00 < bridge> he is it even called DDNet Turkey 18:01 < bridge> that sounds not allowed 18:01 < bridge> why is it even called DDNet Turkey 18:01 < bridge> DDOS GUARD 18:01 < bridge> it's a guard for ddosers 19:38 < bridge> he doesn’t know T :feelsbadman: 19:43 < bridge> do u know when u enter a spiral of stuff 19:43 < bridge> and u find more and more wrong stuff 19:43 < bridge> which u can possibly do but ur blinded by stress or smth 19:43 < bridge> that was my day 19:44 < bridge> sad 19:44 < bridge> what wrong stuff 19:44 < bridge> the cxx stuff 19:44 < bridge> xd 19:44 < bridge> i wish llvm was made in rust 19:45 < bridge> millions of lines wasted on cpp 19:45 < bridge> but man, if u do a c api, make it complete 19:45 < bridge> smh 19:47 < bridge> i think you should do it then 19:47 < bridge> DDNet Turkey DDOS GUARD Not Official - Novice ARX3000 19:47 < bridge> Address: ddnet://185.72.9.253:8303 19:47 < bridge> 19:47 < bridge> Why is this server not banned yet? 19:47 < bridge> They have fake player stats & probably grabbing IPs? 19:47 < bridge> idk what u r writing ffi for 19:48 < bridge> i can't make sense of ur ptr :feelsbadman: 19:49 < bridge> ngl i would if im paid 19:49 < bridge> otherwise i couldnt do it 19:49 < bridge> cuz its too much time i dont have 19:50 < bridge> what pyr 19:50 < bridge> ptr 19:50 < bridge> ur wrapper 19:50 < bridge> what u dont get 19:50 < bridge> rust things 19:50 < bridge> ```rs 19:50 < bridge> impl<'a, T> AsRef for FFIPtr<'a, T> where T: UniquePtrTarget { 19:50 < bridge> fn as_ref(&self) -> &T { 19:50 < bridge> match self { 19:50 < bridge> FFIPtr::Owned(x) => x, 19:50 < bridge> FFIPtr::Borrowed(x) => x, 19:50 < bridge> } 19:50 < bridge> } 19:50 < bridge> } 19:50 < bridge> ``` 19:51 < bridge> ```rs 19:51 < bridge> impl<'a, T> AsRef for FFIPtr<'a, T> where T: UniquePtrTarget { // concept/constraint? 19:51 < bridge> fn as_ref(&self) -> &T { // return type? 19:51 < bridge> match self { // idk 19:51 < bridge> FFIPtr::Owned(x) => x, 19:51 < bridge> FFIPtr::Borrowed(x) => x, 19:51 < bridge> } 19:51 < bridge> } 19:51 < bridge> } 19:51 < bridge> ``` 19:51 < bridge> yeah 19:51 < bridge> what u call concept 19:51 < bridge> its trait bounds in rust 19:52 < bridge> self = FFIPtr 19:52 < bridge> match is cuz self is a enum 19:52 < bridge> so i do stuff based on what variant it is 19:52 < bridge> on Owned its a uniqueptr 19:52 < bridge> which has a deref impl to &T 19:52 < bridge> so it worjs 19:52 < bridge> works 19:53 < bridge> on borrowed its already &T 19:53 < bridge> @Ewan Green got it? xd 19:53 < bridge> rust has pattern matching, a feature modern langs have, and if a new lang doesnt have, its pretty bad, cuz its one of the best new things 19:54 < bridge> algebraic data types should always be first class 19:54 < bridge> what is the `'a` in the template 19:54 < bridge> the lifetime 19:54 < bridge> of the reference 19:54 < bridge> oh nice 19:54 < bridge> the reference needs to outlive 'a 19:55 < bridge> @Ewan Green a more sane and that works correctly is Cow<'a T> 19:55 < bridge> @Ewan Green a more sane and that works correctly is Cow<'a, T> 19:55 < bridge> hello 19:55 < bridge> this is a clone on write smart pointer 19:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113163842348920952/image.png 19:55 < bridge> wanna help please 19:55 < bridge> https://doc.rust-lang.org/std/borrow/enum.Cow.html 19:55 < bridge> learn 19:55 < bridge> you need visual studio 19:56 < bridge> cant compile for unknown reason 19:56 < bridge> i have one 19:56 < bridge> which one 19:56 < bridge> 🧠 19:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113164053569863710/image.png 19:56 < bridge> see 19:56 < bridge> 🇹🇭 19:56 < bridge> 👍 19:57 < bridge> CMake Error at CMakeLists.txt:42 (project): 19:57 < bridge> Generator 19:57 < bridge> 19:57 < bridge> Visual Studio 17 2022 19:57 < bridge> 19:57 < bridge> could not find any instance of Visual Studio. 19:57 < bridge> 19:57 < bridge> 19:57 < bridge> 19:57 < bridge> Configuring incomplete, errors occurred! 19:57 < bridge> if it's not in `C:\Program Files` or whatever its default location is, cmake can't find it 19:57 < bridge> speaking from experience 19:58 < bridge> you mean the visual studio code? 19:58 < bridge> or the source 19:58 < bridge> the program 19:58 < bridge> cmake? 19:58 < bridge> no, visual studio 19:58 < bridge> :justatest: 19:58 < bridge> okay wait 19:59 < bridge> does std::borrow define any other animals 19:59 < bridge> C:\ProgramData\Microsoft\Windows\Start Menu\Programs 19:59 < bridge> this is visual studio path 19:59 < bridge> that's where the shortcut is 19:59 < bridge> not the app 19:59 < bridge> ew 19:59 < bridge> mb 19:59 < bridge> C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE 19:59 < bridge> this one? 19:59 < bridge> yeah 19:59 < bridge> weird 20:00 < bridge> :think_bot: 20:00 < bridge> maybe the problem in the cmake app itself? 20:00 < bridge> what xd 20:00 < bridge> copy on write = beloved bovine 20:00 < bridge> ah xd 20:01 < bridge> lol, first time i received a job proposition on linkedin with my outdated profile 20:01 < bridge> was located in Cork, Ireland 20:02 < bridge> sux but this is a google question 20:02 < bridge> cmake works by using module scripts to find components 20:02 < bridge> nah it's chatgpt question 20:02 < bridge> if it's broken it's on a lower level 20:02 < bridge> than just the app 20:02 < bridge> ```rust 20:02 < bridge> use std::borrow::Cow 20:02 < bridge> struct Items<'a, X: 'a> where [X]: ToOwned> { 20:02 < bridge> values: Cow<'a, [X]>, 20:02 < bridge> } 20:02 < bridge> 20:02 < bridge> impl<'a, X: Clone + 'a> Items<'a, X> where [X]: ToOwned> { 20:02 < bridge> fn new(v: Cow<'a, [X]>) -> Self { 20:02 < bridge> Items { values: v } 20:02 < bridge> } 20:03 < bridge> } 20:03 < bridge> 20:03 < bridge> ``` 20:03 < bridge> with this items can hold both a vec and array 20:04 < bridge> innit 20:04 < bridge> seeing generics so tightly integrated with actual data is a little confusing 20:04 < bridge> in cpp they are just slapped on as an afterthought 20:04 < bridge> ye bad cpp 20:05 < bridge> in rust u can be generic over types 20:05 < bridge> and over lifetimes iirc 20:05 < bridge> higher kindes types are possible too 20:05 < bridge> metro internet slow 20:05 < bridge> could be Apple, i saw they have European hq there 20:06 < bridge> ```rust 20:06 < bridge> struct Closure { 20:06 < bridge> data: (u8, u16), 20:06 < bridge> func: F, 20:06 < bridge> } 20:06 < bridge> 20:06 < bridge> impl Closure 20:07 < bridge> where for<'a> F: Fn(&'a (u8, u16)) -> &'a u8, 20:07 < bridge> { 20:07 < bridge> fn call(&self) -> &u8 { 20:07 < bridge> (self.func)(&self.data) 20:07 < bridge> } 20:07 < bridge> } 20:07 < bridge> 20:07 < bridge> fn do_it(data: &(u8, u16)) -> &u8 { &data.0 } 20:07 < bridge> 20:07 < bridge> fn main() { 20:07 < bridge> let clo = Closure { data: (0, 1), func: do_it }; 20:07 < bridge> println!("{}", clo.call()); 20:07 < bridge> } 20:07 < bridge> ``` 20:07 < bridge> @Ewan Green kinda more advanced rust 20:07 < bridge> https://doc.rust-lang.org/nomicon/hrtb.html 20:07 < bridge> >_> 20:07 < bridge> i'm still trying to digest ur ptr impl lol 20:07 < bridge> syntax is WTF 20:10 < bridge> xd 20:11 < bridge> ```rs 20:11 < bridge> impl<'a, T> AsRef // define lifetime and to hold T as a reference 20:11 < bridge> for FFIPtr<'a, T> // when (how is it accessed?) 20:11 < bridge> where T: UniquePtrTarget { // trait bounds 20:11 < bridge> fn as_ref(&self) -> &T { // return type 20:11 < bridge> match self { // lookup self from FFIPtr enum, idk what it does with it 20:11 < bridge> FFIPtr::Owned(x) => x, 20:11 < bridge> FFIPtr::Borrowed(x) => x, 20:11 < bridge> } 20:11 < bridge> } 20:11 < bridge> } 20:11 < bridge> ``` 20:11 < bridge> closer? 20:11 < bridge> no 20:11 < bridge> fuck 20:11 < bridge> AsRef 20:12 < bridge> is a trait 20:12 < bridge> we are implementing this trait for our type 20:12 < bridge> oh 20:12 < bridge> ohhh this is the reference operator? 20:12 < bridge> for a given lifetime 'a 20:12 < bridge> no 20:12 < bridge> its a trait used by smart pointers 20:12 < bridge> Box for example 20:13 < bridge> it is akin to unique_ptr 20:13 < bridge> i hate mobile 20:13 < bridge> i type so slow 20:14 < bridge> :kek: 20:14 < bridge> https://doc.rust-lang.org/std/convert/trait.AsRef.html 20:14 < bridge> @Ewan Green 20:14 < bridge> interesting 20:15 < bridge> anyway its to get &T out of our type 20:15 < bridge> which is generic over T 20:15 < bridge> traits define shared behavior 20:16 < bridge> its like a interface but better 20:16 < bridge> yea if it was interface you'd implement for owned and borrowed separately? 20:16 < bridge> in rust u only have structs, enums, arrays 20:16 < bridge> and one is already ref so u just return that, other is something else so u do something else 20:16 < bridge> i forgot 20:17 < bridge> technically this doesn't sound like an issue but convention would be hard to pick up lol 20:17 < bridge> well the as_ref method is to avoid code repetition 20:17 < bridge> otherwise i gotta do the match manually 20:17 < bridge> everywhere i wanna exctract the enum inner data 20:17 < bridge> enums in rust can hold data 20:17 < bridge> like structs 20:17 < bridge> each variant 20:17 < bridge> wh 20:18 < bridge> algebraic data types at work 20:18 < bridge> can they just hold any variant data instead of int, or are u saying they're not constant 20:18 < bridge> can they just hold any variant data instead of integers, or are u saying they're not constant 20:18 < bridge> they are staticslly typed 20:18 < bridge> whats constant is the variant identifier 20:18 < bridge> enum something : string { 20:18 < bridge> value = "test", 20:18 < bridge> }; 20:18 < bridge> the value inside can be anything within the domain of that value 20:18 < bridge> ? 20:18 < bridge> oic 20:19 < bridge> how do u define domain for that, 20:19 < bridge> Result in rust is a enum 20:19 < bridge> ```rust 20:19 < bridge> pub enum Result { 20:19 < bridge> Ok(T), 20:19 < bridge> Err(E), 20:19 < bridge> } 20:19 < bridge> ``` 20:19 < bridge> whathever type T is 20:19 < bridge> xz 20:19 < bridge> nice 20:20 < bridge> rust enums are cpp tagged unions 20:20 < bridge> but super powered 20:20 < bridge> and safe 20:20 < bridge> lightning fast 20:20 < bridge> nice 20:20 < bridge> fearless concurrnecy 20:20 < bridge> sry i got the urge to say buzzwords 20:20 < bridge> kek 20:21 < bridge> u should learn rust 20:21 < bridge> yes i should 20:21 < bridge> i have the tutorial tab open somewhere 20:21 < bridge> https://github.com/nrc/r4cppp 20:22 < bridge> nice 20:23 < bridge> `If you are using C or C++, it is probably because you have to - ` 20:23 < bridge> wow bad take right off the bat 20:24 < bridge> this is like "i know you hate cpp, i sure do, here's why rust is better" 20:24 < bridge> no its a good take 20:24 < bridge> xx 20:24 < bridge> it really isnt 20:24 < bridge> isnt what 20:24 < bridge> a good take 20:25 < bridge> yeah it's just a weird assumption from a strictly safety/performance perspective 20:25 < bridge> they did not consider that some people might like it... 20:26 < bridge> it sounds like they're talking to someone who picked up cpp as a 3rd or 4th language after using other higher level langs 20:26 < bridge> what 20:26 < bridge> thats ur assumption tho xd 20:27 < bridge> anyway dont focus on tgat 20:27 < bridge> that 20:27 < bridge> yea 20:27 < bridge> xd 20:27 < bridge> what env do u use for rust 20:28 < bridge> ??????????????? 20:28 < bridge> my game just crashed by changing the resolution 20:28 < bridge> oh i got an assert log 20:28 < bridge> spill the tea sister 20:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113172394677379142/DDNet_win64-steam_crash_log_2023-05-30_17-09-54_8020_8049f74bad64b7281da0e7f824d115e3a9238c2f.RTP 20:31 < bridge> oh boy gibberish 😃 20:31 < bridge> assert log pls 20:32 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113173050452611172/DDNet_assert_log_2023-05-30_20-28-06_8020.txt 20:32 < bridge> ok come on discord you didnt have to leak my binds 20:32 < bridge> idk how text containers work but is it trying to free a texture without releasing? 20:32 < bridge> you dont use L to jump?? 20:32 < bridge> can u remember where the client was 20:33 < bridge> before u did alt tab 20:33 < bridge> i didnt even alt tab 20:33 < bridge> i changed resolution 20:33 < bridge> and thats when it crashed 20:33 < bridge> were u ingame? 20:33 < bridge> yes 20:33 < bridge> send demo 20:33 < bridge> is yaR0$ a user u know? 20:33 < bridge> no 20:33 < bridge> when was it? 20:33 < bridge> are we not gonna talk about `/home/deen/isos/ddnet/` 20:33 < bridge> when was what 20:34 < bridge> the crash 20:34 < bridge> did it just happened 20:34 < bridge> sadly i can't find a user named `yaR0$` online 20:34 < bridge> 8 minutes ago 20:34 < bridge> mh 20:34 < bridge> what server? 20:34 < bridge> i was in a lan server 20:34 < bridge> oh 20:34 < bridge> where the fuck does `yaR0$` come from then xd 20:35 < bridge> @Robyt3 maybe server browser? 20:35 < bridge> read above 20:35 < bridge> interesting xd 20:35 < bridge> this game just hates me for real 20:35 < bridge> in this case its not your fault 20:35 < bridge> it's a bug that haunts us long time 20:38 < bridge> it's interesting, that it is still hard to reproduce xd 20:40 < bridge> neovim or vscode 20:40 < bridge> rust-analyzer 20:41 < bridge> also i changed resolution cuz i wanted to record a video of this issue 20:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113175353146474526/image.png 20:41 < bridge> but then it fixed after the crash 20:41 < bridge> lol 20:41 < bridge> but then it fixed itself after the crash 20:41 < bridge> vscode bleh 20:42 < bridge> when qt creator integration ☹️ 20:42 < bridge> it has nim already... 20:42 < bridge> wait i found the bug 20:42 < bridge> actually idk if its a bug 20:42 < bridge> HYPE 20:43 < bridge> UNHYPE 20:43 < bridge> setting "show info" on doesnt let you right click the green dots 20:44 < bridge> is that a bug???? or just some goofy as hell feature 20:44 < bridge> what is show info 20:44 < bridge> shows the numbers of tiles placed 20:45 < bridge> ah editor, wtf even happened to the editor xD 20:45 < bridge> looks completely different 20:45 < bridge> i like it more honestly 20:46 < bridge> what green dots? 20:46 < bridge> uh 20:46 < bridge> anchor points? 20:46 < bridge> for quads 20:46 < bridge> ah 20:46 < bridge> for me it works 20:46 < bridge> but im on nightly 20:47 < bridge> what version 20:48 < bridge> oh wait nightly nvm lol 20:48 < bridge> im on 17.0.2 but it happened to me since 17.0 rc (and earlier i think?) 20:48 < bridge> im on 17.0.2 but it happened to me since 17.0.something rc (and earlier i think?) 20:58 < bridge> seeing rust println format syntax just makes me wish std::format was real 20:59 < bridge> still rly using sprintf or +/+= w. std strings to do this kind of stuff 21:02 < bridge> why dont u use string streams 21:02 < bridge> they are the most efficient ones 21:05 < bridge> arent they bad tho 21:05 < bridge> streams are fine i guess but i don't like streams because they are misleading 21:05 < bridge> they always copy 21:05 < bridge> well operator overloading like that is evil 21:05 < bridge> and the std does it 21:05 < bridge> its ugly af 21:06 < bridge> if ur refering to cout 21:06 < bridge> and cin 21:06 < bridge> no 21:06 < bridge> fstreams also have an intermediate buffer on top of the source 21:06 < bridge> source buffer -> intermediate buffer -> file 21:06 < bridge> bad if streaming big stuff 21:06 < bridge> rust streaming is rly nice 21:06 < bridge> https://edgarluque.com/blog/zstd-streaming-in-rust/ 21:07 < bridge> caption 10/10 21:07 < bridge> also in rust its not buffered by default , u need to wrap around a bufwriter 21:07 < bridge> nice 21:07 < bridge> @Jupeyy_Keks @cyberfighter "Show info" has a more hidden feature when selecting quad layers: it shows a separate pivot point for the envelope points associated with it so you can more easily position quads for animations. You can't select multiple of those points at the same time. Maybe there are other bugs though, because this feature is so well hidden and therefore not tested at lot. 21:11 < bridge> ah 21:12 < bridge> also i'm not sure if 21:12 < bridge> ```cpp 21:12 < bridge> std::stringstream ss; 21:12 < bridge> ss << "Today is " << month << " " << day << ", " << year << " and it is " << hour << ":" << minute << "."; 21:12 < bridge> ``` 21:12 < bridge> is as efficient as 21:12 < bridge> ```cpp 21:12 < bridge> std::string str = std::format( 21:12 < bridge> "Today is {} {}, {} and it is {}:{}.", month, day, year, hour, minute); 21:12 < bridge> ``` 21:12 < bridge> because i believe std::format still utilizes the stack like c formats 21:12 < bridge> it's more efficient 21:12 < bridge> not as efficient 21:13 < bridge> it's not a consteval as far as i see 21:13 < bridge> so it has to parse the format string 21:14 < bridge> printf is not consteval either 21:14 < bridge> yes 21:14 < bridge> so it's slow xd 21:15 < bridge> is acceleration on with new SDL version? 21:15 < bridge> no 21:15 < bridge> zzz 21:15 < bridge> it's gone 21:15 < bridge> @Ewan Green theorically std::format is faster than printf 21:15 < bridge> because it is type safe 21:16 < bridge> if u know u expect an int, u know its never bigger than 4billion 21:16 < bridge> +- 21:16 < bridge> 2billion 21:16 < bridge> ya 21:16 < bridge> so u can estimate the string size 21:16 < bridge> printf can't do that 21:16 < bridge> at compile time at least 21:16 < bridge> string streams have this too, additionally they don't need to replace the "{}" 21:17 < bridge> they can just throw it against the string after each other 21:17 < bridge> i guess u could™️ write std::format similary fast by creating a stream internally 21:17 < bridge> rust format! is a macro, so it could do that too 21:17 < bridge> i dunno if it does tho 21:17 < bridge> yea idk 21:17 < bridge> anyway `if x == 10 { expression; }` is booty cheeks 21:18 < bridge> why mandatory brackets 21:18 < bridge> why can't i do parentheses or brackets to disambiguate test condition from statement body 21:18 < bridge> bcs u dont have the () brackets 21:18 < bridge> i think that's one of the nicest rust syntax 21:18 < bridge> it's foul 21:18 < bridge> bcs also important in rust {} isnt just a scope 21:18 < bridge> it's an expression 21:19 < bridge> u can return stuff from it 21:19 < bridge> without return tho 21:19 < bridge> it also creates inconsistent branching syntax since functions have parentheses 21:19 < bridge> { 1 } 21:19 < bridge> ya 21:19 < bridge> that part is neat 21:20 < bridge> a more logical ternary operator 21:20 < bridge> i think more ugly is if u have to set the generic explicitly 21:20 < bridge> 21:20 < bridge> e.g. let's assume u need generic for unknown reason: 21:20 < bridge> std::cmp::max::(2, 3) 21:20 < bridge> looks weird af xD 21:23 < bridge> let's fucking gooooo 21:24 < bridge> ddnet magnet arrived 21:24 < bridge> i didn't realize he sent it 😃 21:24 < bridge> wow, how long did it take? 21:24 < bridge> 20 years? xd 21:25 < bridge> u will learn in time 21:25 < bridge> to apreciate rust syntax 21:25 < bridge> nah 21:25 < bridge> parenthesis are in fact bloat 21:25 < bridge> in ifs 21:26 < bridge> also in rust everything is an expression 21:33 < bridge> we just got a parking ticket for somewhere neither my mom, sister or i were on the day it's cited 21:34 < bridge> the fuck 21:35 < bridge> is it even real? xd 21:38 < bridge> close that issue https://github.com/ddnet/ddnet/issues/6513, pretty sure its just show info 21:39 < bridge> is * still used for getting iterator values 21:41 < bridge> it’s actually an overdue notice for the fictitious ticket 21:41 < bridge> addressed to my mom but the plate number is none of ours and we were never there lol 21:41 < bridge> $100 fine $100 late penalty 21:41 < bridge> ridiculous 21:44 < ws-client> @admins will i get banned for this client mod? xd 21:44 < ws-client> https://zillyhuhn.com/cs/.1685475884.png 21:45 < ws-client> it highlights spaikes 21:45 < ws-client> because when i get tired i always run into spikes on silex maps 21:47 < bridge> ??????????? 21:47 < ws-client> its really useful 21:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113192110196273243/image.png 21:48 < ws-client> to not brain afk jump into spike 21:48 < ws-client> it only hights those with direct air line 21:48 < ws-client> nothing behind walls 21:48 < bridge> ok i will make a map and hide spikes behind walls 21:48 < ws-client> then they are not dangerous 21:48 < ws-client> mostl 21:48 < ws-client> y 21:48 < bridge> and a speeder 21:48 < ws-client> yikes 21:49 < bridge> :troll: 21:51 < ws-client> i can also toggle the behind walls cff 21:51 < ws-client> cfg 21:51 < bridge> if you can get banned for having a hook/hammer radius then this is probably an offence 21:51 < ws-client> oh shit there were bans for that? 21:51 < bridge> from what i remember 21:52 < bridge> how u become purple? 21:52 < bridge> you join spec 21:52 < ws-client> isnt ddnet client showing hookline 21:52 < bridge> no in the diskord 21:52 < bridge> (the ones with the Dev role are) 21:52 < bridge> yea 21:52 < bridge> voxel is dev? 21:53 < bridge> yeah 21:53 < bridge> hammer got that janky ass hitbox 21:53 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113193577867116594/Screenshot_20230530_155331_Discord.jpg 21:54 < bridge> maybe its refering to the grenade thing but 21:54 < bridge> still 21:54 < bridge> what is that yellow thing 21:54 < bridge> does hookcoll not pre-calculate 21:54 < bridge> it doesnt 21:54 < bridge> contributing to ddnet 21:54 < bridge> actually it does kinda 21:54 < bridge> the role doesnt mean anything 21:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1003018796417691799/unknown.png 21:54 < bridge> 21:54 < bridge> i made this a while back 21:54 < bridge> as a concept 21:54 < bridge> just that u made some contributions 21:54 < bridge> wuh 21:55 < bridge> hammer radius 21:55 < bridge> it just shows the max distance of the hook 21:55 < bridge> it calculates whether or not it will hit something 21:55 < bridge> just as cheats 21:55 < bridge> doesnt take ur speed tho 21:58 < bridge> xpanic shotgun preview 21:59 < bridge> tru 22:00 < bridge> i had design doc on xxxpanic that had like 10-20 new weapons and new buildings concepts 22:00 < bridge> lost it five years ago duh 22:00 < bridge> you'll just follow red lines out of tiredness now :troll: 22:01 < bridge> new buildings to abuse 22:02 < bridge> also 10-20 is just bloat honestly 22:02 < bridge> nah it was bounded to your level so you would be forced to upgrade every time 22:03 < ws-client> @Chairn omg pls no 22:03 < bridge> but grinding in xpanic is so slow 22:03 < bridge> like you couldnt carry more than three weapons besides hammer and pistol 22:03 < bridge> does `match` fail on compile if it doesn't have a catch-all like `y => {}` or `_ => {}` or does it do something else 22:03 < bridge> warn & use the latter or something 22:04 < bridge> even with the exp bug 22:04 < bridge> nah there was another level system that wasn't that boring 22:04 < bridge> match requires all branches to be covered 22:04 < bridge> bleh 22:04 < bridge> not bleh 22:04 < bridge> nvm scratch that, i forgot how slow leveling is in tw mods in general 22:04 < bridge> it prevents bugs 22:04 < bridge> also 22:04 < bridge> doesn't have to have a catch-all btw 22:04 < bridge> enums you can cover completely 22:04 < bridge> yeah 22:05 < bridge> and if u know something is unreachable u can do 22:05 < bridge> idk i think it should just warn 22:05 < bridge> `_ => unreachable!()` 22:05 < bridge> and it will panic if it ever happens 22:05 < bridge> and 22:05 < bridge> o nice 22:05 < bridge> IF and ONLY IF 22:05 < bridge> ur super sure 22:05 < bridge> wait maybe i don't want panic 22:05 < bridge> u can use unsafe 22:05 < bridge> also when we ran xpanic server with quantum people haven't complained about that 22:05 < bridge> cuz vip and cuz huge online 22:05 < bridge> unsafe { unreachable_unchecked!()} 22:05 < bridge> can't we runtime assert and move on with life 22:05 < bridge> or console warn or smth 22:05 < bridge> vip is p2w 22:05 < bridge> yeah, u can do that 22:06 < bridge> not that hard tho 22:06 < bridge> You can do whatever you want in that branch. The point is you clearly have to think about every case and make a conscious decision 22:06 < bridge> yeah 22:06 < bridge> you could play more than average vip and get the same amount of exp 22:06 < bridge> so what if you add an enum value to the definition and forget to add it to a match that has `{} => unreachable!()`, does it tell u about that? 22:06 < bridge> pretty sure it gives double upgrades 22:07 < bridge> nope 22:07 < bridge> u cant forget 22:07 < bridge> cuz code wont compile 22:07 < bridge> oh yeah 22:07 < bridge> swag 22:07 < bridge> it had exp bonus and something that i don't remember 22:07 < bridge> um, you can if there is a catch-all 22:07 < bridge> yeah 22:07 < bridge> that is the catch all 22:07 < bridge> will it warn 22:07 < bridge> if it knows 22:07 < bridge> no 22:07 < bridge> It won't 22:07 < bridge> fucked 22:07 < bridge> Enums I usually cover completely for this reason 22:07 < bridge> yeah u should 22:07 < bridge> in cpp if u want to cover all bases u omit default: and compiler will usually tell you that ur missing a possible value 22:07 < bridge> also 22:08 < bridge> match has way more syntax 22:08 < bridge> than what u know now 22:08 < bridge> yea i see it has like 22:08 < bridge> | and if 22:08 < bridge> seems super powerful 22:08 < bridge> big fan 22:08 < bridge> As the last case I usually have all the unreachable ones or'd together 22:08 < bridge> and another 22:08 < bridge> the @ 22:09 < bridge> o_O 22:09 < bridge> ok but did the server have ultimate vip too 22:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113197471074615376/image.png 22:09 < bridge> not mentioned here :[ 22:09 < bridge> u can also pattern match ranges 22:09 < bridge> ..? 22:09 < bridge> `..`? or smth 22:10 < bridge> https://doc.rust-lang.org/reference/patterns.html#identifier-patterns 22:10 < bridge> ```rust 22:10 < bridge> let x = 2; 22:10 < bridge> 22:10 < bridge> match x { 22:10 < bridge> e @ 1 ..= 5 => println!("got a range element {}", e), 22:10 < bridge> _ => println!("anything"), 22:10 < bridge> } 22:10 < bridge> ``` 22:10 < bridge> no parentheses on `e @ 1 ..= 5` is so weird to me atm 22:10 < bridge> no 22:11 < bridge> > To bind the matched value of a pattern to a variable, use the syntax variable @ subpattern. For example, the following binds the value 2 to e (not the entire range: the range here is a range subpattern). 22:11 < bridge> why only 2 22:11 < bridge> wouldn't it be 2,3,4 22:11 < bridge> = e 22:11 < bridge> `if let Person {name: ref person_name, age: 18..=150 } = value { }` 22:12 < bridge> My favourite RFC 22:12 < bridge> cool 22:12 < bridge> because x is 2 duh 22:12 < bridge> oh lmfao 22:12 < bridge> i wasn't looking there 22:12 < bridge> secounds 22:13 < bridge> but if x was 3 or 4 it would still be e? 22:13 < bridge> true 22:13 < bridge> and how to make inclusive 22:13 < bridge> oh you are not talking about my favourite RFC 22:13 < bridge> I was talking about RFC 2294 https://github.com/rust-lang/rust/issues/51114 22:13 < bridge> if let in match guard 22:13 < bridge> thought that was drake for a moment 22:14 < bridge> ye 22:14 < bridge> excellent 22:14 < bridge> and 5 22:14 < bridge> cuz the = 22:14 < bridge> 1 ..= 5 22:14 < bridge> [1,5] 22:14 < bridge> 1 ..5 22:14 < bridge> [1,5) 22:14 < bridge> =..= (1,5)? 22:15 < bridge> funny rat face 22:15 < bridge> 1 is inclusive always 22:15 < bridge> xd 22:15 < bridge> oops 22:15 < bridge> algebr 22:18 < bridge> =..= konsti 22:18 < bridge> ```rs 22:18 < bridge> let x = 34isize; 22:18 < bridge> let x = 34usize; 22:18 < bridge> ``` 22:18 < bridge> why not `let x = 34i`/`let x = 34u` 22:21 < bridge> lol 22:21 < bridge> cuz that doesnt mean anything 22:21 < bridge> u have 22:21 < bridge> i8 i16 i32 i64 i128 isize 22:21 < bridge> and the unsigned variants 22:22 < bridge> usize is used for indexing 22:22 < bridge> isize for ptr offset shenanigans 22:26 < ws-client> can we increase max zoom to cover all of Back In Time 2 please? 22:26 < bridge> 5 characters for a literal specifier is crazy 22:31 < bridge> ???????? 22:31 < bridge> long long double 22:31 < bridge> 16 chars 22:32 < bridge> also rust has strong type inference 22:32 < bridge> f64 in rust btw 22:33 < bridge> `std::float64_t` 22:33 < bridge> `auto x = 34L` 22:33 < bridge> let is shorter 22:33 < bridge> ler x = 32i64; 22:33 < bridge> god 22:33 < bridge> i cant type 22:33 < bridge> I think @Ewan Green was talking about the suffix 22:33 < bridge> ye i was 22:34 < bridge> bloat 22:34 < bridge> also cpp23 isn't real but `auto x = 32i64; ` 22:34 < bridge> see 22:34 < bridge> they copied rust 22:34 < bridge> they know the better lang 22:34 < bridge> gotta catch up 22:35 < bridge> (btw long long double isn't even a thing :D) 22:35 < bridge> rly? 22:36 < bridge> idk why i remembered it 22:36 < bridge> Atleast it's not a thing in C11 and C++17. I don't remember if it was ever added 22:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113204432390328360/image.png 22:37 < bridge> i never understod why ppl use these types 22:38 < bridge> of uin32_t etc. 22:38 < bridge> of uint32_t etc. 22:38 < bridge> Sometimes you want a fixed bitwidth 22:38 < bridge> e.g. a 64 bit mask 22:38 < bridge> so u'd use uint64_t 22:39 < bridge> u64 22:39 < bridge> Ah you don't understand why people would use non-specific bit-width types? 22:39 < bridge> instead of uint32_t etc. 22:39 < bridge> yeah i guess i was missing a instead xD 22:39 < bridge> Sometimes you don't care about bit width but care only about range. It lets the compiler do it's thing 22:39 < bridge> Ya i use uint for iteration and stuff 22:40 < bridge> u can use auto 22:40 < bridge> or simply int32_t 22:40 < bridge> imagine having c style for loops 22:40 < bridge> kek 22:40 < bridge> still better than it suddenly getting 16bits xD 22:41 < bridge> e.g. I want to represent numbers up to 2^32, if I force `uint32_t`, it might have to waste memory or use inefficient instructions on a 64bit system 22:41 < bridge> eh 22:41 < bridge> i think its better if its more deterministic 22:41 < bridge> idk the word 22:41 < bridge> langs should allow i{1-20320312032101} 22:41 < bridge> like llvm 22:42 < bridge> The integer type is a very simple type that simply specifies an arbitrary bit width for the integer type desired. Any bit width from 1 bit to 223(about 8 million) can be specified. 22:42 < bridge> Syntax: 22:42 < bridge> 22:42 < bridge> iN 22:42 < bridge> You can't know what sort of integer is efficient to do operations with on every system, the compiler can know that since it knows the target 22:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1113206163060834304/image.png 22:45 < bridge> It even gives you the option to optimize for what you want. If you think you know better than the compiler then you are free to pick your own 22:45 < bridge> what do u guess how did gcc implement them? 😉 22:45 < bridge> on 64bit 22:45 < bridge> Which 64bit? 22:45 < bridge> x64 22:46 < bridge> They all probably map to int32_t until the 64bit variants 22:46 < bridge> rarely necessary 22:47 < bridge> ``` 22:47 < bridge> typedef signed char int_fast8_t; 22:47 < bridge> typedef long int int_fast16_t; 22:47 < bridge> typedef long int int_fast32_t; 22:47 < bridge> typedef long int int_fast64_t; 22:47 < bridge> ``` 22:47 < bridge> all 64bit except int8 22:47 < bridge> same for unsigned 22:47 < bridge> See, I don't know better than the compiler. Better leave it to the compiler then 22:48 < bridge> after your logic: everytime u use an `int` it's worse than what the compiler would do 22:48 < bridge> (ofc only in theory) 22:48 < bridge> if we believe this typedefs 22:49 < bridge> No, if you pick the one with the correct range, the compiler will pick the proper bitwidth required on your target 22:49 < bridge> anyway good night 🥱 22:50 < bridge> auto int 22:50 < bridge> auto i; i < deeznuts; i++ 22:50 < bridge> No please, before you go please let me know of the optimal values of those for sparc64 and riscv64 too 22:50 < bridge> i dont have the header files installed sry 23:02 < bridge> they're very slow AFAIK 23:03 < bridge> I want to see a benchmark for these claims. I have seen opposite benchmarks, that snprintf was a lot faster than std::stringstream 23:06 < bridge> same here, because each `<<` is a separate call 23:07 < bridge> while printf is called only once and thus makes a single allocation 23:08 < bridge> I don't know why it's faster, but the benchmark said it was 23:08 < bridge> it is real, you just need to have gcc 13 or clang 14 :pepeW: 23:09 < bridge> Makes no sense that they are faster. If they are, then it's BCS of bad impl 23:09 < bridge> Especially printf 23:10 < bridge> It's probably because stringstreams are just optimized worse, possibly because it'd require lots of devirtualization which compilers are bad at 23:10 < bridge> Atleast that's my rough guess 23:11 < bridge> glad we're a science where we can easily run experiments. if the data will say that snprintf is faster, then it's apparently faster 23:11 < bridge> if that's the result, then it doesn't matter that it *should* be slower, it just wouldn't be 23:11 < bridge> ? 23:12 < bridge> What kind of argument is that 23:12 < bridge> BCS unordered map sucks. Hashmaps suck or what 23:12 < bridge> no. because unordered map is slow. that's all I'm saying 23:12 < bridge> no. because unordered-map is slow. that's all I'm saying 23:12 < bridge> no. because unordered_map is slow. that's all I'm saying 23:12 < bridge> no. unordered_map is slow. that's all I'm saying 23:12 < bridge> std::stringstream was also slow some time ago 23:13 < bridge> I don't know if that changed 23:13 < bridge> Why does it matter which one of them looks faster? If you bench them apparently snprintf is faster than stringstream 23:13 < bridge> or at least was faster some years ago 23:13 < bridge> python print is faster 23:13 < bridge> :gigachad: 23:13 < bridge> rust println may be slower cuz it locks 23:14 < bridge> iirc 23:14 < bridge> idk if c++ does this 23:14 < bridge> https://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html here is a dude doing just int to string, which is a meh benchmark but even here `std::ostringstream` fell behing `sprintf` 23:14 < bridge> rust `println!` is slower than python `print`s 23:14 < bridge> the lock 23:14 < bridge> u can acquire it and use write! iirc 23:14 < bridge> then its faster i think 23:14 < bridge> also the line buffering, I think 23:15 < bridge> OR, don't acquire the lock, do an unsafe write, is fastest 23:16 < bridge> but well with rust u wotn see garbage prints in threaded env 23:16 < bridge> only if you use `println!` consistently 23:16 < bridge> yeah 23:16 < bridge> I think you won't see them in C either 23:16 < bridge> if you use `printf` consistently? 23:16 < bridge> with ` 23:16 < bridge> with `\n` 23:16 < bridge> yeah \n flushes 23:17 < bridge> I actually don't know if that's guaranteed, but that is how it is on a lot of platforms 23:17 < bridge> oh yea, I'm definitely talking about impl details right now 23:17 < bridge> threading is no longer an impl detail since c11/c++11 23:18 < bridge> I think it might be like actually guaranteed in rust though, no? 23:18 < bridge> it's ISO C behaviour 23:18 < bridge> https://gist.github.com/matklad/764a1a7200217fd69739bbb7505e9ab4 23:18 < bridge> 23:18 < bridge> sync_with_stdio 23:18 < bridge> Magic 23:18 < bridge> But can't find the string benchmarks 23:18 < bridge> > When a stream is line buffered, characters are intended to be transmitted to or from the host environment as a block when a new-line character is encountered. 23:19 < bridge> its line buffered by def i think 23:19 < bridge> > intended 23:19 < bridge> ISO C99 section 7.19.3/3 23:19 < bridge> is that a guarantee? 23:19 < bridge> Support for these characteristics is implementation-defined, and may be affected via the setbuf and setvbuf functions. 23:19 < bridge> xd 23:20 < bridge> > printf prints to standard output, which is line-buffered by default when reading from a tty on UNIX variants. 23:20 < bridge> idk 23:20 < bridge> cant find a rly good source 23:20 < bridge> google is rly bad at printf 23:21 < bridge> cuz its just nobos asking 23:21 < bridge> anyway time to sleep 23:26 < bridge> Not in the second 23:27 < bridge> I can reproduce this example, 718ms iostream, 365ms cstdio, 230ms iostream_unsynced 23:27 < bridge> https://quick-bench.com/q/z1MfZDeu8RBj_q6d3xx1cJGTJ7c here is my quick bench 23:27 < bridge> It also depends on if u do a heap allocation which is ofc slow 23:27 < bridge> 23:27 < bridge> Anyway 23:27 < bridge> Learath2 seems to do heap alloc in both cases 23:28 < bridge> My argument is 23:28 < bridge> Type guarantees let u optimize it. Printf will always need to parse the format string if it's not moved to consteval 23:28 < bridge> the argument is irrelevant, unless you talk about a non-existant implementation 23:28 < bridge> the benchmark proves it's currently slower with the actual implementations 23:29 < bridge> But u can control the stream base class 23:29 < bridge> If we are going to talk hypotheticals, aren't both of them doing the exact same thing, with the exact same types and constants so should both optimize to the exact same thing? 23:29 < bridge> ah true, that too 23:30 < bridge> gcc optimizes `printf("%s\n", string);` to `puts(string);` 23:30 < bridge> in the same way, it could optimize `snprintf(buf, sizeof(buf), "%d", integer);` to the fastest integer conversion routine 23:31 < bridge> Wow cool guys 23:31 < bridge> Finally u understand 23:31 < bridge> Why does it have to end up as a stream? 23:31 < bridge> https://c.godbolt.org/z/qqj5fnW1b 23:32 < bridge> I guess(tm) you could make `std::ostringstream` similarly fast by creating a format string internally 23:32 < bridge> As said printf can't beat CPP here. If it does, it's because CPP implementation suck. Play around with variadic templates 23:33 < bridge> And u understand. U can in fact even parse constants at compile time already 23:33 < bridge> What I don't follow is why do you take this as an a priori? It's not really obvious to me why stringstream should be faster? 23:33 < bridge> How long is the longest int? 23:34 < bridge> As string 23:34 < bridge> on x86-64 9 or 10 characters? idk off the top of my head 23:35 < bridge> assuming int64_t 23:35 < bridge> How long is the longest vararg 23:36 < bridge> If the compiler knows what's dealing with it has the potential to optimize it. I'm not saying it does 23:36 < bridge> so you're saying a sufficiently smart compiler might make it faster 23:37 < bridge> Comparing it to a c function 23:37 < bridge> That is not allowed to be optimized. Yes 23:38 < bridge> so an optimized C++ function might be faster than an unoptimized C function 23:38 < bridge> I don't mean the implementation 23:38 < bridge> I mean the information it has 23:38 < bridge> U know what I mean. I really need to sleep now 23:39 < bridge> good night 🙂 23:39 < bridge> A sufficiently smart compiler is also allowed to just look at the arguments before putting them into whatever format varargs require on the platform