Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 90
  1. Generators with UnpinCell

    In July, I described a way to make pinning more ergonomic by integrating it more fully into the language.

  2. UnpinCell

    A variation on my previous design for pinned places has occurred to me that would be more consistent with Rust’s existing feature set.

  3. Pinned places

    In the previous post, I described the goal of Rust’s Pin type and the history of how it came to exist.

  4. Pin

    The Pin type (and the concept of pinning in general) is a foundational building block on which the rest of the the Rust async ecosystem stands.

  5. Ownership

    This post is meant as an explainer about how substructural type theory can be applied in programming language design.

  6. References are like jumps

    In a high-level language, the programmer is deprived of the dangerous power to update his own program while it is running.

  7. Coroutines and effects

    For the past few months I’ve been mulling over some things that Russell Johnston made me realize about the relationship between effect systems and coroutines.

  8. Iterators and traversables

    This is a brief note about the definition of iterator.

  9. Asynchronous clean-up

    One problem with the design of async Rust is what do about async clean-up code.

  10. FuturesUnordered and the order of futures

    In my previous post, I wrote about the distinction between “multi-task” and “intra-task” concurrency in async Rust.

  11. Let futures be futures

    In the early-to-mid 2010s, there was a renaissance in languages exploring new ways of doing concurrency.

  12. poll_progress

    Last week, Tyler Mandry published an interesting post about a problem that the Rust project calls “Barbara battles buffered streams.”

  13. Three problems of pinning

    When we developed the Pin API, our vision was that “ordinary users” - that is, users using the “high-level” registers of Rust, would never have to interact with it.

  14. Coroutines, asynchronous and iterative

    I wanted to follow up my previous post with a small note elaborating on the use of coroutines for asynchrony and iteration from a more abstract perspective.

  15. poll_next

    In my previous post, I said that the single best thing the Rust project could do for users is stabilize AsyncIterator.

  16. A four year plan for async Rust

    Four years ago today, the Rust async/await feature was released in version 1.39.0.

  17. Why async Rust?

    Async/await syntax in Rust was initially released to much fanfare and excitement.

  18. Thread-per-core

    I want to address a controversy that has gripped the Rust community for the past year or so: the choice by the prominent async “runtimes” to default to multi-threaded executors that perform work-stealing to balance work dynamically among their many tasks.

  19. Generic trait methods and new auto traits

    I want to wrap up my consideration of the idea of adding new auto traits to Rust with some notes from a conversation I had with Ariel Ben-Yehuda.

  20. Follow up to "Changing the rules of Rust"

    In my previous post, I described the idea of using an edition mechanism to introduce a new auto trait.

  21. Changing the rules of Rust

    In Rust, there are certain API decisions about what is and isn’t sound that impact all Rust code.

  22. A governance system, if you can keep it

    One of the most famous anecdotes that forms the basis of the United States’ political self-identity is the story of an interaction between Benjamin Franklin and Elizabeth Willing Powel after the Constitutional Convention of 1787, which established the Uni…

  23. Iterator, Generator

    I have been devoting a lot of my free time in the past month to thinking about structured concurrency, and a blog post about that is coming soon, but first I want to revisit iterators and generators.

  24. The Scoped Task trilemma

    This is the first post in a series of posts about concurrency in Rust, and the different APIs that can exist to support it.

  25. Generators

    One of the main emphases of my recent posts has been that I believe shipping generators would solve a lot of user problems by making it easy to write imperative iterative code, and especially to make that iterative code interact well with asynchrony and f…

  26. The AsyncIterator interface

    In a previous post, I established the notion of “registers” - code in Rust can be written in different registers, and it’s important to adequately support all registers.

  27. Const as an auto trait

    The previous two posts in this series tried to discuss the design of Rust through the lens of some higher level language concepts: First, the notion that programming languages have different registers Second, the idea that not all patterns should be made…

  28. Patterns & Abstractions

    This is the second post in an informal series commenting on the design of async Rust in 2023.

  29. The registers of Rust

    It’s been nearly two and half years since I was an active contributor to the Rust project.

  30. Ringbahn III: A deeper dive into drivers

    In the previous post in this series, I wrote about how the core state machine of ringbahn is implemented.

  31. Revisiting a 'smaller Rust'

    A bit over a year ago, I wrote some notes on a “smaller Rust” - a higher level language that would take inspiration from some of Rust’s type system innovations, but would be simpler by virtue of targeting a domain with less stringent requirements for user…

  32. iou version 0.3 released

    Today I made a new release of the iou library, which contains idiomatic Rust bindings to the liburing library.

  33. I’ve just released a new crate called propane, which is a library for writing generator functions.

  34. Shipping Const Generics in 2020

    It’s hard to believe that its been more than 3 years since I opened RFC 2000, which defined the const generics for Rust.

  35. Ringbahn II: the central state machine

    Last time I wrote about ringbahn, a safe API for using io-uring from Rust.

  36. Two Memory Bugs From Ringbahn

    While implementing ringbahn, I introduced at least two bugs that caused memory safety errors, resulting in segfaults, allocator aborts, and bizarre undefined behavior.

  37. Futures and Segmented Stacks

    This is just a note on getting the best performance out of an async program.

  38. In my previous post, I discussed the new io-uring interface for Linux, and how to create a safe API for using io-uring from Rust.

  39. Notes on io-uring

    Last fall I was working on a library to make a safe API for driving futures on top of an an io-uring instance.

  40. The problem of effects in Rust

    In a previous post, I shortly discussed the concept of “effects” and the parallels between them.

  41. A brief apology of Ok-Wrapping

    I’ve long been a proponent of having some sort of syntax in Rust for writing functions which return results which “ok-wrap” the happy path.

  42. From failure to Fehler

    About two and a half years ago I wrote a Rust library called failure, which quickly became one of the most popular error handling libraries in Rust.

  43. What constitutes a vulnerability?

    This is just a post about something that grinds my gears a bit more than it reasonably should: I think the habit of applying for CVEs for Rust (and Rust ecosystem libraries) is silly at best and harmful at worst.

  44. waitmap - an async awaitable map

    I’ve just released a new crate called waitmap.

  45. Global Executors

    One of the big sources of difficulty on the async ecosystem is spawning tasks.

  46. iou: Rust bindings for liburing

    Today I’m releasing a library called iou.

  47. Asynchronous Destructors

    The first version of async/await syntax is in the beta release, set to be shipped to stable in 1.39 on November 7, next month.

  48. Notes on a smaller Rust

    Many people who use Rust for a bit - especially those who like the language but do not fall in love with it - feel a sense that there must be a smaller, simpler variation on the same theme which would maybe be a little less powerful, but would also be much

  49. Update on await syntax

    In my previous post I said that the lang team would be making our final decision about the syntax of the await operator in the May 23 meeting.

  50. Zero Cost Abstractions

    The idea of a zero cost abstraction is very important to certain programming languages, like Rust and C++, which intend to enable users to write programs with excellent performance profiles with relatively little effort.