summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2011-07-16Get rid of upb_symtabtxn.Joshua Haberman
This type was nothing but a map of defs. We can as easily just pass an array of defs into upb_symtab_add().
2011-07-15Directory restructure.Joshua Haberman
Includes are now via upb/foo.h. Files specific to the protobuf format are now in upb/pb (the core library is concerned with message definitions, handlers, and byte streams, but knows nothing about any particular serializationf format).
2011-07-14Major refactoring: upb_string is gone in favor of upb_strref.Joshua Haberman
2011-06-17Major refactoring: abandon upb_msg, add upb_accessors.Joshua Haberman
Next on the chopping block is upb_string.
2011-05-21Make all handlers objects refcounted.Joshua Haberman
I'm realizing that basically all upb objects will need to be refcounted to be sharable across languages, but *not* messages which are on their way out so we can get out of the business of data representations. Things which must be refcounted: - encoders, decoders - handlers objects - defs
2011-05-20Add startseq/endseq handlers.Joshua Haberman
Startseq/endseq handlers are called at the beginning and end of a sequence of repeated values. Protobuf does not really have direct support for this (repeated primitive fields do not delimit "begin" and "end" of the sequence) but we can infer them from the bytestream. The benefit of supporting them explicitly is that they get their own stack frame and closure, so we can avoid having to find the array's address over and over and deciding if we need to initialize it. This will also pave the way for better support of JSON, which does have explicit "startseq/endseq" markers: [].
2011-05-19Change dispatcher error handling model.Joshua Haberman
Now the dispatcher will call error handlers instaed of returning statuses that the caller has to constantly check.
2011-05-10Fix JIT for new interface.Joshua Haberman
2011-05-10Vastly improved/simplified the upb_handlers API.Joshua Haberman
2011-05-08Documentation, some type renaming, nix unknown handler for now.Joshua Haberman
2011-05-08Split upb_stream -> upb_bytestream/upb_handlers.Joshua Haberman
2011-05-08Decoder redesign in preparation for packed fields and start/endseq.Joshua Haberman
2011-05-06Refactor varint encoding/decoding.Joshua Haberman
2011-04-15Calculate and print string sizes in test messages.Joshua Haberman
2011-04-01First rough version of the JIT.Joshua Haberman
It can successfully parse SpeedMessage1. Preliminary results: 750MB/s on Core2 2.4GHz. This number is 2.5x proto2. This isn't apples-to-apples, because proto2 is parsing to a struct and we are just doing stream parsing, but for apps that are currently using proto2, this is the improvement they would see if they could move to stream-based processing. Unfortunately perf-regression-test.py is broken, and I'm not 100% sure why. It would be nice to fix it first (to ensure that there are no performance regressions for the table-based decoder) but I'm really impatient to get the JIT checked in.
2011-03-28Switch to non-branching varint decoder.Joshua Haberman
2011-03-20Update copyright to be Google Inc.Josh Haberman
This doesn't reflect any material change in how I will be working on upb, and I have no problem making this change. It's still open source under the BSD license, and I'll still be working on it well beyond the hours that constitute a normal job.
2011-03-20upb_stream: all callbacks registered ahead-of-time.Josh Haberman
This is a significant change to the upb_stream protocol, and should hopefully be the last significant change. All callbacks are now registered ahead-of-time instead of having delegated callbacks registered at runtime, which makes it much easier to aggressively optimize ahead-of-time (like with a JIT). Other impacts of this change: - You no longer need to have loaded descriptor.proto as a upb_def to load other descriptors! This means the special-case code we used for bootstrapping is no longer necessary, and we no longer need to link the descriptor for descriptor.proto into upb. - A client can now register any upb_value as what will be delivered to their value callback, not just a upb_fielddef*. This should allow for other clients to get more bang out of the streaming decoder. This change unfortunately causes a bit of a performance regression -- I think largely due to highly suboptimal code that GCC generates when structs are returned by value. See: http://blog.reverberate.org/2011/03/19/when-a-compilers-slow-code-actually-bites-you/ On the other hand, once we have a JIT this should no longer matter. Performance numbers: plain.parsestream_googlemessage1.upb_table: 374 -> 396 (5.88) plain.parsestream_googlemessage2.upb_table: 616 -> 449 (-27.11) plain.parsetostruct_googlemessage1.upb_table_byref: 268 -> 269 (0.37) plain.parsetostruct_googlemessage1.upb_table_byval: 215 -> 204 (-5.12) plain.parsetostruct_googlemessage2.upb_table_byref: 307 -> 281 (-8.47) plain.parsetostruct_googlemessage2.upb_table_byval: 297 -> 272 (-8.42) omitfp.parsestream_googlemessage1.upb_table: 423 -> 410 (-3.07) omitfp.parsestream_googlemessage2.upb_table: 679 -> 483 (-28.87) omitfp.parsetostruct_googlemessage1.upb_table_byref: 287 -> 282 (-1.74) omitfp.parsetostruct_googlemessage1.upb_table_byval: 226 -> 219 (-3.10) omitfp.parsetostruct_googlemessage2.upb_table_byref: 315 -> 298 (-5.40) omitfp.parsetostruct_googlemessage2.upb_table_byval: 297 -> 287 (-3.37)
2011-02-24Pass the upb_fielddef* to the endmsg callback.Joshua Haberman
2011-02-22Major work on Lua extension and default values.Joshua Haberman
Default values are now supported, and the Lua extension can now create and modify individual protobuf objects.
2011-02-20Split varint decoders into separate .h file.Joshua Haberman
This makes it easier to benchmark and test the multiple possible implementations of varint decoding.
2011-02-18Change the API for getting the bootstrapped defs.Joshua Haberman
The symtab that contains them is now hidden, and you can look them up by name but there is no access to the symtab itself, so there is no risk of mutating it (by extending it, adding other defs to it, etc).
2011-02-17Split inttable into a hash part and an array part.Joshua Haberman
upb_inttable() now supports a "compact" operation that will decide on an array size and put all entries with small enough keys into the array part for faster lookup. Also exposed the upb_itof_ent structure and put a few useful values there, so they are one fewer pointer chase away.
2011-02-10Add (but do not activate) an SSE varint decoder.Joshua Haberman
2011-02-06All tests pass again, valgrind-clean! Next up: benchmarks.Joshua Haberman
2011-02-05Another round of fixes.Joshua Haberman
test_vs_proto2.googlemessage1 passes again, with no memory leaks!
2011-02-05Tons of work: we're close to passing test_vs_proto2 again.Joshua Haberman
2011-02-04Improved table benchmark accuracy and output formatting.Joshua Haberman
2011-01-30Fixes to decoder and textprinter: it works (for some input)!Joshua Haberman
A protobuf -> text stream for descriptor.proto now outputs the same text as proto2.
2011-01-29Fixes to decoder, stdio, textprinter.Joshua Haberman
2011-01-22Added test_stream.c for testing upb_stream.h.Joshua Haberman
2011-01-22upb bootstraps again! and with no memory leaks!Joshua Haberman
2011-01-21Debugging test_def, it's close to working again!Joshua Haberman
2010-08-02Fleshed out upb_msg: test_vs_proto2 compiles but fails.Joshua Haberman
2010-07-21Updated Lua extension to handle fielddefs.Joshua Haberman
2010-07-17Add forgotten test_decoder.c.Joshua Haberman
2010-07-11Allow static upb_strings.Joshua Haberman
This can allow strings to reference static data, and reduced the memory footprint of test_def by about 10% (3k).
2010-07-10Successfully bootstraps!!Joshua Haberman
2010-07-10Fixed upb_string error with strange vsnprintf() behavior.Joshua Haberman
2010-07-10Incremental progress towards getting upb_def to bootstrap.Joshua Haberman
2010-07-10Fleshed out upb_string further. Now upb_def's onlyJoshua Haberman
unresolved references are upb_src.
2010-07-10Tests for string and fleshed out implementation.Joshua Haberman
2010-07-09Tweaks to upb_src/upb_sink interfaces.Joshua Haberman
2010-01-16Removed union tag from types.Joshua Haberman
2010-01-15Remove struct keyword from all types, use typedef instead.Joshua Haberman
2010-01-15upb_parser -> upb_decoderJoshua Haberman
2010-01-05Merge branch 'data-refactoring'. Ported benchmarks.Joshua Haberman
Conflicts: src/upb_data.c src/upb_data.h
2010-01-05Ported/fixed tests to new data types.Joshua Haberman
2010-01-01Bugfixes: descriptorgen works without leaks!Joshua Haberman
2009-12-06Truly fixed type cyclic refcounting.Joshua Haberman
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback