Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Go Blog

    blog.golang.org · Company blog · on HN since 2010

    The official Go team blog, with posts on language features, tooling, the runtime, and design decisions.

    Visit blogHN submissions
    Languages & CompilersProgramming
    What HN says

    Commenters call the posts well written and cite them for topics like Go modules, UTF-8 strings, and the Go fonts.

    Stats for nerds
    529HN people shared it
    258linked in comments
    21Kstory points
    Jun 2021last shared
    2015people per year2021

    Top posts on HN

    1. 1
      Go 2, here we come
      4 people · 816 points · first shared 2018 · 516 comments on HN
    2. 2
      Toward Go 2
      11 people · 746 points · first shared 2017 · 640 comments on HN
    3. 3
      The Next Step for Generics
      5 people · 673 points · first shared 2020 · 664 comments on HN
    4. 4
      Go version 1 is released
      1 person · 582 points · first shared 2012 · 148 comments on HN
    5. 5
      Go 1.6 is Released
      3 people · 562 points · first shared 2016 · 354 comments on HN
    6. 6
      Go 1.5 is released
      3 people · 559 points · first shared 2015 · 103 comments on HN
    7. 7
      Go 1.7 is released
      2 people · 545 points · first shared 2016 · 133 comments on HN
    8. 8
      Go 1.1 is released
      1 person · 484 points · first shared 2013 · 290 comments on HN
    9. 9
      Go 1.4 is released
      3 people · 457 points · first shared 2014 · 257 comments on HN
    10. 10
      A Proposal for Package Versioning in Go
      3 people · 448 points · first shared 2018 · 322 comments on HN

    What HN people wrote when they linked it

    • cap10morganSep 2020

      I see a lot of comments in here about the v2+ rule’s reason for existing being to allow importing multiple major versions of a module. That’s not it at all. As the blog post (which was easily Googled by me and explains things quite well IMO) states: “If an old package and a new package have the same import path,
      the new package must be backwards compatible with the old package.”

      They’re trying not to break compatibility until a downstream developer explicitly opts in to that breakage. The simplest way to do that is to give the module a new name. And the simplest way to do that is append the major version to the name.

      Here is the post: https://blog.golang.org/v2-go-modules

      For more background on this principle, I recommend Rich Hickey’s Clojure/conj keynote “Spec-ulation” from 2016: http://blog.ezyang.com/2016/12/thoughts-about-spec-ulation-rich-hickey/

    • benhoytSep 2019

      In particular I know that Go's GC is optimized for very low latency (rather than throughput), and is not a stop the world GC. So I'm wondering why it doesn't work for games? Are the pauses still too high for games, or is he missing something? Benchmarks or concrete results in Go would be great here.

      Edit: specifics from https://blog.golang.org/ismmkeynote - Go hugely improved GC latency from 300ms before version 1.5, down to 30ms, then again down to well under 1ms but usually 100-200us for the stop the world pause. So I guess it is stop the world but the pauses seem ridiculously small to me. They guarantee less than 500 microseconds "or report a but", which seems more than fast enough for game framerates (16ms for 60Hz frames). Am I missing something?

    • crawshawNov 2017

      One good example is untyped constants. They form a large extension to the type system only present at compile time. It is a good example because there is an excellent blog post describing them in detail: https://blog.golang.org/constants

      In particular note the difference between

      const hello = "Hello, 世界"

      and

      const typedHello string = "Hello, 世界"

      one of these can be assigned to named string types, the other cannot.

      As a user of Go I find untyped constants to be extremely useful. They almost always do what I want without surprise. Implementing them however, is not trivial.

      A tricker example is embedding. It adds a lot of complexity to the type system. As a user, it can be a bit surprising, but I admit it is very useful.

    • attractivechaosSep 2018

      Which versioning scheme to use doesn't matter. What matters is how long you promise to keep a language "stable". Java and javascript have gone through many major versions, but the core of the language is largely stable. The same will be true to golang. Read their plan [1], the paragraph starting with "Go 2 must also bring along all the existing Go 1 source code". That is promised backward compatibility. There have been breaking changes in Perl5 (so it is not following semver), but most of the changes were minor and little user code was affected. Python 2=>3 is a disaster. If Julia goes through a dramatic change like that in 5 years, it will be worse.

      [1] https://blog.golang.org/toward-go2

    • ynezzDec 2017

      Source: https://blog.golang.org/toward-go2

      > I don't believe Go 2.0 will ever happen.

      "Once all the backwards-compatible work is done, say in Go 1.20, then we can make the backwards-incompatible changes in Go 2.0. If there turn out to be no backwards-incompatible changes, maybe we just declare that Go 1.20 is Go 2.0."

      So yeah, Go 2.0 might not even happen.

      > So far that page looks like when our government puts out "work commission" for any ongoing problem people complain about.

      I would love if my government would take some inspiration from such projects, namely from this:

      "We did what we always do when there's a problem without a clear solution: we waited."

    • zippoxerMay 2018

      One of Go's features is fast compilation, which wouldn't have been the case if it used LLVM.

      > a GC which is competitive with JVMs from 15 years ago

      I don't know where you got this impression, but it's absolutely wrong. Go's garbage collector is excellent. It has sub-millisecond pauses [1] (for multi-gig heaps), and it mostly runs in parallel to the application.

      You might be referring to Go's old GC, which was dropped when the current was introduced. [2]

      [1] https://groups.google.com/forum/?fromgroups#!topic/golang-dev/Ab1sFeoZg_8

      [2] https://blog.golang.org/go15gc

    Related

    Gopher Academy Blogblog.gopheracademy.com94 people

    So you want to expose Go on the Internet

    Gopher Academy Blog
    Publication · last shared 2026
    Jason Moironjmoiron.net36 people

    Go Performance Tales

    Jason Moiron
    Personal · last shared 2026
    Axel Wagnerblog.merovius.de29 people

    Diminishing returns of static typing

    Axel Wagner
    Personal · last shared 2025
    .NET Blogdevblogs.microsoft.com/dotnet390 people

    .NET 5.0

    .NET Blog
    Company · last shared 2026
    Rust Blogblog.rust-lang.org533 people

    Announcing Rust 1.0

    Rust Blog
    Company · last shared 2026
    Nim Blognim-lang.org404 people

    Nim 1.0

    Nim Blog
    Company · last shared 2026
    Coder Blogcoder.com66 people

    We improved the performance of a userspace TCP stack in Go

    Coder Blog
    Company · last shared 2026
    Crystal Blogcrystal-lang.org328 people

    Crystal 1.0 – What to expect

    Crystal Blog
    Company · last shared 2026