[roll] Roll fuchsia [udp] Migrate to stable decode API

It turns out we can migrate to the stable API without breaking ABI. The
deserializer passes

  fidl::internal::WireFormatMetadataForVersion(fidl::internal::WireFormatVersion::kV2)

as the wire format metadata, because currently the serializer does not
write them.

Later, we can migrate to an evolvable ABI by soft-transitioning the
udp_serde protocol using the udp_serde version number, at which point we
can parse out the FIDL wire format metadata using:

  fidl::WireFormatMetadata::FromOpaque(opaque);

Where |opaque| is an uint64 obtained from the `wire_format_metadata()`
field of the encoding result object at sending time.

Performance: the new encoding API is a little bit slower. The new
decoding API is a little bit faster. Overall they sort of evens out:

RecvMsgMeta/Deserialize/IPv4/Empty               faster  0.847-0.878    111.7 +/- 1.7 ns    96.34 +/- 0.25 ns
RecvMsgMeta/Deserialize/IPv4/Full                faster  0.902-0.942    220.8 +/- 4.1 ns    203.43 +/- 0.58 ns
RecvMsgMeta/Deserialize/IPv6/Empty               faster  0.848-0.875    112.1 +/- 1.5 ns    96.57 +/- 0.28 ns
RecvMsgMeta/Deserialize/IPv6/Full                faster  0.932-0.944    232.29 +/- 0.98 ns  217.91 +/- 0.41 ns
RecvMsgMeta/Serialize/IPv4/Empty                 slower  1.017-1.026    357.41 +/- 0.37 ns  365.1 +/- 1.2 ns
RecvMsgMeta/Serialize/IPv4/Full                  slower  1.012-1.021    473.47 +/- 0.78 ns  481.3 +/- 1.4 ns
RecvMsgMeta/Serialize/IPv6/Empty                 slower  1.011-1.025    359.5 +/- 1.8 ns    365.98 +/- 0.55 ns
RecvMsgMeta/Serialize/IPv6/Full                  slower  1.014-1.026    492.6 +/- 1.3 ns    502.4 +/- 1.4 ns
RecvMsgMeta/SerializeThenDeserialize/IPv6/Empty  faster  0.991-0.999    455.02 +/- 0.52 ns  452.7 +/- 1.2 ns
RecvMsgMeta/SerializeThenDeserialize/IPv6/Full   faster  0.987-0.998    734.8 +/- 2.0 ns    729.2 +/- 1.9 ns
SendMsgMeta/Deserialize/IPv4/Empty               faster  0.863-0.872    85.10 +/- 0.38 ns   73.798 +/- 0.070 ns
SendMsgMeta/Deserialize/IPv4/Full                faster  0.917-0.931    188.8 +/- 1.3 ns    174.47 +/- 0.18 ns
SendMsgMeta/Deserialize/IPv6/Empty               faster  0.863-0.873    84.97 +/- 0.33 ns   73.76 +/- 0.15 ns
SendMsgMeta/Deserialize/IPv6/Full                faster  0.909-0.942    205.9 +/- 2.9 ns    190.50 +/- 0.72 ns
SendMsgMeta/Serialize/IPv4/Full                  slower  1.001-1.012    352.6 +/- 1.1 ns    354.92 +/- 0.71 ns
SendMsgMeta/Serialize/IPv6/Full                  slower  1.002-1.018    364.3 +/- 1.3 ns    367.9 +/- 1.6 ns
SendMsgMeta/SerializeThenDeserialize/IPv4/Empty  faster  0.960-0.970    333.48 +/- 0.41 ns  321.8 +/- 1.4 ns
SendMsgMeta/SerializeThenDeserialize/IPv4/Full   faster  0.973-0.982    535.72 +/- 0.67 ns  523.5 +/- 1.7 ns
SendMsgMeta/SerializeThenDeserialize/IPv6/Empty  faster  0.953-0.979    335.8 +/- 3.5 ns    324.3 +/- 1.1 ns
SendMsgMeta/SerializeThenDeserialize/IPv6/Full   faster  0.940-1.000    580 +/- 17 ns       561.8 +/- 1.2 ns

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/756833
Original-Revision: 5fdd067e87658d6738f004f6db1cd35d023f899b
GitOrigin-RevId: 7fa95b8b5df3506517c28dda18981406dd5db730
Change-Id: I6820d6afda9128f7f7aad825b81acd2e914633ac
1 file changed
tree: 9a2ea7bef2df00627afa95ad3dc84b6bf49416bc
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.