00:05 < bridge> i wonder whats going on 00:05 < bridge> will check some day 00:05 < bridge> hopium 00:15 < bridge> https://gstreamer.freedesktop.org/releases/1.22/ 00:15 < bridge> > 33% of GStreamer commits are now in Rust 00:45 < bridge> Hm, I guess the more important percentage would be the amount of code in rust 08:30 < bridge> nice documentation chillerdragon 08:34 < bridge> Sänks \:) 08:34 < bridge> looks nice 08:34 < bridge> if it was for the 0.6 it would be cool to have it on the wiki 08:35 < bridge> style wise, i think u are missing some margins in places, like after tables xd 08:41 < bridge> It is linked on the wiki twice \:D 08:41 < bridge> 08:41 < bridge> Most of the 0.7 protocol is relevant/used in ddnet since it’s so close to 0.6But yea you are right. I sometimes do a Tag after tables and sometimes not. I think I put margin\: 0 on everything. Good catch will probably fix that later thanks! 08:41 < bridge> But yea if I manage to finish one day I’ll continue with 0.6 then ddnet specific extensions 09:04 < bridge> yes, very interesting documentation 🙂 09:07 < bridge> wait for approval, basically 10:03 < bridge> This is a reply to some rust stuff right? 10:03 < bridge> (@heinrich5991) 10:06 < bridge> No. It was a reply to a new dev asking if they need to do anything more on their PR 10:13 <+ChillerDragon> o thank 11:35 < bridge> btw, could you reply pls in PR thread when you have time (https://github.com/ddnet/ddnet/pull/6293) 11:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1068122986068062258/rn_image_picker_lib_temp_f70a2369-c9bf-4f2a-9e2b-260982a82593.jpg 11:59 < bridge> How i can delete this options on my server 12:03 < bridge> In your config file? Maybe? 12:18 < bridge> @Jupeyy_Keks did u check if its not reported or if its the case that its reported using the 0.7 protocol? 12:19 < bridge> the layour changes `if(!Server()->IsSixup(ID))` depending on this 12:19 < bridge> on a per player basis 12:19 < bridge> the layout changes `if(!Server()->IsSixup(ID))` depending on this 12:20 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 12:20 < bridge> 12:20 < bridge> THEN ASK HOW....📥 12:20 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 12:20 < bridge> `if(!m_apPlayers[ID])` there is also this check, which should always pass i guess xd 12:20 < bridge> `if(!m_apPlayers[ID]) return` there is also this check, which should always pass i guess xd 12:20 < bridge> I've no idea. I added it where the other json stuff was parsed.. so I assume that it's already check if it's 0.6 12:21 < bridge> no it doesnt check 12:21 < bridge> Return sounds like it must be continue 12:21 < bridge> u gotta check it urself 12:21 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 12:21 < bridge> 12:21 < bridge> THEN ASK HOW....📥 12:21 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 12:21 < bridge> Mh weird, so it randomly parses 0.6 and 00.7 stuff in the client? 12:21 < bridge> Thought 0.7 registry is a complete new entry 12:22 < bridge> game/server/gamecontext.cpp:4315 for the json creation 12:22 < bridge> go to the autoexec_server.cfg and Search Line Vote Delete This Code In CFG 12:22 < bridge> @Jupeyy_Keks it doesnt randomly parse it, it just that the server reports a json object however it wants to the master 12:22 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives?THEN ASK HOW....📥 12:22 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 12:22 < bridge> (@Jupeyy_Keks) 12:22 < bridge> and the ddnet server parse it 12:22 < bridge> i guess 12:22 < bridge> cc @heinrich5991 12:23 < bridge> u can check if the skin is 0.6 by checking for the existance of the `color_body` key iirc 12:23 < bridge> also a player may be 0.6 and another 0.7 12:23 < bridge> i would just display a default tee for 0.7 12:24 < bridge> for now 12:25 < bridge> another thing may be that the buffer is too small for the data 12:25 < bridge> i havent rly calculated exactly 12:26 < bridge> each player has a buffer of 512 bytes char aExtraPlayerInfo[512]; 12:26 < bridge> total for server info is `16384` 12:27 < bridge> Mh yeah I dunno. If that's the case I'd expect that the master server warns about it 12:27 < bridge> But maybe our impl doesn't. 12:27 < bridge> yeah i would guess the master would reject invalid json 12:27 < bridge> which probs does if it uses serde 12:28 < bridge> anyway, the server is free to report whathever it wants 12:28 < bridge> And then it uses vanilla fetching instead, which obv has no skins? 12:28 < bridge> within a size limit idk which one is rn 12:28 < bridge> idk, i think it fetches with json from the server, and if its invalid its vanilla? 12:29 < bridge> heinrich should know 12:35 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 12:35 < bridge> 12:35 < bridge> THEN ASK HOW....📥 12:35 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 13:32 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 13:32 < bridge> 13:32 < bridge> THEN ASK HOW....📥 13:32 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 15:35 < bridge> ```csharp 15:35 < bridge> Span numbers = stackalloc int[length]; 15:35 < bridge> ``` 15:35 < bridge> till u can stack allocate on c# 15:35 < bridge> i wonder if u can do that in java rn 15:36 < bridge> I don't quite get what you're asking 15:37 < bridge> if the server doesn't provide valid json, the register request is rejected 15:37 < bridge> @heinrich5991 if the server reports invalid json to the master, does it instead fetch using the vanilla protocol 15:37 < bridge> only accidentally 15:37 < bridge> do u have logs of this 15:37 < bridge> specifically from ddnet official servers 15:37 < bridge> if they reported invalid json 15:38 < bridge> would be useful to know if this is the cause 15:38 < bridge> not sure, probably not 15:38 < bridge> the problem is apparentl sometimes skins arent reported 15:38 < bridge> according to jupstar 15:39 < bridge> you can check whether it's vanilla server info 15:39 < bridge> by checking e.g. for the presence of the map sha256 15:39 < bridge> ah yea 15:39 < bridge> you could do that for the historic server info 15:39 < bridge> I should make sure to never request legacy server info for servers registering on https masters 15:58 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives?THEN ASK HOW....📥 15:58 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 15:58 < bridge> (@heinrich5991) 16:03 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 16:03 < bridge> 16:03 < bridge> THEN ASK HOW....📥 16:03 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 16:36 < bridge> Everyone can use /r how can I fix this 16:38 < bridge> https://www.calligrapher.ai/ 16:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1068193249166098573/image.png 16:38 < bridge> this looks rly gud 16:41 < bridge> https://ddnet.org/settingscommands/ `sv_practice 0` in your server config 16:47 < bridge> does someone know a good buffer ringbuffer library for rust? 16:47 < bridge> I want to have a 2048 byte buffer 16:47 < bridge> and read network packets into it 16:47 < bridge> hmm 16:47 < bridge> stack? 16:47 < bridge> and then remove them again and pass them to the application 16:48 < bridge> iirc a vecdeque can do 16:48 < bridge> it seems I can't get a reference to the uninitialized part with vecdeque 16:48 < bridge> which I need for reading from the network 16:49 < bridge> Vecdequeue is a growable Ringbuffer 16:49 < bridge> But I assume u mean static sized 16:49 < bridge> dynamic is fine 16:50 < bridge> but I need access to the uninit parts so I can pass it to a `recv` function 16:50 < bridge> `let read: usize = recv(ringbuffer.uninit_part()); ringbuffer.assume_written(read);` 16:51 < bridge> I suppose I could write it myself if I can't find a library 16:52 < bridge> I also didn't find a multiset like cpp offers 16:52 < bridge> what's a multiset? 16:52 < bridge> ah, hashmap? 16:52 < bridge> A set that allows dublipcate keys 16:52 < bridge> But sorted 16:53 < bridge> hmm what about a vec of maybeuninit that u transmute 16:53 < bridge> or smth 16:53 < bridge> https://doc.rust-lang.org/nightly/std/mem/union.MaybeUninit.html#initializing-an-array-element-by-element 16:53 < bridge> https://doc.rust-lang.org/std/vec/struct.Vec.html#method.spare_capacity_mut 16:53 < bridge> vec allows access to uninitialized parts 16:54 < bridge> and vecdeque not? 16:54 < bridge> not as far as I can see 16:54 < bridge> Saddest 16:55 < bridge> so ima roll my own I guess 16:55 < bridge> Ez 16:56 < bridge> @heinrich5991 doesnt recv accept a writer? 16:56 < bridge> isnt that better 16:56 < bridge> recv usually doesn't accept a writer 16:56 < bridge> I can give u cpp version of u want to port 16:56 < bridge> gimme 16:57 < bridge> In 45 min I'm home 16:57 < bridge> @Ryozuki https://doc.rust-lang.org/std/net/struct.TcpStream.html#method.read-1 16:57 < bridge> Or i give u access to my gitlab 16:57 < bridge> secret jupstar projects? 16:57 < bridge> sign me up 16:58 < bridge> Yes xd 16:58 < bridge> Give me 5min 16:58 < bridge> user is https://gitlab.com/heinrich5991 16:58 < bridge> It's self hosted. I'll pm u 16:59 < bridge> is it necessary to separate proc-macro crates? 17:00 < bridge> like i can't do this in one file 17:00 < bridge> can i? 17:04 < bridge> correct me if im wrong, but once the ringbuffer is filled, u wouldnt get more data 17:04 < bridge> what u trying to make exactly? 17:04 < bridge> u can always have the vecdeque, and a stack array where u recv from and then u push it to the deque 17:06 < bridge> https://github.com/rust-lang/rust/pull/102689 17:06 < bridge> next release 17:11 < bridge> why secret 17:11 < bridge> are u hiding the next gen graphic algorithms? xd 17:12 < bridge> In the past I wrote a game engine 17:12 < bridge> Now I'm free and believe in open source 17:12 < bridge> But it's not educational anyway 17:12 < bridge> Even if I wrote few games xd 17:18 < bridge> But it's i consider it educational anyway 17:19 < bridge> https://blog.rust-lang.org/2023/01/26/Rust-1.67.0.html 17:19 < bridge> But i consider it educational anyway 17:19 < bridge> I hope some nightly features are in xd 17:19 < bridge> I use way to many 17:20 < bridge> std::sync::mpsc implementation updated 17:20 < bridge> 17:20 < bridge> Rust's standard library has had a multi-producer, single-consumer channel since before 1.0, but in this release the implementation is switched out to be based on crossbeam-channel. This release contains no API changes, but the new implementation fixes a number of bugs and improves the performance and maintainability of the implementation. 17:20 < bridge> -- 17:20 < bridge> something unbelievable in the c++ world 17:20 < bridge> Well nowadays it is believable. Bug wg21 would give it a new name 😄 17:21 < bridge> https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-1670-2023-01-26 17:21 < bridge> But it has no API change 17:21 < bridge> So you'd end up with `std::sync::mpsc_ng` or sth 17:21 < bridge> no, but it improves perf 17:21 < bridge> But why should cpp not allow that 17:21 < bridge> ABI 17:21 < bridge> Some C++ containers have complexity requirements in the standard 17:22 < bridge> https://cor3ntin.github.io/posts/abi/ 17:22 < bridge> i remembered this xd 17:22 < bridge> So you are stuck with a specific implementation of unordered_map 😛 17:22 < bridge> But i assume only if u want strict standard? 17:23 < bridge> GCC can wrap their impl in agcc namespace and still link it 17:23 < bridge> Which is what all the compilers implement. There have rarely been intentional departures from the standard 17:23 < bridge> this one seems important for ffi https://github.com/rust-lang/rust/pull/97971/ 17:23 < bridge> was added 17:24 < bridge> Isn't there a GCC standard 17:24 < bridge> The only one I can remember off the top of my head is the SSO until it became allowed 17:24 < bridge> oh look 17:24 < bridge> since field ordering is rust impl defined 17:24 < bridge> they optimized it in this release 17:24 < bridge> https://github.com/rust-lang/rust/pull/102750/ 17:24 < bridge> what else does gnu++17 mean? 17:24 < bridge> Yeah, but they usually extend the standard, they don't really override it 17:24 < bridge> If it's just cpp17 17:25 < bridge> gnu++17 has VLAs like C and a couple other things 17:25 < bridge> I think they also add restrict 17:26 < bridge> > The layout of repr(Rust) types now groups m*2^n-sized fields with equivalently aligned ones. This is intended to be an optimization, but it is also known to increase type sizes in a few cases for the placement of enum tags. As a reminder, the layout of repr(Rust) types is an implementation detail, subject to change. 18:23 < bridge> mhh thats kinda sad imo, i think it would be an easy work around against c++ standard requirements 19:33 < bridge> https://news.ycombinator.com/item?id=34532983 19:33 < bridge> @deen your old company this time :o 19:33 < bridge> not many eu companies laid off but sap did 20:29 < bridge> that's correct 20:29 < bridge> I'm trying to minimize data copies 20:29 <+ChillerDragon> sap bankrupt since deen is not carrying anymore 20:29 < bridge> this introduces more copies which I'm trying to avoid 20:34 < bridge> Why? You should maximize safety 20:34 < bridge> And code prettiness 20:38 < bridge> @heinrich5991 are u writing a quic backend? 20:42 < bridge> https://www.youtube.com/watch?v=MWBfmmg8-Yo 20:42 < bridge> hmm, two traits that we could use for templated mem_zero and mem_copy 🙂 20:43 < bridge> yes 20:44 < bridge> with quinn? 20:44 < bridge> I'm also trying to maintain safety 20:44 < bridge> I decided to try quiche 20:44 < bridge> mh ok, i used quinn 20:45 < bridge> what were your considerations on which library to choose 20:45 < bridge> ? 20:45 < bridge> i guess tokio integration? i read some stackoverflow or reddit 20:45 < bridge> cant remember 20:46 < bridge> is quiche pure rust? 20:46 < bridge> afaict, none of the libraries were pure-rust, unfortunately 20:47 < bridge> i think quinn is (at least for compiling) 20:47 < bridge> "Quinn is a pure-rust, async-compatible implementation of the IETF QUIC transport protocol." 20:49 < bridge> only thing i still dislike is tokio not offering a condition variable xD 20:49 < bridge> 20:49 < bridge> rest was okish i guess 20:49 < bridge> 20:49 < bridge> i also use tokio for async file io 20:49 < bridge> i think u need to roll ur own ringbuffer impl 20:49 < bridge> it depends on `ring`, which is not pure-rust 20:50 < bridge> the good thing is that u cannot mix async with normal code, so u kinda force to use async io 20:50 < bridge> the good thing is, u can maintain code prettyness and safety thanks to rust encapsulation of unsafety cc @Learath2 😏 20:50 < bridge> is it not? 20:50 < bridge> i know it has some assembly 20:50 < bridge> yep 20:50 < bridge> but everything uses ring iirc 20:50 < bridge> rustls does right 20:50 < bridge> "Pluggable cryptography, with a standard implementation backed by rustls and ring" 20:50 < bridge> u can choose apparently 20:51 < bridge> i used the rustls from their example 20:51 < bridge> > ring exposes a Rust API and is written in a hybrid of Rust, C, and assembly language. 20:51 < bridge> ring is audited tho btw 20:51 < bridge> I don't see other options 20:51 < bridge> why did they mix c there tho 20:51 < bridge> oh maybe its cuz its a port from something old? 20:51 < bridge> idk 20:51 < bridge> yes, openssl 20:51 < bridge> → boringssl 20:51 < bridge> → ring 20:52 < bridge> there is a dalek thing in rust 20:52 < bridge> i find it pretty funny 20:52 < bridge> because openssl has good and fast implementations of crypto primitives 20:52 < bridge> and awesome 20:52 < bridge> im a doctor who faan 20:52 < bridge> https://dalek.rs/ 20:52 < bridge> (written in perl, which generates assembly code, **I heard**) 20:53 < bridge> https://github.com/dalek-cryptography 20:53 < bridge> its awesome 20:53 < bridge> what do i need to search for in the symbols? 20:53 < bridge> to check if its linked with my project 20:53 < bridge> > dalek-cryptography is a collection of libraries providing safe, mid-level APIs for cryptographic primitives, aimed at making it faster and easier to implement cryptographic protocols such as key agreement, signatures, anonymous credentials, range proofs, and zero-knowledge proof systems. 20:53 < bridge> > 20:53 < bridge> > Other libraries aim to provide well-designed APIs for protocol users, but do not aim to provide well-designed API for protocol implementers. The result is that implementing new protocols often requires using unsafe internal APIs which were never intended for reuse. 20:53 < bridge> check Cargo.lock, search for `name = "ring"` 20:54 < bridge> try cargo tree 20:54 < bridge> but if its unused its dead code isnt it 20:54 < bridge> cargp tree | grep "ring" 20:54 < bridge> i'd prefer to check stripped version 20:55 < bridge> idk how 20:57 < bridge> ``` 20:57 < bridge> _ZN85_$LT$ring..io..writer..LengthMeasurement$u20$as$u20$ring..io..writer..Accumulator$GT$10write_byte17h5028fc7b2b977ff8E 20:57 < bridge> 00000000000fc4e0 l F .text 0000000000000004 _ZN85_$LT$ring..io..writer..LengthMeasurement$u20$as$u20$ring..io..writer..Accumulator$GT$11write_bytes17h0a8d19af71ae01d3E 20:57 < bridge> 00000000000fc4f0 l F .text 0000000000000035 _ZN74_$LT$ring..io..writer..Writer$u20$as$u20$ring..io..writer..Accumulator$GT$10write_byte17ha0b1ab21820904a2E 20:57 < bridge> 00000000000fc530 l F .text 0000000000000060 _ZN74_$LT$ring..io..writer..Writer$u20$as$u20$ring..io..writer..Accumulator$GT$11write_bytes17hddfc4814984ae122E 20:58 < bridge> 0000000000320018 l O .data 0000000000000020 _ZN4ring4rand7urandom4fill4FILE17hefd278b0303a3e1cE 20:58 < bridge> 00000000000fcac0 l F .text 0000000000000579 _ZN4ring3rsa12verification93_$LT$impl$u20$ring..signature..VerificationAlgorithm$u20$for$u20$ring..rsa..RsaParameters$GT$6verify17h5ff374f4b5b4fe5dE 20:58 < bridge> 20:58 < bridge> ``` 20:58 < bridge> i see some symbols that are probably related to ring, so its in indeed 20:58 < bridge> ah ok 20:58 < bridge> but it seems it doesnt expose any dynamic symbols 20:59 < bridge> these are from debug symbols i assume, after stripping they are gone 21:00 < bridge> but yeah maybe its static linked 21:00 < bridge> 21:00 < bridge> do ppl ship stuff in crates that requires a c compiler (to build) @heinrich5991 ? 21:00 < bridge> yes 21:00 < bridge> i'd have thought that isnt the nicest style xD 21:00 < bridge> ok 21:01 < bridge> thats a bit sad 21:01 < bridge> and all rust quic crates fall into that category, as far as I could tell 21:01 < bridge> which is annoying 21:01 < bridge> WHERE ISSSSSSS 21:01 < bridge> but i guess for quinn its a matter of time? i mean if they already give an alternative 21:01 < bridge> cant be too hard to get away from ring/ make it optional 21:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1068259525397860463/image.png 21:02 < bridge> ah ye 21:02 < bridge> @deen did u update the dns for codedoc? 21:02 < bridge> :brownbear: 21:02 < bridge> famous last words. not really; constant-time code can only be done in assembly, I think 21:02 < bridge> I guess you could do them in rust inline assembly 21:02 < bridge> that would work 21:03 < bridge> are such packages somehow flagged in crates? 21:03 < bridge> i'd like to know if i have other packages like this 21:03 < bridge> using C compiler? 21:03 < bridge> no 21:03 < bridge> @heinrich5991 https://crates.io/crates/subtle 21:03 < bridge> made by the dalek guys i told u 21:03 < bridge> https://docs.rs/subtle/2.4.1/subtle/ 21:03 < bridge> break your C compiler and check whether the clean build still works 21:03 < bridge> e.g. put a broken C compiler in your path 21:04 < bridge> no need, i use rustls and they also use ring 21:04 < bridge> > This code is a low-level library, intended for specific use-cases implementing cryptographic protocols. It represents a best-effort attempt to protect against some software side-channels. Because side-channel resistance is not a property of software alone, but of software together with hardware, any such effort is fundamentally limited. 21:04 < bridge> > 21:04 < bridge> > USE AT YOUR OWN RISK 21:05 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 21:05 < bridge> 21:05 < bridge> THEN ASK HOW....📥 21:05 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 21:06 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 21:06 < bridge> 21:06 < bridge> THEN ASK HOW....📥 21:06 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 21:08 < bridge> @deen tell me if u will update :p 21:08 < bridge> i cant do nothing from my side 21:08 < bridge> cloudflare dns needs to be updated 21:08 < bridge> is there no pure rust openssl/boringssl alternative? 21:08 < bridge> 21:08 < bridge> i'd have thought thats a good rust use case 21:08 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 21:08 < bridge> 21:08 < bridge> THEN ASK HOW....📥 21:08 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 21:08 < bridge> @heinrich5991 do u have access too? 21:08 < bridge> rustls iirc 21:08 < bridge> i know 21:08 < bridge> it depends on ring 21:09 < bridge> @Jupeyy_Keks doing something like openssl/ring is a tremendous effort and requires a lot of audit 21:09 < bridge> so the only h ope is probs they update ring removing more and more C 21:09 < bridge> they could start with the most common implementations 21:09 < bridge> ring is the closest u have rn i think 21:10 < bridge> i mean, doesnt ring do that 21:10 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives?THEN ASK HOW....📥 21:10 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 21:10 < bridge> (@kio) 21:10 < bridge> @Jupeyy_Keks well 21:10 < bridge> there is the dalek group i sent 21:10 < bridge> https://github.com/dalek-cryptography 21:11 < bridge> looks like they focus mostly on ellipiptic tho 21:11 < bridge> looks like they focus mostly on elliptic tho 21:12 < bridge> there is also https://github.com/RustCrypto 21:12 < bridge> well i just find it weird that its not easy to find out which package uses which compiler 😮 21:12 < bridge> which has a lot of stuff 21:12 < bridge> if i read "pure rust" i'd think its pure rust xD 21:12 < bridge> xd 21:13 < bridge> Do you need financial support? Are you tired living from paycheck to paycheck… wanna say goodbye to 9to5? Wanna make $2000 daily $5000 weekly before your next pay check arrives? 21:13 < bridge> 21:13 < bridge> THEN ASK HOW....📥 21:13 < bridge> https://t.me/+KuOs8q7WfH8zZGZk 21:14 < bridge> honestly its possible to not use ring 21:14 < bridge> just use some stuff from rust-crypto and subtle 21:14 < bridge> well i hope they get this settled in ~1 year 21:14 < bridge> why 1 year xd 21:14 < bridge> its just that the stuff is not all in 1 crate 21:14 < bridge> but in various 21:15 < bridge> I have access 21:15 < bridge> bcs i want to finish my project in 1 year 21:15 < bridge> what do I need to do? 21:15 < bridge> i migrated my server so u need to change the codedoc.* ip 21:15 < bridge> what project? 21:15 < bridge> @heinrich5991 copy it from wiki.ddnet.org 21:15 < bridge> A and AAAA 21:16 < bridge> ty 21:18 < bridge> why do I add both A and AAAA? 21:18 < bridge> you update them 21:18 < bridge> it's proxied by cloudflare anyway 21:18 < bridge> yes 21:18 < bridge> u change the proxy xD 21:18 < bridge> the dns 21:18 < bridge> ? 21:18 < bridge> I just wondered why I need to add both IPv4 and IPv6, one would suffice 21:19 < bridge> hmm maybe its faster with ipv6 from their side 21:19 < bridge> why not? 21:19 < bridge> maybe the proxy has even better routing with ipv6 to my server 21:19 < bridge> because two entries could get out of sync 21:19 < bridge> cmon 21:19 < bridge> ur being pedantic 21:20 < bridge> anyway i dont care dont wanna argue 21:20 < bridge> u do u 21:20 < bridge> I add both 21:20 < bridge> no worries 21:20 < bridge> but it seems weird to me 21:20 < bridge> maybe one day i lose the ipv4 21:20 < bridge> they expensive these days 21:20 < bridge> then we won't notice the problem because we added both 21:21 < bridge> only slow site loads, perhaps 21:21 < bridge> i need to get a cert on my side for it to work 21:22 < bridge> done 21:22 < bridge> hmm maybe i lost the old theme xd 21:22 < bridge> will do for now i guess 21:23 < bridge> i wanna try https://datasette.io/ with the ddnet db 21:23 < bridge> tomorrow ill check 21:23 < bridge> not sure if you actually needed certificates tbh 21:24 < bridge> probs not but on the wiki it didnt work otherwise 21:24 < bridge> actually the thing to do here would be u give me a origin cert 21:24 < bridge> but 2 lazy anyway 21:25 < bridge> @heinrich5991 i think ddnet has the full strict config on cloudflare 21:25 < bridge> so proxy - origin needs to be encrypted too 21:25 < bridge> no, unfortunately not 21:25 < bridge> only "full" 21:26 < bridge> I changed it to full (strict) 21:26 < bridge> did anything break? 21:27 < bridge> ah well its "Encrypts end-to-end, using a self signed certificate on the server" 21:27 < bridge> thats why it requires me to have a cert on my side too 21:27 < bridge> altho i just use lets encrypt a self signed would work 21:27 < bridge> no it works fine 21:27 < bridge> i just forgot to port my theme 21:27 < bridge> it was dark themed before 21:28 < bridge> oh 21:28 < bridge> if u change it to full strict wiki and codedoc will break 21:28 < bridge> because u havent provided me a origin cert 21:29 < bridge> Encrypts end-to-end, but requires a trusted CA or Cloudflare Origin CA certificate on the server 21:29 < bridge> ahh 21:29 < bridge> wait 21:29 < bridge> it doesnt break cuz im using a trusted CA xd 21:29 < bridge> yes 21:29 < bridge> im stupid 21:34 < bridge> constant-time code doesn't exist on most, if not all, architectures 21:34 < bridge> memory access on multicore design is non deterministic 21:34 < bridge> interruptions are non deterministic 21:34 < bridge> context switches are non deterministic 21:35 < bridge> sounds irrelevant for cryptography 21:35 < bridge> the interruptions don't depend on the data 21:35 < bridge> memory access does not depend on the data being encrypted 21:36 < bridge> context switches don't happen during encryption, except interrupts which don't depend on data 21:43 < bridge> is very relevant for cryptography, that's how most hardware attacks work 21:48 < bridge> can you give an example? 21:54 < bridge> https://mimoza.marmara.edu.tr/~msakalli/cse466_09/cache%20timing-20050414.pdf 21:55 < bridge> Substitution boxes are often the target of such attacks 22:06 < bridge> is the rest of my argumentation valid? 22:07 < bridge> interrupts, context switches? 22:16 < bridge> you need context switches on monocore for timing attacks, context switches are based on timer interruptions 22:16 < bridge> for multicore, you don't need those 22:16 < bridge> but this point is false for AES for instance 22:17 < bridge> depends on implementation, you can do it without lookup table, but then code path is also data dependant 22:27 < bridge> actually, context switches can be triggered by any external event that the OS needs to handle 22:29 < bridge> yep 22:29 < bridge> but since that doesn't depend on the data, it can't be used to extract the data 22:30 < bridge> it needs data-dependent timings from elsewhere 22:30 < bridge> it can only be measure to use the data-dependent timings 22:30 < bridge> it can only be used to measure the data-dependent timings 23:02 < bridge> i proudly present https://ddstats.org/ 23:02 < bridge> (its not the old project) 23:03 < bridge> i setup a instance with datasette 23:03 < bridge> so u can do all the queries u want 23:03 < bridge> against today ddnet database 23:03 < bridge> and generate graphs! 23:06 < bridge> Epic 23:07 < bridge> Show some examples xd 23:11 < bridge> https://ddstats.org/ddnet-0587c26?sql=select%0D%0A++Map%2C%0D%0A++count%28*%29+as+Count%0D%0Afrom%0D%0A++race%0D%0Agroup+by%0D%0A++Map%0D%0Aorder+by+Count+DESC%0D%0Alimit%0D%0A++20#g.mark=bar&g.x_column=Map&g.x_type=ordinal&g.y_column=Count&g.y_type=quantitative 23:11 < bridge> xd 23:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1068292199508344862/visualization.png 23:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1068292348037054545/image.png 23:12 < bridge> it won't respect order for some reason 23:12 < bridge> you can also query it and it returns json 23:12 < bridge> or wiht graphql 23:12 < bridge> ye idk why :x 23:13 < bridge> if you click "copyable" 23:13 < bridge> and then fancy 23:13 < bridge> ``` 23:13 < bridge> ╒═════════════════╤═════════╕ 23:13 < bridge> │ Map │ Count │ 23:13 < bridge> ╞═════════════════╪═════════╡ 23:13 < bridge> │ Multeasymap │ 847102 │ 23:13 < bridge> │ Sunny Side Up │ 688313 │ 23:13 < bridge> │ Tutorial │ 615787 │ 23:13 < bridge> │ Kobra │ 494704 │ 23:13 < bridge> │ LearnToPlay │ 398745 │ 23:13 < bridge> │ Just2Easy │ 273273 │ 23:13 < bridge> │ 4Beginners │ 256242 │ 23:13 < bridge> │ Epix │ 250523 │ 23:13 < bridge> │ Kobra 2 │ 238256 │ 23:13 < bridge> │ run_g6 │ 202859 │ 23:13 < bridge> │ StepByStep │ 169370 │ 23:13 < bridge> │ Kobra 4 │ 162996 │ 23:13 < bridge> │ Tsunami │ 146537 │ 23:13 < bridge> │ NUT_short_race6 │ 145741 │ 23:13 < bridge> │ run_ankii │ 145453 │ 23:13 < bridge> │ run_blue │ 138420 │ 23:13 < bridge> │ Linear │ 135617 │ 23:13 < bridge> │ 4Nubs │ 128939 │ 23:13 < bridge> │ Gold Mine │ 119653 │ 23:13 < bridge> │ Tangerine │ 117432 │ 23:13 < bridge> ╘═════════════════╧═════════╛ 23:13 < bridge> ``` 23:13 < bridge> easy table 23:14 < bridge> https://ddstats.org/ddnet-0587c26.copyable?sql=select%0D%0A++Map%2C%0D%0A++count%28%2A%29+as+Count%0D%0Afrom%0D%0A++race%0D%0Agroup+by%0D%0A++Map%0D%0Aorder+by+Count+DESC%0D%0Alimit%0D%0A++20&_table_format=pretty 23:14 < bridge> @deen maybe ur interested in promoting this :D 23:33 < bridge> i set it up so it autoupdates everyday 23:43 < bridge> i added another visualizer that works kinda better 23:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1068300220724686878/image.png 23:44 < bridge> 🤌 23:45 < bridge> gotta purge cache for it to appear tho xd 23:58 < bridge> why are the bars of different widths?