Top all-time · #1857
mcyoung
Personal blog · mcyoung.xyzprogrammingsystems
mcyoung is a personal blog at mcyoung.xyz about programming and systems. Since 2021, 38 different Hacker News readers have linked it 80 times, most often “Move Constructors in Rust: Is it possible?”. It is still writing: the last post was on 2026-05-04, and you can follow it by feed.
Too few sampled comments (13) to say how often HN recommends it.?
Why HN links it
HN readers link his systems-programming posts on Rust and low-level topics: small string types (yarns), LLVM IR, move constructors, SIMD, arenas, interpreters and compilers.
Summarised by Claude from a sample of 13 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Move Constructors in Rust: Is it possible?6 people · 6 mentions · first linked 2021-04-27
- A Gentle Introduction to LLVM IR5 people · 5 mentions · first linked 2023-08-01
- Designing a SIMD Algorithm from Scratch5 people · 5 mentions · first linked 2023-11-28
- I Wrote a String Type4 people · 4 mentions · first linked 2023-09-10
- Go's Weird Little Iterators4 people · 4 mentions · first linked 2024-12-16
- Why SSA?4 people · 4 mentions · first linked 2025-10-21
- Things You Never Wanted to Know About Go Interfaces4 people · 4 mentions · first linked 2024-12-12
- The Art of Formatting Code4 people · 4 mentions · first linked 2025-03-12
- Everything You Never Wanted to Know About Linker Script (2021)3 people · 4 mentions · first linked 2021-12-11
- The Best C++ Library3 people · 3 mentions · first linked 2025-07-14
What Hacker News says?
Well, that's partially true and partially false. Operators are syntax sugar for trait methods. Indeed, some operators can't be overloaded[1]. However, in that case, it's possible to make procedural macros that can handle such cases. SQL builder programmers, for example, wanted assignment operator overload. However, I'd argue that it's the wrong kind of overload to enable. The more code can do behind the scenes, the…
Comment linking /2021/04/26/move-ctors/
on “It's time to halt starting any new projects in C/C++”Submitted The Rust calling convention we deserve as a story · 291 points
HN discussion> If you were to use a pointer to a field, you'd need to correct that pointer during copies and moves. The "transfer" crate allows for this, though not in a way that's directly compatible with C++ move. (The latter has been discussed somewhat in https://mcyoung.xyz/2021/04/26/move-ctors/ but that's only a first look at the problem area, not aiming for 100% accuracy just yet.)
Comment linking /2021/04/26/move-ctors/
on “Things you can’t do in Rust (and what to do instead)”Submitted Parsing Protobuf like never before as a story · 248 points
HN discussionIMHO absolutely. The basics of lexer and parser are still there. Some of the optimizations are also relevant. You just cannot expect to read the book and be able to write GCC or LLVM from scratch(1). For learning deeper about other advanced topics there is: https://www.cs.cornell.edu/courses/cs6120/2025fa/ and https://mcyoung.xyz/2025/10/21/ssa-1/ So maybe writing a compiler with exactly one FE (for a simple languag…
Comment linking /2025/10/21/ssa-1/
on “Build a Compiler in Five Projects”Submitted Why SSA? as a story · 222 points
HN discussionI think the byteyarn library mentioned elsewhere in this thread meets your requirements: https://mcyoung.xyz/2023/08/09/yarns/
Comment linking /2023/08/09/yarns/
on “Small Strings in Rust: smolstr vs. smartstring (2020)”Submitted 3Hz Computer, Hold the Transistors as a story · 199 points
HN discussionI do, mcyoung wrote a great blogpost[1] about it! Good idea, I’m AFK at the moment but will add it to the ‘Similar Crates’ section once I’m back [1] https://mcyoung.xyz/2023/08/09/yarns/
Comment linking /2023/08/09/yarns/
on “Small Strings in Rust: smolstr vs. smartstring (2020)”Submitted Cheating the Reaper in Go as a story · 188 points
HN discussionReaders who like this article may also like a more recent one [0]. It designs a compact string with extra capabilities. The crate was released under the name byteyarn [1] [0] https://mcyoung.xyz/2023/08/09/yarns/ [1] https://docs.rs/byteyarn/latest/byteyarn/
Comment linking /2023/08/09/yarns/
on “Small Strings in Rust: smolstr vs. smartstring (2020)”Submitted What the hell is a target triple? as a story · 171 points
HN discussionThe author's blog is a FANTASTIC source of information. I recommend checking out some of their other posts: - https://mcyoung.xyz/2021/06/01/linker-script/ - https://mcyoung.xyz/2023/08/09/yarns/ - https://mcyoung.xyz/2023/08/01/llvm-ir/
Comment linking /2023/08/01/llvm-ir/
on “What the hell is a target triple?”Submitted Everything You Never Wanted to Know About Linker Script (2021) as a story · 118 points
HN discussion(I agree with other commenters' assessment about the importance of the authors complaints, and recommend others checkout the Go memory regions proposal.) For those interested, here's an article where Miguel Young implements a Go arena: https://mcyoung.xyz/2025/04/21/go-arenas/ . I couldn't find references to Go's own experimental arena API in this article. Which is a shame since it'd be if this knowledgeable author…
Comment linking /2025/04/21/go-arenas/
on “Golang's big miss on memory arenas”Submitted Nobody gets fired for picking JSON, but maybe they should? as a story · 44 points
HN discussionKnew it'd be SIMD. Such an underrated feature of modern CPUs. Hopefully with cross-platform SIMD in Rust and Golang, it'll be more commonly used. Thinking parallel gets you enormous speed benefits for any number of arbitrary algorithms: https://mcyoung.xyz/2023/11/27/simd-base64/
Comment linking /2023/11/27/simd-base64/
on “Summing ASCII encoded integers on Haswell at almost the speed of memcpy”Submitted The Alkyne GC as a story · 43 points
HN discussionlinks to his useful blogpost: A Gentle Introduction to LLVM IR https://mcyoung.xyz/2023/08/01/llvm-ir/
Comment linking /2023/08/01/llvm-ir/
on “Bringing the Instructions to the Data”Submitted C++ Library as a story · 36 points
HN discussionA follow-up post titled "Move Constructors Revisited" was posted some months later [0]. It covers some issues with the original design and how those may be addressed. [0]: https://mcyoung.xyz/2021/12/19/move-ctors-2/
Comment linking /2021/12/19/move-ctors-2/
on “Move Constructors in Rust: Is it possible? (2021)”Submitted Default Methods in Go as a story · 30 points
HN discussionA new Go protobuf parser [1] made the rounds here eight months ago [2] with a specialized VM that outperforms the default generated protobuf code by 3x. [1]: https://mcyoung.xyz/2025/07/16/hyperpb/ [2]: https://news.ycombinator.com/item?id=44591605
Comment linking /2025/07/16/hyperpb/
on “A tail-call interpreter in (nightly) Rust”Submitted Atomicless Per-Core Concurrency as a story · 21 points
HN discussion> It doesn't make sense to me that an embedded VM/interpreter could ever outperform direct code. You're adding a layer of abstraction and indirection, so how is it possible that a more indirect solution can have better performance? It is funny, but (like I’ve already mentioned[1] a few months ago) for serialization(-adjacent) formats in particular the preferential position of bytecode interpreters has been rediscove…
Comment linking /2025/07/16/hyperpb/
on “A tail-call interpreter in (nightly) Rust”Submitted Why SSA? as a story · 14 points
HN discussionSubmitted The Best C++ Library as a story · 11 points
HN discussionSubmitted Nobody Gets Fired for Picking JSON, but Maybe They Should? as a story · 10 points
HN discussionSubmitted Why SSA? as a story · 8 points
HN discussionSubmitted Go's Weird Little Iterators as a story · 8 points
HN discussion