Feed: Pascal's Scribbles Title: Long-form Texts on Interesting Details of Computers Date: Wed, 15 Apr 2020 18:00:00 -0400 Link: https://deterministic.space/several-months-of-reading-material.html
It seems especially recently I’ve come across more and more long-form texts (think: hour-long blog posts; free books; series of posts). I especially like the ones that go into the very fine details of some niche topic and maybe also ramble a bit about completely unrelated but highly entertaining asides. And while I will probably never have enough time to read them all, I decided to at least collect some of them here for future reference. I’ll do my best to add summaries, and to update this list semi-regularly.
Contents
“Learn Rust With Entirely Too Many Linked Lists19” by Alexis Beingessner
(~180 pages; archived20)
The premise of this book is that writing a linked list is a beginner’s exercise in C but quite difficult to get right in Rust. So it takes that as an opportunity to do just what the title says: It teaches you Rust by implementing a linked list type in Rust, in five (as of April 2020) different ways.
Niches: data structures; linked lists; rust; smart pointers
Last update I saw: 2019-03-21
“Programming Algorithms21” by Vsevolod Domkin
(~300 pages; archived22)
Book covering a lot of different data structures and algorithms. “Its aim is to systematically explain how to write efficient programs and, also, the approaches and tools for determining why the program isn’t efficient enough.”
Niches: data structures; algorithms; lisp
Last update I saw: 2020-04-16
“Aspects of Rust” by multiple people
Several stand-alone posts by various people whose only connection is that they cover nice aspects of Rust.
Niches: rust
A half-hour to learn Rust23 (archived24)
Whirlwind tour through Rust as a language by Amos Wenger.
Typed Key Pattern25 (archived26)
By Aleksey Kladov.
The Secret Life of Cows27 (archived28)
The Clone-on-Write smart pointer explained by yours truly.
Newtype Index Pattern29 (archived30)
By Aleksey Kladov.
How to implement a trait for &str and &[&str]31 (archived32)
Some musing on traits and borrows by yours truly.
Declarative memory management33 (archived34)
By Amos Wenger. Introducing the complexities of memory management and the ways Rust tries to represent them in a nice roundabout way.
Return-type based dispatch35 (archived36)
By yours. By specifying at some later point in the code which type you want your function to return, the compiler can go back and fill in the blanks.
Working with strings in Rust37 (archived38)
By Amos Wenger. Following the memory management post, this looks at how strings are actually pretty complicated and what Rust does about them.
“Reading files the hard way” by Amos Wenger
Writing files seems like a solved problem. But that doesn’t mean we can’t solve it again from scratch.
Niches: POSIX; file systems; syscalls
“Making our own ping” by Amos Wenger
(archived48)
(archived52)
(archived66)
(archived72)
“Making our own executable packer” by Amos Wenger
“Parsing” by Aleksey Kladov
Not a real series of articles but a collection of posts by someone whose Github bio reads “Stuck writing parsers”.
Niches: parsers
“JavaScript Allongé105” by Reg “raganwald” Braithwaite
(~530 pages; archived106)
Niches: functional programming; obscure JavaScript
Last update I saw: 2019-04-26
“Crafting Interpreters107” by Robert Nystrom
(~800 pages; archived108)
Last update I saw: 2020-04-05
“A relatively simple Datalog engine in Rust109” by Frank McSherry
(~20 pages; archived110)
Building a datalog engine in Rust.
Niches: datalog
“Non-lexical lifetimes” by Niko Matsakis
One of the main features of the Rust language is the concept of ownership and lifetimes. This series of posts by Niko Matsakis, one of the designers of the Rust language, is about the theory and practical implementation of a revamped and more complete way of this in the Rust compiler. It starts in early 2016 and goes all the way to after they feature landed (end of 2018).
(archived134)
“Shifgrethor” by Without Boats
A proposed API for a GC in Rust.
“Rayon/Parallel Iterators” by Niko Matsakis
Niches: concurrency
“How Rust optimizes async/await” by Tyler Mandry
Niches: compilers; memory layout
“Writing an OS in Rust” by Philipp Oppermann
Niches: operating systems, assembler
“Learning Parser Combinators With Rust179” by Bodil Stokke
(~60 pages; archived180)
Assuming you know Rust, this teaches you the fundamentals of parser combinators in a very hands-on way.
Niches: parsers
“Manish vs. ASCII” by Manish Goregaokar
Several posts on why assuming text is ASCII is unhelpful.
Niches: unicode
Let’s Stop Ascribing Meaning to Code Points181 (archived182)
tl;dr you should not index into a Unicode text, like, ever.
Breaking Our Latin-1 Assumptions183 (archived184)
Examples for scripts/languages that really don’t work if you assume you have ASCII text.
Picking Apart the Crashing iOS String185 (archived186)
Fun analysis of a Unicode rendering bug that crashed iOS devices.
“The Wayland Protocol[185]” by Drew DeVault
(~156 pages; archived[186])
“Wayland is the next-generation display server for Unix-like systems[…] This book will help you establish a firm understanding of the concepts, design, and implementation of [it]”.
Niches: wayland; graphics; protocols; unix
Links:
https://deterministic.space/feed.xml#learn-rust-with-entirely-too-many-linked-lists-by-alexis-beingessner (link)
↩︎https://deterministic.space/feed.xml#programming-algorithms-by-vsevolod-domkin (link)
↩︎https://deterministic.space/feed.xml#aspects-of-rust-by-multiple-people (link)
↩︎https://deterministic.space/feed.xml#reading-files-the-hard-way-by-amos-wenger (link)
↩︎https://deterministic.space/feed.xml#making-our-own-ping-by-amos-wenger (link)
↩︎https://deterministic.space/feed.xml#making-our-own-executable-packer-by-amos-wenger (link)
↩︎https://deterministic.space/feed.xml#parsing-by-aleksey-kladov (link)
↩︎https://deterministic.space/feed.xml#javascript-allong%C3%A9-by-reg-raganwald-braithwaite (link)
↩︎https://deterministic.space/feed.xml#crafting-interpreters-by-robert-nystrom (link)
↩︎https://deterministic.space/feed.xml#a-relatively-simple-datalog-engine-in-rust-by-frank-mcsherry (link)
↩︎https://deterministic.space/feed.xml#non-lexical-lifetimes-by-niko-matsakis (link)
↩︎https://deterministic.space/feed.xml#shifgrethor-by-without-boats (link)
↩︎https://deterministic.space/feed.xml#rayonparallel-iterators-by-niko-matsakis (link)
↩︎https://deterministic.space/feed.xml#how-rust-optimizes-asyncawait-by-tyler-mandry (link)
↩︎https://deterministic.space/feed.xml#writing-an-os-in-rust-by-philipp-oppermann (link)
↩︎https://deterministic.space/feed.xml#learning-parser-combinators-with-rust-by-bodil-stokke (link)
↩︎https://deterministic.space/feed.xml#manish-vs-ascii-by-manish-goregaokar (link)
↩︎https://deterministic.space/feed.xml#the-wayland-protocol-by-drew-devault (link)
↩︎https://rust-unofficial.github.io/too-many-lists/index.html (link)
↩︎https://web.archive.org/web/20200416132847/https://rust-unofficial.github.io/too-many-lists/index.html (link)
↩︎https://leanpub.com/progalgs/read (link)
↩︎https://web.archive.org/web/20200416131734/https://leanpub.com/progalgs/read (link)
↩︎https://fasterthanli.me/blog/2020/a-half-hour-to-learn-rust/ (link)
↩︎https://web.archive.org/web/20200416203813/https://fasterthanli.me/blog/2020/a-half-hour-to-learn-rust/ (link)
↩︎https://matklad.github.io/2018/05/24/typed-key-pattern.html (link)
↩︎https://web.archive.org/web/20200426170858/https://matklad.github.io/2018/05/24/typed-key-pattern.html (link)
↩︎https://deterministic.space/secret-life-of-cows.html (link)
↩︎https://web.archive.org/web/20200426171212/https://deterministic.space/secret-life-of-cows.html (link)
↩︎https://matklad.github.io/2018/06/04/newtype-index-pattern.html (link)
↩︎https://web.archive.org/web/20200426170901/https://matklad.github.io/2018/06/04/newtype-index-pattern.html (link)
↩︎https://deterministic.space/return-type-based-dispatch.html (link)
↩︎https://web.archive.org/web/20200426171311/https://deterministic.space/return-type-based-dispatch.html (link)
↩︎https://fasterthanli.me/blog/2019/declarative-memory-management/ (link)
↩︎https://web.archive.org/web/20200416202910/https://fasterthanli.me/blog/2019/declarative-memory-management/ (link)
↩︎https://deterministic.space/return-type-based-dispatch.html (link)
↩︎https://web.archive.org/web/20200426171311/https://deterministic.space/return-type-based-dispatch.html (link)
↩︎https://fasterthanli.me/blog/2020/working-with-strings-in-rust/ (link)
↩︎https://web.archive.org/web/20200416203533/https://fasterthanli.me/blog/2020/working-with-strings-in-rust/ (link)
↩︎https://fasterthanli.me/blog/2019/reading-files-the-hard-way/ (link)
↩︎https://web.archive.org/web/20200416203146/https://fasterthanli.me/blog/2019/reading-files-the-hard-way/ (link)
↩︎https://fasterthanli.me/blog/2019/reading-files-the-hard-way-2/ (link)
↩︎https://web.archive.org/web/20200416203148/https://fasterthanli.me/blog/2019/reading-files-the-hard-way-2/ (link)
↩︎https://fasterthanli.me/blog/2019/reading-files-the-hard-way-3/ (link)
↩︎https://web.archive.org/web/20200416203157/https://fasterthanli.me/blog/2019/reading-files-the-hard-way-3/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping/ (link)
↩︎https://web.archive.org/web/20200416134726/https://fasterthanli.me/blog/2019/making-our-own-ping/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-2/ (link)
↩︎https://web.archive.org/web/20200416145917/https://fasterthanli.me/blog/2019/making-our-own-ping-2/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-3/ (link)
↩︎https://web.archive.org/web/20200416145936/https://fasterthanli.me/blog/2019/making-our-own-ping-3/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-4/ (link)
↩︎https://web.archive.org/web/20200416145936/https://fasterthanli.me/blog/2019/making-our-own-ping-4/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-5/ (link)
↩︎https://web.archive.org/web/20200416145942/https://fasterthanli.me/blog/2019/making-our-own-ping-5/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-6/ (link)
↩︎https://web.archive.org/web/20200416145943/https://fasterthanli.me/blog/2019/making-our-own-ping-6/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-7/ (link)
↩︎https://web.archive.org/web/20200416145943/https://fasterthanli.me/blog/2019/making-our-own-ping-7/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-8/ (link)
↩︎https://web.archive.org/web/20200416150009/https://fasterthanli.me/blog/2019/making-our-own-ping-8/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-9/ (link)
↩︎https://web.archive.org/web/20200416150006/https://fasterthanli.me/blog/2019/making-our-own-ping-9/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-10/ (link)
↩︎https://web.archive.org/web/20200416150009/https://fasterthanli.me/blog/2019/making-our-own-ping-10/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-11/ (link)
↩︎https://web.archive.org/web/20200416150021/https://fasterthanli.me/blog/2019/making-our-own-ping-11/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-12/ (link)
↩︎https://web.archive.org/web/20200416150207/https://fasterthanli.me/blog/2019/making-our-own-ping-12/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-13/ (link)
↩︎https://web.archive.org/web/20200416150054/https://fasterthanli.me/blog/2019/making-our-own-ping-13/ (link)
↩︎https://fasterthanli.me/blog/2019/making-our-own-ping-14/ (link)
↩︎https://web.archive.org/web/20200416150207/https://fasterthanli.me/blog/2019/making-our-own-ping-14/ (link)
↩︎https://fasterthanli.me/blog/2020/whats-in-a-linux-executable/ (link)
↩︎https://web.archive.org/web/20200416203931/https://fasterthanli.me/blog/2020/whats-in-a-linux-executable/ (link)
↩︎https://fasterthanli.me/blog/2020/running-an-executable-without-exec/ (link)
↩︎https://web.archive.org/web/20200416203942/https://fasterthanli.me/blog/2020/running-an-executable-without-exec/ (link)
↩︎https://fasterthanli.me/blog/2020/position-independent-code/ (link)
↩︎https://web.archive.org/web/20200416203931/https://fasterthanli.me/blog/2020/position-independent-code/ (link)
↩︎https://fasterthanli.me/blog/2020/elf-relocations/ (link)
↩︎https://web.archive.org/web/20200416203942/https://fasterthanli.me/blog/2020/elf-relocations/ (link)
↩︎https://fasterthanli.me/blog/2020/the-simplest-shared-library/ (link)
↩︎https://web.archive.org/web/20200416203942/https://fasterthanli.me/blog/2020/the-simplest-shared-library/ (link)
↩︎https://fasterthanli.me/blog/2020/loading-multiple-elf-objects/ (link)
↩︎https://web.archive.org/web/20200416203946/https://fasterthanli.me/blog/2020/loading-multiple-elf-objects/ (link)
↩︎https://fasterthanli.me/blog/2020/dynamic-symbol-resolution/ (link)
↩︎https://web.archive.org/web/20200416203951/https://fasterthanli.me/blog/2020/dynamic-symbol-resolution/ (link)
↩︎https://fasterthanli.me/blog/2020/dynamic-linker-speed-and-correctness/ (link)
↩︎https://web.archive.org/web/20200416203951/https://fasterthanli.me/blog/2020/dynamic-linker-speed-and-correctness/ (link)
↩︎https://fasterthanli.me/blog/2020/gdb-scripting-and-indirect-functions/ (link)
↩︎https://web.archive.org/web/20200416203954/https://fasterthanli.me/blog/2020/gdb-scripting-and-indirect-functions/ (link)
↩︎https://fasterthanli.me/blog/2020/safer-memory-mapped-structures/ (link)
↩︎https://web.archive.org/web/20200416204004/https://fasterthanli.me/blog/2020/safer-memory-mapped-structures/ (link)
↩︎https://fasterthanli.me/blog/2020/more-elf-relocations/ (link)
↩︎https://web.archive.org/web/20200416204015/https://fasterthanli.me/blog/2020/more-elf-relocations/ (link)
↩︎https://fasterthanli.me/blog/2020/a-no-std-rust-binary/ (link)
↩︎https://web.archive.org/web/20200426170253/https://fasterthanli.me/blog/2020/a-no-std-rust-binary/ (link)
↩︎https://fasterthanli.me/blog/2020/thread-local-storage/ (link)
↩︎https://web.archive.org/web/20200504104021/https://fasterthanli.me/blog/2020/thread-local-storage/ (link)
↩︎https://matklad.github.io/2018/06/06/modern-parser-generator.html (link)
↩︎https://web.archive.org/web/20200426170539/https://matklad.github.io/2018/06/06/modern-parser-generator.html (link)
↩︎https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html (link)
↩︎https://web.archive.org/web/20200416155208/https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html (link)
↩︎https://matklad.github.io/2020/04/15/from-pratt-to-dijkstra.html (link)
↩︎https://web.archive.org/web/20200416155220/https://matklad.github.io/2020/04/15/from-pratt-to-dijkstra.html (link)
↩︎https://leanpub.com/javascriptallongesix/read (link)
↩︎https://web.archive.org/web/20200416145246/https://leanpub.com/javascriptallongesix/read (link)
↩︎http://craftinginterpreters.com/contents.html (link)
↩︎https://web.archive.org/web/20200411062649/http://craftinginterpreters.com/contents.html (link)
↩︎https://github.com/frankmcsherry/blog/blob/81e9555bbee110954f2c3d35caf86ea7e7612fa6/posts/2018-05-19.md (link)
↩︎https://web.archive.org/web/20200423163205/https://github.com/frankmcsherry/blog/blob/81e9555bbee110954f2c3d35caf86ea7e7612fa6/posts/2018-05-19.md (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2016/04/27/non-lexical-lifetimes-introduction/ (link)
↩︎https://web.archive.org/web/20200416170054/https://smallcultfollowing.com/babysteps/blog/2016/04/27/non-lexical-lifetimes-introduction/ (link)
↩︎http://smallcultfollowing.com/babysteps/blog/2016/05/04/non-lexical-lifetimes-based-on-liveness/ (link)
↩︎https://web.archive.org/web/20190917065228/http://smallcultfollowing.com/babysteps/blog/2016/05/04/non-lexical-lifetimes-based-on-liveness/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2016/05/09/non-lexical-lifetimes-adding-the-outlives-relation/ (link)
↩︎https://web.archive.org/web/20200416170116/https://smallcultfollowing.com/babysteps/blog/2016/05/09/non-lexical-lifetimes-adding-the-outlives-relation/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2017/02/21/non-lexical-lifetimes-using-liveness-and-location/ (link)
↩︎https://web.archive.org/web/20200416170119/https://smallcultfollowing.com/babysteps/blog/2017/02/21/non-lexical-lifetimes-using-liveness-and-location/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2017/03/01/nested-method-calls-via-two-phase-borrowing/ (link)
↩︎https://web.archive.org/web/20200416170122/https://smallcultfollowing.com/babysteps/blog/2017/03/01/nested-method-calls-via-two-phase-borrowing/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2017/07/11/non-lexical-lifetimes-draft-rfc-and-prototype-available/ (link)
↩︎https://web.archive.org/web/20200416170125/https://smallcultfollowing.com/babysteps/blog/2017/07/11/non-lexical-lifetimes-draft-rfc-and-prototype-available/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2018/04/27/an-alias-based-formulation-of-the-borrow-checker/ (link)
↩︎https://web.archive.org/web/20200416170128/https://smallcultfollowing.com/babysteps/blog/2018/04/27/an-alias-based-formulation-of-the-borrow-checker/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2018/06/15/mir-based-borrow-check-nll-status-update/ (link)
↩︎https://web.archive.org/web/20200416170132/https://smallcultfollowing.com/babysteps/blog/2018/06/15/mir-based-borrow-check-nll-status-update/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2018/10/31/mir-based-borrowck-is-almost-here/ (link)
↩︎https://web.archive.org/web/20200416170139/https://smallcultfollowing.com/babysteps/blog/2018/10/31/mir-based-borrowck-is-almost-here/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2018/11/01/after-nll-interprocedural-conflicts/ (link)
↩︎https://web.archive.org/web/20200416170144/https://smallcultfollowing.com/babysteps/blog/2018/11/01/after-nll-interprocedural-conflicts/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2019/01/17/polonius-and-region-errors/ (link)
↩︎https://web.archive.org/web/20200416170147/https://smallcultfollowing.com/babysteps/blog/2019/01/17/polonius-and-region-errors/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/ (link)
↩︎https://web.archive.org/web/20200416170150/https://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/ (link)
↩︎https://boats.gitlab.io/blog/post/shifgrethor-i/ (link)
↩︎https://web.archive.org/web/20200416172628/https://boats.gitlab.io/blog/post/shifgrethor-i/ (link)
↩︎https://boats.gitlab.io/blog/post/shifgrethor-ii/ (link)
↩︎https://web.archive.org/web/20200416172630/https://boats.gitlab.io/blog/post/shifgrethor-ii/ (link)
↩︎https://boats.gitlab.io/blog/post/shifgrethor-iii/ (link)
↩︎https://web.archive.org/web/20200416172636/https://boats.gitlab.io/blog/post/shifgrethor-iii/ (link)
↩︎https://boats.gitlab.io/blog/post/shifgrethor-iv/ (link)
↩︎https://web.archive.org/web/20200416172639/https://boats.gitlab.io/blog/post/shifgrethor-iv/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2015/12/18/rayon-data-parallelism-in-rust/ (link)
↩︎https://web.archive.org/web/20200423162646/https://smallcultfollowing.com/babysteps/blog/2015/12/18/rayon-data-parallelism-in-rust/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2016/02/19/parallel-iterators-part-1-foundations/ (link)
↩︎https://web.archive.org/web/20200423162647/https://smallcultfollowing.com/babysteps/blog/2016/02/19/parallel-iterators-part-1-foundations/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2016/02/25/parallel-iterators-part-2-producers/ (link)
↩︎https://web.archive.org/web/20200423162653/https://smallcultfollowing.com/babysteps/blog/2016/02/25/parallel-iterators-part-2-producers/ (link)
↩︎https://smallcultfollowing.com/babysteps/blog/2016/11/14/parallel-iterators-part-3-consumers/ (link)
↩︎https://web.archive.org/web/20200423162650/https://smallcultfollowing.com/babysteps/blog/2016/11/14/parallel-iterators-part-3-consumers/ (link)
↩︎https://tmandry.gitlab.io/blog/posts/optimizing-await-1/ (link)
↩︎https://web.archive.org/web/20200417142143/https://tmandry.gitlab.io/blog/posts/optimizing-await-1/ (link)
↩︎https://tmandry.gitlab.io/blog/posts/optimizing-await-2/ (link)
↩︎https://web.archive.org/web/20200417142149/https://tmandry.gitlab.io/blog/posts/optimizing-await-2/ (link)
↩︎https://os.phil-opp.com/freestanding-rust-binary/ (link)
↩︎https://web.archive.org/web/20200419114640/https://os.phil-opp.com/freestanding-rust-binary/ (link)
↩︎https://os.phil-opp.com/minimal-rust-kernel/ (link)
↩︎https://web.archive.org/web/20200419114644/https://os.phil-opp.com/minimal-rust-kernel/ (link)
↩︎https://os.phil-opp.com/vga-text-mode/ (link)
↩︎https://web.archive.org/web/20200419114648/https://os.phil-opp.com/vga-text-mode/ (link)
↩︎https://os.phil-opp.com/testing/ (link)
↩︎https://web.archive.org/web/20200419114651/https://os.phil-opp.com/testing/ (link)
↩︎https://os.phil-opp.com/cpu-exceptions/ (link)
↩︎https://web.archive.org/web/20200419114838/https://os.phil-opp.com/cpu-exceptions/ (link)
↩︎https://os.phil-opp.com/double-fault-exceptions/ (link)
↩︎https://web.archive.org/web/20200419114841/https://os.phil-opp.com/double-fault-exceptions/ (link)
↩︎https://os.phil-opp.com/hardware-interrupts/ (link)
↩︎https://web.archive.org/web/20200419114844/https://os.phil-opp.com/hardware-interrupts/ (link)
↩︎https://os.phil-opp.com/paging-introduction/ (link)
↩︎https://web.archive.org/web/20200419115000/https://os.phil-opp.com/paging-introduction/ (link)
↩︎https://os.phil-opp.com/paging-implementation/ (link)
↩︎https://web.archive.org/web/20200419115003/https://os.phil-opp.com/paging-implementation/ (link)
↩︎https://os.phil-opp.com/heap-allocation/ (link)
↩︎https://web.archive.org/web/20200419115006/https://os.phil-opp.com/heap-allocation/ (link)
↩︎https://os.phil-opp.com/allocator-designs/ (link)
↩︎https://web.archive.org/web/20200419115009/https://os.phil-opp.com/allocator-designs/ (link)
↩︎https://os.phil-opp.com/async-await/ (link)
↩︎https://web.archive.org/web/20200419115012/https://os.phil-opp.com/async-await/ (link)
↩︎https://bodil.lol/parser-combinators/ (link)
↩︎https://web.archive.org/web/20200423162949/https://bodil.lol/parser-combinators/ (link)
↩︎https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/ (link)
↩︎https://web.archive.org/web/20200430223156/https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/ (link)
↩︎https://manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions/ (link)
↩︎https://web.archive.org/web//https://manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions/ (link)
↩︎https://manishearth.github.io/blog/2018/02/15/picking-apart-the-crashing-ios-string/ (link)
↩︎https://web.archive.org/web/20200430223226/https://manishearth.github.io/blog/2018/02/15/picking-apart-the-crashing-ios-string/ (link)
↩︎