00:41 <+bridge> [ddnet] Ah btw maybe my question in #mapping is maybe a question for this channel 🙂 09:57 <+bridge> [ddnet] thanks you fokko thank you heinrich 🥹 09:57 <+bridge> [ddnet] thank you fokko thank you heinrich 🥹 10:01 <+bridge> [ddnet] next nightly's going to be so cool... not only do we get to have the readd function but the multicolored lasers thing 11:29 <+bridge> [ddnet] 16.4-rc1 with https://github.com/ddnet/ddnet/pull/5802 or without? 12:41 <+bridge> [ddnet] I think it is without if i read it correctly 12:41 <+bridge> [ddnet] @Voxel 13:58 <+bridge> [ddnet] https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/ 14:00 <+bridge> [ddnet] @heinrich5991 i think you shouldn't change authorship when squashing commits 14:01 <+bridge> [ddnet] I didn't, I htink 14:03 <+bridge> [ddnet] ``` 14:03 <+bridge> [ddnet] commit 5deeb299fa01ac10aad5d08416b002dbbda948d3 14:03 <+bridge> [ddnet] Author: fokkonaut <35420825+fokkonaut@users.noreply.github.com> 14:03 <+bridge> [ddnet] 14:03 <+bridge> [ddnet] Add DDNetLaser to have more info about a laser shot 14:03 <+bridge> [ddnet] 14:03 <+bridge> [ddnet] commit 03b90f4f3dfefd8be96d0213ec311197d051aafc 14:03 <+bridge> [ddnet] Author: VoxelDoesCode 14:03 <+bridge> [ddnet] 14:03 <+bridge> [ddnet] Added new cl colors and tweaked the settings menu 14:03 <+bridge> [ddnet] 14:03 <+bridge> [ddnet] commit 6907895ee5574ad501aa7b75b8474576349340f1 14:03 <+bridge> [ddnet] Author: heinrich5991 14:03 <+bridge> [ddnet] 14:03 <+bridge> [ddnet] Add LASERTYPE enum 14:03 <+bridge> [ddnet] ``` 14:04 <+bridge> [ddnet] ah, do you mean the first commit? I guess I could have attributed it to fokkonaut. I had to split the last commit into two, so that the other two commits compile on their own 14:04 <+bridge> [ddnet] (it's a very trivial commit though) 14:04 <+bridge> [ddnet] ``` 14:04 <+bridge> [ddnet] commit 5deeb299fa01ac10aad5d08416b002dbbda948d3 14:04 <+bridge> [ddnet] Author: fokkonaut 14:04 <+bridge> [ddnet] 14:04 <+bridge> [ddnet] Add DDNetLaser to have more info about a laser shot 14:04 <+bridge> [ddnet] 14:04 <+bridge> [ddnet] commit 03b90f4f3dfefd8be96d0213ec311197d051aafc 14:04 <+bridge> [ddnet] Author: VoxelDoesCode 14:04 <+bridge> [ddnet] 14:04 <+bridge> [ddnet] Added new cl colors and tweaked the settings menu 14:04 <+bridge> [ddnet] 14:04 <+bridge> [ddnet] commit 6907895ee5574ad501aa7b75b8474576349340f1 14:04 <+bridge> [ddnet] Author: heinrich5991 14:04 <+bridge> [ddnet] 14:04 <+bridge> [ddnet] Add LASERTYPE enum 14:04 <+bridge> [ddnet] ``` 14:08 <+bridge> [ddnet] :thonk: 14:11 <+bridge> [ddnet] @heinrich5991 did you review my commit about DDNetLaser tho? I think it should be fine, but I dont remember everything rn 14:25 <+bridge> [ddnet] yup i think it "belongs" to fokko or voxel. Im a little bit fussy about authorship because i've seen really unethical practice in my previous job 14:30 <+bridge> [ddnet] i want that authorshiü 14:30 <+bridge> [ddnet] p 14:31 <+bridge> [ddnet] German leaking 14:31 <+bridge> [ddnet] wat 14:31 <+bridge> [ddnet] Üü 14:31 <+bridge> [ddnet] Ö 14:31 <+bridge> [ddnet] ü 14:32 <+bridge> [ddnet] make a PR with a revert and then add it back yourself if you feel that strongly about it 14:33 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1019949121043443832/unknown.png 14:33 <+bridge> [ddnet] well seems like its correct 14:36 <+bridge> [ddnet] i actually have no idea how git handles multiple authorships and how it knows who authored and who committed 14:41 <+bridge> [ddnet] Trailers 14:41 <+bridge> [ddnet] https://www.learnhowtoprogram.com/introduction-to-programming/git-html-and-css/commit-trailers-and-github-contributions 15:31 <+bridge> [ddnet] Seriously cf's blogs are too good 15:33 <+bridge> [ddnet] I also like them. this one doesn't have too much technical stuff, unfortunately 15:33 <+bridge> [ddnet] but they say they want to open-source it "eventually" 15:44 <+bridge> [ddnet] https://www.reddit.com/r/ProgrammerHumor/comments/xeo5ab/junior_vs_senior/ 16:38 <+bridge> [ddnet] https://devblogs.microsoft.com/cppblog/dev-containers-for-c-in-visual-studio/ 16:41 <+bridge> [ddnet] When you are used to your fast pc that using anothers not so good pc feels incredibly slow 16:41 <+bridge> [ddnet] 16:42 <+bridge> [ddnet] Also eth merged or smth and no longer proof of work 16:42 <+bridge> [ddnet] Best time to buy a gpu is now 16:42 <+bridge> [ddnet] Probs 16:43 <+bridge> [ddnet] Rx 6700 xt at 480€ 16:43 <+bridge> [ddnet] I bought my rx 6600 xt for 600 16:43 <+bridge> [ddnet] God dann 16:43 <+bridge> [ddnet] God damn 17:50 <+bridge> [ddnet] Wot? Did gpu prices dip? Invest in gpu now?! 18:38 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1020010722777894984/RDT_20220915_1838175801596503301444165.jpg 18:53 <+bridge> [ddnet] `dd if=/dev/zero of=/dev/sda bs=1M` go 18:58 <+bridge> [ddnet] lol 18:59 <+bridge> [ddnet] Yes, I recently bought the 24GB GIGABYTE GeForce RTX 3090 Ti 19:00 <+bridge> [ddnet] My PC doesn't work anymore now 19:01 <+bridge> [ddnet] Maybe he executed it on a vm on his pc idk xD 19:02 <+bridge> [ddnet] echo "c, c++ & java are all better than rust" 19:07 <+bridge> [ddnet] Do you know if I could somehow pass a held mutex to another function? specifically a std::lock_guard 19:08 <+bridge> [ddnet] Mh, maybe just commenting `// DONT CALL WITHOUT HOLDING m_Lock` is good enough 😄 19:08 <+bridge> [ddnet] put the lock_guard in a unique_ptr? 19:08 <+bridge> [ddnet] and I can check it with TSan if we ever figure out how to get it to work with std::mutex 19:09 <+bridge> [ddnet] lock_guard locks the mutex on constructor and unlocks on destructor 19:10 <+bridge> [ddnet] at least that sounds reasonable to me to use a unique_ptr for that 19:11 <+bridge> [ddnet] is your goal to check if the mutex is locked inside the function? 19:11 <+bridge> [ddnet] Well the mutex must be held while you call the function, that's the constraint I want to enforce 19:12 <+bridge> [ddnet] Now that I think about it, passing a mutex doesn't work to begin with, no way to make sure it's the mutex I want locked 19:12 <+bridge> [ddnet] I think this is a job for TSan 19:12 <+bridge> [ddnet] or just try_lock 19:12 <+bridge> [ddnet] its either locked or you now lock it 19:13 <+bridge> [ddnet] but I don't think that tells me if I hold the lock. The main thread could be holding it aswell 19:14 <+bridge> [ddnet] so u want to pass a locked mutex from one thread to another? 19:15 <+bridge> [ddnet] No, that's very very undefined anyway 😄 19:15 <+bridge> [ddnet] i mean if u do 19:15 <+bridge> [ddnet] 19:15 <+bridge> [ddnet] lock 19:15 <+bridge> [ddnet] func() 19:15 <+bridge> [ddnet] 19:15 <+bridge> [ddnet] or func(mutex& m) 19:15 <+bridge> [ddnet] m.lock() 19:15 <+bridge> [ddnet] I'm staying within the same thread 19:15 <+bridge> [ddnet] i mean if u do 19:15 <+bridge> [ddnet] 19:15 <+bridge> [ddnet] lock 19:15 <+bridge> [ddnet] func() 19:15 <+bridge> [ddnet] 19:15 <+bridge> [ddnet] or func(mutex& m) 19:15 <+bridge> [ddnet] m.try_lock() 19:16 <+bridge> [ddnet] or adapt_lock probs 19:16 <+bridge> [ddnet] tbh just add an assert 19:16 <+bridge> [ddnet] and call it a day xd 19:16 <+bridge> [ddnet] while(try_lock) probs sucks xD 19:16 <+bridge> [ddnet] if(!has_lock) 19:16 <+bridge> [ddnet] lock 19:17 <+bridge> [ddnet] i think unique_lock has a check if its locked 19:17 <+bridge> [ddnet] > If try_lock is called by a thread that already owns the mutex, the behavior is undefined. 19:17 <+bridge> [ddnet] "operator bool 19:17 <+bridge> [ddnet] 19:17 <+bridge> [ddnet] tests whether the lock owns (i.e., has locked) its associated mutex 19:17 <+bridge> [ddnet] (public member function)" 19:17 <+bridge> [ddnet] So that's a no-go anyway 19:18 <+bridge> [ddnet] yeah i was just confused by ur other thread statement 19:18 <+bridge> [ddnet] which is already UB 19:18 <+bridge> [ddnet] A `recursive_mutex` actually handles it quite well, but I think I'll just add a comment for now and check it with TSan later 19:19 <+bridge> [ddnet] Just wanted to ask to see if there is a common pattern when calling functions making sure a lock is held 19:21 <+bridge> [ddnet] show me the code 19:21 <+bridge> [ddnet] maybe u are doing it too complicated 19:24 <+bridge> [ddnet] You'll see it when I push, fwiw I already coded it in a way that it's never called without the mutex being held, just want to make it safer in case I want to modify it later 19:25 <+bridge> [ddnet] well one way is 19:25 <+bridge> [ddnet] build a wrapper around the object u protect and take the object as reference in the function 19:25 <+bridge> [ddnet] 19:25 <+bridge> [ddnet] auto& obj = wrapper.lock(); 19:25 <+bridge> [ddnet] func(obj) 19:25 <+bridge> [ddnet] wrapper.unlock() 19:31 <+bridge> [ddnet] that's literally what TSA solves (not TSan) 19:31 <+bridge> [ddnet] did clang15 release already for arch? 19:31 <+bridge> [ddnet] i still get warnings 19:31 <+bridge> [ddnet] bcs of it xd 19:31 <+bridge> [ddnet] no 19:31 <+bridge> [ddnet] Oh yeah, it's not a sanitizer is it. It's an "Analyzer" 😄 19:32 <+bridge> [ddnet] debian experimental already has clang15 19:32 <+bridge> [ddnet] ez 19:33 <+bridge> [ddnet] faster than arch xd 19:49 <+bridge> [ddnet] rust mutex holding the data in it is such a smart move 19:49 <+bridge> [ddnet] c++ does it wrong 19:49 <+bridge> [ddnet] :BASED: 19:49 <+bridge> [ddnet] why is there no std::mutex 19:50 <+ChillerDragon> @k2d222 du bist ein käse 19:51 <+ChillerDragon> your CV says you are fluent in english and yet your website is full baguette xd 19:51 <+ChillerDragon> oh wait there is /en 19:51 <+ChillerDragon> its just not default 19:52 <+bridge> [ddnet] lol 19:52 <+ChillerDragon> i totally didnt stalk you 19:52 <+bridge> [ddnet] oui oui baguette 19:52 <+ChillerDragon> :D 19:53 <+bridge> [ddnet] 👀 👀 19:53 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1020029597871513620/unknown.png 19:53 <+bridge> [ddnet] wth is this 🤣 19:54 <+bridge> [ddnet] 💚 19:55 <+bridge> [ddnet] `sudo rm -rf / --no-preserve-root` 19:55 <+ChillerDragon> aw shit u stalked me back 19:55 <+ChillerDragon> i actually did not use a tool for that 19:56 <+ChillerDragon> but daily commitment and commit timing :D 19:56 <+bridge> [ddnet] WAT 19:56 <+ChillerDragon> ikr 19:56 <+ChillerDragon> im pationate 19:56 <+bridge> [ddnet] that is 63 days worth of commitment 19:56 <+bridge> [ddnet] worth it 19:56 <+ChillerDragon> yes! 19:57 <+ChillerDragon> i think at some point i was in france camping 19:57 <+ChillerDragon> and pooped some commits from my phone 19:58 <+ChillerDragon> tbh the 3 rows of no commits were the hardest part 19:58 <+ChillerDragon> i think i faked that a bit 19:58 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1020030888282705960/unknown.png 19:58 <+bridge> [ddnet] :BASED: 19:58 <+ChillerDragon> and set a date outside of that range if i really had to commit something 19:59 <+ChillerDragon> yo @k2d222 go maintain ur mc clone i wanna get rid of microsoft crap 19:59 <+ChillerDragon> and sadly minetest is so cursed :( i dont like it 19:59 <+bridge> [ddnet] ah yeah true, I didn't notice the 6*7 rows of nothingness as well 19:59 <+bridge> [ddnet] haha working on it like right now 19:59 <+ChillerDragon> good! 19:59 <+bridge> [ddnet] https://moncraft.thissma.fr/ come and play 19:59 <+ChillerDragon> i thought its closed 20:00 <+bridge> [ddnet] (itf it works) 20:00 <+ChillerDragon> virus 20:00 <+ChillerDragon> is it web only? 20:00 <+ChillerDragon> BAGUETTE 20:00 <+bridge> [ddnet] no, c++ -> wasm compiled 20:00 <+ChillerDragon> no chat? 20:00 <+bridge> [ddnet] no 20:00 <+ChillerDragon> no scoreboard? 20:00 <+ChillerDragon> but multiplayer! 20:00 <+ChillerDragon> thats good stuff 20:00 <+bridge> [ddnet] it was for the introductory course to opengl, initially 20:01 <+ChillerDragon> i can move right but not left xd 20:01 <+ChillerDragon> probably fromage keyboard layout only xd 20:01 <+bridge> [ddnet] french layout 🥖 20:01 <+ChillerDragon> does french not have WASD ? 20:01 <+ChillerDragon> i got W SD 20:01 <+bridge> [ddnet] esc->paramètres->controles 20:01 <+ChillerDragon> but no a 20:01 <+ChillerDragon> PARAMETERES 20:02 <+ChillerDragon> gauche? 20:02 <+bridge> [ddnet] gauche=left 20:02 <+ChillerDragon> i totally knew that 20:02 <+ChillerDragon> WHY IS IT ON Q!? 20:02 <+ChillerDragon> boi its too much french 20:02 <+bridge> [ddnet] french have the azerty layout 20:02 <+ChillerDragon> u gotta go a bit more international 20:03 <+ChillerDragon> but cool stuff! 20:03 <+ChillerDragon> its funny 20:03 <+ChillerDragon> because ive stumbled on that project a few days ago 20:03 <+ChillerDragon> and didnt notice you were invoved 20:03 <+bridge> [ddnet] thx, the goal is to mess around with the techs for me and my mate, really not to make a full blown game 🙂 20:03 <+ChillerDragon> i even watched a bit of the french presentation xd https://www.youtube.com/watch?v=muUEtjMYQMY 20:04 <+ChillerDragon> and thought its a abandoned finished school project 20:04 <+ChillerDragon> full of french 20:04 <+bridge> [ddnet] linguists: abcdefg... 20:04 <+bridge> [ddnet] pros: qwert.... 20:04 <+bridge> [ddnet] HAHA 20:04 <+bridge> [ddnet] a guy from my school 20:04 <+ChillerDragon> go make game 20:04 <+bridge> [ddnet] I hate this guy 20:04 <+ChillerDragon> shade 20:05 <+ChillerDragon> https://avatars.githubusercontent.com/u/46031994?v=4 20:05 <+ChillerDragon> this guy? 20:05 <+bridge> [ddnet] how the f did you find the vid? 20:05 <+ChillerDragon> its in the readme 20:05 <+bridge> [ddnet] oof 20:05 <+ChillerDragon> i clicked on it 20:05 <+ChillerDragon> when i was broswing github the other day 20:05 <+ChillerDragon> its soooo funny its yourproject 20:06 <+bridge> [ddnet] smart 20:06 <+ChillerDragon> i just noticed today when i was stalking u 20:06 <+bridge> [ddnet] chiller how is your fulltime github influencer job going 20:06 <+ChillerDragon> good good 20:06 <+ChillerDragon> its obv a meme 20:06 <+ChillerDragon> im not getting paid ever 20:07 <+ChillerDragon> and also not writing any good code 20:07 <+bridge> [ddnet] i somehow got 2 sponsors on github 20:07 <+ChillerDragon> but i do spend a shitton of time there 20:07 <+ChillerDragon> i know 20:07 <+ChillerDragon> because i pay close attention to my github feed 20:07 <+ChillerDragon> and i flw u 20:07 <+bridge> [ddnet] :greenthing: 20:07 <+bridge> [ddnet] oh 20:07 <+bridge> [ddnet] do sponsors show there 20:07 <+ChillerDragon> no but who u follow 20:07 <+ChillerDragon> and u follow ur sponsors 20:07 <+ChillerDragon> i stalk every follows profile in my feed 20:07 <+ChillerDragon> xd 20:07 <+bridge> [ddnet] i think my sponsor works at uber 20:07 <+bridge> [ddnet] and is a weeb 20:08 <+bridge> [ddnet] made this https://miki.bot/ 20:08 <+ChillerDragon> thats how i started stalking @k2d222 today cuz he did a follow 20:08 <+ChillerDragon> looks very weeb 20:08 <+ChillerDragon> UwU 20:08 <+ChillerDragon> yo @Ryozuki btw i also check out most of the repos you star :D 20:09 <+ChillerDragon> my github feed tab is open about 8hours a day minimum xd 20:09 <+bridge> [ddnet] nice 20:09 <+bridge> [ddnet] i only star high quality stuff 20:09 <+ChillerDragon> ye 20:09 <+bridge> [ddnet] :BASED: 20:10 <+bridge> [ddnet] i gotta try this https://github.com/FiloSottile/age 20:10 <+bridge> [ddnet] a modern gpg replacement 20:11 <+bridge> [ddnet] oh wait 20:11 <+bridge> [ddnet] nevermind this 20:11 <+bridge> [ddnet] there is a rust implementation 20:11 <+bridge> [ddnet] its obviously superior then 20:11 <+bridge> [ddnet] https://github.com/str4d/rage 20:11 <+bridge> [ddnet] yea just your regular cpp err msg :poggers: 20:11 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1020034251682492517/unknown.png 20:12 <+bridge> [ddnet] typical c++ smh 20:12 <+bridge> [ddnet] 3 pages of that btw 20:14 <+bridge> [ddnet] index out of bounds 20:14 <+bridge> [ddnet] well its probs u are doing smth with wasm 20:14 <+ChillerDragon> yikers 20:14 <+bridge> [ddnet] and unlike rust it doesnt have first class wasm support :BASED: 20:15 <+ChillerDragon> i like gpg tho -.- 20:15 <+bridge> [ddnet] https://rustwasm.github.io/docs/book/ 20:16 <+ChillerDragon> i love that github has a "for you" page now 20:16 <+ChillerDragon> its literally tiktok 20:16 <+bridge> [ddnet] since long 20:16 <+ChillerDragon> ye ik 20:16 <+bridge> [ddnet] well i have the beta thing 20:16 <+ChillerDragon> its long af in beta 20:17 <+ChillerDragon> did u ever check out https://github.com/explore ? 20:17 <+bridge> [ddnet] yes 20:17 <+bridge> [ddnet] but they are removing 20:17 <+bridge> [ddnet] trending 20:17 <+bridge> [ddnet] the most useful in there 20:17 <+ChillerDragon> ou didnt know 20:17 <+ChillerDragon> that sad 20:17 <+bridge> [ddnet] it was discussed on hn 20:17 <+bridge> [ddnet] iirc its cuz they cant market that with ads 20:17 <+bridge> [ddnet] iirc 20:18 <+bridge> [ddnet] https://news.ycombinator.com/item?id=32681319 20:18 <+ChillerDragon> @fluffysnaff u here? 20:18 <+ChillerDragon> can i ping matrix? 20:18 <+bridge> [ddnet] u pinged ye 20:19 <+ChillerDragon> xd 20:19 <+ChillerDragon> that makes sense 20:19 <+bridge> [ddnet] xxxxxxxxxxxxD 20:19 <+bridge> [ddnet] @fluffysnaff\: lmao i found your teeworlds bot libary 20:19 <+bridge> [ddnet] lmao 20:20 <+ChillerDragon> here https://github.com/topics/ddnet 20:20 <+bridge> [ddnet] > Free and open-source library for DDNet bots 20:20 <+bridge> [ddnet] kek 20:20 <+ChillerDragon> 10 stars 20:20 <+ChillerDragon> gotta have some users 20:21 <+ChillerDragon> more stars than my client -.- 20:21 <+bridge> [ddnet] found 20:21 <+bridge> [ddnet] another bot 20:21 <+bridge> [ddnet] https://github.com/topics/ddracenetwork 20:21 <+bridge> [ddnet] in this topic 20:21 <+bridge> [ddnet] xd 20:21 <+ChillerDragon> sus 20:21 <+bridge> [ddnet] oih 20:21 <+bridge> [ddnet] its a chat bot 20:21 <+ChillerDragon> this teestatus guy is rly sus 20:21 <+bridge> [ddnet] yeah 20:22 <+bridge> [ddnet] actually 20:22 <+bridge> [ddnet] gotta add the ddnet tag 20:22 <+bridge> [ddnet] to my other r epos 20:22 <+ChillerDragon> ye its good marketing 20:22 <+ChillerDragon> i obv do good tagging 20:22 <+ChillerDragon> because im fulltime 20:22 <+ChillerDragon> INFLUENCER 20:22 <+ChillerDragon> also do not forget to ask for a star in the readme 20:22 <+ChillerDragon> xd 20:23 <+bridge> [ddnet] now 20:23 <+bridge> [ddnet] the ddnet topic increased in size by 4 20:23 <+ChillerDragon> pog 20:25 <+bridge> [ddnet] big news 20:25 <+bridge> [ddnet] https://www.zdnet.com/article/linus-torvalds-rust-may-make-it-into-the-next-linux-kernel-after-all/ 20:26 <+bridge> [ddnet] @Learath2 :feelsamazingman: 20:27 <+bridge> [ddnet] also linus is using daily driving linux on a m2 mac 20:27 <+bridge> [ddnet] kinda interesting 20:28 <+bridge> [ddnet] also linus is daily driving linux on a m2 mac 20:29 <+bridge> [ddnet] can you make a function in c++ that fails at compile time if called more than 3 times? 20:29 <+bridge> [ddnet] 20:30 <+bridge> [ddnet] Does anyone know a trick to see what data is on a fd without reading it? Just for debugging 20:31 <+bridge> [ddnet] what's the use case for this? 20:31 <+bridge> [ddnet] the author made it for fun but 20:31 <+bridge> [ddnet] maybe a resource meant to be used N times 20:31 <+bridge> [ddnet] https://www.reddit.com/r/rust/comments/xelzrv/function_that_can_only_be_called_a_set_number_of/ 20:32 <+bridge> [ddnet] > level 1 20:32 <+bridge> [ddnet] > WormRabbit 20:32 <+bridge> [ddnet] > · 20:32 <+bridge> [ddnet] > 7 hr. ago 20:32 <+bridge> [ddnet] > 20:32 <+bridge> [ddnet] > It's not useless. It allows you to express that the function consumes some finite resource. For example, if you are trying to collect its return values into an array of length N, then it would be desirable that the function can be called exactly N times. But I'm not sure that Rust is flexible enough to build interfaces on those concepts. 20:32 <+bridge> [ddnet] Maybe limiting recursion depth at compile time? Not sure if it's a good idea as it'd cause a lot of code generation 20:32 <+bridge> [ddnet] Ok, this bizarre self connected socket I created has the oddest behaviour 20:34 <+bridge> [ddnet] idk if u can check data without reading 20:34 <+bridge> [ddnet] It just wakes up poll immediately 20:35 <+bridge> [ddnet] doesn't matter whether I put anything on it or not 20:35 <+bridge> [ddnet] It just always has events somehow 20:35 <+bridge> [ddnet] maybe it has to do with it being self connected? 20:35 <+bridge> [ddnet] idk 20:35 <+bridge> [ddnet] https://doc.rust-lang.org/std/ops/trait.FnOnce.html 21:02 <+bridge> [ddnet] libcurl documentation can really use some love :/ 21:02 <+bridge> [ddnet] They don't say anything about having to do `curl_multi_perform` if `curl_multi_wait` returns 0 events. However all your transfers will get stuck if you don't 21:04 <+bridge> [ddnet] Dunno if that's rly possible 21:05 <+bridge> [ddnet] What about mmap it 21:05 <+bridge> [ddnet] Idk 21:05 <+bridge> [ddnet] Well it might be possible with an stap. I'll investigate it later, found a better way to debug it for this time 21:05 <+bridge> [ddnet] A stap? 21:06 <+bridge> [ddnet] SystemTap, let's you directly instrument syscalls 21:06 <+bridge> [ddnet] lets* 21:07 <+bridge> [ddnet] Not really it's intended use, but I've done some very weird inspection with it before. It has a lot of use because you basically can inject code into the kernel 21:09 <+bridge> [ddnet] There is also MSG_PEEK for recv, I just used that in the code instead of debugging 21:09 <+bridge> [ddnet] I guess I could have called MSG_PEEK in gdb, but didn't really feel like malloc'ing in gdb 21:44 <+bridge> [ddnet] Almost done with this PR, just need to make something like `std::latch` and I'm done 22:54 <+bridge> [ddnet] Hm, I really want to use afutex, but it's a bad idea to use a futex in application code 22:54 <+bridge> [ddnet] without a futex I need an extra mutex and a condition variable on each engine job :/ 22:55 <+bridge> [ddnet] what ar eyou trying to do? 22:55 <+bridge> [ddnet] sounds like an xy problem 22:56 <+bridge> [ddnet] read the characters, then put them back? 22:56 <+bridge> [ddnet] It doesn't sound anything like an xy problem to me, but sure. I have a State variable, I need to react on it changing 22:57 <+bridge> [ddnet] It's literally what futexes are for 22:57 <+bridge> [ddnet] The other option is a mutex and a condition variable around State 22:58 <+bridge> [ddnet] I didn't have access to the other half of the pipe at that part of the code 23:00 <+bridge> [ddnet] use gdb and set a watcher on that variable :troll: 23:01 <+bridge> [ddnet] encapsulate the variable in a class with getters and setters so that you can have a callback for each and every access? 23:02 <+bridge> [ddnet] just like signals and slots in Qt 23:02 <+bridge> [ddnet] Doesn't avoid the mutex or the condition variable. It's how I used them anyway 23:05 <+bridge> [ddnet] i think i don't understand your problem then 😦 23:07 <+bridge> [ddnet] Engine takes jobs, they are ran asynchronously, they have a field `m_Status`, some processes want to wait until `m_Status == DONE` 23:20 <+bridge> [ddnet] but what's the problem with mutex ? 23:25 <+bridge> [ddnet] I'm not a big enjoyer of overhead if you haven't noticed that about me 23:26 <+bridge> [ddnet] So much extra data, getters/setters, calls, for each request, for a feature available in any modern kernel 23:26 <+bridge> [ddnet] nothing is free 23:26 <+bridge> [ddnet] + that overhead is negligible for something that i believe happens rarely 23:27 <+bridge> [ddnet] i understand the need for beautiful or elegant code 23:27 <+bridge> [ddnet] Well what annoys me there is that it is much cheaper than the price I have to pay. Futexes are a thing on linux and WaitOnAddress is a thing in NT. It's just that I don't have access to them 23:27 <+bridge> [ddnet] but you should also be pragmatic when it gets too cumbersome 23:28 <+bridge> [ddnet] Can't wait for C++20 to be common enough, `std::atomic::wait` is implemented with nice primitives on all the implementations I've seen 23:29 <+bridge> [ddnet] final solution is x86-64 asm with hardware locks and test and set functions 23:30 <+bridge> [ddnet] Well I have access to test and set through standard c++, no need to dig out assembly 😄 23:30 <+bridge> [ddnet] good luck with that though 😄 23:31 <+bridge> [ddnet] I'll just make it much less generic so only a subset of waitable jobs have to pay the price