Commits on Jul 8, 2015
  1. Brought into compliance with Google open-source policies.

    - removed myself from Author headers in source files.
    - removed copyright notices from source file headers.
    - added
    committed Jul 8, 2015
Commits on Jul 7, 2015
  1. Merge pull request #32 from haberman/third_party

    Moved lunit to third_party for Google compliance.
    committed Jul 7, 2015
  2. Merge pull request #31 from haberman/third_party

    Moved DynASM to third_party to comply with Google policy.
    committed Jul 7, 2015
Commits on Jun 22, 2015
  1. Merge pull request #30 from haberman/encoderfix

    Fixed some bad bugs in upb_env.
    committed Jun 22, 2015
  2. Fixed some bad bugs in upb_env.

    Also added a unit test for upb_encoder that
    demonstrates the bugs and the fix.
    committed Jun 18, 2015
Commits on Jun 16, 2015
  1. Merge pull request #29 from haberman/symtabfix

    Fix for stack overflow for cyclic defs.
    committed Jun 16, 2015
Commits on Jun 12, 2015
  1. Fix for stack overflow for cyclic defs.

    Fixes this bug that came up in the Ruby
    committed Jun 12, 2015
Commits on Jun 6, 2015
  1. Fix for va_copy.

    committed Jun 6, 2015
Commits on Jun 4, 2015
  1. Fixes from Google-internal.

    committed Jun 4, 2015
Commits on Jun 3, 2015
  1. Merge pull request #27 from haberman/c89

    Ported upb to C89, for greater portability.
    committed Jun 3, 2015
Commits on Jun 2, 2015
  1. Ported upb to C89, for greater portability.

    A large part of this change contains surface-level
    porting, like moving variable declarations to the
    top of the block.
    However there are a few more substantial things too:
    - moved internal-only struct definitions to a separate
      file (, for greater encapsulation
      and ABI compatibility.
    - removed the UPB_UPCAST macro, since it requires access
      to the internal-only struct definitions.  Replaced uses
      with calls to inline, type-safe casting functions.
    - removed the UPB_DEFINE_CLASS/UPB_DEFINE_STRUCT macros.
      Class and struct definitions are now more explicit -- you
      get to see the actual class/struct keywords in the source.
      The casting convenience functions have been moved into
    - the new way that we duplicate base methods in derived types
      is also more convenient and requires less duplication.
      It is also less greppable, but hopefully that is not
      too big a problem.
    Compiler flags (-std=c89 -pedantic) should help to rigorously
    enforce that the code is free of C99-isms.
    A few functions are not available in C89 (strtoll).  There
    are temporary, hacky solutions in place.
    committed May 18, 2015
Commits on May 28, 2015
  1. Merge pull request #21 from google/tablestrings

    Restructure tables for C89 port and smaller size.
    committed May 28, 2015
Commits on May 19, 2015
  1. Merge pull request #22 from martinmaly/upbc

    Generating enums and intentries only if the tables are non-empty.
    committed May 19, 2015
Commits on May 18, 2015
Commits on May 17, 2015
  1. Restructure tables for C89 port and smaller size.

    Changes the data layout of tables slightly so that string
    keys are prefixed with their size, rather than the size
    being inline in the table itself.
    This has a few benefits:
    1. inttables shrink a bit, because there is no longer a wasted
       and unused size field sitting in them.
    2. This avoids the need to have a union in the table.  This is
       important for an impending C89 port of upb, since C89 has
       literally no way of statically initializing a non-first union
    committed May 17, 2015
Commits on May 16, 2015
  1. Enabled asserts() and verbosity for most Travis builds.

    Also added a separate ndebug build for testing that
    -DNDEBUG builds still work.
    Also disabled reference debugging by default, since it
    requires either a global lock or -DUPB_THREAD_UNSAFE.
    committed May 16, 2015
Commits on May 15, 2015
  1. Merge pull request #19 from cfallin/upb-seededalloc-fix

    Bugfix: seeded_alloc() should not realloc() user-provided memory.
    committed May 15, 2015
  2. Decoder bugfix.

    Don't back up decoder after skipunknown() unless we actually
    successfully consumed input data.
    committed May 15, 2015
Commits on May 14, 2015
  1. Enable Travis for Clang, and enable -Werror for all Travis builds.

    Also added an extra Clang-only warning flag.
    committed May 13, 2015
Commits on May 13, 2015
  1. Changes to Lua module loading, and file generation.

    This change has several parts:
    1. Resurrected tools/upbc.  The code was all there but the build was
       broken for open-source.  Now you can type "make tools/upbc" and
       it will build all necessary Lua modules and create a robust shell
       script for running upbc.
    2. Changed Lua module loading to no longer rely on OS-level .so
       dependencies.  The net effect of this is that you now only need
       to set LUA_PATH and LUA_CPATH; setting LD_LIBRARY_PATH or rpaths
       is no longer required.  Downside: this drops compatibility with
       Lua 5.1, since it depends on a feature that only exists in Lua >=5.2
       (and LuaJIT).
    3. Since upbc works again, I fixed the re-generation of the descriptor
       files (descriptor.upb.h, descriptor.upb.c).  "make genfiles" will
       re-generate these as well as the JIT code generator.
    4. Added a Travis test target that ensures that the checked-in generated
       files are not out of date.  I would do this for the Ragel generated
       file also, but we can't count on all versions of Ragel to necessarily
       generate identical output.
    5. Changed Makefile to no longer automatically run Ragel to regenerate
       the JSON parser.  This is unfortuante, because it's convenient when
       you're developing the JSON parser.  However, "git clone" sometimes
       skews the timestamps a little bit so that "make" thinks it needs to
       regenerate these files for a fresh "git clone."  This would normally
       be harmless, but if the user doesn't have Ragel installed, it makes
       the build fail completely.  So now you have to explicitly regenerate
       the Ragel output.  If you want to you can uncomment the auto-generation
       during development.
    committed May 13, 2015
Commits on May 11, 2015