03:03 <+bridge> naming of source files in ddnet source doesn't seem to be consistent case-wise 03:04 <+bridge> there are some files that are bunched together (foobar.cpp/h) and there are some that are separated with underscores (foo_bar.cpp/h) 03:04 <+bridge> is either one recommended over the other 03:20 <+bridge> why/how is aio broken on windows. it looks like it just uses the existing thread stuff 03:21 <+bridge> i was gonna use it for the thing but if it's really broken on windows i need to either figure out why & fix/work around it or do a lower level approach 03:21 <+bridge> either way ig i can't rn 07:59 <+bridge> Throw on tsan and look if it's broken. Afaik it was always broken on old windows versions? 09:13 < ws-client> OMG, today is friday for futurust.. almost forgot 09:13 < ws-client> but i have no topic 09:16 < ws-client> i have smth. yesterday i found a crate with an asshole maintainer xD 09:16 < ws-client> "friday for futurust" that doesnt really work phoenetically 09:17 < ws-client> !rust he used MIT/Apache for all his libs, but then changed one line of code to use a MPL license for that code line. causing all libs basically to be MPL bound 09:17 < chillerbot1> @Ryozuki 09:17 < ws-client> <:rust:920765596289880074> 09:17 < ws-client> that's how evil this license and thought is 09:17 < ws-client> jupsti u can now use the ping all rusters command 09:17 < ws-client> one last time heinrich told me to remove the spammy commands :c 09:17 < ws-client> what spam xd 09:18 < ws-client> pinging 5 ppl at once 09:18 < ws-client> sounds efficient 09:18 < ws-client> stuff like !c and !rust and !jup 09:18 < ws-client> heinrich hates everything that makes fun for others 09:18 < ws-client> xd 09:18 < ws-client> he big boss im scared he ban ma ass 09:18 < ws-client> so when i get time ill kick the commands 09:19 < ws-client> no 09:20 < ws-client> don't bow for dictator heinrich 09:21 < ws-client> he runs the bridge to my only social interaction he got me at the balls 09:22 <+bridge> idk 09:22 <+bridge> agpl best 09:22 <+bridge> idc* 09:22 < ws-client> but asshole move non than less 09:22 < ws-client> bsd best 09:22 < ws-client> better than agpl at least πŸ˜‚ 09:22 <+bridge> changing license after fact is a bit meh ye 09:22 <+bridge> and one line is being troll xd 09:23 <+bridge> chiller put some rust at the balls 09:23 <+bridge> so atleast they are memory safe 09:23 < ws-client> e wot xd 09:23 <+bridge> :poggers2: 09:23 < ws-client> balls of steel 09:23 < ws-client> get rusty 10:59 <+bridge> I'm sorry for hosting and maintaining the IRC bridge? 11:02 <+bridge> idk why i got the ich to implement my own hashmap in rust and c 11:03 <+bridge> are there existing stack based hashmaps on rust? 11:03 <+bridge> can be fun 11:04 <+bridge> like smallvec but smallmap 11:10 < ws-client> @heinrich5991 ... 11:11 <+bridge> what is it? 11:11 < ws-client> your comment :D 11:11 < ws-client> nobody complained about you hosting the bridge 11:11 < ws-client> its the first time i seen him express some kind of sadness 11:11 < ws-client> i appreciate that 11:12 < ws-client> we r on a good way 11:13 <+bridge> https://crates.io/crates/micromap 11:13 <+bridge> apparently it's just an array without any hashing 11:13 <+bridge> but thinking about it, it makes sense 11:14 <+bridge> if it's small, you can forego the hash part of the hashmap 11:14 <+bridge> true 11:14 <+bridge> does it make sense to make one with hashing and stack based 11:14 <+bridge> but the stack doesnt need to be small 11:14 <+bridge> well i wanna make it for fun 11:14 <+bridge> can be useful to learn unsafe 11:14 <+bridge> then just do it I guess ^^ 11:16 <+bridge> i see the hashless aproach just works till 20 11:19 <+bridge> yea, just till some constant 11:44 <+bridge> @ryozuki if u like working on hashmaps and have no hobbies. I have a feature request for a create i use xdd 11:45 <+bridge> @ryozuki if u like working on hashmaps and have no hobbies. I have a feature request for a crate i use xdd 11:46 <+bridge> xd 11:46 <+bridge> I pay u 5€ 😬 11:46 <+bridge> i dont need 5€ 11:46 <+bridge> :ez: 11:47 <+bridge> πŸ₯Ή 11:47 <+bridge> Then i need to do it, shit xd 12:07 <+bridge> @Jupeyy_Keks what's the feature request? 12:10 < ws-client> @heinrich5991 i use a crate called hashlink its basically a hashmap but with a linked list, which is nice to keep the order, even when calling remove. For the iterator i'd find it useful to have a "skip_to_key".. since its a linked list it could easily start the iterator at a different point in the linked list, which is ultimately nice if i want to drop an element and inform all elements after the element that there was a 12:10 < ws-client> change 12:10 <+bridge> ah, like the hashmap in python 12:13 <+bridge> I guess that would only be possible on iterator creation 12:14 <+bridge> although that's probably not an issue for you? 12:14 < ws-client> yeah its not an issue 12:16 <+bridge> ah! 12:16 <+bridge> the iterator implements `ExactSizeIterator` 12:16 <+bridge> that's probably not possible for yours 12:16 < ws-client> yes i know 12:17 < ws-client> but it could simply be another iterator 12:17 < ws-client> that doesnt implement it 12:17 <+bridge> yea 12:17 <+bridge> but that makes it a little more complicated to convince the maintainers to implement it 12:17 < ws-client> yeah :D 12:18 < ws-client> But if i wrap the iterator in a "skip" struct.. 12:19 < ws-client> similar to how map etc. to it with iterators 12:19 < ws-client> would maybe make the code dublication less 12:20 < ws-client> dup 12:46 < ws-client> !jup @Jupstar βœͺ @heinrich5991 name ping commands are off now :c 12:46 < ws-client> !ping 12:46 < chillerbot1> pong 12:46 < ws-client> only this stayed for testing 12:49 <+bridge> !rust d 12:49 <+bridge> Mhh 12:49 <+bridge> Sucks 12:50 <+bridge> Now I have to type out ChillerDragons way too long name again xD 12:50 < ws-client> do @c on webchat axaxax 12:51 < ws-client> also my name is easier to type than fakin βœͺ 12:55 <+bridge> Then map DragonBall to my name. Then we ChillerDragonBall 12:59 < ws-client> lol 13:03 < ws-client> !c test 13:10 <+bridge> ```rust 13:10 <+bridge> impl SmolMap 13:10 <+bridge> where 13:10 <+bridge> K: Eq + Hash, 13:10 <+bridge> S: BuildHasher, 13:10 <+bridge> { 13:10 <+bridge> /// # Panics 13:10 <+bridge> /// If length == N 13:10 <+bridge> pub fn insert(&mut self, key: K, value: V) -> Option { 13:10 <+bridge> assert_ne!(self.len, N); 13:10 <+bridge> 13:10 <+bridge> let mut hasher = self.state.build_hasher(); 13:10 <+bridge> key.hash(&mut hasher); 13:10 <+bridge> let start_idx = hasher.finish() as usize; 13:10 <+bridge> let mut iter_idx = 0; 13:10 <+bridge> 13:10 <+bridge> loop { 13:10 <+bridge> let idx_mod: usize = (start_idx + iter_idx * iter_idx) % self.storage.len(); 13:10 <+bridge> 13:10 <+bridge> if self.storage[idx_mod].0 { 13:10 <+bridge> if unsafe { self.storage[idx_mod].1.assume_init_ref() } 13:10 <+bridge> .0 13:10 <+bridge> .eq(&key) 13:10 <+bridge> { 13:11 <+bridge> let new_val = MaybeUninit::new((key, value)); 13:11 <+bridge> let old_val = std::mem::replace(&mut self.storage[idx_mod].1, new_val); 13:11 <+bridge> return Some(unsafe { old_val.assume_init().1 }); 13:11 <+bridge> } 13:11 <+bridge> } else { 13:11 <+bridge> let new_val = MaybeUninit::new((key, value)); 13:11 <+bridge> self.storage[idx_mod].0 = true; 13:11 <+bridge> ```rust 13:11 <+bridge> #[derive(Debug)] 13:11 <+bridge> pub struct SmolMap { 13:11 <+bridge> storage: [(bool, MaybeUninit<(K, V)>); N], 13:11 <+bridge> len: usize, 13:11 <+bridge> state: S, 13:11 <+bridge> } 13:11 <+bridge> ``` 13:11 <+bridge> `(bool, T)` β†’ `Option` 13:11 <+bridge> would make it safe and potentially smaller 13:11 <+bridge> hmm i thought about ye 13:11 <+bridge> i guess in this case maybeuninit is not faster xd 13:12 <+bridge> but i wanted to play with maybeuninit 13:12 <+bridge> ill change it to option tho 13:12 <+bridge> `Option` is literally `(bool, MaybeUninit)` ^^ 13:12 <+bridge> xD 13:12 <+bridge> except saafe 13:12 <+bridge> except safe 13:12 <+bridge> hmm 13:12 <+bridge> you could put the bools into another array 13:12 <+bridge> then it's not useless anymore 13:12 <+bridge> SoA instead of AoS 13:13 <+bridge> whats better 13:13 <+bridge> SoA 13:13 <+bridge> so bools in another array? 13:13 <+bridge> ima try 13:14 <+bridge> yes 13:14 <+bridge> you could separate keys from values while you're at it 13:14 <+bridge> this also allows me to make new() const 13:14 <+bridge> pog 13:15 <+bridge> ```rust 13:15 <+bridge> pub fn new(hasher: S) -> Self { 13:15 <+bridge> let data = std::array::from_fn(|_| (false, MaybeUninit::uninit())); 13:15 <+bridge> 13:15 <+bridge> Self { 13:15 <+bridge> storage: data, 13:15 <+bridge> len: 0, 13:15 <+bridge> state: hasher, 13:15 <+bridge> } 13:15 <+bridge> } 13:15 <+bridge> 13:15 <+bridge> pub const fn new(hasher: S) -> Self { 13:15 <+bridge> Self { 13:15 <+bridge> storage: unsafe { 13:15 <+bridge> MaybeUninit::uninit().assume_init() 13:15 <+bridge> }, 13:15 <+bridge> tags: [false; N], 13:15 <+bridge> len: 0, 13:15 <+bridge> state: hasher, 13:15 <+bridge> } 13:15 <+bridge> } 13:15 <+bridge> ``` 13:15 <+bridge> before - after 13:17 <+bridge> ```rust 13:17 <+bridge> /// # Panics 13:17 <+bridge> /// If length == N 13:17 <+bridge> pub fn insert(&mut self, key: K, value: V) -> Option { 13:17 <+bridge> assert_ne!(self.len, N); 13:17 <+bridge> 13:17 <+bridge> let mut hasher = self.state.build_hasher(); 13:17 <+bridge> key.hash(&mut hasher); 13:17 <+bridge> let start_idx = hasher.finish() as usize; 13:17 <+bridge> let mut iter_idx = 0; 13:17 <+bridge> 13:17 <+bridge> loop { 13:18 <+bridge> let idx_mod: usize = (start_idx + iter_idx * iter_idx) % self.storage.len(); 13:18 <+bridge> 13:18 <+bridge> if self.tags[idx_mod] { 13:18 <+bridge> if unsafe { self.storage[idx_mod].assume_init_ref() } 13:18 <+bridge> .0 13:18 <+bridge> .eq(&key) 13:18 <+bridge> { 13:18 <+bridge> let new_val = MaybeUninit::new((key, value)); 13:18 <+bridge> let old_val = std::mem::replace(&mut self.storage[idx_mod], new_val); 13:18 <+bridge> return Some(unsafe { old_val.assume_init().1 }); 13:18 <+bridge> } 13:18 <+bridge> } else { 13:18 <+bridge> let new_val = MaybeUninit::new((key, value)); 13:18 <+bridge> self.tags[idx_mod] = true; 13:18 <+bridge> self.storage[idx_mod] = new_val; 13:18 <+bridge> self.len += 1; 13:18 <+bridge> return None; 13:18 <+bridge> } 13:18 <+bridge> 13:18 <+bridge> i guess this probs optimizes better 13:18 <+bridge> > `` /// # Panics 13:18 <+bridge> > /// If length == N 13:18 <+bridge> i dont even need len 13:18 <+bridge> oh 13:18 <+bridge> i do 13:18 <+bridge> xD 13:18 <+bridge> whats wrong? 13:18 <+bridge> it should only panic if the key is not already in there, right? 13:19 <+bridge> true 13:19 <+bridge> if it needs to find a new slot 13:19 <+bridge> unused* 13:19 <+bridge> moved the assert to the else 13:19 <+bridge> hmm 13:20 <+bridge> wait maybe i should just loop N 13:20 <+bridge> not inifnite 13:21 <+bridge> are you guaranteed to hit every bucket like that btw? 13:21 <+bridge> i would guess yes 13:21 <+bridge> but idk rly xD 13:22 <+bridge> ok looping N is not enough 13:22 <+bridge> cuz it may need more loops 13:22 <+bridge> hm 13:23 <+bridge> ok it looks like it eventually hits every bucket 13:23 <+bridge> but i got a very long runtime xD 13:25 <+bridge> > Unfortunately, quadratic probing has the disadvantage that typically not all hash table slots will be on the probe sequence. Using p(K, i) = i2 gives particularly inconsistent results. For many hash table sizes, this probe function will cycle through a relatively small number of slots. If all slots on that cycle happen to be full, this means that the record cannot be inserted at all! For example, if our hash table has three slots, then records th 13:26 <+bridge> hmm 13:26 <+bridge> since i cant do resize, which is usually done when the load factor aproaches 0.75 (iirc) maybe linear probing is best used here 13:28 <+bridge> ```rust 13:28 <+bridge> pub fn insert(&mut self, key: K, value: V) -> Option { 13:28 <+bridge> let mut hasher = self.state.build_hasher(); 13:28 <+bridge> key.hash(&mut hasher); 13:28 <+bridge> let start_idx = hasher.finish() as usize; 13:28 <+bridge> let mut iter_idx = 0; 13:28 <+bridge> 13:28 <+bridge> while iter_idx < N { 13:28 <+bridge> let idx_mod: usize = (start_idx + iter_idx) % self.storage.len(); 13:28 <+bridge> 13:28 <+bridge> if self.tags[idx_mod] { 13:28 <+bridge> if unsafe { self.storage[idx_mod].assume_init_ref() } 13:28 <+bridge> .0 13:28 <+bridge> .eq(&key) 13:28 <+bridge> { 13:28 <+bridge> let new_val = MaybeUninit::new((key, value)); 13:28 <+bridge> let old_val = std::mem::replace(&mut self.storage[idx_mod], new_val); 13:29 <+bridge> return Some(unsafe { old_val.assume_init().1 }); 13:29 <+bridge> } 13:29 <+bridge> } else { 13:29 <+bridge> let new_val = MaybeUninit::new((key, value)); 13:29 <+bridge> self.tags[idx_mod] = true; 13:29 <+bridge> self.storage[idx_mod] = new_val; 13:29 <+bridge> self.len += 1; 13:29 <+bridge> return None; 13:29 <+bridge> } 13:29 <+bridge> 13:29 <+bridge> iter_idx += 1; 13:29 <+bridge> } 13:29 <+bridge> 13:29 <+bridge> panic!("no slot could be found") 13:29 <+bridge> final result 13:29 <+bridge> ill probs change it to a result 13:32 <+bridge> as the hash map gets fuller, it makes no sense to keep it as a hash map I guess 13:33 <+bridge> you'd have to manually ensure that it stays below the load factor 13:33 <+bridge> ye thats why resize happens 13:33 <+bridge> otherwise linear probing would be beneficial 13:33 <+bridge> without any hash 13:33 <+bridge> but i cant resize with stack based storage 13:33 <+bridge> yes 13:34 <+bridge> perhaps a tree based map would make more sense? 13:34 <+bridge> whats that? 13:34 <+bridge> `std::map` in C++ 13:34 <+bridge> or `BTreeMap` in rust 13:34 <+bridge> it works by constructing a tree 13:34 <+bridge> you have a `<` relation on the key type 13:37 <+bridge> i see 13:37 <+bridge> well maybe next time xd 13:38 <+bridge> Self balancing rb trees, go go 13:53 <+bridge> i hear red black trees are pain 14:15 <+bridge> They are cool tho 14:16 <+bridge> <_voxeldoesart> red black tees 14:30 <+bridge> it seems my simple hashmap passes miri 14:30 <+bridge> but maybe i need more tests xd 14:38 <+bridge> ``` 14:38 <+bridge> smolmap get 1000 time: [7.6065 ns 7.6679 ns 7.7887 ns] 14:38 <+bridge> Found 10 outliers among 100 measurements (10.00%) 14:38 <+bridge> 5 (5.00%) high mild 14:38 <+bridge> 5 (5.00%) high severe 14:38 <+bridge> 14:38 <+bridge> hashmap get 1000 time: [8.9185 ns 8.9328 ns 8.9479 ns] 14:38 <+bridge> Found 1 outliers among 100 measurements (1.00%) 14:38 <+bridge> 1 (1.00%) high severe 14:38 <+bridge> ``` 14:38 <+bridge> pog 14:39 <+bridge> Another miri fan? πŸ˜„ 14:39 <+bridge> well miri is nice to check if ur unsafe is ok 14:39 <+bridge> its the main reason it exists i think 14:40 <+bridge> ``` 14:40 <+bridge> The implementation of the Rust abstract machine - miri - stops execution of Rust programs when they exhibit undefined behavior. 14:40 <+bridge> 14:40 <+bridge> C, C++, etc. don't even have implementations of their abstract machines. They don't have one existing as a goal. And they are happy to make certain operations exhibit undefined behavior even if that implies that it would make an implementation of the abstract machine that traps impossible. 14:40 <+bridge> 14:40 <+bridge> This is why even if you were to combine valgrind with address sanitizer, memory sanitizer, thread sanitizer, undefined-behavior-sanitizer, and other existing C and C++ tools, there is still a lot of classes of undefined behavior that these tools can't detect. 14:40 <+bridge> 14:40 <+bridge> That's fine in C and C++, but not fine in Rust. In Rust, if we add a new type of undefined behavior, the constraint is that it should be (demonstrably) possible to extend miri to detect it, such that if a user doesn't know whether some program exhibits undefined behavior for some inputs, they can just run it under miri, and miri will precisely pinpoint which part of their code exhibited undefined behavior and why, and how their program execution go 14:40 <+bridge> ``` 14:40 <+bridge> i love this quote 14:40 <+bridge> I know, I filed a few bugs with it yesterday 14:41 <+bridge> where did you file bugs with it? 14:41 <+bridge> i guess his work 14:51 <+bridge> sad thing is miri doesnt work with futures 14:52 <+bridge> but well most unsafe code *tm is usually not in async 14:52 <+bridge> or u can isolate it 14:52 <+bridge> idk 14:52 <+bridge> async started working recently I think 14:53 <+bridge> epoll_wait has been implemented: https://github.com/rust-lang/miri/pull/2764, that was blocking it in my cases 14:53 <+bridge> oh 14:53 <+bridge> thats epic 15:20 <+bridge> @learath2 if i implement a red black tree can i get into google? 15:20 <+bridge> :gigachad: 15:22 <+bridge> maybe if its a red, yellow, green, blue tree 15:23 <+bridge> lgbt tree 15:23 <+bridge> https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/1200px-Google_%22G%22_Logo.svg.png 15:23 <+bridge> oh lmao 15:23 <+bridge> xd 15:23 <+bridge> i heard google asked to implement rd trees 15:23 <+bridge> the real g 15:23 <+bridge> and a guy who made something in javascript and was famous for it failed 15:23 <+bridge> and he complained in social media 15:23 <+bridge> xd 15:24 <+bridge> https://twitter.com/mxcl/status/608682016205344768?lang=en 15:31 <+bridge> Why would you want to be a corporate slave? 15:31 <+bridge> to get 500k$ per year 15:31 <+bridge> i just work 1 year 15:31 <+bridge> and retire 15:31 <+bridge> ok i can do with 300k 15:31 <+bridge> give or take 15:31 <+bridge> actually im half sure most of devs working for google arent that better than us here 15:32 <+bridge> they just got a degree in (famous name of uni here) and some contacts 15:32 <+bridge> but contacts are everything 15:33 <+bridge> He wrote homebrew, the worst package manager to ever be envisioned by humankind. I'd have rejected him just for that 15:33 <+bridge> ye xd 15:33 <+bridge> hn mentions homebrew sucked hard back then 15:33 <+bridge> they didnt even know how to manage ssl certts 15:34 <+bridge> > However, they don't usually remember that Homebrew at that point was a poor and incomplete reimplementation of other package managers, used to break installed software on updates, and the fact that the very team that was maintaining Homebrew was not competent enough to either manage SSL certificate for their website properly or at least admit that it was a bug. 15:34 <+bridge> They probably have bigger algobrains, able to golf 69 algorithms at the same time while brushing their teeths 15:34 <+bridge> im quite sure not 15:35 <+bridge> they just werent lazy enough and studied a bit to pass the leetcode exam 15:35 <+bridge> its literally the only entry bar 15:35 <+bridge> and maybe a good uni degree 15:35 <+bridge> but its how the world works anyway 15:35 <+bridge> there is a reason most interesting software is done by ppl in their hobby time 15:36 <+bridge> @learath2 when will u finish uni btw 15:37 <+bridge> if u ever get in a big company, give good word of me ty 15:37 <+bridge> September hopefully 15:37 <+bridge> "i know a crazy rust dev" 15:37 <+bridge> :justatest: 15:38 <+bridge> No way I get into anywhere decent finishing a 3y degree in 7 years. I'll be mopping floors at mcdonalds or living in estonia filling web templates at a "web design agency" 15:38 <+bridge> no 15:38 <+bridge> make a nice project in C 15:38 <+bridge> show it off 15:38 <+bridge> it worked for me 15:38 <+bridge> actually the barebones following a tutorial rust OS i made helped me find a job 15:38 <+bridge> it impressed some ppl 15:38 <+bridge> just by being interested in that 15:38 <+bridge> even if it sucked 15:39 <+bridge> anyway im sure u will be working rly early 15:39 <+bridge> it would be a waste 15:40 <+bridge> and absolutely mention ddnet 15:40 <+bridge> its a lifelong project, also telling ur story about it more or less helps 15:40 <+bridge> atleast it did for me 15:41 <+bridge> thanks for coming to my unsolicited advice ted talk 15:41 <+bridge> (also to me uni matters almost nothing, u will see why when u join workforce, there are devs, and "only" uni devs who have rly not much interest outside of work) 15:53 <+bridge> I think you'll be able to find a decent job given your experience 15:54 <+bridge> but not in europe 15:54 <+bridge> they dont care about skill 15:54 <+bridge> only certificates 15:54 <+bridge> 😬 15:58 <+bridge> ``` 15:58 <+bridge> thread 'main' panicked at 'unsupported Miri functionality: can't call foreign function `GFp_cpuid_setup` on OS `linux`', /home/jupeyy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ring-0.16.20/src/cpu.rs:46:21 15:58 <+bridge> ``` 15:58 <+bridge> 15:58 <+bridge> i depend on unsupported feature ;~; 16:00 <+bridge> it might affect your pay, but I think you'll be able to find a job 16:07 <+bridge> so not so decent job 16:07 <+bridge> except u like to work for other ppls economy 16:08 <+bridge> better than that though: 16:08 <+bridge> > I'll be mopping floors at mcdonalds or living in estonia filling web templates at a "web design agency" 16:09 <+bridge> if i got a job @learath2 can too 16:09 <+bridge> :justatest: 16:09 <+bridge> i dont even have uni 16:10 <+bridge> xd 16:48 <+bridge> I think CS is great in this respect. Many fun startups take people without a CS background even, as long as you can show that you are capable. 16:48 <+bridge> Not unsupported, but no foreign functions is also my main limitation of miri 16:49 <+bridge> Maybe the large European corps, but even at SAP we had developers who never studied computer science. There are also US corps and startups which hire in Europe 16:54 <+bridge> Why does 16:54 <+bridge> ```rust 16:54 <+bridge> struct Test; 16:54 <+bridge> 16:54 <+bridge> impl Test { 16:54 <+bridge> fn a(&mut self) -> &() { 16:54 <+bridge> &() 16:54 <+bridge> } 16:54 <+bridge> } 16:54 <+bridge> 16:54 <+bridge> fn compile(t: &mut Test) -> &() { 16:54 <+bridge> let b = t.a(); 16:54 <+bridge> if false { 16:54 <+bridge> return b; 16:54 <+bridge> } 16:54 <+bridge> t.a() 16:54 <+bridge> } 16:54 <+bridge> ``` 16:54 <+bridge> not compile due to lifetimes. But when removing the `if false { return b; }` it does compile :wtf: 16:57 <+bridge> mutable borrow 16:57 <+bridge> borrow checking probably happens before any deadcode is removed 16:57 <+bridge> ``` 16:57 <+bridge> error[E0499]: cannot borrow `*t` as mutable more than once at a time 16:57 <+bridge> --> src/main.rs:14:5 16:57 <+bridge> | 16:57 <+bridge> 9 | fn compile(t: &mut Test) -> &() { 16:57 <+bridge> | - let's call the lifetime of this reference `'1` 16:57 <+bridge> 10 | let b = t.a(); 16:57 <+bridge> | ----- first mutable borrow occurs here 16:57 <+bridge> 11 | if false { 16:57 <+bridge> 12 | return b; 16:57 <+bridge> | - returning this value requires that `*t` is borrowed for `'1` 16:57 <+bridge> 13 | } 16:57 <+bridge> 14 | t.a() 16:58 <+bridge> | ^^^^^ second mutable borrow occurs here 16:58 <+bridge> ``` 16:58 <+bridge> this is the error 16:58 <+bridge> the thing is that if u remove the return it probs can handle the drop of the reference 16:58 <+bridge> and it knows its just 1 mut borrow at a time 17:00 <+bridge> But this doesn't compile either (maybe even more surprising?). The mutable borrow is now dropped from the scope: 17:00 <+bridge> ```rust 17:00 <+bridge> struct Test(()); 17:00 <+bridge> 17:00 <+bridge> impl Test { 17:00 <+bridge> fn a(&mut self) -> &() { 17:00 <+bridge> &self.0 17:00 <+bridge> } 17:00 <+bridge> } 17:00 <+bridge> 17:00 <+bridge> fn compile(t: &mut Test) -> &() { 17:00 <+bridge> { 17:00 <+bridge> let b = t.a(); 17:00 <+bridge> if false { 17:00 <+bridge> return b; 17:00 <+bridge> } 17:00 <+bridge> } 17:00 <+bridge> t.a() 17:00 <+bridge> } 17:01 <+bridge> ``` 17:01 <+bridge> (the workaround I tried on my real program) 17:02 <+bridge> @Zwelf with polonius it works 17:02 <+bridge> the first 17:02 <+bridge> ❯ RUSTFLAGS="-Z polonius" cargo +nightly c 17:02 <+bridge> I was about to check the same thing πŸ˜„ 17:02 <+bridge> polonius is the experimental borrow checker 17:03 <+bridge> i think the main grip here is the return 17:03 <+bridge> I guess the stable borrow checker just can't handle early returns well 17:03 <+bridge> it doesnt drop b 17:03 <+bridge> cuz return 17:03 <+bridge> the day polonius stabilizes will be great 17:03 <+bridge> must party 17:06 <+bridge> So frustrating xD. I'm considering to start using nightly for that (on twgame) 17:06 <+bridge> http://smallcultfollowing.com/babysteps/blog/2018/06/15/mir-based-borrow-check-nll-status-update/#polonius 17:07 <+bridge> https://rust-lang.github.io/rfcs/2094-nll.html 17:07 <+bridge> Non lexical lifetimes are apparently still not a thing, so as far as the borrow checker is concerned, nothing is dropped there 17:10 <+bridge> Just found a random DDNet shoutout from bors 5 years ago: https://bors.tech/newsletter/2018/07/01/tmib-18/ 17:12 <+bridge> lol true 17:12 <+bridge> btw bors author is graydon 17:12 <+bridge> original rust creator 17:12 <+bridge> iirc 17:12 <+bridge> Hm, where does this fit into the wiki resources page. Blog posts or external websites referencing DDNet πŸ€” 17:15 <+bridge> blog posts maybe 17:15 <+bridge> hmm idk 17:17 <+bridge> yeah, fits a bit better (although not perfectly) 17:19 <+bridge> @heinrich5991 https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/HJFGD6JHQZPIUV4UVYAFPZGGGXGAHADY/ 17:19 <+bridge> soon ur skin will be back 17:19 <+bridge> the skin you like* 17:21 <+bridge> this reminds me i need to upgrade debian 17:22 <+bridge> it doesn't work because returning the value somehow borrows it even harder 17:22 <+bridge> I think I have an example for this in libtw2, too 17:23 <+bridge> not this bors though, this is a reimplementation 17:23 <+bridge> (no idea whether he's the author of the original bors) 17:25 <+bridge> https://github.com/graydon/bors 17:25 <+bridge> > This project is only very moderately maintained and mostly dormant (though not obsolete -- it's still used daily). It was originally developed for use early in the Rust project's life, and has been superseded by multiple enhanced rewrites: 17:25 <+bridge> pog 17:25 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1119286753543585822/image.png 18:57 <+bridge> have you tried updating more often πŸ˜„ ? 18:57 <+bridge> xd i do 18:57 <+bridge> but this is cuz debian released new version 18:57 <+bridge> 12 19:18 <+bridge> ufffffff 19:18 <+bridge> when chairn tells u to update more often 19:18 <+bridge> then u know u live in 1995 19:28 <+bridge> xd 19:28 <+ChillerDragon> watf fred 19:28 <+bridge> fred again? 19:28 <+ChillerDragon> @ChillerDragon u drunk? xd 19:28 <+bridge> what happened? 19:29 <+ChillerDragon> https://github.com/TeeworldsCN/teeworlds.cn/issues/6 19:29 <+ChillerDragon> CHINA repo 19:29 <+ChillerDragon> yes im in how to join 19:30 <+ChillerDragon> https://zillyhuhn.com/cs/.1686936620.png 19:30 <+ChillerDragon> where irc 19:31 <+bridge> im surprised he's has so many packages to upgrade. I thought he would be always up to date for features and security reasons 19:31 <+ChillerDragon> https://zillyhuhn.com/cs/.1686936684.png 19:31 <+ChillerDragon> looks slick and modern 19:31 <+ChillerDragon> teach me frontend 19:31 <+ChillerDragon> also there is a error 19:31 <+bridge> it was unmaintained 19:31 <+bridge> 😬 19:32 <+bridge> http master when through some changes and I couldn't be bothered to update 19:32 <+ChillerDragon> so wats the pinger about 19:32 <+bridge> nothing 19:32 <+bridge> i was bored 19:32 <+ChillerDragon> xd 19:33 <+ChillerDragon> cant blame u 19:33 <+ChillerDragon> i did the same xd 19:33 <+ChillerDragon> https://github.com/ChillerDragon/oy-plz-come-irc 19:33 <+bridge> ye, that's why i was bored 19:34 <+bridge> ye chiller u spam 19:35 <+ChillerDragon> on gh? 19:35 <+bridge> xd 19:35 <+bridge> everywhere 19:35 <+ChillerDragon> yea 19:35 <+ChillerDragon> cant argue with that 19:35 <+bridge> why isn't there a spambot that just ping everyone 19:35 <+ChillerDragon> i get that a lot 19:35 <+ChillerDragon> especially in grenade based gamemodes 19:35 <+bridge> cuz it seems pretty easy to do 19:35 <+ChillerDragon> grenade was made for spam.. 19:35 <+ChillerDragon> fred where? 19:35 <+ChillerDragon> on gh? 19:35 <+ChillerDragon> irc? 19:35 <+ChillerDragon> tw? 19:35 <+ChillerDragon> dc? 19:36 <+bridge> sadly the cool commands were banned 19:36 <+bridge> !rust ;~; 19:36 <+ChillerDragon> !rip 19:36 <+bridge> !ping 19:36 < chillerbot1> pong 19:36 <+bridge> 🀩 19:36 <+ChillerDragon> ! 19:36 <+bridge> gh 19:38 <+ChillerDragon> i am in general amazed about the lack of trol/ads/malware/spam/nsfw on github 19:38 <+bridge> tru 19:38 <+bridge> u basically the only one yet 19:39 <+bridge> 😬 19:39 <+ChillerDragon> gh does some auto banning and so one 19:39 <+ChillerDragon> but its suddle that most people never notice it 19:39 <+ChillerDragon> i my self got like 5 gh accs blocked but im a edgy user so thats fair 19:39 <+ChillerDragon> but repo and org maintainers barley have to moderate 19:39 <+ChillerDragon> there are no dick picks on the linux kernel commits comment section 19:40 <+bridge> why am i not surprised at all 19:40 <+ChillerDragon> there is barley any shady download this tool links and so on 19:40 <+ChillerDragon> i am kinda impressed and confused by the lack of bots 19:41 <+bridge> <_voxeldoesart> im gonna start asking ddnet pros what type of new weapon they would want to enhance gameplay 19:41 <+bridge> <_voxeldoesart> because i honestly think ddnet is due for an actual gameplay update 19:41 <+ChillerDragon> oh no 19:42 <+ChillerDragon> imo we should remove tune zones, solo tiles, draggers, tele guns and all the other bloat 19:42 <+bridge> make a new game please 19:42 <+bridge> stop modding and start making money off your work 19:44 <+ChillerDragon> quit jobs and start playing instead of coding 19:44 <+bridge> <_voxeldoesart> i can not start anything from scratch for the life of me 19:44 <+ChillerDragon> money isnt real 19:44 <+bridge> i agree 19:44 <+bridge> <_voxeldoesart> besides ddnet is fun 19:45 <+bridge> you know you can fork ddnet and make a new game and sell it right? 19:45 <+bridge> <_voxeldoesart> i did fork it 19:45 <+bridge> <_voxeldoesart> how else do i do prs 19:45 <+bridge> very funny 19:55 <+ChillerDragon> yea you dont need many changes to resell 19:55 <+ChillerDragon> in fact i sell hard copies of ddnet cds to local elementary schools without any modidications 19:55 <+bridge> i think the only condition is like, don't use the name and serve the license file? 19:55 <+ChillerDragon> opsi 19:56 <+ChillerDragon> but i got lawyer jopsti on my side so i am safe 19:56 <+bridge> !ping 19:56 < chillerbot1> pong 19:56 <+bridge> how old are you chiller 19:57 <+ChillerDragon> 24 19:57 <+bridge> you sounded older 19:57 <+ChillerDragon> ?xd 19:57 <+ChillerDragon> nobody ever 19:57 <+ChillerDragon> where 19:57 <+bridge> didn't you voice messaged me 19:57 <+ChillerDragon> you probably confused me xd 19:57 <+ChillerDragon> irc is yet to add voice messages 19:57 <+bridge> wire 19:58 <+bridge> tapper 19:58 <+ChillerDragon> i got no wire history on this device 19:58 <+ChillerDragon> wire moment 19:58 <+ChillerDragon> https://www.youtube.com/watch?v=D0tpwp2QN6A 19:58 <+ChillerDragon> here voice leak 19:58 <+bridge> i deleted wire as well 19:59 <+bridge> anyway you were on a bike so you voice messaged me instead of typing, and you fell and hit your head and possibly lost your memory 19:59 <+ChillerDragon> sounds like something i would do 19:59 <+ChillerDragon> i think i remember 19:59 <+bridge> no you don't 19:59 <+ChillerDragon> xd 20:00 <+bridge> never heard such accent but I liked it 20:00 <+ChillerDragon> its german 20:00 <+ChillerDragon> its like top10 most common accents 20:00 <+bridge> i know that. never heard a german irl 20:01 <+ChillerDragon> you can do that on big ddnet meetup 20:02 <+ChillerDragon> come travel to europe we do some BBQ in jupstis big garden 20:02 <+bridge> i am a chinese goverment sponsored personel 20:02 <+bridge> i can't travel 20:02 <+bridge> i've only heard indian british scottish chinese and japanese before 20:02 <+ChillerDragon> i kinda assume you would say that 20:02 <+ChillerDragon> dw we all come to china 20:02 <+ChillerDragon> ez 20:02 <+bridge> i'm still waiting Learath to come 20:02 <+ChillerDragon> he planned to do so? 20:03 <+bridge> idk, he might 20:03 <+ChillerDragon> XXLTomate: u here? 20:03 <+bridge> Are you being ungrateful to premier Xi? 20:03 <+bridge> i'd take him out for chinese bbq 20:03 <+bridge> I would love to go to china one day 20:03 <+ChillerDragon> yikes political lerato 20:03 <+ChillerDragon> fstd_: yo? 20:03 <+ChillerDragon> irc full of lurkers 20:03 <+ChillerDragon> fstd: ! 20:04 <+ChillerDragon> eeeee: ! 20:04 <+bridge> why are you needlessly hiliting people? do you have no irc manners? 20:04 <+bridge> oh have I told you guys i have a very good friend (chinese) that is in germany right now 20:04 <+ChillerDragon> no i do not have irc manners 20:04 <+bridge> bruh 20:05 <+ChillerDragon> @ST-Chara? 20:05 <+bridge> Thank god, what was that name? πŸ˜„ 20:05 <+ChillerDragon> https://github.com/ST-Chara 20:06 <+bridge> what name 20:06 <+ChillerDragon> top3 poggest chinese tw githubbers 20:06 <@heinrich5991> ChillerDragon: wanna see me make XXLTomate disappear? :P 20:06 <+ChillerDragon> woetfek! 20:06 <+bridge> Your display name on discord 20:06 <+ChillerDragon> nonono 20:06 <+ChillerDragon> heinrich5991: dont u dare abuse 20:06 <+ChillerDragon> heinrich5991: i want you make him appear and say hi 20:06 <+bridge> someone said it has to be over 9000 so i made it over 9000 20:07 * ChillerDragon UwU ryowo 20:07 <+bridge> > Cute girl wear pink clothes walk on the floor~ 20:07 <+bridge> who is this even? 20:07 <+bridge> rust is blazingly fast 20:07 <+bridge> fearless concurrency 20:07 <+ChillerDragon> lerato xd 20:07 <+bridge> I still fear concurrency 20:07 <+bridge> @FlowerFell-Sans i believe this guy 20:07 <+ChillerDragon> i fear currency 20:07 <+bridge> is ST-Chara 20:07 <+bridge> i saw this st chara somewhere 20:07 <+ChillerDragon> he famous githubber 20:07 <+bridge> or I remembered it wrong 20:08 <+bridge> dont trust the anime girls pfps 20:08 <+bridge> i don't like him 20:08 <+bridge> anyway 20:08 <+ChillerDragon> like u ryo xd 20:08 <+bridge> xd 20:08 <+bridge> yes 20:08 <+ChillerDragon> he is all over my gh feed 20:08 <+ChillerDragon> like you 20:08 <+bridge> dude i was on there like one time 20:08 <+bridge> cuz u only look at gh all day 20:08 <+bridge> no life 20:08 <+ChillerDragon> ikr 20:08 <+ChillerDragon> i use gh for you page more than average 12yo uses tiktok for u page 20:08 <+bridge> ~~at least switch to gitlab or something non-microsoft~~ 20:09 <+ChillerDragon> gitlab bad ui 20:09 <+ChillerDragon> but microsoft is on a good way to make their ui even worse 20:09 <+ChillerDragon> with every update 20:09 <+bridge> someone from china follows me 20:09 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1119327893084962997/image.png 20:09 <+bridge> well she follows 1.2k ppl 20:09 <+bridge> so i dont feel special 20:09 <+ChillerDragon> :robot: 20:09 <+bridge> Ant Group 20:09 <+bridge> tho 20:09 <+bridge> https://tenor.com/view/vegeta-dragon-ball-z-unlimited-power-over9000-power-level-gif-12316102 20:09 <+ChillerDragon> wat those are actually common 20:09 <+bridge> that's literally alibaba 20:09 <+ChillerDragon> the mass follows 20:10 <+ChillerDragon> thats a thing on github 20:10 <+bridge> someone from microsoft actually follows me 20:10 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1119328069929402498/image.png 20:10 <+ChillerDragon> flex 20:10 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1119328127584325842/image.png 20:10 <+bridge> no one follows me 20:10 <+ChillerDragon> bs fred 20:10 <+bridge> fred i follow if u follow 20:10 <+bridge> followback 20:10 <+bridge> trade 20:10 <+bridge> 1on1 20:10 <+bridge> have i not 20:10 <+ChillerDragon> xd 20:10 <+bridge> 1v1 20:10 <+bridge> idk 20:11 <+bridge> <_voxeldoesart> i wanna make my fork thing now but im at work and i know im gonna laze off when i get home 20:11 <+ChillerDragon> fred u like github famous 20:11 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1119328368450617424/image.png 20:11 <+ChillerDragon> xd 20:11 <+bridge> Anime pfp is never to be trusted except for software engineering 20:11 <+bridge> @ryozuki done 20:11 <+bridge> anime pfps produce amazing software 20:11 <+ChillerDragon> also github light mode 20:11 <+bridge> :POGGIES: 20:11 <+ChillerDragon> masterrace 20:11 <+bridge> followed 20:12 <+ChillerDragon> who needs ms following u 20:12 <+ChillerDragon> when you have this 20:12 <+ChillerDragon> https://zillyhuhn.com/cs/.1686939141.png 20:12 <+ChillerDragon> axaxaxax 20:13 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1119328849671503903/image_480.png 20:13 <+bridge> @learath2 20:13 <+ChillerDragon> xd 20:13 <+ChillerDragon> better than ferris 20:13 <+bridge> proof of Krixx forked from @ryozuki 20:13 <+bridge> i wanna make a CHIP-8 emulator with vulkan to display 20:13 <+bridge> https://tobiasvl.github.io/blog/write-a-chip-8-emulator/ 20:14 <+bridge> idk why writing emulators is always fun 20:14 <+ChillerDragon> OMg 20:14 <+ChillerDragon> heinrich5991: 20:14 <+ChillerDragon> did u!?= 20:14 <@heinrich5991> yes 20:14 <+ChillerDragon> how could you 20:14 <+ChillerDragon> why 20:14 < Ryozuki> what did he 20:14 <@heinrich5991> it took some minutes though, figuring it out 20:14 <+ChillerDragon> he banned poor XXLTomate 20:14 <+ChillerDragon> abuse 20:14 <+bridge> but why 20:14 < Ryozuki> from where 20:15 <+bridge> did you get a webhook just now? 20:15 <+ChillerDragon> irc 20:15 <@heinrich5991> I didn't ban anyone 20:15 <+ChillerDragon> banhammer5991 20:15 <@heinrich5991> XXLTomate left 20:15 <+ChillerDragon> sure sure xd 20:15 <+ChillerDragon> gaslighting 20:15 < Ryozuki> oh i have leave messages filtered 20:15 < Ryozuki> unless they talk 20:15 <+bridge> so xxltomato was heinrich 20:15 <+bridge> heinrichs spy 20:15 <+bridge> cuz i was about to say that i don't like the fact that everyone is talking under Chiller's name 20:15 <+ChillerDragon> no xxl was og tw player who just went afk for a sec 20:15 <@heinrich5991> XXLTomate used my IRC bouncer 20:15 <+ChillerDragon> and heinrich abused 20:15 <+bridge> do it with dbt, more fun πŸ™‚ 20:15 <+ChillerDragon> to ban him 20:15 <+bridge> whats dbt 20:16 <+ChillerDragon> lol 20:16 <+bridge> i like rust 20:16 <+bridge> dynamic binary translation 20:16 <@heinrich5991> he last connected 2018 20:16 <+ChillerDragon> sad 20:16 <@heinrich5991> so I figured I could disable the account 20:16 <+bridge> probably possible with rust 20:16 <+ChillerDragon> rip tomato 20:16 <+ChillerDragon> any more names you bouncin? 20:16 <+bridge> also why is irc heinrich seems happier than discord heinrich 20:16 <+bridge> omg 20:16 <+ChillerDragon> try it 20:16 <+bridge> you mmap a region with execute access, you write translated code there, and then you jump into it πŸ˜‰ 20:16 <+ChillerDragon> irc boosts your mood 20:16 <+ChillerDragon> discord is poison for the soul 20:16 <+bridge> @chairn i can do a binary translation to native with llvm? 20:17 <+bridge> probs fun indeed 20:17 <+bridge> thats a dope idea 20:17 <+bridge> bcs the discord ppl here are all toxic af 20:17 <+bridge> probably involves some complexity for rust because it's unsafe by nature 20:17 <+bridge> i just write a llvm frontend 20:17 <+bridge> for chip 20:17 <+bridge> is that why you are still here? 20:17 <+ChillerDragon> jupsti but all heinrich got since he joined irc is flame from me xd 20:17 <+bridge> yes, im the toxicity king 20:17 <+bridge> fun 20:17 <+bridge> its because irc is superior 20:17 <+bridge> its simplicity sparks joy 20:18 <+bridge> oh boy it's 2:17 now 20:18 <+bridge> https://tenor.com/view/marie-kondo-cute-gif-18021464 20:18 <+bridge> sleep time 20:18 <+bridge> xD 20:18 <+bridge> https://github.com/KireinaHoro/khemu 20:18 <+bridge> chinese student 20:18 <+bridge> and he uses llvm 20:18 <@heinrich5991> Botox, erd and Landil 20:18 <+bridge> I took a melatonin and I'm kinda gloomy now but still don't really want to sleep 20:19 <+bridge> yeye 20:19 <+bridge> same idea 20:19 <@heinrich5991> but I deactivated their accounts earlier already 20:19 <+bridge> > LLVM backend (partial) 20:19 <+bridge> i wanna do this 20:19 <+ChillerDragon> erbeere? 20:19 <+bridge> but chip-8 has graphics 20:19 <@heinrich5991> yes 20:19 <+ChillerDragon> rip landil best artist 20:19 <+bridge> that can be complicated 20:19 <+ChillerDragon> @voxel u know landil? 20:19 <+bridge> failed ping 20:19 <+ChillerDragon> erbeere was the leading map libber before patiga right? 20:20 <+bridge> try capital V 20:20 <@heinrich5991> was tml his creation? 20:20 <+ChillerDragon> i think 20:20 <+ChillerDragon> or am i stupid? 20:20 <+bridge> you can look at gameboy emulator to see how they did it 20:20 <@heinrich5991> https://github.com/erdbeere/tml/ 20:20 <@heinrich5991> apparently it was 20:20 <+ChillerDragon> east forked tml from erbeere 20:20 <+bridge> usually, it's just some mmeory region that are read every frame to draw 20:20 <+ChillerDragon> and ddnet forked east xd 20:23 <+bridge> hmm 20:23 <+bridge> did google just sold google domains after the zip thing 20:30 <+bridge> i should sleep 20:31 <+bridge> the night just started 20:34 <+bridge> ill look into it 20:34 <+bridge> @chairn did u see my rust stack based hashmap? xd 20:34 <+bridge> i did, but im no rust code reader 20:36 <+bridge> @ChillerDragon it got in !!! https://github.com/teeworlds/teeworlds/pull/2846 20:36 <+bridge> wtf 20:36 <+bridge> oy is undead 20:38 <+bridge> damn, you're not on teeworlds discord? 20:38 <+bridge> he's back since 2 or 3 days 20:38 <+bridge> and he's gone in 2 or 3 days 20:38 <+bridge> dont get your hopes high 20:38 <+bridge> i don't have any hope, so i guess it's fine 20:38 <+bridge> xd 20:38 <+bridge> robyte now ddnet admin 20:38 <+bridge> 😬 20:39 <+bridge> https://github.com/edg-l/smolmap 20:39 <+bridge> i told oy, robyte should maintain tw. 20:39 <+bridge> https://github.com/edg-l/smolmap s 20:39 <+bridge> xd 20:40 <+bridge> rust unworthy license 20:40 <+bridge> 😏 20:40 <+bridge> no 20:40 <+bridge> best license 20:40 <+bridge> it ensures user freedom 20:41 <+bridge> copyright 20:41 <+bridge> we had this discussion already 20:41 <+bridge> https://www.gnu.org/philosophy/pragmatic.en.html 20:41 <+bridge> they worked around with kurosio's mods afair 20:41 <+bridge> > My work on free software is motivated by an idealistic goal: spreading freedom and cooperation. I want to encourage free software to spread, replacing proprietary software that forbids cooperation, and thus make our society better. 20:41 <+bridge> > 20:41 <+bridge> > That's the basic reason why the GNU General Public License is written the way it isβ€”as a copyleft. All code added to a GPL-covered program must be free software, even if it is put in a separate file. I make my code available for use in free software, and not for use in proprietary software, in order to encourage other people who write software to make it free as well. I figure that since proprietary software developers use copyright to stop us 20:41 <+bridge> idk what afair 20:42 <+bridge> and who is kuro xd 20:42 <+bridge> mrpg/azataz mods maintainer 20:42 <+bridge> also afair is "as far as i remember" 20:42 <+bridge> more buzzwords :justatest: 20:42 <+bridge> afair means an afair 20:42 <+bridge> u cheated ur gf 20:42 <+bridge> xdxd 20:43 <+bridge> did you play any non-ddrace mods xd 20:43 <+bridge> but its quite new 20:43 <+bridge> "quite" 20:43 <+bridge> @Jupeyy_Keks interpret this text as if i said it 20:43 <+bridge> it fits my idealism 20:43 <+bridge> i call the therapist 20:43 <+bridge> > since proprietary software developers use copyright to stop us from sharing, we cooperators can use copyright to give other cooperators an advantage of their own: they can use our code. 20:43 <+bridge> that's affair with 2 f 20:43 <+bridge> oh 20:44 <+bridge> xd 20:44 <+bridge> the real thing is, ddnet using the current license wont ensure it not being used as propietary software 20:44 <+bridge> and thats SAD 20:44 <+bridge> GPL protects us from that devil 20:45 <+bridge> :deviltee: 20:45 <+bridge> GPL plays the same game, even if its an angel 20:46 <+bridge> GPL works best when used on top quality software, the one that ICHES companies to say "I WISH THIS WAS NOT GPL" thats when u win, because u have a small possiblity that they open source their stuff too (it happened) 20:46 <+bridge> it still plays believing in christianity 20:46 <+bridge> xd 20:47 <+bridge> @Jupeyy_Keks this reminds me of democracy, its integrated as in "being the best" that even thinking alternatives may be seen as inherently evil 20:47 <+bridge> so u gotta fight within the system 20:48 <+bridge> that's not true 20:48 <+bridge> first, there are dozens of democracy forms and election systems 20:48 <+bridge> secondly, we haven't tried all possible systems 20:48 <+bridge> yeah, so better trust the CC0 written AI to take over the word 20:49 <+bridge> hmm i guess i mean the most common democracy form 20:49 <+bridge> yeah, so better trust the CC0 written AI to take over the world 20:49 <+bridge> voting a party 20:49 <+bridge> delegating ur vote kinda 20:49 <+bridge> which is the worst form of democracy as we can see it nowadays 20:49 <+bridge> but the most used 20:49 <+bridge> xd 20:49 <+bridge> and the problem is 20:49 <+bridge> the only ones u can vote 20:49 <+bridge> like it already 20:50 <+bridge> cant change a system where u depend in people from the system itself 20:50 <+bridge> REVOLUTION TIME 20:50 <+bridge> idk how to say it 20:50 <+bridge> IM THE FIRST TO JOIN 20:50 <+bridge> xd 20:50 <+bridge> rust revolution 20:50 <+bridge> lets hunt down the C 20:51 <+bridge> :justatest: 20:51 <+bridge> where guillotine reaction? 21:38 <+ChillerDragon> @chairn WOAH pog eval if cmd 21:39 <+ChillerDragon> sadly ddnet declined 21:39 <+bridge> Who needs this xd 21:39 <+ChillerDragon> i do 21:39 <+bridge> I bet u can abuse it for chests 21:39 <+ChillerDragon> for cross client compatible configs 21:39 <+bridge> Cheats 21:40 <+bridge> we gotta avoid features that are used only by a handful number of people. I believe the best example for this is Thunderbird 21:40 <+ChillerDragon> making sure i can call ``say_self`` or ``echo`` depending on availability etc 21:40 <+bridge> lots of developer added their own features and then spaghetti code 21:40 <+ChillerDragon> vanilla and ddnet got same cmds and settings under diff names 22:35 <+bridge> <_voxeldoesart> @/heinri 22:41 <+bridge> i wish god existed 22:41 <+bridge> so i could ask him 22:41 <+bridge> to convert all c++ code to rust 22:41 <+bridge> thanks for coming to my ted talk 22:43 <+bridge> <_voxeldoesart> and then no one code ever except for people who know how to use rust 22:44 <+bridge> <_voxeldoesart> software dev 100 23:54 <+bridge> i just spent 35 minutes to and 50 minutes from my grandma’s just to take out the dog 23:55 <+bridge> the highway system may be flawed 23:55 <+bridge> <_voxeldoesart> america? 23:55 <+bridge> <_voxeldoesart> o nvm you're not 23:57 <+bridge> huh 23:57 <+bridge> we play on the same servers brah 23:57 <+bridge> <_voxeldoesart> whats the flag in your bio for then 23:58 <+bridge> luxembourg is a neat place with a neat flag 23:58 <+bridge> <_voxeldoesart> ah 23:58 <+bridge> I appreciate the flag