00:22 < bridge> https://docs.google.com/spreadsheets/d/1o-aLpWK40SrlBuZZrZV_w4heL96klRNAImlApOlvmss/edit?usp=sharing 00:23 < bridge> Welp, whoever wants to see my progress on my client, feel free to look around xd 00:23 < bridge> Does someone know if the cl_smooth_spectating_time will be on by default? 00:23 < bridge> Because for me it was, and I really think it a bad idea. 00:23 < bridge> It may be cool for cinematics/videos and stuff, but it just makes the game unplayable in certain situations (spectating t0 while hh/fly for example). 00:23 < bridge> I don't think it's a really great idea to make new players get used to it... 00:24 < bridge> maybe @kebscs you may know? 00:25 < bridge> Teegaley ;0 00:25 < bridge> Teegalay ;0 00:25 < bridge> :justatest: 👍 00:25 < bridge> fixed 00:26 < bridge> add that to your first post 00:26 < bridge> I might share videos via Youtube and only allow links to be visible in the Google Spreadsheet for consistency 00:26 < bridge> in the thread 00:27 < bridge> ah, you did post it there 00:28 < bridge> I somewhat pasted it in the front 00:28 < bridge> anyway, more features will come to the sheet tomorrow 00:28 < bridge> its on by default and only smooth when youre swapping between tees in spectator 00:28 < bridge> so doesnt affect gameplayt 00:28 < bridge> so doesnt affect gameplay 00:29 < bridge> it doesn't affect gameplay for novice players 00:29 < bridge> it makes t0 unplayable for brutal maps 00:30 < bridge> I really don't think it's a great idea to let it on by default. 00:30 < bridge> Like new features that do not change the gameplay are okay, but this one does change it. 00:30 < bridge> i dont see how it changes it 00:33 < bridge> well, I'll give you what are for me the 2 most common scenarios: 00:33 < bridge> 1. you are speedrunning, parts are far away, and you need to spectate your teamate... Oh well. 00:33 < bridge> 2. you are are in t0 doing some hh/fly and want to know how the rest of the team is doing by spectating some specific player. You can't stall in hh/fly anymore. (This one may be only me tho). 00:33 < bridge> 00:33 < bridge> And it overall just slows gameplay. It's not purely visual 00:34 < bridge> makes sense for a noob like me 00:37 < bridge> its 0.3s at most i think, less if theyre closer 00:38 < bridge> can be disabled if thats a difference 08:25 < bridge> does anyone know where is `syscall` function defined in source code :justatest: ? 08:25 < bridge> ``` 08:25 < bridge> // from /usr/include/unistd.h 08:25 < bridge> extern long int syscall (long int __sysno, ...) __THROW; 08:25 < bridge> ``` 08:25 < bridge> does anyone know where is `syscall` function defined in source code :justatest: ? 08:25 < bridge> ```c 08:25 < bridge> // from /usr/include/unistd.h 08:25 < bridge> extern long int syscall (long int __sysno, ...) __THROW; 08:25 < bridge> ``` 08:38 < bridge> Found it 10:19 < bridge> hi developas 10:20 < bridge> hello guy that thinks he is a minion and talks like that 10:20 < bridge> what's on your heart today 10:21 < bridge> new day, new segfault when try to run 5 lines program :saddo: 10:27 < bridge> hi developa that thinks he is from jupiter 10:27 < bridge> bananas 10:30 < bridge> wbu? 10:32 < bridge> I am thinking about random stuff 10:41 < bridge> 🎲 11:18 < bridge> Use google docs as todo list 💀 11:21 < bridge> <01000111g> i will test this this evening. If it is default it should be turned off. I get that its beautiful, but 0.3s is already 10% of freeze time, i need to move my camera instantly too 12:48 < bridge> it wasn't correct after all, in certain cases it flips an expression and instead of `10/5` does `5/10` xd 12:56 < bridge> translate to russ language 12:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/954023931495465030/unknown.png?ex=6700a4c6&is=66ff5346&hm=fc0548635604a0b4da18cc69a38e4c146a7b105780616a1c8daf5809b4dec28c& 13:03 < bridge> What about adding sending the client language to the server? Is there any problems why this still doesnt exist? 13:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291719367331020811/ics9v7shjlsd1.png?ex=67011ee8&is=66ffcd68&hm=9dc15e88533e4de56831cb4be7f0c152233f6621c932d196f369caeb0f512800& 13:11 < bridge> linux release 13:15 < bridge> :poggers2: :poggers2: 13:54 < bridge> why do you need that 13:55 < bridge> hacky workaround: check player's flag 13:56 < bridge> hacky workaround: add /language 14:00 < bridge> Useful for server localizations 14:01 < bridge> There is an issue for it on github. We basically want it the other way around. The server sends just a placeholder and the client displays it in their own languag 14:01 < bridge> There is an issue for it on github. We basically want it the other way around. The server sends just a placeholder and the client displays it in their own language 14:02 < bridge> k, thanks for reply 14:03 < bridge> But why not the client send its language? It would be useful for modifications 14:11 < bridge> you can do it manually + since ddnet doesn't have its own implementation i guess you need to provide one to move further 14:11 < bridge> can anyobe give a good sound for ddnet 14:12 < bridge> placeholder? 14:15 < bridge> i can use ASN, but it would be nice if there was language sent by client 14:17 < bridge> i can use ASN for automatic language detection, but it would be nice if there was language sent by client 14:17 < bridge> why not to use good old /language xd 14:17 < bridge> also you need to support older clients i believe, you will need to handle it anyway 14:17 < bridge> New players dont know about this command 14:18 < bridge> I dont think it's a big problem 14:18 < bridge> broadcast it as you do with /register and /login lol 14:19 < bridge> id less be annoyed with entry broadcast for /language 14:19 < bridge> still some problems with it 14:20 < bridge> what i said it's just an idea 14:20 < bridge> Something like `{{server.join_team%Learath2%60}}` which the client would show as `Learath2 has joined team 60` 14:20 < bridge> its good idea, it was discussed even, i thought you need a solution in first place 14:20 < bridge> my bad 14:20 < bridge> wtf xd 14:20 < bridge> ehm, what about mods? 14:20 < bridge> :brownbear: 14:21 < bridge> should server provide placeholder list and all the languages supported 14:21 < bridge> Or whatever other format you like. I'm just thinking out loud 14:22 < bridge> i'd not send it as string at all, but as proper events. 14:22 < bridge> 14:22 < bridge> But anyway, i think we could send the client language id 14:22 < bridge> doesn't sound too bad 14:22 < bridge> Don't think it was ever considered. Check out the issue, it's been years, since these were discussed 14:22 < bridge> can't satisfy all needs anyway 14:24 < bridge> To be fair, a lot of the events already exist anyway. Those could be moved over whenever, but every single one you change from a server message to event triggered local message requires a version gate 14:25 < bridge> breaking protocol changes when :justatest: 14:25 < bridge> About language id, I believe it can be sent without issue. Make a github issue about it so we can see if someone comes up with a problem 14:25 < bridge> Yeah it's defs a mess xd 14:26 < bridge> i wonder how 0.7 came up with such structure 14:26 < bridge> I mean never unless we need to? 14:26 < bridge> :feelsbadman: 14:26 < bridge> Why would you break the protocol when we have non-breaking extensions to every part of the protocol? 14:27 < bridge> Just send the client language as `language@ddnet.org` with a 5 characters like `de-de` or some standard 😄 14:27 < bridge> because its already a mess 14:27 < bridge> 0.6 protocol is also mess, but it was small atleast 14:27 < bridge> I must be misunderstanding what you mean by "protocol" 14:28 < bridge> netmsg* 14:28 < bridge> not the way client connects, responds, its all solid 14:28 < bridge> i mean the messages themselves 14:28 < bridge> What is your issue with them anyway? If you were allowed to break anything, what would you break? 14:28 < bridge> map format 14:29 < bridge> <0xfaulty> https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes 14:29 < bridge> I dont want country codes 😄 I want language codes 14:29 < bridge> Like https://en.wikipedia.org/wiki/IETF_language_tag 14:30 < bridge> Countries can have multiple official languages ( Switzerland for example ) 14:33 < bridge> 1. clstartinfo clchangeinfo are self replicating 14:33 < bridge> 2. svextraprojectile is redudant(?) 14:33 < bridge> 3. input is a system message? why? 14:33 < bridge> 4. ready/conready are self replicating 14:33 < bridge> 5. mapdata contains the same crc of map, why? 14:33 < bridge> 6. and another questions that im not able to recall 14:35 < bridge> im not familiar with snap system at all but why it has to be system message and why do they divide in snap and snapsingle xd 14:39 < bridge> Most of these are redundancies left from the past. Is it really worth breaking anything for these? 14:44 < bridge> these redundancies came from 0.5 to 0.6 and from 0.6 to 0.7 14:44 < bridge> although theres still a comment in protocol.h // TODO: fix in 0.6 xd 14:45 < bridge> i didn't check ddnet messages so i can't yap about them right now, i believe it worths to be reviewed at least 14:47 < bridge> They don't block any development is my point. If they were being an issue it would be worth breaking protocol, but there is pretty much nothing we can't do because these exist 14:51 < bridge> its not only about protocol though, even this language packet thing needs to be version gated, only because ddnet should be back compat in all instances 15:11 < bridge> That part is more up to discussion. I just wanted to say the protocol isn't really limiting development 15:38 < bridge> how is your 0.5 port going? :lol: 15:41 < bridge> @alw5 r u a coder btw? 15:41 < bridge> I probably seen you before, but cannot really connect your rn 15:41 < bridge> https://www.ietf.org/rfc/rfc3066.txt is already used in the code to detect the initial language 15:45 < bridge> not a contributor of ddnet 15:46 < bridge> if thats what ur askin 15:46 < bridge> and no to the second one 15:46 < bridge> im new to ddnet 15:48 < bridge> I dunno, but maybe what programming languages you like and stuff like that xd 15:48 < bridge> i know a bit of python js and c++ 15:49 < bridge> havent really made anything cool tho 15:53 < bridge> graphical pros' help needed || @jupeyy_keks @robyt3 ||🥹 15:54 < bridge> with what exactly? 15:54 < bridge> how many fps u have now compared to previously 15:54 < bridge> is_bundled(SSP_BUNDLED "${SSP_LIBRARY}") 15:54 < bridge> if(NOT SSP_BUNDLED) 15:54 < bridge> message(FATAL_ERROR "could not find ssp paths") 15:54 < bridge> how do I metric fps in meny 15:54 < bridge> I am honestly someone that doesn't care about GUI performance too much, if it's not a disaster xd 15:54 < bridge> whaе? 15:54 < bridge> ctrl shift d 15:55 < bridge> I am honestly someone that doesn't care about GUI performance (in menu) too much, if it's not a disaster xd 15:55 < bridge> dropped from 400 to 70 15:55 < bridge> oh uff xd 15:55 < bridge> 💀 15:55 < bridge> in release mode? 15:56 < bridge> oh right, forgot about optimizations, 1 min 16:01 < bridge> ok now its around 320 16:02 < bridge> difference is about 30-40 fps in the end 16:03 < bridge> sounds ok 16:04 < bridge> but maybe finds something during his review or smth 16:07 < bridge> well, it finds all search items in str, stores them in 2 vectors, filters and merges those vectors' items and renders them. all of this in 1 'render frame', this even sounds not very good 16:07 < bridge> but it's the best way I found to do what I wanted 16:09 < bridge> Good afternoon, I would like to know how I can register on the official ddnet forum, I submitted an application several times, but it was not accepted for a long time 16:09 < bridge> https://blog.cloudflare.com/patent-troll-sable-pays-up/ 16:12 < bridge> There is probably a better solution, but as you see the CPU is so fast that it only drops 40 fps. 16:12 < bridge> 16:12 < bridge> It's hard to really guess if your algorithm is bad without properly benchmarking what bottlenecks your new code. 16:15 < bridge> fair enough 16:16 < bridge> https://tenor.com/view/itsover-wojack-gif-4367840179675491690 16:16 < bridge> patents truly suck 16:18 < bridge> go ahead, i am always open for some patent bashing 16:18 < bridge> ah this 😄 16:27 < bridge> @jupeyy_keks 16:27 < bridge> > In the end, Sable agreed to pay Cloudflare $225,000, grant Cloudflare a royalty-free license to its entire patent portfolio, and to dedicate its patents to the public, ensuring that Sable can never again assert them against another company. 16:30 < bridge> they move around money as if it's nothing xd 16:32 < bridge> They picked the wrong company to annoy. You need to go against mid to large sized ones. Not a 27B$ megacorp 16:53 < bridge> https://www.youtube.com/watch?v=dCvB-mhkT0w 16:53 < bridge> cool vid to know rly basics of ecc 17:03 < bridge> fkt 17:03 < bridge> вам всем хана 17:03 < bridge> я вас заминировал 17:03 < bridge> english pls 18:05 < bridge> he mined us 18:05 < bridge> mined like mine like bomb 18:09 < bridge> thanks for banging me 18:39 < bridge> # RU 18:39 < bridge> Уходи, плохой человек. 18:39 < bridge> 18:39 < bridge> # EN 18:39 < bridge> Go away, bad man. 18:51 < bridge> no one plays it anyway, im making it for my own entertainment 18:51 < bridge> $deepl 18:51 < bridge> Hi! Most of us communicate in English. If you’re having trouble with English, use to help you out. 18:52 < bridge> it limits development of mods, not ddnet :P 18:54 < bridge> It's not the protocol that prevents it, it's that you don't control the client much. That's a far more fundamental issue of the teeworlds network architecture in general 18:54 < bridge> Most of the weird workarounds in the code are from a time when we didn't have the most used client either 18:56 < bridge> (e.g. nothing about the protocol is stopping mods from just sending their own `visual-fx@mymod.zhn.org` and nothing about the protocol is stopping us from adding `whatever-weird-feature@netmsg.ddnet.org`) 18:59 < bridge> Maybe this message should be printed in multiple languages xd 19:00 < bridge> <0xdeen> https://cdn.discordapp.com/attachments/293493549758939136/1291807186250367016/qteup0e4tl0c1.png?ex=670170b1&is=67001f31&hm=5b1441b24b649386c9be48c64fecf68d894a9efd5d2ead7d66fd9d0917ea7282& 19:09 < bridge> xDDD 19:10 < bridge> ask murpi 19:10 < bridge> @murpi ^ 19:11 < bridge> probs in russian/french 19:11 < bridge> cuz those 2 are the ones who know less english 19:11 < bridge> from my xp 19:11 < bridge> maybe spanish too :justatest: 19:11 < bridge> we argued about it already, proposed english/turkish/russian text 19:11 < bridge> i guess we dont have many baguettes here 19:12 < bridge> would be cool to have something like $deepl language 19:12 < bridge> like you write $deepl russian and it shows text in russian 19:13 < bridge> I was banned for 1 day, you can unban 19:13 < bridge> https://spectrum.ieee.org/in-memoriam-oct-2024 19:13 < bridge> every single bot command would need to be translated then i guess? 19:13 < bridge> @jupeyy_keks the RAM inventor died today 19:13 < bridge> sadge 19:13 < bridge> #✉-create-a-ticket -> #ban-appeal 19:13 < bridge> no why, $deepl is the only language specific command imo 19:14 < bridge> otherwise you need to know english anyway 19:15 < bridge> https://en.wikipedia.org/wiki/Dennard_scaling 19:19 < bridge> good bot 19:19 < bridge> :heartw: 19:25 < bridge> https://unix.stackexchange.com/questions/226716/where-is-the-latest-source-code-of-man-command-for-linux 19:25 < bridge> https://unix.stackexchange.com/questions/405783/why-does-man-print-gimme-gimme-gimme-at-0030 19:26 < bridge> > "Gimme gimme gimme a man after midnight" 19:31 < bridge> this is how you learn english 19:31 < bridge> no need for translation :justatest: 19:38 < bridge> пиздааааааааааааааааааааааааааааа 19:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291819836917284957/GY_S2jpW4AI_i-o.jpg?ex=67017c79&is=67002af9&hm=62f8029969d2c789d8423f3c1b5eb68f8ee916755f4ee054f52624a251dfc37f& 19:50 < bridge> this is how much denuvo costs 19:52 < bridge> just imagine to have this and 1 person who breaks every denuvo patched game 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821713234858035/image.png?ex=67017e39&is=67002cb9&hm=e428a2c126a88b7c175f90a332babfd7d24494db7d43d538c7f635f13305a6f9& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821713515872348/image.png?ex=67017e39&is=67002cb9&hm=22581257b201846f3d47c1627b3e9a882f41f471ac39db2899e3ff2822d3e98a& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821714019450951/image.png?ex=67017e39&is=67002cb9&hm=b4c8fbabb3bfa9b4688908f76f687375382bb38da6bf22138467d8aa4e99f4b2& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821720583405578/image.png?ex=67017e3b&is=67002cbb&hm=bb16246326830ca2c09178f000b3c0c6aa3d659be0ad4f30c12fd58fb1ec6bcf& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821721023680614/image.png?ex=67017e3b&is=67002cbb&hm=3642d2c93bd5e4765ea1e5c87b7b6d5f3da6656515a44e78f6ac743608844ea1& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821721501827164/image.png?ex=67017e3b&is=67002cbb&hm=5e9fef160ceb80d20540de8b9530703625099b5e741c426ff891dcc35010eace& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821721841827872/image.png?ex=67017e3b&is=67002cbb&hm=3e859e18467db1e685a8de69defd88fdfe363fced50da7c76162caf075a1a11f& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821722261262397/image.png?ex=67017e3b&is=67002cbb&hm=c9dfb778302be6dfa0ba5e89bb835b80562d1bbc6841e971033053baaff3b5de& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821722726826006/image.png?ex=67017e3b&is=67002cbb&hm=50d21d714c80e511f788583a2033eb8ce59204f7c9a88cbf6ed829e708d0432d& 19:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291821723175620759/image.png?ex=67017e3b&is=67002cbb&hm=b6de5f8a758770e8f7aff3fe981549dc84fe98bafdba8dea09b0cf1ae53d906c& 20:10 < bridge> @learath2 what do you think of this sparkle particle effect? https://github.com/ddnet/ddnet/pull/9047#issuecomment-2394212268 20:11 < bridge> I like it, looks nice 20:12 < bridge> Cool effect xd 20:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291825266703728730/IMG_20241004_211203.jpg?ex=67018188&is=67003008&hm=97ee25f3da2835329c0e210316704c0baa10d09b5ccf39fa782e0a86e62c9eb6& 20:13 < bridge> Great effect 20:14 < bridge> missingno in ddnet 20:14 < bridge> my missingno is cool too 20:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291825846679507064/image.png?ex=67018212&is=67003092&hm=42ed496aad6c4c427d8bf02dd8e2ea460d1d5f60a82638a39caddcb21b000ada& 20:18 < bridge> is the video broken for you? works fine for me 20:18 < bridge> if i dont pause and move the video cursor around it works for me too 20:19 < bridge> lol 20:23 < bridge> It works for me if i watch from start but if i select time it breaks 20:24 < bridge> lol it does break if you select time 20:24 < bridge> It's a new ui feature 20:27 < bridge> google can't handle their own format 20:28 < bridge> in ff it works 21:27 < bridge> https://en.wikipedia.org/wiki/Birch_and_Swinnerton-Dyer_conjecture 21:27 < bridge> why im reading things i cant understand 21:28 < bridge> @timakro what about spawning particles on the tee and have them go radially outward 21:30 < bridge> @louis.place i tried it. looked bad in my opinion 21:34 < bridge> An effect of alcohol 21:35 < bridge> do u think most ppl who drink read complex math articles 21:35 < bridge> No, it's reserved to nerds. You start to overestimate your capability of understanding 21:35 < bridge> its funny cuz earlier i was learning about eliptic curves 21:36 < bridge> and this article is about a complex problem on these 21:36 < bridge> destiny 21:36 < bridge> I only know that it's one of those conjectures with the prize money 21:39 < bridge> yep 21:43 < bridge> rust help needed 21:43 < bridge> i have not `?Sized` trait that should expose mutable parts of itself 21:45 < bridge> things i tried to use for interior mutability: 21:45 < bridge> 1. `Cell`, doesn't fit since i need to use it immutably too 21:45 < bridge> 2. `RefCell`, doesn't fit since i want to return reference to field of borrowed refcell 21:46 < bridge> show examples 21:46 < bridge> why u have ?sized in first place 21:47 < bridge> what does not ?sized 21:47 < bridge> since ?sized means either sized or unsized 21:47 < bridge> what does "not ?sized" mean 21:47 < bridge> :pepeW: 21:47 < bridge> i if u are delving into the arts of dynamic dispatch 21:47 < bridge> I'm guessing it's an unsized type, but then what is there to mutate? 😵‍💫 21:47 < bridge> learn the concept of object safety in rust 21:48 < bridge> https://doc.rust-lang.org/reference/items/traits.html 21:48 < bridge> i don't have it 21:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291849456035299422/image.png?ex=6701980f&is=6700468f&hm=2e04f5af97bd2e714a52190ce42e734ab5c6782e35c2bd030a5dbc5526409d2a& 21:48 < bridge> i construct dyn trait object that im boxing and want to use 21:48 < bridge> so whats ur problem 21:49 < bridge> since trait doesn't depend on `?Sized` i can't use `&mut Whatever` as return type 21:49 < bridge> ah wait 21:49 < bridge> wtf 21:49 < bridge> can u show me a example method pls 21:49 < bridge> nah wait seems i got jerked by myself 21:50 < bridge> are u making a builder pattern? 21:50 < bridge> i dont see why u couldnt be able to return a &mut dyn X 21:50 < bridge> no, but for whatever reason i got "trait is not object safe" everytime 21:51 < bridge> hehe 21:51 < bridge> the thing i told u 21:51 < bridge> its gone now so i can't even tell you anything 21:52 < bridge> did you remove `Self: Sized`? ^^ 21:52 < bridge> no 21:52 < bridge> i didn't have it 21:52 < bridge> So it magically works, nice 21:52 < bridge> sussy baka 21:52 < bridge> rustc tried to force me to make it Sized, thats why i asked "not ?sized" in first place 21:53 < bridge> where exactly did it force you to have it Sized tho? 21:53 < bridge> wait im getting the same 21:54 < bridge> show the func signature 21:54 < bridge> since i want to exposee &mut S, where S is field of original struct that should implement trait 21:54 < bridge> and i can't do it 21:54 < bridge> thats why i came to using cells 21:54 < bridge> and got stuck on playing with refs 21:55 < bridge> show where u use &mut S 21:55 < bridge> just leak 21:55 < bridge> if u need to use cells u probs doing something bad 21:56 < bridge> wh yu want to expose &mut S 21:56 < bridge> code tells more than 1000 images 21:56 < bridge> 😬 21:56 < bridge> 😬 21:56 < bridge> brb gettign another drink 21:56 < bridge> late for u? 21:57 < bridge> its 20 21:57 < bridge> but i wont go sleep too late 21:57 < bridge> 22* 21:57 < bridge> gotta wake up at 7 :justatest: 21:58 < bridge> to travel to the french 21:58 < bridge> driving 21:58 < bridge> ```rust 21:58 < bridge> struct Abuse { 21:58 < bridge> noby: EpicClonableBigObject 21:58 < bridge> } 21:58 < bridge> 21:58 < bridge> impl Noby for Abuse { 21:58 < bridge> fn noby(& [need mut to expose itself] self) -> &mut EpicClonableBigObject { 21:58 < bridge> &mut self.noby 21:58 < bridge> } 21:58 < bridge> } 21:58 < bridge> 21:58 < bridge> trait Noby { 21:58 < bridge> fn noby(& [no mut since it should be object safe] self) -> &mut EpicClonableBigObject; 21:58 < bridge> }``` 21:58 < bridge> do u know a nice trick 21:58 < bridge> u can impl a trait for a mutable reference directly 21:59 < bridge> ```rust 21:59 < bridge> 21:59 < bridge> impl Noby for &mut Abuse { 21:59 < bridge> fn noby(self) -> &mut EpicClonableBigObject { 21:59 < bridge> &mut self.noby 21:59 < bridge> } 21:59 < bridge> } 21:59 < bridge> ``` 21:59 < bridge> well idk if its correct 21:59 < bridge> fn noby() -> &mut S where Self: Sized 21:59 < bridge> im not in best state kek 21:59 < bridge> true 21:59 < bridge> well, are boxed values sized? 21:59 < bridge> a box is sized yes 21:59 < bridge> it has ptr size 22:00 < bridge> hm, i need to smoke rust docs more 22:00 < bridge> thank you guys 22:00 < bridge> a dyn object is not sized 22:00 < bridge> cuz u cant know it 22:00 < bridge> Box has size of Box, which is usize 22:00 < bridge> Box has size of Box, which is ptr sized 22:01 < bridge> well a dyn T is in reality 2 ptrs 22:01 < bridge> kek 22:01 < bridge> but i recommend u avoid returning mutable references to struct fields 22:01 < bridge> u should seek to structure ur program in another way 22:01 < bridge> to avoid this 22:01 < bridge> ah 22:01 < bridge> dont think like C 22:01 < bridge> am i supposed to be here 22:02 < bridge> for example u can make functions that accept a &mut T where T is the field type 22:02 < bridge> also why my hooks r too heavy 22:02 < bridge> xd 22:02 < bridge> and pass the field to it 22:02 < bridge> as &mut x.y 22:02 < bridge> but tbh i have to admit i dont fully understand why it's not working 22:02 < bridge> no cuz u dont knwo rust 22:02 < bridge> go to #general 22:02 < bridge> watcha saying 22:02 < bridge> how i dont know rust 22:02 < bridge> what is rust 22:02 < bridge> xd 22:02 < bridge> i guess u cant reutrn a reference to a possibly unsized thing 22:02 < bridge> it works if you don't want this trait to object safe and not-`Sized` 22:03 < bridge> to be* 22:03 < bridge> yeah seems `Sized` isn't that strict, i will use it 22:03 < bridge> yeah but his example looked like the type is known 22:03 < bridge> maybe that confused me dunno 22:03 < bridge> ah u mean self 22:03 < bridge> yeah maybe 22:04 < bridge> ```rust 22:04 < bridge> // epnicclonableobject = Vec 22:04 < bridge> 22:04 < bridge> struct Abuse { 22:04 < bridge> noby: Vec 22:04 < bridge> } 22:04 < bridge> 22:04 < bridge> impl Noby for Abuse { 22:04 < bridge> fn noby(&mut self) -> &mut Vec { 22:04 < bridge> &mut self.noby 22:04 < bridge> } 22:04 < bridge> } 22:04 < bridge> 22:04 < bridge> trait Noby { 22:04 < bridge> fn noby(&mut self) -> &mut Vec; 22:04 < bridge> }``` 22:04 < bridge> idk 22:04 < bridge> this compiles 22:04 < bridge> for me 22:04 < bridge> tja 22:04 < bridge> https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6dcf98d2e31a22b81783abfb977615f1 22:04 < bridge> if it wouldnt be shortly before bed time, i'd maybe think about it 22:05 < bridge> bro tomorrow is saturday 22:05 < bridge> party time 22:05 < bridge> rust party 22:05 < bridge> Nice 22:05 < bridge> ok i feel dumb, it works now 22:05 < bridge> sized just requries that when u impl it i guess u cant return another impl trait or dyn 22:06 < bridge> sized just requries that when u impl it i guess u cant return dyn (but u can box it) 22:06 < bridge> can u show what u did 22:06 < bridge> this 22:06 < bridge> lmayo 22:06 < bridge> don't question me, i don't know what happened 22:06 < bridge> xd 22:07 < bridge> jupjap how did you manage to pass rust std to wasm modules? 22:07 < bridge> or you didn't 22:07 < bridge> there are std functions that panic, like creating a thread 22:07 < bridge> since that is sandboxed 22:08 < bridge> I dont pass any std functions to the runtime 22:08 < bridge> core + alloc 22:08 < bridge> but std structs? 22:08 < bridge> alloc is probably handled by the wasm runtime 22:08 < bridge> struct objects are serialized 22:08 < bridge> and then deserialized in wasm 22:09 < bridge> so i don't need any workaround if i simply use anything from std (even net?) inside of code that will compile into wasm? 22:09 < bridge> network is sandboxed ofc 22:09 < bridge> just imagine that you can use anything that isnt kernel 22:10 < bridge> sorry, i didn't manage to find any relatable info not from 2019-2020 22:10 < bridge> add no_str 22:10 < bridge> no_std 22:10 < bridge> https://docs.rust-embedded.org/book/intro/no-std.html+ 22:10 < bridge> https://docs.rust-embedded.org/book/intro/no-std.html 22:10 < bridge> https://docs.rust-embedded.org/book/intro/no-std.html 22:11 < bridge> you can use lot of std stuff tho, since allocations work 22:11 < bridge> memory allocations 22:12 < bridge> async works too, but only single threaded and with a different runtime than tokio. 22:12 < bridge> 22:12 < bridge> So i abstracted that away to be easy to use in wasm modules 22:12 < bridge> for the rendering module u can even read files from file system, but physics can't 22:14 < bridge> The only really unsafe thing you can do is communicate with a database, if one is enabled in the config. 22:14 < bridge> 22:14 < bridge> Sadly I don't see any real chance to sandbox this in a sane way. 22:14 < bridge> 22:14 < bridge> Guess the best is to create a database user with as few permissions as possible 22:14 < bridge> i also dunno what kind of hacks mysql allows. i know some database engines allow you to write files etc. quite powerful xd 22:17 < bridge> im talking about wasm in general tho 22:17 < bridge> @gerdoe to say it differently. by default everything is sandboxed, but you can add e.g. WASI to your runtime and it would allow all std stuff, even net & fs. 22:17 < bridge> 22:17 < bridge> WASI then tries to make it as safe as possible 22:18 < bridge> yeah the idea for wasm in internet browsers is that you can compile anything to wasm and it just works 22:19 < bridge> e.g. browsers have no udp. that is a problem that wasm can't solve 22:19 < bridge> yeah wasi is the only way to go with ig, but arent specifications for wasi-io, wasi-whatever are still at phases 1-3? 22:19 < bridge> i guess they are still preview yeah 22:20 < bridge> but so or so, it depends on the wasm host 22:20 < bridge> Do you plan to use WASM for anything or what? 22:20 < bridge> rust-rust 22:20 < bridge> both as host and guest 22:21 < bridge> and what would be your use case? xdd 22:21 < bridge> exactly same as yours, but only for server-side and teeworlds compatible 22:21 < bridge> ah 22:22 < bridge> yeah that is cool indeed 22:22 < bridge> actually it would be cool to know how wasm works at all, i had many projects that needed modules/addons 22:22 < bridge> well i can tell you that there are rust runtimes that expose WASI already 22:22 < bridge> all of them died because i tried to stick with unstable rust abi, implementing c api, doing lua, etc 22:22 < bridge> it's just not API stable 22:23 < bridge> wasmer 22:23 < bridge> have you seen my wasm video i posted in the hub 22:23 < bridge> phub? 22:23 < bridge> :justatest: 22:23 < bridge> :poggers2: 22:23 < bridge> xd 22:23 < bridge> xd 22:24 < bridge> when did u post it kekw 22:25 < bridge> i found also wasmtime, is there any difference? 22:27 < bridge> https://youtu.be/qIioHMY-bYQ?t=1059 22:27 < bridge> 22:27 < bridge> here i quickly show how i did it. 22:27 < bridge> 22:27 < bridge> basically to sum it up: 22:27 < bridge> - i have a interface that is to be implemented 22:27 < bridge> - on host side i call the trait function of the wasm manager which also implements the interface, and it automatically, with a macro, serializes all parameters and results 22:27 < bridge> - on guest i implement it automatically deserializes with the macro and calls the objects trait function 22:28 < bridge> i dont remember and im nto sobre enough rn 22:29 < bridge> i know one of these crates has a compiler 22:29 < bridge> cranelift 22:29 < bridge> awesome 22:29 < bridge> seems its wasmer 22:29 < bridge> uh, seems they finally blocked youtube 22:29 < bridge> i use wasmer as runtime yeah 22:29 < bridge> but cranelift is from byte code aliance 22:29 < bridge> i need to boot up my vless in finland 22:30 < bridge> they also have a rust runtime 22:30 < bridge> but apparently it's slower 22:30 < bridge> and ig i'm too lazy to rewrite the code to check if it's really slower xd 22:30 < bridge> oh wow, does russia block it, or does youtube _have_ to block it xd 22:31 < bridge> russia blocks youtube 22:31 < bridge> tja sucks 22:31 < bridge> rumors say they will block discord too 22:31 < bridge> i welcome you in europe 😏 22:35 < bridge> gg my pc died trying to index all 864 crates from ddpg dependencies 22:35 < bridge> only 864? how outdated is your stand 😬 22:36 < bridge> XD 22:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291861508099276811/image.png?ex=6701a349&is=670051c9&hm=07bf5d4aeabda885977e44105e4948606006a58f69a8804e31703377bf53f9b5& 22:36 < bridge> ok ig not all have to be indexed 22:36 < bridge> true 22:36 < bridge> rust analyzer goes wild 22:37 < bridge> that sux 22:37 < bridge> you mean it's not normal that rust analyzer uses 4GB on idle? 22:37 < bridge> min sys requirements for ddnet: toaster 22:37 < bridge> min sys requirements for compiling ddnet: NASA pc 22:38 < bridge> :justatest: 22:39 < bridge> ah i forgot to install firefox unload tabs extension 22:39 < bridge> this goddamn thing ate up to 11 gbs 22:39 < bridge> do you use no swapfile? 22:40 < bridge> without swap i'd crash like once per day lmao 22:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291862440459632672/image.png?ex=6701a427&is=670052a7&hm=ff0895855dab4e0b47a6d4c9d57d31a8c977b364771c8abf05f72c03717b4894& 22:40 < bridge> 32GB ram are not enough nowadays anymore xD 22:42 < bridge> i do, its 8gb 22:42 < bridge> rust analyzer was going directly in swap 22:42 < bridge> 😬 22:42 < bridge> buy 4 TB HDD and make it your swap 22:42 < bridge> then you can safely open 2 firefox tabs 22:42 < bridge> without crashing 22:43 < bridge> man since learath is go enjoyer he makes no RAM jokes anymore 22:44 < bridge> xd 22:44 < bridge> nah firefox is pretty good with sidebery on 22:45 < bridge> ublock+sidebery+agent switcher+being eu citizen=best browsing experience 22:45 < bridge> they can't block youtube in us xd 22:46 < bridge> I don't write go code to run on my own computer, I don't care how much cloud web5.0 ram my employer pays for 22:55 < bridge> 10 Go (micro) services ~ 1 Java "micro" service. 22:59 < bridge> why do you force push it 😭 22:59 < bridge> tja 23:00 < bridge> gotta wait few months 23:00 < bridge> then i stop doing that 23:02 < bridge> But anyway zhn, to motivate you. Once you solved the sharing memory problem it's gonna be an epyc experience 23:03 < bridge> it magically works, and performs quite good, but watch your RAM footprint xd 23:03 < bridge> I am sadly not at a point yet where I really tested how much RAM overhead that vm has, and how i can minimize it 23:25 < bridge> you can just commit it and squash before epic release 23:25 < bridge> :justatest: 23:25 < bridge> on i can't. bcs privately i use a real commit history 23:27 < bridge> my life in the last 2 years was basically 23:27 < bridge> 23:27 < bridge> git commit with msg u 23:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1291874306720141364/image.png?ex=6701af34&is=67005db4&hm=7de074f15bbf379b109e072b277642119d222e2afa8336dda07cf1052b4b8991& 23:27 < bridge> xddddddd 23:32 < bridge> @gerdoe where is ur repo 23:33 < bridge> which one 23:33 < bridge> for your new project using wasm 23:33 < bridge> its not published 23:33 < bridge> im still polishing the code 23:34 < bridge> also still no 0.7 and ddnet support 23:34 < bridge> i want to add these 23:36 < bridge> so 0.5 only or what? :lol: 23:36 < bridge> no, 0.5 and pure 0.6 23:36 < bridge> ah nice 23:37 < bridge> can't believe you do the reverse chillerdragon 23:37 < bridge> xd 23:37 < bridge> 0.5 was my childhood, it feels too nostalgic to drop it as is 23:38 < bridge> and libtw2 is too good to not use it xd 23:38 < bridge> my childhood was ddpg 23:38 < bridge> nice, maybe it finally gets the use it awaited for so long 23:39 < bridge> that repo exists since i know ddnet code xd 23:40 < bridge> i did remove all the `Warn` though, mercy me oh lord5991 23:41 < bridge> what is that? 23:43 < bridge> some kind of tracing of warnings from the lib code to user 23:43 < bridge> so functions will not panic, but pass you warn object if something goes wrong, but not that bad to panic