Portable and interoperable async Rust A goal of the async foundations working group is for async Rust to be portable and interoperable. I want to dig in to what that means in this blog post. For a little
What is an async runtime? Unlike other Rust features, you can't just write await in your code and run it. You need to use an async runtime like Tokio or async-std. But why? And what do these runtimes
TiKV Rust Client - 0.1 release We're pleased to announce the 0.1 release of the TiKV Rust client. TiKV is a distributed key-value store. TiKV is powerful, mature, and widely used as part of TiDB (a 'NewSQL' database)
RFC Reading - #2996 - async stream trait RFCs are how changes are made to Rust (language, libraries, core tools, processes and governance, etc.). If you want to keep abreast of changes to Rust or want to deeply understand a feature
dyn Trait and impl Trait in Rust One of the more subtle aspects of Rust is how traits can be used as types. In this blog post I will attempt a bit of a deep dive into how to use
Organise your commits Crafting a beautiful PR is not a high priority for a lot of people, but I think it should be! In this post, I'll expound on what a good, well-organised PR looks like,
SIG-txn reading group, Nov + Dev 2020 The TiKV transactions SIG is starting up its reading group. We'll try to read and discuss a paper each month. If you're interested in research in distributed transactions, come join in! We'll start
Rust in 2021 It's that time of year again - time to think about a roadmap for next year! As I wrote last year, I think a good roadmap should provide focus for the project, but
Leaving the Rust core team I'm stepping down from Rust's core team. It's my last official involvement with Rust, and I'm kinda sad about leaving. Rust is exciting and important, and I love the community and technology. It
Documentation Quest! The TiKV Transactions SIG's documentation quest begins today! It is our first community activity. There are tons of bite-size tasks and some more involved work, with the goal of making TiKV's transaction components
Rustconf 2020 Rustconf 2020 happened last week (August 20th). For the first time, it was an online conference. Ironically that made it more difficult for me to attend because of timezones (and I was on
Announcing the Transaction SIG I've been working on the distributed transaction system in TiKV for about a year now. TiKV is an open-source, distributed and transactional key-value store written in Rust. Recently, I've been helping create a
Building, running, and benchmarking TiKV and TiDB TiDB is a distributed, MySQL-compatible database. It is built on top of TiKV, a distributed key-value store. Building these projects is easy - clone the Git repos, then run make. Unfortunately running development
Large Transactions in TiDB In TiDB 4.0, we've extended the transaction system to handle large transactions. Previously, TiDB limited the number of reads and writes in a transaction. In version 4.0 there is a much
Early Impressions of Go from a Rust Programmer This post was originally published on the PingCAP blog. I've been using Go for the past few weeks. It's my first time using Go for a large (-ish), serious project. I've previously looked
Remote work part 3 This is the third (and last, for now) post in a series on remote work. Previous posts discussed some basics for remote work and communication. In this post I'll talk a bit about
Remote work part 2 In my last post I talked a bit about some general issues with remote work. In this post I am going to focus on communication - probably the most important thing for remote
Remote work part 1 I've been working remotely (in various ways and at various companies) for nearly ten years. I love working remotely, I am happier and more productive. However, it takes some adjustment and it's not
Rust in 2020, one more thing We need to work on error handling. It's a difficult thing to work on because a lot of people have strong opinions, but I think we should. Rust's error handling story at the
Rust 2020 I was thinking of not writing a blog post this year. I didn't think I'd have much to say. But I thought that I should, I had some nagging feelings that we needed
Migrating a crate from futures 0.1 to 0.3 I recently migrated a small/medium-sized crate from Futures 0.1 to 0.3. It was fairly easy, but there were some tricky bits and some things that were not well documented, so
Rust Cargo `--offline` ✈️ Rust 1.36 is released on the 4th July and includes a bunch of new stuff. This blog post is about one newly stable feature in Cargo: --offline. Cargo seamlessly uses dependencies whether
Cargo in 2019 I recently published a post detailing a vision for the next few years (hah! Not so recently now, this took a lot longer than expected). Here I'll get into more detail about 2019.
Cargo's next few years The Cargo team have been thinking about and discussing long-term plans for Cargo. In this post I'll talk about what we hope Cargo will look like around the time of the next edition
I read a paper: 'In search of an understandable consensus algorithm' (the Raft paper) Raft is an algorithm for distributed consensus. It was introduced in this paper, 'In search of an understandable consensus algorithm' by Ongaro and Ousterhout, in 2014. It is a very readable paper and