{"push_id":1454046789,"size":431,"distinct_size":1,"ref":"refs/heads/master","head":"05d4065c34b2fc0b5e4c8d7dfbd5a85e845c9ad5","before":"120dacb84e7db568560e381aeec931aa13c680f8","commits":[{"sha":"bbd6b2c9919e02642a8874e5ceb2ba3b5c76adec","author":{"name":"bors-servo","email":"b09d4f4a3e19bc290c035b624e2133ac70195a90@mozilla.com"},"message":"Auto merge of #54 - vvuk:master, r=emilio\n\nSkip -isystem stuff if --target is specified, and don't strip leading _ on Windows\n\nThe -isystem stuff fixes issue #53.\n\nStripping leading _ on Windows is weird; it needs to not be stripped on MSVC (leading @), but on gcc at one point it needed to be.  But now it no longer does.  I don't know.  'cargo test' succeeds with mozjs bindings generated with these fixes.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/bbd6b2c9919e02642a8874e5ceb2ba3b5c76adec"},{"sha":"cfdf15f5d04d4fbca3e7fcb46a1dd658ade973cd","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Rewrite the core of the binding generator.\n\nTL;DR: The binding generator is a mess as of right now. At first it was funny\n(in a \"this is challenging\" sense) to improve on it, but this is not\nsustainable.\n\nThe truth is that the current architecture of the binding generator is a huge\npile of hacks, so these few days I've been working on rewriting it with a few\ngoals.\n\n 1) Have the hacks as contained and identified as possible. They're sometimes\n    needed because how clang exposes the AST, but ideally those hacks are well\n    identified and don't interact randomly with each others.\n\n    As an example, in the current bindgen when scanning the parameters of a\n    function that references a struct clones all the struct information, then if\n    the struct name changes (because we mangle it), everything breaks.\n\n 2) Support extending the bindgen output without having to deal with clang. The\n    way I'm aiming to do this is separating completely the parsing stage from\n    the code generation one, and providing a single id for each item the binding\n    generator provides.\n\n 3) No more random mutation of the internal representation from anywhere. That\n    means no more Rc<RefCell<T>>, no more random circular references, no more\n    borrow_state... nothing.\n\n 4) No more deduplication of declarations before code generation.\n\n    Current bindgen has a stage, called `tag_dup_decl`[1], that takes care of\n    deduplicating declarations. That's completely buggy, and for C++ it's a\n    complete mess, since we YOLO modify the world.\n\n    I've managed to take rid of this using the clang canonical declaration, and\n    the definition, to avoid scanning any type/item twice.\n\n 5) Code generation should not modify any internal data structure. It can lookup\n    things, traverse whatever it needs, but not modifying randomly.\n\n 6) Each item should have a canonical name, and a single source of mangling\n    logic, and that should be computed from the inmutable state, at code\n    generation.\n\n    I've put a few canonical_name stuff in the code generation phase, but it's\n    still not complete, and should change if I implement namespaces.\n\nImprovements pending until this can land:\n\n 1) Add support for missing core stuff, mainly generating functions (note that\n    we parse the signatures for types correctly though), bitfields, generating\n    C++ methods.\n\n 2) Add support for the necessary features that were added to work around some\n    C++ pitfalls, like opaque types, etc...\n\n 3) Add support for the sugar that Manish added recently.\n\n 4) Optionally (and I guess this can land without it, because basically nobody\n    uses it since it's so buggy), bring back namespace support.\n\nThese are not completely trivial, but I think I can do them quite easily with\nthe current architecture.\n\nI'm putting the current state of affairs here as a request for comments... Any\nthoughts? Note that there are still a few smells I want to eventually\nre-redesign, like the ParseError::Recurse thing, but until that happens I'm\nway happier with this kind of architecture.\n\nI'm keeping the old `parser.rs` and `gen.rs` in tree just for reference while I\ncode, but they will go away.\n\n[1]: https://github.com/Yamakaky/rust-bindgen/blob/master/src/gen.rs#L448","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/cfdf15f5d04d4fbca3e7fcb46a1dd658ade973cd"},{"sha":"da69afdaf90f091944719edd258ca1bb0c19a82b","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Back out docopt.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/da69afdaf90f091944719edd258ca1bb0c19a82b"},{"sha":"f318b638a81cf0602ece84fc412f87c7ab3a0b4e","author":{"name":"bors-servo","email":"b09d4f4a3e19bc290c035b624e2133ac70195a90@mozilla.com"},"message":"Auto merge of #37 - emilio:v2, r=nox\n\nRewrite the core of the binding generator.\n\nTL;DR: The binding generator is a mess as of right now. At first it was funny\n(in a \"this is challenging\" sense) to improve on it, but this is not\nsustainable.\n\nThe truth is that the current architecture of the binding generator is a huge\npile of hacks, so these few days I've been working on rewriting it with a few\ngoals.\n\n 1) Have the hacks as contained and identified as possible. They're sometimes\n    needed because how clang exposes the AST, but ideally those hacks are well\n    identified and don't interact randomly with each others.\n\n    As an example, in the current bindgen when scanning the parameters of a\n    function that references a struct clones all the struct information, then if\n    the struct name changes (because we mangle it), everything breaks.\n\n 2) Support extending the bindgen output without having to deal with clang. The\n    way I'm aiming to do this is separating completely the parsing stage from\n    the code generation one, and providing a single id for each item the binding\n    generator provides.\n\n 3) No more random mutation of the internal representation from anywhere. That\n    means no more `Rc<RefCell<T>>`, no more random circular references, no more\n    borrow_state... nothing.\n\n 4) No more deduplication of declarations before code generation.\n\n    Current bindgen has a stage, called `tag_dup_decl`[1], that takes care of\n    deduplicating declarations. That's completely buggy, and for C++ it's a\n    complete mess, since we YOLO modify the world.\n\n    I've managed to take rid of this using the clang canonical declaration, and\n    the definition, to avoid scanning any type/item twice.\n\n 5) Code generation should not modify any internal data structure. It can lookup\n    things, traverse whatever it needs, but not modifying randomly.\n\n 6) Each item should have a canonical name, and a single source of mangling\n    logic, and that should be computed from the immutable state, at code\n    generation.\n\n    I've put a few canonical_name stuff in the code generation phase, but it's\n    still not complete, and should change if I implement namespaces.\n\nImprovements pending until this can land:\n\n 1) Add support for missing core stuff, mainly generating functions (note that\n    we parse the signatures for types correctly though), bitfields, generating\n    C++ methods.\n\n 2) Add support for the necessary features that were added to work around some\n    C++ pitfalls, like opaque types, etc...\n\n 3) Add support for the sugar that Manish added recently.\n\n 4) Optionally (and I guess this can land without it, because basically nobody\n    uses it since it's so buggy), bring back namespace support.\n\nThese are not completely trivial, but I think I can do them quite easily with\nthe current architecture.\n\nI'm putting the current state of affairs here as a request for comments...\n Note that there are still a few smells I want to eventually\nre-redesign, like the ParseError::Recurse thing, but until that happens I'm\nway happier with this kind of architecture.\n\nI'm keeping the old `parser.rs` and `gen.rs` in tree just for reference while I\ncode, but they will go away.\n\n[1]: https://github.com/Yamakaky/rust-bindgen/blob/master/src/gen.rs#L448","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/f318b638a81cf0602ece84fc412f87c7ab3a0b4e"},{"sha":"821252d070d6bc8fca462890d52426ffbe2d6d91","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Some fixes for function pointers, typedefs, and OSX's stdlib.h.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/821252d070d6bc8fca462890d52426ffbe2d6d91"},{"sha":"506531522c5910717d89fc3bfdf07d0cdf65485a","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Add Int128 types.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/506531522c5910717d89fc3bfdf07d0cdf65485a"},{"sha":"6ed0253913afc0c0258eaedfb27d87322250f2b2","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Index unnamed types by canonical declaration.\n\nThis fixes union_with_nesting.h","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/6ed0253913afc0c0258eaedfb27d87322250f2b2"},{"sha":"dd45e455fa7e6f1877091a584c7872e750678bb9","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Test weird edge cases with template params and stuff.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/dd45e455fa7e6f1877091a584c7872e750678bb9"},{"sha":"cc8ed879bc99449146539ed41042b5c8f07545f6","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Represent block pointers as *mut c_void instead.\n\nSigned-off-by: Emilio Cobos Álvarez <ecoal95@gmail.com>","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/cc8ed879bc99449146539ed41042b5c8f07545f6"},{"sha":"33debb35bfcd568a570e7d3c702d8643eff1a7a4","author":{"name":"bors-servo","email":"b09d4f4a3e19bc290c035b624e2133ac70195a90@mozilla.com"},"message":"Auto merge of #58 - emilio:funcs, r=nox\n\nSome function pointers, typedefs, and OSX's stdlib.\n\nr? @nox\n\nThe change from indexing cursors to index USRs was because in the `inner_template_self` test, the `next` pointer pointed to a clang-generated class declaration that caused us to not catch the type as already resolved.\n\nAlso, that's the recommended way to check against same symbols from different translation units, though now we don't use it yet.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/33debb35bfcd568a570e7d3c702d8643eff1a7a4"},{"sha":"8142eed2f610596b55d23cb8812176c12eec9da8","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Put our dependencies in shape.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/8142eed2f610596b55d23cb8812176c12eec9da8"},{"sha":"c41a1c28ef54fbc3a61d56777696860aae2c23c5","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Union support.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/c41a1c28ef54fbc3a61d56777696860aae2c23c5"},{"sha":"2916beaf1d6115b80902b847cd786f81dd14208c","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Use the upstreamed version of the array builder.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/2916beaf1d6115b80902b847cd786f81dd14208c"},{"sha":"9e1ddf9632ed4ffb04b49e7d317d15b32de6225c","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Run tests on stable.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/9e1ddf9632ed4ffb04b49e7d317d15b32de6225c"},{"sha":"978846cf6cd3f56401884ac222a1721b62f98583","author":{"name":"bors-servo","email":"b09d4f4a3e19bc290c035b624e2133ac70195a90@mozilla.com"},"message":"Auto merge of #61 - emilio:unions, r=nox\n\nUnion support\n\nBuilt on top of #58, this adds support for untagged unions if not running under the `--no-unstable-rust-flag`.\n\nThe last commit is an example try run passing with this, but should be reverted (and the `--no-unstable-rust` flag passed by default to our harness).\n\nThis depends on https://github.com/serde-rs/aster/pull/109.\n\nr? @nox","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/978846cf6cd3f56401884ac222a1721b62f98583"},{"sha":"5cc0d93393882bb928eee6310d4086e8302219c2","author":{"name":"Jean-Philippe DUFRAIGNE","email":"b94e3ea87f4015be26a84af44f3d86faab861bb1@gmail.com"},"message":"Handle re-declaration of a global variable. Fix #48","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/5cc0d93393882bb928eee6310d4086e8302219c2"},{"sha":"8b4115959a63788a087f683615834233f3ba0e85","author":{"name":"Jean-Philippe DUFRAIGNE","email":"b94e3ea87f4015be26a84af44f3d86faab861bb1@gmail.com"},"message":"Fix review comment. Fix #47","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/8b4115959a63788a087f683615834233f3ba0e85"},{"sha":"ad7e90f7af4cd7235249b6ef7ece707a0752b457","author":{"name":"bors-servo","email":"b09d4f4a3e19bc290c035b624e2133ac70195a90@mozilla.com"},"message":"Auto merge of #63 - jeanphilippeD:deduplicate-statics, r=emilio\n\nHandle re-declaration of a global variable. Fix #47","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/ad7e90f7af4cd7235249b6ef7ece707a0752b457"},{"sha":"1a04499d11c673502b4d3178d8e7ea394dcd79b2","author":{"name":"Emilio Cobos Álvarez","email":"ac7d742765dd00d21c3ba30feda77cb44cb363f2@gmail.com"},"message":"Add documentation for building with ports and LLVM 3.9\n\nFixes #64.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/1a04499d11c673502b4d3178d8e7ea394dcd79b2"},{"sha":"2034f77fee7cace15afc549eb8397276c38973cc","author":{"name":"bors-servo","email":"b09d4f4a3e19bc290c035b624e2133ac70195a90@mozilla.com"},"message":"Auto merge of #65 - emilio:port-docs, r=metajack\n\nAdd documentation for building with ports and LLVM 3.9\n\nFixes #64.","distinct":false,"url":"https://api.github.com/repos/vvuk/rust-bindgen/commits/2034f77fee7cace15afc549eb8397276c38973cc"}]}
{"actor":{"display_login":"vvuk"}}