Open-source Contributions
I have fixed bugs, improved heuristics, stabilized features, and significantly cleaned up code over a few open-source projects over time. This is in addition to my own projects, some of which have become quite large.
Projects are in no particular order. Contributions within a project are listed in reverse chronological order.
Rust
- rust#148375 optimizes panics, measurably improving compile time, memory usage, and binary size.
- rust#141754 implements the first phase of the restrictions RFC.
- RFC 3796 proposes permitting
&&,||, and!incfg. - RFC 3681 proposes default values for individual fields and new syntax for using these selectively. While the RFC was not posted by me, I was significantly involved in the drafting.
- rust#116016 destabilizes
RustcEncodableandRustcDecodableand removes them from the prelude. rust#123182 followed up to avoid compilation errors. - rust#114238 fixes a bug in
Duration::checked_div. - RFC 3458 proposes unsafe fields.
- rust#111571 alters the API of
proc_macro::Spanin anticipation of stabilization. - rust#108200 implements an optimized Damerau-Levenshtein algorithm to provide better suggestions in compiler diagnostics. cargo#11963 does the same for Cargo.
- RFC 3323 proposes "restrictions", a form of read-only fields and sealed traits.
- rust#101555 stabilizes
#![feature(mixed_integer_ops)]. - rust#100315 stringifies visibilities correctly.
- rust#98115 removes the transitional diagnostics for
#[rustc_deprecated]. - rust#97254 removes the
cratevisibility modifier from the language. - rust#97239 removes all uses of the
cratevisibility modifier. - rust#95960 and stdarch#1301 remove the
#[rustc_deprecated]attribute in favor of#[deprecated]. rustc-dev-guide#1338 and rust-analyzer#11983 were also submitted to ensure a seamless transition. - rust#94635 merges the
#[deprecated]and#[rustc_deprecated]attributes. It also permits suggested replacements for deprecated items on nightly. - rust#94461 creates the 2024 edition on nightly.
- rust#94457 stabilizes
#[derive(Default)]onenums, where the default is indicated by placing a#[default]attribute on the desired unit variant. - rust#94455 stabilizes
div_floor,div_ceil,next_multiple_of, andchecked_next_multiple_offor all integer types. - rust#93960 implements proper stability checks for
impl const Traitand falls back to being unstableconstwhen undeclared. With minimal change, this was merged as rust#97177 . - rust#91148 uses
derive_default_enumin the compiler. - rust#90998 requires a const-stability attribute on all publicly reachable const methods.
- rust#90935 alphabetizes language features, significantly reducing the frequency of merge conflicts.
- rust#90897 fixes the feature flags used for some features.
- rust#90896 stabilizes part of
MaybeUninitasconst fnin Rust 1.59. - rust#90687 fixes a bug where some const panics couldn't be used in the standard library.
- rust#90521 stabilizes destructuring assignment in Rust 1.58.
- rust#89551 stabilizes dereferencing
*const Tinconstcontexts in Rust 1.58. - rust#89542 stabilizes some
Durationmethods asconst fnin Rust 1.58. - rust#89509 stabilizes
unreachable_uncheckedasconst fnin Rust 1.57. - rust#89508 stabilizes panicking in
constcontexts in Rust 1.57. - rust#88582 implements
div_floor,div_ceil,next_multiple_of, andchecked_next_multiple_offor all integer types. - rust#88353 partially stabilizes the
array_methodsfeature in Rust 1.57. - rust#86735 implements RFC 3107, permitting
#[derive(Default)]and#[default]onenums. - rust#86593 partially stabilizes the
const_slice_first_lastfeature in Rust 1.55. - rust#86592 uses the
#[non_exhaustive]attribute where appropriate in the standard library and compiler. - rust#86213 stabilizes
str::from_utf8_uncheckedasconst fnin Rust 1.55. - rust#85769 stabilizes the
const_fn_transmuteandconst_fn_unionfeatures in Rust 1.55. - RFC 3107 proposes permitting
#[derive(Default)]onenums wherein a unit variant may be tagged with#[default], avoiding the need for a manual implementation. - rust#83772 modifies the unstable
Steptrait such that it is no longerunsafeto implement. A new trait,TrustedStep, is added to maintain performance when all invariants are upheld. - rust#83363 implements a new API for procedural macro diagnostics.
- rust#82130 makes
Option::transpose,Option::flatten, andResult::flattenunstablyconst fn. - rust#81940 stabilizes
str::split_oncein Rust 1.52. - rust#80962 stabilizes 168 inherent implementations on integers as
const fnin Rust 1.52. - rust#80959 stabilizes
i*::unsigned_abs()in Rust 1.51. - rust-analyzer#7215 improves heuristics of hiding parameter inlay hints. rust-analyzer#7224 was submitted as a follow-up for optimization.
quickcheck
- quickcheck#270 eliminates a frequently-encountered panic.
Rocket
- rocket#1143 removes the dependency on the
crate_visibility_modifierfeature. - rocket#1129 removes the dependency on the
label_break_valuefeature. - rocket#1125 uses the
BoxFuturetype for readability. - rocket#1124 removes unnecessary boxing.
- rocket#1099 removes the stabilized
async_awaitfeature. - rocket#1097 allows launching on a custom Tokio runtime.
- rocket#1084 uses a proper
async fninstead of returningPin<Box<_>>where possible. - rocket#1079 implements graceful shutdown functionality, both via signal handling and caller-requested. This was one of the most-requested features in Rocket.
- rocket#1062 removes the unused
doc_cfgfeature. - rocket#967 removes the stabilized
transpose_resultandtry_fromfeatures. - rocket#966 removes all uses of the unstable never type (
!) in favor of the stableInfallible.
Tokio
- tokio#1492 implements
spawn_with_handleon the Tokio executor. This allowed the launching of Rocket on a custom Tokio runtime.