{"action":"created","issue":{"url":"https://api.github.com/repos/maximg/thrift/issues/41","labels_url":"https://api.github.com/repos/maximg/thrift/issues/41/labels{/name}","comments_url":"https://api.github.com/repos/maximg/thrift/issues/41/comments","events_url":"https://api.github.com/repos/maximg/thrift/issues/41/events","html_url":"https://github.com/maximg/thrift/pull/41","id":90256366,"number":41,"title":"Macros + Exceptions + Library Overhaul","user":{"login":"reem","id":4745181,"avatar_url":"https://avatars.githubusercontent.com/u/4745181?v=3","gravatar_id":"","url":"https://api.github.com/users/reem","html_url":"https://github.com/reem","followers_url":"https://api.github.com/users/reem/followers","following_url":"https://api.github.com/users/reem/following{/other_user}","gists_url":"https://api.github.com/users/reem/gists{/gist_id}","starred_url":"https://api.github.com/users/reem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reem/subscriptions","organizations_url":"https://api.github.com/users/reem/orgs","repos_url":"https://api.github.com/users/reem/repos","events_url":"https://api.github.com/users/reem/events{/privacy}","received_events_url":"https://api.github.com/users/reem/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-06-23T01:17:44Z","updated_at":"2015-06-24T20:44:13Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/maximg/thrift/pulls/41","html_url":"https://github.com/maximg/thrift/pull/41","diff_url":"https://github.com/maximg/thrift/pull/41.diff","patch_url":"https://github.com/maximg/thrift/pull/41.patch"},"body":"Introduces a mostly entirely new architecture for code generation and overhauls most APIs.\r\n\r\nThe C++ code generator now acts as a thin front-end generating calls to rust macros defined in the thrift crate, which acts as a back-end and does the actual code generation at rust compile time.\r\n\r\nThe generated Encode and Decode impls are now recursive, so instead of recursively generating the entire encoding/decoding strategy for a type we now just (figuratively) call encode or decode on all the fields. In addition to major compilation-time advantages, this approach also allows for things like recursive structs.\r\n\r\nLastly, this PR includes an implementation of thrift exceptions. Because thrift exception implementations in other languages rely heavily on __isset and nullability, this included a change making all struct fields Options as briefly discussed in #14 and requires exposing the `XXXXResult` types to server implementors. cc @gsingh93 if you had other ideas here.\r\n\r\nThe rust server and client examples now interoperate fully with others, and I have tested them against the python and C++ servers and clients.\r\n\r\nAlso, a multithreaded server is included."},"comment":{"url":"https://api.github.com/repos/maximg/thrift/issues/comments/115005860","html_url":"https://github.com/maximg/thrift/pull/41#issuecomment-115005860","issue_url":"https://api.github.com/repos/maximg/thrift/issues/41","id":115005860,"user":{"login":"reem","id":4745181,"avatar_url":"https://avatars.githubusercontent.com/u/4745181?v=3","gravatar_id":"","url":"https://api.github.com/users/reem","html_url":"https://github.com/reem","followers_url":"https://api.github.com/users/reem/followers","following_url":"https://api.github.com/users/reem/following{/other_user}","gists_url":"https://api.github.com/users/reem/gists{/gist_id}","starred_url":"https://api.github.com/users/reem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reem/subscriptions","organizations_url":"https://api.github.com/users/reem/orgs","repos_url":"https://api.github.com/users/reem/repos","events_url":"https://api.github.com/users/reem/events{/privacy}","received_events_url":"https://api.github.com/users/reem/received_events","type":"User","site_admin":false},"created_at":"2015-06-24T20:44:13Z","updated_at":"2015-06-24T20:44:13Z","body":"Take your time :)"}}