this post was submitted on 16 Feb 2025
132 points (94.6% liked)

Technology

66156 readers
7950 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related content.
  3. Be excellent to each other!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
  9. Check for duplicates before posting, duplicates may be removed
  10. Accounts 7 days and younger will have their posts automatically removed.

Approved Bots


founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] sugar_in_your_tea@sh.itjust.works 1 points 3 weeks ago* (last edited 3 weeks ago)

The GC in Go is fantastic IMO since it runs in a separate thread. I used it since 1.0 (switched our product from node.js), and dealt with all the the pain of an imprecise GC (fixed in 1.5?) and all the little improvements to arrive at it's current state.

The main issues I have with it are pretty core to the language, unfortunately, such as:

  • interface{} is basically a void*, but since it's a fat pointer, it can hold nil without itself being nil, which can happen by accident
  • runtime reflection is a bad habit, but it's unfortunately really common
  • it's really easy to deadlock by making stupid mistakes; if it had automatic unlocking based on scope (like Rust, or something like Python's context managers), we could solve this, but defer just isn't good enough
  • no destructors - with destructors, we could build a solution to deadlocks

Maybe they fixed some of those issues, idk, I haven't used it for several years. I did use it for about 10 years though.