{"push_id":792762347,"size":21,"distinct_size":21,"ref":"refs/heads/master","head":"6d154af14a33260bcf6b36593859dcb7d644d6fa","before":"bc6c3970a072ced531f39eaa918084acd43c785a","commits":[{"sha":"104902100d8894d7578694754590668d6d725a17","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Reduce code bloat from conversion traits in function parameters","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/104902100d8894d7578694754590668d6d725a17"},{"sha":"49d8b0dcbef738b70f08b6648bb7c358b491f47c","author":{"email":"35a2c6fae61f8077aab61faa4019722abf05093c@schievink.net","name":"Jonas Schievink"},"message":"Make print_macro_backtrace non-recursive","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/49d8b0dcbef738b70f08b6648bb7c358b491f47c"},{"sha":"31fa44b18e6e8bd42630d6495823ade6a5adaeba","author":{"email":"35a2c6fae61f8077aab61faa4019722abf05093c@schievink.net","name":"Jonas Schievink"},"message":"Don't print the macro definition site in backtraces\n\nThis halves the backtrace length. The definition site wasn't very useful\nanyways, since it may be invalid (for compiler expansions) or located in\nanother crate. Since the macro name is still printed, grepping for it is\nstill an easy way of finding the definition.","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/31fa44b18e6e8bd42630d6495823ade6a5adaeba"},{"sha":"f3308b9c9d9b0cd5ace3d1fa4d3b0194a78187d0","author":{"email":"35a2c6fae61f8077aab61faa4019722abf05093c@schievink.net","name":"Jonas Schievink"},"message":"Don't print duplicate macro backtrace frames","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/f3308b9c9d9b0cd5ace3d1fa4d3b0194a78187d0"},{"sha":"bc7c4304ab2af12e782945f139eb73e4842b9d68","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Implement more traits for function pointers","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/bc7c4304ab2af12e782945f139eb73e4842b9d68"},{"sha":"38f76dbc386e9367bd6dc8f1fe48e4ddfeb7f653","author":{"email":"d8304a100f9eb6d8398a1b27f47b5aa4c1c0b0be@gmail.com","name":"Ariel Ben-Yehuda"},"message":"don't duplicate the code snippet in the \"trait unimplemented\" error\n\nnew error style:\n```\npath.rs:4:6: 4:7 error: the trait `core::marker::Sized` is not implemented for the type `[u8]` [E0277]\npath.rs:4 fn f(p: Path) {}\n               ^\npath.rs:4:6: 4:7 help: run `rustc --explain E0277` to see a detailed explanation\npath.rs:4:6: 4:7 note: `[u8]` does not have a constant size known at compile-time\npath.rs:4:6: 4:7 note: required because it appears within the type `std::sys::os_str::Slice`\npath.rs:4:6: 4:7 note: required because it appears within the type `std::ffi::os_str::OsStr`\npath.rs:4:6: 4:7 note: required because it appears within the type `std::path::Path`\npath.rs:4:6: 4:7 note: all local variables must have a statically known size\npath.rs:7:5: 7:36 error: the trait `core::marker::Send` is not implemented for the type `alloc::rc::Rc<()>` [E0277]\npath.rs:7     foo::<BTreeMap<Rc<()>, Rc<()>>>();\n              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\npath.rs:7:5: 7:36 help: run `rustc --explain E0277` to see a detailed explanation\npath.rs:7:5: 7:36 note: `alloc::rc::Rc<()>` cannot be sent between threads safely\npath.rs:7:5: 7:36 note: required because it appears within the type `collections::btree::node::Node<alloc::rc::Rc<()>, alloc::rc::Rc<()>>`\npath.rs:7:5: 7:36 note: required because it appears within the type `collections::btree::map::BTreeMap<alloc::rc::Rc<()>, alloc::rc::Rc<()>>`\npath.rs:7:5: 7:36 note: required by `foo`\nerror: aborting due to 2 previous errors\n```\n\nThis improves the #21793/#23286 situation","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/38f76dbc386e9367bd6dc8f1fe48e4ddfeb7f653"},{"sha":"522d4b0a354b60b1b69d15773197c4c3dba521a5","author":{"email":"67f1b29dab157300b35e02084daa2c9694d7a19a@gmail.com","name":"Sean Bowe"},"message":"Fixed regression in associated item resolution with default type parameters that reference Self in traits.","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/522d4b0a354b60b1b69d15773197c4c3dba521a5"},{"sha":"af3a0b08055f9dac932264253040c3626a7052f6","author":{"email":"67f1b29dab157300b35e02084daa2c9694d7a19a@gmail.com","name":"Sean Bowe"},"message":"Refactor ty_infer invocation","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/af3a0b08055f9dac932264253040c3626a7052f6"},{"sha":"3d0774f5989fc9425c5dc0ab5118fdcabba33555","author":{"email":"67f1b29dab157300b35e02084daa2c9694d7a19a@gmail.com","name":"Sean Bowe"},"message":"Added test for partially supplied type params in which remaining reference non-existant self","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/3d0774f5989fc9425c5dc0ab5118fdcabba33555"},{"sha":"caa10c3bde60ce0d9b5401771c443bff51d2a8e2","author":{"email":"eadae637b43c5dce192666668836adb97b9cc1ba@mail.tau.ac.il","name":"Ariel Ben-Yehuda"},"message":"move middle::ty and related modules to middle/ty/","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/caa10c3bde60ce0d9b5401771c443bff51d2a8e2"},{"sha":"4fec679399ddaf67d15adddad2677731f94dfa36","author":{"email":"67f1b29dab157300b35e02084daa2c9694d7a19a@gmail.com","name":"Sean Bowe"},"message":"Cleaner abstraction for type_substs","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/4fec679399ddaf67d15adddad2677731f94dfa36"},{"sha":"5f564fbbe46ee609e841062dad1817f17f90943c","author":{"email":"eadae637b43c5dce192666668836adb97b9cc1ba@mail.tau.ac.il","name":"Ariel Ben-Yehuda"},"message":"split ty.rs into smaller parts","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/5f564fbbe46ee609e841062dad1817f17f90943c"},{"sha":"2ad5a61fe234e54c9385efac7fb4d04f34a137b1","author":{"email":"d8304a100f9eb6d8398a1b27f47b5aa4c1c0b0be@gmail.com","name":"Ariel Ben-Yehuda"},"message":"move traits structural impls to traits::structural_impls","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/2ad5a61fe234e54c9385efac7fb4d04f34a137b1"},{"sha":"5a95acb8aba07ea8e5255893aa4e01e5ba5c2349","author":{"email":"d8304a100f9eb6d8398a1b27f47b5aa4c1c0b0be@gmail.com","name":"Ariel Ben-Yehuda"},"message":"split ty::util and ty::adjustment","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/5a95acb8aba07ea8e5255893aa4e01e5ba5c2349"},{"sha":"0be755c24a81f3c7c07dcd50406c9f17bee0d6ac","author":{"email":"35a2c6fae61f8077aab61faa4019722abf05093c@schievink.net","name":"Jonas Schievink"},"message":"Print the file in which a macro was defined","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/0be755c24a81f3c7c07dcd50406c9f17bee0d6ac"},{"sha":"e629dba0ee190cab49df0c5db299fb8d77264dda","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #28256 - petrochenkov:conv, r=alexcrichton\n\nThis patch transforms functions of the form\r\n```\r\nfn f<Generic: AsRef<Concrete>>(arg: Generic) {\r\n\tlet arg: &Concrete = arg.as_ref();\r\n\t// Code using arg\r\n}\r\n```\r\nto the next form:\r\n```\r\n#[inline]\r\nfn f<Generic: AsRef<Concrete>>(arg: Generic) {\r\n\tfn f_inner(arg: &Concrete) {\r\n\t\t// Code using arg\r\n\t}\r\n\t\r\n\tf_inner(arg.as_ref());\r\n}\r\n```\r\n\r\nTherefore, most of the code is concrete and not duplicated during monomorphisation (unless inlined)\r\nand only the tiny bit of conversion code is duplicated. This method was mentioned by @aturon in the\r\nConversion Traits RFC (https://github.com/rust-lang/rfcs/blame/master/text/0529-conversion-traits.md#L249) and similar techniques are not uncommon in C++ template libraries.\r\n\r\nThis patch goes to the extremes and applies the transformation even to smaller functions<sup>1</sup>\r\nfor purity of the experiment. *Some of them can be rolled back* if considered too ridiculous.\r\n\r\n<sup>1</sup> However who knows how small are these functions are after inlining and everything.\r\n\r\nThe functions in question are mostly `fs`/`os` functions and not used especially often with variety\r\nof argument types, so the code size reduction is rather small (but consistent). Here are the sizes\r\nof stage2 artifacts before and after the patch:\r\nhttps://gist.github.com/petrochenkov/e76a6b280f382da13c5d\r\nhttps://gist.github.com/petrochenkov/6cc28727d5256dbdfed0\r\n\r\nNote:\r\nAll the `inner` functions are concrete and unavailable for cross-crate inlining, some of them may\r\nneed `#[inline]` annotations in the future.\r\n\r\nr? @aturon","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/e629dba0ee190cab49df0c5db299fb8d77264dda"},{"sha":"b1c96168821d70992157f55ee9f06190bf299ba4","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #28274 - arielb1:split-ty, r=nikomatsakis\n\nThat file got way too big for its own good. It could be split more - this is just a start.\r\n\r\nr? @nikomatsakis","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/b1c96168821d70992157f55ee9f06190bf299ba4"},{"sha":"f3e6d315386cebdd6679055d9350c258f2a51689","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #28351 - jonas-schievink:macro-bt, r=nrc\n\nThe second commit in this PR will stop printing the macro definition site in backtraces, which cuts their length in half and increases readability (the definition site was only correct for local macros).\r\n\r\nThe third commit will not print an invocation if the last one printed occurred at the same place (span). This will make backtraces caused by a self-recursive macro much shorter.\r\n\r\n(A possible alternative would be to capture the backtrace first, then limit it to a few frames at the start and end of the chain and print `...` inbetween. This would also work with multiple macros calling each other, which is not addressed by this PR - although the backtrace will still be halved)\r\n\r\nExample:\r\n```rust\r\nmacro_rules! m {\r\n ( 0 $($t:tt)* ) => ( m!($($t)*); );\r\n () => ( fn main() {0} );\r\n}\r\n\r\nm!(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);\r\n```\r\n\r\nOn a semi-recent nightly, this yields:\r\n```\r\ntest.rs:3:21: 3:22 error: mismatched types:\r\n expected `()`,\r\n    found `_`\r\n(expected (),\r\n    found integral variable) [E0308]\r\ntest.rs:3  () => ( fn main() {0} );\r\n                              ^\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:2:23: 2:34 note: expansion site\r\ntest.rs:1:1: 4:2 note: in expansion of m!\r\ntest.rs:6:1: 6:35 note: expansion site\r\ntest.rs:3:21: 3:22 help: run `rustc --explain E0308` to see a detailed explanation\r\nerror: aborting due to previous error\r\n```\r\n\r\nAfter this patch:\r\n```\r\ntest.rs:3:21: 3:22 error: mismatched types:\r\n expected `()`,\r\n    found `_`\r\n(expected (),\r\n    found integral variable) [E0308]\r\ntest.rs:3  () => ( fn main() {0} );\r\n                              ^\r\ntest.rs:2:23: 2:34 note: in this expansion of m!\r\ntest.rs:6:1: 6:35 note: in this expansion of m!\r\ntest.rs:3:21: 3:22 help: run `rustc --explain E0308` to see a detailed explanation\r\nerror: aborting due to previous error\r\n```","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/f3e6d315386cebdd6679055d9350c258f2a51689"},{"sha":"a7b3eed7505d913788b18cac60097345ef21902e","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #28395 - ebfull:fix-associated-item-resolution, r=arielb1\n\nFixes #28344","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/a7b3eed7505d913788b18cac60097345ef21902e"},{"sha":"8320345221362e0a504e1d5efba7495bc895cb58","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #28268 - petrochenkov:fnptr, r=alexcrichton\n\nCloses https://github.com/rust-lang/rust/issues/26082","distinct":true,"url":"https://api.github.com/repos/rustyhorde/rust/commits/8320345221362e0a504e1d5efba7495bc895cb58"}]}