{"push_id":1253894084,"size":18,"distinct_size":18,"ref":"refs/heads/master","head":"d6d05904697d89099b55da3331155392f1db9c00","before":"514d4cef24a3a463d7423bd75d17335547c6a99c","commits":[{"sha":"3808dc3560ed15c83f92a0c309d44864f53e968b","author":{"name":"Corey Farwell","email":"b70e762980caa58b92468c07f70f8aed89946b80@rwell.org"},"message":"Implement `AsRef<[T]>` for `std::slice::Iter`.\n\n`AsRef` is designed for conversions that are \"cheap\" (as per\nthe API docs). It is the case that retrieving the underlying\ndata of `std::slice::Iter` is cheap. In my opinion, there's no\nambiguity about what slice data will be returned, otherwise,\nI would be more cautious about implementing `AsRef`.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/3808dc3560ed15c83f92a0c309d44864f53e968b"},{"sha":"dc22186efb7d6ea5fff2fc1f6d39684ce9633bf7","author":{"name":"Corey Farwell","email":"b70e762980caa58b92468c07f70f8aed89946b80@rwell.org"},"message":"Add basic unit test for `std::slice::Iter::as_slice`.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/dc22186efb7d6ea5fff2fc1f6d39684ce9633bf7"},{"sha":"98c8e0a05dd7b1ecbbda28c1d01e05c1e41b1638","author":{"name":"cgswords","email":"29fd1a131eb377fafe03246d32d85337b6c2e233@gmail.com"},"message":"Proc_macro is alive","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/98c8e0a05dd7b1ecbbda28c1d01e05c1e41b1638"},{"sha":"1bf5fa3269ba32ae21e349ac675bdedcc7e99a66","author":{"name":"bors","email":"f85d84007542459f7a0e8d187f971eeac8d04314@rust-lang.org"},"message":"Auto merge of #35538 - cgswords:libproc_macro, r=nrc\n\nKicking off libproc_macro\n\nThis PR introduces `libproc_macro`, which is currently quite bare-bones (just a few macro construction tools and an initial `quote!` macro).\n\nThis PR also introduces a few test cases for it, and an additional `shim` file (at `src/libsyntax/ext/proc_macro_shim.rs` to allow a facsimile usage of Macros 2.0 *today*!","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/1bf5fa3269ba32ae21e349ac675bdedcc7e99a66"},{"sha":"9376da6f77e8b7ed204ee704b29e96213b69d0f1","author":{"name":"bors","email":"f85d84007542459f7a0e8d187f971eeac8d04314@rust-lang.org"},"message":"Auto merge of #35559 - frewsxcv:slice-iter-as-ref, r=alexcrichton\n\nImplement `AsRef<[T]>` for `std::slice::Iter`.\n\n`AsRef` is designed for conversions that are \"cheap\" (as per\nthe API docs). It is the case that retrieving the underlying\ndata of `std::slice::Iter` is cheap. In my opinion, there's no\nambiguity about what slice data will be returned, otherwise,\nI would be more cautious about implementing `AsRef`.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/9376da6f77e8b7ed204ee704b29e96213b69d0f1"},{"sha":"e314636b866a8b1b8a98e45ccac9a2204e72b65a","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: use Vec instead of VecPerParamSpace for ty::GenericPredicates.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/e314636b866a8b1b8a98e45ccac9a2204e72b65a"},{"sha":"b354ae95a29a7f78059a1a9fc867dd2e8639671a","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: move the SelfSpace before TypeSpace in Substs.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/b354ae95a29a7f78059a1a9fc867dd2e8639671a"},{"sha":"77dc61b5c68aacce4ab5d115b14825699ea6302b","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: force all raw accesses to VecPerParamSpace through as_full_slice.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/77dc61b5c68aacce4ab5d115b14825699ea6302b"},{"sha":"c87063f07e8f74c1950f3fd099fb578a833682c5","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: avoid using subst::VecPerParamSpace::{empty,new} directly.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/c87063f07e8f74c1950f3fd099fb578a833682c5"},{"sha":"5ef6af09e3b9df3dd01f0e4d53176b0a72ce5722","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: move defaulting's use of &mut Substs from InferCtxt to typeck.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/5ef6af09e3b9df3dd01f0e4d53176b0a72ce5722"},{"sha":"4b25f08512eab11aec151d8f718fca0d8840d0c0","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: move trait objects from TraitRef to ExistentialTraitRef.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/4b25f08512eab11aec151d8f718fca0d8840d0c0"},{"sha":"bfdfa1ce1d7275bbdb89ecb116bf765f19b204e1","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc_typeck: use Substs::from_generics instead of manually building them.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/bfdfa1ce1d7275bbdb89ecb116bf765f19b204e1"},{"sha":"4158673ad7150f4fa02fbea3654e8cf1628beb0b","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: reduce Substs and Generics to a simple immutable API.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/4158673ad7150f4fa02fbea3654e8cf1628beb0b"},{"sha":"c1cfd58cbdb84f834b8907dc5e1c7242c451225d","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: remove SelfSpace from ParamSpace.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/c1cfd58cbdb84f834b8907dc5e1c7242c451225d"},{"sha":"3e74e5bffe14ead921646d41bab436f8e6a69d33","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: split Generics of a method from its parent Generics.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/3e74e5bffe14ead921646d41bab436f8e6a69d33"},{"sha":"6f5e455c2de007a12ed632f84b986369ae43a504","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: split GenericPredicates of a method from its parent predicates.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/6f5e455c2de007a12ed632f84b986369ae43a504"},{"sha":"9453d9b8ada9f6b651b10b3ad8131732fc70c61e","author":{"name":"Eduard Burtescu","email":"613118da93f8edb865e6b8bbd310eb2d3bd69600@gmail.com"},"message":"rustc: remove ParamSpace from Substs.","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/9453d9b8ada9f6b651b10b3ad8131732fc70c61e"},{"sha":"d6d05904697d89099b55da3331155392f1db9c00","author":{"name":"bors","email":"f85d84007542459f7a0e8d187f971eeac8d04314@rust-lang.org"},"message":"Auto merge of #35605 - eddyb:substs, r=nikomatsakis\n\nRemove the ParamSpace separation from formal and actual generics in rustc.\n\nThis is the first step towards enabling the typesystem implemented by `rustc` to be extended\n(with generic modules, HKT associated types, generics over constants, etc.).\n\nThe current implementation splits all formal (`ty::Generics`) and actual (`Substs`) lifetime and type parameters (and even `where` clauses) into 3 \"parameter spaces\":\n* `TypeSpace` for `enum`, `struct`, `trait` and `impl`\n* `SelfSpace` for `Self` in a `trait`\n* `FnSpace` for functions and methods\n\nFor example, in `<X as Trait<A, B>>::method::<T, U>`, the `Substs` are `[[A, B], [X], [T, U]]`.\nThe representation uses a single `Vec` with 2 indices where it's split into the 3 \"parameter spaces\".\nSuch a simplistic approach doesn't scale beyond the Rust 1.0 typesystem, and its existence was mainly motivated by keeping code manipulating generic parameters correct, across all possible situations.\n\nSummary of changes:\n* `ty::Generics` are uniformly stored and can be queried with `tcx.lookup_generics(def_id)`\n * the `typeck::collect` changes for this resulted in a function to lazily compute the `ty::Generics` for a local node, given only its `DefId` - this can be further generalized to other kinds of type information\n* `ty::Generics` and `ty::GenericPredicates` now contain only their own parameters (or `where` clauses, respectively), and refer to their \"parent\", forming a linked list\n * right now most items have one level of nesting, only associated items and variants having two\n * in the future, if `<X as mod1<A>::mod2<B>::mod3::Trait<C>>::Assoc<Y>` is supported, it would be represented by item with the path `mod1::mod2::mod3::Trait::Assoc`, and 4 levels of generics: `mod1` with `[A]`, `mod2` with `[B]`, `Trait` with `[X, C]` and `Assoc` with `[Y]`\n* `Substs` gets two new APIs for working with arbitrary items:\n * `Substs::for_item(def_id, mk_region, mk_type)` will construct `Substs` expected by the definition `def_id`, calling `mk_region` for lifetime parameters and `mk_type` for type parameters, and it's guaranteed to *always* return `Substs` compatible with `def_id`\n * `substs.rebase_onto(from_base_def_id, to_base_substs)` can be used if `substs` is for an item nested within `from_base_def_id` (e.g. an associated item), to replace the \"outer parameters\" with `to_base_substs` - for example, you can translate a method's `Substs` between a `trait` and an `impl` (in both directions) if you have the `DefId` of one and `Substs` for the other\n* trait objects, without a `Self` in their `Substs`, use *solely* `ExistentialTraitRef` now, letting `TraitRef` assume it *always* has a `Self` present\n* both `TraitRef` and `ExistentialTraitRef` get methods which do operations on their `Substs` which are valid only for traits (or trait objects, respectively)\n* `Substs` loses its \"parameter spaces\" distinction, with effectively no code creating `Substs` in an ad-hoc manner, or inspecting them, without knowing what shape they have already\n\nFuture plans:\n* combine both lifetimes and types in a single `Vec<Kind<'tcx>>` where `Kind` would be a tagged pointer that can be `Ty<'tcx>`, `&'tcx ty::Region` or, in the future, potentially-polymorphic constants\n * this would require some performance investigation, if it implies a lot of dynamic checks\n* introduce an abstraction for `(T, Substs)`, where the `Substs` are even more hidden away from code\nmanipulating it; a precedent for this is `Instance` in trans, which has `T = DefId`; @nikomatsakis also referred to this, as \"lazy substitution\", when `T = Ty`\n* rewrite type pretty-printing to fully take advantage of this to inject actual in the exact places of formal generic parameters in any paths\n* extend the set of type-level information (e.g. beyond `ty::Generics`) that can be lazily queried during `typeck` and introduce a way to do those queries from code that can't refer to `typeck` directly\n * this is almost unrelated but is necessary for DAG-shaped recursion between constant evaluation and type-level information, i.e. for implementing generics over constants\n\nr? @nikomatsakis\ncc @rust-lang/compiler\n\ncc @nrc Could get any perf numbers ahead of merging this?","distinct":true,"url":"https://api.github.com/repos/jakllsch/rust/commits/d6d05904697d89099b55da3331155392f1db9c00"}]}
{"actor":{"display_login":"jakllsch"}}