00:18 < bridge> open source antibot module just dropped 00:18 < bridge> bleeding edge detections 00:18 < bridge> 00:18 < bridge> ```C++ 00:18 < bridge> bool CAntibob::OnSayNetMessage(const CNetMsg_Cl_Say *pMsg, int ClientId, const CUnpacker *pUnpacker) 00:18 < bridge> { 00:18 < bridge> if(str_find_nocase(pMsg->m_pMessage, "i am using a cheat client")) 00:18 < bridge> Kick(ClientId, "self report"); 00:18 < bridge> return false; 00:18 < bridge> } 00:18 < bridge> ``` 00:21 < furo> Finally a stop to the cheating problem with this antibot! 00:21 < ws-client> indeed i solved botting 00:21 < ws-client> you are welcome 00:21 < ws-client> furo thanks for ddnet bomb btw i looked at your code :) 00:24 < furo> Ah nice! 00:28 < bridge> ! 00:32 < bridge> you did not consider liers 00:32 < bridge> "i am not using a cheat client" doesnt kick them if they are using a cheat client 00:53 < bridge> Lie detector is next item on todo list 00:53 < bridge> But so far my cheating player base was surprisingly honest 00:54 < bridge> i see 00:54 < bridge> that suprises me 00:54 < bridge> Me too 00:54 < bridge> are you sure that there isnt actually a majority in the players who are lying to you 00:54 < bridge> which you dont know about cuz theyre lying to you 00:54 < bridge> Fair point 00:55 < bridge> But if the majority was lying about cheating. That would mathematically result in over 100% cheaters 00:56 < bridge> 50% of all peoplea are cheating and not lying about it? 00:56 < bridge> Yea 00:56 < bridge> It’s bad 00:56 < bridge> thats alot of cheaters 00:56 < bridge> Yes 00:57 < bridge> i hope that >100% of people are cheating lying or not 00:57 < bridge> i hope that >100% of people are *not* cheating lying or not 00:57 < bridge> There for sure have been rounds with 100% cheaters I have seen it 00:57 < bridge> D: 00:57 < bridge> At that point I stopped kicking 00:57 < bridge> Because it was fair game 00:57 < bridge> [ban](https://cdn.discordapp.com/emojis/633552031591956480.webp?size=48&name=ban) [ban](https://cdn.discordapp.com/emojis/633552031591956480.webp?size=48&name=ban) ? 00:57 < bridge> npm/ddnet https://ddnet.js.org written for typescript mainly 00:58 < bridge> yes 00:58 < bridge> sorry I was eating D: 00:58 < bridge> do not apologise for being a skeleton 00:58 < bridge> everyone needs food to keep there skeleton fresh 00:59 < bridge> lol 00:59 < bridge> chiller what do you think of javascript on the server 00:59 < bridge> Epic 00:59 < bridge> my man :owo: 01:00 < bridge> OG meskalin who was involved in ath once was working on a new project 01:00 < bridge> chiller is devving 100% accurate lie detector just from text input without context let's goo 01:00 < bridge> With js bindings instead of lua bindings 01:00 < bridge> npm/ddnet https://ddnet.js.org written for typescript/node mainly 01:00 < bridge> meskalin is goated xd 01:00 < bridge> js is the best scripting language change my mind 01:00 < bridge> crazy giy 01:00 < bridge> Indeed 01:00 < bridge> typescript. 01:00 < bridge> (and a pretty good language in general) 01:00 < bridge> *guy 01:00 < bridge> giy 01:01 < bridge> typescript is barely a different language 👀 01:01 < bridge> but it makes all the difference 01:01 < bridge> @teero777: self hosting llama is pretty smooth. Can just send the chat to llm and ask if it should kick or not. Half of these Russians discuss cheat settings in game anyways. Seems doable 01:01 < bridge> ngl that's not even stupid 01:02 < bridge> I tried that with chat geepeetee at some point, it decided that everyone should be kicked :sad: 01:02 < bridge> correct 01:02 < bridge> is this why u need translate? 01:02 < bridge> It for sure would ban me then tho -.- I chat sus 01:02 < bridge> xd 01:02 < bridge> Yes 01:02 < bridge> the russian translate is pretty bad with the netspeak though ): 01:02 < bridge> if char >=256 kick() 01:02 < bridge> Sadge 01:03 < bridge> doesnt cover enough cases 01:03 < bridge> its... usable if you are trying to have a conversation 01:03 < bridge> just to be sure: 01:03 < bridge> 01:03 < bridge> if true kick() 01:03 < bridge> redundant if because we all like loosing braincells from time to time 01:04 < bridge> tbh I want to make a watcher server someday. Where it's just 64 automated tees doing things and you can watch them do things 01:04 < bridge> sus 01:04 < bridge> i do this on the ctf bot server 01:04 < bridge> that'd be an interesting experiment, just have random ai tees do stuff and see where they end up 01:04 < bridge> istg they're gonna form a racist group against twinbops 01:04 < bridge> Yes @teero777 pls write me a bot that revives ctf 01:04 < bridge> wdym sus I love rule 7 and have never broken it 01:05 < bridge> :Doubt: 01:05 < bridge> nooo 01:05 < bridge> not the ddracism 01:05 < bridge> Insert souly quote 01:06 < bridge> hi 01:06 < bridge> what algorithms would you even use to make interesting emergent behavior in tee land 01:06 < bridge> i got a notification from matrix when u typed my name 01:06 < bridge> just toss an llm somewhere in there 01:06 < bridge> smth like ant simulation stuff? Where they follow trails and maybe build groups 01:06 < bridge> i would say "throw an ai at it" but thats not going to be very fast 01:07 < bridge> is this for vanilla or ddrace or gores or block? 01:07 < bridge> that's lame, how about starting with that but actually giving them a goal? 01:07 < bridge> or random goals 01:07 < bridge> or even a goal where they have to choose their own goals and acomplish them 01:07 < bridge> pfff 01:07 < bridge> Soon with my beautiful c99 it's atleast not going to be CPU bottlenecked anymorre 01:08 < bridge> i dont think the language is what dictates ais being slow compared to human algorithms 01:08 < bridge> man your sarcasm sector is really low 01:08 < bridge> Souly send twinbop bind 01:08 < bridge> sector? 01:09 < bridge> bind q player_skin twinbop 01:09 < bridge> https://media.discordapp.net/attachments/342454474117218334/979686303492890654/11.gif 01:09 < bridge> wow souly and solly together in one room 01:09 < bridge> woaw thes is hot 01:09 < bridge> is the ctf bot open source? 01:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354246116245377186/image.png?ex=67e4977a&is=67e345fa&hm=c4bfe537722a28aa21bb695ca8338d055e5d3fb888d3c5eac0b2d971d36f6955& 01:10 < bridge> this isnt it 01:12 < bridge> @chillerdragon how easy it to make serverside bots in ddnet-insta or ddnet in general 01:13 < bridge> Well there is debug dummies but they are debug only 01:13 < bridge> they are probably a good base 01:13 < bridge> dont they have some input added to them 01:14 < bridge> Yes 01:15 < bridge> It’s on my todo but I don’t like the amount of times it requires to remove the debug if statement 01:15 < bridge> 01:15 < bridge> Also idk how to code proper inputs that’s what I need Teero for 01:16 < bridge> i dont think open sourcing the kinda things teero does is a good idea 01:16 < bridge> i just want something dumb and funny 01:16 < bridge> Me too 01:16 < bridge> There are some open source ctf bots 01:17 < bridge> they are quite old 01:17 < bridge> i cant go into spectate in this one and the bots leave when you do 01:19 < bridge> There is something odd about banning humans that use bots to then fill the empty server with bots controlled by the server 01:21 < bridge> because the bots i want to write wont have an unfair advantage 01:21 < bridge> they will suck ass 01:22 < bridge> I am waiting for a irl robot that sucks ass 01:23 < bridge> ._______. 01:23 < bridge> But ye I get your point. Botting is okay if it is still fun to play against and winnable. But I would argue that even applies to the Voldemort playerbase on my fng server. You can still easily farm them somehow 01:24 < bridge> nnnnnnnoooo 01:25 < bridge> mmmmmm 01:25 < bridge> your logic is flawless, yet i cannot agree with you 01:25 < bridge> the vibes are off if humans hack 01:25 < bridge> its like how tassing official records is boo, go die of a cliff 01:26 < bridge> but making tas tools and tassing unofficial records is yipee, go glide of a gliff 01:26 < bridge> chiller too much nsfw 01:26 < bridge> chiller cant be timedout 01:26 < bridge> oof 01:26 < bridge> rule 69 or what? 01:27 < bridge> I thought \#developer is 18+ 01:27 < bridge> I would like to inquire more about your irl ass sucking robot 01:27 < bridge> I don't think it is 01:27 < bridge> Then I can’t comment more 01:27 < bridge> ~~I would like to inquire more about your irl ass sucking robot~~ 01:27 < bridge> okay 01:27 < bridge> It's gine 01:28 < bridge> fine 01:28 < bridge> But I built a prototype 01:28 < bridge> Are you home yet? 01:28 < bridge> Streamed the process on of 01:28 < bridge> I am home 01:28 < bridge> nice 01:28 < bridge> Are you meeting me in Munich? 01:28 < bridge> btw what's the best cpu you've got 01:29 < bridge> nope, not het 01:29 < bridge> yet 01:29 < bridge> Raspberry pi 4 01:29 < bridge> oh that's strong 01:29 < bridge> prob better than my Intel Xeon 1240-e5 01:29 < bridge> When I bought my new pc I went for the strongest single core power at the time 01:30 < bridge> optimizing is so fun ngl 01:30 < bridge> I forgot the name I posted it in developer just grep ChillerDragon.\*i9 or something like that 01:30 < bridge> You just keep staring and thinking and then smth goes into your head, you apply it and you get a -20ms on the benchmark 01:31 < bridge> That’s so nice 01:31 < bridge> Don’t forget to upstream all of it 01:31 < bridge> to ddnet repo? hell nH 01:31 < bridge> I need 1024 player hammer hit action on ddnet servers 01:31 < bridge> nah 01:31 < bridge> Why not 01:32 < bridge> because it's a complete rewrite 01:32 < bridge> also I'm not translating this back to c++11 01:32 < bridge> You make a clean c99 lib right? 01:32 < bridge> ye 01:32 < bridge> Just send a pr to delete all code in ddnet and add yours as external dependency 01:32 < bridge> Modularized ddnet finally 01:33 < bridge> unifying prediction and server code would be so good xd 01:33 < bridge> well this would be very stupid too xd 01:33 < bridge> give the botters even more performance 01:34 < bridge> You are the botters 01:34 < bridge> mhh kinda ig 01:34 < bridge> but giving Voldemort client a free boost iseh 01:34 < bridge> *meh 01:34 < bridge> @sollybunny: botter detected 01:34 < bridge> Teero just admitted it 01:35 < bridge> Chat based antibot is effective! 01:35 < bridge> I am the friendly neighborhood robot 01:35 < bridge> Like wall-e? 01:35 < bridge> yea I pickup your trash code and compress/optimize it 01:36 < bridge> Nice 01:36 < bridge> jupstar is cooking too on ddnetrs 01:37 < bridge> but there seems to be a bug somewhere tho xd 01:38 < bridge> chiller have you never thought about making a ddnet rewrite like ddnetrs where you make everything like you like it? 01:54 < bridge> they gonna ban me 02:17 < bridge> ban ban 02:18 < bridge> maybe should change the error message 02:18 < bridge> this gets asked 10 times a day 02:18 < bridge> noone knows what "udp filtered" means 02:45 < bridge> i think laser and shotgun sharing a head is alright 02:45 < bridge> grabber Could be changed but idk what to 03:09 < bridge> ```cpp 03:09 < bridge> case IClient::CONNECTIVITY_UNREACHABLE: 03:09 < bridge> pConnectivityLabel = Localize("UDP seems to be filtered."); 03:09 < bridge> break; 03:09 < bridge> ``` 03:09 < bridge> yeah thats a horrible error message 03:09 < bridge> ``` 03:09 < bridge> bool HaveTriedALittle = m_NumUnsuccessfulTries >= 5 && (m_LastResponse == -1 || Now - m_LastResponse >= 30 * Freq); 03:09 < bridge> if(m_LastResponse == -1 && !HaveTriedALittle) 03:09 < bridge> { 03:09 < bridge> return CONNECTIVITY::CHECKING; 03:09 < bridge> } 03:09 < bridge> else if(HaveTriedALittle) 03:09 < bridge> { 03:09 < bridge> return CONNECTIVITY::UNREACHABLE; 03:09 < bridge> } 03:09 < bridge> ``` 03:09 < bridge> unreachable means 03:09 < bridge> m_NumUnsuccessfulTries >= 5 (5 packets were sent with no response) (not reset it seems, so this is just used at startup) and no packet has been recieved 03:09 < bridge> or 03:09 < bridge> Now - m_LastResponse >= 30 * Freq (the last recieved packet was more than 30 seconds ago) 03:09 < bridge> "Server is not responding" is better, you can have more details though 03:09 < bridge> "Server is not responding, UDP may be filtered, or the server may be overloaded" 03:10 < bridge> Exactly 03:10 < bridge> we should add whether a server is overloaded in mastersrv 03:12 < bridge> i think just changing the msg for now is fine 03:38 < bridge> morning tater 03:39 < bridge> I think the reasoning behind this error message is that the master server is able to connect to the server so it's most likely not unreachable unless it went down in the few seconds between the master server updating and you clicking join 03:39 < bridge> i see 03:39 < bridge> but obviously that isnt the case most of the time 03:40 < bridge> but that wouldn't be accurate if you join directly 03:40 < bridge> what is the reason most of the time? 03:40 < bridge> server is getting ddosed 03:40 < bridge> hmm yeah 03:41 < bridge> the ddosed server seems to get dissapeared from the master quite quickly 03:41 < bridge> it's not a very good error message regardless 03:41 < bridge> i think changing it is a good idea 03:41 < bridge> also sometimes you get it if the server just refuses to respond 03:41 < bridge> eg if your ip is not verified 03:41 < bridge> on ger3 or something 03:42 < bridge> I don't think you get this message when that happens 03:42 < bridge> do you? 03:42 < bridge> I thought it just stays on connecting or some other step 03:42 < bridge> well when i was trying to connect to awb 03:42 < bridge> with my different udp ip 03:42 < bridge> it was stuck on udp may be filtered 03:42 < bridge> ah awb is different than ger3 03:42 < bridge> le code 03:42 < bridge> it should definitley say unreachable 03:43 < bridge> it should definitely say unreachable 03:43 < bridge> `Server is not responding. The server may be overloaded, or UDP might be filtered.` 03:43 < bridge> yeah 03:43 < bridge> idk what unreachable is meant to mean 03:43 < bridge> cuz you throw packets into the eather, they might be reaching... the server 03:43 < bridge> not responding is better i think 03:44 < bridge> I suppose 03:44 < bridge> das is whats being measured 03:44 < bridge> what happened to ger3.ddnet.org 03:44 < bridge> it was replaced 03:44 < bridge> with a different method 03:44 < bridge> it only verifys you through the client now 03:44 < bridge> i dont remember was ger3 still ddosed? 03:45 < bridge> is ger3 the protected server? 03:45 < bridge> was yeah 03:45 < bridge> the one with the tclient feature 03:45 < bridge> which was disapeared 03:45 < bridge> it definitely gets ddosed but I don't think it ever went down because of it 03:45 < bridge> that's the point 03:45 < bridge> most servers dont go down when theyre ddosed 03:45 < bridge> just... unplayable 03:45 < bridge> the service did not get denied 03:46 < bridge> ? 03:46 < bridge> dedicated denail of service 03:46 < bridge> well service being playing 03:46 < bridge> very much denied 03:46 < bridge> thats a bit of a bad name 03:46 < bridge> it's distributed denial of service 03:46 < bridge> oops yeah 03:46 < bridge> lots of words begin with d 03:47 < bridge> although idk if there's a different name for when you do denial of service with a network volume attack like how ddos happens. there's other attacks that also get called denial of service 03:48 < bridge> slow loris 03:49 < bridge> but its not denying service thats what the goal most probably is 03:49 < bridge> its just overloading the server 03:49 < bridge> ¯\_(ツ)_/¯ 03:49 < bridge> that's the same thing 03:49 < bridge> i cant think of a better name 03:49 < bridge> if the server won't serve you then the service was denied 03:49 < bridge> denied 03:49 < bridge> i guess 03:49 < bridge> im very tired 03:50 < bridge> i just got carried thru a "1 star brutal" it was not 1 star 03:50 < bridge> i got lied too 03:50 < bridge> Denial of service is any attack that makes the service unable to respond to legitimate requests 03:51 < bridge> individual username 03:51 < bridge> gucci tag 03:51 < bridge> (guten tag) 03:51 < bridge> tan 03:52 < bridge> nacht 03:52 < bridge> guten nacht? 03:52 < bridge> gute nacht 03:52 < bridge> im so out of it 03:52 < bridge> 5am 03:52 < bridge> Going to bed lol 03:53 < bridge> invalid 03:53 < bridge> Why does everyone seem to have dyslexia? 03:54 < bridge> Only a small proportion of nerds read my tag correctly on the first try 04:52 < bridge> Easier to take a kid at their word when they say that’s how they read something than it is to have them read it again 04:52 < bridge> do that enough and then the kid doesn’t have to try much of the time 04:53 < bridge> also it’s hereditary 04:53 < bridge> enough broader diagnoses based on the above 06:32 < bridge> https://github.com/tee-community/tee-skin-renderer 08:28 < bridge> hi hi gm 08:43 < bridge> gm 08:59 < bridge> hi 08:59 < bridge> finally full black mode in discord 09:03 < bridge> The discord update sucks, let's go back to teamspeak 09:09 < bridge> I kinda like it, but it needs more polishment.. some things have too high contrast or look out of place 09:09 < bridge> really odd contrast and overall color choices 09:09 < bridge> not a fan 09:09 < bridge> and those darker themes are even worse 09:15 < bridge> Fun fact: if you go to experiments and find the desktop visual refresh one, you can say no to discord's bs and go back to old UI 09:15 < bridge> until they remove the experiment at least 09:48 < bridge> I have an idea, maybe just the square rotating, similar to "pulley", and you might be able to indicate strength with the rotation speed 🤔 will test this 10:37 < bridge> this is revolutionary 12:48 < bridge> Everything in ddnet is how I like it. I couldn’t do it any better. Idk how to code a working game 12:54 < bridge> @milkeeycat BIG NEWS 12:54 < bridge> https://v8.dev/blog/leaving-the-sea-of-nodes 12:54 < bridge> sea of nodes i no longer a trend 12:54 < bridge> at first I wanted to make sea of nodes ir 13:26 < bridge> is that so? Then take a look at maplayers and tell me it's absolutely how you like it 14:31 < bridge> `This is the message when neither the server responds nor the STUN server does. Since the STUN server is independent of the game server, it doesn't indicate that the game server is overloaded.` 14:32 < bridge> is the "stun server" (still not really sure what that is) a seperate executable or on the master server side? 14:37 < bridge> @kebscs We are getting there 💪 14:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354449092264198355/screenshot_2025-03-26_14-36-37.png?ex=67e55484&is=67e40304&hm=ac397932fbf2a39a25f85af0f61033b7c61dcdd246574c7867b368f7c0af52ae& 14:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354451878074650735/screenshot_2025-03-26_14-47-36.png?ex=67e5571c&is=67e4059c&hm=79d459606a2f5aa891de753aa91a02fa278348f5bf4a02559414c80c73036837& 14:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354451878595002620/screenshot_2025-03-26_14-47-41.png?ex=67e5571c&is=67e4059c&hm=5ddb7399edc8553f6c453af98b48722d815e2a31fea3a4c4f50c07012ee30fa7& 14:49 < bridge> hmm there is still an offset by 1 error 15:03 < bridge> @ryozuki how bad of an idea would it be to do something like this? https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=06ae773ffcf6b5edcb6b91f9299b90ea 😬 15:07 < bridge> Nice 15:07 < bridge> if u gonna use rc refcell just use the arena crate i sent u 15:07 < bridge> it gives u typed ids 15:08 < bridge> https://docs.rs/typed-generational-arena/latest/typed_generational_arena/ 15:08 < bridge> if u dont need removal u can use the StandardSlab arena it has 15:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354457080039346297/image.png?ex=67e55bf4&is=67e40a74&hm=91ddf9cd876005672aab5e565fb8320aa361a3ae81a0ce174ea51cd056b4f677& 15:13 < bridge> are the square heads reverted now or smth 15:13 < bridge> they are still in review 15:13 < bridge> but I can still work on this in parallel 😎 15:14 < bridge> even without touching each others code 15:15 < bridge> nice 15:18 < bridge> what if I put my laserdoor right next to yours 👉 👈 15:19 < bridge> you can even put your laserdoor over the border 😉 15:21 < bridge> I just found a bug 15:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354460338417959223/screenshot_2025-03-26_15-21-28.png?ex=67e55efd&is=67e40d7d&hm=d7104cfd20c24cb0d724aab30d6b92a501e9bc2907543b3866144ce3c5f3cb5f& 15:23 < bridge> also I think I don't get laser doors, why is the star on the left "on" when the middle door part has number 16? 15:24 < bridge> i don't really get how it would help me, i use `Rc>` to be able to insert data in the vec 15:25 < bridge> for me its more type safe, probs also more perfomant but idk, i generally dislike going for rc refcell xD 15:26 < bridge> Just copy rendering code from the existing function in game 15:26 < bridge> Thats what i did for weapon entities 15:26 < bridge> i also could just pass mutable reference to the vector, but it's stupid, it should be obvious where the new item should be added 15:27 < bridge> @ryozuki i assume you use gentoo with march=native? also mtune=native? 15:27 < bridge> 15:27 < bridge> ever did tests if they are worth it? 15:27 < bridge> yes, no 15:27 < bridge> and the 3rd answer? XD 15:27 < bridge> yes to the first 2 15:27 < bridge> no to last 15:27 < bridge> xd 15:27 < bridge> xDD 15:28 < bridge> testing for the weak 15:28 < bridge> no, I just use it directly. Also doors abuse a CLaserObject over network, I don't know how the server calculates the positions 15:28 < bridge> I see, gotta say in rust cpu-target=native seems really worth it on the x3d 15:28 < bridge> 15:28 < bridge> dunno why xd 15:28 < bridge> In c apps not really 15:29 < bridge> rust strict aliasing best 15:29 < bridge> the more never llvm the better 15:34 < bridge> The server creates a CDoor object, which also does a lot of other stuff. To say I simplified this a lot would be an understatement 15:34 < bridge> The server creates a CDoor object, which also does a lot of other stuff. To say I simplified this a lot would be an understatement, since I really only render a laser in color 15:36 < bridge> Honestly always looked like a bad idea to me, but that's because I'm just not very good with graphs, very mathematically complex 16:00 < bridge> it is suprisingly easy to make server side bots 16:05 < bridge> wtf, my browser crashed and when I restarted I have the new discord design 16:07 < bridge> unfortunate 16:16 < bridge> Hater 16:19 < bridge> yes 16:19 < bridge> 16:24 < bridge> did you like the previous design before this new one 16:24 < bridge> it didnt have a title bar or make the user thing a modal when its very much not 16:26 < bridge> I got used to the previous one, and the new one feels worse 😬 16:26 < bridge> you'll get used to this new one too 16:26 < bridge> facts 16:27 < bridge> tbh i dont even mind it 16:27 < bridge> darkest mode + compact feels a lot better on desktop 16:45 < bridge> Github cards become dark too? I think they were white in dark mode. 16:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354482043949547621/image.png?ex=67e57334&is=67e421b4&hm=e5b721899f9dd025e91f99527793d75f59ab692a8da5c006ae85b922933bb46b& 16:48 < bridge> tower 16:49 < bridge> @ryozuki I came up with a pretty cool solution, instead of storing the reference to the vector in all instances of `BasicBlock` I can make a `BuilderOrSmth` which will borrow mutably parts of `Function` and drop them when it's done https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=5ff8f636f9e5088959589759c5754070 16:50 < bridge> not bad 16:50 < bridge> but does it work well when u build complex stuff 16:50 < bridge> try a for loop or smth xd 16:55 < bridge> https://blog.rust-lang.org/2025/03/26/adopting-the-fls.html 16:57 < bridge> nice balancing 16:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354484441556324413/image.png?ex=67e5756f&is=67e423ef&hm=0a210668bf4553d4aa6dd0d9ddb9e1bae886834b58a0ddc44ed448edce8417b0& 16:57 < bridge> @learath2 https://crates.io/crates/tamago 16:57 < bridge> https://github.com/bichanna/castella 16:58 < bridge> https://github.com/bichanna/castella/tree/main/tamago 16:58 < bridge> this repo has a crate called Tamago 16:58 < bridge> https://docs.rs/tamago/0.2.0/tamago/ 17:03 < bridge> mangos mangos mangos 17:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354488838323703818/image.png?ex=67e57988&is=67e42808&hm=5ef374f93737725f79639ae6cd133bc3fe99db5c51569feec0f888e290b37464& 17:24 < bridge> ai bots in ddnet real 17:25 < bridge> i am having a lot of fun 17:25 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354491382512881805/image.png?ex=67e57be6&is=67e42a66&hm=58fdeb571e4ed08c2da804a3ba95d323819146e22a3510bbaf90b1e84019cf5c& 17:25 < bridge> Curious, generating C with rust 17:27 < bridge> stupid lost good fashion 17:28 < bridge> abooz! 17:33 < bridge> does something like this work: 17:33 < bridge> `ivec2 aOffsets[] = {{0, 1}}; ` 17:33 < bridge> it doesn't show me an error so far 17:46 < bridge> @essigautomat i meant just these 2 lines 17:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354496849519710449/image.png?ex=67e580fe&is=67e42f7e&hm=24c9c31dcbd93029cd63e596bf27eaf38091e6183e6822365ba6a2ae14b41ffc& 17:47 < bridge> x, y wont be lower than 0 bcs of the for loop 17:47 < bridge> so you dont have to use getindex here 17:53 < bridge> yes but why should I not use GetIndex here? 17:58 < bridge> bcs getindex has 4 if checks 18:01 < bridge> technically it has only 1 if check, but I know what you mean 18:03 < bridge> I prefer readability over performance there 18:04 < bridge> also I am a big hater of duplicated code 18:05 < bridge> alright 18:15 < bridge> https://www.zdnet.com/article/linux-kernel-6-14-is-a-big-leap-forward-in-performance-and-windows-compatibility/ 18:32 < bridge> @sollybunny: Bitter 18:32 < bridge> Botter 18:33 < bridge> @ryozuki: crap site with full screen cookie banner 18:33 < bridge> I refuse to stay on pages like that 19:04 < bridge> cookie banners shouldnt exist 19:05 < bridge> like what 19:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354516517051695195/image.png?ex=67e5934f&is=67e441cf&hm=8161e5e8d15d57f6da13cba1632ec8ba199c60cf2d827c37b5f35f59bc61d4d4& 19:05 < bridge> the fuck are any of these 19:05 < bridge> you dont need to store cookies on my deivce to track me, and youre doing that anyway 20:55 < bridge> hi 20:55 < bridge> how are you 20:55 < bridge> how am i? 20:55 < bridge> idk 20:55 < bridge> i am in a liminal state of experience rn 22:23 < bridge> go open some prs im ready to snipe #1000 22:23 < bridge> https://github.com/ddnet/ddnet/pull/1000 22:23 < bridge> go open some prs im ready to snipe #10000 22:24 < bridge> :kek: 22:25 < bridge> xd 22:25 < ChillerDragon> can we get more ddnet maintainers pls? 22:26 < ChillerDragon> the wait times for prs are really annoying right now 22:26 < bridge> chiller for a maintainer 👍 22:26 < bridge> :owo: 22:26 < ChillerDragon> kaffeine for maintainer 22:27 < bridge> me for maintainer, everything chillerdragon related = approved 22:27 < ChillerDragon> cellgen for maintainer 22:27 < bridge> :greenthing: 22:28 < bridge> kaffeine should be a maintainer 22:29 < bridge> i want them scary rewrite everything changes 22:29 < bridge> hey thats me 22:31 < bridge> when /report 22:33 < bridge> furo should be one impo 22:35 < bridge> Accounts. 22:36 < bridge> ./report can just ping mods on a private channel with server ip and have a cooldown per server 👍 22:36 < bridge> Afair archimede is/was maintainer, hope he's doing well haven't seen him in a long time 22:36 < bridge> ./report could just ping mods on a private channel with server ip and have a cooldown per server 👍 22:37 < bridge> ``` 22:37 < bridge> "nameless tee" reported a blocker on: 22:37 < bridge> #1 Blocker - DDNet | CopyLoveBox 22:37 < bridge> ``` 22:38 < bridge> ``` 22:38 < bridge> "nameless tee" reported a blocker on: 22:38 < bridge> Server: #1 Blocker - DDNet | map: CopyLoveBox 22:38 < bridge> ``` 22:38 < bridge> @ everyone @ here @ moderator @ discord mod 22:38 < bridge> :monkalaugh: 22:39 < bridge> uhm i dont have to deal with it so i think its a good idea 22:39 < bridge> same 22:39 < bridge> would be nice if reports were grouped (the bot would edit the msg) 22:39 < bridge> 2 years little one 22:39 < bridge> so 1 ping per report 22:39 < bridge> if you applied for a mod its your problem now deal with my reports 😄 22:39 < bridge> :KEKW: 22:40 < bridge> how about no pings 22:40 < bridge> and its like a forms channel 22:40 < bridge> and it creates a new form for every report 22:40 < bridge> i hate the forms channel 22:40 < bridge> forms are the best wdym?? 22:40 < bridge> specially if i have to access many forumn posts 22:40 < bridge> Ah yes I do love me some tickets 22:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354570851290321047/Screenshot_20250326-223946.png?ex=67e5c5e9&is=67e47469&hm=252ebbded5032beb0287adb7053040db06f3b3b50d31da1ecc309ab4a8e4cd7a& 22:41 < bridge> i complain about moderation alot, but i never *ping* anyone (im better than everyone else) 22:41 < bridge> I love when they ping Chinese moderators in a ticket written in russian 22:41 < bridge> tickets are a bad design 22:41 < bridge> The hell they supposed to do :kekw: 22:42 < bridge> ./report with idk 15min cooldown per server, and it just sends a msg on a private channel 22:42 < bridge> nameless tee reported on 127.0.0.1 ddnet ger novice, with message: blocker :) 22:43 < bridge> what stops the blocker from sending a fake report, creating an internal cool down so he can't be reported ingame anymore? 22:43 < bridge> ^ thats a problem with vote kicks 22:43 < bridge> ^ thats a problem with vote kicks aswell 22:43 < bridge> It all comes down to accounts 22:43 < bridge> hmm 22:43 < bridge> good point 22:43 < bridge> along with the everlasting desire for humans to expand, account with solve reports 22:43 < bridge> so no cooldown pers server just per player 22:43 < bridge> so no cooldown per server just per player 22:43 < bridge> or ip 22:45 < bridge> People discovering {insert IP changing method here} spamming a report every 10 seconds 22:46 < bridge> why havent accounts been added yet? 22:46 < bridge> They still cooking 22:46 < bridge> ok so you need to be on server for at least 5/10min to use /report 22:46 < bridge> so now its spammed every 10min not 10s 22:46 < bridge> it would be poggers to have it hooked up like other communities have 22:46 < bridge> before implementing it in ui 22:47 < bridge> People joining 50 servers via {insert method to do that here}, sending 50 reports at once every 10 minutes 22:47 < bridge> :justatest: 22:47 < bridge> I don't see a way how this cannot be abused 22:47 < bridge> ignore false reports 👍 22:48 < bridge> Without accounts and a verification method like 2FA, Discord or steam 22:48 < bridge> A good discussion can be found within the Accounts issue on GitHub 22:48 < bridge> It's a disgusting discussion but that topic has been running in there as well 22:49 < bridge> :/ 22:51 < bridge> accounts code started in rust and now the dev does smth diff 22:51 < bridge> ddnet rewrite 22:51 < bridge> and noone wants to touch the rust code.. 22:52 < bridge> Eh the accounts code is done and fully functional, afair it's on hold until Heinrich finished QUIC to write the client implementation 22:53 < bridge> (why quic?) 22:53 < bridge> Eh the accounts code is done and fully functional, afair it's on hold until Heinrich finishes QUIC to write the client implementation 22:53 < bridge> :dTeuPeposhrug: sorry no idea 22:53 < bridge> It's just what I picked up 22:54 < bridge> It gives us encryption among other things, which is required for accounts 22:54 < bridge> couldnt it be not rust 22:54 < bridge> I think especially for that usecase rust was a great choice 22:55 < bridge> why do we need encryption? 22:55 < bridge> I think so too 22:56 < bridge> how does rcon stuff work 22:56 < bridge> Well doesn't ddnet send all data in plaintext? 22:56 < bridge> It's rather unsafe innit 22:56 < bridge> Well doesn't ddnet send almost all data in plaintext? 22:56 < bridge> maybe, but not for a project where no other dev does rust 22:56 < bridge> are you really asking why account network stuff needs encryption? xd 22:56 < bridge> so we just indefinetly wait for heinrich 22:56 < bridge> authentication can be doen without the protocol its on supporting encryption 22:56 < bridge> Like half of the DDNet dev team knows rust xd 22:57 < bridge> if we are to add accounts then the entire point would be to have a handle on each user uniquely and individually, without encryption you are begging to have compromised account details in things like third party clients 22:57 < bridge> already shady and widespread clients 22:57 < bridge> it would be nice if everything authentication and rcon was encrypted but its not required 22:57 < bridge> cant tell with how fast its progressing 22:58 < bridge> it is 2025, yes it is 22:58 < bridge> it just means playing on public networks means they can sniff rcon data but not auth 22:59 < bridge> i hope that rcon auth isnt just sent in plaintext 22:59 < bridge> Me make client 22:59 < bridge> Me send u client 22:59 < bridge> U start client 22:59 < bridge> I see your config dir 22:59 < bridge> I sniff 22:59 < bridge> I steal 22:59 < bridge> I win 22:59 < bridge> Given it's.. all plaintext 22:59 < bridge> same with accounts 22:59 < bridge> same with everything encrypted 22:59 < bridge> just steal the auth token 22:59 < bridge> or when i type in password/username 23:00 < bridge> - and is pubkey encrypted 23:00 < bridge> \- and is pubkey encrypted 23:00 < bridge> why would it be 23:00 < bridge> because your making it seem like a sniffer could steal an rcon password 23:01 < bridge> 95% of registered kog enjoyers have their login token bound to l 23:01 < bridge> Which is saved in plaintext 23:02 < bridge> yep 23:02 < bridge> same thing with rcon logins 23:02 < bridge> i have it in my bindwheel actually 23:02 < bridge> it is just in plain text 23:02 < bridge> They can. You shouldn't auth on an insecure network without a VPN at the moment 23:02 < bridge> See https://github.com/heinrich5991/libtw2/tree/master/wireshark-dissector 23:02 < bridge> that should be changed 23:02 < bridge> but just the authentication *can* be pubkey encrypted 23:02 < bridge> :nouis: 23:03 < bridge> also a malicious client has much more things to do than steal your kog credentials :) 23:03 < bridge> 🤑 23:03 < bridge> kog credentials is just 1 of the credentials its gonna steal 23:04 < bridge> That's probably not a scenario that the account system would be robust against, if an attacker compromised your machine you have bigger problems 23:04 < bridge> That's why you don't run untrusted binaries of anything 23:04 < bridge> 23:04 < bridge> But we can only protect our user base *that much* 23:04 < bridge> idk why people do that, so easy to fat finger on a server which echos the message back 23:04 < bridge> XDDDD 23:04 < bridge> devhub moment 23:05 < bridge> about to say 23:05 < bridge> :Aware: oh god what have you done 23:05 < bridge> I stole your rcon!!! 23:05 < bridge> You wouldn't ever know 23:05 < bridge> like voldermourt client 23:06 < bridge> I have it on f5 23:06 < bridge> hard to far finger 23:06 < bridge> i use f5 for +hookcoll 23:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354577287709986999/image.png?ex=67e5cbe8&is=67e47a68&hm=7d98f54bd0fc2c15d3cd5af5be5bdee01c667633d7271ea2d4596e06fe7e1ba2& 23:06 < bridge> ?????? 23:06 < bridge> wtf 23:06 < bridge> i dont use it that much 23:06 < bridge> i have hook lines turned on permantnly, its just for other people 23:07 < bridge> hack client 23:07 < bridge> self report 23:07 < bridge> its not turing complete sadly so no 23:08 < bridge> recently ive got no cursor either, i found that i didnt need it 23:09 < bridge> :KEKW: 23:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354577998753562824/Screenshot_20250326-230903.png?ex=67e5cc91&is=67e47b11&hm=2129fb0bbf2d1e131e5ae2e69cf22833fb365b77c5bac0de55af62f1bd1fd46f& 23:09 < bridge> psssshhh 23:10 < bridge> It's like 2x faster now tho 23:10 < bridge> 9.8m tps on jupstar cpu single core 23:11 < bridge> Mother of god, I peaked at 6m tps and thought it's decent 23:11 < bridge> on ctf1 too 23:11 < bridge> so many pickups 23:11 < bridge> Or did you improve it even harder 23:11 < bridge> Well I optimized multiple rhings 23:11 < bridge> Yes ofc xd 23:11 < bridge> c99 masterrace 23:11 < bridge> :KEKW: 23:11 < bridge> I'm still reading that manual tater sent me 23:11 < bridge> There is a lot of cool stuff in it 23:12 < bridge> link it to me in {secret gigachad DC} 23:13 < bridge> It's fine here. It's a good resource 23:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354578993780625849/optimizing_cpp.pdf?ex=67e5cd7e&is=67e47bfe&hm=6f69779837c17eee615e482c39298694ec5c8669031bb09094015ca20d2eafb5& 23:13 < bridge> nice pdf file 23:13 < bridge> The website is linked inside 23:13 < bridge> is this gonna steal my rcon? 23:13 < bridge> defo a virus 23:13 < bridge> It's one manual of a series 23:13 < bridge> sure 23:14 < bridge> If not for the 50 pickups on ctf1 jupstar can prob do 12m xd 23:15 < bridge> :Aware: 23:15 < bridge> I haven't done pickup chunking yet and there is some stuff you can precalculate 23:19 < bridge> btw @teero777 have you made it so it only calculates hook collision only when the hook starts 23:19 < bridge> no. 23:19 < bridge> do that 23:20 < bridge> that would help a lot. Doesn't it change physics? 23:20 < bridge> you hook destination cant change 23:20 < bridge> your hook can be detacthed by a tp or dead player but that should be fine 23:20 < bridge> (you do have to take into account hook travel time) 23:20 < bridge> another player could also run into your hook 23:21 < bridge> oh that is true 23:21 < bridge> darn ):< 23:21 < bridge> well you can definatley cut down alot of the hook calculations still 23:21 < bridge> Also calculating one big intersectline isn't much more perf than doing multiple small ones 23:21 < bridge> well you are doing 1 every frame vs 1 every hook 23:21 < bridge> Intersect line is pretty optimized already in my code 23:21 < bridge> no? xd 23:22 < bridge> Only when the hook flys 23:22 < bridge> oh well yeah 23:22 < bridge> do you want to send ur password "mymomlovesme" over plain text? 23:22 < bridge> see the rest of the conversation 23:22 < bridge> tldr: you can pubkey encrypt passwords/authentication without the whole thing being encrypted 23:22 < bridge> we all do rust 23:23 < bridge> heinrich quic poc is really nice, its transparent to the protocol 23:24 < bridge> is this on the server that hates ddnet devs? xd 23:25 < bridge> mde of only ddnet devs 23:25 < bridge> 🤷 rule nr. 1 of bookclub 23:25 < bridge> 23:25 < bridge> You don't talk about bookclub 23:25 < bridge> i broke rule nr. 1 23:25 < bridge> im not there so 23:25 < bridge> False, we have enjoyers of other communities aswell 23:25 < bridge> but i heard u hate us 23:25 < bridge> jupstar is in it 23:25 < bridge> interesting 23:25 < bridge> :justatest: 23:26 < bridge> :monkalaugh: 23:26 < bridge> :justatest: 23:26 < bridge> XDDDD 23:26 < bridge> moment 23:26 < bridge> is it ppl without merge rights complaining about ppl with merge rights + jupstar? xd 23:26 < bridge> not at all, ddnet is rarely a topic actually 23:27 < bridge> It's just needs living life 23:27 < bridge> :owo: 23:27 < bridge> It's just nerds living life 23:27 < bridge> this chat is also rarely on topic 23:27 < bridge> *very rarely* 23:27 < bridge> yeah true, we're ddnet-rs simps 23:27 < bridge> please move breaking rule no.1 to offtopic 23:28 < bridge> [cat_uwu](https://cdn.discordapp.com/emojis/1230626195649990696.webp?size=48&name=cat_uwu) 23:28 < bridge> maybe it was another server 23:28 < bridge> i forgor 23:28 < bridge> It's bound to development :cammo: 23:28 < bridge> I know one... :cat_cracked_hehe: 23:28 < bridge> But to be fair, I'm literally everywhere 23:28 < bridge> I like to get involved, not even sure why 23:29 < bridge> you are not on the sigma discord.... And you don't want to be 23:29 < bridge> :justatest: 23:29 < bridge> meanwhile here i am oblivious to the back rooms 23:29 < bridge> entry level there is 2 discord warnings 23:29 < bridge> 💀 23:29 < bridge> i have been banned from ddnet twice 23:29 < bridge> iirc 23:29 < bridge> It was jao wasn't it 23:30 < bridge> heinrich 23:30 < bridge> xd 23:30 < bridge> Xd 23:30 < bridge> also i had a vendetta against gdin 23:30 < bridge> xd 23:30 < bridge> Dinner my beloved 23:30 < bridge> haha what about meskalin 23:30 < bridge> and onionme 23:30 < bridge> HE WAS ONLINE FOR THE NAUFRAGE EVENT 23:30 < bridge> He hates you with passion 23:30 < bridge> oh yeah 23:30 < bridge> I was so happy 23:30 < bridge> did meskalin have other names 23:30 < bridge> was he vali 23:30 < bridge> no 23:30 < bridge> teemo 23:30 < bridge> no 23:30 < bridge> Vali is someone lese 23:31 < bridge> Meskalin O.o 23:31 < bridge> how do u know that tho 23:31 < bridge> goated guy 23:31 < bridge> there are at least 3 ddnet members in that dc 😄 23:31 < bridge> xd 23:32 < bridge> anyone seen soreu? 23:32 < bridge> and you know all 3 in rl 23:32 < bridge> hi_leute_gll 23:32 < bridge> :o 23:32 < bridge> Been a while, last seen 2015 23:32 < bridge> no, he rq'd and also said he does not plan to come back 23:32 < bridge> why im not invited then 23:32 < bridge> :d 23:32 < bridge> dunno xd 23:32 < bridge> reminds me of voxel.. but soreu had other problems 23:33 < bridge> We need to keep the rust <-> everything else balance xd 23:33 < bridge> he worked as security iirc 23:33 < bridge> looking at cameras 23:33 < bridge> oh u dont want rust preachers i see 23:33 < bridge> xd 23:33 < bridge> you can have my slot on that server 23:33 < bridge> we already have like 5 23:33 < bridge> ???? 23:33 < bridge> ??? 23:33 < bridge> but from my pov ddnet tech advancements are all rust 23:33 < bridge> You isn't leaving boy 23:33 < bridge> You is staying 23:33 < bridge> thanks to zwelf and patiga 23:33 < bridge> jupstar is my second cpu 23:34 < bridge> He can't leave 23:34 < bridge> and juppey 23:34 < bridge> :justatest: 23:34 < bridge> :KEKW: :KEKW: 23:34 < bridge> I'm finally free 23:34 < bridge> true, they huge enjoyers 23:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1354584378998521996/image-44.png?ex=67e5d282&is=67e48102&hm=a3e065cd7dae7b12cd54fccf3f78fc2ca41833bd1a3b64507b9899b2de472ceb& 23:35 < bridge> do you have interesting coding convos or its just memes 23:35 < bridge> it's 2 nerds talking about algorithms, a lot of cars and memes 23:35 < bridge> riozaki 23:35 < bridge> Dunno, I'm about to sleep and no one here can help me with coding soooo 23:35 < bridge> ryuzaki 23:36 < bridge> Dunno, I'm about to sleep and no one here is able help me with coding soooo 23:36 < bridge> i would help u but u use C kek 23:36 < bridge> it's mostly about everyone talks about their projects 23:36 < bridge> Wake learath 23:36 < bridge> and other ppl sometimes give feedback 23:36 < bridge> thats nice 23:36 < bridge> That ddnet playground thing you did 23:36 < bridge> i do that, but here xd 23:36 < bridge> Hate it, should've written it in haskell 23:36 < bridge> :cat_cracked_hehe: 23:36 < bridge> @blaiszephyr learn ocaml 23:36 < bridge> ocaml is pog it just has bad tooling 23:36 < bridge> I rather learn MilkeeyCats lang 23:37 < bridge> should have written in javascript and have 30k fps 23:37 < bridge> 23:37 < bridge> then learath would hate me for live 23:37 < bridge> :KEKW: 23:37 < bridge> u mean 30 fps 23:37 < bridge> well c is much easier xd 23:38 < bridge> also there is so much cool obscure stuff in c that can gain your performance 23:38 < bridge> also there is so much cool obscure stuff in c that can gain you performance 23:38 < bridge> yeah 23:38 < bridge> have u heard of the noalias keyword 23:38 < bridge> :gigachad: 23:39 < bridge> well i guess its a extension 23:39 < bridge> idk the c spec but c likes to alias everything and lose info on everything at function calls 23:39 < bridge> restrict? xd 23:40 < bridge> yeah why u like c99 so much bro 23:40 < bridge> when did that love evolve 23:40 < bridge> i get it, the "simple" has a superficial feeling that makes u like it initially 23:40 < bridge> until u go to the mines 23:40 < bridge> back in grade school when I first saw her 23:41 < bridge> There is a lot of inconvenient stuff too 23:41 < bridge> but it's a tradeoff 23:41 < bridge> I'd like generics 23:41 < bridge> but you can also write such code in rust and still have all other advantages 23:42 < bridge> 5 minute build times for example 23:42 < bridge> XDDD 23:42 < bridge> what do you think why rust is liked so much in embedded world 23:42 < bridge> generics are generally slower yeah 23:42 < bridge> i want to present u a nice thread from a C researcher (they have C proposals) https://x.com/__phantomderp/status/1904259043025207312 23:42 < bridge> safety? xd 23:42 < bridge> Can't have your coffee machine segfault on you 23:42 < bridge> xd 23:42 < bridge> Lmao 23:43 < bridge> it's bcs no_std feels well abstracted from what is a std similar to cpp std 23:43 < bridge> Getting Core dumped while making a latte 23:43 < bridge> while still giving enough high level features to make your life easy 23:43 < bridge> > I'd also like to add that Fortran's model for function arguments and arrays are also not dogshit-ass. In C, passing an array -- a very fundamental data structure -- nukes it into a pointer, which loses size information immediately. 23:43 < bridge> > Fortran has full support for not only passing that information along at either compile-time or run-time, but does not drop that information on the ground. In doing so, you can do whole-array and whole-object reasoning without a single pointer. 23:43 < bridge> > 23:43 < bridge> > That means no escape analysis. 23:43 < bridge> > Most C/C-family-language people don't understand just how fucked their base models are by treating everything by an aliases-everything, points-anywhere, always-maybe-invalid address whose information is constantly stripped off and removed by most function calls performed on it. 23:43 < bridge> > tl;dr Fortran doesn't have delirious pointer dementia and it means the compiler can reason succinctly and thoroughly about your program without the Latest and Greatest and Most Expensive Optimization And Analysis Underfunded Ph.D. Candidates Can Produce. 23:43 < bridge> > Being less saucy about it: stronger models are how you beat C and C++ code. And not frontend models that are all fluff but compile down to the same stuff like with gc langs, I mean actual, tangible, "this means something and you can't just ignore it" base model improvements. 23:43 < bridge> > C and C++ people have been hemming and hawing over `restrict`. It takes insane discipline to apply it codebase-wide, but once you do it and add a bunch of other annotations you start scratching optimized Fortran-kernel performance levels. 23:44 < bridge> > You see this play out in Zig in real-time: arguments alias by default, and so in an experiment someone sat down and spent a long time just annotating every argument in their code with "noalias" and suddenly got back nearly double-digit performance percentages. 23:44 < bridge> > 23:44 < bridge> > Weak models suck. 23:44 < bridge> and high level does not always mean slow 23:44 < bridge> A stack string is also a high level struct 23:44 < bridge> how do u always copy this so fast 23:44 < bridge> xD 23:44 < bridge> used this https://twitter-thread.com/t/1904259043025207312 23:44 < bridge> xd 23:45 < bridge> That's why I like c++ 23:45 < bridge> 23:45 < bridge> Everything is high level if you squish enough shit into it 23:45 < bridge> Wanted to react to this gg 23:45 < bridge> okay I'ma slap noalias on some things tmrw let's see ig 23:45 < bridge> xDDDD 23:46 < bridge> good luck, its inherently hard to do specially on C without getting UB 23:46 < bridge> u rly need expert level C there 23:46 < bridge> im sure even lea get it wrong 23:46 < bridge> the problem is, you always fuck up 23:46 < bridge> u get that for free in rust 23:46 < bridge> no matter the language.. it's just that on c u have a hard time debugging and finding it xdx 23:46 < bridge> no matter the language.. it's just that on c u have a hard time debugging and finding it xd 23:46 < bridge> noalias means to put restrict on every param right? 23:47 < bridge> What can cause ub here if the pointers are never the same xd 23:47 < bridge> https://en.cppreference.com/w/c/language/restrict 23:47 < bridge> During each execution of a block in which a restricted pointer P is declared (typically each execution of a function body in which P is a function parameter), if some object that is accessible through P (directly or indirectly) is modified, by any means, then all accesses to that object (both reads and writes) in that block must occur through P (directly or indirectly), otherwise the behavior is undefined: 23:48 < bridge> ```c 23:48 < bridge> void f(int n, int * restrict p, int * restrict q) 23:48 < bridge> { 23:48 < bridge> while (n-- > 0) 23:48 < bridge> *p++ = *q++; // none of the objects modified through *p is the same 23:48 < bridge> // as any of the objects read through *q 23:48 < bridge> // compiler free to optimize, vectorize, page map, etc. 23:48 < bridge> } 23:48 < bridge> 23:48 < bridge> void g(void) 23:48 < bridge> { 23:48 < bridge> extern int d[100]; 23:48 < bridge> f(50, d + 50, d); // OK 23:48 < bridge> f(50, d + 1, d); // Undefined behavior: d[1] is accessed through both p and q in f 23:48 < bridge> } 23:48 < bridge> ``` 23:48 < bridge> Languages like c++ just go boom and flips everything 23:48 < bridge> 23:48 < bridge> C gives you splinters if you're not careful, hurts a bit if you step on it and is really painful to get out again 23:48 < bridge> I go sleep, gn! 23:48 < bridge> Green button hype tomorrow 23:48 < bridge> > Assignment from one restricted pointer to another is undefined behavior, except when assigning from a pointer to an object in some outer block to a pointer in some inner block (including using a restricted pointer argument when calling a function with a restricted pointer parameter) or when returning from a function (and otherwise when the block of the from-pointer ended): 23:48 < bridge> i dont even understand what u mean with flip xD 23:49 < bridge> LEZ GO, makes the night even more enjoyable 23:49 < bridge> you take program, Flip and shake it until it breaks 23:49 < bridge> Yeah totally .. 23:49 < bridge> > To avoid undefined behavior, the programmer must ensure that the aliasing assertions made by the restrict-qualified pointers are not violated. 23:49 < bridge> yea I know how restrict works xd 23:50 < bridge> this is fine tho 23:50 < bridge> also asan detects this right? 23:50 < bridge> also ubsan detects this right? 23:50 < bridge> :cammostripes: 23:51 < bridge> just learn it and then do the emoji 23:51 < bridge> no 23:51 < bridge> im not seeing it 23:53 < bridge> maybe -Werror=strict-aliasing 23:53 < bridge> i dont think its the same so no 23:53 < bridge> since we dont want aliasing at all xd 23:54 < bridge> anyway good night