00:06 < bridge> Chillerdragon: is it true you are interested in maintaining GCL if it was open source? or something like that 00:07 < bridge> someone told me this but idk why you wouldn't just ask me directly 05:00 < bridge> who needs sleep :pepeW: 05:40 < bridge> i don't!! 07:15 < bridge> Anyone know that: besides OpenGL and Vulkan, what other cross-platform options are there in graphics API? 07:15 < bridge> πŸ€” 07:15 < bridge> wgpu? 07:21 < bridge> also this is like very easy to google or ask ai and there really isn't any room for interpretation or discussion why are you asking this here? xd 07:45 < bridge> πŸ˜” 07:49 < bridge> What is GCL xd 08:13 < bridge> chillerdragon: the gores mod with short maps, if you've never heard if it sorry for bothering you lol 08:52 < bridge> But it's based on other graphics API like Vulkan. 08:53 < bridge> I have asked and searched but I got nothing. That's why I asked the same question here. 09:05 < ws-client> **** i actually do not know it oO why is it closed source? 09:05 < ws-client> **** and how is a mod related to map length xd 09:06 < ws-client> **** @teero777 don't be rude! asking #developer > asking google 09:07 < ws-client> **** @totar i dont even find servers when searching for "gcl" 09:08 < bridge> they've been closed for about a year now 09:08 < ws-client> **** oh 09:08 < ws-client> **** and its your project? 09:08 < bridge> mostly yeah 09:08 < ws-client> **** and you dont want to maintain it anymore? 09:09 < ws-client> **** just publish the code and let someone else run the server 🀷 09:09 < bridge> idk avo said you were specifically interested in it for some reason, I have no plans to do anything with it rn 09:09 < ws-client> **** haha avo said that xd? 09:09 < ws-client> **** im interested in avo publishing his code 09:10 < bridge> if you're running any website using react or next.js, you need to upgrade, that CVE is insane 09:10 < ws-client> **** CVE in what lib? 09:10 < bridge> next.js 09:10 < bridge> lol 09:10 < ws-client> **** he said "or react" 09:10 < bridge> it's been a few days I think you've already been pwned if you aren't behind cloudflare or upgraded 09:10 < bridge> ah 09:10 < bridge> it's just next.js, not react 09:11 < bridge> no it's both, it's just not react out of the box and you need to enable something 09:11 < ws-client> **** @totar yea i am not really sold on the whole GCL project yet so I am not planning to maintain it at the moment :( 09:11 < ws-client> **** sadge if players a missing a server now tho 09:12 < ws-client> **** you should always go open source everything anyways 09:12 < bridge> idk, the source code is rather terrible 09:13 < bridge> someone else was working on it after I left and I don't even know how to run it anymore 09:13 < bridge> oh I didn't realize server components was a native react thing, that's so weird 09:14 < bridge> 09:15 < bridge> I don't know how old it is and why I hear from it just now 09:15 < bridge> you have to be using some kind of server side thing tho if you're not using react with node.js this doens't apply to you 09:15 < bridge> it can apply to you with native react, but you need to activate that server side thing 09:16 < bridge> idk 09:16 < bridge> it literally can't happen if you're not running javascript on the server 09:16 < bridge> like if you're using react without node.js 09:17 < bridge> the whole vulnerability is based on node 09:17 < bridge> it has to be "react-server" or next.js 09:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447865026839842902/image.png?ex=69392ce2&is=6937db62&hm=3269b2999889c6b32c2bd0e4f5228a406cd9fd510efdcc72ea68cadc82be3288& 09:19 < bridge> ^ that server side thing πŸ˜„ 09:20 < bridge> it's not like you "activate" the entire architecture of your project 09:20 < bridge> you were either vunerable by default or not at all 09:20 < bridge> you were either vulnerable by default or not at all 09:20 < bridge> if you are using PHP or Rails or some other framework it's physically impossible for the vulnerable javascript to effect you 09:21 < bridge> or if you are making a react SPA 09:21 < bridge> yes 09:23 < ws-client> **** omg this hein guy 09:24 < ws-client> **** did i already mention i dont like ddnet logger -.- 09:24 < ws-client> **** it hides my assertion messages and rcon commands and still leaks memory on purpose 09:24 < ws-client> **** https://zillyhuhn.com/cs/ddnet_logger_leak.png 09:24 < ws-client> **** can we just delete it pls 09:25 < bridge> I thought this got fixed 09:25 < bridge> https://github.com/ddnet/ddnet/issues/8265 09:25 < ws-client> **** its intentional 09:25 < ws-client> **** not even a bug 09:25 < ws-client> **** that its memory is never freed 09:26 < bridge> wtf is intentional about that? 09:26 < ws-client> **** its not growing in siz 09:26 < ws-client> **** but it doesnt get freed on shutdown 09:26 < ws-client> **** i assume to be able to log during shutdown 09:27 < ws-client> **** https://github.com/ddnet/ddnet/issues/8943#issuecomment-2363710202 09:27 < bridge> it's supposed to set a logger that deletes them? 09:27 < bridge> how is the leak intentional? 09:27 < ws-client> **** its heinrich technology dont ask me 09:27 < ws-client> **** i can only quote him 09:27 < bridge> what does this PR do then? https://github.com/ddnet/ddnet/pull/8279 09:27 < ws-client> **** different leak i guess 09:28 < ws-client> **** i mean the leak is not bad 09:28 < ws-client> **** its just annoying that i have to figure out whitelisting leaks with every tool because of it 09:28 < bridge> I still don't understand 09:28 < bridge> me neither 09:28 < ws-client> **** then ask here i guess https://github.com/ddnet/ddnet/issues/8943#issuecomment-2363710202 09:29 < bridge> does heinrich know that we removed the logging by default? 09:29 < bridge> in the first PR I sent 09:29 < bridge> or did it get reverted? 09:29 < ws-client> **** its oldge comment idk 09:29 < ws-client> **** @robyt3 heaptrack looks promising again thanks a lot for the good recommendation <:heartw:395753947396046850> 09:30 < bridge> I still don't see the point of intentional memory leaks for logging 09:30 < ws-client> **** why do you keep repeating that xd 09:30 < ws-client> **** you wont get an answer from me 09:30 < bridge> I don't even understand his comment. Why would it be intentional that we don't call the destructor on program shutdown? what functionality could you possibly have from not calling a desctructor when the program is closing? 09:31 < bridge> heinrich magic :3 09:31 < ws-client> **** imo https://github.com/ddnet/ddnet/issues/11305 and https://github.com/ddnet/ddnet/issues/11095 are bad enough to justify reverting the logger system until its bugs are fixed 09:31 < bridge> it's just a logger how can it need a mandatory memory leak 09:33 < bridge> is it only on shutdown? 09:33 < bridge> Maybe that's because it's not thread_local. 09:34 < bridge> apparently the boost logger does this intentionally as well 09:36 < ws-client> **** @Assa yes only on shutdown it does not free 09:36 < ws-client> **** so a clean exit doesnt free all memory 09:37 < ws-client> **** but its not growing so its not problematic at all. Just annoying for analyzers. 09:37 < bridge> yes, and the os reclaims the memory anyway 09:38 < bridge> it'll even make closing faster i.g 09:43 < bridge> ok the issue is apparently that logging during program shutdown is hard, because destructor order is not trivial so you could get UB something tries to log while the program is being shutdown 09:43 < bridge> ok the issue is apparently that logging during program shutdown is hard, because destructor order is not trivial so you could get UB when something tries to log while the program is being shutdown 09:45 < bridge> this is even worse for multithreading, i don't know if the logger is multithreaded (or how) 09:47 < bridge> would be nice if c++ had destructor stages, so you could call the logger destructor after all other destuctors have run 09:47 < bridge> create and clear the logger in the main function πŸ˜› 09:48 < bridge> I don't think that saves you from UB 09:48 < bridge> new App(); app.Run(); delete app; delete logger; xD 09:48 < bridge> no it doesn't 09:52 < bridge> making c++ not call the log destructor before all the other ones is really annoying to do 10:18 < bridge> chillerdragon: do you think ddnet-insta is better to fork even for ddnet-like mods? 10:19 < bridge> hmm maybe not 10:20 < bridge> idk 10:20 < bridge> I think ddnet-insta is for creating pvp modes. 10:21 < bridge> yes but afaik it's also easier to fork than ddnet 10:21 < bridge> Why do you think so? 10:21 < bridge> it says in the readme 10:22 < bridge> > - Be friendly to downstream projects. Commits and releases should warn about breaking changes. Downstream projects should have an easy time to add new gametypes that can be updated to new ddnet-insta versions without a lot of effort. 10:23 < bridge> merging ddnet is really annoying 10:23 < bridge> especially for a server mod 10:23 < bridge> the server is more tangled 10:24 < bridge> πŸ€” 10:25 < bridge> That's based on what is "ddnet-like" mod 10:26 < bridge> Anyway, if the main content of the mod is Race instead of PvP 10:27 < bridge> I think it would better use ddnet instead of ddnet-insta 10:27 < bridge> in unique we have one commit rn and just rebase regularly xD it's still annoying 10:27 < bridge> one commit containing basically 3 mods 10:27 < bridge> and unique is like basically ddnet already isn't it? 10:28 < bridge> no 10:28 < bridge> Did unique delete its old repos? 10:28 < bridge> unique is race mod? 10:28 < bridge> what am I missing 10:28 < bridge> 1500 LOC diff, it has Fastcap, Race and one more πŸ™‚ 10:28 < bridge> what's the third one 10:28 < bridge> no they are just moved/or moved to another branch 10:28 < bridge> I can't find the teefoot mod maintained by unique. 10:28 < bridge> :justatest: 10:29 < bridge> it's secret? 10:29 < bridge> I'll give you that fastcap is a pretty big diff 10:29 < bridge> I forgot about that 10:29 < bridge> https://github.com/unique-clan/football is 404 Not Found now 10:29 < bridge> I mentioned this repo when I edit our NewTeeworldsCN wiki. 10:30 < bridge> it's not the biggest part of it, there is slightly different physics and milliseconds timing, other stuff ^^ 10:30 < bridge> Removed last month as I found it had been missing. 10:32 < bridge> Is anyone keeping the codes of it? 10:32 < bridge> I didn't know we had the mod repo, I didn't delete it but we don't host the servers anymore 10:33 < bridge> yeah this seems to be gone 10:33 < bridge> I remembered that it was still there in Sept. 10:34 < bridge> Sad for new teeworlds lost media. 10:34 < bridge> :frozen: 10:34 < bridge> It wasn't played enough and we weren't able to hold the community for this mod 10:34 < bridge> right at the same time I did the upgrade for race (which was previously based on 7 year old ddnet) 10:35 < bridge> is stuff like this findable at the internet archive? 10:36 < bridge> I guess if you want to revive it: https://web.archive.org/web/20201127014405/https://github.com/unique-clan/football 10:36 < bridge> Oh yeah 10:36 < bridge> I am sure it did not receive any updates in this 9 years 10:36 < bridge> xD 10:37 < bridge> the subdirectories don't exist 10:38 < bridge> so this doesn't help, you need to find a github backup 10:39 < bridge> At least archive.org could ensure that it existed. 10:39 < bridge> yes, around 5 years ago 10:40 < bridge> There's some mods that didn't remain any informations except some memories. 10:41 < bridge> do you want the mod an archive it yourself? I can ask tim if he has a backup 10:41 < bridge> has anyone even clicked on this PR since I opened it? not a whisper of activity lol 10:41 < bridge> 10:41 < bridge> oldest PR with no comments somehow 10:42 < bridge> ah wait 10:42 < bridge> nvm 10:42 < bridge> PR is scary, I am too clueless about it 10:42 < bridge> did you read the desc 10:42 < bridge> I would like to keep a archive of it in the TeeworldsArchive. Thanks for your help. :3 10:42 < bridge> yes, but I don't know enough about the code around it to ensure that nothing breaks 10:43 < bridge> it would be really obvious if it was broken 10:43 < bridge> asking tim 10:44 < bridge> @remakepower pro tip: fork all mods you want to archive. 10:44 < bridge> pro pro tip: have a daily job just syncing upstream 10:46 < bridge> and if you're paranoid, also do local backups 10:56 < bridge> It seems weird to archive a project that is still being updated. 10:57 < bridge> idk what's weird about that. I also do backups of a database while my service stays online 10:57 < bridge> like what if deen has a crashout tomorrow and deletes ddnet? 10:57 < bridge> ofc we all have a copy but the principle applies 10:58 < bridge> did you also backup my mods btw? πŸ˜„ 10:58 < bridge> :thonk: 10:58 < bridge> did you also backup my mods btw? πŸ˜„ or link them 10:59 < bridge> Hm.. 11:00 < bridge> I don't think database is the same logic. πŸ™ 11:01 < bridge> I know where a backup of the football mod still exists ... in the arctic vault 11:01 < bridge> :frozen: 11:05 < bridge> oh you did fork my projects 11:05 < bridge> @essigautomat Is this something like Teeware? https://github.com/AssassinTee/ParTee 11:05 < bridge> it's unfinished - and still a mod I don't understand that it does not exist 11:05 < bridge> like a mod switching through a list of minigames just for fun 11:06 < bridge> one might be bomb, one might be "hammer the dummy the highest", one might be last mans standing idk, you could do so much 11:06 < bridge> Haven't you played Teeware? 11:06 < bridge> no? 11:07 < bridge> I guess that's the mod you want. 11:07 < bridge> never heard of it, was it old? 11:08 < bridge> It's made by headshot, and based on DDNet 9 11:08 < bridge> https://github.com/headshot2017/teeware-mod 11:08 < bridge> ``` 11:08 < bridge> Your goal is to be on top of the scoreboard by winning 20 rounds of fast-paced minigames that the game throws at you, which last 10 seconds or less. Halfway into the game at 10 rounds the game will speed up, and the speed will be reset to normal on the boss round. The boss minigames are more complex, and last an average between 30 seconds and 1 minute. 11:08 < bridge> ``` 11:09 < bridge> seems to have flopped 11:09 < bridge> Although it's great but I have to say that he wrote a bad code 11:09 < bridge> teeware sounds like teeworlds kitchen supplies 11:10 < bridge> do you also collect very old clients? 11:10 < bridge> I think no. 11:11 < bridge> TeeworldsArchive is for server backups and mods refactoring. 11:12 < bridge> There's a example: 11:12 < bridge> ``` 11:12 < bridge> void MGBombRain::OnCharacterDamage(int Victim, int Killer, int Dmg, int Weapon) 11:12 < bridge> { 11:12 < bridge> if (Killer == -1 and Weapon == WEAPON_GRENADE) // unlucky guy hit by bomb 11:12 < bridge> { 11:12 < bridge> Controller()->killAndLoseMicroGame(Victim, -1, Weapon); 11:12 < bridge> } 11:12 < bridge> } 11:13 < bridge> ``` 11:13 < bridge> back then when I wrote the assa client over 10 years ago, I didn't even know git very well, and later I just used it as backup, that's why I am asking xD 11:13 < bridge> "and" ? 11:13 < bridge> Yeah 11:13 < bridge> It's OK for compiler 11:14 < bridge> though it's not a good idea. 11:14 < bridge> #define and || or something like that? xD 11:15 < bridge> No 11:15 < bridge> my problem with a Partee mod was always hooking up the different parts of the game up in an API-like manner 11:15 < bridge> *if you means it is defined by himself 11:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447894438478352474/image.png?ex=69394846&is=6937f6c6&hm=c2662af07c2e7c8a9e8ed79f5e141ef7e61c245a8520a9aedaef52af395838a0& 11:15 < bridge> #define and && or something like that? xD 11:15 < bridge> but why 11:16 < bridge> dev skill issue 11:16 < bridge> idk why. 11:16 < bridge> either. 11:17 < bridge> Also they are C++ basic keywords since C++98. 11:17 < bridge> I guess you can't even remove that, since some projects build on this 11:18 < bridge> As it could work fine, there's no need to fix the style. :3 11:19 < bridge> I don't even want to think about backcompat in compilers 11:21 < bridge> I have to say that the compiler implementation of the modern C23 standard is not even as well as C++23. 11:21 < bridge> MSVC has basically not implemented any of the standards introduced since C11. 11:22 < bridge> we are intentionally lacking behind in ddnet in order to be able to build on older systems 11:23 < bridge> I wish windows would die with the death of win 10 11:23 < bridge> refactoring the codebase to c++23 would be a nightmare lol 11:23 < bridge> c++23 does not exist in msvc 11:23 < bridge> how do you mean that? 11:24 < bridge> Partial implementation. 11:24 < bridge> microsoft implemented c++20 really fast but now they decided c++23 is waste of time 11:24 < ws-client> **** @totar i personally would use ddnet-insta for ddrace based mods too because its merges are already maintained and the controller is strong so you can do git conflict free development and a few features you might need are already there like db, rainbow and so on 11:24 < bridge> there are so many new features. they are getting rid of header files in c++23 or 26 afaik? 11:24 < ws-client> **** but currently it has a memory leak so dont touch it xd 11:25 < bridge> I compiled ddnet on 23 without any problems ** but on MSCV xD 11:25 < bridge> chiller: nice to know thanks. the readme looks kinda like pvp-only but I like less conflicts 11:26 < bridge> @essigautomat "modern" c++23 code looks horrible. compiling with c++23 doesn't mean using it 11:26 < bridge> That's why I like C better. 11:26 < bridge> <3 11:26 < bridge> just because we are using c++23 does not mean we're using every c++23 feature 11:26 < bridge> no one does that 11:26 < bridge> It would better to add some OOP and template features. 11:26 < bridge> And then we can create everything quickly. 11:27 < ws-client> **** @totar focus used to be pvp instagib only but scope keeps growing and growing. ddrace is supported too now 11:27 < bridge> yea but that means we mostly rely on deprecated and unrecommended code xd 11:27 < bridge> wdym depracated 11:27 < bridge> this is c++ 11:27 < bridge> nothing is depracated 11:27 < bridge> No 11:27 < bridge> very few things 11:27 < bridge> probably nothing we use 11:27 < bridge> it simply means nothing we use deprecated from 20 -> 23 11:27 < bridge> There are lots of depracated things. 11:28 < bridge> yes? doesn't mean it gets removed. it's just marked as deprecated. you shouldn't be using c style casts since like 17 11:28 < bridge> I don't think ddnet uses a lot of extraordinary containers or something like that 11:28 < bridge> is it 23 or 26 that introduces mpdules 11:29 < bridge> is it 23 or 26 that introduces modules 11:29 < bridge> 20 11:29 < bridge> modules don't exist tho 11:29 < bridge> 20 i see 11:29 < bridge> only msvc has then afaik 11:29 < bridge> Modules are terrible 11:29 < bridge> only msvc has them afaik 11:30 < bridge> GCC hasn't supported them at now. 11:30 < bridge> GCC hasn't supported them fully at now. 11:30 < bridge> what i mean by upgrading to 23 is reworking the whole codebase to use all of the new features. just compiling with 23 as the standard isn't the same as using it. 11:31 < bridge> it's like writing c while using a cpp compiler 11:31 < bridge> that's exactly why I am asking 11:31 < bridge> you still might benefit from std:: improvements in performance 11:31 < bridge> ddnet is still largely C code 11:32 < bridge> well 11:32 < bridge> I would say that modern C++ is deprecating C-style things. 11:32 < bridge> Like a tree which wants to cut its root. 11:32 < bridge> well, more like cpp98 11:32 < bridge> true, you can write anything now without "new" or "delete" or "malloc" ... 11:33 < bridge> is there anything deprecated other than casts? C-style casts in c++ are not the same thing as in C 11:33 < bridge> std::auto_ptr 11:34 < bridge> new stuff include modules, concepts, ranges and so much more std stuff 11:34 < bridge> ok but who is using std::auto_ptr 11:34 < bridge> also std::auto_ptr is not a C thing? 11:34 < bridge> ddnet is still using character arrays for strings, that's not recommended since std::string came out 11:34 < bridge> C has auto_ptr? 11:34 < bridge> Oh you means C 11:35 < bridge> That was what I want to say 11:35 < bridge> that's true, and weird πŸ˜„ 11:35 < bridge> what does auto_ptr do xd 11:35 < bridge> tbh idk 11:35 < bridge> something between shared_ptr and unique_ptr 11:35 < bridge> don't touch it 11:35 < bridge> The tree wants to cut its root, but it couldn't. 11:35 < bridge> there was also one keyword deprecated from C -> C++ but it was so rarely used 11:35 < bridge> there was also one keyword ~~deprecated~~ removed from C -> C++ but it was so rarely used 11:36 < bridge> restrict lol? its __restrict__ in cpp 11:36 < bridge> restrict lol? its `__restrict__` in cpp 11:36 < bridge> but that's really only a c99 thing 11:36 < bridge> and funnily enough gcc just ignores it lol 11:36 < bridge> restrict is really not needed 11:36 < ws-client> **** i thought character arrays are more performant that std::strings 11:37 < bridge> Me too. 11:37 < bridge> in some scenarious they might be, but I bet the way ddnet uses them doesn't increase performance xD 11:37 < bridge> std::string and char array are completely different things 11:37 < bridge> yes xd 11:38 < bridge> std string is basically a char vector with more functions 11:38 < bridge> oh we need to format stuff? Lets copy everything into a bigger array 11:38 < bridge> stringstreams? never heard of that shit 11:39 < bridge> c++ is garbage!!! 11:39 < bridge> ^ @learath2 pls pin 11:39 < bridge> strings are bad in every language 11:39 < bridge> std::string is just a heap string, it's not like it's slower than the same concept in any other lang 11:40 < bridge> Modern C++ is a trash bins for language experiments, with few good ideas. 11:40 < bridge> it gets the job done, idk what you are complaining about 11:41 < bridge> you are writing c with classes xdd 11:41 < bridge> that ddnet can't calculate one million ticks per second is not due to using C++ xD 11:41 < bridge> it can't!! XD 11:41 < bridge> It's perfect to get a language which is fully C-style and make it be easily to use OOP and template to create things. 11:41 < bridge> modern C++ is trying adding features that should have been core to the language/stl in a very unergonomic and verbose way, so no one wants to use them, even tho the behavior of the features is good. 11:41 < bridge> I have tried c3-lang but it's not good enough. 11:41 < bridge> operator overloading also 11:42 < bridge> Yeah, that's also one of the important things. 11:42 < bridge> operator overloading is fine if done well tbh 11:43 < bridge> Let we create a language named C--. lol :nouis: 11:44 < bridge> operator overloading is both horrible and perfect. on the one hand it can make things confusing but the resulting code is so much cleaner 11:44 < bridge> have any of you looked at Jai language btw? the elitist private one by jon blow? I think it actually looks very good 11:45 < bridge> > 1.2 What type of language is Jai? 11:45 < bridge> Blow described his new language as a better and modern day C, and also as C++ done right. Its primary focus is game programming, but it is also suited for systems programming like C/C++, D or Rust. Jai is lower level than Java or C#, and it is not an object-oriented language. 11:45 < bridge> > 1.2 What type of language is Jai? 11:45 < bridge> > Blow described his new language as a better and modern day C, and also as C++ done right. Its primary focus is game programming, but it is also suited for systems programming like C/C++, D or Rust. Jai is lower level than Java or C#, and it is not an object-oriented language. 11:46 < bridge> I haven't knowed that 11:46 < bridge> 11:47 < bridge> imo rust is pretty nice but there are soooo many features xd 11:47 < bridge> and it can be quite unreadable 11:47 < bridge> OK 11:47 < bridge> only issue is that it's not real xd 11:47 < bridge> I think that's more like python with {} and :: 11:48 < bridge> it has a go-syntax feel 11:48 < bridge> but more complex 11:48 < bridge> also it lacks features not related to game-programming 11:48 < bridge> also it lacks features not related to game programming 11:49 < bridge> no OOP which maybe is fine but I kinda like OOP 11:49 < bridge> otherwise I really like it 11:49 < bridge> oh no 11:49 < bridge> more than zig/rust 11:49 < bridge> I'm actually very confused about why some of modern languages still have `:=`. 11:50 < bridge> so you don't confuse it with ``==`` 11:51 < bridge> in my dream lang you can define custom operators 11:51 < bridge> perl? 11:52 < bridge> That's great 11:52 < bridge> perl is not my dream lang 11:52 < bridge> i can see the abominations of operators that will ensue 11:53 < bridge> <0xdeen> Nim has user defined operators: https://nim-lang.org/docs/manual.html#lexical-analysis-operators πŸ˜‰ 11:54 < bridge> can you take a look at , since it's blocking the 19.6 release? πŸ™ˆ (sorry to directly confront you with extra work) 11:54 < bridge> But I can't imagine these codes: 11:54 < bridge> ``` 11:54 < bridge> MyObject ObjA(5); 11:54 < bridge> MyObject ObjB(5); 11:54 < bridge> MyObject ObjC = ObjA $ ObjB; 11:54 < bridge> ``` 11:54 < bridge> Quite confusing. 11:54 < bridge> :kek: 11:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447904257692143707/image0.png?ex=6939516b&is=6937ffeb&hm=068dc7719de1d8d58ef5c064fcc3968ab036aebf901eab885a969ddc960f93d1& 11:55 < bridge> oh yeah, operatorOuterJoin lovely 11:55 < bridge> @totar im going to ⭐= you 11:55 < bridge> time to write sql into C++ operators 11:56 < bridge> Then 11:57 < bridge> *pPointer = πŸ˜€(aObject[0]); 11:58 < bridge> xD 11:58 < bridge> void BanPlayer(reason=πŸ’©); 11:59 < bridge> void :banhammer: (int ClientId, char* pReason=πŸ’©); 11:59 < bridge> In fact, you can do those things just by macro in C/C++.( 11:59 < bridge> shht 11:59 < bridge> @essigautomat btw will you ever fix demos and other playerss jumps not being shown with infinite jump? 12:00 < bridge> shht, don't make them do this 12:01 < bridge> jump particles and sounds are handled very weirdly lol 12:01 < bridge> I put that on the list right under the other ~17 open PRs I already have 12:01 < bridge> perfect 12:01 < bridge> need another maintainer? 12:01 < bridge> I was wrong, ``:=`` is for auto type 12:02 < bridge> ``=`` also exists 12:02 < bridge> can I order them in bulk? I'd like 20 more 12:02 < bridge> 🀨 12:02 < bridge> My search result told me that `=` is only used when the object has existed in Go. 12:03 < bridge> Is that true? 12:03 < bridge> idk about Go 12:03 < bridge> really? that doesn't seem like a good idea xd 12:03 < bridge> it might be the same let me see 12:05 < bridge> yeah it's the same as Go except for multi variable assignements 12:05 < bridge> Hm 12:05 < bridge> it's basically just stolen from Go 12:05 < bridge> Oh 12:06 < bridge> I found that last update of ddnet-rs was 2 months ago. 12:06 < bridge> what's happened? 12:06 < bridge> not really, but 2-5 more sounds reasonable to me 12:06 < bridge> jupsti rq 12:07 < bridge> In fact 12:09 < bridge> I didn't realized that Jupstar and Jupeyy are the same person until last month. 12:09 < bridge> It's like half a year ago I thought Assa and AssassinTee were two different people. 12:09 < bridge> :frozen: 12:10 < bridge> xD 12:11 < bridge> my gh account is really old 12:14 < bridge> When you don't set the values of groups's paraX and paraY to 100, your map be like: 12:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447909349170352239/image.png?ex=69395629&is=693804a9&hm=5c941c19aced857de67b8d7c174ea01651103f7a7e4106387a2a27df089a2158& 12:18 < bridge> So 12:19 < bridge> Is the backcompat mastersrv broken? 12:21 < bridge> I think that UDP traffic should be able to go through the firewall in the China, but actually there's no any CHN servers could be registered without sending HTTP request. 12:22 < bridge> :thonk: 12:22 < bridge> I means the DDNet mastersrv 12:22 < bridge> Teeworlds mastersrv is fine. 13:18 < bridge> <0xdeen> Done 14:20 < bridge> Yes, = is assignment := is declaration 14:56 < bridge> Why not use the same one? 14:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447950008501534721/image.png?ex=69397c07&is=69382a87&hm=565306efbeaa068a53614fdff89c04c0ba3aee9b72a73f88e6e7f8b0b235b0a8& 14:56 < bridge> :justatest: 15:12 < bridge> <.rafaelff> It seems one file is using Tile Case text while other is using Sentence case. If changing to solve this warning, all related text should be changed. 15:12 < bridge> <.rafaelff> src/game/client/components/scoreboard.cpp: pScoreboard->GameClient()->m_Tooltips.DoToolTip(&pPopupContext->m_FriendAction, &Action, Client.m_Friend ? Localize("Remove friend") : Localize("Add friend")); 15:12 < bridge> <.rafaelff> src/game/client/components/menus_browser.cpp: if(DoButton_Menu(&s_AddButton, s_NameInput.IsEmpty() && !s_ClanInput.IsEmpty() ? Localize("Add Clan") : Localize("Add Friend"), 0, &Button)) 15:13 < bridge> We have 2 `Add friend` 15:13 < bridge> 15:13 < bridge> `Add friend` and `Add Friend` 15:13 < bridge> 15:13 < bridge> But we can only use one `Add Friend`:justatest: 15:15 < bridge> hmhmhm doesn't the translation file check case insenstive - would be easy to change that in the code 15:15 < bridge> and shouldn#t the same happen with remove friend? 15:16 < bridge> no, because there it's both time `Remove friend` @kebscs 😠 15:17 < bridge> no, because there it's both time `Remove friend` @kebscs no the menu browser has it in upper and lower case 15:18 < bridge> <.rafaelff> You can use both. This is just a warning so you investigate and fix or ignore (press the Dismiss button below the warning text) 15:38 < bridge> ^ 15:50 < bridge> I just thought about it 15:50 < bridge> And then I found that 15:52 < bridge> if that language exists, then it is 100% a strict superset of the C language. 15:53 < bridge> ?? 15:53 < bridge> C is jank lol 15:54 < bridge> Then Linux is based on jank language. 15:54 < bridge> @learath2 15:54 < bridge> Horrible opinion, go to bad opinion jail rn 15:54 < bridge> Do not pass go 15:56 < bridge> It's also incredibly bloated 15:56 < bridge> I tried D language just now. 15:56 < bridge> And I found 15:56 < bridge> not the language, the kernel 15:56 < bridge> The size of D runtime library is over 700 KiB 15:57 < bridge> Even large than the Teeworlds Server execution binary. 15:57 < bridge> :frozen: 15:58 < bridge> I would say that Windows is worse. 15:58 < bridge> just because it's the best option we have doesn't mean it's good 15:58 < bridge> well OBVIOUSLY 16:04 < bridge> so true 16:04 < bridge> locales,,, 16:26 < bridge> no thread local globals, no namespaces, no templates, no operator overloading, bad macros, bad preprocessor, bad header files, no library management, no non-bastard build system, no standard compiler, no variable transmutation without unions, bad type definitions badly fixed by stdint.h and float.h, no struct member swizzling, no default arguments for functions. @learath2 pls fix 16:27 < bridge> no implicit *this* passing to functions 16:27 < bridge> ehhh we *could* go without operator overloading 16:27 < bridge> and "templates" implies something like C++ which :justatest: 16:29 < bridge> wouldn't this imply objects :tee_thinking: 16:30 < bridge> im not sure but what im sure about is that I'm at the point of calling variables single letter names because typing stuff out every single time is annoying asf and looks ugly 16:33 < bridge> not necessarily you could just make the syntax be variable.function to pass in a pointer to the variable as this. of course the function has to be marked as needing a this pointer of a specific type. 16:33 < bridge> eh many of these are fine 16:34 < bridge> nah that's a bad idea; 16:34 < bridge> C is very minimalist and that's alright 16:34 < bridge> but it does have some genuine jank that's not just "doesn't support X" 16:35 < bridge> My issue is with the types mainly 16:35 < bridge> you can't even put preprocessor directives into macros, that would make them so much more powerful, you would not even need new preprocessor stuff like #embed 16:35 < bridge> metaprogramming is fun but not necessary 16:36 < bridge> and number types being determined by the system is bs too, i guess back then they wouldn't know we would stay at 32bit and wanted to make the lang "future proof" 16:36 < bridge> and number types being determined by the system is bs too, i guess back then they wouldn't know we would stay at 64bit and wanted to make the lang "future proof" 16:36 < bridge> yeah 16:36 < bridge> putting the variable after the type: ❌ 16:36 < bridge> putting the variable before the type: ❌ 16:36 < bridge> putting the variable *in the middle of the type* βœ… 16:37 < bridge> C11 should have thread local globals, namespaces are propaganda, preprocessor > templates, operator overloading is satans work, skill-issue, skill-issue, good header files, skill-issue, skill-issue, this is a good thing not a bad thing, transmutation is illegal, just include the headers 4head, just swizzle by hand, define wrapper functions or macros for defaults. Fixed 16:37 < bridge> but as the saying goes: 16:37 < bridge> > There are two kinds of languages. Those that people complain about, and those that nobody uses. 16:39 < bridge> > just swizzle by hand 16:39 < bridge> XD 16:39 < bridge> yea I'd like one (vec3_t){position.x, position.x, position.x} instead of just position.xxx 16:39 < bridge> I’m only messing around, C does need a lot of small cleanups frfr 16:39 < bridge> Just use a python code generator to add swizzling to C 16:40 < bridge> macros for defaults? :lol: 16:40 < bridge> how 16:40 < bridge> I wish they'd unfuck (=nuke) locales 16:40 < bridge> but word on the street is they don't care 16:40 < bridge> this is so horrible XDD 16:41 < bridge> just use an m4 code generator* 16:41 < bridge> just add any lang feature as a python script that parses the file and does the correct changes before compiling 16:41 < bridge> Macros is magic. 16:41 < bridge> fr fr 16:41 < bridge> You can use macro in C to do this: 16:41 < bridge> ``` 16:41 < bridge> 16:41 < bridge> 16:41 < bridge> class(Vec2) 16:41 < bridge> { 16:41 < bridge> float x, y; 16:41 < bridge> }; 16:41 < bridge> 16:41 < bridge> void ClassMethod(Vec2, print) 16:41 < bridge> { 16:41 < bridge> printf("Pos: %f, %f\n", this->x, this->y); 16:41 < bridge> } 16:41 < bridge> 16:41 < bridge> void ClassMethod(Vec2, print2params, int id, int not_id) 16:41 < bridge> { 16:42 < bridge> printf("Pos: %f, %f\n", this->x, this->y); 16:42 < bridge> printf("unused: %d, %d\n", id, not_id); 16:42 < bridge> } 16:42 < bridge> 16:42 < bridge> ClassInit(Vec2) 16:42 < bridge> { 16:42 < bridge> this->x = 0.0f; 16:42 < bridge> this->y = 0.0f; 16:42 < bridge> } 16:42 < bridge> EndClassInit() 16:42 < bridge> 16:42 < bridge> ClassInit(Vec2, another) 16:42 < bridge> { 16:42 < bridge> this->x = 10.0f; 16:42 < bridge> this->y = 10.0f; 16:42 < bridge> } 16:42 < bridge> why 16:42 < bridge> well 16:42 < bridge> that's pretty useless 16:42 < bridge> Yeah, useless 16:42 < bridge> ```c 16:42 < bridge> void foo(int target, char *msg){} 16:42 < bridge> 16:42 < bridge> #define FOO(x) foo(x, β€œdefault msg”) 16:42 < bridge> ``` 16:42 < bridge> 16:42 < bridge> ezclap 16:42 < bridge> But magical. 16:43 < bridge> okay remember to call FOO every time you want to use that exact default XD 16:43 < bridge> Oop glazers when you implement oop with cool C macros :Angry: 16:43 < bridge> you can't overload macros sadyl 16:43 < bridge> ah yes add macro overloading, function overloading is stupid and confusing imo but macros overloading is glorious 16:44 < bridge> I have seen a CHN C developers implement some thing like `std::format` and `std::print` in C++ 16:44 < bridge> Honestly, I kinda like C++. Just because a feature exists doesn’t mean you have to use it 16:44 < bridge> Just pick a nice subset of C++ and use that and you’ll be happy 16:45 < bridge> Yeah 16:45 < bridge> yea, at the cost of people ridiculing me for not writing "modern" c++ 16:45 < bridge> It's nice to have a subset of C++ 16:45 < bridge> somebody is going to open a pr to "fix" all my issues. i just wanna write c with some extras man 16:45 < bridge> Why do you care what smoothbrains who write curiously recurring templates think? 16:46 < bridge> I’m also quite fond of some modern C++ stuff. I think concepts make templates so much nicer to use 16:47 < bridge> ? 16:47 < bridge> @learath2 did you know you can do swizzling in c++? :troll: 16:48 < bridge> the another biggest issue of C++ is its ABI compat. 16:48 < bridge> which is worse than C. 16:48 < bridge> https://github.com/Teero888/cppswizzle 16:48 < bridge> Template dark magic? 16:48 < bridge> yess sir 16:49 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447978436894261298/image.png?ex=69399681&is=69384501&hm=9882b3c825497892bea5803c70ed4ee182d44f684c4abd03b7934d9210393263& 16:49 < bridge> :thonk: 16:49 < bridge> This is one of the ugliest things I have ever seen, you have achieved C++ greatness fr 16:49 < bridge> it comes as a slight performance overhead xd 16:50 < bridge> but it's better than nothing 16:50 < bridge> It costs your keyboard life to write them. 16:50 < bridge> if it was actually a language feature it would have 0 overhead ig 16:50 < bridge> thxxxx 16:50 < bridge> Unlikely unless your vectors have references to their contents, which would be much worse for performance 16:52 < bridge> huh? couldn't the preprocessor just expand them to this? https://discord.com/channels/252358080522747904/293493549758939136/1447975890398216459 16:52 < bridge> I guess that 16:52 < bridge> sizeof(vec3) would be larger than 64B 16:52 < bridge> Ah your solution has more overhead than that? 16:52 < bridge> yes xd 16:52 < bridge> I didn’t read the entire thing, I’m on a phone 16:53 < bridge> memory wise it's horrible 16:53 < bridge> yes xddd 16:53 < bridge> Terrible magic 16:54 < bridge> i know it's terrible, don't ever use that 16:54 < bridge> Actually, I wonder if you can do better 16:54 < bridge> Yeah 16:54 < bridge> Macros wouldn't make your binary larger. 16:54 < bridge> Something something `std::tuple`, `std::get` , `std::tie` 16:55 < bridge> std::tuple is worse 16:55 < bridge> hmm the goal is the glsl swizzle syntax 16:55 < bridge> std::tuple is the worse than struct. 16:56 < bridge> std::tuple? Are we in std::python ? 16:56 < bridge> waiting for the first PR with std::any 16:56 < bridge> Yeah 16:56 < bridge> We are coding Python++ 16:56 < bridge> Which you can do import std; 16:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1447980364252581909/RDT_20251124_1029474253021327519762259.jpg?ex=6939984d&is=693846cd&hm=c078c109be2d5565ea3adfae2ec9bd7005f8743a5f546df5e8e5afc02ac118d8& 16:57 < bridge> why is it so huge 16:59 < bridge> can't have reaction images on discord 17:00 < bridge> May we would got a Python++ in the future. 17:00 < bridge> Oh no 17:00 < bridge> i need something like rust but more like c and no safety 17:01 < bridge> PyvaGowiftby#++ 17:02 < bridge> I would say that it would be the best language in the world 17:03 < bridge> Rust programmer can code with Rust grammar, C programmer can code C-style, and Python programmer can code python. 17:03 < bridge> :frozen: 17:04 < bridge> What would be the best language in the world? It'd be the most performant, syntax independend, interfacing with everything 17:04 < bridge> yeah gl xD 17:04 < bridge> Machine language is the best 17:04 < bridge> if you are computer 17:04 < bridge> Assembly has 2/3 :justatest: 17:05 < bridge> Just put everything in a massive unsafe block :BigBrain: 17:05 < bridge> learath can you change the slowmode in showroom to 5min? xd 17:06 < bridge> Y? Is 10 too long? 17:06 < bridge> i also don't like how rust does heap xd 17:06 < bridge> yes 17:06 < bridge> i need my malloc in rust 17:06 < bridge> You can have it 17:06 < bridge> I'd need rust, but with C++ style syntax so it's not so much pain 17:07 < bridge> Create a Rust bindings for C standard library 17:07 < bridge> and then you can have malloc 17:07 < bridge> I agree. 17:08 < bridge> Sure, why not. If people start chatting in there with a 5 min delay I’m blaming you 17:08 < bridge> also make mods not immune to it XD 17:08 < bridge> they have to suffer like we all 17:08 < bridge> Can’t yet, those permissions won’t be split until some time in 2026 17:09 < bridge> I would got headache when I have a view of Rust code. πŸ™ 17:09 < bridge> im the one who suggested slowmode in the first place!!! 17:09 < bridge> You should take a look at `magic_enum` in C++ if you truly want a headache 17:10 < bridge> I always feel like I might be overdoing my pursuit of being lightweight. 17:10 < bridge> Took me an hour to figure out the secret sauce 17:12 < bridge> zig 17:12 < bridge> zig truly is a candidate for greatness, but having to pass allocators everywhere makes it extremely ugly 17:13 < bridge> If I don't care about binary size, the D language suits my needs very well. 17:13 < bridge> @milkeeycat pls read and implement all those features in your lang 17:13 < bridge> But I'm really care about binary size. 17:14 < bridge> MilkeeyCat is working on a new language? 17:14 < bridge> Is D static linking only? does it have no LTO? 17:15 < bridge> It has LTO. 17:15 < bridge> https://github.com/MilkeeyCat/meraki 17:16 < bridge> wtf, `as` is a keyword? 17:17 < bridge> ? that's just rust 17:17 < bridge> okay 17:17 < bridge> I had never known that before πŸ™ 17:18 < bridge> :frozen: 17:19 < bridge> Oh 17:19 < bridge> Rustlike casts 17:20 < bridge> https://tenor.com/view/anime-loli-gif-20946617 17:20 < bridge> giant gif xD 17:26 < bridge> I think it's great if there's a superset of C (also subset of C++) based on Cfront but compiles to the LLVM IR or machine language. 17:26 < bridge> I think it's great if there's a superset of C (also subset of C++) based on something like Cfront but compiles to the LLVM IR or machine language. 19:24 < bridge> deen why you gotta give me work to do :( 19:24 < bridge> Now I have to add a new function or something in my ddnet package before I forget 21:35 < ws-client> **** I wonder if I can `git revert` and instead of getting conflicts also revert the commits i would conflitct with 21:35 < ws-client> **** if i want to revert a feature i dont want to conflict with its bug fixes but revert the bug fixes too 21:35 < ws-client> **** that has to be possible 21:39 < bridge> @chillerdragon use gotos or early returns to jump around the feature 21:45 < bridge> We should change `Add Friend` and `Add Clan` to sentence case 21:51 < ws-client> **** @sonic (Solly) xd 21:51 < bridge> thats the only way to avoid conflicts 21:51 < bridge> ! 21:51 < ws-client> **** by not using git? 21:51 < ws-client> **** gg 21:51 < ws-client> **** solly u gotta trust git is powerful 21:51 < ws-client> **** you can add LLM into your merge driver and auto solve all conflicts 21:52 < ws-client> **** git has so many hidden features 21:52 < ws-client> **** sometimes you just have to have some faith 21:52 < ws-client> **** git might be the single most bloated project ever 21:52 < bridge> reverting bug fixes is not very reliable, youll get conflicts upon conflicts 21:52 < ws-client> **** yes 21:52 < ws-client> **** drop them all 21:52 < ws-client> **** i understand the cascading risk 21:53 < bridge> it will be hard to narrow down which commits actually effect the feature 21:53 < ws-client> **** i can undo if the list of reverted commits looked too long 21:53 < ws-client> **** its not about the feature 21:53 < ws-client> **** its just about conflicts 21:53 < ws-client> **** so if git encounters a conflict during revert instead of stopping with a conflict it reverts the commit it conflicted with too 21:56 < ws-client> **** @learath2 heh what are the chances now that its a glibc bug? https://github.com/ddnet-insta/ddnet-insta/issues/267#issuecomment-3634230002 21:56 < ws-client> **** byfox has non memory leak with musl 21:59 < ws-client> **** every day i get jump scared with alter email for `TimeoutError: timeout waiting for log lines with client1 and client2 finishes` 21:59 < ws-client> **** alert* 22:39 < bridge> hey i'm listed there! 23:17 < bridge> you overflowed at the bottom 23:40 < bridge> daily ddnet fact: the hammer animation takes longer than its actual reload time so when you spam hammer it gets you this butchered animation. 23:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1448082002724130906/2025-12-09_23-39-41.mp4?ex=6939f6f5&is=6938a575&hm=5bb658fa080f3508481fc6b2f02a00a19bb465a130372cb6d6e1740ea4058b2f&