)]}'
{
  "commit": "fcc02234d4c32b7f6801cc20154b33ee0e7a410a",
  "tree": "b8777f8edc56fdb53c61a54f8e7466b655f5c7bc",
  "parents": [
    "b9f89e3572f815eb141782f102fcfa0bba6a034c"
  ],
  "author": {
    "name": "Aaron Webster",
    "email": "awebster@gmail.com",
    "time": "Tue Jun 02 13:43:34 2026 -0700"
  },
  "committer": {
    "name": "Aaron Webster",
    "email": "awebster@gmail.com",
    "time": "Thu Jul 16 16:43:11 2026 -0700"
  },
  "message": "Add JSON output support to Emboss text format\n\nAdd a `json` mode to TextOutputOptions so any view can be serialized as\nJSON, e.g. `WriteToString(view, TextOutputOptions().Json(true))`:\n\n- Field names are quoted and values are comma-separated; comments are\n  suppressed.  Compact output by default; multiline JSON places each\n  field on its own indented line.\n- Enums serialize as quoted names (or bare numbers when the value has no\n  name); bool as true/false; NaN and Infinity as quoted strings.\n- comments(), digit_grouping(), and numeric_base() automatically return\n  JSON-appropriate values when json() is set, so callers don\u0027t have to\n  special-case JSON throughout.\n- Integers wider than 32 bits -- and the numeric form of unnamed enum\n  values whose underlying type is wider than 32 bits -- are serialized as\n  quoted strings by default (JsonLargeIntegerHandling::kLargeAsString),\n  avoiding silent precision loss in JSON parsers that treat all numbers as\n  IEEE-754 doubles.  JsonLargeIntegerHandling::kAsNumber opts back into raw\n  numeric output for consumers that preserve full 64-bit integers.\n\nAdds JsonTestEnum/JsonTestArrayStruct/JsonTestStruct/JsonEnumStruct/\nJsonFloatStruct fixtures to testdata/text_format.emb and coverage in\ntext_format_test.cc and emboss_array_view_test.cc (compact and multiline\noutput, skipped fields, large-integer and unnamed-enum handling, and\nNaN/Infinity).  Regenerates the C++ goldens.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9e2c781893c5885fa3df41f3ac324c7d3558dc5e",
      "old_mode": 33188,
      "old_path": "compiler/back_end/cpp/generated_code_templates",
      "new_id": "fadd4c1aa5486ba1f8c1eec4082543d66beeaec1",
      "new_mode": 33188,
      "new_path": "compiler/back_end/cpp/generated_code_templates"
    },
    {
      "type": "modify",
      "old_id": "82559cda86cc32cb1d873851f8a9af6b44ec326f",
      "old_mode": 33188,
      "old_path": "compiler/back_end/cpp/testcode/text_format_test.cc",
      "new_id": "8fd3b5038ca520a26970355b07d15705acb9c1a7",
      "new_mode": 33188,
      "new_path": "compiler/back_end/cpp/testcode/text_format_test.cc"
    },
    {
      "type": "modify",
      "old_id": "9cfe03d342cc8f1ba63960b9d6cb6b8e0ca511d1",
      "old_mode": 33188,
      "old_path": "runtime/cpp/emboss_text_util.h",
      "new_id": "945af6181dabe752e5ccd7c00a9cd00d6f10aad8",
      "new_mode": 33188,
      "new_path": "runtime/cpp/emboss_text_util.h"
    },
    {
      "type": "modify",
      "old_id": "1f632e892f5c03f3926b28c68ecb0e0f41acddb0",
      "old_mode": 33188,
      "old_path": "runtime/cpp/test/emboss_array_view_test.cc",
      "new_id": "3ef21e2909286504e26e766eaf44358e56dbca93",
      "new_mode": 33188,
      "new_path": "runtime/cpp/test/emboss_array_view_test.cc"
    },
    {
      "type": "modify",
      "old_id": "89a18e86ebe06bcec09c59feb084e1ebe1626ba5",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/alignments.emb.h",
      "new_id": "1ad9a1abaeb4c8dc9ca8ba8f032deec4615cb7d6",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/alignments.emb.h"
    },
    {
      "type": "modify",
      "old_id": "d80b04123c86fdf60b111a07d24f3c17fb773a8b",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/anonymous_bits.emb.h",
      "new_id": "854dee9037a52869d66260e9b3ab0f2cb543bf3a",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/anonymous_bits.emb.h"
    },
    {
      "type": "modify",
      "old_id": "a2ba5409756d7b6b1fefb77120e1ff159846a4b2",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/auto_array_size.emb.h",
      "new_id": "6b145f7d2163b14fcc7dde6ba3cb55647e967d10",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/auto_array_size.emb.h"
    },
    {
      "type": "modify",
      "old_id": "db1f2f5b7356a1e5459b80923901dc4959a3aab2",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/bcd.emb.h",
      "new_id": "ca4c4829a53d739030c98fa27719b3d47bbf5816",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/bcd.emb.h"
    },
    {
      "type": "modify",
      "old_id": "4c16a6ceb217df7385bb2d34dd31c6f34f099a07",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/bits.emb.h",
      "new_id": "243508bee5ffe1cc33527c7bd9acc71f7830ef61",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/bits.emb.h"
    },
    {
      "type": "modify",
      "old_id": "5bd586f83e0a95d16fbf68603bd029fe0ef0d38d",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/complex_offset.emb.h",
      "new_id": "92a2ac1ea07d62e000366fd825e165ce11618606",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/complex_offset.emb.h"
    },
    {
      "type": "modify",
      "old_id": "a7706f7d478b1bed434877094e9b6f2d09eea210",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/complex_structure.emb.h",
      "new_id": "22a7a8fb227b2970b1317afeb6963dfcd92d43ae",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/complex_structure.emb.h"
    },
    {
      "type": "modify",
      "old_id": "725fe8243cd3b736b63136ee5892a23f3b9b064a",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/condition.emb.h",
      "new_id": "5dc5ce8d31d00875b77627c910693853621da614",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/condition.emb.h"
    },
    {
      "type": "modify",
      "old_id": "4ad358b2d08bc918e238b1f35f1c25f1d42bbb6c",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/dynamic_size.emb.h",
      "new_id": "50640bcc9d7c91b7003001e2fc7f62a05419d8b0",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/dynamic_size.emb.h"
    },
    {
      "type": "modify",
      "old_id": "816bc7c6148e9e01b3521c353ce4c717de61cf1f",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/enum.emb.h",
      "new_id": "a45d9e1c7f043772445dc8c8c9c3adaff5721d6f",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/enum.emb.h"
    },
    {
      "type": "modify",
      "old_id": "c8ef42cb27a1bc2b23f83a8b6e4fd717457478f1",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/enum_case.emb.h",
      "new_id": "34b7cc974e22411ede6a40423ce002632b7c3eaf",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/enum_case.emb.h"
    },
    {
      "type": "modify",
      "old_id": "008d89efef73cd33ba61d7e8561bafc06513768d",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/explicit_sizes.emb.h",
      "new_id": "0ec38d27beade4eb3c23f814ac03ddd2a385569b",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/explicit_sizes.emb.h"
    },
    {
      "type": "modify",
      "old_id": "aa75bcb085c72fd8be43489c7e530753cadad702",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/float.emb.h",
      "new_id": "e55b696b8b59b53f33cee7f95a17828d9c4b98bf",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/float.emb.h"
    },
    {
      "type": "modify",
      "old_id": "8f53233bb7b825b5763e721839e149f2330d4962",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/imported.emb.h",
      "new_id": "da37af51758c8f2a29e1d1c901630fb71ee404c1",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/imported.emb.h"
    },
    {
      "type": "modify",
      "old_id": "076b06e08f0782b2f2698223a808d4b54e6e2175",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/imported_genfiles.emb.h",
      "new_id": "f4a9e7b952b38b9383e1f90f7b973e0106b9c3da",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/imported_genfiles.emb.h"
    },
    {
      "type": "modify",
      "old_id": "30a353c0a49ba831c81743ba3bcc34d4d2b3bb31",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/importer.emb.h",
      "new_id": "3d5410787c248cf1044bd5409c45d62a8c7bc530",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/importer.emb.h"
    },
    {
      "type": "modify",
      "old_id": "8e24a347b4a5de6419d38b8cca6563c14572cd7a",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/importer2.emb.h",
      "new_id": "3a967ef1af87bde0b388305ac85ee6b49044a072",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/importer2.emb.h"
    },
    {
      "type": "modify",
      "old_id": "0b24980cb812a5e49c9e65cfc70e4cdd63658136",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/inline_type.emb.h",
      "new_id": "0086feec9ace5941a60b22ac2641af2e1b4ed7ff",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/inline_type.emb.h"
    },
    {
      "type": "modify",
      "old_id": "9184ca6494c9d2ff8fad5091202d2b702eefcd1c",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/int_sizes.emb.h",
      "new_id": "165dbefdf7cdb62564eb375cd9fba5ffcf0e0f75",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/int_sizes.emb.h"
    },
    {
      "type": "modify",
      "old_id": "c0da21bc86128e684b651611d34dada71becd557",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/large_array.emb.h",
      "new_id": "b2ac670aa0fc7063cb9f9d0689578b17693870d5",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/large_array.emb.h"
    },
    {
      "type": "modify",
      "old_id": "7f7ee7a92f989bd5daa01906a7205bc51f6d6596",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/many_conditionals.emb.h",
      "new_id": "5309d7bdf73c8d34be50e39240ebd19a6f078ce5",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/many_conditionals.emb.h"
    },
    {
      "type": "modify",
      "old_id": "dab6ae3a2dce076d32b28705a28e34e26034126a",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/nested_structure.emb.h",
      "new_id": "ae81d31e253cc479eaa6c24132353370efe75f64",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/nested_structure.emb.h"
    },
    {
      "type": "modify",
      "old_id": "a3b2db06589260607ea0542724c98a69e9af24d6",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/next_keyword.emb.h",
      "new_id": "92208081a7e26c3ddb93d582e2acbc69d0a5b7d2",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/next_keyword.emb.h"
    },
    {
      "type": "modify",
      "old_id": "14c9ba23b3f185e7fdf4832b376bf1f10b86d7b5",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/no_enum_traits.emb.h",
      "new_id": "3cc8d5c5e9ee3c889b3ecced45d6744a3f7bf422",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/no_enum_traits.emb.h"
    },
    {
      "type": "modify",
      "old_id": "586bfdc73207301fe4facb3f4f2d627fe86c7dca",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/parameters.emb.h",
      "new_id": "4dd8ea64278851976af62add12853d51058f0808",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/parameters.emb.h"
    },
    {
      "type": "modify",
      "old_id": "4940c581d4bc98cb041e925d14d75799665346c9",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/requires.emb.h",
      "new_id": "2b6ebafa1368d52237233771c8719fef64739365",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/requires.emb.h"
    },
    {
      "type": "modify",
      "old_id": "d1025994247bc3db885270177970cb2387933d6c",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/start_size_range.emb.h",
      "new_id": "f4e1beed8e99927473486041ab2629907c631679",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/start_size_range.emb.h"
    },
    {
      "type": "modify",
      "old_id": "d7895cf2d59154306e08c79c9fcf1d48ad97f8e4",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/subtypes.emb.h",
      "new_id": "9521daee16f93776b83e3bcfc026bbf9ea665e8c",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/subtypes.emb.h"
    },
    {
      "type": "modify",
      "old_id": "d15b5ac570951134d10427d5252430b84d79714b",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/text_format.emb.h",
      "new_id": "6b2b813b257215c1f99d6fa9c0550193457d71c2",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/text_format.emb.h"
    },
    {
      "type": "modify",
      "old_id": "5ca7e89eb599c66a56b7b393f79327cbb8ce7182",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/uint_sizes.emb.h",
      "new_id": "107a2fd0f4215036a86f1d0d952bc2293f453441",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/uint_sizes.emb.h"
    },
    {
      "type": "modify",
      "old_id": "e78af9bf0ca8039b66336bee189048cae0fdf66d",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/virtual_field.emb.h",
      "new_id": "29c6b4be0c4099aaa036dd1dd735b684b7df07e5",
      "new_mode": 33188,
      "new_path": "testdata/golden_cpp/virtual_field.emb.h"
    },
    {
      "type": "modify",
      "old_id": "74581704768afd61d011b3778b9d355a1191547b",
      "old_mode": 33188,
      "old_path": "testdata/text_format.emb",
      "new_id": "9d04c53c24599e1fd9c7f50c8716eace1c86379c",
      "new_mode": 33188,
      "new_path": "testdata/text_format.emb"
    }
  ]
}
