{"push_id":3076348467,"size":8,"distinct_size":8,"ref":"refs/heads/auto","head":"408582dc71ce526a836b807f43def8c0e8fd1012","before":"4632cf2a2e8c1720e3ae06920d945c4ac8ecbbd3","commits":[{"sha":"5a55cc618682e16c58d57b84f1e92029259ce377","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"proc_macro: introduce a \"bridge\" between clients (proc macros) and servers (compiler front-ends).","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/5a55cc618682e16c58d57b84f1e92029259ce377"},{"sha":"adcbb5f95424e938c2c96daf5e0e4cf7dd474470","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"proc_macro: remove the __internal module.","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/adcbb5f95424e938c2c96daf5e0e4cf7dd474470"},{"sha":"909456872e5d26cb12d682d65b26e6ee8ed1549b","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"proc_macro: move the rustc server to syntax_ext.","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/909456872e5d26cb12d682d65b26e6ee8ed1549b"},{"sha":"94a1a1be743770d516e2f2ff61904c39d42956d9","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"proc_macro: move to a dependency of libtest.","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/94a1a1be743770d516e2f2ff61904c39d42956d9"},{"sha":"f677f3ea938f9a4bbbf3a6e3c2a486c6f57696d2","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"Statically link proc_macro into proc macros.","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/f677f3ea938f9a4bbbf3a6e3c2a486c6f57696d2"},{"sha":"56cd55ddd06f798fbe8edd9c1ddc14a4c97d6288","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"tests: remove ignore-stage1 where possible in proc_macro tests.","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/56cd55ddd06f798fbe8edd9c1ddc14a4c97d6288"},{"sha":"4da63e6806a4cb6ab37be3d50b25d6423d3fd347","author":{"name":"Eduard-Mihai Burtescu","email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com"},"message":"tests: move all proc_macro tests from -fulldeps.","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/4da63e6806a4cb6ab37be3d50b25d6423d3fd347"},{"sha":"408582dc71ce526a836b807f43def8c0e8fd1012","author":{"name":"bors","email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org"},"message":"Auto merge of #49219 - eddyb:proc-macro-decouple, r=alexcrichton\n\nDecouple proc_macro from the rest of the compiler.\n\nThis PR removes all dependencies of `proc_macro` on compiler crates and allows multiple copies of `proc_macro`, built even by different compilers (but from the same source), to interoperate.\n\nPractically, it allows:\n* running proc macro tests at stage1 (I moved most from `-fulldeps` to the regular suites)\n* using proc macros in the compiler itself (may require some rustbuild trickery)\n\nOn the server (i.e. compiler front-end) side:\n* `server::*` traits are implemented to provide the concrete types and methods\n  * the concrete types are completely separated from the `proc_macro` public API\n  * the only use of the type implementing `Server` is to be passed to `Client::run`\n\nOn the client (i.e. proc macro) side (potentially using a different `proc_macro` instance!):\n* `client::Client` wraps around client-side (expansion) function pointers\n  * it encapsulates the `proc_macro` instance used by the client\n  * its `run` method can be called by a server, to execute the client-side function\n    * the client instance is bridged to the provided server, while it runs\n    * ~~currently a thread is spawned, could use process isolation in the future~~\n(not the case anymore, see #56058)\n* proc macro crates get a generated `static` holding a `&[ProcMacro]`\n  * this describes all derives/attr/bang proc macros, replacing the \"registrar\" function\n  * each variant of `ProcMacro` contains an appropriately typed `Client<fn(...) -> ...>`\n\n`proc_macro` public APIs call into the server via an internal \"bridge\":\n* only a currently running proc macro `Client` can interact with those APIs\n  * server code might not be able to (if it uses a different `proc_macro` instance)\n    * however, it can always create and `run` its own `Client`, but that may be inefficient\n* the `bridge` uses serialization, C ABI and integer handles to avoid Rust ABI instability\n* each invocation of a proc macro results in disjoint integers in its `proc_macro` handles\n  * this prevents using values of those types across invocations (if they even can be kept)\n\nr? @alexcrichton cc @jseyfried @nikomatsakis @Zoxc @thepowersgang","distinct":true,"url":"https://api.github.com/repos/rust-lang/rust/commits/408582dc71ce526a836b807f43def8c0e8fd1012"}]}
{"actor":{"display_login":"bors"}}