)]}'
{
  "commit": "2db643dab7fad28f492c92be02ad259a236b34c2",
  "tree": "6fa9475cb286423e0ee19da95ee3f052d41f2f59",
  "parents": [
    "893c3f8407f2dbc4102e22b09497ba3a0381e30c"
  ],
  "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": "Tue Jun 02 13:43:34 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- JsonLargeIntegerHandling::kLargeAsString optionally serializes integers\n  wider than 32 bits as quoted strings, avoiding precision loss in JSON\n  parsers that treat all numbers as IEEE-754 doubles.\n\nAdds JsonTestEnum/JsonTestArrayStruct/JsonTestStruct fixtures to\ntestdata/text_format.emb and coverage in text_format_test.cc and\nemboss_array_view_test.cc.  Regenerates the C++ goldens.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ef99561244fa828252585461d16853d5bfeeaa76",
      "old_mode": 33188,
      "old_path": "compiler/back_end/cpp/generated_code_templates",
      "new_id": "ec71b5386f4de84f52dccf082be7aaf66fc9df70",
      "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": "f32b029b7e8b6222aaddfa0743fd52e00e21abd8",
      "new_mode": 33188,
      "new_path": "compiler/back_end/cpp/testcode/text_format_test.cc"
    },
    {
      "type": "modify",
      "old_id": "a3ef34dc14f7af1c019a7bb564735a8221a0dad9",
      "old_mode": 33188,
      "old_path": "compiler/util/parser_types.py",
      "new_id": "89cb1864d26f3794c09b34e44e5a3920c4caa1e4",
      "new_mode": 33188,
      "new_path": "compiler/util/parser_types.py"
    },
    {
      "type": "modify",
      "old_id": "9cfe03d342cc8f1ba63960b9d6cb6b8e0ca511d1",
      "old_mode": 33188,
      "old_path": "runtime/cpp/emboss_text_util.h",
      "new_id": "1d1a1b8c9921494884286c7822ae4aaf4a2276b5",
      "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": "485b03b0eb9690a6759f8df46cea82033f7d3765",
      "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": "53c476b04a38108f2e959a83c929239ce30a9177",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/condition.emb.h",
      "new_id": "d22ba82ec8f828d90ad00f0bc8e4dfb4379b4e79",
      "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": "9963594f6ed6cf0490f42c6fbbff502aec9b4507",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/many_conditionals.emb.h",
      "new_id": "e7783b3cb95d81cb9ce9932a31ce1b0c18a9316a",
      "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": "b601bd7ab88e61a04e972dfd2506e863b8a6001c",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/parameters.emb.h",
      "new_id": "9d14fa36304f7e3a96e51575eea2c440c1dd0ea0",
      "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": "bd25e8dc6258f4e1bbe8796ceaa4e7786b110748",
      "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": "26bfde71c0eabed0b65f3fe501d09d42f408631f",
      "old_mode": 33188,
      "old_path": "testdata/golden_cpp/virtual_field.emb.h",
      "new_id": "9395d799b0cdb59cd2fc4e89a0040265d975075d",
      "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": "15035e8b4350fb76c3e182278a7d70a52856e20a",
      "new_mode": 33188,
      "new_path": "testdata/text_format.emb"
    }
  ]
}
