00:06 < bridge> Mb dont kill me please :pepeH: 00:06 < bridge> I pulled libtw2 and tried to build wireshark plugin 00:12 < bridge> how i do that. I dont know rust :justatest: 01:34 < bridge> Yes that much is obvious from the screenshot. But why? What are you wiresharking? 01:35 < bridge> What you did looks good. No idea what the issue is. Maybe wrong rust version. Not sure if anyone ever tried to build that on windows you can try pinging Heinrich but he will read this eventually anyways I think 01:47 < bridge> what toolchain are you using? msvc mangles symbol names differently from gcc and clang so it would expect different function names 01:59 < bridge> don't forget the world depends on #7691 01:59 < bridge> https://github.com/ddnet/ddnet/pull/7691 03:02 < bridge> @mbvxoxo give me another idea 08:14 < bridge> the world depends on monotonic buffer resource 08:23 < bridge> true 08:23 < bridge> @tela what macos ver u on 08:32 < bridge> @mpft if its for me i would merge it but i want atleast another one to agree 08:33 < bridge> yea 08:33 < bridge> nobody looking at it 08:33 < bridge> i gave my 🦭 of aproval 08:33 < bridge> seal 08:33 < bridge> i love seals 08:33 < bridge> some ppl say my dog looks like a seal 08:33 < bridge> but seals are just water dogs 08:34 < bridge> give me an idea 08:34 < bridge> xd 08:36 < bridge> @mpft did u see deen comment on my pr 08:36 < bridge> should i make CHeap thread safe 08:36 < bridge> Yes 08:36 < bridge> the old way isnt and this isnt 08:36 < bridge> that would be sick for when i have another go at async skins 08:36 < bridge> but whats the point if the 🍎 is holding me back 08:36 < bridge> i think when i do it again i will just batch them and not try and have them load in the bg with the game xd 08:36 < bridge> no matter how i do that i will still get micro stutters 08:37 < bridge> bcs it has to wait to upload to the gpu at an irregular time 08:37 < bridge> maybe it isn't 08:37 < bridge> depends on how deen feels about dropping host compilation support for already very old macos 08:38 < bridge> who is Shereef Marzouk 08:39 < bridge> idk 08:39 < bridge> why u ask 08:39 < bridge> but the ci on gh is using macos-latest iirc XD 08:39 < bridge> yea 08:39 < bridge> he's (c) at the top of ddracechat.cpp 08:39 < bridge> maybe other files 08:39 < bridge> never heard the real name before 08:39 < bridge> i'm sure you can still run the binary compiled by latest macos on <14 08:40 < bridge> depends on how deen feels about dropping compilation host support for already very old macos 08:45 < bridge> Why? 08:45 < bridge> Greyfox 08:45 < bridge> @learath2 read deen comment 08:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188024670209970296/image.png?ex=65990531&is=65869031&hm=f773a7eddc3ce343ac732bf70e93fbbcb636c9143ad1b289635472dc852dff71& 08:46 < bridge> as long as CHeap doesn't have bad single thread perf because it's thread safe. which i can't see happening anyway 08:46 < bridge> did u check my pr yet 08:46 < bridge> https://github.com/ddnet/ddnet/pull/7692 08:46 < bridge> cheap is rarely used too 08:46 < bridge> only for localisation and another thing 08:46 < bridge> I think it should be made thread safe at the point of use. That's how most containers are unless they are specifically crafted to be threadsafe usually locklessly 08:46 < bridge> apparently macos comes with gcc 13 in github ci? 08:46 < bridge> can se use that? 08:47 < bridge> https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md 08:47 < bridge> i see 08:48 < bridge> Do we even use it from multiple threads ever anyway? 08:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188025442486202478/image.png?ex=659905e9&is=658690e9&hm=597366f23ba28f04d989a4ca3889afd14e1e86d9b5b607b31631e073826a6862& 08:49 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188025488459960401/image.png?ex=659905f4&is=658690f4&hm=c9395915ae06b3ebf59bea22fd9b0b500dd4f9e18d21bca79b5f102e687c2777& 08:49 < bridge> those are the uses i found 08:49 < bridge> is the serverbrowser MT? 08:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188025875376128040/image.png?ex=65990651&is=65869151&hm=f3bb793f92a3ba6b2b235c2c9cbcf12dd4c6a27513effb859d764c7bee673f4d& 08:50 < bridge> is the console execution queue mt? 08:51 < bridge> i believe so 08:51 < bridge> dont take my word for it 08:51 < bridge> in macos 08:51 < bridge> CXX=/usr/bin/g++-13 would work? 08:51 < bridge> no 08:51 < bridge> Config using it now might explain some of the bizarre new bugs 08:51 < bridge> github macos containers have gcc 13 08:52 < bridge> maybe in the ci it might work 08:52 < bridge> idk what they use 08:52 < bridge> Clang/LLVM 14.0.3 08:52 < bridge> Clang/LLVM (Homebrew) 15.0.7 - available on $(brew --prefix llvm@15)/bin/clang 08:52 < bridge> GCC 11 (Homebrew GCC 11.4.0) - available by gcc-11 alias 08:52 < bridge> GCC 12 (Homebrew GCC 12.3.0) - available by gcc-12 alias 08:52 < bridge> GCC 13 (Homebrew GCC 13.2.0) - available by gcc-13 alias 08:53 < bridge> unrelated q but why is my chat command's pResult->NumArguments() only saying there is 1 arg when in fact there are 2 08:55 < bridge> :ddnet_lgbt: 09:00 < bridge> ```cpp 09:00 < bridge> // execute config file 09:00 < bridge> if(pStorage->FileExists(CONFIG_FILE, IStorage::TYPE_ALL)) 09:00 < bridge> { 09:00 < bridge> pConsole->SetUnknownCommandCallback(SaveUnknownCommandCallback, pClient); 09:00 < bridge> if(!pConsole->ExecuteFile(CONFIG_FILE)) 09:00 < bridge> { 09:00 < bridge> const char *pError = "Failed to load config from '" CONFIG_FILE "'."; 09:00 < bridge> dbg_msg("client", "%s", pError); 09:00 < bridge> pClient->ShowMessageBox("Config File Error", pError); 09:00 < bridge> PerformAllCleanup(); 09:00 < bridge> return -1; 09:00 < bridge> } 09:00 < bridge> pConsole->SetUnknownCommandCallback(IConsole::EmptyUnknownCommandCallback, nullptr); 09:00 < bridge> } 09:00 < bridge> ``` 09:00 < bridge> @learath2 i see this but where is the callback called on execute file? xD 09:01 < bridge> Look for a findcommand somewhere in executeline 09:01 < bridge> i guess it's always reporting as 2 when it's 3 or more 09:01 < bridge> ah 09:01 < bridge> is it not delimiting args by space after the actual name of the command? 09:01 < bridge> do i have to do that myself 09:01 < bridge> What does your arg string look like? 09:02 < bridge> If you have an r it won’t split anymore 09:02 < bridge> but i dont see where a thread is started 09:02 < bridge> an r? 09:02 < bridge> an actual 'r' 09:02 < bridge> When you register a command you give a definition of it’s arguments 09:03 < bridge> Something like “sss” for a command that takes 3 strings e.g. 09:03 < bridge> oic 09:03 < bridge> i didn't realize that actually did anything :smileu 09:03 < bridge> i didn't realize that actually did anything 😃 09:03 < bridge> r means rest, so it’ll give you all the rest of the string at that point 09:04 < bridge> gotcha 09:04 < bridge> we should speak british english 09:04 < bridge> colour 09:05 < bridge> now that i have lot of free time its time to do prs 09:05 < bridge> and redeem myself as a ddnet dev 09:05 < bridge> lol 09:05 < bridge> (if macos doesnt hold me back) 09:05 < bridge> holidays moment 09:05 < bridge> anyone here ever rent a macos vps 09:05 < bridge> i have a m1 myself 09:05 < bridge> oh yeah i forgot 09:05 < bridge> lucky 09:05 < bridge> from work 09:06 < bridge> @learath2 did u check ewan pr 09:06 < bridge> feel free to merge it 09:07 < bridge> do u know what version of clang supports pmr 09:07 < bridge> can CConsole::CResult::GetFloat ever return NaN 09:07 < bridge> 15? 16? 17? 09:07 < bridge> no idea 09:09 < bridge> well with brew u can get llvm 17 09:09 < bridge> so 09:14 < bridge> wanted? 09:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188031898841255976/Base_Profile_2023.12.23_-_01.13.08.03.DVR-24.mp4?ex=65990bed&is=658696ed&hm=bfca3c21e714a65350816a1822e1053c9faf10e6dccc4e70adaf2915fb5e9d36& 09:15 < bridge> i made it so u can /tp x y 09:15 < bridge> /tp 09:15 < bridge> or 09:15 < bridge> /tp playername 09:15 < bridge> or 09:15 < bridge> /tp x y 09:16 < bridge> @learath2 why on gentoo i have gcc 12 09:16 < bridge> and not 13 09:17 < bridge> omg 09:17 < bridge> i have it in eselect 09:17 < bridge> nvm 09:17 < bridge> i will make pr 09:17 < bridge> of what 09:18 < bridge> The thing i just sent 09:18 < bridge> NaN should not be possible 09:18 < bridge> 👍 09:18 < bridge> However you can get, HUGE_VAL on overflow and 0 on underflow 09:19 < bridge> We don’t check or catch either 😄 09:19 < bridge> wow awesome 09:20 < bridge> Oh now that I take a look at it we don’t check for invalid either, so you should get a 0 on things that can’t be converted to float too 🙃 09:20 < bridge> Teeworlds moment 09:20 < bridge> i will parse it myself then 09:20 < bridge> /Users/runner/work/ddnet/ddnet/src/base/math.h:6:10: fatal error: algorithm: No such file or directory 09:20 < bridge> 6 | #include 09:20 < bridge> tf why g++ 13 fails 09:20 < bridge> was planning to prepend with + or - for relative coords anyway so i couldn’t use getfloat 09:21 < bridge> It should handle negatives just fine, no? 09:21 < bridge> not what i mean 09:21 < bridge> 10 = absolute 10 09:21 < bridge> +10 = current pos + 10 09:21 < bridge> -10 = current pos - 10 09:22 < bridge> Aha, yeah can’t do that with float 09:22 < bridge> ya 09:22 < bridge> or i could be more explicit and use tildes like minecraft 09:22 < bridge> but doesn't seem needed 09:22 < bridge> it's just ~ vs +/-0 09:23 < bridge> but uhh actually can you place things at negative coords in a map 😅 i feel like i've seen it before 09:23 < bridge> in which case i would have to use a tilde or smth else 09:23 < bridge> need to know real map boundaries 09:26 < bridge> sounds like what i want is the entity clipping rectangle? 09:27 < bridge> ok i surrender 09:27 < bridge> fck macos 09:27 < bridge> i hate ci driven development 09:28 < bridge> xd 09:34 < bridge> this also means i cant modernize other parts 09:34 < bridge> cuz macos 09:34 < bridge> imagine saying u support c++17 but not rly 09:36 < bridge> yea 09:36 < bridge> i was about to say smth 09:36 < bridge> but it would piss u off 09:36 < bridge> 😬 09:38 < bridge> lol 09:38 < bridge> go for it 09:38 < bridge> Voxel really did rq :(. He was cool. Hope he comes back. Although he did say ddnet wasn't as fun anymore couple of times. 09:40 < bridge> life is not daijoubu 09:40 < bridge> https://tenor.com/view/lovyyn-sad-crying-crying-face-anime-cry-gif-23716177 09:40 < bridge> i love this meme 09:41 < bridge> why do all our artists rq xd 09:41 < bridge> I still can’t believe he left because Ryozuki preached rust. It’s like getting angry at a priest for reading the bible 09:41 < bridge> we already have too few 09:41 < bridge> i dont think its just that 09:41 < bridge> he was frustrated with maps too 09:41 < bridge> he said all new maps were unfun or smth 09:42 < bridge> i guess artists arent as keen to open source art as devs are for free software 09:42 < bridge> we are more selfless 09:42 < bridge> it's just bcs they are paid bad in RL 09:42 < bridge> maybe 09:43 < bridge> as dev u get a new job after 1 sec xD 09:43 < bridge> I think artists want more recognition than programmers tbh 09:43 < bridge> xd 09:43 < bridge> ...anyways 09:43 < bridge> ye programmers stay in the shadows 09:43 < bridge> normal ppl dont know john carmack 09:43 < bridge> well he was not paid to be an artist afaik 09:44 < bridge> true 09:44 < bridge> idk what ravie does 09:44 < bridge> db manager 09:44 < bridge> i mean as job 09:44 < bridge> xd 09:44 < bridge> idk 09:45 < bridge> guys what are the actual map boundaries 09:45 < bridge> He is a professional edgelord. Gets paid to have unwoke opinions 09:45 < bridge> let's say for entities 09:45 < bridge> i just need a number rn to test this 09:45 < bridge> Plays the accordeon 09:45 < bridge> -i16 +i16?? 09:45 < bridge> idk 09:45 < bridge> xd 09:46 < bridge> 09:46 < bridge> where SHORT_MAX macro xd 09:46 < bridge> :feelsbadman: 09:46 < bridge> i just said it randomly idk tbh 09:46 < bridge> I doubt there is any if you remove the death border, you just go out until floats become very inaccurate and bizarre things happen 09:46 < bridge> Teeworlds farlands 09:46 < bridge> k what is the death border 09:46 < bridge> i think its 20 tiles away from the map size 09:46 < bridge> ouu 09:46 < bridge> or smth like that 09:47 < bridge> can maps go negative 09:47 < bridge> on either x or y 09:47 < bridge> basically if it goes to negative after hitting float limit, it wont render theorically 09:47 < bridge> u sometimes dont make sense xd 09:47 < bridge> ig i should ask if maps can exist outside of quadrant 4 09:47 < bridge> It shouldn’t, float overflow works differently 09:47 < bridge> float loses accuracy as it goes further from 0 iirc 09:47 < bridge> so it would just reset 09:47 < bridge> so its not about not being able to render 09:47 < bridge> float overflow is a myth 09:47 < bridge> You’ll get stuck at HUGE_VAL 09:48 < bridge> just use float128 09:48 < bridge> big boi float 09:48 < bridge> is huge val also for negatively huge numbers 09:48 < bridge> so it would just reset (as in if its 64 or 128) hitting limit 09:48 < bridge> tending towards - infinity 09:48 < bridge> HUGE_VAL + d == HUGE_VAL forall d > 0 iirc 09:48 < bridge> https://en.cppreference.com/w/cpp/numeric/math/HUGE_VAL 09:48 < bridge> HUGE_VALF Expands to positive float expression that indicates overflow 09:48 < bridge> HUGE_VAL Expands to positive double expression that indicates overflow, not necessarily representable as a float 09:48 < bridge> HUGE_VALL Expands to positive long double expression that indicates overflow, not necessarily representable as a float or double 09:49 < bridge> i guess i will use placeholders for now. i need to know how to get this info tho 09:50 < bridge> https://doc.rust-lang.org/std/primitive.f64.html#associatedconstant.INFINITY 09:54 < bridge> @learath2 did u know arm uses 16 byte align 09:54 < bridge> macos 09:54 < bridge> I did not know it as fact, but I’d guess it given thumb instructions are 16b 09:55 < bridge> ah wait 09:55 < bridge> its 16 for > 128bit 09:56 < bridge> https://github.com/ziglang/zig/issues/2987 https://github.com/rust-lang/rust/issues/54341 09:56 < bridge> ok wait this is unrelated 09:56 < bridge> xdd 09:56 < bridge> but this shit came up at work 09:56 < bridge> when making the compiler 09:57 < bridge> damn 09:57 < bridge> okay i added relative modes 09:57 < bridge> i still need to know if maps can exist outside quadrant 4 09:57 < bridge> so i can reserve -X.X for non relative purposes 09:57 < bridge> absolute 09:57 < bridge> sdiffjsd 09:58 < bridge> but ye 64bit arm is 16 10:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188043768767709194/Base_Profile_2023.12.23_-_02.01.04.05.DVR-24.mp4?ex=659916fb&is=6586a1fb&hm=40fd73e16f13496ad6a24a213be47c59700c0433d3fa3b718168340375c61428& 10:02 < bridge> tbh it would be easy to just make it ~+ or ~- instead 10:08 < bridge> im going with tildes for now 10:17 < bridge> ur a tilde 10:18 < bridge> wtf 10:18 < bridge> rude 10:44 < bridge> Ngl, but this seems more unpractical to use than current tp 10:45 < bridge> yea i too love zooming in and inching towards the exact tenth place offset i need 10:45 < bridge> ??? 10:45 < bridge> it exists for a different purpose 10:45 < bridge> also can be bound... 10:51 < bridge> The only real application I see tp this it's if I wanted to go far to some direction to save me like 2 secs of dezooming. 10:51 < bridge> Otherwise most of tp needs too much precision for me to somehow guess the exact coordinates 10:52 < bridge> well then i didnt make this for you 10:52 < bridge> i think it would be quite helpful 10:52 < bridge> Talking about tp, something that could really be useful is not falling just after tp (already happens when using it with spec) 10:52 < bridge> how else would it work 10:53 < bridge> i guess it wouldn't be hard to put the player in a limbo state but i dont want to mess with prediction code 10:53 < bridge> ^^ 10:53 < bridge> I was just giving my opinion. I'm sorry to hurt you? Idk. 10:53 < bridge> If you receice some positive feedback I'd like to know the use of it, because I can't really come up with anything other than fast travel to far distances 10:54 < bridge> have you ever played a map and wanted to test a setup on the fly or something 10:54 < bridge> you can iterate on starting coordinates for the setup using this without just tapping a and d until your fingers bleed 10:54 < bridge> Oh, ok I see what you mean 10:55 < bridge> it seems like you don't really play the game because it's really really common for me to be playing with other people & all of the sudden coordinates matter a lot 10:55 < bridge> You want to use it to repeat a setup 10:55 < bridge> or i guess you have a radically different playstyle 10:55 < bridge> Well, I usually just accomplish whatever I try eithouth needing 99999 attempts 10:56 < bridge> Ok I ll stop the beef here, but y I see 11:15 < bridge> i just got trolled hard by vec4 11:15 < bridge> spent about 30 min trying to figure out why i get sent out of bounds & subsequently killed only when my bounds checking is on 11:15 < bridge> `std::clamp(BaseY, Boundaries.y + 32.f, Boundaries.y + Boundaries.h - 32.f)` 11:15 < bridge> and i was doing it like that 11:15 < bridge> but .h is the same as .x.... it's h for HSL 11:16 < bridge> i needed .l (length) 11:16 < bridge> TBH we could likely remove the color aliases at some point since we use `ColorRGBA` in most places 11:17 < bridge> nice 11:21 < bridge> i have sort of a niche need atm robyt 11:21 < bridge> i am bounds checking /tp coordinates from my video up there but this requires getting the game layer & saving its boundaries 11:22 < bridge> i don't want to do it every frame but making it static would not be good because it would persist after a map change if it's only set once 11:22 < bridge> should i check if the map changed inline or make it a member of CGameContext, and make it stick out like a sore thumb 11:23 < bridge> i don't want to do it every time the command is called but making it static would not be good because it would persist after a map change if it's only set once 11:26 < bridge> Doesn't seem very expensive to calculate the boundaries. Do you mean something like `width+201`? 11:26 < bridge> yea 11:27 < bridge> i suppose i will just do it every frame 😃 11:27 < bridge> `CCollision` keeps track of the game layer size, so if you wanted a cache then that would be the place, but just for `width+201` it's not really worth it 11:27 < bridge> I'd say profile first if it's an issue, otherwise it's premature optimization 11:27 < bridge> k 11:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188065461758337074/image.png?ex=65992b2f&is=6586b62f&hm=4b2d0adb82a554d8a844e9ab56125af04c737f5257cfadf444b67e47012e8155& 11:28 < bridge> this is all it is 11:28 < bridge> i think it should be fine 11:30 < bridge> @mpft u can finally get dev role 11:30 < bridge> nope 11:30 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188066063536103484/image.png?ex=65992bbe&is=6586b6be&hm=1a680ae3094fe4bf48b85a2eed3924e98282848ec7967cc8d750372bb808e0fa& 11:30 < bridge> trolled again! 11:30 < bridge> xd 11:30 < bridge> these are issues from 2020 11:30 < bridge> all of them complaints from heinrich 11:30 < bridge> heinrich singlehandedly stopping progress. nice 11:31 < bridge> And somehow we have two issues about the same thing 11:31 < bridge> i really have not heard anyone but heinrich complain about that approach 11:32 < bridge> If it generates lots of server messages then it's bad for the servers 11:32 < bridge> The comment in #2221 explain a case in one map where it happens 11:32 < bridge> https://github.com/ddnet/ddnet/pull/2221 11:36 < bridge> what exactly is the issue rn? 11:36 < bridge> can u eli5 11:36 < bridge> kill will act like /r right? 11:36 < bridge> 11:36 < bridge> /r only works if u stand still somewhere, right? 11:37 < bridge> yes exactly 11:37 < bridge> then i dont see a problem with your design 11:37 < bridge> the only place that you can get softlocked or repeatedly teleported without interfering has been removed in my pr 11:37 < bridge> If you stand on a speeder and it moves you into a kill tile 11:37 < bridge> then speeders shouldn't be safe 11:37 < bridge> I only skimmed the comments 11:37 < bridge> but /r only works if u stand still 11:37 < bridge> so this cant even happen 11:38 < bridge> Then the comments still need to be "addressed" by extensive testing and explanation that this cannot happen 11:38 < bridge> if not, then i'd claim that /r is bugged 11:38 < bridge> yeah, the approach that heinrich wants is pretty overcomplicated tho. 11:38 < bridge> 11:39 < bridge> better try to make it easier by restricting it to our case 11:39 < bridge> хуй член 11:39 < bridge> It could be possible to have a velocity of `vec(0, 0)` temporarily while inside a speeder 11:39 < bridge> 🐡 11:39 < bridge> well then stand still and dont press any key 11:40 < bridge> for 2 ticks 11:40 < bridge> xdd 11:41 < bridge> but pressing /r after died 11:41 < bridge> or not dieing, when you expect it defs sounds more unintuitive 11:42 < bridge> @mpft Can you some of the unrelated style changes in your PR? Looks like you used clang-format-15 instead of 10 11:42 < bridge> @mpft Can you avoid some of the unrelated style changes in your PR? Looks like you used clang-format-15 instead of 10 11:42 < bridge> it’s literally just like gravity 11:42 < bridge> i’d like to but idk how to set it up with my ide 11:42 < bridge> i will have to manually apply style changes inplace with the cli otherwise 11:43 < bridge> You could simply not stage, commit and push those changes :owo: 11:43 < bridge> err we must not be talking about the same thing 11:43 < bridge> anyway why does ddnet not use 15 11:43 < bridge> quite annoying 11:43 < bridge> Because the format looks trash 11:43 < bridge> https://github.com/ddnet/ddnet/pull/7696/files#diff-29ffe32916052e1066eed938021aadfeb29f855d7c63d9c1ca3350aceffb79f3L1246-R1247 11:43 < bridge> can’t you specify further 11:43 < bridge> maybe we could invest some day in a definition about which tiles actively affect gameplay. 11:43 < bridge> 11:43 < bridge> would be intersting, e.g.: 11:43 < bridge> - air tiles 11:44 < bridge> - tele out 11:44 < bridge> - tune zones 11:44 < bridge> 11:44 < bridge> are all passive 11:44 < bridge> Interfacing with clang-format is black magic 11:44 < bridge> it’s literally just a file 11:44 < bridge> and you write the rules you want 11:44 < bridge> ez as pie 11:44 < bridge> But I wish someone would do it of course 11:44 < bridge> just ping deen, he fixes clang-format for you 11:44 < bridge> He also didn't know how to get lines not to break 11:45 < bridge> well sorry if you don’t agree but subjecting every contributor to use an old version of clang format when they do any more than 3 line changes doesn’t exactly seem logical 11:45 < bridge> Ideally clang-format would either preserve our line lengths or at least not do something as stupid as the format I linked above 11:45 < bridge> you can give it an explicit max line width 11:46 < bridge> @mpft u can take over #7034 11:46 < bridge> https://github.com/ddnet/ddnet/pull/7034 11:46 < bridge> ehh 11:46 < bridge> The version and format should be upgrades yeah, but contributions shouldn't contain unrelated changes either 11:47 < bridge> then u can use format 15 xd 11:47 < bridge> should just cut your losses imo 11:47 < bridge> impose clang format 15 changes on all ddnet source 11:47 < bridge> without trying to preserve current style 11:47 < bridge> I could agree with all previous clang-format decisions so far, but this is completely illogical formatting so I won't support it 11:47 < bridge> right well it's definitely not hard to write your own' 11:47 < bridge> rules 11:48 < bridge> he have our own rules 11:48 < bridge> we 11:48 < bridge> sadly clang-format seems to have changed some things 11:48 < bridge> it does not help that clang format 10 is not even in my pkg mgr 11:49 < bridge> yep, but even clang-format15 should be pretty close. what even is your issue rn? 11:49 < bridge> 11:49 < bridge> does it create such a huge diff? 11:49 < bridge> im finding so much stuff 11:49 < bridge> prepare 11:49 < bridge> #7034 only changed 300 lines 11:49 < bridge> https://github.com/ddnet/ddnet/pull/7034 11:49 < bridge> mainly my problem is we are talking about whitespace here but now i have to build an old version of this tool from source because nobody took the time to modernize the CI 11:50 < bridge> you could also consider having the CI in-place apply the proposed changes that make the build fail 11:50 < bridge> The changes to comments I don't care about, but this is bad: https://github.com/ddnet/ddnet/pull/7034/files#diff-b3a45ccb488177dbd8a7327f6f67322eaf69a6f178a57680d9c6172f0a436b08L690-R692 11:50 < bridge> yeah that's silly 11:50 < bridge> hey ryo want another ddnet chore 11:51 < bridge> ask in llvm server how to fix that bs 11:51 < bridge> clang-format channel has seen enough of my face 11:51 < bridge> ryo will tell you exactly one thing: 11:51 < bridge> use rust 11:51 < bridge> and then i'll tell him, yeah but sometimes rustfmt also breaks, very annoying 11:52 < bridge> o yea btw some help here pls 11:52 < bridge> don't know what constant to use for these buffers 11:52 < bridge> max console string length or whatever it's called seems absurd 11:52 < bridge> not rly trying to allocate 8kb per arg 11:52 < bridge> 32 seems enough I guess 11:53 < bridge> do u even need these tmp vars? 11:53 < bridge> i suppose not 11:53 < bridge> Doesn't looks like it 11:53 < bridge> Doesn't look like it 11:53 < bridge> changing real quick 11:54 < bridge> Also `GameLayer` -> `pGameLayer` 11:54 < bridge> o yea thx 11:54 < bridge> `Boundaries` probably doesn't need to be `static` 11:54 < bridge> Would also have the wrong name for that 11:54 < bridge> wdym 11:54 < bridge> oh yeha 11:54 < bridge> s_ 11:54 < bridge> s 11:54 < bridge> asjkbfkj 11:55 < bridge> You are calculating the values every time, so you don't need `static` 11:55 < bridge> One `vec4` isn't very expensive to create/destroy either 11:55 < bridge> my thinking was it helps to not allocate 4 floats again but i'm using aggregate init so w/e 11:55 < bridge> It’s in none of ours either, you just install it once and it’s done 11:56 < bridge> it's a real thorn in my side is all im saying 11:56 < bridge> ``` 11:56 < bridge> % clang-format --version 11:56 < bridge> Debian clang-format version 18.0.0 (++20231122111257+b3a9e8f7c0af-1~exp1~20231122111413.1710) 11:56 < bridge> ``` 11:56 < bridge> 11:56 < bridge> 😏 11:56 < bridge> yea i was gonna say 11:56 < bridge> surely debian has it 11:56 < bridge> clang-format-15, what is that? 11:56 < bridge> there's not even a clang-format executable option in my ide so i really will have to manually inplace every comit 11:57 < bridge> You don’t have to, this is a common hurdle so there are prebuilt versions of it. Everyone and their mothers uses this one https://github.com/muttleyxd/clang-tools-static-binaries 11:57 < bridge> oh cool 11:57 < bridge> the vscode workspace also directly makes it easy to use if u add it to PATH 11:57 < bridge> 😏 11:57 < bridge> Anyway, yeah we should bump up to clang-format15 soon, if only we can figure out how to get rid of the ugly linebreaks 11:58 < bridge> :owo: 11:58 < bridge> I usually just do `python3 scripts/fix_style.py` before committing 11:58 < bridge> well theoretically we should simply use clang-format default values 11:58 < bridge> 11:58 < bridge> but i guess most ppl here would go on rampage 11:58 < bridge> I DONT CARE aslong as i dont have to do anything manually 11:59 < bridge> then i go on rampage 11:59 < bridge> It’s nasty. Idk what sort of brain worms do the people that make the style guide for clang format have 11:59 < bridge> Just 0 sense of aesthetics 11:59 < bridge> i write so much code inline and let the formater do it's job xD 11:59 < bridge> ``` 11:59 < bridge> ewan@machine /x/ddnet-practice-tp-coords (tp-coords)> clang-format-10 -i -style=file **/*.cpp **/*.h 11:59 < bridge> exec: Failed to execute process '/usr/bin/clang-format-10': the total size of the argument list and exported variables (6kB) exceeds the operating system limit. 11:59 < bridge> ``` 11:59 < bridge> :feelsbadman: 11:59 < bridge> if ... {bla} else {blam} whatever; 11:59 < bridge> 11:59 < bridge> ENTER 11:59 < bridge> check my pr thanks 12:00 < bridge> i do ./scripts/fix_style 12:00 < bridge> or CTRL+S 12:00 < bridge> xd 12:00 < bridge> yes i use ur workspace 12:00 < bridge> Use the included script, it fixes the glob issue 12:00 < bridge> yea it works 12:00 < bridge> based 12:00 < bridge> swagular. 12:00 < bridge> @jupeyy_keks check my pr, theorically it enabled more optimization oportunities 12:01 < bridge> default the world 12:01 < bridge> it did Not Work 12:01 < bridge> nice, 1ns better frame times 12:01 < bridge> i take that 12:01 < bridge> brb killing myself 12:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188073835543670784/image.png?ex=659932fb&is=6586bdfb&hm=3402373c9ee2b36b5bf36c6e0887802f86a4eb844efabd20d368eb3084df619f& 12:01 < bridge> also i found some interfaces that did not have a virtual destructor xd 12:02 < bridge> thats good 12:02 < bridge> yea well they dont like whitespace changes 12:02 < bridge> this is why rustfmt is best 12:02 < bridge> u dont argue about style 12:02 < bridge> u dont lose time 12:04 < bridge> clang-format would benefit from some backcompat 12:04 < bridge> but this sort of thing only happens after several versions of neglect 12:04 < bridge> so i can't say i rly think it's a huge deal 12:04 < bridge> clang-format also AFAIR profiles 12:05 < bridge> LLVM profile 12:05 < bridge> so u say i want "google-like style" 12:05 < bridge> that's --style=google 12:05 < bridge> or basedonstyle in your file 12:05 < bridge> maybe one is close to ours 12:05 < bridge> yea i always just use the llvm one in my own code 12:05 < bridge> btw did anyone check if the dockerfile still works 12:09 < bridge> nope 12:09 < bridge> never used docker in my life 12:10 < bridge> can't say i regret it 12:12 < bridge> lmfao 12:13 < bridge> hmmmm 12:13 < bridge> this is a tricky thing to test here 12:13 < bridge> trying to figure out exactly what would be considered out of bounds with the kill tile's hitbox 12:14 < bridge> should i hardcode something or just round it to the next whole tile 12:16 < bridge> You want to make sure the tee stays in bounds, right? Would be the easiest to make the checks a bit stricter so you don't need a lot of additional logic. 12:16 < bridge> i just added 1 real coordinate (not 'display' coord) 12:16 < bridge> works fine 12:16 < bridge> though for some reason my bounds checking is screwing me over again 12:16 < bridge> i didn't test this super thoroughly :owo: 12:27 < bridge> Can someone help me with a resolution problem I have with my ddnet? 12:27 < bridge> wrong channel 12:28 < bridge> #questions 12:28 < bridge> oh sry 12:35 < bridge> i forgot to transpose the game layer tile int coords to float coords 12:35 < bridge> *32 12:47 < bridge> the pr is winning now 12:48 < bridge> i think adding some sort of 'limbo' state after a tp or rescue would satisfy both heinrich's and devinci's issues 12:48 < bridge> where the tee is there but it's just not moving 12:48 < bridge> and any movement input would make it move again 12:50 < bridge> style check is failing after using the script so i really don't know 12:50 < ChillerDragon> touching physics :justatest: 12:50 < bridge> yea im not thrilled either 12:51 < bridge> it'd need to interact with other entities so it'd have to put the whole team in limbo 12:51 < bridge> :justatest: :justatest: :justatest: 12:51 < bridge> maybe it's not the move 12:51 < bridge> It's a different style check that failed now 12:51 < bridge> > src/game/server/ddracechat.cpp:#include "game/mapitems.h" 12:52 < bridge> Should use `<>` instead 12:52 < bridge> oh that's clangd's fault 12:52 < bridge> bleh 12:52 < bridge> being able to dry-run the build-unrelated ci checks would be nice 13:06 < bridge> i just added a method to IConsole & CConsole and it's undefined reference to vtable for IConsole 13:06 < bridge> you don't use anything like IDL do you :justatest: 13:43 < ChillerDragon> @Ewan you can dry run the ci? its a bunch of py scripts just run those 13:43 < ChillerDragon> i have a shell script called ``ddlint`` that basically runs all of the CI stuff at once locally 13:43 < ChillerDragon> https://github.com/ChillerDragon/crools/blob/5989f3e647ea1c7e9acfdbd78c0d5f3ccf30cbdc/ddlint 13:53 < bridge> rad 13:53 < bridge> when upstream 14:05 < bridge> ChillerDragon: what is ctidy 14:06 < bridge> clang-tidy? why do u call it ctidy 14:29 < ChillerDragon> https://github.com/ChillerDragon/crools/blob/5989f3e647ea1c7e9acfdbd78c0d5f3ccf30cbdc/ctidy 14:29 < ChillerDragon> ah ye its another script 14:29 < bridge> :justatest: 14:29 < ChillerDragon> yea not sure if i can recommend my infrastructure for it 14:29 < ChillerDragon> just wanted to show you that you can basically copy paste all the commands from the github actions into one script and then run it locally just fine 14:30 < bridge> i might just get one of those local gha runners 14:30 < ChillerDragon> omg they the worst 14:30 < bridge> probably low overhead 14:30 < ChillerDragon> fakin microsoft 14:30 < ChillerDragon> just run native 14:30 < ChillerDragon> its like 4 commands 14:30 < bridge> x 14:33 < bridge> basically, since you can have something like 14:33 < bridge> ```rs 14:33 < bridge> let param = match x.parse() { 14:33 < bridge> Ok(p) => p, 14:34 < bridge> Err(e) => { 14:34 < bridge> eprintln!("Error in param: {e}"); 14:34 < bridge> continue; 14:34 < bridge> } 14:34 < bridge> } 14:34 < bridge> ``` 14:34 < bridge> heinrich why u think it should be a separate command 14:34 < bridge> you can model `continue` as `!` which can be converted into any arbitrary type, thus the two branches of the `match` can return the same type 14:34 < bridge> no perf gain at all + it was already multifunctional + more work to make it behave differently 14:36 < bridge> seems to be still mostly useless, as explained in the blog post :/ 14:40 < bridge> It's extremely finnicky to get working and it's slow. Can't recommend unless you are a container veteran and have a beastly pc 14:40 < bridge> damn 14:41 < bridge> https://github.com/ddnet/ddnet/pull/7691#pullrequestreview-1795439527 14:41 < bridge> i don’t understand what he means 14:41 < bridge> 14:41 < bridge> tbh Heinrich i have seen 2 other ppl implement this on their own and many more expressing their desire for it 14:42 < bridge> i don’t think your fundamental disagreement but unwillingness to actually code it yourself should stand in the way of what many players want 14:42 < bridge> my implementation is brief, non-intrusive, works and fills the need that most ppl have 14:49 < bridge> I'll try to see where the error comes from. please report an issue on github 14:49 < bridge> do we use it in threads? 14:51 < bridge> `strtod` e.g. returns `NaN` if you input `"nan"` with any case 14:53 < bridge> Oh yes, I totally forgot you could explicitly ask for a nan while focusing on the error states 14:53 < bridge> you can keep it unformatted and ask someone else to format it 14:54 < bridge> i dealt with it 15:09 < bridge> of course fokkonaut instantly responds 15:09 < bridge> no, you would get stuck either at some big value if addition always rounds down to the same number, or you'll get stuck at infinity which is a valid value for floating points 15:09 < bridge> that sounds like infinity 15:12 < bridge> yep, `HUGE_VAL` is defined as infinity on my machine 15:13 < bridge> tricky 15:13 < bridge> @ryozuki 😬 15:13 < bridge> gog sorce 15:14 < bridge> Its stupid 15:14 < bridge> it could be a good idea if all popular game modes but ddrace weren’t closed 15:14 < bridge> noby will not have a community, bombay wont be official, blockZ cant be hosted on ddnet, and much more 15:14 < bridge> fng as well 15:15 < bridge> u have instant alarm + notification when an issue has the words "mods" and "open-source"? 15:15 < bridge> oh 15:15 < bridge> i misread 15:15 < bridge> xdd 15:15 < bridge> then 1 year of "special case" handling for kog 15:15 < bridge> yea that’s straight up ridiculous 15:15 < bridge> I'm pretty sure we can get noby to open his sources. the only reason not to do it was laziness so far, AFAIK 15:15 < bridge> all of this makes it very stupid to really force this 15:15 < bridge> what’s the gain anyway 15:15 < bridge> Pushing tw open sourceness 15:15 < bridge> longevity of the game 15:16 < bridge> if ppl want to keep ripping each other off in their shitty block clients then let them 15:16 < bridge> pushing open-sourceness in an open-source game 15:16 < bridge> one must imagine sisyphus happy 15:16 < bridge> block srvs i mean xd 15:17 < bridge> @heinrich5991 even if it's lazyness from noby or whatever, i think with this approach communities will kinda lose their purpose (indicating official servers etc) 15:17 < bridge> tbh it’s not necessarily against the spirit of teeworlds to have a closed game. it would be non permissive otherwise 15:17 < bridge> as a closed src mod cant be a community and therefore is on the black market of servers 15:18 < bridge> Something broke the rcon console: 15:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188123393522925608/DDNet_UjLn7tA8OX.gif?ex=65996123&is=6586ec23&hm=2ab31484c14160165e408abd41893d5c7d90c48a9096ea319b870badcbd2ad15& 15:18 < bridge> well the point is to make you want to go oss 15:18 < bridge> LOL 15:18 < bridge> I understood that 15:18 < bridge> *you* 15:19 < bridge> anyway Heinrich can u respond to smth 15:19 < bridge> I just dont think it should be enforced 15:19 < bridge> anythgng rly 15:19 < bridge> waiting 2 sleep 15:19 < bridge> new incremental mod added to ddnet where you gain lines in the rcon 15:19 < bridge> I'm a fan of having discussion on github, discussions here will be forgotten 15:19 < bridge> True 15:19 < bridge> @fokkonaut has been the only one to actually comment on the issue I opened 15:19 < bridge> well I responded to both of ur reviews 15:20 < bridge> yes 15:21 < bridge> in both of the PRs I recently commented on, there's a comment by me that is more recent than a comment of yours, I think 15:21 < bridge> watching ddnet repo would destroy my inbox 15:21 < bridge> i blame this on the gh mobile app 15:21 < bridge> i get no notifications and i had to manually refresh to see it 15:27 < bridge> Is that with nightly? Doesn't happen to me there. Which operating system? 15:28 < bridge> Yes, nightly. I can't reproduce it. :/ Only restarting the client helped 15:28 < bridge> Win11 64bit 15:28 < bridge> Maybe something not initialized correctly 15:29 < bridge> idk what im looking at anyway 15:29 < bridge> Was this after joining a server or did you do something else like logout or clear the console? 15:30 < bridge> Clearing the console seems to fix that, don't know what causes it though 15:31 < bridge> I connected a dummy, that's all. (wasn't authed on my primary tee) 15:31 < bridge> I never clear my console, but I did logout via bind 15:32 < bridge> I used `bind kp_1 "rcon_login ; rcon show_ips 1; rcon status; rcon dump_antibot; rcon logout"` to be more precise 15:34 < bridge> discuss with me fellas 16:00 < ChillerDragon> ayo once i said we need https://mclo.gs/ for ddnet 16:01 < ChillerDragon> i started with syntax highlight and probably will rq there but its kinda public and ready to use already 16:01 < ChillerDragon> https://logs.zillyhuhn.com/?url=https://paste.zillyhuhn.com/jT 16:01 < ChillerDragon> https://logs.zillyhuhn.com/?url=https://paste.zillyhuhn.com/dE 16:04 < bridge> xD 16:04 < bridge> such a chillerdragon feature 16:19 < bridge> test 16:21 < bridge> what the hell 16:21 < bridge> ```cpp 16:21 < bridge> Test 16:21 < bridge> ``` 16:21 < bridge> this is what i was trying to send 16:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188139411221782639/image.png?ex=6599700e&is=6586fb0e&hm=d258712140a9e6141ee5ac66d91a0f5d63aa4cc869fdaeec6a987a485ba4d1eb& 16:21 < bridge> discord's not letting me for some reason 16:22 < bridge> i super over-engineered it the first time 16:22 < bridge> i liked the logic i thought it was clever 16:27 < bridge> maybe one of my variable names is on some anti-injection blacklist 16:33 < bridge> kog should definitly not be a exception and removed 16:34 < ChillerDragon> removed from wat wowo 16:34 < bridge> a 16:34 < bridge> wowo 16:34 < bridge> wowo 16:34 < ChillerDragon> hot discussion foss 16:34 < bridge> chuller 16:34 < ChillerDragon> Uwun 16:34 < bridge> true 16:35 < bridge> i open my pc and put the same on gh in 5 mins 16:35 < bridge> Wdym 16:35 < bridge> so its not lost 16:35 < bridge> i always said we shouldnt give visibility to closed source 16:36 < bridge> we also shouldnt offer kog help with discord commands 16:36 < bridge> a bot should silently delete the msg and send a private dm 16:36 < bridge> its rly annoying 16:36 < bridge> i ofc would change my mind if kog becomes fully open source, web and all 16:37 < bridge> btw unique deserves more to be in the community list 16:37 < bridge> we are fully open source, web too 16:37 < bridge> open source btw 16:37 < bridge> no pfp, fock :feelsbadman: 16:38 < bridge> very true 16:38 < bridge> tim has not been responding to my msgs 16:39 < bridge> he is sadly not much into tw lately 16:39 < bridge> life 16:39 < bridge> usa servers db is not properly set up 16:39 < bridge> idk since when 16:39 < ChillerDragon> ddnet is not open source 16:39 < bridge> but i turned race servers off about a month ago 16:39 < ChillerDragon> it links spyware blobs 16:39 < bridge> still waiting for him to fix 16:40 < bridge> ddnet is open-source 16:40 < bridge> check https://github.com/ddnet/ddnet 16:40 < ChillerDragon> https://github.com/ddnet/ddnet/blob/88ee1566463e9e377d34600b47fd4b6be28ca57a/CMakeLists.txt#L3148 16:40 < ChillerDragon> where is the code for this dylib 16:40 < ChillerDragon> https://github.com/ddnet/ddnet/blob/88ee1566463e9e377d34600b47fd4b6be28ca57a/CMakeLists.txt#L3156 16:40 < bridge> that is not discord code 16:40 < ChillerDragon> where is the code 16:41 < bridge> is any open source code which relies on Microsoft’s CRT closed? 16:41 < bridge> all of DDNet code is open source. you can also (and by default) build without linking to closed source code 16:41 < bridge> https://www.gnu.org/philosophy/pragmatic.en.html 16:41 < bridge> > The GNU GPL is not Mr. Nice Guy. It says no to some of the things that people sometimes want to do. There are users who say that this is a bad thing—that the GPL “excludes” some proprietary software developers who “need to be brought into the free software community.” 16:41 < bridge> > 16:41 < bridge> > But we are not excluding them from our community; they are choosing not to enter. Their decision to make software proprietary is a decision to stay out of our community. Being in our community means joining in cooperation with us; we cannot “bring them into our community” if they don't want to join. 16:41 < bridge> on linux, at least 16:41 < ChillerDragon> ddnet.org ships code that is not public doesnt it? 16:41 < ChillerDragon> or ships binaries 16:41 < ChillerDragon> compiled by valve and discord 16:41 < bridge> shut up 16:41 < bridge> ddnet.org and steam ship binaries that are not open-source, yes 16:41 < ChillerDragon> i dont like that 16:42 < ChillerDragon> wouldnt call that foss 16:42 < bridge> feel free to be this specific 16:42 < bridge> but calling ddnet non-open source seems wrong to me 16:42 < ChillerDragon> i am specific 16:42 < bridge> no: 16:42 < bridge> > ddnet is not open source 16:43 < ChillerDragon> out of context xd 16:43 < bridge> lot of projects deliver the compiled software via a paywall but they host the full source code on a public site 16:43 < bridge> that is still open and free software 16:43 < bridge> xd 16:43 < ChillerDragon> irc newlines be like 16:43 < ChillerDragon> i followed up with why its not foss 1s after 16:43 < bridge> tw should have used AGPL 16:43 < bridge> pls no 16:44 < bridge> exclusive licenses are evil 16:44 < bridge> excluding* 16:44 < bridge> but that is incorrect. ddnet.org/steam builds of ddnet are not open source 16:44 < bridge> ddnet itself is very much open source 16:44 < ChillerDragon> except the scripts repo :p 16:44 < bridge> GPL is the most user respecting license 16:44 < bridge> What's this referring to? 16:44 < ChillerDragon> and anitbot axaxax 16:44 < bridge> $kog 16:44 < bridge> and the other 16:44 < bridge> which spams a wall 16:44 < bridge> dont promote this 16:44 < ChillerDragon> but i mean it is embracing closed source software by using discord and steam api @heinrich5991 16:44 < bridge> no, it just prevents specific ppl to use it 16:45 < bridge> send a private dm and delete the message 16:45 < ChillerDragon> and forcing that onto all users that download ddnet from official channels 16:45 < bridge> no, it ensures users have the freedoms everyone should have 16:45 < bridge> fully owning a software u use 16:45 < bridge> that downlad ddnet *binaries* from ddnet.org 16:45 < ChillerDragon> yes 16:45 < bridge> that is the case with other OS licenses too 16:45 < bridge> one could argue, even more 16:45 < bridge> implement it in a sane way, I think it'd be accepted 16:45 < bridge> no because there will be devs using propietary licenses 16:46 < bridge> I see it as hard to do though 16:46 < bridge> this is why i link this article https://www.gnu.org/philosophy/pragmatic.en.html 16:46 < bridge> u have to be pragmatic in this world 16:46 < bridge> then remove license all together 16:46 < bridge> that is pragmatic 16:46 < bridge> you are just playing the game without breaking any rules 16:46 < bridge> that requires us to overthro goverments and copyright laws which is impossible 16:46 < bridge> u are not being realistic 16:46 < bridge> The 'other' no longer exists 16:46 < bridge> while this license is 16:47 < bridge> but it's governments and copyright laws that also have to protect your license in order to work 16:47 < bridge> yeah u cant change the game, u play the game smart 16:47 < bridge> so you are stabilizing the rights of companies 16:47 < bridge> its what copyleft does 16:47 < bridge> tf are u saying 16:47 < bridge> well your opinion 16:47 < bridge> yes its mine 16:47 < bridge> i use agpl everywhere now 16:47 < bridge> good for you 16:47 < bridge> sadly zwelf uses it too 16:48 < bridge> good 16:48 < bridge> sad 16:48 < bridge> zwelf understands 16:48 < bridge> he is also pretty based 16:48 < bridge> he required the wiki to use a plugin which doesnt directly load the yt videos 16:48 < bridge> for privacy reasons 16:48 < bridge> i admire him 16:48 < bridge> i think his ddnet physics have the potential to be used for a next gen ddnet 16:48 < bridge> but with AGPL it doesnt have my support at least 16:49 < bridge> that would be a step backwards compared to the cpp project 16:49 < bridge> no 16:49 < bridge> with agpl its even better 16:49 < bridge> i hope he makes it rly good 16:50 < bridge> this is how gpl thrives 16:50 < bridge> why gcc had so much impact 16:50 < bridge> ryo we trade reviews? 16:50 < bridge> > Consider GNU C++. Why do we have a free C++ compiler? Only because the GNU GPL said it had to be free. GNU C++ was developed by an industry consortium, MCC, starting from the GNU C compiler. MCC normally makes its work as proprietary as can be. But they made the C++ front end free software, because the GNU GPL said that was the only way they could release it. The C++ front end included many new files, but since they were meant to be linked with G 16:50 < bridge> and now clang is the "better" compiler 16:50 < bridge> or llvm generally 16:50 < bridge> sadly llvm has made things like NVVM be born 16:50 < bridge> its toxic af 16:50 < bridge> only thing i still use gcc is to get most perf 16:50 < bridge> i dislike llvm license the most 16:51 < bridge> > Consider GNU Objective C. NeXT initially wanted to make this front end proprietary; they proposed to release it as .o files, and let users link them with the rest of GCC, thinking this might be a way around the GPL's requirements. But our lawyer said that this would not evade the requirements, that it was not allowed. And so they made the Objective C front end free software. 16:51 < bridge> nu obj c wat 16:52 < bridge> xxxxxx' 16:53 < bridge> https://en.wikipedia.org/wiki/Public_domain#/media/File:Cc-public_domain_mark.svg 16:53 < bridge> the best logo 16:53 < bridge> 😏 16:53 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188147340662546483/CuwRGqqE9xQAAAAASUVORK5CYII.png?ex=65997770&is=65870270&hm=db2b1105fdc3264a481dea10ede15dccb5ba6f927ff76b7d37e2817faa4297b6& 16:53 < bridge> agpl logo is cooler xd 16:53 < bridge> ill add this logo in my web 16:55 < bridge> add vulkan logo 16:55 < bridge> lol 16:55 < bridge> bcs vulkan API is royalty-free 16:55 < bridge> 16:55 < bridge> and fast af 😏 16:58 < bridge> that's how true kings live 16:58 < bridge> 😏 16:58 < bridge> u all so religious 16:58 < bridge> @heinrich5991 pls dont ask me to remove comments 16:58 < bridge> i hope to one day be as passionate about something as you are about rust and vulkan 16:59 < bridge> on wiki? 16:59 < bridge> or wat 16:59 < bridge> its totally legit to say some private mods want monetary gain 16:59 < bridge> if you are not religious about cpp, why don't you try rust? 😉 16:59 < bridge> https://github.com/ddnet/ddnet/issues/7699 16:59 < bridge> i did try rust 16:59 < bridge> for over 1 week xd 16:59 < bridge> no 16:59 < bridge> too much brain power involved 16:59 < bridge> the "you" sounded to me like addressing Kaffeine 16:59 < ChillerDragon> @ryozuki i am suprised you with your agpl user rights whatever idiology are not bothered by discord 16:59 < bridge> cpp flows thru my fingers naturally 16:59 < bridge> and now you're telling him that he's doing it for possible monetary gain 17:00 < bridge> 😂 17:00 < bridge> and that's telling others what their intentions are 17:00 < bridge> which is not nice 17:00 < bridge> ok my you was like in 3rd person 17:00 < bridge> as in the person doing a privative mod 17:00 < bridge> can you replace it with "one"? 17:00 < bridge> then it's clear 17:00 < bridge> dude 17:00 < bridge> ur so pedantic sometimes 17:00 < bridge> why do u want to control what he saysa 17:00 < bridge> it does not even reflect on u 17:01 < bridge> let it go 17:01 < bridge> because I want the discussion to go somewhere. insults or things perceived to be insults help make the discussion go nowhere 17:01 < bridge> i've to admit, i much more rare need to open the rust "spec" (or google about rust behavior) than cpp behavior 17:01 < bridge> even tho i code in cpp for 10 years 17:01 < bridge> code in my brain is cpp 17:01 < bridge> ChillerDragon: its true im sad i have to use discord, but i dont want to be invisible socially and i need to talk to friends i cant be like stalkman, but yeah it may be idiotic but i still want agpl 17:02 < ChillerDragon> i see 17:02 < ChillerDragon> thats fair 17:02 < bridge> sad that drug dealers have ruined name of all the good open chat softwares 17:02 < ChillerDragon> like which 17:02 < bridge> the EU might help with that 🙂 17:02 < ChillerDragon> i am yet to discover good chat software @Ewan wat would u consider good? 17:03 < bridge> how so 17:03 < bridge> that doesn't sound like drug dealers, but rather someone trying to use drug dealers to fight against open chat software 17:03 < bridge> telegram, signal 17:03 < ChillerDragon> they suck ass 17:03 < bridge> telegram is goated 17:03 < ChillerDragon> telegram and signal are shit af 17:03 < bridge> i know my views are probably impossible but its nice to have some ideals 17:03 < ChillerDragon> telegram is closed src 17:03 < ChillerDragon> signal is literal spyware 17:03 < bridge> not discord specifically, but the dma forces some messengers to interoperate 17:03 < bridge> yea 17:03 < ChillerDragon> bound to your phonenumber 17:03 < bridge> telegram is open-source 17:03 < ChillerDragon> everything? 17:03 < bridge> open client 17:03 < bridge> open client 17:03 < ChillerDragon> isnt serrvers closed 17:03 < bridge> yea 17:03 < bridge> well vulkan is bad because it doesn't enforce me to write correct code, **BUT** it , IMO, makes 10000 more sense than OpenGL. 17:03 < bridge> 17:03 < bridge> It's much more clear to me what happens under the hood with it. 17:03 < ChillerDragon> thats not open source then 17:03 < bridge> @heinrich5991 i think google play store doesnt allow GPL apps 17:03 < bridge> idk if they allow MIT 17:04 < ChillerDragon> binding a chat protocol to a phone number is fucked 17:04 < ChillerDragon> and should be illegal 17:04 < bridge> apple does not, not sure about google 17:04 < bridge> @mpft join the vulkan force 17:04 < bridge> 17:04 < bridge> today 17:04 < bridge> 17:04 < bridge> not tomorrow 17:04 < bridge> I think they're working on it, ChillerDragon 17:04 < bridge> idek opengl 17:04 < ChillerDragon> signal? 17:04 < bridge> yes 17:04 < ChillerDragon> thats amazing i didnt know that 17:04 < ChillerDragon> holy 17:04 < ChillerDragon> there might be hope 17:04 < bridge> i think phone numbers should be more abundant so they not used anymore to identify someone 17:04 < bridge> i only do 2d greaphics usuauaully 17:04 < bridge> or just change phone number system 17:04 < bridge> https://techgage.com/wp-content/uploads/2018/03/Khronos-Vulkan-Logo-680x656.png 17:04 < bridge> vk has cool logos 17:04 < bridge> i know 17:04 < bridge> XD 17:05 < bridge> it's awesome 17:05 < bridge> good argument 17:05 < bridge> rust has only ugly logos 17:05 < bridge> vulkan has cool logos 17:05 < bridge> golang has worst logos 17:05 < bridge> rust has some cute logos 17:05 < bridge> ok not logos 17:05 < ChillerDragon> binding contacts/chats/2fa to some weird small device and a contract is such an unstable concept 17:05 < bridge> who is this asshole 17:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188150439951220746/12562442-golang-development-servics-2715713123.png?ex=65997a53&is=65870553&hm=0b735d70e55def7278d8b8c03945b2f8c598219246362fc3632308fce0988a16& 17:05 < bridge> https://tenor.com/view/ferris-rust-rustlang-crab-cute-gif-26396486 17:05 < bridge> i want to flush him down a toilet 17:05 < bridge> but not the crap crab 17:05 < bridge> xd 17:06 < bridge> does vulkan have waifus? 17:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188150526853009479/z30gb4g5vwea1.png?ex=65997a68&is=65870568&hm=b2420c5102a5d4330bde769c2263c2b58bb15b6dbe97f50765b0065c80054ed0& 17:06 < bridge> @jupeyy_keks u know there is a unsafe rust pet 17:06 < ChillerDragon> lmao @Ewan xd 17:06 < bridge> meet corro, the unsafe rust pet 17:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188150589134225568/corro.png?ex=65997a77&is=65870577&hm=6c0c601f3c5164935f596e74153509d446b99b03ed74cb405259549503b519a4& 17:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188150616271368263/EzDmTuJWgAUEg5h.png?ex=65997a7d&is=6587057d&hm=54954741ceb2dcd4b074e9c145a557afe97d2357ef1663462d227c386ba0d722& 17:06 < bridge> kek 17:06 < ChillerDragon> https://goran.krampe.se/nim/nim-logo2.png 17:06 < ChillerDragon> nimrocks 17:06 < bridge> https://pbs.twimg.com/media/DX-mmbxWkAAGbA4.jpg 17:06 < bridge> how did he create a black version 17:06 < bridge> looks even cooler 17:06 < bridge> i like more the one with text 17:07 < bridge> "forging ahead" 17:07 < bridge> or smth 17:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188150833175613440/VulkanCar_678x452.png?ex=65997ab1&is=658705b1&hm=71c8895ed7c568f385af4d1d8b39e37facd37eaba58f626394234fec02c6a13b& 17:07 < bridge> i like the other more 😄 17:07 < bridge> @jupeyy_keks 🤝 17:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188150939270533170/maxresdefault.png?ex=65997aca&is=658705ca&hm=7250faa00dc650b536c5bf5dab5e253ffea0de9ffca329ea0c39114794ead2be& 17:07 < bridge> 😬 17:08 < bridge> when vulkan 1.4 17:08 < bridge> vulkan is already too bloated 😬 17:08 < bridge> 17:08 < bridge> we need new API 17:09 < bridge> @jupeyy_keks but thanks to vulkan extensions u can easily add features right 17:09 < bridge> yeah, and validation layers etc. 17:09 < bridge> 17:09 < bridge> but they add like 3 new extensions per month xD 17:09 < bridge> stonks 17:11 < bridge> @heinrich5991 @jupeyy_keks i think a override on a virtual with default is still virtual right? 17:11 < bridge> from my understanding yes 17:11 < bridge> wdym 17:11 < bridge> and default also still implements the destructor chain 17:11 < bridge> how would you mark it non-virtual then? 17:11 < bridge> i made this changes with clangd suggestions 17:11 < bridge> override only works on virtual functions 17:12 < bridge> just remove the const stuff 17:12 < bridge> is there a difference between marking child class functions as `virtual` or not (e.g. if they're further derived)? 17:12 < bridge> i agree with heinrich, even tho i'd argument from different perspective xd 17:12 < bridge> override also makes it a error if the overriden signature doesnt mathc, while virtual doesnt and ucan get nifty bugs 17:12 < bridge> override is safer and better 17:12 < bridge> override also makes it a error if the overriden signature doesnt match, while virtual doesnt and ucan get nifty bugs 17:12 < bridge> I think override and virtual do different things 17:12 < bridge> you can't finalize a virtual function 17:12 < bridge> no, u can always override, until u used final 17:12 < bridge> not having to do with each other 17:13 < bridge> not having anything to do with each other 17:13 < bridge> yeah as long as its not marked final 17:13 < bridge> u can override i think 17:13 < bridge> override simply overrides any virtual fn, already implemented or not 17:13 < bridge> > In a member function declaration or definition, override specifier ensures that the function is virtual and is overriding a virtual function from a base class. The program is ill-formed (a compile-time error is generated) if this is not true. 17:13 < bridge> > 17:13 < bridge> > override is an identifier with a special meaning when used after member function declarators: it's not a reserved keyword otherwise. 17:13 < bridge> see 17:13 < bridge> it ensures 17:13 < bridge> yes 17:14 < bridge> you are overriding the vptr 17:14 < bridge> 17:14 < bridge> what else you mean? 17:14 < bridge> > ensures that the function is virtual and is overriding a virtual function from a base class 17:14 < bridge> ah, it makes it virtual 17:14 < bridge> perfect 🙂 17:15 < bridge> i also agree with jupstar gh comment 17:15 < bridge> we should use refs wherever possible 17:15 < bridge> so const matters 17:15 < bridge> xd 17:16 < bridge> well heinrich will say that it's less clear as func arguments 17:16 < bridge> but anyway, let's not trigger this discussion again xD 17:16 < bridge> its cuz cpp doesnt require u to do & right 17:16 < bridge> xd 17:16 < bridge> yes 17:16 < bridge> also does cpp optimize refs better 17:16 < bridge> ? 17:16 < bridge> since it knows its not null 17:17 < bridge> we should also do noalias 😬 17:17 < bridge> dunno, i guess it's about the compiler 17:17 < bridge> rust in cpp 17:21 < bridge> yeah, if cpp would have move by default, it would be less of a pain 17:22 < bridge> @heinrich5991 > There are advantages to keeping your code private, like discovering vulnerabilities but keeping them under wraps for personal benefit 17:22 < bridge> 17:22 < bridge> >> "discovering vulnerabilities but keeping them under wraps for personal benefit" does not sound like a benefit to the community at large at all. 17:22 < bridge> 17:22 < bridge> Sorry, I edited it my comment too late :| 17:23 < bridge> @ryozuki when do you start working for discord and add @ aliases so i can ping u with `@rust` 😏 17:23 < bridge> chiller once had it, sad it was removed 17:23 < bridge> xd 17:23 < bridge> No 17:24 < bridge> well that would at least eliminate the problem with const ref vs implicit copy 17:24 < bridge> and _many_ times you want a const ref as function parameter 17:24 < bridge> but anyway this alone wont work anyway 17:25 < bridge> there's a reason why rust kinda feels like the opposite syntax wise than cpp xD 17:25 < bridge> when u move u deal with lifetimes 17:25 < bridge> stuff u need to type out in rust, u dont need to do in cpp and wise versa 17:25 < bridge> stuff u need to type out in rust, u dont need to do in cpp and vise versa 17:25 < bridge> just avoid it if u want to stay sane 17:25 < bridge> you do not need those 4 bytes 17:25 < bridge> const ref is the way tho 17:26 < bridge> @heinrich5991 > There are advantages to keeping your code private, like discovering vulnerabilities but keeping them under wraps for personal benefit 17:26 < bridge> 17:26 < bridge> >> "discovering vulnerabilities but keeping them under wraps for personal benefit" does not sound like a benefit to the community at large at all. 17:26 < bridge> 17:26 < bridge> Sorry, I edited it my comment too late :| 17:26 < bridge> Edit: I changed it again so it makes more sense xD 17:26 < bridge> how do you want to approach insane gores, if u want to stay sane xd 17:26 < bridge> i hate gores 17:27 < bridge> ok ddnet calls it insane too 17:27 < bridge> when `nightmare` category 17:27 < bridge> insane is enough tbh 17:28 < bridge> tho 50pts for a 5* is not nearly enough 17:28 < ChillerDragon> we could also add a "free" category and shift stuff 17:28 < bridge> all those pts are the difference between 20k and 30k players nowadays 17:28 < bridge> the gap should be higher 17:28 < ChillerDragon> so novice becomes free and moderate novice and hard moderate and insane hard and insane is free for harder stuff 17:28 < bridge> idk 17:28 < bridge> categories are fine as is 17:28 < ChillerDragon> xd ofc they are 17:28 < bridge> gonna make some eggs 17:28 < ChillerDragon> egg 17:30 < bridge> `novice` 17:30 < bridge> `moderate` 17:30 < bridge> `brutal` 17:30 < bridge> `insane` 17:30 < bridge> `nightmare` 17:30 < bridge> `godlike` 17:30 < bridge> `supreme king` 17:30 < bridge> `SSGSSJ2` 17:30 < bridge> `Ultra instinct` 17:30 < bridge> my unbiased list 17:31 < bridge> `uninstall` 17:32 < bridge> stronghold 4 release in half an our! 17:32 < bridge> stronghold 4 release in half an hour! 17:32 < bridge> everyone in? 🙂 17:32 < bridge> `atomic` 17:32 < bridge> ohh 17:32 < bridge> `thread-safe` 17:32 < bridge> lets do towers 17:34 < bridge> i am so excited 17:34 < bridge> are u srs 17:34 < bridge> i am actually in 17:35 < bridge> im in 17:35 < bridge> ger10 17:35 < bridge> stormwind 17:35 < bridge> Who will post the first stronghold 4 tower :justatest: 17:35 < bridge> lets do a dev team 17:35 < bridge> 😬 17:35 < bridge> we wont pass 😬 17:37 < bridge> fine by me 17:37 < bridge> u want to voice? 17:37 < bridge> On all implementations that support infinities iirc 17:39 < bridge> learath are u in 17:39 < bridge> that seems really irrelevant. all machines I know of support IEEE754 17:39 < bridge> I'm sure we rely on IEEE754 somewhere more than "supporting infinities" somewhere 17:49 < bridge> where's my team 17:51 < bridge> dont see it 17:51 < bridge> ger 17:52 < bridge> im on 45.141.57.22:8336 17:52 < bridge> 45.141.57.22:8336 is an official DDNet server. 17:52 < bridge> 18:05 < bridge> Am outside 18:05 < bridge> come on in 18:09 < bridge> whats going on vc 18:09 < bridge> @cyberfighter yo 18:10 < bridge> ill do a little trolling 18:10 < bridge> hi 18:10 < bridge> got trolled by cf himself 18:11 < bridge> whats so special about stronghold 4 18:11 < bridge> numbero 4 is kinda exciting 18:11 < bridge> the final 18:11 < bridge> as if we needed the fourth one 18:12 < bridge> :troll: 18:19 < bridge> playing stronghold 4 18:52 < bridge> @mpft 18:52 < bridge> ubgane 18:52 < bridge> ingame 18:52 < bridge> what’s up 18:52 < bridge> I have been waiting on my brother to exit his friend’s house for like 15 minutes 19:07 < bridge> @robyt3 come voice 19:08 < bridge> does windows 11 have different emojis tf? 19:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188181462328016896/image.png?ex=65999737&is=65872237&hm=ff0b17e163dc38d3dfd342f49ff5b9a2bed979132ee7e8b9baee4215292521b9& 19:09 < bridge> win10 has black outlined so seems yep 19:37 < bridge> @robyt3 come voice 20:00 < bridge> <-StormAx> in which update ninja was removed to frozen tee? 20:05 < bridge> u mean the katana? 20:06 < bridge> <-StormAx> ye 20:08 < bridge> are you gonna fork it 20:11 < bridge> <-StormAx> ima gonna add oldshccool mode 20:11 < bridge> <-StormAx> ima gonna add oldshcool mode 20:29 < bridge> <-StormAx> so, does someone know? 20:31 < bridge> 16.2.2? I think when the HUD was added? 20:37 < bridge> @coke1465 ingame 20:39 < bridge> Ya, just checked, it was 16.2.2 20:39 < bridge> <-StormAx> yep 20:39 < bridge> <-StormAx> thanks 20:39 < bridge> No problem 21:28 < bridge> was fun but missed @learath2 21:33 < ChillerDragon> 17:35:53 bridge | we wont pass 😬 21:33 < bridge> yea sma 21:33 < bridge> same 21:33 < ChillerDragon> gg 21:33 < bridge> gg 21:34 < bridge> was funny run, happy end 21:34 < bridge> disney could have written this story better 21:34 < bridge> "funny run" 21:34 < bridge> 😏 21:34 < bridge> insider 21:34 < ChillerDragon> xd 21:35 < bridge> 😎 21:38 < bridge> was funny run, happy end 21:38 < bridge> disney couldn't have written this story better 21:41 < bridge> gg 21:42 < bridge> the last sweaty moments 21:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188220177763008704/ezpz.mp4?ex=6599bb46&is=65874646&hm=82604ea0aa641a425c5d8465b90b482b6ffff4be4854b463a2f42000941ccbe0& 21:42 < bridge> the hammer was so close to freeze xD 22:05 < bridge> enjoying your holiday ryo 22:09 < bridge> thanks 22:11 < bridge> @ryozuki first time i heard you 😬 22:11 < bridge> normal 22:11 < bridge> i dont talk much 22:11 < bridge> i usually also don't talk much, but today dunno 22:11 < bridge> same about u 22:11 < bridge> i fell out of my role 22:12 < bridge> xD 22:12 < bridge> u showed ur gores skill 22:12 < bridge> its so easy to notice 22:12 < bridge> the only gores part 22:12 < bridge> gj 22:12 < bridge> xdd insane gores skills 22:12 < bridge> xdd 22:12 < bridge> i suck hard at them 22:12 < bridge> they filler parts in ddnet 22:20 < bridge> ```c 22:20 < bridge> #include 22:20 < bridge> main(t,_,a) 22:20 < bridge> char 22:20 < bridge> * 22:20 < bridge> a; 22:20 < bridge> { 22:20 < bridge> return! 22:20 < bridge> 22:20 < bridge> 0 t<3? 22:20 < bridge> 22:20 < bridge> main(-79,-13,a+ 22:20 < bridge> main(-87,1-_, 22:20 < bridge> main(-86, 0, a+1 ) 22:20 < bridge> 22:20 < bridge> 22:20 < bridge> +a)): 22:20 < bridge> 22:20 < bridge> 1, 22:20 < bridge> t<_? 22:20 < bridge> main(t+1, _, a ) 22:20 < bridge> :3, 22:20 < bridge> 22:20 < bridge> main ( -94, -27+t, a ) 22:20 < bridge> &&t == 2 ?_ 22:20 < bridge> <13 ? 22:20 < bridge> 22:20 < bridge> main ( 2, _+1, "%s %d %d\n" ) 22:20 < bridge> 22:20 < bridge> :9:16: 22:20 < bridge> merry C christmas 22:20 < bridge> (try to run it) 22:22 < bridge> smells like 22:22 < bridge> 1. Xmas.c, winner of the 1988 International Obfuscated C Code Contest (udel.edu) 22:22 < bridge> 279 points by evah 3 hours ago | flag | hide | 40 comments 22:22 < bridge> indeed 22:22 < bridge> u got some nice memory 22:22 < bridge> or google 22:22 < bridge> xd 22:23 < bridge> let's test gpt xd 22:23 < bridge> gpt 3 too weak 22:23 < bridge> sadly no gpt-4 xd 22:28 < bridge> xd 22:41 < bridge> /\_/\ 22:41 < bridge> ( o.o ) 22:41 < bridge> >^,^< 22:41 < bridge> 22:41 < bridge> meow! 22:45 < bridge> i'm getting worse in cpp #7697 22:45 < bridge> 22:45 < bridge> @ryozuki ur fault 😬 22:45 < bridge> https://github.com/ddnet/ddnet/pull/7697 22:45 < bridge> too much rust 22:45 < bridge> xDDD 22:46 < bridge> it's funny how much stuff you can forget. 22:46 < bridge> 22:46 < bridge> i dunno if i remember anything useful from university anymore xD 22:46 < bridge> anyway 22:46 < bridge> c++ requiring so much complexity 22:47 < bridge> is a plus for rust 22:47 < bridge> in rust u dont deal with virtual destructor shenanigans 22:47 < bridge> yeah cpp is very complicated indeed 22:47 < bridge> 22:47 < bridge> u only notice it if u havent used it for a bit 22:48 < bridge> but i think it's still important to know that rust kinda still has vptr, just not stored into the object, but into the `dyn ...` 22:49 < bridge> but dinamic dispatch is rarer in rust 22:49 < bridge> but u kinda never have to think about it 22:49 < bridge> can we have a dev channel that simply links every single message that mentions rust? 🙂 22:49 < bridge> and idk it feels much simpler 22:49 < bridge> in rust this shenanigans are actually called 22:49 < bridge> "object safety" 22:49 < bridge> trait is object safe if it has the following qualities (defined in RFC 255): All supertraits must also be object safe. Sized must not be a supertrait. In other words, it must not require Self: Sized . 22:49 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1188237034406551572/image.png?ex=6599caf9&is=658755f9&hm=318f3bf99af5da68b5129d15589b55badee6e47ec7bea2a6924899552f53411c& 22:49 < bridge> you want to have a dev channel that copies the exact same content as this channel? rust 22:49 < bridge> https://doc.rust-lang.org/reference/items/traits.html#object-safety 22:50 < bridge> fair enough 22:51 < bridge> not only that. i'd say it even makes more sense like that. 22:51 < bridge> 22:51 < bridge> u can have POD data structures and still implement traits on it 22:52 < bridge> this is huge struggle with cpp xd 22:52 < bridge> u can ofc create a POD and put is as member field into your inherited class 22:52 < bridge> but not enforced = u'll forget it the other day 23:12 < bridge> yea the necessity for wrapper classes in cpp is a huge turnoff 23:12 < bridge> it has relatively limited metaprogramming capabilities