{"push_id":681335583,"size":1,"distinct_size":1,"ref":"refs/heads/c89","head":"19fac2a1427d894d2ad7e1470b0f0846c25da668","before":"0e88d23cafc374a3bf94e714f6d189e6078aa131","commits":[{"sha":"19fac2a1427d894d2ad7e1470b0f0846c25da668","author":{"email":"74624c047f1f07f5581b87b099e7652f0365a3b1@gmail.com","name":"Josh Haberman"},"message":"Ported upb to C89, for greater portability.\n\nA large part of this change contains surface-level\nporting, like moving variable declarations to the\ntop of the block.\n\nHowever there are a few more substantial things too:\n\n- moved internal-only struct definitions to a separate\n  file (structdefs.int.h), for greater encapsulation\n  and ABI compatibility.\n\n- removed the UPB_UPCAST macro, since it requires access\n  to the internal-only struct definitions.  Replaced uses\n  with calls to inline, type-safe casting functions.\n\n- removed the UPB_DEFINE_CLASS/UPB_DEFINE_STRUCT macros.\n  Class and struct definitions are now more explicit -- you\n  get to see the actual class/struct keywords in the source.\n  The casting convenience functions have been moved into\n  UPB_DECLARE_DERIVED_TYPE() and UPB_DECLARE_DERIVED_TYPE2().\n\n- the new way that we duplicate base methods in derived types\n  is also more convenient and requires less duplication.\n  It is also less greppable, but hopefully that is not\n  too big a problem.\n\nCompiler flags (-std=c89 -pedantic) should help to rigorously\nenforce that the code is free of C99-isms.\n\nA few functions are not available in C89 (strtoll).  There\nare temporary, hacky solutions in place.","distinct":true,"url":"https://api.github.com/repos/haberman/upb/commits/19fac2a1427d894d2ad7e1470b0f0846c25da668"}]}