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🔗
- 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
RustcEncodable
andRustcDecodable
and 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::Span
in 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.
- rust#106074 implements the RFC-accepted restrictions.
- 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
crate
visibility modifier from the language. - rust#97239 removes all uses of the
crate
visibility 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#94619 creates unsafe methods for mutating the environment.
- rust#94461 creates the 2024 edition on nightly.
- rust#94457 stabilizes
#[derive(Default)]
onenum
s, 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_of
for all integer types. - rust#93960 implements proper stability checks for
impl const Trait
and falls back to being unstableconst
when undeclared. With minimal change, this was merged as rust#97177 . - rust#91148 uses
derive_default_enum
in 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
MaybeUninit
asconst fn
in 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 T
inconst
contexts in Rust 1.58. - rust#89542 stabilizes some
Duration
methods asconst fn
in Rust 1.58. - rust#89509 stabilizes
unreachable_unchecked
asconst fn
in Rust 1.57. - rust#89508 stabilizes panicking in
const
contexts in Rust 1.57. - rust#88582 implements
div_floor
,div_ceil
,next_multiple_of
, andchecked_next_multiple_of
for all integer types. - rust#88353 partially stabilizes the
array_methods
feature in Rust 1.57. - rust#86735 implements RFC 3107, permitting
#[derive(Default)]
and#[default]
onenum
s. - rust#86593 partially stabilizes the
const_slice_first_last
feature 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_unchecked
asconst fn
in Rust 1.55. - rust#85769 stabilizes the
const_fn_transmute
andconst_fn_union
features in Rust 1.55. - RFC 3107 proposes permitting
#[derive(Default)]
onenum
s wherein a unit variant may be tagged with#[default]
, avoiding the need for a manual implementation. - rust#83772 modifies the unstable
Step
trait such that it is no longerunsafe
to 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::flatten
unstablyconst fn
. - rust#81940 stabilizes
str::split_once
in Rust 1.52. - rust#80962 stabilizes 168 inherent implementations on integers as
const fn
in 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_modifier
feature. - rocket#1129 removes the dependency on the
label_break_value
feature. - rocket#1125 uses the
BoxFuture
type for readability. - rocket#1124 removes unnecessary boxing.
- rocket#1099 removes the stabilized
async_await
feature. - rocket#1097 allows launching on a custom Tokio runtime.
- rocket#1084 uses a proper
async fn
instead 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_cfg
feature. - rocket#967 removes the stabilized
transpose_result
andtry_from
features. - rocket#966 removes all uses of the unstable never type (
!
) in favor of the stableInfallible
.
Tokio🔗
- tokio#1492 implements
spawn_with_handle
on the Tokio executor. This allowed the launching of Rocket on a custom Tokio runtime.