Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2965

J

Jay Conrod

Personal blog · jayconrod.comprogrammingsystems

Jay Conrod's personal blog at jayconrod.com covers programming and systems. Since 2011, 24 different Hacker News readers have linked it 25 times, most often “A Tour of V8: Garbage Collection”. It is still writing: the last post was on 2026-10-29, and you can follow it by feed.

Visit the blog
25mentions?
24HN people?
2011–2026first – last linked?
Links on Hacker News per year · peak 6 in 2016

Too few sampled comments (11) to say how often HN recommends it.?

Why HN links it

HN readers link posts explaining V8 internals such as the Crankshaft optimizer and garbage collection, along with parser combinators and a Bazel intro. Commenters cite these posts as sources or give a few direct endorsements.

Summarised by Claude from a sample of 11 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

This post shows how to support new rule sets by writing an extension with Gazelle's new v2 API, which supports better error handling and dependency resolution. We'll also talk about how Gazelle works with extensions, how to support offline indexing, and how to write extensions in languages other tha

Most-linked posts?

  1. /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler
    6 people · 6 mentions · first linked 2015-10-07
  2. A Tour of V8: Garbage Collection
    4 people · 4 mentions · first linked 2014-12-14
  3. A tour of V8: object representation (2013)
    2 people · 2 mentions · first linked 2016-10-22

What Hacker News says?

  1. I can't make useful guesses about the V8 developers' reasoning, but I'd assume they considered several options and chose this one for a reason, concerning how much performance is at stake. I don't know about Crankshaft's inner workings, though, so I can't make qualified comments about it. Maybe something like http://jayconrod.com/posts/54/a-tour-of-v8-crankshaft-the-op... can answer some of your questions?

    Comment linking /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler

    on “The Monaco Code Editor”
  2. Submitted Leaving Google as a story · 462 points

    HN discussion
  3. jstimpfle · 2016-02-24Recommends
    I've looked at yacc + bison a couple times and always turned away before even attempting to write parsers in them. It's ugly as hell and I figure sprinkling code is hard to understand and thus insecure. However, have you tried parser combinators? Parsec (a Haskell library) is really nice if it fits your grammar. Here is one guy who simulated that in Python, also very nice: http://jayconrod.com/posts/37/

    Comment linking /posts/37/

    on “LL and LR in Context: Why Parsing Tools Are Hard (2013)”
  4. Submitted Internals of Go's new fuzzing system as a story · 184 points

    HN discussion
  5. Type information is used in JS engines to compile into native code. If type information is too vague or change you can have deoptimization[0] [0] http://jayconrod.com/posts/54/a-tour-of-v8-crankshaft-the-op...

    Comment linking /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler

    on “Instagram Makes a Smooth Move to Python 3”
  6. Submitted A tour of V8: object representation (2013) as a story · 46 points

    HN discussion
  7. No, V8 parses your Javascript source into an AST. From the AST, there are two paths it can take. The first step is the "full-codegen" compiler, which walks the AST directly and emits unoptimized native code: http://wingolog.org/archives/2011/07/05/v8-a-tale-of-two-com... If a function is hot, then it gets promoted to V8's optimizing compiler, which is currently Crankshaft but will soon be replaced by Turbofan. This…

    Comment linking /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler

    on “Node.js: Some quick optimization advice”
  8. Submitted Goroutines: The concurrency model we wanted all along as a story · 4 points

    HN discussion
  9. Interesting to note that character-based optimizations in JS engines are somewhat common (though this article is a few years old): http://jayconrod.com/posts/54/a-tour-of-v8-crankshaft-the-op...

    Comment linking /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler

    on “Tabs slower than spaces in Firefox”
  10. Submitted Burnout as a story · 4 points

    HN discussion
  11. I think they do this on the JS side: http://www.jayconrod.com/posts/52/a-tour-of-v8-object-repres... For example, an array can be specialized to hold just one datatype, or just a couple of fields, based on how it seems to be used, and then de-optimized later if the assumption is broken.

    Comment linking /posts/52/a-tour-of-v8-object-representation

    on “JVM Anatomy Quarks: Compressed References”
  12. Submitted Water simulation demo in WebGL (2012) as a story · 4 points

    HN discussion
  13. dilyevsky · 2024-12-10Recommends
    Jay Concord’s blog is pretty good intro: https://jayconrod.com/tags/bazel

    Comment linking /tags/bazel

    on “Bazel 8.0”
  14. Submitted Integration tests are best tests as a story · 3 points

    HN discussion
  15. Sure, megamorphic code requires a JIT. But it's a trivial one so I don't count it. :) Essentially, if you have the expression: z = x + y If you statically can't know the types of x and y, you must do an expensive method lookup. You call some variant of the plus function if x and y are floats, another if they are strings or lists and so on. So a good runtime notes the types of x and y the first time the expression is…

    Comment linking /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler

    on “Jitterdämmerung”
  16. Submitted Life of a Go Module as a story · 3 points

    HN discussion
  17. It'd be related to inlining a function since size is a common rule there. Some searching turns up this[1] article on crankshaft from three years ago, which lists the restrictions as ">600 source characters including whitespace or 196 AST nodes". [1] http://jayconrod.com/posts/54/a-tour-of-v8-crankshaft-the-op...

    Comment linking /posts/54/a-tour-of-v8-crankshaft-the-optimizing-compiler

    on “A Python-to-JavaScript Transpiler with BabelJS and SourceMaps”
  18. Submitted Tutorial: Function Interposition in Linux as a story · 2 points

    HN discussion
  19. rurban · 2015-07-23Recommends
    Oops, I mixed up the two phases. Marking is incremental (also in v8), and sweeping is parallelizable. http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collectio... gives a good overview of good GC techniques, championed in earlier lisps and functional languages.

    Comment linking /posts/55/a-tour-of-v8-garbage-collection

    on “Go GC: Latency Problem Solved [pdf]”
  20. Submitted Preserving comments when parsing and formatting code as a story · 1 points

    HN discussion
  21. jwmerrill · 2014-12-14Recommends
    > The professional educator dialect of English is not very approachable for the layman. I think Dan's blog is largely pitched at other professional educators. All professions develop their own technical vocabulary. As an analogy, I recently enjoyed an article about the implementation of the v8 garbage collector by Jay Conrod: http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collectio... Here's a sample paragraph:…

    Comment linking /posts/55/a-tour-of-v8-garbage-collection

    on “What Students Do (And Don't Do) in Khan Academy”
  22. Submitted A tour of V8: Garbage Collection (2013) as a story · 1 points

    HN discussion
  23. Submitted A Tour of V8: Garbage Collection as a story · 1 points

    HN discussion
  24. Submitted A Tour of V8: Garbage Collection as a story · 1 points

    HN discussion
  25. Submitted A simple interpreter from scratch in Python (part 1) as a story · 1 points

    HN discussion

Search all of HN for jayconrod.com

Linked by the same people?