01:07 < bridge> . 01:48 < bridge> mods crush his head to a pulp 02:29 < bridge> sdsds I strongly disagree that ddnet does not moderate enough. It’s the opposite actually. It’s full of abusing admins that enjoy muting and banning and do it whenever they want. 02:29 < bridge> Just proofs my point 02:42 < bridge> ye agree 02:42 < bridge> at least in places where the game is popular 02:42 < bridge> usa mods are mostly chill 02:48 <+ws-client> @heinrich5991 omagawd your hint was super helpful once again <:poggers2:1008007455936094328> 02:49 <+ws-client> turns out i fat fingered -rdynamic only onto the shared object (which is trol because they expose symbols by default) and not the server in the working example 02:49 <+ws-client> so cmakelist and the verbose make command showed -rdynamic but it was NOT applied on the SERVER 02:51 <+ws-client> sadly now i am not so sure anymore if i can make it work because that simplified example managed to access ccollision without linking against the entire server code which is a bit more tricky in a real teeworlds codebase because of how interconnected everything is 04:14 <+ws-client> i guess the function being local on the server side is the problem. `nm` reports `T` in the working version and `t` in the non hot reloading version (this time i am not using -rdynamic so not sure how it became local -.-) 04:14 <+ws-client> https://zillyhuhn.com/cs/.1716603182.png 04:14 <+ws-client> https://zillyhuhn.com/cs/.1716603210.png 04:24 <+ws-client> wat did ddnet code base do to make all the big Ts go away? 04:24 <+ws-client> https://zillyhuhn.com/cs/.1716603745.png 04:24 <+ws-client> https://zillyhuhn.com/cs/.1716603827.png 04:31 <+ws-client> ok nvm not sure if the t/T is a problem. Since I manage to hot reload the lite version of the shared object in a ddnet server that has the symbol locally 04:31 <+ws-client> https://zillyhuhn.com/cs/.1716604252.png 06:50 < bridge> morning 08:26 < bridge> morning 08:33 < bridge> good morning 08:34 < bridge> lmao chillerdragon: imagine wasting few hours of your life for `T`s and `t`s 08:34 < bridge> genetic engineering 08:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243814474062889002/image.png?ex=6652d7ff&is=6651867f&hm=bb52065e34a947360ef7170f2d0e324e127df12baf7c51bff4e4c138bd301f93& 08:34 < bridge> for the most efficient "xp" plant 08:35 < bridge> is that this mc mod where u can grow the best plant by analysing it's properties and then only put the good ones together 08:35 < bridge> and remove the rest 08:35 < bridge> i think i also played that once.. but then it got too overpowered xD 08:35 < bridge> u gotta grow dragon eggs and win or smth 08:35 < bridge> ohh 08:35 < bridge> i should play mc 08:36 < bridge> mystical agriculture 08:36 < bridge> u go sleep to get well 08:36 < bridge> mhh i thought the name was differently 08:36 < bridge> so maybe it's a different mod xD 08:36 < bridge> or agricraft 08:36 < bridge> im not sure 08:36 < bridge> there may be a few like this 08:36 < bridge> yeah maybe 08:36 < bridge> i think it's agricraft 08:37 < bridge> i mean ur screenshot says so xd 08:37 < bridge> yeah 08:38 < bridge> the plants themselves are from whatever mod 08:38 < bridge> but the genetic engineering is agricraft 08:39 < bridge> cant they even grow diamonds and stuff xD 08:39 < bridge> http://2143.christmas/f/K2MH.png 08:40 < bridge> im invisible in the game 08:40 < bridge> like i even collect xp orbs 08:41 < bridge> as if their clients don't even know that i exist 08:41 < bridge> like their client even shows them collecting xp orbs that i collected 08:41 < bridge> morning #developer chat enjoyers and others 08:42 < bridge> morning 08:42 < bridge> i actually sleep in 18 minutes 08:42 < bridge> morning #developer no lifers and others 08:42 < bridge> xd 08:42 < bridge> :feelsbadman: 08:42 < bridge> we stick together 08:42 < bridge> damn i just woke up XD 08:42 < bridge> the timezone diff hits hard 08:43 < bridge> indeed 08:44 < bridge> i slept and im way better now 08:44 < bridge> so proud of you 08:44 < bridge> good 08:44 < bridge> @mpft u playing a modpack? 08:44 < bridge> which 08:44 < bridge> i need modern good modpacks 08:44 < bridge> eternal 08:44 < bridge> with defined progression 08:44 < bridge> not modern 08:44 < bridge> 3 fps 08:44 < bridge> i like following 08:44 < bridge> i blame amd not releasing zen5 08:44 < bridge> if i have 64gb ram 08:44 < bridge> can i assign mc 32 08:44 < bridge> sure u can 08:44 < bridge> yes 08:44 < bridge> u can also assign it 64gb 08:44 < bridge> im at 12 never had to go higher 08:45 < bridge> and this is like the most expensive modpack 08:45 < bridge> but u get 3 fps 08:45 < bridge> whhy 08:45 < bridge> not gc 08:45 < bridge> bad coding 08:45 < bridge> novice java devs 08:45 < bridge> lmao 08:45 < bridge> more ram doesn't necessarily mean more fps 08:46 < bridge> it just means more time until the next (more monumental) lag spike, assuming you're using g1 which is the default garbage collector 08:48 < bridge> modern packs use modern java 08:48 < bridge> better gc 08:48 < bridge> yes g1 still default 😃 08:48 < bridge> some jvm can only use g1 08:48 < bridge> i doubt it's a gc issue anyway 08:48 < bridge> ZGC 08:48 < bridge> is meant for realtime 08:48 < bridge> like mc 08:48 < bridge> it's simply that all mods more and more bloat code into the mod 08:49 < bridge> add 08:49 < bridge> Is this Minetest? 08:49 < bridge> :pepeW: 08:50 < bridge> http://2143.christmas/f/AODx.png 08:50 < bridge> does this look like minetest 08:50 < bridge> Yes, it does! 08:50 < bridge> :KEKW: 08:50 < bridge> looks like red hat 08:50 < bridge> -XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive 08:51 < bridge> yea 08:51 < bridge> zgc good for server 08:51 < bridge> not client tho 08:51 < bridge> u want shenandoah 08:51 < bridge> lets all drop ddnet and code our own minecraft mod 08:51 < bridge> i'd code a ddnet minecraft mod 08:51 < bridge> minetee is a thing tho 08:51 < bridge> but the wrong direction xD 08:51 < bridge> mc mod in ddnet 08:51 < bridge> oh lord 08:51 < bridge> yes, what's up? 08:51 < bridge> ? i was talking to @gumbatw 08:52 < bridge> he is my slave 08:52 < bridge> fair enough 08:53 < bridge> tf 08:53 < bridge> submit 08:53 < bridge> no 08:54 < bridge> good for client with ZGenerational 08:54 < bridge> only in java 21+ 08:54 < bridge> sweet 08:55 < bridge> iirc new fabric api only supports 20 tho 08:55 < bridge> just allocate 2TB Ram and never deallocate 08:55 < bridge> https://github.com/Mukul1127/Minecraft-Performance-Flags-Benchmarks 08:55 < bridge> true 08:55 < bridge> yea 08:55 < bridge> clearly u didnt check the stars 🤓 08:56 < bridge> writing a c program that leaks 2TB of memory any% speedrun 08:56 < bridge> i wonder 08:58 <+ws-client> lmao yea jopsti im stuck on hot reloading how i want it to for way too long now :/ 08:58 <+ws-client> and im out of ideas again 08:58 < bridge> sadly i never truely understand what u r stuck on xD 08:58 <+ws-client> xd 08:59 <+ws-client> it just won't run the new code i compiled and keeps running the old code 08:59 <+ws-client> unless i do compromises 08:59 < bridge> but you are sure u unloaded the lib completely? 08:59 <+ws-client> dlclose() did not fail 08:59 <+ws-client> from what i understand its less of a unloading problem actually 09:00 < bridge> have u tried simply renaming ur lib every time? 09:00 <+ws-client> the function i want to hot reload from an external so file is also statically linked into the server executable it self 09:00 <+ws-client> and that seems to take priority 09:00 <+ws-client> it doesn't even work on first load i guess 09:01 <+ws-client> and renaming seems like a compromise 09:01 <+ws-client> i mean i made it work by renaming the function :D 09:01 <+ws-client> but it wasnt as nice as i wanted it to be 09:01 < bridge> so u kinda have a symbol collision? 09:01 <+ws-client> yes 09:01 <+ws-client> but it works if i make the shared object not access ccollision from the server 09:02 < bridge> ```cpp 09:02 < bridge> #include 09:02 < bridge> #include 09:02 < bridge> 09:02 < bridge> int main() { 09:02 <+ws-client> which i thought is caused by -rdynamic causing troubles with symbol collision 09:02 < bridge> for(int i = 0; ; i++) { 09:02 < bridge> printf("iteration %d\n", i); 09:02 < bridge> malloc(1000 * 1000); 09:02 < bridge> _sleep(10); 09:02 < bridge> } 09:02 < bridge> } 09:02 < bridge> ``` 09:02 < bridge> just put the static linked function into a module? 09:02 <+ws-client> but now i somehow managed to get it to work without -rdynamic and it still wont work 09:02 <+ws-client> whats a module? 09:02 < bridge> a cpp namespace 09:02 < bridge> c++20 feature 09:03 < bridge> yeah sry i meant namespace 09:03 <+ws-client> yea then i would only need 1 #if #else that could work 09:03 <+ws-client> so toggle namespace name instead of function name 09:04 <+ws-client> can i `extern "C"` namespaces? xd 09:04 < bridge> u can also put it into a struct 09:04 <+ws-client> i guess i can also make the entry point hot manually 09:04 < bridge> a struct is kinda a namespace too 09:04 <+ws-client> structs have no methods 09:04 <+ws-client> in C 09:04 < bridge> oh 09:04 < bridge> namespace doesn't exist in C 09:04 < bridge> wat 09:05 < bridge> but why u even want a extern c for a static linked function? 09:05 <+ws-client> yea but i like the idea jopsti 09:05 <+ws-client> well because the same function that is statically linked is also dynamically linked 09:05 <+ws-client> so it feels like a normal code base where everything is like always 09:06 <+ws-client> but if you recompile it hot reloads the parts it should hot reload 09:06 < bridge> yes that's why namespaces 09:06 < bridge> then u can do `use namspace chiller` 09:06 < bridge> then u can do `use namespace chiller` 09:06 < bridge> and it looks like before 09:06 <+ws-client> yes i will give it a try 09:06 <+ws-client> sounds good 09:06 < bridge> totally not hacky instead of redesigning your app xDDD 09:06 < bridge> my userspace memory leak program is making all my other apps close 09:06 < bridge> runtime errors 09:06 < bridge> lmfao 09:06 <+ws-client> it is a bit hacky im sure there is a non hacky way too 09:07 < bridge> ez 09:07 < bridge> black screen 09:07 < bridge> nice 09:07 <+ws-client> but i take the first way that works flawlessly and has good developer expirience 09:07 < bridge> simply don't use/overload global functions in first place 09:07 < bridge> flawless resource allocator 09:07 <+ws-client> but then it would be annoying to maintain jopsti 09:07 <+ws-client> i want it to just work 09:08 < bridge> what do you think i did for my mod system? 09:08 < bridge> it's a design issue not a maintain issue xd 09:08 <+ws-client> what im building is not really a mod system 09:08 <+ws-client> just a hot reload for one specific thing xd 09:09 <+ws-client> if its not compiled in the server statically i depend on external objects at runtime 09:09 <+ws-client> i don't like tha 09:09 < bridge> i dont understand tho why the name of the mod function cannot be `mod_function_name` 09:09 <+ws-client> it can 09:09 <+ws-client> but then it will be the same on the server side too 09:09 <+ws-client> unless i #ifdef it 09:10 <+ws-client> for EVERY function i write 09:10 <+ws-client> or not depend on ccollision somehow xd 09:10 < bridge> i no get ur problem dude xD 09:10 <+ws-client> or not have a real tw server somehow xd 09:10 < bridge> time to rewrite my nvim config for the 2048 time this month! 09:10 < bridge> do you overload functions of ccollision? 09:10 <+ws-client> nono 09:11 <+ws-client> i just pass it into my shared object 09:11 < bridge> ok u pass collision object into the mod 09:11 < bridge> the function that takes this object is called `my_mod_tick` 09:11 <+ws-client> so i have ./DDNet-Server who calls ./libtwbl_bottick.so in CCharacter::OnTick to ask the shared object for player inputs 09:12 <+ws-client> ye `Twbl_SampleTick(GameServer()->Collision())` 09:12 <+ws-client> so it can call to GetTile() and see the map 09:12 < bridge> and now where is the name collision? 09:12 <+ws-client> but to use the pointer correctly it needs to also link against collision.cpp 09:12 <+ws-client> the name collision is that sample_bot.cpp is also directly in the server code base 09:13 < bridge> ok it links against collision.cpp & .h 09:13 <+ws-client> so if i `rm ./libtwbl_bottick.so` it should still work 09:13 < bridge> yes, they link against the same static lib, which contains collision.cpp and .h 09:13 < bridge> continue 09:13 < bridge> where is ur problem xd 09:14 < bridge> sample_bot, why do u even need it? 09:14 <+ws-client> its a test 09:14 < bridge> simply never call the mod code if no .so was found 09:14 <+ws-client> nono 09:14 <+ws-client> the .so is only for rare prod updates during runtime and mostly for developer expirience 09:15 <+ws-client> i want it to not rely on external objects or dlopen() to work 09:15 < bridge> yes understandable, ok 09:15 < bridge> but to be clear. u have exactly one entry point? 09:15 < bridge> 09:15 < bridge> `mod_tick` 09:15 <+ws-client> if you are really interested i can record you some clips to explain it x 09:15 <+ws-client> yep one entry point 09:16 <+ws-client> but i would have to rename all methods it calls for them to be hot 09:16 <+ws-client> afk for a sec 09:18 < bridge> ok let me ask differently 09:19 < bridge> whereever the function name collision is: 09:19 < bridge> is that the function u want to modify for hot reload, and is it: 1. not `mod_tick` and 2. already exists on the executable? 09:21 <+ws-client> ye that func i wanna edit and its one entry point 09:21 <+ws-client> but it calls other functions that i also want to be hot 09:21 <+ws-client> gimme some minutes ima try to craft a video blog 09:21 < bridge> should i be honest with you? 09:22 < bridge> 1. i strongly recommend against what u try. 2. IF u still want to try it like that: cast the original ccollision object to a ccollision object of your mod and never reuse the ccollision stuff from the binary.. so basically have a second ccollision class that is bianry compatible 09:23 < bridge> :justatest: 09:24 < bridge> 09:24 <+ws-client> then i need to maintain a matching definition of ccollision if i fail to keep it binary compatible i get nasty to debug errors 09:24 <+ws-client> and its not portable 09:24 <+ws-client> the idea of this bot lib is that i develop it once and then can yoink it into every mod 09:24 < bridge> yes but wtf do u expect lmao 09:25 <+ws-client> i thinkt your suggestion with namespaces might work xd 09:25 < bridge> then don't ever pass the ccollision object in first place 09:25 < bridge> 09:25 < bridge> that alone is already shady af 09:25 < bridge> poor chiller 09:25 <+ws-client> but how does the bot see the map then? 09:25 < bridge> and then u want to be binary compatible 09:25 < bridge> give the mod some functions `checktile` explicitly 09:25 < bridge> and not the ccolision object 09:25 <+ws-client> but then it also needs the map data 09:26 <+ws-client> do you want me to mem copy the entire map on every tick? 09:26 < bridge> well that is obviously also too hacky xD 09:26 <+ws-client> mostly expensive 09:26 < bridge> but anyway thats a different problem 09:26 <+ws-client> but ye also hacky 09:26 <+ws-client> i cant pass checktile without map data 09:27 <+ws-client> i mean i made it all work together 09:27 <+ws-client> but that was a server that no clients can connect to xd 09:27 < bridge> if u ask me.. whatever u will try with your version will be super annoying to maintain 09:27 <+ws-client> thats also a somewhat crucial feature 09:27 <+ws-client> will it? 09:27 < bridge> yes 09:27 <+ws-client> the idea is that it just works 09:27 <+ws-client> there should be zero maintenance cost 09:28 < bridge> u can pass a "new" checktile function 09:28 <+ws-client> u just pass in a pointer to collision it picks up the definition from your code and just works 09:28 < bridge> checktile_mod 09:28 <+ws-client> ok sure 09:28 < bridge> that is used on host and mod side 09:28 <+ws-client> how does its implementation look like? 09:28 <+ws-client> where does it get the map data from? 09:28 < bridge> well u need to create functions for those too 09:28 < bridge> get_width 09:28 < bridge> get_height 09:28 <+ws-client> get tile 09:28 < bridge> access_tile 09:29 <+ws-client> how does access tile look like? 09:29 < bridge> get_bot 09:29 < bridge> it gets an index and returns smth 09:29 <+ws-client> it would also depend on ccollision? no? 09:29 <+ws-client> returns from where 09:29 <+ws-client> where is the map data 09:29 < bridge> get_ram 09:29 < bridge> the map data stays on the host 09:29 <+ws-client> how does the mod access the host map data? 09:30 < bridge> depending on what u need u'll have getters for it 09:30 <+ws-client> on the host? 09:30 <+ws-client> how do i pass those getters into the mod? 09:30 < bridge> the host makes it visible for the guest 09:30 <+ws-client> how is that different from ccollision? 09:30 <+ws-client> thats exactly that 09:31 <+ws-client> its getters for the map data 09:31 < bridge> it sounded like previously u wanted a function to be called that exist on the host and guest, but on the guest it is modified 09:32 <+ws-client> ye but the guest does not modify collision 09:32 <+ws-client> only bottick 09:32 <+ws-client> which calls collision get tile 09:32 < bridge> ok but why do you need to rely on the host's functions here then anywhere? 09:33 <+ws-client> because only the host has the map data 09:33 <+ws-client> the shared object did not load the map file 09:33 < bridge> no 09:33 < bridge> i meant it like that: 09:33 < bridge> `mod_tick` calls `mod_func` 09:33 < bridge> ``` 09:33 < bridge> [2024-05-25T09:33:28+02:00 ERROR util] crates\settings\src\settings_store.rs:619: invalid type: string "true", expected a boolean 09:33 < bridge> ``` 09:33 < bridge> :monkaStop: 09:33 < bridge> and `mod_func` is modified, tright? 09:33 <+ws-client> yes 09:34 <+ws-client> but mod_func wont be hot 09:34 < bridge> and `mod_func` is used on the host and guest? 09:34 <+ws-client> yes 09:34 < bridge> so what u want is, to not export that symbol? 09:34 <+ws-client> i dont think so 09:34 < bridge> so the guest only knows about `mod_func` of its own 09:34 <+ws-client> nono 09:34 < bridge> and host still uses its own version 09:34 <+ws-client> server also knows it 09:35 < bridge> do u want to binary patch the host or what 09:35 <+ws-client> no 09:35 < bridge> it makes no sense what u want xD 09:35 <+ws-client> omg let me record the video xd 09:35 < bridge> a image is worth a thousand codes 09:35 < bridge> show a video of a debugger where it jumps into the host instead of mod code 09:36 < bridge> i hate only being able to eat liquid-like food 09:36 < bridge> then u can answer your question yourself 09:36 < bridge> i want meat 09:36 < bridge> bcs exactly that symbol is not allowed to be exported 09:39 < bridge> chiller just boot discord and come in voice 09:41 <+ws-client> bruv discord 09:41 <+ws-client> oke sure 09:41 <+ws-client> only cuz im desperate 09:41 < bridge> sry that ur shitty other chat suggestion only worked with 5 fps :lol: 09:42 < bridge> chillerdragon: when add voice channels to your chat thingy 09:42 <+ws-client> <:justatest:572499997178986510> 09:42 <+ws-client> that seems complicated 09:42 <+ws-client> i doubt id get anything useful to work 09:42 < bridge> would be beyond epyc.. if it works with 30fps+ 09:43 <+ws-client> i rly liked the "just works" matrix urls 09:43 <+ws-client> which one was it again jopsti? 09:44 < bridge> wat 09:44 < bridge> u want discord invite link? 09:44 < bridge> https://discord.gg/73qNkDUB 09:44 <+ws-client> the matrix one 09:44 <+ws-client> tha matrix video room things 09:44 <+ws-client> without account 09:44 < bridge> ah 09:44 < bridge> chat.element.io 09:44 < bridge> or call.element.io 09:45 <+ws-client> i think discord banned me again 09:45 <+ws-client> classic 09:45 <+ws-client> i cant join ddnet srv 09:45 < bridge> https://call.element.io/room/#/chillergo?roomId=!vminybvEDwkiyHfRZr:call.ems.host&password=zua4_VBal2OZjLGhocZFVA 09:45 < bridge> come no excuses 09:45 < bridge> i dont need more than 5 fps 09:46 <+ws-client> bit sad that it doesnt work on firefox ._. 09:46 < bridge> tja 09:46 <+ws-client> im in da call 09:49 < bridge> hehe im listening and they dont even realise 09:53 < bridge> https://stackoverflow.com/questions/52719364/how-to-use-the-attribute-visibilitydefault 09:57 < bridge> pornpornporn! 10:02 < bridge> class __attribute__((visibility("default"))) Foo {...}; 10:02 < bridge> class __attribute__((visibility("hidden"))) Foo {...}; 10:08 < bridge> keine gegner 10:12 < bridge> i had to reboot 10:12 < bridge> my keyboard was non-functional after i let the memory leak do its thing 10:12 < bridge> WTF windows 10:12 < bridge> i thought you were smarter 10:12 < bridge> listening to chiller and jupsti hyping themself up is better than any podcast there is 10:13 < bridge> :kek: 10:13 < bridge> assuming the userspace component of the shell crashed and had to restart 10:13 < bridge> or it just relogged me 10:13 < bridge> but idk since i couldn't get back in from the login screen 10:13 < bridge> lmfao 10:13 < bridge> but it's bedtime now 10:14 < bridge> bye night good 11:07 <+ws-client> marry me jopstibobsti 11:07 < bridge> is your last name chiller or dragon 11:07 < bridge> just askin' 11:07 <+ws-client> dragon 11:07 <+ws-client> rawr 11:07 < bridge> JupDragon 11:07 < bridge> would be epyc 11:07 < bridge> DragonStar 11:08 <+ws-client> https://github.com/orgs/JupDragon 11:08 < bridge> lmao almost forgot 11:08 < bridge> epyc 11:09 < bridge> people, I'm Russian, if anything, and I had a problem with the text in the game 11:09 < bridge> text doesn't show to me 11:09 < bridge> https://wiki.ddnet.org/wiki/GFX_Troubleshooting#Some_text_is_invisible_with_the_Vulkan_backend 11:09 <+ws-client> priviet 11:09 < bridge> yeah 11:09 < bridge> read 11:09 < bridge> yeah 11:09 < bridge> priviet 11:10 < bridge> thanks 11:12 <+ws-client> @heinrich5991 in case you are curious jopsti fixed it all <:poggers2:1008007455936094328> by slapping `__attribute__((visibility("hidden")))` on the shared code 11:16 < bridge> ```[cmake] CMake Warning at CMakeLists.txt:161 (message): 11:16 < bridge> [cmake] IPO is not supported: Change Dir:``` any comments? 11:16 < bridge> (linux) 11:29 < bridge> https://github.com/sunfishcode/c-ward 11:57 < bridge> what compiler are you using? 11:57 < bridge> 11:57 < bridge> turn off IPO will surpress the warning, but will also lower performance to a certain degree IIRC 11:57 < bridge> 11:57 < bridge> `cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF` 11:57 < bridge> what compiler are you using? 11:57 < bridge> 11:57 < bridge> turning off IPO will surpress the warning, but will also lower performance to a certain degree IIRC 11:57 < bridge> 11:57 < bridge> `cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF` 11:57 < bridge> clang 11:58 < bridge> I try to turn it *on* ^^ 11:58 < bridge> clang supports IPO.. what version are you using? 11:59 < bridge> ```ich  ~  clang++ --version 11:59 < bridge> clang version 17.0.6 11:59 < bridge> Target: x86_64-pc-linux-gnu 11:59 < bridge> Thread model: posix 11:59 < bridge> InstalledDir: /usr/bin``` 12:00 < bridge> the CheckIPOWhatEver module fails 12:00 < bridge> cant reproduce - im using clang 18.1.5 :/ 12:01 < bridge> f3 12:03 < bridge> why the hell does it use `imul` to multiply unsigned integers 12:03 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243867022224396308/image.png?ex=665308f0&is=6651b770&hm=b52e0e5483e69247eddce5e89dd08fd5180f14ace9cb2b1882dfa1047964a041& 12:05 < bridge> https://stackoverflow.com/questions/42587607/why-is-imul-used-for-multiplying-unsigned-numbers 12:05 < bridge> np 12:07 < bridge> i read that 5 times and I still dont get xd 12:07 < bridge> do you really _want_ to understand it? xd 12:07 < bridge> it's ok to not know every detail 12:07 < bridge> ah u writing a compiler? 12:07 < bridge> there was smth 12:11 < bridge> i was streaming it 😏 12:12 < bridge> i want to know if i use just imul will it be fucked up in some scenarios 12:15 < bridge> tru got an email 😄 12:22 < bridge> Ok, maybe addition and subtraction is enough :justatest: 12:55 < bridge> can' reproduce either. e.g. ` clang++ -std=c++20 -flto=thin main.cpp sqlite.cpp -lsqlite3 -o bla` works ^^ (random example) 12:58 < bridge> I'm extremely surprised this insanity works at all. Why are statically linked symbols of your binary ever getting overriden by just a dlopen? 12:58 < bridge> is this some bizarre secret ELF feature that I've missed out on somehow? 13:02 < bridge> How deeply do you need to understand it? Do you doubt it's correctness? Do you need to know why it's faster? Or do you want to know why register flexibility is good for performance? 13:05 < bridge> i guess ill just use `imul` and if it eventually breaks it will be the time to learn how that stuff actually works 13:06 < bridge> If you only need the lower half of the result, it won't ever break 13:07 < bridge> Here an imul is used because you are assigning the result into a `uint64_t` discarding the higher 64 bits 13:10 < bridge> how to not discard the higher 64 bits? 13:22 < bridge> e.g. 13:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243886824888209468/image.png?ex=66531b61&is=6651c9e1&hm=c46ef2307aa545d39d5530c975b8fce8e61d4b502420dbeeb6636f073e34bbcc& 13:22 < bridge> See how gcc was forced to use mul there? 13:25 < bridge> Because imul just wouldn't be correct anymore, since we are using the top 64 bits of the result too (which is inside rdx) 13:33 < bridge> hm... 13:33 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243889392347648040/image.png?ex=66531dc5&is=6651cc45&hm=4a26ca69d97a4638d790095149fb64a364f8d3b3bb81b94d7c08ac570b0c6edb& 13:33 < bridge> Use O1, this is an implementation detail, since imul is so much more efficient than mul, compilers will usually emit imuls which get optimized down to mul 13:34 < bridge> (There is a way to use multiple imuls to do an unsigned full length multiply properly) 13:52 < bridge> (though the generated assembly is very insane now that I look at it 😄 so I can understand why it might create some confusion as to why that works) 13:56 < bridge> it's not using the trick I thought it was at all, that is an absurd way to calculate that 14:33 < bridge> @jupeyy_keks chillerdragon 14:33 < bridge> 14:33 < bridge> happy now?!?!?!?!?!?!?! >:( 14:33 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243904677452451920/image.png?ex=66532c01&is=6651da81&hm=5526e5801db850c88a34f628efdc19ef320d36f8b2ebe14af7dd469df61375d7& 14:33 < bridge> make photo with phone, else i dont trust this screenshot 14:33 < bridge> 😬 14:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243904974212038667/rn_image_picker_lib_temp_721be9a0-49d6-4c82-aa13-31723c390624.jpg?ex=66532c48&is=6651dac8&hm=e1adcdeebf837d01733bd19c7c5141d11a9781f86d73064e21838246065b340e& 14:34 < bridge> lmao 14:34 < bridge> :gigachad: 14:41 < bridge> kernel 6.8 … 14:41 < bridge> ancient 14:42 < bridge> + gnome … ^^ 14:43 < bridge> how is that ancient xDD 14:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243907518456004708/GObNocZXsAAZ2eS.jpg?ex=66532ea7&is=6651dd27&hm=d52c9cba9ccb92bcd9f8cca6b2f21bcd2a861edbc4d001d65e4a56db09e0f04f& 14:44 < bridge> change my mind 14:44 < bridge> :p 14:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243907639813996625/image.png?ex=66532ec4&is=6651dd44&hm=19e1c8140d3603496a86b20628a95cf6e068bac088b89415fcbcd1fa67576cb6& 14:45 < bridge> I've 6.8.9-amd64 (64-bit) 14:46 < bridge> well i guess pop os 22 is from 2022 xd 14:46 < bridge> actually good versioning xd 14:46 < bridge> u can have 6.9.1 on arch but its not tested 14:46 < bridge> on gentoo u can, but unmasking it 14:46 < bridge> cuz they actually test the kernels 14:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243907960900554752/image.png?ex=66532f10&is=6651dd90&hm=0a219353a3fa499895dbb0253696a31f2d26e18f94c21dca71b9453bb3aa8b63& 14:46 < bridge> if u test it on gentoo.. it's tested on arch :lol: 14:46 < bridge> just install Trisquel GNU/Linux 14:46 < bridge> ah 14:46 < bridge> green = tested? 14:46 < bridge> testing is not just using xd 14:46 < bridge> yes 14:46 < bridge> yeah cool 14:47 < bridge> all of us should free ourselves from non-free software 14:47 < bridge> use gentoo 14:47 < bridge> not a noname linux 14:47 < bridge> says the person with minecraft skin :lol: 14:47 < bridge> :justatest: 14:47 < bridge> That's not a Minecraft skin, that's a VoxeLibre one 14:48 < bridge> why voxellibre doesnt use AGPLv3 but GPLv3 14:48 < bridge> I should find a better profile picture though, it's even on my todo list 14:48 < bridge> so you could ask 14:49 < bridge> also, Trisquel is not a noname distribution of GNU/Linux, it's used by Richard Matthew Stallman himself 14:50 < bridge> and, of course, it is endorsed by FSF 14:50 < bridge> lol, swap is bigger than / disk 14:56 < bridge> as far as i know GPL is only about the code, not recordings of it 14:56 < bridge> he is right 14:56 < bridge> eu laws FORCE you to not give up on copyright 14:56 < bridge> @egyt for assets i recommend using some CC license 14:56 < bridge> 0BSD is the freeest license 14:56 < bridge> if u have a blog 14:56 < bridge> stallman recommends a Creative Commons Attribution-NoDerivatives 4.0 International License. 14:56 < bridge> i use it on my blog 14:56 < bridge> https://edgarluque.com/ 14:56 < bridge> absolute cringe 14:56 < bridge> :D 14:56 < bridge> srsly 14:56 < bridge> yes 14:56 < bridge> I hate ND with all my soul 14:56 < bridge> why so, one thing is about what u write, not docs, etc 14:56 < bridge> ND is useful for blog/opinions 14:56 < bridge> it can make u look like u said some stuff u didnt 14:56 < bridge> wish i remember his article about it 14:57 < bridge> https://www.gnu.org/ 14:57 < bridge> uses this license too 14:57 < bridge> @ryozuki if ddnet would be AGPL, it would mean ddnet could not have a closed source anti bot system btw 14:57 < bridge> fine by me it would also mean kog wouldnt exist 14:58 < bridge> wow xd 14:58 < bridge> xd 14:58 < bridge> I believe that to spread the opinion, you need to allow to translate it into different languages, and ND doesn't allow that 15:00 < bridge> just use google translate 15:00 < bridge> fair point, but i guess u can add a point with ur email to give permission to translators 15:02 < bridge> I would rather use LibreTranslate 15:03 < bridge> ND is still cringe in my opinion, because it doesn't allow to make the work a part of another work, like a video 15:04 < bridge> ND is still cringe in my opinion, because it doesn't allow to make the work a part of another work, like a video (not talking about remixing, mind you) 15:04 < bridge> im only saying use it for a opinion/blog page 15:04 < bridge> but to each their own 15:05 < bridge> That's why I prefer CC0 for most of my "works", so it won't create any copyright trouble 15:06 < bridge> epyc, freest freedom is the real freedom 15:06 < bridge> 😏 15:06 < bridge> https://opensource.stackexchange.com/questions/9871/why-is-there-no-public-domain-licensing-in-europe 15:08 < bridge> https://opensource.org/license/0bsd 15:08 < bridge> approved open source license 15:08 < bridge> but these licenses are never true public domain btw 15:09 < bridge> I respect those people who put their stuff under permissive or copyleft licenses (you know, they already made it available for free use, asking even more freedom from them would be kinda shameless), but I prefer PD-like ones, because I don't really want to become a copyright troll 15:09 < bridge> its just 15:09 < bridge> 15:09 < bridge> > CC0 helps solve this problem by giving creators a way to waive all their copyright and related rights in their works to the fullest extent allowed by law. 15:09 < bridge> to the extend allowed by law 15:10 < bridge> how is it trolling? xD the copyleft ones give rights to end users, they make use of copyright against what it was made for, limiting users rights on X software 15:10 < bridge> *stupid law 😬 15:10 < bridge> but permissive licenses are more dev friendly 15:10 < bridge> harder to fuck up 15:10 < bridge> btw most ppl use MIT because they think their project will be used by big corpo name Y and become famous, the truth is they wont and even its used they will get nothing 15:11 < bridge> You probably never heard of this concept, did you? 15:11 < bridge> giving rights to end users is the best 15:13 < bridge> i know what patent trolling is 15:13 < bridge> ok ur not a gpl enjoyer 15:13 < bridge> im sad 15:13 < bridge> true, many ppl probably think like that... or they simply don't care... 15:13 < bridge> or they use permissive licenses at work and are happy to not code everything from scratch 15:13 < bridge> there are so many reasons 15:13 < bridge> Yeah, wanted to say that right after the Trisquel joke 15:13 < bridge> its cuz cool university name 15:13 < bridge> are u also a self host enjoyer? https://git.edgarluque.com/explore/repos 15:13 < bridge> is it possible to tunnel a server hosted on my pi through cloudfare? 15:14 < bridge> probs not 15:14 < bridge> if u are rich 15:14 < bridge> anything is possible 15:15 < bridge> xdd 15:15 < bridge> shame. will just use a vpn on omv 15:18 < bridge> Copyright and utilization rights should be kept apart (which is what the english term ›copyright‹ does not express properly) 15:18 < bridge> @ryozuki let's imagine one of your AGPL projects would suddenly get huge interest and u could make big money with it, if u relicense it. otherwise u get nothing. what would you do? 15:19 < bridge> i want to bait you obviously 15:25 < bridge> This is easy to prove true, so there is no need to change your mind 😄 15:26 < bridge> I **look** for CC0 music for my project, not listen to it 24/7 15:26 < bridge> Won't close my ears just because there is a radio with a copyrighted song 15:26 < bridge> I look for CC0 music for my project, not listen to it 24/7 15:27 < bridge> Won't close my ears just because there is a radio with a copyrighted song nearby 15:27 <+ws-client> veri pog melon 15:27 <+ws-client> now delete windows 15:27 <+ws-client> hyporcrite moment 15:27 < bridge> LOL 15:27 <+ws-client> (sent from my macbook) 15:28 < bridge> xd 15:28 < bridge> Zets e Wiktoree 15:28 < bridge> (That's a victory) 15:29 <+ws-client> oke good nite #developers 15:29 < bridge> gud knight 15:31 < bridge> Why is dragon sleeping at 1530? curious 15:31 < bridge> Will tell what the project is when I'll find something at least for a trailer. Also I'll be thankful if you could tell me where to search for CC0 music or even recommend artists ||(I already know about Holizna, and I have listened to every of his albums, except for "Space - Sleep - Meditation", and also I know about FreeMusicArchive)|| 15:31 < bridge> rich as he is, he lives in bali rn 15:32 < bridge> Achieved success by being a Free Software developer 👀 15:34 < bridge> I have this conspiracy theory that he is secretly selling bots 16:18 < bridge> + 17:20 < bridge> I thought I foreshadowed myself with translating "demo" as "replay", but it seems like I've rather gaslighted myself, which is even worse. In any case, I passed the 66.(6)% mark. Will report on the amount of translated strings later, I hope. And, to clarify again, I'm doing the translation from scratch, not imrpoving the existing one, so don't be surprised when you will see the only author being me. 17:20 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1243946834020401293/3bb3de6e1421b089.png?ex=66535344&is=665201c4&hm=865dbc4eaf931c58416629e7aea9f7bf6d8e1c922bc6860be1f90cd0acff0349& 17:21 < bridge> i wouldnt really throw out all other contributors, but rather put them above you, just because you changed the file 100% doesnt mean we should remove the credit of the people who did it before you 17:22 < bridge> i wouldnt really throw out all other contributors, but rather put them above you and keep their timestamps, just because you changed the file 100% doesnt mean we should remove the credit of the people who did it before you 17:23 < bridge> Well, okay then, not really against this 17:24 < bridge> keeping history is important in open source projects - thats the joy of contributing in the first place! :P 17:25 < bridge> keeping history is important in projects - thats the joy of contributing in the first place! :P 17:25 < bridge> I remembered another reason why I don't like copyleft: if game includes copylefted assets, you will have to make the video available under that copyleft license. And that's the best case scenario, because SuperTuxKart has assets under **GPL**, which means you have to open-source video as well, if I understand it correctly 17:25 < bridge> I remembered another reason why I don't like copyleft: if game includes copylefted assets, you will have to make the video available under that copyleft license. And that's the best case scenario, because SuperTuxKart has assets under **GPL**, which means you have to open-source video as well (how?), if I understand it correctly 17:26 < bridge> I remembered another reason why I don't like copyleft: if game includes copylefted assets, you will have to make the video available under that copyleft license. And that's the best case scenario; SuperTuxKart has assets under **GPL**, which means you have to open-source video as well (how?), if I understand it correctly 17:27 < bridge> GPL means that if you fork or modify it, you have to publish those modifications - discussing, reviewing and/or recording it shouldnt propose an issue IIRC 17:28 < bridge> while I'm not sure about this claim, only a mega tiny minority of the internet cares about copyright in videos. note that nearly all games are closed source, and everyone uploads videos of them 17:28 < bridge> Including GPL into something makes it GPL too. Not the case for LGPL, though 17:28 < bridge> I want to care about copyright, but it's too hard :^( 17:28 < bridge> I want to care about copyright, but it's hard :^( 17:29 < bridge> Including GPL into something makes it GPL too. Not the case for LGPL 17:30 < bridge> May I at least add something like `EGYT - total overhaul`? 🥺 17:30 < bridge> i am not allowed to decide that, stating that you modified it 100% within the sourcecode itself seems braggy :P - if you include it in your commit message in github tho, `git blame` will show that you modified everything 17:31 < bridge> "total overhaul of translatedfile.txt" as a commit-message for example 17:32 < bridge> It probably won't, because there is not too many ways to translate the "Play" button in the main menu, for example 17:35 < bridge> well then it'll be a total overhaul with only 98% diff, my point still stands :P 17:35 < bridge> One string can be translated the same way in two different translations, I mean 17:36 < bridge> thats a thing for a lot of languages, espacially slavic languages 18:00 < bridge> Hi Guys 18:00 < bridge> Can u help me pls with compile? 18:00 < bridge> And is it possible to work and compile DDNet Server on VS Code? 18:00 < bridge> Or on windows i can use only VS 18:16 < bridge> yes - i did rework the readme for that actually 18:16 < bridge> 18:16 < bridge> https://github.com/ddnet/ddnet/?tab=readme-ov-file#building-on-windows-with-standalone-msvc-build-tools 18:16 < bridge> THX 18:16 < bridge> i will read 18:16 < bridge> :owo: 18:37 < bridge> Perhaps "retranslated"? 18:51 < bridge> Pls add Turkey servers and turkey blocker 18:52 < bridge> Bc so hard without good ping 19:05 < bridge> they were closed and reopened a couple of times already IIRC - they got ddosed and closed shortly after again 19:14 < bridge> Pls open tur blocker when they renew tur servers 19:15 < bridge> Very need for people like me and turks 19:15 < bridge> Im from Ukraine but im live in turkey and i have a lot of problems with ping (85-120 ping all servers) 19:26 < bridge> I'll try to find a new hoster for TUR 19:36 < bridge> Thx 19:36 < bridge> What are the chances that Turkish players will ddos it on the first day 19:37 < bridge> like for all ddnet servers 19:37 < bridge> 100% 19:37 < bridge> 1000% 19:47 < bridge> 10000$ 19:47 < bridge> thanks for purchasing turkey servers 19:48 < bridge> https://tenor.com/view/turkey-turkiye-kaan-ozdil-car-gif-19334563 19:48 < bridge> 🦃 19:52 < bridge> and after 39 ping i very need good ping 19:52 < bridge> Not 110 XD