Until we meet again!

Over the last few years, I've had the pleasure of working with many people in the rust community. When I first got involved, I don't think I was ever expecting to go so deep or enjoy it so much. At that time, I was mostly participating in RFC discussions and making minor PRs to RFCs and RBE. What a journey!

However, life has many twists and turns, and I'm finding myself pulled elsewhere. So I'm stepping back from my involvement from Rust and my role as a co-lead of WG-rustc-dev-guide. I'm planning to wrap up a few things I have ongoing, and I'll hopefully still make a PR here and there in the future, but a lot less than now.

Thanks to the many, many people that have helped me along the way! I've stood on many giant's shoulders.

I thought it would be fun to look back at some of things I've gotten to do... so here we go...

rustc-dev-guide

This is probably the biggest thing I worked on. Back in January 2018, Niko proposed writing a book about hacking on the compiler. What a great idea! That effort became the rustc-guide, which was later renamed to rustc-dev-guide.

At first, it was mostly setting up the repo and CI with a linkchecker, so we can try to keep things up-to-date-ish. We also moved most of the READMEs from the rust-lang/rust repo to the guide. Over time, we add more chapters, and various experts wrote new chapters about parts of the compiler that had never had particularly good coverage. A Working Group was formed, and we've interviewed various experts about different parts of the compiler (e.g. hygiene/macros) and collaboratively written quite a few important chapters, as well as dealt with the daily churn of internal APIs changing.

Today, the guide has 130 chapters! It's the go-to reference when you want to get started working on some part of the compiler. And has at least a bit of material about almost the whole compiler, though there is still much work left.

In fact, it has so much material that we want to move some of it to the forge, and some content has been moved to other books, like the chalk book.

Somehow in the middle of all of this, I managed to end up as a primary maintainer of the guide and then as a co-lead with Santiago of the WG. I've learned so much about compiler and programming language design while working on the guide and proofreading chapters by many of the excellent devs that wrote up chapters on their part of the compiler. What a privilege!

rust-lang/rust

This was my first PR: https://github.com/rust-lang/rust/pull/47107. Like many others, my first contribution was to fix a typo.

After that, I went on to make a bunch of other PRs, too -- 107 in total, most of which merged. In retrospect, they mostly fit into 3 categories:

  1. A bunch of pretty random fixes and improvements to different parts of the compiler. I can't see any real rhyme or reason to these, but they were fun to work on...

  2. Major refactorings to accomplish different purposes. These were mostly accomplished with the help of eddyb (thanks eddyb!). They tended to be long chains of PRs.

    • Completely reorganized and consolidated all of the error-emitting code in the borrow checker. This code used to be in 4-5 different locations in librustc_mir and required passing around ~7 arguments to half the functions in the borrow checker. These PRs removed over 200 lines of just function parameter declarations -- that's how much state was being passed around from function to function. 64416, 66684, 66815, 66886, 67241, 67404, 67474, 67476, 69967

    • Cleaned up and fixed the internal compiler infrastructure for printing a "description" of a particular DefId. This made things a bit less redundant, a bit more correct, and a bit more unified. It also cleaned up the code and removed some technical debt. 67742, 69498, 69674, 69738, 69740, 70036, 70043

    • Fix all incorrect uses of TyKind::Error and make it impossible to reintroduce abuses again. This makes it a lot hard to introduce some types of soundness bugs where the compiler could allow incorrect code. It can also make the debugging experience better for people working on the type system: 71938, 74399, 70551, 70870, 70932

    • Move the standard libraries to a new library/ directory and the compiler to a new compiler/ directory. The intent with these is to make the repo a bit more approachable to new contributors, as well as to make the directory structure a bit less un-idiomatic. Personally, I think it is now significantly cleaner and less overwhelming. 73265, 74862

  3. Improvements to macros-by-example and/or their implementation.

Other things

  • I've had the opportunity to make some minor PRs to Rust-by-example, rustup, the std library, the website, and elsewhere.
  • I've written a few blog posts for the Rust Blog or Inside Rust Blog.
  • I've participated in a lot of design discussions for RFCs, on internals, and zulip.
  • I conducted the 2020 Contributor Survey with help from many others, and analyzed the results.

Conclusion

I'm deeply humbled and grateful to have gotten to work on all this stuff. I've learned so much, and I have the satisfaction of knowing that I helped improve a great project a bit. I look forward to seeing what comes next for this project!

67 Likes

@mark-i-m you will be missed, it was a pleasure co-leading @WG-rustc-dev-guide with you. Hope we meet again in the future.

2 Likes

Thanks a lot for all your work!

1 Like

Thanks a lot for your work!

I'd like to specifically call out that a lot of it was targeted at enabling others, which gives a nice multiplicative factor to what you've already written.

I am certainly more productive when hacking on rustc thanks to your awesome work!

13 Likes

@mark-i-m it was such a blast to see you pick up the rustc-dev-guide and run with it, not to mention the myriad of other things you've mentioned here. As others have said, we'll definitely miss you! Best of luck on whatever comes next (and hopefully there's a bit of Rust in it :heart:)

11 Likes

I'd like to echo that sentiment. The Rust community in general and prominent Rustaceans in particular put a lot of emphasis on enabling, on growing the community, and on making complicated things more accessible to others. Your work is a great example of that.

5 Likes

Thanks a lot for the effort :slight_smile: Was nice working with you, hope to meet you again and all the best in the next adventure

1 Like