Hong Shin
0645439efa
Introduce upb_EncodeStatus_String and upb_DecodeStatus_String
...
Wrapper languages can now use these helpers to get human-friendly
error codes as opposed to manually re-mapping.
PiperOrigin-RevId: 634112262
7 months ago
Protobuf Team Bot
b8bb56df4c
Change Rust-upb to use upb_Encode and upb_Decode directly, instead of going through the upb C gencode.
...
PiperOrigin-RevId: 623474125
8 months ago
Éamonn McManus
0013736b04
Fix typo in `kUpb_EncodeOption_SkipUnkown`.
...
It is about encoding, not printing.
PiperOrigin-RevId: 622979373
8 months ago
Protobuf Team Bot
d5a435fb4b
Rename 'length delimited' to 'length prefixed'
...
PiperOrigin-RevId: 621597812
8 months ago
Protobuf Team Bot
c6f6a3291e
Add Length-Delimited Encode and Decode functions to upb.
...
PiperOrigin-RevId: 621510731
8 months ago
Eric Salo
f0cf0b653c
upb: clean up and consolidate the upb/message/ build targets
...
PiperOrigin-RevId: 594514934
11 months ago
Eric Salo
2fb0b93d9d
upb: tighten up and lock down upb/wire/
...
PiperOrigin-RevId: 593821827
11 months ago
Eric Salo
b997cb6d8d
upb: add a non-void typedef for upb_Message
...
PiperOrigin-RevId: 592863926
11 months ago
Adam Cozzette
501ececd39
Reorganize upb file structure
...
This change moves almost everything in the `upb/` directory up one level, so
that for example `upb/upb/generated_code_support.h` becomes just
`upb/generated_code_support.h`. The only exceptions I made to this were that I
left `upb/cmake` and `upb/BUILD` where they are, mostly because that avoids
conflict with other files and the current locations seem reasonable for now.
The `python/` directory is a little bit of a challenge because we had to merge
the existing directory there with `upb/python/`. I made `upb/python/BUILD` into
the BUILD file for the merged directory, and it effectively loads the contents
of the other BUILD file via `python/build_targets.bzl`, but I plan to clean
this up soon.
PiperOrigin-RevId: 568651768
1 year ago
Hong Shin
f4b102316e
Shorten our license headers into an abbreviated form that references LICENSE instead of including it in full.
...
PiperOrigin-RevId: 568239714
1 year ago
Eric Salo
9ce03d7d05
upb: tag wire/types.h as an export for (only) wire/reader.h
...
PiperOrigin-RevId: 565212511
1 year ago
Adam Cozzette
7286ffceb2
Merge the protobuf and upb Bazel repos
...
A couple weeks ago we moved upb into the protobuf Git repo, and this change
continues the merger of the two repos by making them into a single Bazel repo.
This was mostly a matter of deleting upb's WORKSPACE file and fixing up a bunch
of references to reflect the new structure.
Most of the changes are pretty mechanical, but one thing that needed more
invasive changes was the Python script for generating CMakeLists.txt,
make_cmakelists.py. The WORKSPACE file it relied on no longer exists with this
change, so I updated it to hardcode the information it needed from that file.
PiperOrigin-RevId: 564810016
1 year ago
Adam Cozzette
047df98dea
Move upb-x/ back to upb/
...
This is the second attempt to fix our Git history. This should allow
"git blame" to work correctly in the upb/ directory even though our
automation unexpectedly blew away that directory.
1 year ago
Adam Cozzette
895f190bda
Move upb to upb-x
1 year ago
Adam Cozzette
1ba80d7424
Move upb-temp/ back to upb/
1 year ago
Adam Cozzette
d38b8561e6
Move upb/ to upb-temp/
...
This will help us fix our Git commit history to ensure that git blame
works correctly for upb.
1 year ago
Adam Cozzette
6fc87fe3f7
Internal change
...
PiperOrigin-RevId: 560100839
1 year ago
Protobuf Team Bot
cab6c3e223
Internal change
...
PiperOrigin-RevId: 560096690
1 year ago
Adam Cozzette
0d1ba13e83
Move everything into new upb/ directory
1 year ago
Eric Salo
21ecc29ed0
upb: fix the leaking port defs
...
PiperOrigin-RevId: 559225386
1 year ago
Eric Salo
cc41a8bed3
upb: dedup the libraries
...
Remove array.h and map.h as hdrs from :collections_internal
Remove alloc.h and arena.h as hdrs from :mem_internal (and add them to :mem)
Remove common.h and decode.h and encode.h as hdrs from :wire_internal
Lock down the visibility of :wire_internal to upb-only
Merge :mini_descriptor_encode_internal into :mini_descriptor_internal
PiperOrigin-RevId: 558235138
1 year ago
Adam Cozzette
5aca728f72
Reformat copyright headers
...
PiperOrigin-RevId: 554509301
1 year ago
Jason Lunn
01fed1cc1b
Expose methods needed by Ruby FFI using UPB_API ( #1391 )
...
Once merged, the changes to ~`upb-ruby.h`~ `glue.c` in https://github.com/protocolbuffers/protobuf/pull/11483 can be reverted without breaking the FFI feature branch.
Closes #1391
COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/upb/pull/1391 from JasonLunn:ffi 5c3a5b8901a3017e12c96a9ea5ab2603a489fd1f
PiperOrigin-RevId: 547373759
1 year ago
Eric Salo
565c8fe66e
upb: copy the wire decode recursion-depth-checking code to the wire encoder
...
PiperOrigin-RevId: 524873082
2 years ago
Eric Salo
27d70edfe2
clean up the :mini_table build target
...
Remove circular dependencies that were bouncing back and forth between
msg_internal.h and mini_table/, including:
- splitting out each mini table subtype into its own header
- moving the non-reflection message code into message/
- moving the accessors from mini_table/ to message/
PiperOrigin-RevId: 489121042
2 years ago
Eric Salo
f6307877d3
move portability stuff into upb/port/
...
Also delete redundant system #includes that are already pulled in by port/def.inc
PiperOrigin-RevId: 486398989
2 years ago
Eric Salo
e137175092
create wire/ subdir for all wire-format code
...
PiperOrigin-RevId: 485898080
2 years ago
Protobuf Team Bot
0c78048723
clean the fences for the headers:
...
some headers were not including port_def.inc
some headers were not declaring extern "C"
some headers were backing out of the above in the wrong order
PiperOrigin-RevId: 457391878
2 years ago
Protobuf Team Bot
65bde4e75b
upb_Encode() now returns a status value
...
PiperOrigin-RevId: 454740100
2 years ago
Joshua Haberman
0c541f3305
Single encode.
3 years ago
Joshua Haberman
499c2cc8b1
upb_extreg, upb_msg
3 years ago
Joshua Haberman
1c955f37ce
Mass API rename and clang-reformat ( #485 )
...
* Wave 1: upb_fielddef.
* upb_fielddef itself.
* upb_oneofdef.
* upb_msgdef.
* ExtensionRange.
* upb_enumdef
* upb_enumvaldef
* upb_filedef
* upb_methoddef
* upb_servicedef
* upb_symtab
* upb_defpool_init
* upb_wellknown and upb_syntax_t
* Some constants.
* upb_status
* upb_strview
* upb_arena
* upb.h constants
* reflection
* encode
* JSON decode.
* json encode.
* msg_internal.
* Formatted with clang-format.
* Some naming fixups and comment reformatting.
* More refinements.
* A few more stragglers.
* Fixed PyObject_HEAD with semicolon. Removed TODO entries.
3 years ago
Joshua Haberman
a0374b3b08
Added required field checking into the encoder.
3 years ago
Joshua Haberman
823eb09694
Update all 2011 dates to 2021.
4 years ago
Joshua Haberman
e59d2c8fa7
Added license headers to all files.
4 years ago
Joshua Haberman
e9551022c1
Added depth limit checking to upb_encode().
...
This can catch infinite recursion due to loops,
or just excessively deep message trees.
The depth limit is configurable, but defaults to 64.
4 years ago
Joshua Haberman
76764643ac
Added option to binary encoder to skip unknown fields.
4 years ago
Joshua Haberman
a04627abc8
Added map sorting to binary and text encoders.
...
For the binary encoder, sorting is off by default.
For the text encoder, sorting is on by default.
Both defaults can be explicitly overridden.
This grows code size a bit. I think we could potentially
shave this (and other map-related code size) by having
the generated code inject a function pointer to the map-related
parsing/serialization code if maps are present.
FILE SIZE VM SIZE
-------------- --------------
+86% +1.07Ki +71% +768 upb/msg.c
[NEW] +391 [NEW] +344 _upb_mapsorter_pushmap
[NEW] +158 [NEW] +112 _upb_mapsorter_cmpstr
[NEW] +111 [NEW] +64 _upb_mapsorter_cmpbool
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpi32
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpi64
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpu32
[NEW] +110 [NEW] +64 _upb_mapsorter_cmpu64
-3.6% -8 -4.3% -8 _upb_map_new
+9.5% +464 +9.2% +424 upb/text_encode.c
[NEW] +656 [NEW] +616 txtenc_mapentry
+15% +32 +20% +32 upb_text_encode
-20.1% -224 -20.7% -224 txtenc_msg
+5.7% +342 +5.3% +296 upb/encode.c
[NEW] +344 [NEW] +304 encode_mapentry
[NEW] +246 [NEW] +208 upb_encode_ex
[NEW] +41 [NEW] +16 upb_encode_ex.ch
+0.7% +8 +0.7% +8 encode_scalar
-1.0% -32 -1.0% -32 encode_message
[DEL] -38 [DEL] -16 upb_encode.ch
[DEL] -227 [DEL] -192 upb_encode
+2.0% +152 +2.2% +152 upb/decode.c
+44% +128 +44% +128 [section .rodata]
+3.4% +24 +3.4% +24 _GLOBAL_OFFSET_TABLE_
+0.6% +107 +0.3% +48 upb/def.c
[NEW] +100 [NEW] +48 upb_fielddef_descriptortype
+7.1% +7 [ = ] 0 upb_fielddef_defaultint32
+2.9% +24 +2.9% +24 [section .dynsym]
+1.2% +24 [ = ] 0 [section .symtab]
+3.2% +16 +3.2% +16 [section .plt]
[NEW] +16 [NEW] +16 memcmp@plt
+0.5% +16 +0.6% +16 tests/conformance_upb.c
+1.5% +16 +1.6% +16 DoTestIo
+0.1% +16 +0.1% +16 upb/json_decode.c
+0.4% +16 +0.4% +16 jsondec_wellknown
+3.0% +8 +3.0% +8 [section .got.plt]
+3.0% +8 +3.0% +8 _GLOBAL_OFFSET_TABLE_
+1.6% +7 +1.6% +7 [section .dynstr]
+1.8% +4 +1.8% +4 [section .hash]
+0.5% +3 +0.5% +3 [LOAD #2 [RX]]
+2.8% +2 +2.8% +2 [section .gnu.version]
-60.0% -1.74Ki [ = ] 0 [Unmapped]
+0.3% +496 +1.4% +1.74Ki TOTAL
4 years ago
Joshua Haberman
cb26d883d1
WIP.
6 years ago
Joshua Haberman
694d51f4d6
Changed C API to only define structs, a table, and a few minimal inline functions.
6 years ago
Josh Haberman
e94ac4f757
Moved upb_msg parts that depend on def to a separate msgfactory.{c,h}.
...
Also got rid of the premature "v1" business that was attempting
to create a binary compatibility story.
Also added an in-progress CMakeLists.txt file.
6 years ago
Josh Haberman
1aafd4111b
A good start on upb_encode and upb_decode.
8 years ago