00:04 < bridge> @heinrich5991 i don't think it deserves a pr so i'll just give it to you (connless 0.5) 00:04 < bridge> ah its too big 00:04 < bridge> seems pr needed :/ 00:25 < bridge> :owo: 00:31 < bridge> it's not :( 07:37 < bridge> :justatest: 08:50 < bridge> Sad, u can spam @mr_anderson for that :kek: , long live 0.5 11:08 < bridge> The VOTE_DESC_LENGTH seems to be not work properly in client-side, the client will only render texts ranged in origin length 11:11 < bridge> idk if anybody does this, but instead of listening to music while i code/work i put stuff from here https://mynoise.net/ 11:11 < bridge> this website is gold 11:15 < bridge> I listen to Slipknot while I code/work 😏 11:16 < bridge> https://open.spotify.com/playlist/4wsL22QFnlzeRZgXTsdl6x?si=1d2e889be686439c 11:16 < bridge> 11:16 < bridge> the playlist i listen to while coding :owo: 11:17 < bridge> eh seems like i can't remove spotify embedded's. gg 11:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331568894946709535/image.png?ex=679217ab&is=6790c62b&hm=e000738f4ed9db312bdca2976571c8beb1bcc90c9f60f70131cba9cf520056d4& 11:19 < bridge> llvm mimics rust Result 11:21 < bridge> Is it because of downstream rust devs? 11:21 < bridge> no, because its a good pattern 11:21 < bridge> they force you to check for nullptr for example 11:21 < bridge> if u dont check, it throws a assert if asserts are on 11:22 < bridge> ah I guess that's not a crazy thing to copy yeah 11:22 < bridge> so its not as enforced 11:22 < bridge> but i found a bug in the C api 11:22 < bridge> so ill do a pr 11:36 < bridge> https://github.com/llvm/llvm-project/pull/123924 11:36 < bridge> new llvm pr 12:08 < bridge> are options in c++ also stolen from rust? :poggers2: 12:09 < bridge> @kollpotato i guess 12:09 < bridge> the thing is these constructs arent as powerful as rust 12:09 < bridge> because c++ has no algebraic data types 12:11 < bridge> after i started coding in rust i cant go back to any language that doesnt have adts 12:11 < bridge> rust is addictive af 12:15 < bridge> long live 0.5! 12:16 < bridge> yup 12:16 < bridge> @kollpotato ocaml has adts 12:16 < bridge> but its more functional 12:16 < bridge> but its awesom 12:16 < bridge> but tooling sucks hard 12:16 < bridge> its why i dont use it much 12:16 < bridge> the original rust compiler was made in ocaml 12:16 < bridge> rust is heavily inspired by it 12:16 < bridge> yeah ive seen, but im not good at fp 12:16 < bridge> but it's part of std lib already? 12:17 < bridge> wait really 12:17 < bridge> i think only optional is of std 12:17 < bridge> i thought c++ 12:17 < bridge> Expected is a llvm thing 12:17 < bridge> yes rly 12:17 < bridge> ocaml is a nice lang to make compilers 12:17 < bridge> rly nice pattern matching etc 12:17 < bridge> it also has llvm bindings 12:17 < bridge> https://en.cppreference.com/w/cpp/utility/expected 12:17 < bridge> ohhh 12:17 < bridge> whats the point of bootstrapping languages btw 12:18 < bridge> nevetherless llvm uses their own 12:18 < bridge> why didnt they keep the compiler in ocaml 12:18 < bridge> hm i wonder if they have reasons to use non-std 12:18 < bridge> or its just like legacy thing that will never be touched again 12:18 < bridge> its always better to have it in the same lang, because dog fooding 12:18 < bridge> and its a statement 12:19 < bridge> u can make a thing as complex as a rust compiler in rust 12:19 < bridge> https://en.wikipedia.org/wiki/Eating_your_own_dog_food 12:19 < bridge> epic 12:19 < bridge> i just googled that xD 13:20 < bridge> Does anyone has the tutorial on how to use quads for renderding images in ddnet? 14:31 < bridge> And in theory, if the rules of the doseechpore server wizard are not ready, anyone can take someone else's map and run the server with it? (Typically a public server) 15:10 < bridge> @zwelf2: when check matrix 16:01 < bridge> can any1 give me site where displayed all servers 16:01 < bridge> from master server 16:01 < bridge> i found it 16:01 < bridge> i can give you _the_ site 17:43 < bridge> after 2 weeks of coding in rust i have realised i have no idea idea how to not store everything on the heap 17:44 < bridge> borrow them or smth idk 17:44 < bridge> great advice 17:45 < bridge> i can just .clone() everything 17:51 < bridge> watcha mean? 17:51 < bridge> 17:51 < bridge> if u dont use Rc, Arc, Vec, Box or similar it's not heap allocated 17:53 < bridge> i use Vec and String everywhere 17:53 < bridge> If that is what your app needs, that sounds ok 😄 17:53 < bridge> when i try to use slices i cant handle the pain of the lifetimes 17:53 < bridge> perhaps 17:53 < bridge> u rarely need to define the lifetimes explictly 17:55 < bridge> you need code review i think 17:56 < bridge> you are lack of some good advice from jupstar or lerato 17:56 < bridge> you need to look into more advanced languages like C 17:56 < bridge> c-- 17:56 < bridge> Here you go, great advice ^^ 17:56 < bridge> xd 17:57 < bridge> C is simple af 17:57 < bridge> u alloc u free 17:57 < bridge> in Rust u have 20 different traits to do the same thing 17:58 < bridge> You are dangerously close to spawning the Rust crew, choose your next sentence very carefully 17:58 < bridge> i'd simply claim it's not true 😂 17:59 < bridge> https://tenor.com/view/tr%C3%BAbo%C3%B0ar-morm%C3%B3nsb%C3%B3k-morm%C3%B3nar-gif-15692769780755147847 17:59 < bridge> If you don't understand when to use Box over Rc or wise versa, then you simply didn't understand their use case 😄 17:59 < bridge> but their task is the same 17:59 < bridge> store on the heap 17:59 < bridge> Mh 17:59 < bridge> You may need to do some more Rusting 😄 18:00 < bridge> i know the different between them 18:00 < bridge> the concept isn't even from rust 18:00 < bridge> i just say they both allocate on the heap 18:00 < bridge> theres a crew?? 💀 18:01 < bridge> You can join by converting one other person to the church of Rust 18:01 < bridge> Voxel is the rusty artist 18:01 < bridge> :deen_star: 18:01 < bridge> i dont care who the irs sends, i am NOT programming in ru.st! 18:02 < bridge> yea my art is pretty rusty i can admit that 18:02 < bridge> Well the biggest difference is ownership, which is not something many software engineers are used to thinking about outside the Rustosphere 18:03 < bridge> Maybe more modern C++ programmers are more familiar with it with `unique_ptr` and `shared_ptr` 18:08 < bridge> what u doing 18:09 < bridge> rust type system is extensive because it wants to express all variables in the type system 18:09 < bridge> which it also has ownership system but its manual 18:09 < bridge> in llvm the c api tells u in docs "takes ownership" 18:10 < bridge> rust doesnt live in the stone age and lets u handle it in the language itself 18:12 < bridge> i am aware of that 18:12 < bridge> i just said that c is simpler 18:12 < bridge> there is a common pitfall tho, specially when dealing heavily with lifetimes, if you have a code that looks like this: 18:12 < bridge> 18:12 < bridge> ```rust 18:12 < bridge> fn hello<'a>(a: &'a MyTypeWithABorrowedField<'a>) {} 18:12 < bridge> ``` 18:12 < bridge> you are in trouble, because this doesnt make much sense, but u can type it, altho when u try to do something with it u will see compile errors 18:12 < bridge> oh no thats my code 18:13 < bridge> but u dont need to do that xd 18:13 < bridge> i guess its more problem when u make it mut too xd 18:13 < bridge> fn hello(a: &MyTypeWithABorrowedField<'_>) {} 18:13 < bridge> this willworks too 18:13 < bridge> this will work too 18:13 < bridge> i forgor about that 18:13 < bridge> xd 18:13 < bridge> too much stuff to remember 18:14 < bridge> i forgot the exact pattern but there was a forum rust describing the problem 18:14 < bridge> clippy will help you do remove useless lifetimes 18:15 < bridge> clippy doesnt like me 18:15 < bridge> but you like it 18:15 < bridge> :deen_star: 18:15 < bridge> i think @milkeeycat had a repo with this pattern 18:15 < bridge> it was something about a arena 18:17 < bridge> c++ has more to remember 18:17 < bridge> unless u do unsafe rust 18:17 < bridge> holding unsafe rust to be safe is harder 18:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331675381954252914/Screenshot_20250122_122223.jpg?ex=67927ad8&is=67912958&hm=a0520944307922cc510b46f21dc2d650c7e6b3fdcd0c708e4e54100e58605ebd& 18:22 < bridge> xDDDDDDD 18:35 < bridge> d 19:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331685021991305296/image0.gif?ex=679283d2&is=67913252&hm=067ab0146c0236abeac1aaaca58dc02f802d1b523571386c7d1f8ad9650a98d4& 19:06 < ws-client> ger3 ok? 19:07 < bridge> it's fine for me 19:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331687911690600478/image.png?ex=67928683&is=67913503&hm=2be434bc679c5ccbe785df30af7168580d593440dd808c7c02c1433fbba36c2c& 19:12 < bridge> but its impossible to quit teeworlds and ddnet 19:14 < bridge> is he done with vanilla teeworlds or done with the game in all? 19:15 < bridge> oh ig everything 19:17 < bridge> he will come back 19:17 < bridge> trust 19:18 < bridge> what happened 19:19 < bridge> i'll give him a year 19:19 < bridge> he made a pr just a month ago 19:20 < bridge> now he quit 19:20 < bridge> but why did he quit 19:20 < bridge> was he supposed to? 19:21 < bridge> ahh 19:21 < bridge> didnt read the question right 19:21 < bridge> maybe depression 19:21 < bridge> teeworlds hurts people 19:21 < bridge> :cammo: 19:23 < bridge> @gerdoe how so fast 19:24 < bridge> ddnet doesn't really appreciate any move into more mod-friendly codebase 19:24 < bridge> ddnet-rs will solve this 19:24 < bridge> again 19:24 < bridge> this is why we need to push ddnet-rs 19:24 < bridge> its like the ultimate mod potential 19:25 < bridge> seems like u secretly enjoy rust 19:26 < bridge> listen 19:26 < bridge> a person can like a rocket launching into space but hate figuring out how the science behind it is done 19:26 < bridge> nah you hated the instrument with which this rocket was built up 19:27 < bridge> we all rember this.... 19:28 < bridge> no patrick, rockets are not instruments 19:29 < bridge> ? 19:30 < bridge> rust is the instrument and ddnet-rs is rocket 19:31 < bridge> i cant believe voxel pushes for rust made software 19:32 < bridge> looks like nowadays u need to be a nazi 💀 19:32 < bridge> i cant believe voxel pushes for nerdy ass programming language made software 19:32 < bridge> to send rockets to space 19:32 < bridge> :kek: 19:32 < bridge> :kek: 19:32 < bridge> seems we will troll ya forever for this xdd 19:32 < bridge> im sorry in advance 19:33 < bridge> @gerdoe i cant help but read ur bio all days 19:33 < bridge> <8_9z> can anyone give me kog maps+aip gores dawnload please 19:33 < bridge> wrong channel 19:33 < bridge> <8_9z> where 19:33 < bridge> #questions 19:40 < bridge> huh? 19:46 < bridge> rust in god we trust 19:48 < bridge> god in rust we trust 19:51 < bridge> Unless you actually know why he left you are just speculating. Which is useless 20:00 < bridge> do u think this channel gets so many random questions because it’s the first channel from the top of the list that anyone can type in? 20:01 < bridge> i mean, half the time i see the dumb questions they’ve been crossposted (spammed) to general and probably other channels 20:01 < bridge> but maybe moving this channel or category down would reduce that 20:02 < bridge> It's also one of the most active channels, perhaps that also contributes 20:04 < bridge> §1 You cannot quit teeworlds 20:04 < bridge> §2 If you quit teeworlds $1 becomes active 20:04 < bridge> why does a dollar become active 20:05 < bridge> lel 20:05 < bridge> §1 You cannot quit teeworlds 20:05 < bridge> §2 If you quit teeworlds §1 becomes active 20:18 < bridge> @learath2 do we do this? https://cceckman.com/writing/branchless-utf8-encoding/ 20:20 < bridge> > So on x86_64 processors, we have to branch to say “a 32-bit zero value has 32 leading zeros”. Put differently, the “count leading zeros” intrinsic isn’t necessarily a branchless instruction. This might look nicer on another architecture! 20:20 < bridge> til 20:25 < bridge> https://github.com/skeeto/branchless-utf8 20:45 < bridge> Nope, I think we just adopted what teeworlds has which should be the naive implementation 20:47 < bridge> ```c 20:47 < bridge> static void * 20:47 < bridge> utf8_decode(void *buf, uint32_t *c, int *e) 20:47 < bridge> { 20:47 < bridge> static const char lengths[] = { 20:47 < bridge> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20:47 < bridge> 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 4, 0 20:47 < bridge> }; 20:47 < bridge> static const int masks[] = {0x00, 0x7f, 0x1f, 0x0f, 0x07}; 20:47 < bridge> static const uint32_t mins[] = {4194304, 0, 128, 2048, 65536}; 20:47 < bridge> static const int shiftc[] = {0, 18, 12, 6, 0}; 20:47 < bridge> static const int shifte[] = {0, 6, 4, 2, 0}; 20:47 < bridge> 20:47 < bridge> unsigned char *s = buf; 20:47 < bridge> int len = lengths[s[0] >> 3]; 20:47 < bridge> 20:47 < bridge> /* Compute the pointer to the next character early so that the next 20:47 < bridge> * iteration can start working on the next character. Neither Clang 20:47 < bridge> * nor GCC figure out this reordering on their own. 20:47 < bridge> */ 20:47 < bridge> unsigned char *next = s + len + !len; 20:47 < bridge> 20:47 < bridge> /* Assume a four-byte character and load four bytes. Unused bits are 20:47 < bridge> * shifted out. 20:47 < bridge> */ 20:47 < bridge> *c = (uint32_t)(s[0] & masks[len]) << 18; 20:47 < bridge> *c |= (uint32_t)(s[1] & 0x3f) << 12; 20:47 < bridge> *c |= (uint32_t)(s[2] & 0x3f) << 6; 20:47 < bridge> *c |= (uint32_t)(s[3] & 0x3f) << 0; 20:47 < bridge> *c >>= shiftc[len]; 20:47 < bridge> 20:47 < bridge> xd 20:48 < bridge> It would need to be benched tbh 20:48 < bridge> im sure this wins but yeah 20:48 < bridge> do we even use a lut 20:48 < bridge> he literally said this couple of times 20:48 < bridge> brb going into a 24 man savage raid 20:48 < bridge> Yeah this looks pretty cheap, I can't imagine anything branched outdoing this 20:49 < bridge> Unless he literally said "I'm leaving because of X", you are speculating 20:49 < bridge> https://nullprogram.com/blog/2017/10/06/ 20:49 < bridge> https://github.com/skeeto/scratch/blob/master/misc/utf8_branchless.c 20:58 < bridge> https://github.com/ddnet/ddnet/pull/9010#issuecomment-2397316203 i think his point is pretty solid and understandable 21:00 < bridge> He does not say why he won't have time for it in the foreseen future. Maybe he started a new job, maybe he has a new hobby. There is no point speculating 21:01 < bridge> He was not fond of the pace upstream was moving at, and he does not have time for teeworlds. Those two things don't need to be in a causal relationship, they are things that can happen at the same time 21:03 < bridge> i don't see any reason to actually pull this up, you can ask him directly if you really want to know exact reasons of his leave, there's no point to start sophistic discussion 21:03 < bridge> this comment makes it clear and if you want it to be more clear, again, ask him directly 21:03 < bridge> You are the one that made a claim. I don't particularly care why he doesn't currently have time for teeworlds. He doesn't have time that's all that matters to me 21:03 < bridge> You can go ask if you are curious 21:04 < bridge> so you started this polemic just to argue? 21:05 < bridge> I just wanted to point out to bystanders that what you said has no basis in any statement made by them 21:06 < bridge> he's none of president to make official messages to the tee world but okey xd 21:07 < bridge> As I said, I don't care. You are the one that just pulled that reason out of thin air to fit your obvious bias 21:07 < bridge> i could see this kind of strict semantics applied only in jurisprudence 21:08 < bridge> What I do know is we can't expect them to fix that issue, so someone else will have to do it 21:50 < bridge> developer drama is getting as hot as the testing one 22:06 < bridge> there's no drama, only two men disputing manly :gigachad: 22:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331734184816807997/Gh38CkpW0AApOy1.png?ex=6792b19c&is=6791601c&hm=d33a2888e9ad4267aef8a77bd3f2ed9c3b366289bd2b72b0fccf7845df424a4d& 22:19 < bridge> @jxsl13 look what they did to him 22:19 < bridge> they are the real haters 22:19 < bridge> LOL 22:20 < bridge> He posted on ddnet github why he stops contributing and is not happy. 22:22 < bridge> as lerato said he has to make it clear with statement like "i leave because X", any other phrasing doesn't make it clear and it is just assumptions and speculations 22:43 < bridge> "Considering #7777 I have no plan to put effort in fixing DDNet stuff" is pretty clear to me and i agree with him 22:43 < bridge> https://github.com/ddnet/ddnet/issues/7777 23:04 < bridge> you are speculating :troll: 23:04 < bridge> ok trollmode off 23:04 < bridge> this one is said without any sarcasm tho