Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 01:18
    HertzDevil review_requested #11504
  • Nov 28 23:58
    HertzDevil synchronize #11504
  • Nov 28 16:33
    HertzDevil labeled #11504
  • Nov 28 16:33
    HertzDevil labeled #11504
  • Nov 28 16:33
    HertzDevil labeled #11504
  • Nov 28 16:32
    HertzDevil opened #11504
  • Nov 28 14:42
    oprypin review_requested #11496
  • Nov 28 14:41
    oprypin review_requested #11495
  • Nov 28 14:41
    oprypin synchronize #11395
  • Nov 28 14:28
    HertzDevil synchronize #11503
  • Nov 27 19:45
    mohd-akram synchronize #11439
  • Nov 27 19:14
    straight-shoota synchronize #11499
  • Nov 27 18:48
    mgomes ready_for_review #11482
  • Nov 27 18:20
    HertzDevil labeled #11482
  • Nov 27 18:20
    HertzDevil labeled #11482
  • Nov 27 18:17
    HertzDevil synchronize #11495
  • Nov 27 18:02
    HertzDevil labeled #11503
  • Nov 27 18:02
    HertzDevil labeled #11503
  • Nov 27 18:02
    HertzDevil labeled #11503
  • Nov 27 18:02
    HertzDevil opened #11503
George Dietrich
@Blacksmoke16
code is super gross because you cant reuse anything, but it would look much better with crystal-lang/crystal#8835
haha yea it is
mfiano
@mjfiano:matrix.org
[m]
It seems to be one of the most solid projects for sure
Sadly, I don't do any webdev these days anymore, so might use the logger or one of the decoupled things if anything.
George Dietrich
@Blacksmoke16
logger is built into the stdlib
mfiano
@mjfiano:matrix.org
[m]
Fair enough. Well there was one athena project i was thinking of using, but I forget what it was
George Dietrich
@Blacksmoke16
there is a CLI/console framework component that is currently in a working state, I just need to finish the docs on it tho
other than that, can deff use them independently. E.g. like the validator or serializer etc
mfiano
@mjfiano:matrix.org
[m]
Which project of yours (or other) would you say has the best docs? I would like to take a look at the tricks from the masters :)
George Dietrich
@Blacksmoke16
https://athenaframework.org they're all pretty well documented
mfiano
@mjfiano:matrix.org
[m]
(I am not very great at writing docs, probably because I have too many forever projects to get to that point)
George Dietrich
@Blacksmoke16
is fairly easy with crystal since it handles the bulk of the work if you give argument/return type restrictions
then you just need to fill in contextual information and examples
to tie everything together
mfiano
@mjfiano:matrix.org
[m]
Did you have to jump through a lot of hoops to get the style of the generated API docs to be like the Crystal website instead of that plain purple theme that is the default? I would prefer doing as minimal webdev as possible :)
mfiano
@mjfiano:matrix.org
[m]
hmm
George Dietrich
@Blacksmoke16
isnt too bad, mostly just config but the default purple one would deff be easier as you have to do pretty much nothing
and just setup CI to deploy it to GH pages
mfiano
@mjfiano:matrix.org
[m]
I'm actually surprised Crystal isn't used much for gamedev after looking at the library space. Seems like it'd be a great language for that.
Probably moreso to do with the user count
Ary Borenszweig
@asterite
Depending on how many lines of code a game usually has, I think having to compile the app in release mode all the time to get something fast (good FPS) and waiting 5+ minutes for that is probably not good. So I'm not sure Crystal is good for real world game development
From IRC (bridge bot)
@FromIRC
<straight-> Game dev is not just about FPS though
Ary Borenszweig
@asterite
What do you mean?
mfiano
@mjfiano:matrix.org
[m]
I hear that, though often times you shouldn't need very fast performance when testing, unless you have a complex physics system or something.
So debug builds should be acceptable
Gamedev is about trying to compute as much as you can on the GPU, getting it there in time if not all up front, and then moving it back to the CPU when you need prettier graphics :P
Ary Borenszweig
@asterite
Makes sense. Yeah, maybe you get decent fps in debug builds
mfiano
@mjfiano:matrix.org
[m]
Rust's compiler is pretty slow and their gamedev community seems to be really ramping up since the last couple years, and the compiler was about 3x slower a few years ago when it first started picking up.
Though I hear they are trying to leverage dynamic runtime dispatch more to account for all the monomorphism eating compile times.
Does crystal use boehm?
Ary Borenszweig
@asterite
Interesting. But I know that Rust has modular compilation, so maybe it's slow the first time? No idea how well that's optimized
Yes, it uses boehm, but just because it works out of the box without us having to do much work. Crystal could use a different GC, eventually
mfiano
@mjfiano:matrix.org
[m]
I hear it's slow because the transitive dependency graph often contains many different versions of the same libraries, and all their functions are monomorphized. I'm not sure if it does DCE or not for this though.
1 reply
Think it's more a case of, the language has a large library ecosystem and encourages lots of re-use, plus fundamental monomorphic behavior, over a slow compiler. Can't really compare it to Crystal in either regard.
yet, anyway
Ary Borenszweig
@asterite
I know oprypin has written some games, also I think in Windows
mfiano
@mjfiano:matrix.org
[m]
Does Crystal have concurrent hash tables?
Benjamin Wade
@RespiteSage
Someone may have implemented them, but I don't know.
mfiano
@mjfiano:matrix.org
[m]
Would like to see a lockless one with CAS or something
That has been a huge complaint with my Lisp work anyway
Benjamin Wade
@RespiteSage
I feel like I constantly have this question, but is there a way to access the actual, compile-time type of a generic type within a class instantiation but not in a method?
Like
class Indigent(T)
  {% puts T %}
end

a = Indigent(Int32).new
Except it actually works.
George Dietrich
@Blacksmoke16
idt because T is only specific to an instance
Benjamin Wade
@RespiteSage
Hm... Okay.
I was wanting to set constants based on what type it is (specifically, MIN/MAX).
I bet I could do those as getters and set them in the initializer, though.
Ary Borenszweig
@asterite
Constants will be inside Indigent, not Indigent(Int32)
That is, you can't have constants have different values depending on T
1 reply