home.social

#garbagecollector — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #garbagecollector, aggregated by home.social.

  1. So thinking about asyncronous programming again and how I probably need to ditch #dlang's GC if I want performance and then it hit me:

    Why tf is std.socket.Socket an heap-allocated, gc'd class to begin with?!?!

    It dosn't uses syncronized that would require a classes monitor, nor does it hold any significant amount of data.

    • a socket_t (fancy 32-bit fd)
    • a ushort-enum for the address family (16-bit)
    • and an bool under windows, which in an asyncronous context we could remove since all will always be non-blocking

    So in sum it holds 48-bit of data, while an pointer on modern systems will always be 64-bit (classes are always pointers / by ref in dlang).

    Sure, it "uses" inheritance for 2 wrapper types TCPSocket and UDPSocket, which dont actually do anything other than pre-filling the type/protocol arguments in the constructor, which dont even survive after the call to socket(2)...

    Is the std really that badly engineered at times or am I going crazy???

    #dlang #programming #development #async #networking #garbagecollector