{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":16786002,"defaultBranch":"master","name":"rust","ownerLogin":"tbu-","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2014-02-12T23:42:23.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6666593?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1724163918.0","currentOid":""},"activityList":{"items":[{"before":"a1a5130e2bf5260d5c7c4f0d9753851cdfb6d2a7","after":"123bb585f88f21d1035a13f6ed65c4cc898b17a7","ref":"refs/heads/pr_str_not_impl_error","pushedAt":"2024-08-21T14:21:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Fix stability attribute of `impl !Error for &str`\n\nIt was introduced in bf7611d55ee6e24647aefc4d1c82b1dba0164536 (#99917),\nwhich was included in Rust 1.65.0.","shortMessageHtmlLink":"Fix stability attribute of impl !Error for &str"}},{"before":"068e692ad6d5272818e1e68d5deea1ecd962ad0b","after":"a1a5130e2bf5260d5c7c4f0d9753851cdfb6d2a7","ref":"refs/heads/pr_str_not_impl_error","pushedAt":"2024-08-20T19:33:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Fix stability attribute of `impl !Error for &str`\n\nIt was introduced in bf7611d55ee6e24647aefc4d1c82b1dba0164536 (#99917),\nwhich was included in Rust 1.65.0.","shortMessageHtmlLink":"Fix stability attribute of impl !Error for &str"}},{"before":null,"after":"068e692ad6d5272818e1e68d5deea1ecd962ad0b","ref":"refs/heads/pr_str_not_impl_error","pushedAt":"2024-08-20T14:25:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Fix stability attribute of `impl !Error for &str`\n\nIt was introduced in bf7611d55ee6e24647aefc4d1c82b1dba0164536 (#99917),\nwhich was included in Rust 1.65.0.","shortMessageHtmlLink":"Fix stability attribute of impl !Error for &str"}},{"before":"cb12b52f160c633551bd6e5be8d4c6e2e8660950","after":"a971212545766fdfe0dd68e5d968133f79944a19","ref":"refs/heads/master","pushedAt":"2024-08-20T14:25:18.000Z","pushType":"push","commitsCount":3071,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Auto merge of #127672 - compiler-errors:precise-capturing, r=spastorino\n\nStabilize opaque type precise capturing (RFC 3617)\n\nThis PR partially stabilizes opaque type *precise capturing*, which was specified in [RFC 3617](https://github.com/rust-lang/rfcs/pull/3617), and whose syntax was amended by FCP in [#125836](https://github.com/rust-lang/rust/issues/125836).\n\nThis feature, as stabilized here, gives us a way to explicitly specify the generic lifetime parameters that an RPIT-like opaque type captures. This solves the problem of overcapturing, for lifetime parameters in these opaque types, and will allow the Lifetime Capture Rules 2024 ([RFC 3498](https://github.com/rust-lang/rfcs/pull/3498)) to be fully stabilized for RPIT in Rust 2024.\n\n### What are we stabilizing?\n\nThis PR stabilizes the use of a `use<'a, T>` bound in return-position impl Trait opaque types. Such a bound fully specifies the set of generic parameters captured by the RPIT opaque type, entirely overriding the implicit default behavior. E.g.:\n\n```rust\nfn does_not_capture<'a, 'b>() -> impl Sized + use<'a> {}\n// ~~~~~~~~~~~~~~~~~~~~\n// This RPIT opaque type does not capture `'b`.\n```\n\nThe way we would suggest thinking of `impl Trait` types *without* an explicit `use<..>` bound is that the `use<..>` bound has been *elided*, and that the bound is filled in automatically by the compiler according to the edition-specific capture rules.\n\nAll non-`'static` lifetime parameters, named (i.e. non-APIT) type parameters, and const parameters in scope are valid to name, including an elided lifetime if such a lifetime would also be valid in an outlives bound, e.g.:\n\n```rust\nfn elided(x: &u8) -> impl Sized + use<'_> { x }\n```\n\nLifetimes must be listed before type and const parameters, but otherwise the ordering is not relevant to the `use<..>` bound. Captured parameters may not be duplicated. For now, only one `use<..>` bound may appear in a bounds list. It may appear anywhere within the bounds list.\n\n### How does this differ from the RFC?\n\nThis stabilization differs from the RFC in one respect: the RFC originally specified `use<'a, T>` as syntactically part of the RPIT type itself, e.g.:\n\n```rust\nfn capture<'a>() -> impl use<'a> Sized {}\n```\n\nHowever, settling on the final syntax was left as an open question. T-lang later decided via FCP in [#125836](https://github.com/rust-lang/rust/issues/125836) to treat `use<..>` as a syntactic bound instead, e.g.:\n\n```rust\nfn capture<'a>() -> impl Sized + use<'a> {}\n```\n\n### What aren't we stabilizing?\n\nThe key goal of this PR is to stabilize the parts of *precise capturing* that are needed to enable the migration to Rust 2024.\n\nThere are some capabilities of *precise capturing* that the RFC specifies but that we're not stabilizing here, as these require further work on the type system. We hope to lift these limitations later.\n\nThe limitations that are part of this PR were specified in the [RFC's stabilization strategy](https://rust-lang.github.io/rfcs/3617-precise-capturing.html#stabilization-strategy).\n\n#### Not capturing type or const parameters\n\nThe RFC addresses the overcapturing of type and const parameters; that is, it allows for them to not be captured in opaque types. We're not stabilizing that in this PR. Since all in scope generic type and const parameters are implicitly captured in all editions, this is not needed for the migration to Rust 2024.\n\nFor now, when using `use<..>`, all in scope type and const parameters must be nameable (i.e., APIT cannot be used) and included as arguments. For example, this is an error because `T` is in scope and not included as an argument:\n\n```rust\nfn test() -> impl Sized + use<> {}\n//~^ ERROR `impl Trait` must mention all type parameters in scope in `use<...>`\n```\n\nThis is due to certain current limitations in the type system related to how generic parameters are represented as captured (i.e. bivariance) and how inference operates.\n\nWe hope to relax this in the future, and this stabilization is forward compatible with doing so.\n\n#### Precise capturing for return-position impl Trait **in trait** (RPITIT)\n\nThe RFC specifies precise capturing for RPITIT. We're not stabilizing that in this PR. Since RPITIT already adheres to the Lifetime Capture Rules 2024, this isn't needed for the migration to Rust 2024.\n\nThe effect of this is that the anonymous associated types created by RPITITs must continue to capture all of the lifetime parameters in scope, e.g.:\n\n```rust\ntrait Foo<'a> {\n fn test() -> impl Sized + use;\n //~^ ERROR `use<...>` precise capturing syntax is currently not allowed in return-position `impl Trait` in traits\n}\n```\n\nTo allow this involves a meaningful amount of type system work related to adding variance to GATs or reworking how generics are represented in RPITITs. We plan to do this work separately from the stabilization. See:\n\n- https://github.com/rust-lang/rust/pull/124029\n\nSupporting precise capturing for RPITIT will also require us to implement a new algorithm for detecting refining capture behavior. This may involve looking through type parameters to detect cases where the impl Trait type in an implementation captures fewer lifetimes than the corresponding RPITIT in the trait definition, e.g.:\n\n```rust\ntrait Foo {\n fn rpit() -> impl Sized + use;\n}\n\nimpl<'a> Foo for &'a () {\n // This is \"refining\" due to not capturing `'a` which\n // is implied by the trait's `use`.\n fn rpit() -> impl Sized + use<>;\n\n // This is not \"refining\".\n fn rpit() -> impl Sized + use<'a>;\n}\n```\n\nThis stabilization is forward compatible with adding support for this later.\n\n### The technical details\n\nThis bound is purely syntactical and does not lower to a [`Clause`](https://doc.rust-lang.org/1.79.0/nightly-rustc/rustc_middle/ty/type.ClauseKind.html) in the type system. For the purposes of the type system (and for the types team's curiosity regarding this stabilization), we have no current need to represent this as a `ClauseKind`.\n\nSince opaques already capture a variable set of lifetimes depending on edition and their syntactical position (e.g. RPIT vs RPITIT), a `use<..>` bound is just a way to explicitly rather than implicitly specify that set of lifetimes, and this only affects opaque type lowering from AST to HIR.\n\n### FCP plan\n\nWhile there's much discussion of the type system here, the feature in this PR is implemented internally as a transformation that happens before lowering to the type system layer. We already support impl Trait types partially capturing the in scope lifetimes; we just currently only expose that implicitly.\n\nSo, in my (errs's) view as a types team member, there's nothing for types to weigh in on here with respect to the implementation being stabilized, and I'd suggest a lang-only proposed FCP (though we'll of course CC the team below).\n\n### Authorship and acknowledgments\n\nThis stabilization report was coauthored by compiler-errors and TC.\n\nTC would like to acknowledge the outstanding and speedy work that compiler-errors has done to make this feature happen.\n\ncompiler-errors thanks TC for authoring the RFC, for all of his involvement in this feature's development, and pushing the Rust 2024 edition forward.\n\n### Open items\n\nWe're doing some things in parallel here. In signaling the intention to stabilize, we want to uncover any latent issues so we can be sure they get addressed. We want to give the maximum time for discussion here to happen by starting it while other remaining miscellaneous work proceeds. That work includes:\n\n- [x] Look into `syn` support.\n - https://github.com/dtolnay/syn/issues/1677\n - https://github.com/dtolnay/syn/pull/1707\n- [x] Look into `rustfmt` support.\n - https://github.com/rust-lang/rust/pull/126754\n- [x] Look into `rust-analyzer` support.\n - https://github.com/rust-lang/rust-analyzer/issues/17598\n - https://github.com/rust-lang/rust-analyzer/pull/17676\n- [x] Look into `rustdoc` support.\n - https://github.com/rust-lang/rust/issues/127228\n - https://github.com/rust-lang/rust/pull/127632\n - https://github.com/rust-lang/rust/pull/127658\n- [x] Suggest this feature to RfL (a known nightly user).\n- [x] Add a chapter to the edition guide.\n - https://github.com/rust-lang/edition-guide/pull/316\n- [x] Update the Reference.\n - https://github.com/rust-lang/reference/pull/1577\n\n### (Selected) implementation history\n\n* https://github.com/rust-lang/rfcs/pull/3498\n* https://github.com/rust-lang/rfcs/pull/3617\n* https://github.com/rust-lang/rust/pull/123468\n* https://github.com/rust-lang/rust/issues/125836\n* https://github.com/rust-lang/rust/pull/126049\n* https://github.com/rust-lang/rust/pull/126753\n\nCloses #123432.\n\ncc `@rust-lang/lang` `@rust-lang/types`\n\n`@rustbot` labels +T-lang +I-lang-nominated +A-impl-trait +F-precise_capturing\n\nTracking:\n\n- https://github.com/rust-lang/rust/issues/123432\n\n----\n\nFor the compiler reviewer, I'll leave some inline comments about diagnostics fallout :^)\n\nr? compiler","shortMessageHtmlLink":"Auto merge of rust-lang#127672 - compiler-errors:precise-capturing, r…"}},{"before":"9ad9819bfce33ccf97080cef03034e435897b313","after":"811d7dd11302e86d1678f7d61586d51e54c47e27","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-08-13T09:33:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"`#[deprecated_safe_2024]`: Also use the `// TODO:` hint in the compiler error\n\nThis doesn't work for translated compiler error messages.","shortMessageHtmlLink":"#[deprecated_safe_2024]: Also use the // TODO: hint in the compil…"}},{"before":"445595be302ca7684bf446def366e500b98736b7","after":"9ad9819bfce33ccf97080cef03034e435897b313","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-08-08T14:37:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"`#[deprecated_safe_2024]`: Also use the `// TODO:` hint in the compiler error\n\nThis doesn't work for translated compiler error messages.","shortMessageHtmlLink":"#[deprecated_safe_2024]: Also use the // TODO: hint in the compil…"}},{"before":"a253f118e272dc3fd1e117a287584838b710ddc6","after":"445595be302ca7684bf446def366e500b98736b7","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-29T11:32:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"`#[deprecated_safe_2024]`: Also use the `// TODO:` hint in the compiler error\n\nThis doesn't work for translated compiler error messages.","shortMessageHtmlLink":"#[deprecated_safe_2024]: Also use the // TODO: hint in the compil…"}},{"before":"bf612e9a689b02f48b8b63b163161909bfd0bb7f","after":"a253f118e272dc3fd1e117a287584838b710ddc6","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-29T08:40:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Allow to customize `// TODO:` comment for deprecated safe autofix\n\nRelevant for the deprecation of `CommandExt::before_exit` in #125970.","shortMessageHtmlLink":"Allow to customize // TODO: comment for deprecated safe autofix"}},{"before":"c7195266748e0d604b7c50227fe8d990b8647400","after":"bf612e9a689b02f48b8b63b163161909bfd0bb7f","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-17T14:38:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Allow to customize `// TODO:` comment for deprecated safe autofix\n\nRelevant for the deprecation of `CommandExt::before_exit` in #125970.","shortMessageHtmlLink":"Allow to customize // TODO: comment for deprecated safe autofix"}},{"before":null,"after":"fd2c6cad171234e3217681036013e9793bbfc085","ref":"refs/heads/pr_exit_guard_no_mutex","pushedAt":"2024-07-17T13:00:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Use atomics instead of mutex in exit guard\n\nSlightly fewer instructions, no blocking.","shortMessageHtmlLink":"Use atomics instead of mutex in exit guard"}},{"before":"23286222577507e6924b6397f39329c3c3b5b8a5","after":"bf96c56e840971e931e2e11329b8d7b32ac2eab9","ref":"refs/heads/pr_unsafe_env_lint_name","pushedAt":"2024-07-17T12:40:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Rename `deprecated_safe` lint to `deprecated_safe_2024`\n\nCreate a lint group `deprecated_safe` that includes\n`deprecated_safe_2024`.\n\nAddresses https://github.com/rust-lang/rust/issues/124866#issuecomment-2142814375.","shortMessageHtmlLink":"Rename deprecated_safe lint to deprecated_safe_2024"}},{"before":"08175f882bbd09736243cdfbf9c185c9f9044f02","after":"2162f3f34b2b4f9a7d603ab05bec4246a7b855c0","ref":"refs/heads/pr_doc_fd_to_owned","pushedAt":"2024-07-17T12:34:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Mention how you can go from `BorrowedFd` to `OwnedFd` and back","shortMessageHtmlLink":"Mention how you can go from BorrowedFd to OwnedFd and back"}},{"before":"5502eec4c94c8844c250634b4f213f1c028c5625","after":"c7195266748e0d604b7c50227fe8d990b8647400","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-17T12:19:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Allow to customize `// TODO:` comment for deprecated safe autofix\n\nRelevant for the deprecation of `CommandExt::before_exit` in #125970.","shortMessageHtmlLink":"Allow to customize // TODO: comment for deprecated safe autofix"}},{"before":"44d36647553c776971c4f78673ece6dcec66bd71","after":"5502eec4c94c8844c250634b4f213f1c028c5625","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-17T12:10:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Allow to customize `// TODO:` comment for deprecated safe autofix\n\nRelevant for the deprecation of `CommandExt::before_exit` in #125970.","shortMessageHtmlLink":"Allow to customize // TODO: comment for deprecated safe autofix"}},{"before":"b2e98da17ea31552f13e1bfc9ad1e279f79795bd","after":"44d36647553c776971c4f78673ece6dcec66bd71","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-17T12:00:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Allow to customize `// TODO:` comment for deprecated safe autofix\n\nRelevant for the deprecation of `CommandExt::before_exit` in #125970.","shortMessageHtmlLink":"Allow to customize // TODO: comment for deprecated safe autofix"}},{"before":"8672b2b7636fdb8cc1963af10ee9ae18b57709c1","after":"cb12b52f160c633551bd6e5be8d4c6e2e8660950","ref":"refs/heads/master","pushedAt":"2024-07-17T11:54:09.000Z","pushType":"push","commitsCount":1089,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Auto merge of #127838 - weihanglo:update-cargo, r=weihanglo\n\nUpdate cargo\n\n31 commits in 154fdac39ae9629954e19e9986fd2cf2cdd8d964..a2b58c3dad4d554ba01ed6c45c41ff85390560f2\n2024-07-07 01:28:23 +0000 to 2024-07-16 00:52:02 +0000\n- chore(ci): bump CI tools (rust-lang/cargo#14257)\n- test: migrate fetch and list_availables to snapbox (rust-lang/cargo#14214)\n- chore: downgrade to jobserver@0.1.28 (rust-lang/cargo#14254)\n- perf(source): Don't `du` on every git source load (rust-lang/cargo#14252)\n- fix(source): Don't warn about unreferenced duplicate packages (rust-lang/cargo#14239)\n- feat(test): Add cargo_test to test-support prelude (rust-lang/cargo#14243)\n- Add workflow to publish Cargo automatically (rust-lang/cargo#14202)\n- test: migrate implicit_features to snapbox (rust-lang/cargo#14245)\n- test: migrate build-std/main to snapbox (rust-lang/cargo#14241)\n- test: migrate check_cfg to snapbox (rust-lang/cargo#14235)\n- refactor(source): More RecursivePathSource clean up (rust-lang/cargo#14231)\n- Add more profiling traces (rust-lang/cargo#14238)\n- fix(overrides): Don't warn on duplicate packages from using '..' (rust-lang/cargo#14234)\n- fix(test): Redact elapsed time in the minutes time frame (rust-lang/cargo#14233)\n- test: Migrate lto tests to snapbox (rust-lang/cargo#14209)\n- fix: Ensure dep/feature activates the dependency on 2024 (rust-lang/cargo#14221)\n- chore(docs): update index of reference (rust-lang/cargo#14228)\n- test: migrate test to snapbox (rust-lang/cargo#14226)\n- chore: remove duplicate words (rust-lang/cargo#14229)\n- docs(contrib): Document things I look for in RFCs (rust-lang/cargo#14222)\n- docs(ref): Note MSRV for features in the docs (rust-lang/cargo#14224)\n- test(progress): Resolve flakiness (rust-lang/cargo#14223)\n- fix(test): Reduce over-prescription to the caller (rust-lang/cargo#14217)\n- refactor: move get_source_id out of registry (rust-lang/cargo#14218)\n- fix: rename to `rustdoc::broken_intra_doc_links` (rust-lang/cargo#14215)\n- test: migrate member_errors, multitarget and new to snapbox (rust-lang/cargo#14210)\n- test: migrate generate_lockfile and glob_targets to snapbox (rust-lang/cargo#14200)\n- test: Ensure --list test works with cargo-bloat (rust-lang/cargo#14213)\n- dont make new constant InternedString in hot path (rust-lang/cargo#14211)\n- Fix compatible_with_older_cargo test. (rust-lang/cargo#14212)\n- test: migrate metabuild, metadata and net_config to snapbox (rust-lang/cargo#14162)","shortMessageHtmlLink":"Auto merge of rust-lang#127838 - weihanglo:update-cargo, r=weihanglo"}},{"before":null,"after":"b2e98da17ea31552f13e1bfc9ad1e279f79795bd","ref":"refs/heads/pr_deprecated_safe_todo","pushedAt":"2024-07-17T11:46:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Allow to customize `// TODO:` comment for deprecated safe autofix\n\nRelevant for the deprecation of `CommandExt::before_exit` in #125970.","shortMessageHtmlLink":"Allow to customize // TODO: comment for deprecated safe autofix"}},{"before":"e1f0fd01fb7e39e5f14c36b5ad7de8244f17a3a4","after":"fc85278f47447dd1998d30d1f742f762869067a7","ref":"refs/heads/pr_command_env_equals","pushedAt":"2024-07-10T13:58:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Validate environment variable names in `std::process`\n\nMake sure that they're not empty and do not contain `=` signs beyond the\nfirst character. This prevents environment variable injection, because\npreviously, setting the `PATH=/opt:` variable to `foobar` would lead to\nthe `PATH` variable being overridden.\n\nFixes #122335.","shortMessageHtmlLink":"Validate environment variable names in std::process"}},{"before":"0bb2da2e9d6c22a3b508b24187c3c2f11a343c8f","after":"c006cca14c5ff858ebd5149c9b4d8e403671dfa8","ref":"refs/heads/pr_file_stream_len","pushedAt":"2024-07-10T13:51:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Optimize `Seek::stream_len` impl for `File`\n\nIt uses the file metadata on Unix with a fallback for files incorrectly\nreported as zero-sized. It uses `GetFileSizeEx` on Windows.\n\nThis reduces the number of syscalls needed for determining the file size\nof an open file from 3 to 1.","shortMessageHtmlLink":"Optimize Seek::stream_len impl for File"}},{"before":null,"after":"45ad522e8745b9d2da00c56e93cca4d2f8c8fe7c","ref":"refs/heads/pr_debug_event_nonpacked","pushedAt":"2024-07-10T13:47:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Don't mark `DEBUG_EVENT` struct as `repr(packed)`\n\nThat would give it alignment of 1 which is ABI-incompatible with its C\ndefinition.","shortMessageHtmlLink":"Don't mark DEBUG_EVENT struct as repr(packed)"}},{"before":"cb33c5e737b7a28b9f1bd45b8363144f93466b4f","after":"e1f0fd01fb7e39e5f14c36b5ad7de8244f17a3a4","ref":"refs/heads/pr_command_env_equals","pushedAt":"2024-07-10T13:20:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Fix process env test for Windows","shortMessageHtmlLink":"Fix process env test for Windows"}},{"before":"2a1dace2a6d234ea282c298e21565e0d25f70358","after":"a41ec3f5165ccde57f655085e595e718fd2794c3","ref":"refs/heads/pr_cloned_inner","pushedAt":"2024-07-09T12:47:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Add methods to access the wrapped iterator of `Cloned`\n\nI wanted to call `.as_slice()` on a `slice::Iter`, but the iterator was\nwrapped in a `.cloned()` call.","shortMessageHtmlLink":"Add methods to access the wrapped iterator of Cloned"}},{"before":"163a527809e4cad074d7f113975b1e5c1f8fe9c4","after":"2a1dace2a6d234ea282c298e21565e0d25f70358","ref":"refs/heads/pr_cloned_inner","pushedAt":"2024-07-09T12:30:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Add methods to access the wrapped iterator of `Cloned`\n\nI wanted to call `.as_slice()` on a `slice::Iter`, but the iterator was\nwrapped in a `.cloned()` call.","shortMessageHtmlLink":"Add methods to access the wrapped iterator of Cloned"}},{"before":"336e6ab3b396e1d1eb9b5a2f0bbc1744f4a68244","after":"8672b2b7636fdb8cc1963af10ee9ae18b57709c1","ref":"refs/heads/master","pushedAt":"2024-07-09T12:17:49.000Z","pushType":"push","commitsCount":2757,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Auto merge of #127001 - beetrees:f16-debuginfo, r=michaelwoerister\n\nAdd Natvis visualiser and debuginfo tests for `f16`\n\nTo render `f16`s in debuggers on MSVC targets, this PR changes the compiler to output `f16`s as `struct f16 { bits: u16 }`, and includes a Natvis visualiser that manually converts the `f16`'s bits to a `float` which is can then be displayed by debuggers. `gdb`, `lldb` and `cdb` tests are also included for `f16` .\n\n`f16`/`f128` MSVC debug info issue: #121837\nTracking issue: #116909","shortMessageHtmlLink":"Auto merge of rust-lang#127001 - beetrees:f16-debuginfo, r=michaelwoe…"}},{"before":"ae52e62e252d8c6182736a5e30caa8d8aa287033","after":"163a527809e4cad074d7f113975b1e5c1f8fe9c4","ref":"refs/heads/pr_cloned_inner","pushedAt":"2024-07-09T12:17:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Add methods to access the wrapped iterator of `Cloned`\n\nI wanted to call `.as_slice()` on a `slice::Iter`, but the iterator was\nwrapped in a `.cloned()` call.","shortMessageHtmlLink":"Add methods to access the wrapped iterator of Cloned"}},{"before":null,"after":"ae52e62e252d8c6182736a5e30caa8d8aa287033","ref":"refs/heads/pr_cloned_inner","pushedAt":"2024-07-09T12:16:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Add methods to access the wrapped iterator of `Cloned`","shortMessageHtmlLink":"Add methods to access the wrapped iterator of Cloned"}},{"before":null,"after":"08175f882bbd09736243cdfbf9c185c9f9044f02","ref":"refs/heads/pr_doc_fd_to_owned","pushedAt":"2024-06-28T07:18:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Mention how you can go from `BorrowedFd` to `OwnedFd` and back","shortMessageHtmlLink":"Mention how you can go from BorrowedFd to OwnedFd and back"}},{"before":"6f7f6ac9441cfa3e3df90e38b26664184b4ea4a3","after":"cb33c5e737b7a28b9f1bd45b8363144f93466b4f","ref":"refs/heads/pr_command_env_equals","pushedAt":"2024-06-20T19:26:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"std::ffi: Remove unused link","shortMessageHtmlLink":"std::ffi: Remove unused link"}},{"before":"0cabc6f34aff69141a06a65b716f2e11ef0470ca","after":"6f7f6ac9441cfa3e3df90e38b26664184b4ea4a3","ref":"refs/heads/pr_command_env_equals","pushedAt":"2024-06-20T19:23:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Validate environment variable names in `std::process`\n\nMake sure that they're not empty and do not contain `=` signs beyond the\nfirst character. This prevents environment variable injection, because\npreviously, setting the `PATH=/opt:` variable to `foobar` would lead to\nthe `PATH` variable being overridden.\n\nFixes #122335.","shortMessageHtmlLink":"Validate environment variable names in std::process"}},{"before":"a733df6095d6eb2ebc5bdebfd45c69859e68ce96","after":"0cabc6f34aff69141a06a65b716f2e11ef0470ca","ref":"refs/heads/pr_command_env_equals","pushedAt":"2024-06-13T10:39:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tbu-","name":"Tobias Bucher","path":"/tbu-","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6666593?s=80&v=4"},"commit":{"message":"Validate environment variable names in `std::process`\n\nMake sure that they're not empty and do not contain `=` signs beyond the\nfirst character. This prevents environment variable injection, because\npreviously, setting the `PATH=/opt:` variable to `foobar` would lead to\nthe `PATH` variable being overridden.\n\nFixes #122335.","shortMessageHtmlLink":"Validate environment variable names in std::process"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yMVQxNDoyMTo0OS4wMDAwMDBazwAAAASgSYAw","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yMVQxNDoyMTo0OS4wMDAwMDBazwAAAASgSYAw","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0xM1QxMDozOTo0Ni4wMDAwMDBazwAAAARkSb88"}},"title":"Activity · tbu-/rust"}