| # `alloc` | |
| These source files come from the Rust standard library, hosted in | |
| the <https://github.com/rust-lang/rust> repository, licensed under | |
| "Apache-2.0 OR MIT" and adapted for kernel use. For copyright details, | |
| see <https://github.com/rust-lang/rust/blob/master/COPYRIGHT>. | |
| Please note that these files should be kept as close as possible to | |
| upstream. In general, only additions should be performed (e.g. new | |
| methods). Eventually, changes should make it into upstream so that, | |
| at some point, this fork can be dropped from the kernel tree. | |
| The Rust upstream version on top of which these files are based matches | |
| the output of `scripts/min-tool-version.sh rustc`. | |
| ## Rationale | |
| On one hand, kernel folks wanted to keep `alloc` in-tree to have more | |
| freedom in both workflow and actual features if actually needed | |
| (e.g. receiver types if we ended up using them), which is reasonable. | |
| On the other hand, Rust folks wanted to keep `alloc` as close as | |
| upstream as possible and avoid as much divergence as possible, which | |
| is also reasonable. | |
| We agreed on a middle-ground: we would keep a subset of `alloc` | |
| in-tree that would be as small and as close as possible to upstream. | |
| Then, upstream can start adding the functions that we add to `alloc` | |
| etc., until we reach a point where the kernel already knows exactly | |
| what it needs in `alloc` and all the new methods are merged into | |
| upstream, so that we can drop `alloc` from the kernel tree and go back | |
| to using the upstream one. | |
| By doing this, the kernel can go a bit faster now, and Rust can | |
| slowly incorporate and discuss the changes as needed. |