# Oli stop working on so many things challenge
## query system/interning
* querification of things that are before the query system
* hack-removals enabled by query feeding
* promoteds get their own DefId
* WithOptConstParam
* hardening of APIs
* checking various invariants via debug assertions
* correct number of substs on various things with substs
* already found a bunch of bugs
* simplification of APIs
* lang item ids usable almost everywhere where DefIds are usable
* same for LocalDefId
## keyword generics/effects/maybe-const
* refactoring the compiler to support a 4th kind of generic parameter (effects) robustly
* reimplmementing const trait bounds via effects
* already found bugs in the old impl
* trust in old impl was never very high, is now at all-time low
* may allow to do maybe-`async` trait bounds and functions in the future
* also maybe-unsafe, maybe-try, maybe-panic, ...
## rustdoc santizing
* rustdoc is ... ... something
* works on completely broken Rust code
* this is a "feature", as it allows `#[cfg(doc)]` to be used to bring all items for all platforms and targets into a single crate. So there are now multiple items of the same name in the same crate and most of them are from platforms that don't compile at all on the current platform. But it mostly works for the signatures of items and thus allows rustdoc to generate docs for all targets at once instead of rerunning once per target.
* also runs typeck opportunistically to generate "goto definition" in rustdoc's "source view" feature which is pretty much useless because most of the time it just doesn't work
* randomly breaks rustc invariants (e.g. skips binders and then normalizes the result, causing ICEs left and right)
## layout
* keeping our layout computation sound
* bugs are found regularly around edge cases
* adding a way for end users to create layout constraints
* ranged ints
* https://cohost.org/oli-obk/post/203456-strong-typing-has-do
* TLDR: replace our logic for `NonZeroU8` and `NonNull` with something the type system understands.
## type alias impl trait
* diagnostics
* `impl Trait` behind higher kinded bounds
* documentation
* should be low maintenance soon, depending on how the stabilization goes.
* https://github.com/orgs/rust-lang/projects/22/views/1
## fixing structural equality
* valtrees
* const_to_pat
## Trait solving
* refactoring of our Predicate datastructures (clause/goal/...)
* fixing binder stuff
## Const eval
* mutable references (mentoring)
* libcore/libstd additions and stabilizations
* dropck work to allow for things like `Option::unwrap` to become const
## miri
* writing new test suite
* extending to also work for clippy
* merging into clippy
* replacing ui test suite of rustc?!
* mentoring/reviewing
## Rustc developer experience
* adding debug asserts to make people find bugs faster
* tracing
* working on better backtraces that don't fill the screen with query boilerplate
* simplifying compiler APIs used across the compiler
* hardening compiler APIs to prevent accidental mis-use
* making ICEs more useful
* e.g. query feeding produces new and fun ICEs inside the query system making the backtraces often very confusing to devs that don't know the query feeding logic, this is now better.
* e.g. adding more information to them
## cargo_metadata crate
* my crate
* I only do the bare minimum maintenance, but that's still a few hours per month
* merge contributions
* publish new versions
* relevant part of crates.io ecosystem (2.5 mil downloads in last 90 days, ca 10% of what serde has)
## text_io crate
targetted at beginners
has things like `scan!` macros to read from stdin in almost `println!` syntax.
needs minor attention once or twice a year.
## stable MIR
* set up initial crate
* soon:
* write up plan,
* mentor,
* refactor internal rustc APIs to make writing stable MIR easier
## wg-diagnostics
* reviews mostly
## wg-mir-opt
* reviews and discussions
* some overlap with opsem
* mostly handed off development and design to JakobDegen a year ago.
## serde maintenance
* reviewing bugfixes
* Rejecting feature development constructively and quickly
# Priorization and Cutoff list
??? all of it is important... argml...
* [x] type alias impl trait
* [x] stable MIR
* [x] keyword generics/effects/maybe-const
* [x] miri
* [x] cargo_metadata crate
* [ ] query system/interning
* [ ] fixing structural equality
* [ ] Const eval
* [ ] Rustc developer experience
* [ ] wg-mir-opt
* [ ] wg-diagnostics
* [ ] rustdoc santizing
* [ ] layout
* [ ] Trait solving
* [ ] text_io crate
* [ ] Serde Maintenance
# TODO
* linter for hashtags in the compiler to link tests, spec and code
* level guidelines for open source devs