01:33 <+bridge> good afternoon 03:44 <+bridge> in testing my code i noticed the game does not handle opening a huge file properly 03:44 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116181006303645766/image.png 03:44 <+bridge> segfault here 03:44 <+bridge> buffer address makes me think it's an ignored HRESULT or smth 03:45 <+bridge> winduhs 03:57 <+bridge> the file is ~8GB, but `io_length()` is returning 0 03:57 <+bridge> it allocates `len` (0) + 1 bytes, the resulting buffer is too small for any reading, disaster ensues 03:57 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116184186584305804/image.png 04:01 <+bridge> i think unsigned is too small for this, `size_t` or `ulong` should be used if anyone's trying to refactor this πŸ˜ƒ 04:02 <+bridge> but afaik there are no existing issues with this, it just came up in testing my code which reports if the file is too big 04:02 <+bridge> unrealistic scenario 04:05 <+bridge> but yeah either you can expand io_length to return a larger size or you can return from io_read_all if the result is 0 or negative, this at least lets me handle a file being too big 04:08 <+bridge> actually `io_length()` already returns a long, i don't know what's going on 04:15 <+bridge> ftell is returning 0 on this file even though its `IOHANDLE` is non-null 04:16 <+bridge> io_tell is returning 0 on this file even though its `IOHANDLE` is non-null 04:17 <+bridge> this is probably known behavior and i'm just silly 04:17 <+bridge> it's `8425177088` bytes which is well within the boundaries of even a signed long 04:26 <+bridge> rip 04:26 <+bridge> my discord number is robbed 04:27 <+bridge> now i'm just `tsfreddie` 04:32 <+bridge> sad 04:48 <+bridge> i'm not finding a fstat io_ euqivalent 04:48 <+bridge> agh 04:49 <+bridge> agh 05:30 <+bridge> anyone ever heard of mingw misunderstanding windows file permissions 05:31 <+bridge> i set the perms of this file through windows security, readable only to admins 05:31 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116207789715496981/image.png 05:31 <+bridge> msys's stat compiled with mingw doesn't get it 05:31 <+bridge> my checks using std::filesystem::perms also wrongfully report it as readable 05:32 <+bridge> i'd have to compile with msvc to make sure this isn't a different issue but setting up vcpkg or whatever would be required to compile ddnet sounds like a nightmare 05:43 <+bridge> unrelated but what's the naming convention for C++ style loop iterator names 05:43 <+bridge> i usually do `it` (lowercase) but would `It` be more appropriate? 06:00 <+bridge> symlink detection is also screwed 07:13 <+bridge> @Ewan Green i hope u are aware u compiled for 32bit 07:13 <+bridge> At least it looks so 07:14 <+bridge> Besides that, yes our system CPP uses int very often instead of the correct usize 07:14 <+bridge> So you probably run out of luck with ddnet for such stuff 07:17 <+bridge> You could read it in chunks. Maybe then it works ^^ 07:35 <+bridge> what makes you think that 07:40 <+bridge> The memory location is 32bit in your image 07:40 <+bridge> the address width in the screenshot? it's automatically truncated 07:40 <+bridge> it's a 64 bit binary 07:41 <+bridge> mingw w64 and PE header says 64 07:42 <+bridge> Mh ok weird 07:43 <+bridge> i'm not sure what's going on with the file loading but i'm convinced that it's not actually ddnet's fault 07:44 <+bridge> yes it should use long wherever needed, but `io_tell` (which wraps ftell directly) has nothing between the caller and the libc that should narrow the number, and still has this issue 07:44 <+bridge> it may be a mingw issue, but i am using the 64 bit compiler 07:44 <+bridge> the limit is 2GiB exactly 07:44 <+bridge> 1 byte less works 07:44 <+bridge> What function signature does it have 07:44 <+bridge> this is classic 32 bit issue 07:44 <+bridge> returns long 07:44 <+bridge> ill look up actual sig 07:45 <+bridge> Long would be 32b on 32b windows xd 07:45 <+bridge> But yeah dunno. Windows is always the problem 07:47 <+bridge> I think this is specific to MSVC 07:49 <+bridge> oh i guess not 07:50 <+bridge> ug 07:51 <+bridge> ftell vs. ftello 07:52 <+bridge> ftell returns long which is 32 bit and that's the issue 07:52 <+bridge> ftello is the correct function to use in this case 07:52 <+bridge> annoying 07:52 <+bridge> I c 07:54 <+bridge> But with std FS it should work tho 07:55 <+bridge> idk, what u mean 07:55 <+bridge> i could overcome this by doing what the system.cpp does and just casting my IOHANDLE to a FILE * and using ftello myself instead of io_tell 07:55 <+bridge> Std filesystem 07:55 <+bridge> the std fs issue is different 07:55 <+bridge> What issue? 07:55 <+bridge> I mean try using the std 07:56 <+bridge> std filesystem doesn't define an API for opening and reading/writing from/to files 07:56 <+bridge> ? 07:57 <+bridge> what's confusing 07:57 <+bridge> I mean there must be some CPP way 07:57 <+bridge> I think escape button is broken in the server browser 07:58 <+bridge> oh i thought u meant std::filesystem 07:58 <+bridge> is it supposed to work in the server browser? 07:58 <+bridge> yes i could use stl apis for this but i think most ddnet devs would think that using existing ddnet apis is better 07:58 <+bridge> because they can be wrapped and adapted etc 07:58 <+bridge> idk, #bugs 07:59 <+bridge> I was wondering if its related to #6709 07:59 <+bridge> https://github.com/ddnet/ddnet/pull/6709 07:59 <+bridge> If u run old code 07:59 <+bridge> Im on latest 08:02 <+bridge> Ping rob or create issue then 08:03 <+bridge> i wonder if adding templates to ddnet system functions would be the move 08:03 <+bridge> type inference should make existing code still work 08:03 <+bridge> but the functions can use ulong/size_t (ull) and the corresponding libc functions 08:04 <+bridge> but the system functions can then use ulong/size_t (ull) and the corresponding libc functions 08:04 <+bridge> i am also happy to live with this limitation lol nobody needs >2GB files 08:04 <+bridge> but future proofing and whatnot 08:05 <+bridge> If u expose it additionally 08:05 <+bridge> 08:05 <+bridge> Also no harm in using CPP standard directly 08:05 <+bridge> The system stuff is rather useless 08:05 <+bridge> Most of it 08:05 <+bridge> Not all 08:05 <+bridge> well, there are a lot of gotchas when using the libc across systems 08:05 <+bridge> platform and compiler differences make things complicated 08:05 <+bridge> having system apis like this lets us account for it 08:05 <+bridge> Yes that's why u don't rely on c 08:06 <+bridge> afaik the only cpp apis for this sort of thing are wrapped C APIs (std::fopen, std::fread, etc) and file streams 08:07 <+bridge> I mean there is ifstream and stuff 08:07 <+bridge> those are file streams 08:07 <+bridge> I doubt there is no CPP way xd 08:07 <+bridge> ifstream = input file stream 08:07 <+bridge> Perfect 08:07 <+bridge> Then u have it 08:07 <+bridge> xd 08:07 <+bridge> streaming :( 08:07 <+bridge> It's fastest 08:08 <+bridge> if i use a cpp api then im mixing cpp apis and ddnet system apis 08:08 <+bridge> which i guess there's nothing wrong with at a small scale like this but that kind of irks me 08:09 <+bridge> Mh yeah, ddnets API simply sucksπŸ˜‚πŸ˜‚ 08:09 <+bridge> Why do u need 8gb btw 08:09 <+bridge> i don't, it's just that i want the file loader thing to be future proof 08:10 <+bridge> i think for now i will just use the ddnet apis, since if ddnet ever needs >2GB files, the ddnet system apis will just be updated 08:10 <+bridge> Yeah^^ 08:11 <+bridge> this std::filesystem perms/symlink thing is a real bummer 08:11 <+bridge> i expected more of mingw 08:11 <+bridge> if i want to expose this functionality 08:11 <+bridge> i have to use winapi 08:11 <+bridge> I didn't read everything u said sry 08:11 <+bridge> yea so i have a hunch that mingw is incorrectly reporting filesystem stuff 08:12 <+bridge> firstly std::filesystem::perms and std::filesystem::is_symlink and the like do not work for me on mingw 08:12 <+bridge> Oh 08:12 <+bridge> perms incorrectly reporting files as readable. and is_symlink thinking that the symbolic link i made with powershell is indeed not a symlink 08:13 <+bridge> Sad 08:13 <+bridge> yea 08:13 <+bridge> though, fs_* functions could be added to stat permissions and symlink status 08:14 <+bridge> oh shit 08:15 <+bridge> Long would be 32b on windows xd 08:15 <+bridge> `fs_listdir_fileinfo` leverages `WIN32_FIND_DATAW` on windows, contains a symlink flag 08:16 <+bridge> but it's not exposed by `CFsFileInfo`, the file info type used by `FS_LISTDIR_CALLBACK_FILEINFO` which is the fn ptr signature that `fs_listdir_fileinfo` uses 08:16 <+bridge> annoying! 08:16 <+bridge> i think this is a conversation for later on github 08:17 <+bridge> i either add this stupid functionality or i don't add file permission/symlink status to the file loader 08:20 <+bridge> just saw this for the first time in the loading menu. cheeky 08:20 <+bridge> ```cpp 08:20 <+bridge> if(m_Menus.IsInit()) 08:20 <+bridge> { 08:20 <+bridge> char aBuff[256]; 08:20 <+bridge> str_format(aBuff, std::size(aBuff), "%s [%d/%d]", CompCounter == 40 ? Localize("Why are you slowmo replaying to read this?") : Localize("Initializing components"), (CompCounter + 1), (int)ComponentCount()); 08:20 <+bridge> m_Menus.RenderLoading(pLoadingDDNetCaption, aBuff, 1 + SkippedComps); 08:20 <+bridge> SkippedComps = 0; 08:21 <+bridge> } 08:21 <+bridge> ``` 08:21 <+bridge> I'm so glad the translators localize that text 08:21 <+bridge> lol 08:21 <+bridge> Yea 08:21 <+bridge> localize all 08:21 <+bridge> it's the way to go 08:28 <+bridge> I have no idea why they would std::regex without an error checking mechanism besides a single exception 08:28 <+bridge> which I can't even use because... exceptions are off 08:29 <+bridge> so i have to just pray the expression passed is valid, or do my own stupid regex parsing 08:29 <+bridge> I have no idea why they would allow std::regex in the standard without an error checking mechanism besides a single exception 08:29 <+bridge> they don't even have an `operator bool()` 08:31 <+bridge> Yep sucks hard 08:31 <+bridge> I wanted to add regex search support a while ago 08:32 <+bridge> they don't provide comparison operators either, so i can't even have a known dud std::regex object for comparison 08:32 <+bridge> you're just fucked 08:59 <+ChillerDragon> !jup emote and pinger completion now appends a : and a space for better emote spam and pingering 08:59 < chillerbot1> @Jupstar βœͺ 09:00 <+ChillerDragon> because pings without space at the end dont hit. like this one @Jupstar βœͺ! so now you can instantly type after complete no need for : or space 09:00 < ws-client> <:poggers2:1008007455936094328> 09:01 <+bridge> Epic 09:02 < ws-client> πŸ˜‚ yeah very nice 09:05 < ws-client> https://zillyhuhn.com/cs/.1686207916.png 09:05 < ws-client> is that me being color blind or is that ugly af and super hard to read? 09:06 < ws-client> oh and html moment it swallowed the spaces 09:07 <+bridge> I am colorblind and I can say it is ugly af and super hard to read 09:08 < ws-client> men are blind af 09:08 < ws-client> where developer girls? 09:09 <+bridge> When fix ur client 09:09 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116262611797938196/image.png 09:10 <+bridge> deentroll 09:11 < ws-client> oh yea @fokkonaut that looks much more sexy 09:11 <+bridge> im not colorblind but dark blue on dark background is risky xd 09:12 < ws-client> since 50% of the webclient users are color blind i gotta do something 09:12 <+bridge> yes 09:12 <+bridge> https://bratgpt.com/ 09:13 <+bridge> @fokkonaut do you read your user name here in discord in blue color? 09:13 <+bridge> u mean dev role? 09:13 <+bridge> yes 09:13 <+bridge> no thats purple to me 09:13 <+bridge> what color blindness do you have then? 09:13 <+bridge> most ppl have green red 09:14 <+bridge> me too, but i think also some other degree. Colors I can easily mix up depending on light level, etc: 09:14 <+bridge> brown - red 09:14 <+bridge> green - orange 09:14 <+bridge> yellow - light green 09:14 <+bridge> pink - grey 09:14 <+bridge> blue - purple 09:14 <+bridge> etc. 09:15 <+bridge> i c 09:15 <+bridge> sometimes its more clear sometimes not, depending on tone, light, and other factors 09:15 <+bridge> don't tell others, but my test to check if gamer girl is girl is to ask if dark purple is blue πŸ˜‚ 09:15 <+bridge> worked a few times already xD 09:16 <+bridge> first question people have: "how do you see traffic lights" - well, first im not dumb and green is at the bottom, and next up that green is more white already xD 09:16 <+bridge> xDDD 09:16 < ws-client> because gril eye more op than male? 09:16 <+bridge> yeah 09:16 < ws-client> indeed 09:16 < ws-client> smort test 09:16 <+bridge> statistically like 10% of men are color blind, but only like 1% of women 09:16 <+bridge> smth like that 09:16 < ws-client> so u gamer girl? 09:17 <+bridge> I am hehe 09:17 <+bridge> i am gamer girliest 09:18 < ws-client> UwU 09:20 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116265442990903386/IMG-20210815-WA0000.jpg 09:20 <+bridge> @Jupeyy_Keks 09:20 < ws-client> international foggonut 09:21 <+bridge> for me the top 5 bars are very very similar, except in the 2nd and 3rd row the yellow/green spectrum is a little more bright/pale 09:21 <+bridge> uff, for me all are completely different πŸ˜„ 09:21 <+bridge> Then I am definitely more colorblind than you :P Yet I can see the dev role as purple 09:22 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116266042914775050/image.png 09:22 <+bridge> how about this? 09:22 <+bridge> fuck you 09:22 <+bridge> what color do you see? 09:22 <+bridge> thats blue 09:23 <+bridge> xD? 09:23 <+bridge> ah ok 09:23 <+bridge> IS IT 09:23 <+bridge> ?? 09:23 <+bridge> yeah the color often works 09:23 <+bridge> no its purple too 09:23 <+bridge> but a darker version 09:23 <+bridge> it looks more blue to me 09:23 <+bridge> seems like they especially struggle with dark purple 09:23 <+bridge> its on the edfe 09:23 <+bridge> edge 09:23 < ws-client> edge-l 09:23 <+bridge> but purple 09:24 <+bridge> ryo here when its gettin edgy 09:24 <+bridge> xdd 09:25 <+bridge> when i was younger, i painted the sky purple until my teacher said "ehh, why you do that" 09:25 <+bridge> lol 09:25 <+bridge> thats when i first really noticed xdxd and another teacher was mad at me until i said "dude, im colorblind you fucking cunt" and then she shut up and apologized 09:25 <+bridge> xd 09:25 <+bridge> lel 09:27 <+bridge> @Jupeyy_Keks ask me yellow/green ish 09:27 <+bridge> its so hard for me 09:27 <+bridge> tee skins 09:27 <+bridge> @fokkonaut yellow/green ish? 09:27 <+bridge> skins 09:27 <+bridge> dad joke 09:27 <+bridge> wat 09:28 <+bridge> have to make a skin first πŸ˜„ 09:28 <+bridge> oki 09:28 <+bridge> my bad joke flew by 09:28 <+bridge> not good morning 09:28 <+bridge> did you skip gym today 09:28 <+bridge> im at gym rj 09:28 <+bridge> ah 09:28 <+bridge> makes sense 09:29 <+bridge> xd 09:29 <+bridge> u need to stimulate your brain 09:29 <+bridge> then it works better 09:29 <+bridge> xd 09:29 <+bridge> its like those who need coffee 09:29 <+bridge> or me who needs nictoine :x 09:29 <+bridge> this one is hard 09:29 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116267749220552746/image.png 09:29 <+bridge> thats green 09:29 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116267850953412660/image.png 09:30 <+bridge> its closer to yellow than green 09:30 <+bridge> where the fuck is green and yellow 09:30 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116267933837054012/image.png 09:30 <+bridge> yellow is left 09:30 <+bridge> red to yellow to green 09:30 <+bridge> put the slider to where green begins 09:30 <+bridge> i think it's hard to say even for non colorblind 09:31 <+bridge> That's true, but it looks very similar to the apple skin, named "apple green" 09:31 <+bridge> Kinda canon? 09:31 <+bridge> Well what the hell does canon mean in this context 09:31 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116268239018803281/image.png 09:31 <+bridge> I gotta think before I type 09:31 <+bridge> i'd around here is "clear" green 09:31 <+bridge> Yeah that's sensible 09:32 <+bridge> @Jupeyy_Keks for example, now in comparison, and with the box around it, i can see the differences pretty good 09:32 <+bridge> comparison is always a good thing for colorblind people 09:32 <+bridge> But theres everything in between yellow and you'd typically call a shade of green, rather than a shade of yellow 09:33 <+bridge> sensitive* 09:33 <+bridge> the default skin probably makes it a bit darker 09:33 <+bridge> No no 09:33 <+bridge> but i'd say it's still yellow 09:33 <+bridge> Sensible 09:33 <+bridge> As in makes sense 09:33 <+bridge> ah 09:33 <+bridge> ye 09:33 <+bridge> sry i thought u r @ChillerDragon english pro 09:34 < ws-client> wot 09:34 < ws-client> pinger 09:34 <+bridge> https://github.com/ddnet/ddnet/pull/1272 09:34 <+bridge> xD 09:34 < ws-client> axaxax 09:34 <+bridge> "Lime is a color that is a shade of yellow-green, so named because it is a representation of the color of the citrus fruit called limes. " 09:34 <+bridge> https://en.wikipedia.org/wiki/Lime_(color) 09:34 <+bridge> its 5 years ago why i still remember this shit 09:34 <+bridge> i'd say its on the yellow part of the lime color xD 09:34 <+bridge> lime best 09:36 <+bridge> left is the color in the ddnet color picker, then comes lime from wikipedia, then the color the tee has 09:36 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116269539823468624/image.png 09:37 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116269653971447868/image.png 09:37 <+bridge> default skins has always been more green/beige for me 09:37 <+bridge> same colors 09:37 <+bridge> tee, color picker, wiki 09:39 <+bridge> its so warm in the office... 09:40 <+bridge> since i have just opened one of these, which color is this? 09:40 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116270475677552680/fanta-exotic-330ml-9262-001-e1593974801426.png 09:40 <+bridge> id say thats green like the leaf on it 09:41 <+bridge> grass green maybe 09:41 <+bridge> bit lighter 09:41 <+bridge> green yes, but the green from the leaf is way darker 09:41 <+bridge> its a bit darker yes 09:41 <+bridge> in real life at least 09:41 <+bridge> but ye its green i guess so too 09:42 <+bridge> @Jupeyy_Keks u work in an office? 09:42 <+bridge> sometimes xd 09:42 <+bridge> u have a table that u can change the height? 09:42 <+bridge> yes 09:42 <+bridge> do you use it 09:42 <+bridge> no πŸ˜‚ 09:42 <+bridge> im using it right now for the first time, its pretty nice actually 09:42 <+bridge> i used it 5 times and then decided it sucks 09:43 <+bridge> i dont think it sucks tbh, been standing for one hour almost 09:43 <+bridge> generally its cool to adjust the height but i probably prefer to work while sitting 09:43 <+bridge> me too, but its nice and healthy 09:43 <+bridge> ofc not 8h standing 09:43 <+bridge> but being able to stand up when ur back hurts or whatever 09:44 <+bridge> office jobs are always bad for your health xd 09:44 <+bridge> i slowly feel that im getting older xD 09:44 <+bridge> ye but mostly back problems 09:44 <+bridge> working on the roof for years is also not good 09:44 <+bridge> or on baustel 09:45 <+bridge> baustelle 09:45 <+bridge> construction side worker 09:45 <+bridge> whatever 09:47 <+bridge> conclusion: work is not healthy 09:48 <+bridge> conclusion: life sux 09:48 <+bridge> πŸ₯² 09:48 <+bridge> cant argue about that 09:48 <+bridge> xddd 09:48 <+bridge> :fuckyousnail: 09:48 <+bridge> but its still worth it 09:49 <+bridge> use rust to ease the pain 09:49 <+bridge> 🌴 09:49 <+bridge> sorry i dont need more pain 09:49 <+bridge> :greenthing: 09:51 < ws-client> wait i still didnt add :fuckyousnail: id? 09:52 < ws-client> ryo go leak id 09:52 <+bridge> https://cdn.discordapp.com/emojis/691290240266141766.webp 09:54 < ws-client> ty 09:56 < ws-client> pog pog <:fuckyousnail:691290240266141766> 09:57 <+bridge> @fokkonaut 09:57 <+bridge> hi 09:57 <+bridge> you are lurking 09:57 <+bridge> i like ur tortilla picture 09:58 <+bridge> no 09:58 <+bridge> i am working laptop + 2 screens so i can spot your pings faster than the light travels 09:58 <+bridge> ok 09:58 <+bridge> WAIT 09:58 <+bridge> ? 09:58 <+bridge> is your profile picture 09:58 <+bridge> this one thing 09:58 < ws-client> ?xd 09:59 <+bridge> wait 09:59 <+bridge> what thing 09:59 <+bridge> https://www.youtube.com/watch?v=WtO3AHMBePY 09:59 <+bridge> this 09:59 <+bridge> no 10:00 <+bridge> ok 10:00 <+bridge> u should consider using the discord api 10:00 <+bridge> instead of asking for every emoji xd 10:00 <+bridge> :troll: 10:01 < ws-client> @Ewan i got all 10:01 <+bridge> nice 10:01 < ws-client> all i need* 11:10 <+bridge> i hate css flip animations 11:10 <+bridge> why is it so dumb 11:10 <+ChillerDragon> flippin css 11:11 <+ChillerDragon> i am still waiting for a browser with proper front end error messages for html and css 11:11 <+ChillerDragon> because i refuse to use bloated css and html generators 11:12 <+ChillerDragon> we should replace ddnet desktop client with a mobile first electron app 11:12 <+bridge> great idea 11:14 <+bridge> tauri 11:15 <+bridge> write a DDNet launcher in rust, so graphics settings can be changed outside of the client 11:15 <+ChillerDragon> oh yea ddnet launcher like polyMC would be cool 11:15 <+bridge> a settings editor should be ez 11:15 <+bridge> i could make it 11:15 <+bridge> with egui 11:16 <+bridge> we just need to be able to change the graphics settings that crash the client for some people 11:16 <+ChillerDragon> different config directories and different bot versions in one launcher 11:16 <+bridge> and buttons to open the config directory, website etc would be nice 11:16 <+bridge> true 11:17 <+bridge> ill look into it 11:17 <+ChillerDragon> are there configs that crash the client on launch even? 11:17 <+ChillerDragon> never seen it 11:17 <+bridge> it could also detect if the client crashes and show a helpful message 11:17 <+ChillerDragon> ye! 11:18 <+bridge> for some graphics cards and backends it seems to crash 11:18 <+bridge> and we can't detect this in the client, so we need a launcher 11:18 <+ChillerDragon> how would it work with steam tho? 11:18 <+ChillerDragon> does the steam game launch the ddnet launcher? 11:18 <+bridge> yeah, but we could at an option to the launcher to skip it maybe 11:18 <+bridge> add* 11:18 <+ChillerDragon> ye 11:18 <+bridge> since when heinrich not admin but this weird role xd 11:18 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116295283580612640/image.png 11:19 <+ChillerDragon> sounds like a lot of work but would be cool 11:19 <+bridge> since always 11:19 <+bridge> really 11:19 <+bridge> @fokkonaut actually idk if its cuz me 11:19 <+bridge> probs not 11:19 <+ChillerDragon> heinrich refuses to in game admin him self 11:19 <+bridge> i never saw this role before 11:19 <+bridge> but back then 11:19 <+bridge> i rly was anti heinrich being admin 11:19 <+bridge> xd 11:19 <+ChillerDragon> heinrich is ssh admin only 11:19 <+bridge> so i guess they made it not obvious 11:19 <+bridge> ah so he is admin but not officially 11:19 <+bridge> ye 11:20 <+bridge> very unobvious 11:20 <+bridge> xd 11:20 <+ChillerDragon> he is also technically never authed in game 11:20 <+bridge> xd 11:20 <+ChillerDragon> you can ez kickvote him 11:20 <+ChillerDragon> i know from a friend 11:20 <+bridge> we all know he gets to decide most stuff 11:20 <+ChillerDragon> decide yes 11:20 <+ChillerDragon> but no ingame powa 11:20 <+ChillerDragon> so no regular admin 11:20 <+bridge> thats not the definition of admin 11:20 <+bridge> he has 11:20 <+ChillerDragon> you cant pinger him for ingame moderation 11:21 <+bridge> ingame admin is the least of problems lel 11:21 <+bridge> like i couldnt care less 11:21 <+bridge> hot topics 11:21 <+ChillerDragon> ye other than that he might be the person in tw with the most power 11:21 <+bridge> forgot to mention chiller 11:21 <+bridge> docker is cool for auto-restart when crashing, no need to make a bash script for that 11:22 <+ChillerDragon> bash script is cool for auto restarz when crashing, no need to use docker for that 11:22 <+ChillerDragon> ``while :; do DDNet-Server; done`` 11:22 <+bridge> heinrich for example decided (mostly alone?) the hold hammer on freeze thing 11:22 <+bridge> which has been a before and after for ddnet 11:22 <+ChillerDragon> that was intense change yes 11:22 <+bridge> btw @Robyt3 is this a good place for the Preview button? 11:22 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116296253219819640/PreviewButtonPlace.png 11:23 <+bridge> feels weird being together with the buttons that change the sorting 11:23 <+bridge> @Reteah was it hard to implement? 11:23 <+bridge> i didnt look at the pr but im curious 11:23 <+bridge> Since I managed to do it nope 11:23 <+bridge> nice feature 11:24 <+bridge> xd 11:25 <+bridge> Hmm it must be on the Filemanager/explorer though else it'll be frustrating to change it 11:25 <+bridge> yeah. what if it's on the right side like you can expand the server browser in vanilla 11:25 <+bridge> well I just hooked it up to the editor code so I didn't do much tbh 11:25 <+bridge> ok will do that ;) 11:26 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116297178466492446/image.png 11:26 <+bridge> ye and either did he not think about it or just went for it 11:26 <+bridge> No multiline texts? 11:26 <+bridge> maybe not outside if that causes issues 11:27 <+bridge> I think they exist but vanilla chose not to do it 11:28 <+bridge> Or they didn't need it 11:28 <+bridge> hi roby 11:28 <+bridge> we didn't use the whole "Playing/Spectating ... on ... " text either 11:28 <+bridge> hi fokko 11:29 <+bridge> kokkonaut 11:29 <+bridge> ryozoozki 11:29 <+bridge> :zooz: 11:29 <+bridge> πŸ₯₯ 11:29 <+bridge> πŸ₯₯ 11:29 <+bridge> fun fact, i dont zooz on fng 11:29 <+bridge> yet :troll: 11:30 <+bridge> fun fact, i have a proxy which fills up fng server so every part of the map is visible for at least 1 client and then all the info gets sent to my main client so i can zooz in peace 11:30 <+bridge> which fng though? 11:30 <+bridge> its a joke 11:30 <+bridge> Ah yes, you just invented dos 11:31 <+bridge> no? 11:31 <+bridge> i find it funny, 90% of the things you say are random 11:31 <+bridge> :kek: not the dos operator 11:31 <+bridge> dos attacks 11:31 <+bridge> so random xd 11:31 <+bridge> sorry, I'll write more specifically in the future 11:32 <+bridge> please try /cellegen random to make me say random bs 11:32 <+bridge> please try /cellegen random to make me say random bs (don't make a bot which does that :justatest: ) 11:33 <+bridge> always been like this 11:33 <+bridge> :justatest: 11:34 <+bridge> that's why you guys hate me so much, and I'm living for it 11:41 <+bridge> What syntax highlighting lib are you using? 11:41 <+bridge> All of them i tried sucked 11:41 <+bridge> I ended up using monaco editor guts and it works pretty well 11:42 <+bridge> nothing is better than tree sitter 11:42 <+bridge> 11:42 <+bridge> but idk if it has a js lib 11:42 <+bridge> tree sitter is best 11:42 <+bridge> neovim uses it 11:43 <+bridge> yea i meant web ones 11:43 <+bridge> its so good its on par with a lsp backed highlighter 11:43 <+bridge> yeah tree sitter is standalone too 11:43 <+bridge> https://github.com/edg-l/treelight 11:43 <+bridge> i made this 11:43 <+bridge> but may be a bit broken 11:45 <+bridge> i should retake it xd 11:45 <+bridge> yea my website surely needs a bit of love too 11:45 <+bridge> i just don’t do the web stuff often 11:45 <+bridge> the vanilla js approach sucks more and more 11:45 <+bridge> as time goes on 11:48 <+bridge> hey @Robyt3 while you're doing all these dope UI improvements, should u add a horizontal mode to the scroll viewer? 11:49 <+bridge> do we need horizontal scrolling anywhere though? 11:49 <+bridge> i did for some stuff, my implementation is outdated now, and it blows anyway 11:49 <+bridge> it's somewhat inconvenient I'd say, because most users don't have horizontal scrolling mouse wheels either 11:50 <+bridge> as long as it's not bi-directional scroll main mouse wheel works too 11:50 <+bridge> also, shift or alt + scroll wheel is the convention for that 11:51 <+bridge> I'll consider adding it eventually 11:52 <+bridge> all my implementation did was map x/y to y/x and w/h to h/w, etc. 11:52 <+bridge> swap dimensions 11:53 <+bridge> it was fine 11:53 <+bridge> it just would have been better if there was more time put into it and less fear of breaking other shit 11:57 <+bridge> oh yeah, it would be nice if when the game is maximized on close it'll be maximized when opened again 13:13 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116324211179409428/image.png 13:13 <+bridge> sweet 13:17 <+bridge> i added `fs_is_readable` and fs_is_symlink` 13:17 <+bridge> i added `fs_is_readable` and `fs_is_symlink` 13:17 <+bridge> the former is easily expandible to account for write and exec access too, i just have it that way atm 13:18 <+bridge> how does `fs_is_readable` work? as far as I know, you can never know if you can truly read/write a file unless you try 13:19 <+bridge> at least on Windows 13:19 <+bridge> i was originally using std::filesystem for checking readable/symlink status, but it turns out that on MinGW the platform differences of how permissions and softlinks work are so different, they just decided screw it & to make the API report wrong stuff 13:19 <+bridge> on Windows i'm using security APIs for is readable 13:20 <+bridge> well, as long as nobody tries using the game on a network drive 13:20 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116325832508583946/snippet.cpp 13:21 <+bridge> `generic_access_rights` on line 10 is only checking for read access, we can easily bind this enum & add another parameter if anyone cares 13:21 <+bridge> `generic_access_rights` on line 10 is saying to only check for read access, we can easily bind this enum & add another parameter if anyone cares 13:21 <+bridge> what do you need this for? 13:22 <+bridge> i'm creating an object that will read files in batches & since it's going to be relatively abstract i want it to be versatile and the errors to be descriptive 13:23 <+bridge> i plan to make an async version and use that for skin and asset loading. but it's not needed for those atm, though it would be nice to say why a read failed 13:23 <+bridge> couldn't you call `GetLastError` on Windows or check `errno` on UNIX after the operation already failed? 13:24 <+bridge> PANIC 13:24 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116326801220837376/image.png 13:24 <+bridge> @RYOzu 13:24 <+bridge> lel 13:24 <+bridge> shit 13:24 <+bridge> nice ping 13:24 <+bridge> Hi RYO 13:24 <+bridge> welcome to dev chat 13:24 <+bridge> ``` 13:24 <+bridge> ddnet_engine_shared.lib(std-391022a4250a8b9a.std.feb3b897-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtCreateFile referenced in function _ZN3std3sys7windows2fs20open_link_no_reparse17h9b3d5753800c4b4fE [D:\a\ddnet\ddnet\debug\game-server.vcxproj] 13:24 <+bridge> ddnet_engine_shared.lib(std-391022a4250a8b9a.std.feb3b897-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_RtlNtStatusToDosError referenced in function _ZN3std3sys7windows2fs20open_link_no_reparse17h9b3d5753800c4b4fE [D:\a\ddnet\ddnet\debug\game-server.vcxproj] 13:25 <+bridge> ddnet_engine_shared.lib(std-391022a4250a8b9a.std.feb3b897-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtReadFile referenced in function _ZN3std3sys7windows6handle6Handle16synchronous_read17h609a485d92162e8dE [D:\a\ddnet\ddnet\debug\game-server.vcxproj] 13:25 <+bridge> ddnet_engine_shared.lib(std-391022a4250a8b9a.std.feb3b897-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtWriteFile referenced in function _ZN3std3sys7windows6handle6Handle17synchronous_write17h5e143db420a86fa8E [D:\a\ddnet\ddnet\debug\game-server.vcxproj] 13:25 <+bridge> D:\a\ddnet\ddnet\debug\DDNet-Server.exe : fatal error LNK1120: 4 unresolved externals [D:\a\ddnet\ddnet\debug\game-server.vcxproj] 13:25 <+bridge> ``` 13:25 <+bridge> This is the third time a CI build failed on Windows like this in the last two days 13:25 <+bridge> not afaik, seems unintended with io_* because it's all wrapped 13:25 <+bridge> and it wouldn't be as descriptive anyway 13:25 <+bridge> Even better, github is not loading for me at all πŸ˜„ 13:25 <+bridge> wow this blows 13:25 <+bridge> oh man 13:27 <+bridge> I'm wondering how we can break linking non-deterministically. My assumption is that is a VS problem? 13:32 <+bridge> damn my new laptop is great, but not graphic card rip 13:32 <+bridge> VS forget the mutex 13:33 <+bridge> hardware info or did not happen 13:33 <+bridge> I have a intel iris xe 13:33 <+bridge> Maybe the sliders in settings? Some games do that 13:33 <+bridge> i5-1240p, 16gb ddr5 4800MHz, and a beautiful oled screen 2.8k 13:34 <+bridge> that is some fast ram 13:34 <+bridge> yeah, we have the value sliders, but we don't have any scroll regions where the content scrolls horizontally 13:34 <+bridge> nice, but how can it not have a GPU then πŸ˜‚ 13:34 <+bridge> it's a pro laptop, not for gaming 13:34 <+bridge> zenbook 14 ux3402za 13:34 <+bridge> fwiw i added it in my status bar settings gui, it was sort of unique https://cdn.discordapp.com/attachments/806786136474910730/1093164149846061177/2023-04-05_07-23-04.mp4 13:35 <+bridge> mute video 13:35 <+bridge> some CPUs don't have graphic drivers compatibility 13:35 <+bridge> what 13:35 <+bridge> wat xd 13:35 <+bridge> fresh music πŸ˜‚ 13:36 <+bridge> sorry 13:36 <+bridge> this is old video 13:36 <+bridge> i forgot to mute 13:36 <+bridge> As I wrote, some intel CPUs cannot use intel graphic drivers like UHD, because it is not compatible 13:36 <+bridge> by gpu I meant a nvidia chip or smth like that, It is using the iGPU obv 13:36 <+bridge> wat xd 13:36 <+bridge> that makes no more sense 13:36 <+bridge> yeah i read it like that πŸ˜„ 13:37 <+bridge> the only case that i know where the iGPU could not be used was when the monitor was plugged into the gpu (even for laptops this exists) 13:37 <+bridge> so it was forced to use the high perf GPU instead 13:38 <+bridge> even then it mightℒ️ still be usable offscreen 13:38 <+bridge> depending if the driver allows this 13:39 <+bridge> Ok, in technical terms, what I mean is, some CPUs' **Processor Graphics** don't have a driver for you to install and instead uses the system based Graphics driver to display 13:39 <+bridge> https://www.intel.com/content/www/us/en/support/articles/000058958/graphics.html 13:39 <+bridge> So yes, you cannot use drivers on some CPUs like mobile CPUs cuz it only uses the system graphics 13:39 <+bridge> Only if the igpu is really really old 13:39 <+bridge> and that's moot since a driver *did* exist for it at some point 13:40 <+bridge> its called OEM and u can disable that/ignore that 13:40 <+bridge> Some 2010 computers are still around 13:40 <+bridge> Some 2010 computers / laptops are still around 13:40 <+bridge> It would have to be even older 13:40 <+bridge> even they simply got the drivers from intel and simply customized them a bit 13:40 <+bridge> bcs what do i know.. they maybe added a wifi controler or stuff like that 13:41 <+bridge> that would break else 13:41 <+bridge> back in the old days the GPUs also often were not part of the CPU 13:41 <+bridge> but of the motherboard 13:42 <+bridge> I think who knows how an old 2000's computer ran would know this info 13:42 <+bridge> Why are you sassing 13:42 <+bridge> anyway anything before 2015 is dead for me 13:42 <+bridge> xd 13:42 <+bridge> oh we in 2023 already 13:42 <+bridge> then lets up it to 2018 13:43 <+bridge> 5 years support 13:43 <+bridge> chairn trigger warning ^ 13:44 <+bridge> I think for today's standards, thats still a pretty good date 13:44 <+bridge> computer industry evolves so fast, everything gets bloated, nobody understands anything anymore 13:44 <+bridge> AMD releases integrated gpus and drop support after only like 2 years lmao 13:49 <+bridge> I'll keep reporting problems on my 2009 laptop though πŸ˜„ 13:49 <+bridge> 2000 what? 13:52 <+bridge> the funny thing about computer industry is that it's completely different than any other industry 13:52 <+bridge> 13:52 <+bridge> it evolves insanely fast 13:52 <+bridge> almost no backward compability 13:52 <+bridge> open source (free premium quality luxus stuff, wtf :D) 13:52 <+bridge> relatively progressive community (complete opposite of most "normal" ppl) 13:52 <+bridge> i mean in just 20-30 years we got so far xd 13:52 <+bridge> I didn't managed to do it outside the file{manager,explorer} so I did it inside πŸ˜‰ . Also I made it so the `View` resizes whether map preview is active 13:52 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116334022461759588/live_map_preview_in_editor3.mp4 13:52 <+bridge> that's why u have to stay on the train 13:53 <+bridge> friss oder stirb 13:53 <+bridge> cuz we care of this tech, people make insane money off of it and we found ways to exploit many things in the world with computers alone 13:54 <+bridge> I should also mention I still haven't managed to successfully clip the contents of some maps. idk what breaks 13:54 <+bridge> Can you snap the camera to the checkpoint 1 entity, so that wherever that cp1 entity is, it'll default the camera's position to that? 13:55 <+bridge> I haven't reached that part but yeah I will do that ;) 13:55 <+bridge> nice desktop envirement ⭐ 13:55 <+bridge> it's dwm with gaps and picom with round corners and stuff 13:56 <+bridge> ah nice 13:56 <+bridge> what distro? 13:56 <+bridge> artix 13:56 <+bridge> does it now use a viewport, or did u solve it differently? 13:56 <+bridge> what do you use for the bar? 13:56 <+bridge> dwm has a bar and I use that 13:56 <+bridge> hmm okay 13:57 <+bridge> I'm extremely skeptical of new developments in the software industry. It's layers upon layers of abstractions which are hiding all the interesting interactions and make debugging and end-to-end testing nigh impossible. It works for megacorps, but for smaller companies I think it can actually be a competitive advantage not to buy into all the hype. 13:57 <+bridge> It still as it is I didn't manage to use the background menu's inner workings :pepeH: 13:59 <+bridge> you are not wrong. but the mega corps give the direction, that's why i wrote "friss oder stirb" 13:59 <+bridge> 13:59 <+bridge> that's their spirit. 13:59 <+bridge> 13:59 <+bridge> I also agree that it can get very annoying that abstractions destroy everything, but not every abstraction comes because of making stuff easier, but are also build for backward compability. 13:59 <+bridge> 13:59 <+bridge> If you'd redesign an OS nowadays u probably have to add many layers to it, just to emulate existing stuff πŸ˜„ 14:00 <+bridge> i'd generally say modern APIs are often bloated bcs they want to support to many varrying hardware 14:00 <+bridge> 14:00 <+bridge> controllers, joysticks, what do i know what exists 14:00 <+bridge> 14:00 <+bridge> and users having one of the unsupported things get directly mad xD 14:04 <+bridge> you probably want to open the file and report the error of that instead 14:04 <+bridge> checking access rights is incredibly error-prone and not actually guaranteed to work 14:05 <+bridge> that’s not the only thing I’m checking kill 14:05 <+bridge> that’s not the only thing I’m checking lol 14:05 <+ChillerDragon> heinrich ur name is so hard to make a funny nickname of 14:05 <+ChillerDragon> but when python huffman? 14:05 <+bridge> hmmmm :/ 14:05 <+ChillerDragon> this summer? 14:05 <+bridge> theoretically I'd love to have a release of uniffi 14:06 <+bridge> but I guess I can't wait for that 14:06 <+ChillerDragon> any ETA? 14:06 <+bridge> so maybe(!) I can look into it this evening 14:06 <+ChillerDragon> how fast is their dev cycle? 14:06 <+bridge> no ETA 14:06 <+ChillerDragon> release sounds good 14:06 <+bridge> so let me try without 14:06 <+bridge> sorry for the wait already 14:06 <+ChillerDragon> np 14:06 <+ChillerDragon> i told u im ok w wait 14:06 <+bridge> (in the evening, maybe(!)) 14:06 <+ChillerDragon> i rather wait and have it clean than getting deprecated 14:07 <+ChillerDragon> you can also code libtw2 snapshot support while waiting for release :p 14:17 <+bridge> you mean wireshark dissector snapshot suppor? 14:17 <+bridge> you mean wireshark dissector snapshot support? 14:17 <+bridge> is that still interesting to you? 14:22 <+bridge> @Jupeyy_Keks anything before 2020 14:22 <+bridge> :justatest: 14:23 <+bridge> rust stable :cammostripes: 14:24 <+bridge> :gigachad: 14:24 <+bridge> my case is pre 2020, old hardware 14:24 <+bridge> gotta replace 14:24 <+bridge> xDDDDD 14:37 <+bridge> πŸ‘Ί 14:37 <+bridge> robsterbyte, u have to change server config and restart 14:37 <+bridge> friendly reminder 14:53 <+ChillerDragon> @heinrich5991 probably always will be even after i finished all my protocol implementations and 0.7 support 14:54 <+ChillerDragon> it would be a nice to have for traffic analsis in general but yea also would help a lot to create test cases for my implentations but i can also manage without 14:55 <+ChillerDragon> i implemented snap items in ruby already so yeah .. but would be nice anyways 15:25 <+bridge> when are fast emotes back 15:31 <+ChillerDragon> just edit your client to render emote event instead of sending emote msg 15:31 <+bridge> yes pls 15:31 <+bridge> i die so hard 15:31 <+bridge> isnt the change already in 15:31 <+ChillerDragon> then it feels fast eventho u dont send anything xd 15:31 <+bridge> yes 15:31 <+bridge> not all servers restarted yet 15:31 <+bridge> still need to be recompiled 15:31 <+bridge> ah, did you already recompile? 15:31 <+bridge> fast fast 15:31 <+bridge> 15:32 <+bridge> u accidentially use evil emote, cant even correct for 1 seond 15:32 <+bridge> 15:32 <+bridge> all ppl on server completely mad on you 15:33 < ws-client> yea ik i miss emote 50% correction so important xd 15:33 < ws-client> nice emote ryo xd 15:34 < ws-client> oh, why can u see it 15:34 < ws-client> why are messages grouped so weirdly 15:35 < ws-client> confusing af xD 15:35 < ws-client> because i did hotreload while deving 15:35 < ws-client> to see ryo emote xd 15:35 < ws-client> lel 15:35 < ws-client> i have a 6 letter alias to deploy to prod 15:36 < ws-client> does hotreload work now? 15:37 < ws-client> did u document that command? 15:39 <+bridge> @ChillerDragon why dont you send the webhook message properly btw, by using the username field for the actual username?... 15:41 <+bridge> It's not a discord webhook. It's an irc bot actually 15:47 <+bridge> ah yea, true 15:51 < ws-client> ``ssh chiller@zillyhuhn.com -t "cd /var/www/discord-irc/ && source ~/.nvm/nvm.sh && git pull && npm run build"`` 15:52 <+bridge> leak 15:52 < ws-client> @Jupstar no hot reload just effortless deploy to production for me 15:55 < ws-client> fakin newlines are so hard ._. 16:00 <+bridge> what u doing 16:00 <+bridge> wdym by fake 16:00 <+bridge> new lines 16:00 <+bridge> p { 16:00 <+bridge> white-space: pre; 16:00 <+bridge> } 16:00 <+bridge> or pre-line 16:00 <+ChillerDragon> ye ye ik pre 16:01 <+ChillerDragon> but somehow my fake irc multi line causes newlines to be duped 16:01 <+ChillerDragon> its not really a css issue its more a chiler brain issue 16:36 <+bridge> Robyte full time ddnet employee 16:36 <+bridge> 😬 16:43 <+bridge> 😬 16:47 <+bridge> 😬 16:47 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116378083977592843/image.png 16:49 <+bridge> he's separating his work more cleanly, makes for more commits 16:49 <+bridge> but he's also been active quiiiite a lot 16:52 <+bridge> better delete 1.3 million _whatever_ 😬 16:52 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116379241525805106/image.png 16:52 <+bridge> @ryozuki did your contribution mapping finally pay out πŸ˜‚ 16:54 <+bridge> nope 16:54 <+bridge> github is dumb 16:54 <+bridge> so im missing 100 commits 16:55 <+bridge> https://tenor.com/view/sad-upset-violin-sponge-bob-mr-crab-gif-3530280 17:16 <+ChillerDragon> skill issue 17:16 <+ChillerDragon> github gaming 17:29 <+bridge> I wonder how that happened πŸ˜„ 17:31 <+bridge> let's guess 17:31 <+bridge> libraries 17:31 <+bridge> prolly 18:57 <+bridge> i believe that's when someone added boost to the repo 19:02 <+bridge> wat, why did they remove it ;~; 19:14 <+bridge> boost has bad compile times, I think 19:14 <+bridge> factorio removed it due to that 19:24 <+bridge> if thats an argument you should never use rust xD 19:24 < ws-client> was about to say that 19:29 <+bridge> because you don't add boost to a git repo, you just use it and add it to the dependency list 19:30 <+bridge> where is the dependency then :^) 19:35 <+bridge> https://discord.com/channels/252358080522747904/293493549758939136/989718018005299260 19:36 <+bridge> how do you create these good looking message links? 19:36 <+bridge> https://discord.com/channels/252358080522747904/293493549758939136/1116419017549283430 19:36 <+bridge> ah 19:36 <+bridge> discord added a parser for them πŸ˜„ 19:58 <+bridge> rust programs compile faster than boost 19:59 <+bridge> source: gentoo user 20:02 <+bridge> what, did mozilla make gentoo as well? 20:22 <+bridge> sup 20:22 <+bridge> the correct answer would be: 20:22 <+bridge> Buy hardware from 2020+ 😏 20:23 <+bridge> i disagree 20:23 <+bridge> boomer 20:23 <+bridge> welcome to stone age 20:44 <+bridge> I heard rust build times are faster than C++ with heavy template usage 20:44 <+bridge> due to SFINAE 20:54 <+bridge> mh i can't say. Compile times are obviously already higher bcs of the static linking. Generally coding with rust tools (the analyzer etc.) feels slower than using the same with clangd 20:54 <+bridge> 20:54 <+bridge> so either the tool is badly written or it has a harder time to reparse certain code snips 20:55 <+bridge> yeah clangd is surprisingly fast 20:55 <+bridge> i wonder how they differ 20:55 <+bridge> i know rust analyzer is like another compiler frontend 20:55 <+bridge> idk 20:56 <+bridge> anyway 20:56 <+bridge> just buy better hardware is good solution 20:57 <+bridge> ye 20:57 <+bridge> i got 16 cores for 250€ 20:57 <+bridge> m1 is surprisingly fast 20:57 <+bridge> nobody can tell me thats too much money xd 20:57 <+bridge> nearly on par to 5800x 20:57 <+bridge> or on par 20:57 <+bridge> idk 20:57 <+bridge> i wish we'd have m2 with proper software 20:57 <+bridge> idk the cost ratio to a 5800x tho 20:57 <+bridge> sad af 20:57 <+bridge> lmao 20:57 <+bridge> yeah m2 is fail right 20:58 <+bridge> i want m1 on a linux laptop 20:58 <+bridge> with non propietary bloat 20:58 <+bridge> a completly open source processor 20:58 <+bridge> i am interested so much in m2 bcs it has almost desktop class GPU and shares the memory with CPU 20:58 <+bridge> but i heard it gets too hot 20:58 <+bridge> so u can zero copy images etc into GPU memory 20:59 <+bridge> i'd give it water cooling πŸ˜‚ 20:59 <+bridge> if it wouldnt be apple 20:59 <+bridge> xd 20:59 <+bridge> but its meant for laptops 20:59 <+bridge> no? 20:59 <+bridge> soon they release an imac 20:59 <+bridge> with m2 20:59 <+bridge> all the people who have to eat for the rest of the month with 50€ can 21:00 <+bridge> yayayaya 21:00 <+bridge> llvm no? 21:01 <+bridge> no 21:01 <+bridge> rust analyzer emulates rustc 21:01 <+bridge> to find errors 21:01 <+bridge> > A Rust compiler front-end for IDEs 21:02 <+bridge> https://rust-analyzer.github.io/ 21:02 <+bridge> llvm is the backend 21:02 <+bridge> clang is frontend 21:02 <+bridge> clangd is probs rly interwined with clang 21:02 <+bridge> so it works fast 21:02 <+bridge> idk rly the ins and outs 21:04 <+bridge> @Jupeyy_Keks making a rly good LSP is haaaard 21:04 <+bridge> rust analyzer has to identify broken rust code 21:04 <+bridge> and show what it can 21:04 <+bridge> autocomplete 21:04 <+bridge> u have to autocomplete even when u have bad code 21:04 <+bridge> they do some blog posts 21:04 <+bridge> it also often doesnt work for me inside code inside macros :/ 21:04 <+bridge> https://rust-analyzer.github.io/blog/2020/09/16/challeging-LR-parsing.html 21:04 <+bridge> https://rust-analyzer.github.io/blog/2020/10/24/introducing-ungrammar.html 21:05 <+bridge> https://rust-analyzer.github.io/blog/2021/11/21/ides-and-macros.html 21:05 <+bridge> ye macros are hard 21:05 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116442999925248080/image.png 21:05 <+bridge> @Jupeyy_Keks last post is about macros 21:05 <+bridge> and why they hard 21:06 <+bridge> is it really useful to keep cargo.lock on a project or you add it to gitignore ? 21:07 <+bridge> if its a binary keep it 21:07 <+bridge> if its a library 21:07 <+bridge> why that 21:07 <+bridge> keep it if u want to have consistent CI 21:07 <+bridge> reproducable builds 21:07 <+bridge> otherwise not 21:07 <+bridge> but it also sucks when u have merge conflicts 21:07 <+bridge> at least for npm package locks i had it few times, then u delete and recreate it xd 21:08 <+bridge> this is for reproducible builds indeed, rust follows semver 21:08 <+bridge> so 21:08 <+bridge> if when u build the binary u want to use the frozen lockfile u use --frozen 21:08 <+bridge> otherwise rust may find a minor newer version on a dep 21:08 <+bridge> and use it 21:08 <+bridge> if a package follows semver this is fine 21:08 <+bridge> ah 21:08 <+bridge> my opinion: always add a lockfile 21:08 <+bridge> it gives you reproducible builds which is very nice 21:09 <+bridge> i recommend https://github.com/killercup/cargo-edit too 21:09 <+bridge> cargo upgrade 21:09 <+bridge> will find new deps 21:09 <+bridge> you can `cargo update` if you want to update your dependencies. other people using your library will ignore your lockfile 21:09 <+bridge> ok ok thank you both for explaining 21:09 <+bridge> i also have cargo install-update to manage deps 21:10 <+bridge> @heinrich5991 update ur deps within the semver 21:10 <+bridge> ok ok thank you both for explaining (+ jup too !) 21:10 <+bridge> upgrade modifies the toml (the extension i sent) 21:10 <+bridge> ye 21:10 <+bridge> ok ok thank you both for explaining (+ jupstar too !) 21:10 <+bridge> it also allows managing ur crate version 21:10 <+bridge> xd 21:10 <+bridge> cargo set-version --bump major 21:11 <+bridge> i also use cargo install-update to manage binaries installed with rust 21:11 <+bridge> is there any good article/book to learn macro-magic? 21:11 <+bridge> and cargo cache 21:11 <+bridge> this is a thing u need to try urself too to learn 21:12 <+bridge> apart from reading 21:12 <+bridge> syn and quote ur friends 21:12 <+bridge> yeah i know that i need practice 21:12 <+bridge> you use syn to receive the ast tokens 21:12 <+bridge> and quote to easily create the generated code 21:13 <+bridge> i also had a task that i wanted to do with macro derives but stuck on first steps 21:13 <+bridge> copy some existing crate doing it I guess 21:13 <+bridge> https://doc.rust-lang.org/book/ch19-06-macros.html 21:14 <+bridge> @gerdoe i made this useless thing back in time https://github.com/edg-l/formy 21:14 <+bridge> I think I've never had to write a non-declarative macro before 21:14 <+bridge> oh i tried to learn something from reading alkahest macro derives but its too complicated 21:14 <+bridge> gave up instantly xd 21:15 <+bridge> u mean proc macros? 21:15 <+bridge> @gerdoe check this out https://github.com/edg-l/formy/blob/master/formy_derive/src/lib.rs 21:16 <+bridge> yeah im lurking around rn 21:16 <+bridge> thanks, cute lib xd 21:16 <+bridge> its easier if you have dealt with AST before 21:16 <+bridge> abstract syntax trees 21:16 <+bridge> like never 21:16 <+bridge> `fn get_meta_list(nested_meta: &syn::MetaList) -> Result, TokenStream> {` 21:16 <+bridge> for example 21:16 <+bridge> messed around with cpp templates and c macroproc 21:16 <+bridge> syn is a crate that has most of rust ast representations 21:16 <+bridge> here you get a meta list 21:17 <+bridge> if i remember correctly its #[stuffhere] 21:17 <+bridge> ye 21:17 <+bridge> this functio receives the meta list 21:17 <+bridge> and returns a list of paths and literals 21:17 <+bridge> proc macros are cool xd 21:17 <+bridge> u can write a completly new language in it 21:17 <+bridge> paths are type symbols for example 21:17 <+bridge> proc macros are epic 21:17 <+bridge> @Jupeyy_Keks proc macros are even better when the diagnostic RFC lands 21:18 <+bridge> it allows macros to report errors cleanly 21:18 <+bridge> so i get metadata about struct/struct field and use it to do stuff right 21:18 <+bridge> in that function yeah 21:18 <+bridge> ```rust 21:18 <+bridge> 21:18 <+bridge> fn get_meta_list(nested_meta: &syn::MetaList) -> Result, TokenStream> { 21:18 <+bridge> let mut list = vec![]; 21:18 <+bridge> for v in &nested_meta.nested { 21:18 <+bridge> match v { 21:18 <+bridge> syn::NestedMeta::Meta(m) => { 21:18 <+bridge> if let syn::Meta::NameValue(value) = &m { 21:18 <+bridge> list.push((&value.path, &value.lit)); 21:18 <+bridge> } else { 21:18 <+bridge> return Err( 21:18 <+bridge> quote_spanned! {m.span()=> compile_error!("Must be a named value.")}.into(), 21:18 <+bridge> ); 21:18 <+bridge> } 21:18 <+bridge> } 21:18 <+bridge> x => { 21:18 <+bridge> return Err( 21:18 <+bridge> quote_spanned! {x.span()=> compile_error!("Invalid meta type.")}.into(), 21:18 <+bridge> ); 21:19 <+bridge> } 21:19 <+bridge> } 21:19 <+bridge> } 21:19 <+bridge> 21:19 <+bridge> Ok(list) 21:19 <+bridge> } 21:19 <+bridge> ``` 21:19 <+bridge> this is my old rust code tho 21:19 <+bridge> not perfect 21:19 <+bridge> quote! allows you to construct TokenStreams 21:19 <+bridge> using rust syntax directly 21:19 <+bridge> its epic 21:19 <+bridge> otherwise u would need to do ugly stuff 21:19 <+bridge> build it manually u know 21:19 <+bridge> quote_spanned is like quote! but adds spans where the macro is expanded 21:19 <+bridge> so u see i put a compile_error! 21:19 <+bridge> it will show a compiler error there 21:19 <+bridge> if u use a wrong meta attribute 21:20 <+bridge> (thanks to the spans) 21:20 <+bridge> huhuhu 21:20 <+bridge> here u can do anything 21:20 <+bridge> u can do a http request 21:21 <+bridge> and generate a struct from a json u received 21:21 <+bridge> okey i'll try to do some kind of serialization to learn more 21:21 <+bridge> thanks a lot ryozoozki 21:21 <+bridge> use dbg! 21:21 <+bridge> everywhere 21:21 <+bridge> kekw 21:21 <+bridge> did u know about dbg? 21:21 <+bridge> nope actually 21:21 <+bridge> https://edgarluque.com/blog/rust-dbg-macro/ 21:21 <+bridge> kek 21:24 <+bridge> @gerdoe its hilarious cuz im doing heavy proc macro stuff at work rn 21:24 <+bridge> and tbh idk how it will look 21:24 <+bridge> we literally call libclang to parse c++ stuff and gen stuff 21:24 <+bridge> cxx didnt look good enough 21:24 <+bridge> cxx -> c** 21:25 <+bridge> cΠΆΠΆ 21:25 <+bridge> :justatest: 21:25 <+bridge> sounds complicated 21:25 <+bridge> does it mean you parse c++ to make it rusty or something 21:26 <+bridge> don't get it 21:27 <+bridge> you're doing c++ rust interop at work, @ryozuki? 21:27 <+bridge> y 21:27 <+bridge> heh, interesting 21:27 <+bridge> im sure c++ purists would die 21:27 <+bridge> anyway 21:29 <+bridge> there is a reason why people make bindings to c and not cpp 21:29 <+bridge> xd 21:29 <+bridge> but well, using libclang, we analyze the classes etc 21:30 <+bridge> we store them as [x;u8] 21:30 <+bridge> and get the align and size 21:30 <+bridge> with libclang 21:30 <+bridge> and more weird stuff 21:30 <+bridge> my coworker is more c++ savy than me 21:30 <+bridge> u still didnt rewrite llvm in rust? 21:30 <+bridge> no 21:30 <+bridge> mhh 21:30 <+bridge> i would 21:30 <+bridge> llvm has millions of lines 21:30 <+bridge> if im paid i would 21:30 <+bridge> it for sure would make me have a 2y job 21:30 <+bridge> xdd 21:30 <+bridge> probably longer xd 21:31 <+bridge> xd 21:31 <+bridge> well depends on how useful most of the code is 21:31 <+bridge> maybe u make a clean version 21:31 <+bridge> cpp parsing is very complicated isn't it tho 21:31 <+bridge> cpp has so much in it 21:31 <+bridge> yeah but that doesnt matter 21:31 <+bridge> cuz we use libclang 21:31 <+bridge> name me one github project (binary) that is older than 5 years and isnt bloated πŸ˜‚ 21:32 <+bridge> @gerdoe u dont make bindings to c instead of cpp cuz its hard to parse 21:32 <+bridge> its cuz c is simpler, has less edge cases, and idk seems more "stable" or smth 21:32 <+bridge> c has stable abi yup 21:32 <+bridge> idk if thats right 21:32 <+bridge> C does not have a standard ABI.Dec 20, 2010 21:33 <+bridge> > 21:33 <+bridge> > 21:33 <+bridge> > C defines no ABI. In fact, it bends over backwards to avoid defining an ABI. Those people, who like me, who have spent most of their programming lives programming in C on 16/32/64 bit architectures with 8 bit bytes, 2's complement arithmetic and flat address spaces, will usually be quite surprised on reading the convoluted language of the current C standard. 21:33 <+bridge> the same so link xd 21:34 <+bridge> then question remains open kekw 21:51 < ws-client> @Jupstar βœͺ totally worth it to spend the whole day polish code snippets xd 21:51 < ws-client> https://zillyhuhn.com/cs/.1686253851.png 21:51 < ws-client> kinda pog that this is single line irc under the hood 21:52 < ws-client> oh no robi wide snippet added the sideway scroll again xd 21:52 < ws-client> https://zillyhuhn.com/cs/.1686253932.png 22:14 <+bridge> Nice 22:22 <+bridge> chiller 22:22 <+bridge> not to say anything but 22:22 <+bridge> the snippet is wrong 22:22 <+bridge> looks like u cant handle <>& 22:26 <+bridge> Html moment 22:28 <+bridge> Oh no 22:30 <+bridge> Use customized input tag 22:30 <+bridge> There u don't need these html hacks 22:31 <+bridge> Sounds good but I sleepy now 22:32 <+bridge> chillerdragon: I tried doing the python module 22:32 <+bridge> Huh, cxx really wasn't enough? 22:32 <+bridge> but I wasn't able to 22:32 <+bridge> idk its a bit more hassle 22:33 <+bridge> unique ptrs everywhere u cant pass by value 22:33 <+bridge> with libclang we can cuz we know about the data layouts etc 22:33 <+bridge> also we can find if a method is inline, constexpr, etc and wrap it or etc 22:33 <+bridge> this is all inside a proc macro xd 22:37 <+bridge> I thought the primitive types were mapped so you can pass by value 22:37 <+bridge> i meant classes 22:37 <+bridge> i think u kinda can do in cxx if u mix cbindgen or smth 22:37 <+bridge> or impl the trait 22:38 <+bridge> i wonder how cxx works around inline methods 22:38 <+bridge> hm, can you even really pass classes by value to another language? Classes are too large to really pass by value down at the ABI level 22:38 <+bridge> it seems to work 22:38 <+bridge> on rust we just store the bytes as a array of u8 22:38 <+bridge> we get the align from clang 22:39 <+bridge> and apply that align to the struct using some black magic? 22:39 <+bridge> repr 22:39 <+bridge> repr(C, align(x))) 22:39 <+bridge> but when it comes down to calling a c++ function on it, don't you end up having to use a pointer? 22:40 <+bridge> yeah 22:40 <+bridge> this as the first param 22:40 <+bridge> tbh i just kinda went with my coworker wanted to do xD 22:41 <+bridge> walking landmines 22:41 <+bridge> anyway, becareful, it's really easy to invoke nasal demons when working at C++ in this level 22:41 <+bridge> ikr 22:41 <+bridge> he knows too 22:41 <+bridge> if this works 22:41 <+bridge> kinda deserves a blog post 22:42 <+bridge> chillerdragon: couldn't figure out how to run custom code (build the rust project) using the python build stuff 22:43 <+bridge> so I didn't manage to do it this evening 22:43 <+bridge> i just wish llvm was made in rust 22:43 <+bridge> but we cant use c++ 22:43 <+bridge> because we need to use rust libraries 22:43 <+bridge> and doing this the other way around 22:43 <+bridge> is more hell 22:43 <+bridge> kek 22:43 <+bridge> make it in rust 22:43 <+bridge> So wait, you said passing classes by value, for member functions that's not the case, they use a pointer at the abi level. For normal functions I thought that entailed a copy or move to the stack 22:44 <+bridge> I think larger structs are passed by pointer 22:45 <+bridge> i mean 22:45 <+bridge> imagine u have a class and constructor 22:45 <+bridge> we call it 22:45 <+bridge> the instance of the class 22:45 <+bridge> we store it by value on rust side 22:45 <+bridge> for method calls it seems to accept a pointer on *this yeah 22:45 <+bridge> atleast on linux and macos 22:45 <+bridge> xd 22:46 <+bridge> we didnt go to windows hell 22:46 <+bridge> Ah, I think I understand what you mean, and libclang darkmagic gives you the alignment and size you need to allocate on the rust side for the new object 22:46 <+bridge> also macos seems to put __ before symbols or smth 22:46 <+bridge> weird stuff 22:46 <+bridge> ye 22:47 <+bridge> let me copy some stuff 22:47 <+bridge> I guess cxx instead let c++ do the allocations 22:47 <+bridge> ye 22:48 <+bridge> anyone experience with python packaging? ^^ 22:48 <+bridge> https://pastebin.com/FHXqxsP2 22:48 <+bridge> @learath2 22:48 <+bridge> cargo expand 22:48 <+bridge> of the proc macro 22:48 <+bridge> well this is a bit older version 22:49 <+bridge> we now wrap automatically inline functions 22:49 <+bridge> and something with placement new 22:49 <+bridge> i forgot 22:50 <+bridge> ```cpp 22:50 <+bridge> extern "C" void wrap___ZN4mlir19registerAllDialectsERNS_11MLIRContextE(mlir::MLIRContext & context) { 22:50 <+bridge> return registerAllDialects(context); 22:50 <+bridge> } 22:50 <+bridge> 22:50 <+bridge> extern "C" void wrap___ZNK4mlir8Location4dumpEv(mlir::Location self) { 22:50 <+bridge> return mlir::Location::dump(self); 22:50 <+bridge> } 22:50 <+bridge> 22:50 <+bridge> extern "C" void wrap___ZN4mlir7BuilderC1EPNS_11MLIRContextE(mlir::MLIRContext * context) { 22:50 <+bridge> new(context) mlir::Builder(context); 22:50 <+bridge> return; 22:50 <+bridge> } 22:50 <+bridge> ``` 22:50 <+bridge> the last method 22:50 <+bridge> is a inline constructor 22:50 <+bridge> builder 22:51 <+bridge> Excellent mangling btw πŸ˜„ 22:51 <+bridge> xDD 22:51 <+bridge> anyway its interesting for sure 22:51 <+bridge> A decade looking at this language and it still takes me so long to decode them 22:51 <+bridge> which is why i love this current job 22:51 <+bridge> even if i could have more paying 22:51 <+bridge> but i doubt i can do this crazy stuff elsewhere easily 22:52 <+bridge> xd 22:52 <+bridge> @learath2 did u look at rust mangling 22:52 <+bridge> u get 100+ names 22:52 <+bridge> Haven't yet, sounds excellent 22:53 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116469962085777408/image.png 22:53 <+bridge> from the blog post from yesterday 22:53 <+bridge> its not all the name 22:53 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1116470086052610149/image.png 22:53 <+bridge> Do you know which language has amazing mangling? 22:53 <+bridge> no 22:53 <+bridge> C 22:54 <+bridge> none 22:54 <+bridge> C ofc ❀️ 22:54 <+bridge> xdd 23:03 <+bridge> Does c literally guarantee no mangling? I mean if a compiler would generate it, would it leave c standard xd 23:03 <+bridge> no, it wouldn't 23:03 <+bridge> msvc mangles the names a litle 23:04 <+bridge> Msvc is probably not the best exampleπŸ˜‚πŸ˜‚πŸ˜‚πŸ˜‚ 23:04 <+bridge> But good to know 23:22 <+bridge> C doesn't care 23:25 <+bridge> theorically rust either 23:26 <+bridge> but the only impl does it 23:26 <+bridge> kek 23:47 <+bridge> huh russian cpp community shared deen's article about haskell 23:47 <+bridge> unexpected