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
    T

    Taylor Cramer

    tmandry.gitlab.io · Personal blog · on HN since 2018

    Taylor Cramer (tmandry) writes about Rust, focusing on async/await, compiler internals, language design proposals and Bazel builds.

    Visit blogRSSHN submissions
    Languages & CompilersProgramming
    What HN says

    HN commenters cite it for Rust language design, such as the contexts and capabilities proposal and the explanation of buffered stream polling.

    Stats for nerds
    16HN people shared it
    13linked in comments
    425story points
    Aug 2025last shared
    2020people per year2025

    Top posts on HN

    1. 1
      How Rust optimizes async/await
      1 person · 351 points · first shared 2019 · 123 comments on HN
    2. 2
      Contexts and Capabilities in Rust
      7 people · 43 points · first shared 2021 · 4 comments on HN
    3. 3
      Rust compiles async/await: Program analysis
      3 people · 17 points · first shared 2019 · 1 comments on HN
    4. 4
      Making Async Rust Reliable
      3 people · 6 points · first shared 2024 · 1 comments on HN
    5. 5
      Bazel: A high-level build tool for your polyglot codebase
      2 people · 6 points · first shared 2018 · Discussion on HN
    6. 6
      `for await` and the battle of buffered streams
      2 people · 1 points · first shared 2023 · Discussion on HN
    7. 7
      Keep the main thing the main() thing
      1 person · 1 points · first shared 2024 · Discussion on HN
    8. 8
      2023 03 01 scoped tasks
      1 person · first shared 2025

    What HN people wrote when they linked it

    • still_grokkingJan 2023

      > I like Rust's pragmatism.

      Me too.

      But Scala is also a very pragmatic language. If you want something academic go for Haskell.

      > Allow limited operator overload.

      Nitpick: Scala does not have any operators. So it doesn't have operator overloading at all.

      Scala simulates operators by infix method syntax.

      Instead of writing `1.+(2)` you can just write `1 + 2`. But the later is the same method call as the first one!

      > Eschew HKT for a simpler abstractions.

      AFAIK HKTs are more or less "just postponed" in Rust, AFAIK.

      People would like to add them of course. The discussion goes on forever by now. Some small insight (there is much more when you look for it):

      https://github.com/rust-lang/rfcs/issues/324

      https://internals.rust-lang.org/t/higher-kinded-types-the-difference-between-giving-up-and-moving-forward/3908/7

      > Don't go in the deep end with type power, nor too much in opposite direction and avoid any complicated feature.

      While having a full ML style type system with afine types on top, and quite some other type level mechanics up to singleton types?

      Sure sure, no power in here. :-)

      > The more powerful feature the more abusable it is, and Scala loves the power at all cost.

      Everything is "abusable". This is not an argument.

      But that Scala loves power at all cost is simply not true. The contrary is.

      Just to cite one of the most influential post in Scala land of all times:

      https://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html

      This, and the…

    • insanitybitNov 2022

      Nice, love to see posts where people give their experience like this. It's a rare thing.

      > the Cargo compiler

      Really small thing, cargo is a build tool, not a compiler. `rustc` is the main compiler, cargo wraps that and provides helper utilities for stuff like package/ project management.

      > Detecting an out-of-bounds access at compile time requires a deeper analysis of the code that would significantly slow down compilation time (which is already too slow IMO).

      The compiler actually is likely doing this stuff already because it's trying to optimize away any branches. I bet it already can see in these basic examples that the panic is unconditional. There are crates that leverage this fact, like `no-panic`, to try to see if your code is panicking.

      Also worth noting that "panic" is kinda like a runtime exception in Java and it can be caught. In fact it's automatically caught at the thread boundary - that's going to just be the main thread in your example.

      > This section is about a recent behavior I observed where our team woke up to one of our crates’ (dependencies’) dependencies starting to panic in production under specific conditions

      Bummer! Especially for a crate as popular as reqwests. My suggestion would be to assume any code can panic and build around that. That means a few things.

      1. It means to test your code. Integration tests are great for catching bugs like this, even a basic smoke test would likely catch it.

      2. Use a control plane that will automatically…

    • demurgosApr 2024

      The poll_progress post linked above explains the situation. When polling the overall stream, you alternate between awaiting in the buffered interface or in the subsequent adapters. This is because the different futures are not peers with regard to the executor, but there's a chain of futures and `FilterMap` only calls `poll` on its parent when it's done with the current item.

      This post was also helpful to understand the issue: https://tmandry.gitlab.io/blog/posts/for-await-buffered-streams/

    • footaApr 2023

      There's been some side work towards defining dynamic scoping for rust. E.g., allow functions to declare a dependency on some value or type, and then require callers to either pass that dependency explicitly, or have it on their dependencies.

      One of the proposed uses was for allocators.

      https://tmandry.gitlab.io/blog/posts/2021-12-21-context-capabilities/ is one of the more cogent proposals.

      I don't think any of these has made substantial progreess towards being approved though.

    • ameliaquiningAug 2025

      Most Rust ORMs and query builders expose a transaction API that takes a closure and runs it inside the transaction, rolling back on unwind or (in most cases) if it's not explicitly committed. This is the most common idiom in Rust for dealing with situations where you want to pass extra data to or from a cleanup routine. Unfortunately, for the async use case in particular it happens to be unsound: https://tmandry.gitlab.io/blog/posts/2023-03-01-scoped-tasks/

    • nextaccounticAug 2023

      This is actually a serious proposal for the Rust language, it's called contexts and capabilities

      Here's a blog post from 2021 https://tmandry.gitlab.io/blog/posts/2021-12-21-context-capabilities/

      This isn't implemented yet, and the proposal never matured into a proper RFC, but there's high interest for some solution along those lines

    Related

    Rust Blogblog.rust-lang.org533 people

    Announcing Rust 1.0

    Rust Blog
    Company · last shared 2026
    Ralf Jungralfj.de99 people

    There is no memory safety without thread safety

    Ralf Jung
    Personal · last shared 2026
    Rain (sunshowers)sunshowers.io17 people

    Debugging a rustc segfault on Illumos

    Rain (sunshowers)
    Personal · last shared 2025
    Aaron Turonaturon.github.io49 people

    Zero-cost futures in Rust

    Aaron Turon
    Personal · last shared 2025
    Aria Beingessnerfaultlore.com92 people

    C isn't a programming language anymore

    Aria Beingessner
    Personal · last shared 2026
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    PingCAP Blogpingcap.com123 people

    Generics and Compile-Time in Rust

    PingCAP Blog
    Company · last shared 2026
    boatsboats.gitlab.io71 people

    Async and Await in Rust: a full proposal

    boats
    Personal · last shared 2026