Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.tw/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories — IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2023-01-19 00:00:00Z and 2023-01-20 00:00:00Z
Avatar
any reason ddnet doesn't use submodules on a per-dependency basis?
Avatar
Why should it
Avatar
For one, if in the future this dependency repo doesn't exist, you won't be able to fetch them & will have to have them installed And it's just another link in the potential chain of failure, and I'm not sure what the benefit of having them in their own repo is other than observed tidiness If you need a particular configuration of snapshot commits in each submodule, I'm not sure why you can't just do that with each commit in the ddnet repo
Avatar
It would be more useful to use cmake sub directories
08:00
So it Auto compiles the dependencies
Avatar
I didn't realize it doesn't do that already. But that's not strictly related to how they're fetched
08:00
Just having a deps subdir or something makes more sense, in my opinion
Avatar
our dependencies are handled by package managers like apt
08:01
i doubt they would disappear, they are not on a github repo
08:01
actually, i would be more worried about github disappearing
Avatar
Anyway I don't see the breaking thing u mention. Old versions have old submodule commits
Avatar
I suppose this is something you couldn't do without having it the way it is now
Avatar
Ah yeah SDL is always fun on windows and macos
Avatar
Avatar
Ewan
I suppose this is something you couldn't do without having it the way it is now
this is my q answered then
08:04
i was just thinking about how I would have done it; by getting the deps directly in their own submodules
08:04
and i doubt having them in their own repo was the first choice/how it was from the start. there was probably something that made this necessary, right?
Avatar
I think the best is to use a packet manager. There is for example vcpkg https://vcpkg.io/en/index.html Or Conan but I dunno
vcpkg product homepage for C and C++ developers. Download, build, and manage C and C++ libraries for all platforms, buildsystems, and workflows.
Avatar
Avatar
Ryozuki
our dependencies are handled by package managers like apt
If that's the case, I would be kind of concerned
  • Releases of libraries that get published to package managers are more second-class instances than those on the upstream repo's main branch, which (if the library has competent maintainers) shouldn't break. Just because they are less common
  • Releases of libraries that get published to package managers may be much more prone to disappear or stop being maintained, because often times the demand isn't high enough or such deployment is handled by a third party
  • A break in your package-fetching CI or the package's local install scripts, or the package manager itself leaves you open to problems where submodules are more sound -- not perfect, but less prone to disappearance at any given moment
08:12
And if you're using a library that doesn't have a git instance somewhere (GH or GitLab), either host it yourself or find something more modern/better maintained 😃
08:13
In current year that's pretty much a necessity
08:14
I'm pretty much positive everything here has an official repository
08:14
Build steps are trivial
Avatar
Anyway. U'll need to accept almost all devs here are Linux devs and simply use the os package manager
Avatar
Yeah fair enough
08:16
Depending on system local libs is good practice if a solution like what you have in place is around
08:16
I just wonder why it's been executed this way...
Avatar
Probably BCS teeworlds did it like this
08:17
And the code base is over 13 years old
Avatar
Well that would have been a good answer from the start xD
Avatar
Good thing is, we added rust support which comes with cargo. Which handles dependencies cleanly
Avatar
Yeah... rust dependencies, maybe
Avatar
So maybe it changes in future anyway
Avatar
Avatar
Ewan
For one, if in the future this dependency repo doesn't exist, you won't be able to fetch them & will have to have them installed And it's just another link in the potential chain of failure, and I'm not sure what the benefit of having them in their own repo is other than observed tidiness If you need a particular configuration of snapshot commits in each submodule, I'm not sure why you can't just do that with each commit in the ddnet repo
it's to not balloon the size of the ddnet repo (edited)
Avatar
Avatar
Ewan
I'm pretty much positive everything here has an official repository
discord likely doesn't. sqlite3 doesn't want to be compiled from the repo. curl likely has one, not sure if they want to be compiled from the repo. rest I don't know about
Avatar
They don't want to be compiled from repo? That sounds kinda stupid xd
09:11
Is our SQLite built not self built?
Avatar
but from a release, I'd hope
09:14
The use of the amalgamation is recommended for all applications.
>
Building SQLite directly from individual source code files is certainly possible, but it is not recommended. For some specialized applications, it might be necessary to modify the build process in ways that cannot be done using just the prebuilt amalgamation source file downloaded from the website. For those situations, it is recommended that a customized amalgamation be built (as described below) and used. In other words, even if a project requires building SQLite beginning with individual source files, it is still recommended that an amalgamation source file be used as an intermediate step.
(edited)
Avatar
Mh ok. SQLite is weird anyway
Avatar
Avatar
Ewan
and i doubt having them in their own repo was the first choice/how it was from the start. there was probably something that made this necessary, right?
Repo size
Avatar
Submodules
Avatar
Ah heinrich answered before me
Avatar
Avatar
Ewan
Submodules
Hm, isn't that what we did?
Avatar
My question was more why they’re not in their own submodules
Avatar
You mean 1 per dependency? I guess we didn't really see a benefit to it
Avatar
Yeah. I was told that’s how it was done in teeworlds
Avatar
We don't mind straying from tw in those kinds of things, if we'd seen a reason to do that we would have I think
09:32
Why do you think it'd be better to have them in separate repos?
Avatar
I explained a fair amount above. If you’re interested you can scroll, it’s not too far
Avatar
I think main reason Ewan pointed out was those modules going extinct and being less stable than if they would be taken from a repository. (edited)
Avatar
Avatar
Ewan
For one, if in the future this dependency repo doesn't exist, you won't be able to fetch them & will have to have them installed And it's just another link in the potential chain of failure, and I'm not sure what the benefit of having them in their own repo is other than observed tidiness If you need a particular configuration of snapshot commits in each submodule, I'm not sure why you can't just do that with each commit in the ddnet repo
If 1 repo with all dependencies can disappear, so can more than one. I don't see why amount of repos changes anything.
09:38
Or maybe you mean have their entire sources instead of built dependencies?
Avatar
Yeah, but that’s not entirely feasible with the discord/curl/sqlite developments
09:39
But, some prebuilts is better than all, IMO
Avatar
I guess that is doable, we do already build some of these on our own
Avatar
I’d be happy to stage some changes
Avatar
>DDNet will outlive curl & sqlite
Avatar
Isn't that why you want them to build it themself?
09:50
Because I don't know how this world works. But their repos and modules will exist for a long time. No reason for them to delete it as long people use it. (edited)
Avatar
Building with dependency sources vs. dynamic libs can decrease package size with LTOs. My point wasn’t that the libraries would croak, but the ways they’re deployed & used by ddnet
Avatar
Avatar
Ewan
I’d be happy to stage some changes
I wouldn't start anything without getting some agreement in place. We have many scripts building stuff that'd need changing. If linkage is changing we have some interesting linking quirks (like the curl stub). Our CI times(or build times in general) are also a concern, so some sort of prebuilt dependency will need to be there. We have a flatpak release that'll need those too
10:02
It's not a trivial task and I wouldn't want you to waste your time just for something that would be rejected
10:03
CI times would change only if using the repo’s dependencies, which I wouldn’t expect to be default behavior for CI
10:04
If I could hear some more about the scripts & the curl stub, that’d be great
Avatar
im against adding them as submodules
10:07
even windows ones, ddnet-libs should be removed
10:07
and use a package manager
10:07
its c++/cmake fault they dont do it like cargo
Avatar
Avatar
Ewan
If that's the case, I would be kind of concerned
  • Releases of libraries that get published to package managers are more second-class instances than those on the upstream repo's main branch, which (if the library has competent maintainers) shouldn't break. Just because they are less common
  • Releases of libraries that get published to package managers may be much more prone to disappear or stop being maintained, because often times the demand isn't high enough or such deployment is handled by a third party
  • A break in your package-fetching CI or the package's local install scripts, or the package manager itself leaves you open to problems where submodules are more sound -- not perfect, but less prone to disappearance at any given moment
Releases of libraries that get published to package managers are more second-class instances than those on the upstream repo's main branch, which (if the library has competent maintainers) shouldn't break
I would say otherwise, im sure libraries you get from debian stable are way more first-class (with custom patches!) and fit more into the ecosystem than upstream
Releases of libraries that get published to package managers may be much more prone to disappear or stop being maintained
This depends on what package manager u use, on the linux world, i would say, debian, nixos, arch have quite the reputation, i would see it first that upstream disappears and debian still has the library in its ecosystem tbh.
And if you're using a library that doesn't have a git instance somewhere (GH or GitLab), either host it yourself or find something more modern/better maintained
???
Avatar
Avatar
Ryozuki
and use a package manager
Could a package manager accomodate our needs? Could it facilitate a source build of the dep like Ewan wanted
10:13
I don't think vcpkg can e.g.
Avatar
it does on linux
Avatar
Avatar
Ryozuki
Releases of libraries that get published to package managers are more second-class instances than those on the upstream repo's main branch, which (if the library has competent maintainers) shouldn't break
I would say otherwise, im sure libraries you get from debian stable are way more first-class (with custom patches!) and fit more into the ecosystem than upstream
Releases of libraries that get published to package managers may be much more prone to disappear or stop being maintained
This depends on what package manager u use, on the linux world, i would say, debian, nixos, arch have quite the reputation, i would see it first that upstream disappears and debian still has the library in its ecosystem tbh.
And if you're using a library that doesn't have a git instance somewhere (GH or GitLab), either host it yourself or find something more modern/better maintained
???
Good point on the second one. God knows how many packages I've submitted & abandoned
Avatar
i couldnt care less about windows tbh
10:14
xd
Avatar
Avatar
Ryozuki
i couldnt care less about windows tbh
You and Jupstar should form a game studio 😄
Avatar
I didn't realize we were talking about package manager's on the user's system. I thought you were saying you used something like apt with custom repos for the binaries in ddnet-libs
10:15
Package manager is totally irrelevant now because we're talking about the scenario where system libs are not being used
Avatar
in c++? i cant see that being realistic
10:16
we should use rust then
Avatar
Avatar
Ewan
Package manager is totally irrelevant now because we're talking about the scenario where system libs are not being used
Hmm?
10:16
It's not hard
Avatar
Avatar
Ewan
Package manager is totally irrelevant now because we're talking about the scenario where system libs are not being used
He is talking about one of those new package managers like vcpkg that is for C++ dependencies
Avatar
Harder in C++ but not hard lol
10:17
submodules w/ cmakelists or (god forbid) cmake fetch content
Avatar
Avatar
Learath2
He is talking about one of those new package managers like vcpkg that is for C++ dependencies
Yeah I meant way back in the convo
10:17
When apt was brought up
10:17
vcpkg is not a bad idea. just a righteous pain in the ass to use
Avatar
Avatar
Ryozuki
we should use rust then
Let's go
Avatar
This conversation is drifting all over the place 😄
Avatar
Let's static link drivers
Avatar
Avatar
Jupstar ✪
Let's go
Only 1 generation of gpu supported. Linux 6.1 required
Avatar
Sounds amazing
Avatar
Glibc must be rebuilt before launching the game, just to have the latest one 😛
Avatar
Imagine the world could drop support for old stuff every 4 years. Would be amazing and nice adventure. Much more fun than it is rn
Avatar
Plus no backward compatibility
Avatar
Min support vulkan 1.1
10:23
C++22/rustc 1.66.1
Avatar
Min support 32G ram
Avatar
C++22 LOL
Avatar
I seen projects do it
Avatar
Avatar
Ryozuki
C++22/rustc 1.66.1
Do C++26, there is a proposition out already
Avatar
Minimum should be C++26. No compromises
10:24
Damn
Avatar
Not crazy
Avatar
you stole my line
Avatar
Avatar
Learath2
Do C++26, there is a proposition out already
Ohh
10:24
Well i prefer rust
Avatar
It's indeed less crazy than many ppl here imply
Avatar
Avatar
Ryozuki
I seen projects do it
cpp22 is not a thing
Avatar
Avatar
Ryozuki
Well i prefer rust
Nightly?
Avatar
I also seen many projects simply do it
Avatar
Avatar
Learath2
Nightly?
Nightly has rly interesting stuff, but with stable havent had problems
Avatar
Avatar
Jupstar ✪
I also seen many projects simply do it
Polybar did it before distros had compilers ready. It was supremely annoying to use for a while ngl
Avatar
I defs miss features in rust
Avatar
Ah its ,23
Avatar
I could imagine blender will sooner or later also only allow new graphics apis. They already dropped opencl
Avatar
Avatar
Ryozuki
Nightly has rly interesting stuff, but with stable havent had problems
Me ❤️ Vec::drain_filter
Avatar
Avatar
Jupstar ✪
I defs miss features in rust
One always wants more
10:26
U can actually do it in a crate, or make a pr to rust
Avatar
Avatar
Ryozuki
One always wants more
Core language features tho
Avatar
Itertools often has features that get added to std
Avatar
Avatar
Jupstar ✪
I could imagine blender will sooner or later also only allow new graphics apis. They already dropped opencl
Didn't they also work like shit for like a year there on amd + linux?
Avatar
I recommend that crate
Avatar
Avatar
Jupstar ✪
Core language features tho
Oh like what
Avatar
Avatar
Learath2
Didn't they also work like shit for like a year there on amd + linux?
Yeah and now it's nice
Avatar
I want them to finish polonius
10:28
The better borrow checker, that accepts more valid programs
10:28
Defines the Rust borrow checker. Contribute to rust-lang/polonius development by creating an account on GitHub.
Avatar
A project like blender can rip the bandaid and have their userbase pressure the correct people to get it working. There are actual companies with capital using blender
10:28
I doubt a game has similar pull
Avatar
Avatar
Ryozuki
Oh like what
Cleaner default initialization. More constexpr. Some generic stuff. Many small things
Avatar
@Learath2 valve
Avatar
Avatar
Jupstar ✪
Cleaner default initialization. More constexpr. Some generic stuff. Many small things
The const is on going
Avatar
Avatar
Ryozuki
The better borrow checker, that accepts more valid programs
Last I checked this fixed some very odd edge cases, do you actually hit those often enough?
Avatar
@Jupstar ✪ they always add first a MVP so they dont shoot their foot with back compat in case smth was wrong
10:30
Mvp = min viable product
10:30
So not many features
10:30
Thats why const is limited
Avatar
Avatar
Ryozuki
@Learath2 valve
And even they gave up and shipped a bundle of deps, restricted to a specific version of ubuntu and called it a day 😛
10:31
Personally i want better async
10:32
Its not that bad but its hard to get right i guess
10:32
Thats why GATs need to have more features
10:32
Currently GATs are MVP
Avatar
Simpler stuff in rust async is actually pretty nice. It makes sense, works well, looks pretty
Avatar
Anyway atleast we have a systems lang with first class async
10:33
Idk what c++ has
10:33
But im sure its not that pretty
Avatar
C++ has async too 😄
Avatar
With the keyword?
Avatar
Nothing is pretty in C++ tho
Avatar
Tru xd
Avatar
When do u even want async?
Avatar
I think we are finally getting the keyword in C++26 😛
Avatar
I mean for io yes
10:34
But else it also makes code much harder
10:34
10:34
@Jupstar ✪ http makes lot of sense async
10:34
Lots of waiting etc
Avatar
Yeah, but e.g. when I sometimes see JavaScript devs using async for all shit
10:35
Just to make everything more complicated
10:37
Js is special kid
10:37
I want to abolish js
10:37
Thats why we need wasm
10:37
With direct DOM access
10:37
Not through js
Avatar
Avatar
Jupstar ✪
Just to make everything more complicated
Asynchronously running code in general is too complex for you?
Avatar
I mean there is async and async. If u use async and the async code is completely seperated code.. it's ofc smth different than using it in a stateful code, where async also means Ur state isn't updated until the code ran
Avatar
Ppl use nodejs for server side with the excuse to use the same lang as frontend
10:38
And call them fullstack devs (edited)
Avatar
Avatar
default
Asynchronously running code in general is too complex for you?
It's by nature more complex
Avatar
Its true its more complex
10:38
He is not saying he doesnt have the skills for it lel
Avatar
.NET async is worse than JS’s IMO
Avatar
Time race
Avatar
Tasks vs promises
10:39
Urgh
Avatar
Tokio gets it rly right along with the rust std
10:40
As in
10:40
task::spawn is identical to thread::spawn
10:41
Sux to be on mobilr
10:41
This metro has such bad connection in some stations
Avatar
Oh that is so easy
Avatar
Avatar
Jupstar ✪
Yeah, but e.g. when I sometimes see JavaScript devs using async for all shit
I guess async appears a lot in web presentation because of the prevalance of long running things. Api requests, animations, etc
Avatar
Avatar
Ryozuki
This metro has such bad connection in some stations
Do you get a connection while in the tunnel btw? As in not at a station yet?
11:01
s/?$//
Avatar
Yes i do
11:01
But some tunnels have worse
Avatar
Istanbul metro still doesn't have that, this is so sadge
Avatar
The ones nearer poorer zones, casuality? Doubt
11:02
Xd
Avatar
Everyone else figured it out, but not istanbul
Avatar
Avatar
Learath2
s/?$//
syntax error
Avatar
Tokio got it too, first class
Avatar
did you mean s/\?$//
Avatar
Avatar
heinrich5991
syntax error
Nooooo, discord ate one of my \
Avatar
Avatar
Learath2
I guess async appears a lot in web presentation because of the prevalance of long running things. Api requests, animations, etc
Yep. But everywhere, where the code will not block I wouldn't use it I think. But I understand that it makes sense in the ecosystem^^
11:04
Sry where the code will definitely block
11:04
As in no io
Avatar
Yeah, I've seen some questionable async use
Avatar
Async is good for waiting
11:06
Xd
Avatar
Could get the new insider word for ppl that always wait. Asyncs
11:40
pandoc 3.0 released
11:40
one of the best software
11:40
make a markdown document, and get the beauty of latex
11:41
ofc not the full latex power but its smth
Avatar
Allows clients to check if they are connected to a ddrace server I would like to know in a downstream client if I am connected to a ddnet server and can do things like use ddrace chat commands and similar.

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered pos...
Avatar
I recently got math notes from some guy and apparently he does them all in LaTeX, his notes look so cool
12:24
I tried doing latex notes once but I'm just not fast enough in writing it to take notes during a class
Avatar
the hard parts of doing latex notes in class are formulas
12:57
they're easy to write by hand but hard in latex
12:57
also commutative diagrams, but I got https://q.uiver.app/ for that nowadays
A modern commutative diagram editor with support for tikz-cd.
Avatar
one day, ddnet coded in latex 😄
Avatar
ChillerDragon BOT 2023-01-19 13:07:23Z
i watched some dudes latex/vim maffs notes setup on youtube once eventho i dont do maffs nor latex and still was kinda cool
Avatar
a site with a lot of cool stuff made in latex https://texample.net/tikz/examples/
13:12
some 3D graphes i made with latex for an internship
13:15
lol, crazy guy drew indian map https://texample.net/tikz/examples/india-map/
Avatar
Avatar
Chairn
yes i know, just read the README file
Didn't used MinGw64 in my life what am I supposed to do lol
Avatar
does anybody know if a server i have with hetzner (german company) in helsinki, finland, needs to abide to finnish law or german law?
13:31
btw soon ill migrate stuff i have in 2 servers to this new one, including the ddnet wiki
13:31
and fix the email for chinese qqq which for some reason rejects me for dmarc
Avatar
cheap hoster ips are often blacklisted for email
Avatar
maybe i can just use the gandhi provided smtp
13:32
they give 3 free emails per domain
13:32
xd
13:33
some chinese ppl tried to register but the email wont reach them and i get the rejection sadly
Avatar
self-hosting email is pretty broken
Avatar
works fine for me
Avatar
You won't reach anyone from Microsoft or Google to unblock your ip address
Avatar
well my emails reached google emails
13:35
but ye
Avatar
Then you're lucky that your ip was not previously used by a spammer
Avatar
but why when i have the technical prowess to self host a email and use the proper protocols get rejected
13:35
smh humanity at its best
Avatar
the technical part is solved and easy, making sure your emails actually reach every other email provider is impossible
13:39
anyway ill use gandhi
13:39
i hope they use smth reputable
13:40
https://www.gandi.net this i mean xd
➤ Manage your websites, your emails, your SSL certificates, and VPS servers. ✅ Domain name with included mailboxes, storage space, SSL certificate.
Avatar
Avatar
Ryozuki
does anybody know if a server i have with hetzner (german company) in helsinki, finland, needs to abide to finnish law or german law?
i believe you need to abide to local server law
13:41
ie finnish one here
Avatar
thats good
13:41
germany is stricter
13:41
iirc
13:41
with copyright for example
Avatar
Avatar
Ryozuki
does anybody know if a server i have with hetzner (german company) in helsinki, finland, needs to abide to finnish law or german law?
you need to abide by finnish, german, and laws of countries who you target
Avatar
oof xd
13:42
what if u target the world
13:42
thats odd
13:42
i target earthlings
13:42
poggers2
Avatar
de facto, you're probably fine if you don't do too illegal things
Avatar
yeah i dont plan to
13:42
but sometimes for example
13:42
user generated content
13:42
hetzner null routed my ip
13:43
till i deleted it
13:43
idk if i missed their notice or if they did it instantly
13:43
but damn
Avatar
Is there any wiki to compile ddnet with MinGw64?
Avatar
and it was all cuz my url shortener had a sus link someone added
Avatar
Avatar
Deleted User
Is there any wiki to compile ddnet with MinGw64?
should be like linux
13:43
iirc
13:43
mingw is linux like
Avatar
Avatar
Deleted User
Is there any wiki to compile ddnet with MinGw64?
just use cmake like this mkdir build && cd build cmake -G "MinGW Makefiles" <your ddnet options here> .. make
Avatar
Avatar
Deleted User
Is there any wiki to compile ddnet with MinGw64?
you can download the binaries here, btw: https://github.com/AllTheHaxx/AllTheHaxx/releases/tag/1.0.0
OFFICIALLY UNBANNED BY ALL MAJOR NETWORKS (DDNET, KOG, NOBY'S FNG) This client is officially legal now, no major network will ban you for using it No more hiding, broadcast what client you use...
pepeH 1
banhammer 1
Avatar
Avatar
heinrich5991
you can download the binaries here, btw: https://github.com/AllTheHaxx/AllTheHaxx/releases/tag/1.0.0
What would i do with them...?
Avatar
idk, what are you trying to compile? ^^
Avatar
Ath but i modified it
Avatar
this smells like bot client
f3 3
Avatar
Nope, I'm just playing with it lol
14:03
think_bot botmorning
14:03
new user flag + asks about compiling on windows
14:03
big red flag
Avatar
Why
Avatar
u are not the first to come here xD
Avatar
Playing on windows is a problem now ?
Avatar
Avatar
Ryozuki
u are not the first to come here xD
Duh
Avatar
Crucial question do u prefer C++ or Rust @Deleted User ?
Avatar
what do you expect from me regardless of my answer?
Avatar
wanted to see Ryozuki's anwser xD
14:06
anyway I agree that it seems sus that you "modified" ath and don't know how to compile and it's not a bot
Avatar
Avatar
Mr.Gh0s7
anyway I agree that it seems sus that you "modified" ath and don't know how to compile and it's not a bot
Because that's the first modded client I'm using lol
14:06
And also
14:07
I tried compiling normal teeworlds
14:07
But i couldn't lmao
Avatar
teeworlds 0.7 or ddnet?
Avatar
Teeworlds 0.6
14:08
Ddnet is even worse
Avatar
ddnet/teeworlds 0.7 should be the easiest
Avatar
Last time I remember being on windows I didn't have troubles compiling ddnet. Though for 16.6 upwards you will need rust I think
Avatar
ah yea, that's a bit annoying
Avatar
So
14:20
How do I compile my client lol
Avatar
I can help but first is it a bot client?
Avatar
Nope
14:20
Ofc you can add Lua scripts but that's your problem if u wanna cheat with it
Avatar
Do you think you would be banned for server for the modifications you've done?
Avatar
Nope, doesn't affect server side
14:22
@Mr.Gh0s7
Avatar
yeah I'm back rebooted to windows
Avatar
Avatar
Mr.Gh0s7
yeah I'm back rebooted to windows
Kk
14:26
I suggest to go DM to talk (edited)
Avatar
I'll answer once I've compiled DDNet
Avatar
K
Avatar
cleanest htop i seen
14:46
wont last long tho xd
Avatar
Avatar
Mr.Gh0s7
I'll answer once I've compiled DDNet
Does it take really that long ?
Avatar
I have problem with well windows and mingw but no. Last time was 4 mins
Avatar
DDraceNetwork, a free cooperative platformer game. Contribute to ddnet/ddnet development by creating an account on GitHub.
15:07
this lock makes my mac hang
15:07
when changing for example windowed to fullscreen
15:07
well, when i change it hangs, and then i control-c on lldb and its there
15:07
backtrace
Avatar
ChillerDragon BOT 2023-01-19 15:08:07Z
ryo on mac?
Avatar
frame #2: 0x000000018fe16ac4 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28 frame #3: 0x000000010001a3f4 DDNet`CGraphicsBackend_Threaded::WaitForIdle() + 80
15:08
got it from work ye
Avatar
ChillerDragon BOT 2023-01-19 15:08:36Z
wowo
15:08
when?
Avatar
since december
Avatar
ChillerDragon BOT 2023-01-19 15:08:52Z
old news
15:08
how u like it?
15:09
its like a bad joke of linux
Avatar
ChillerDragon BOT 2023-01-19 15:09:06Z
xd
Avatar
Avatar
Mr.Gh0s7
I have problem with well windows and mingw but no. Last time was 4 mins
Yeh got almost the same problem when compiling ddnet
15:12
I assume it's on opengl
Avatar
ogl 3.3
15:21
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x000000018fe8d564 libsystem_kernel.dylib`__psynch_cvwait + 8 frame #1: 0x000000018fec9638 libsystem_pthread.dylib`_pthread_cond_wait + 1232 frame #2: 0x000000018fe16ac4 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28 frame #3: 0x0000000100048934 DDNet`void std::__1::condition_variable::wait<CGraphicsBackend_Threaded::WaitForIdle()::$_2>(this=0x0000000105826690, __lk=0x000000016fdfc748, __pred=(unnamed class) @ 0x000000016fdfc700)::$_2) at __mutex_base:404:9 frame #4: 0x00000001000488b0 DDNet`CGraphicsBackend_Threaded::WaitForIdle(this=0x0000000105826600) at backend_sdl.cpp:150:19 frame #5: 0x00000001000b5478 DDNet`CGraphics_Threaded::WaitForIdle(this=0x00000001085d8000) at graphics_threaded.cpp:3205:14 frame #6: 0x00000001000b4784 DDNet`CGraphics_Threaded::Swap(this=0x00000001085d8000) at graphics_threaded.cpp:3134:3 frame #7: 0x000000010006e738 DDNet`CClient::Run(this=0x0000000108020000) at client.cpp:3300:19 frame #8: 0x0000000100077910 DDNet`::TWMain(argc=1, argv=0x000000016fdff7e8) at client.cpp:4726:11 frame #9: 0x0000000100166524 DDNet`main(argc=1, argv=0x000000016fdff7e8) at client.mm:21:10 frame #10: 0x000000018fb9fe50 dyld`start + 2544
15:21
@Jupstar ✪ this?
15:23
(lldb) thread list Process 12560 stopped * thread #1: tid = 0x25c78, 0x000000018fe8d564 libsystem_kernel.dylib`__psynch_cvwait + 8, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP thread #2: tid = 0x25cd2, 0x000000018fe9885c libsystem_kernel.dylib`sem_wait + 8 thread #3: tid = 0x25cd3, 0x000000018fe9885c libsystem_kernel.dylib`sem_wait + 8 thread #4: tid = 0x25cd4, 0x000000018fe9885c libsystem_kernel.dylib`sem_wait + 8 thread #6: tid = 0x25cd6, 0x000000018fe8ba1c libsystem_kernel.dylib`__workq_kernreturn + 8 thread #9: tid = 0x25cdf, 0x000000018fe8bb24 libsystem_kernel.dylib`__ulock_wait + 8 thread #10: tid = 0x25ce0, 0x000000018fe8ba1c libsystem_kernel.dylib`__workq_kernreturn + 8 thread #11: tid = 0x25ce1, 0x000000018fe8ba1c libsystem_kernel.dylib`__workq_kernreturn + 8 thread #12: tid = 0x25ce2, 0x000000018fe89cec libsystem_kernel.dylib`semaphore_wait_trap + 8, name = 'caulk.messenger.shared:17' thread #13: tid = 0x25cfa, 0x000000018fe89d70 libsystem_kernel.dylib`mach_msg2_trap + 8, name = 'AudioQueue thread' thread #14: tid = 0x25cfb, 0x000000018fe89cec libsystem_kernel.dylib`semaphore_wait_trap + 8, name = 'caulk.messenger.shared:high' thread #15: tid = 0x25cfd, 0x000000018fe8d564 libsystem_kernel.dylib`__psynch_cvwait + 8, name = 'AQConverterThread' thread #16: tid = 0x25cfe, 0x000000018fe89d70 libsystem_kernel.dylib`mach_msg2_trap + 8, name = 'com.apple.audio.IOThread.client' thread #17: tid = 0x25d1c, 0x000000018fe89d70 libsystem_kernel.dylib`mach_msg2_trap + 8, name = 'com.apple.NSEventThread' thread #18: tid = 0x25d2f, 0x0000000000000000 thread #19: tid = 0x25d6e, 0x000000018fe8d564 libsystem_kernel.dylib`__psynch_cvwait + 8, name = 'CVDisplayLink'
15:26
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
15:26
all threads
Avatar
Avatar
Ryozuki
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x000000018fe8d564 libsystem_kernel.dylib`__psynch_cvwait + 8 frame #1: 0x000000018fec9638 libsystem_pthread.dylib`_pthread_cond_wait + 1232 frame #2: 0x000000018fe16ac4 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28 frame #3: 0x0000000100048934 DDNet`void std::__1::condition_variable::wait<CGraphicsBackend_Threaded::WaitForIdle()::$_2>(this=0x0000000105826690, __lk=0x000000016fdfc748, __pred=(unnamed class) @ 0x000000016fdfc700)::$_2) at __mutex_base:404:9 frame #4: 0x00000001000488b0 DDNet`CGraphicsBackend_Threaded::WaitForIdle(this=0x0000000105826600) at backend_sdl.cpp:150:19 frame #5: 0x00000001000b5478 DDNet`CGraphics_Threaded::WaitForIdle(this=0x00000001085d8000) at graphics_threaded.cpp:3205:14 frame #6: 0x00000001000b4784 DDNet`CGraphics_Threaded::Swap(this=0x00000001085d8000) at graphics_threaded.cpp:3134:3 frame #7: 0x000000010006e738 DDNet`CClient::Run(this=0x0000000108020000) at client.cpp:3300:19 frame #8: 0x0000000100077910 DDNet`::TWMain(argc=1, argv=0x000000016fdff7e8) at client.cpp:4726:11 frame #9: 0x0000000100166524 DDNet`main(argc=1, argv=0x000000016fdff7e8) at client.mm:21:10 frame #10: 0x000000018fb9fe50 dyld`start + 2544
In the swap function is there a ifdef for macos
Avatar
#ifdef CONF_PLATFORM_MACOS if(str_find(GetVersionString(), "Metal")) WaitForIdle(); #endif
15:27
yep lol
15:28
do i remove it
Avatar
Avatar
Deleted User
Yeh got almost the same problem when compiling ddnet
I give up. Last time I had installed msys2 and did it that way.
Avatar
removed it and now its the WaitForIdle(); from the runbuffer in backend sdl
15:32
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x000000018fe8ca1c libsystem_kernel.dylib`__psynch_mutexwait + 8 frame #1: 0x000000018fec6144 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 84 frame #2: 0x000000018fec3a9c libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 248 frame #3: 0x000000018fe189e8 libc++.1.dylib`std::__1::mutex::lock() + 16 frame #4: 0x0000000100057f44 DDNet`std::__1::unique_lock<std::__1::mutex>::unique_lock(this=0x000000016fdfc4d8, __m=0x000000010601f650) at __mutex_base:118:61 frame #5: 0x0000000100047b30 DDNet`std::__1::unique_lock<std::__1::mutex>::unique_lock(this=0x000000016fdfc4d8, __m=0x000000010601f650) at __mutex_base:118:54 frame #6: 0x00000001000488ec DDNet`CGraphicsBackend_Threaded::WaitForIdle(this=0x000000010601f600) at backend_sdl.cpp:149:31 frame #7: 0x0000000100048474 DDNet`CGraphicsBackend_Threaded::RunBuffer(this=0x000000010601f600, pBuffer=0x000060000172cb00) at backend_sdl.cpp:122:2 frame #8: 0x00000001000a4a74 DDNet`CGraphics_Threaded::KickCommandBuffer(this=0x00000001085b8000) at graphics_threaded.cpp:795:14 frame #9: 0x00000001000b39d4 DDNet`CGraphics_Threaded::GotResized(this=0x00000001085b8000, w=1512, h=945, RefreshRate=120) at graphics_threaded.cpp:3000:2 frame #10: 0x00000001000d6c48 DDNet`CInput::Update(this=0x000000010580d000) at input.cpp:713:17 frame #11: 0x000000010006e07c DDNet`CClient::Run(this=0x0000000108020000) at client.cpp:3166:15 frame #12: 0x0000000100077964 DDNet`::TWMain(argc=1, argv=0x000000016fdff7e8) at client.cpp:4726:11 frame #13: 0x0000000100166544 DDNet`main(argc=1, argv=0x000000016fdff7e8) at client.mm:21:10 frame #14: 0x000000018fb9fe50 dyld`start + 2544 (lldb) (edited)
Avatar
Anyway. Macos is simply broken
15:43
U can try to call runbuffersinglethreaded
15:43
And remove content of waitforidle
15:46
maybe it has something to do with m1 being arm and memory orderings?
15:46
idk
Avatar
Question is where does the gl thread halt
15:48
BCS it's clearly that, that is causing it
Avatar
frame #0: 0x000000018fe8bb24 libsystem_kernel.dylib`__ulock_wait + 8 frame #1: 0x000000018fd42ef4 libdispatch.dylib`_dlock_wait + 56 frame #2: 0x000000018fd42ca8 libdispatch.dylib`_dispatch_thread_event_wait_slow + 56 frame #3: 0x000000018fd51d88 libdispatch.dylib`__DISPATCH_WAIT_FOR_QUEUE__ + 368 frame #4: 0x000000018fd51934 libdispatch.dylib`_dispatch_sync_f_slow + 144 frame #5: 0x00000001013ff034 libSDL2-2.0.0.dylib`-[SDLOpenGLContext explicitUpdate] + 216 frame #6: 0x00000001013ff9bc libSDL2-2.0.0.dylib`Cocoa_GL_SwapWindow + 284 frame #7: 0x00000001000493d4 DDNet`CCommandProcessorFragment_SDL::Cmd_Swap(this=0x00006000029186a0, pCommand=0x0000000108a8cdc0) at backend_sdl.cpp:217:3 frame #8: 0x0000000100049704 DDNet`CCommandProcessorFragment_SDL::RunCommand(this=0x00006000029186a0, pBaseCommand=0x0000000108a8cdc0) at backend_sdl.cpp:256:33 frame #9: 0x0000000100049f28 DDNet`CCommandProcessor_SDL_GL::RunBuffer(this=0x0000600002918690, pBuffer=0x000060000172cb80) at backend_sdl.cpp:353:12 frame #10: 0x0000000100047a6c DDNet`CGraphicsBackend_Threaded::ThreadFunc(pUser=0x000000010601f600) at backend_sdl.cpp:63:25 frame #11: 0x000000010049caf0 DDNet`thread_run(user=0x0000600000009560) at system.cpp:731:2 frame #12: 0x000000018fec906c libsystem_pthread.dylib`_pthread_start + 148
15:50
@Jupstar ✪ is this the gl thread?
Avatar
Avatar
Mr.Gh0s7
I give up. Last time I had installed msys2 and did it that way.
Can you explain why did you used mysys2 ?
15:54
And what do you mean by "i did it that way " ? (edited)
Avatar
Avatar
Ryozuki
@Jupstar ✪ is this the gl thread?
Yep
16:00
There it actually hangs
Avatar
Originally I thought this was a duplicate of #1682, but now I see that it is not. macOS on M1 windows will crash randomly when resizing if the rendering is not on the main thread. This model works ...
16:06
i think its this
16:07
This is on macOS with an M1 ARM64 CPU. Crash originally reported in ddnet/ddnet#4435 To reproduce run DDNet client, which uses SDL2. Resize or move the window to a different screen to trigger a cra...
16:07
xd
16:08
In that crash report, thread 0 (the main thread) is doing the OpenGL context update that was sent through a dispatch queue, while thread 9 (the rendering thread?) is calling into the GL to draw, and this is causing a crash inside the GL. Which leads me to ask: are you sure you used the right build of SDL? The latest in revision control, that changed the hint to default to synchronous updates? I don't see any threads that appear to be blocked, waiting on that update in the main thread to finish, which would cause this sort of crash.
16:08
from the sdl dev
16:08
idk if related
16:09
sdl2: stable 2.26.2
Avatar
I have no idea wtf he means
16:14
Sounds like he doesn't know either
Avatar
@Ryozuki try
16:33
SDL_HINT_MAC_OPENGL_SYNC_DISPATCH=1 ./DDNet
16:33
if that works we can use that and remove the workaround probably
16:36
ah they already defaulted to it
16:36
rip xd
Avatar
error happens
Avatar
just uninstall macos, its the only os that is even worse than windows
Avatar
Red* OS best OS
Avatar
CC #6289

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#usin...
Avatar
Avatar
x - extract
17:17
c - create
17:17
f - file
17:17
t - list
17:17
all you need
Avatar
@heinrich5991 iirc there was a diference if u use - or not
17:18
tar -xf vs tar xf
17:18
right?
Avatar
@Mr.Gh0s7 bro i need your help lmao
Avatar
i recently discovered tldr: https://github.com/tldr-pages/tldr it's really nice for quick command line flag lookup
📚 Collaborative cheatsheets for console commands. Contribute to tldr-pages/tldr development by creating an account on GitHub.
Avatar
Avatar
Ryozuki
rly handy
^ I found it from ryozuki
Avatar
Avatar
Deleted User
@Mr.Gh0s7 bro i need your help lmao
I kinda rq maybe I will try tommorow again.
Avatar
i hate docker
f3 2
21:30
i just wanted to copy a volume from server to server
21:30
it should be easy but i spent 1 hour
21:30
got it done tho
21:30
it rly should be 1 command to make a .tar
21:30
but no it needs to spun up a container to access it
21:30
stupid
Avatar
Avatar
Learath2
I wouldn't start anything without getting some agreement in place. We have many scripts building stuff that'd need changing. If linkage is changing we have some interesting linking quirks (like the curl stub). Our CI times(or build times in general) are also a concern, so some sort of prebuilt dependency will need to be there. We have a flatpak release that'll need those too
If I were to work on this, it would look more or less like this:
  • Build options from the user's perspective would remain the same, but they could mix & match which libraries they have installed locally
  • Instead of having the dependencies in one repository, there will be a subdirectory with a submodule per dependency; you could check them out selectively, maybe if your package manager doesn't have the library
  • System libs would remain the primary option It would require changes to cmake & other scripting; linkage would change when using repo-local libs; if it works well enough to use, then I'll adapt the flatpak release as well
Please let me know if you think this would be worthwhile
Avatar
What is the use case? Developers will use system libs exclusively, official build will use bundled libs exclusively. Why mix and match?
Avatar
if u have time check dm deen hellyeah
Avatar
I check channels before DMs to nudge people towards using public channels instead of DMing me all day. But don't worry, I still check them 😄
Avatar
well yeah, it involved an ip so feelsbadman
22:38
i also prefer public
Avatar
@heinrich5991 @Jupstar ✪ check this
22:46
g
22:46
no more typing "ok" commits
22:47
actually useful
22:47
im sure jupstar will use it
Avatar
Avatar
deen
What is the use case? Developers will use system libs exclusively, official build will use bundled libs exclusively. Why mix and match?
I explained in pretty good detail near the message I replied to. I can give you a recap if needed but I don't really want to repeat myself
Exported 424 message(s)