Top all-time · #12763
Agis Anastasopoulos
Personal blog · agis.ioprogramming
Agis Anastasopoulos's personal blog at agis.io covers programming. Since 2014, 6 different Hacker News readers have linked it 9 times, most often “Contiguous stacks in Go”. The last post was in 2019, but the archive is still widely read.
Too few sampled comments (5) to say how often HN recommends it.?
Why HN links it
HN readers link Agis Anastasopoulos's posts on the history of Go's goroutine stacks, mainly the move from segmented stacks to contiguous, copyable stacks. Commenters cite them to explain that change.
Summarised by Claude from a sample of 5 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Contiguous stacks in Go4 people · 4 mentions · first linked 2014-03-26
- Go transitioning to contiguous stacks (2014)3 people · 3 mentions · first linked 2022-06-30
What Hacker News says?
Go used to use noncontiguous stacks but they switched away from that model for performance reasons: https://agis.io/post/contiguous-stacks-golang/ . If you put the pid in the high bits of every pointer you run into problems when you want to support fork(). The child gets a new pid but keeps all the same pointers as its parent. And that only protects you against one process trying to read/write another process's memo…
Comment linking /post/contiguous-stacks-golang/
on “Linear Address Spaces: Unsafe at any speed”Submitted Contiguous stacks in Go as a story · 17 points
HN discussionNote that Go no longer uses segmented stacks (and hasn't since 1.2). It uses contiguous, copyable stacks: http://agis.io/2014/03/25/contiguous-stacks-in-go.html
Comment linking /2014/03/25/contiguous-stacks-in-go.html
on “New SSA Back End for the Go Compiler (2015)”Submitted Go transitioning to contiguous stacks (2014) as a story · 2 points
HN discussionGo has an interesting history surrounding its stacks. Originally the stack was a doubly linked-list (segmented stack), but it changed into a more vector-like format (contiguous stacks) in 1.3. Here's a pretty good write-up: http://agis.io/2014/03/25/contiguous-stacks-in-go.html
Comment linking /2014/03/25/contiguous-stacks-in-go.html
on “Coroutines and Fibers: Why and When”Submitted Dabbling in Erlang: A minimal introduction (comparing with Ruby) as a story · 2 points
HN discussionJust a small note: Go has also abandoned segmented stacks. They were a placeholder until Go got precise GC which enabled it to use contiguous stacks with pointer rewriting. Here's a good explanation of this – http://agis.io/2014/03/25/contiguous-stacks-in-go.html .
Comment linking /2014/03/25/contiguous-stacks-in-go.html
on “Ask HN: Rust concurrency vs. Go after drop of green threads and segmented stacks?”Submitted Dabbling in Erlang, part 2: A minimal introduction (2013) as a story · 1 points
HN discussionThis is bound to problems - slighest change in your stack - language, runtime, OS would affect that so much that it's completely pointless to rely on measures taken and apply them later (that to be said, this is perfectly valid choice when you are locked in - like in the embedded or game console world, but rarely that's the case outside) For example - https://go.dev/doc/go1.3#stacks https://agis.io/post/contiguous-s…
Comment linking /post/contiguous-stacks-golang/
on “How Much Memory Do You Need to Run 1M Concurrent Tasks?”