)]}'
{
  "log": [
    {
      "commit": "7710c2026d2e0b205f806053a9694e779bafbe44",
      "tree": "fdcc8e607d864af9b042945dc8907355ca80b7f7",
      "parents": [
        "99e0aae7469b87d12f0ad23e61142c2d74c1ef70",
        "9221430fda65a553496767be3929ab205e697f28"
      ],
      "author": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Thu Dec 19 11:05:11 2024 -0800"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 19 11:05:11 2024 -0800"
      },
      "message": "Add janitors to the OWNERS file am: 9221430fda\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/emboss/+/3423688\n\nChange-Id: Id84b13e887e11302aee7107310d9d827c321ffc2\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "9221430fda65a553496767be3929ab205e697f28",
      "tree": "fdcc8e607d864af9b042945dc8907355ca80b7f7",
      "parents": [
        "99e0aae7469b87d12f0ad23e61142c2d74c1ef70"
      ],
      "author": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Wed Dec 18 20:11:23 2024 +0000"
      },
      "committer": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Wed Dec 18 20:11:23 2024 +0000"
      },
      "message": "Add janitors to the OWNERS file\n\nTest: TreeHugger\nChange-Id: I4d7a88931ec899cea12e04fb7d328d5a3e5f55f5\n"
    },
    {
      "commit": "99e0aae7469b87d12f0ad23e61142c2d74c1ef70",
      "tree": "aa1d449ce9c92756887e11dc8b1905d609af0f60",
      "parents": [
        "889ab989d849aac3be0e5b24a9ed847b901e5eb9",
        "8c45c34c7d163ecd87ae98c70f33276861276404"
      ],
      "author": {
        "name": "David Rees",
        "email": "drees@google.com",
        "time": "Fri Aug 09 14:15:11 2024 -0700"
      },
      "committer": {
        "name": "David Rees",
        "email": "drees@google.com",
        "time": "Fri Aug 09 21:25:08 2024 +0000"
      },
      "message": "Upgrade emboss to v2024.0809.170004\n\nThis project was upgraded with external_updater.\nUsage: tools/external_updater/updater.sh update external/emboss\nFor more info, check https://cs.android.com/android/platform/superproject/main/+/main:tools/external_updater/README.md\n\nBug: 345526399\nTest: TreeHugger\nChange-Id: I271ea023ad0fd2aa48f31d263420f73fbe2e3321\n"
    },
    {
      "commit": "8c45c34c7d163ecd87ae98c70f33276861276404",
      "tree": "02acc6920afac0b90d80e880a87d2861b6d46132",
      "parents": [
        "ed484d795f40800d4a698c7402886f38f9a848ca",
        "2047b5ab50b0c6833091818578c2ce2486d53fe8"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Fri Aug 09 12:59:47 2024 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 09 12:59:47 2024 -0400"
      },
      "message": "Merge pull request #166 from studgeek/me/dep-copy\n\nExplicitly define default ContiguousBuffer assign op"
    },
    {
      "commit": "ed484d795f40800d4a698c7402886f38f9a848ca",
      "tree": "86f52ca01b2e0c31392e82221954128d179ed2b8",
      "parents": [
        "1d0536de7daee5e6c8c0612e51d0f9cb51dc6336"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed Aug 07 20:35:14 2024 -0400"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "ericrahm@gmail.com",
        "time": "Wed Aug 07 15:44:05 2024 -1000"
      },
      "message": "Fix for Python 3.9\n\nPython 3.9 is still supported, but Python 3.9 does not support type\nunions with the `|` operator. This change removes these in favor of\n`Union[...]` or `Optional[...]` as appropriate.\n\nConfirmed all tests pass using Python 3.9\n"
    },
    {
      "commit": "2047b5ab50b0c6833091818578c2ce2486d53fe8",
      "tree": "b09a1871326642db94adda64e40a11376ab2f319",
      "parents": [
        "1d0536de7daee5e6c8c0612e51d0f9cb51dc6336"
      ],
      "author": {
        "name": "David Rees",
        "email": "770765+studgeek@users.noreply.github.com",
        "time": "Wed Aug 07 13:47:02 2024 -0700"
      },
      "committer": {
        "name": "David Rees",
        "email": "770765+studgeek@users.noreply.github.com",
        "time": "Wed Aug 07 14:39:15 2024 -0700"
      },
      "message": "Explicitly define default ContiguousBuffer assign op\n\nSince code defines copy constructor it should also define the\nassignment operator (rule of three). This also stops -Wdeprecated-copy\nwarnings in downstream clients.\n"
    },
    {
      "commit": "1d0536de7daee5e6c8c0612e51d0f9cb51dc6336",
      "tree": "7f7c2e1c1ed922bbffcd3e6c3510bf8fa2a70c13",
      "parents": [
        "084992d14a62c739495ad7c4edf8f6c19d1f144b",
        "8efef29aa77278d816fca83053591adfc6f0abaf"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed Aug 07 11:29:35 2024 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 07 11:29:35 2024 -0400"
      },
      "message": "Merge pull request #165 from jasongraffius/toolchain-matrix\n\nUpdate actions to run both clang and GCC"
    },
    {
      "commit": "8efef29aa77278d816fca83053591adfc6f0abaf",
      "tree": "7f7c2e1c1ed922bbffcd3e6c3510bf8fa2a70c13",
      "parents": [
        "084992d14a62c739495ad7c4edf8f6c19d1f144b"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed Jul 31 12:07:29 2024 -0400"
      },
      "committer": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed Jul 31 12:37:13 2024 -0400"
      },
      "message": "Update actions to run both clang and GCC\n\nAdditionally, tweak workflow to ensure caching remains valid across the\nmatrix.\n"
    },
    {
      "commit": "084992d14a62c739495ad7c4edf8f6c19d1f144b",
      "tree": "33f8c140c8b14424f82c1d0ded92433de9a558d0",
      "parents": [
        "57f005b228f181c9583bd91ccea3c1df95f859d2",
        "ff19fec36f0c42f440141872407f4921512deb1c"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Mon Jul 22 10:07:46 2024 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 22 10:07:46 2024 -0400"
      },
      "message": "Merge pull request #159 from jasongraffius/add-bazel-test-workflow\n\nAdd Github action to run Bazel tests for every PR"
    },
    {
      "commit": "ff19fec36f0c42f440141872407f4921512deb1c",
      "tree": "33f8c140c8b14424f82c1d0ded92433de9a558d0",
      "parents": [
        "57f005b228f181c9583bd91ccea3c1df95f859d2"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Sat Jul 20 09:49:18 2024 -0400"
      },
      "committer": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Sat Jul 20 10:34:58 2024 -0400"
      },
      "message": "Add Github action to run Bazel tests for every PR\n\nThis will ensure that all pull requests must pass all Bazel tests in the\nrepository. Merging the pull request will be blocked until the tests are\npassing, and will re-run each time the pull request is synchronized or\nupdated.\n"
    },
    {
      "commit": "57f005b228f181c9583bd91ccea3c1df95f859d2",
      "tree": "48d21d1a30db29cacfdd65d0cdf9d7d8b289bb51",
      "parents": [
        "d048c8c7dac410b2bd2cdfe6d7bae235a10c3a6d"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@google.com",
        "time": "Mon Jun 03 22:43:44 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "ericrahm@gmail.com",
        "time": "Fri Jul 19 08:01:18 2024 -1000"
      },
      "message": "Runs compilation failure tests.\n"
    },
    {
      "commit": "889ab989d849aac3be0e5b24a9ed847b901e5eb9",
      "tree": "5014887baa390049d05b59534c00c4667a71531a",
      "parents": [
        "01356ef0015e91be6757d166fae36c5271fa304a"
      ],
      "author": {
        "name": "Anna Herrera",
        "email": "annaherrera@google.com",
        "time": "Tue Jul 16 17:52:57 2024 +0000"
      },
      "committer": {
        "name": "Anna Herrera",
        "email": "annaherrera@google.com",
        "time": "Thu Jul 18 20:58:37 2024 +0000"
      },
      "message": "Create emboss codegen dependencies in Android.bp\n\nBug: 352364622\nTest: Locally created genrule using embossc_script and emboss_compiler\nlibrary to generate emboss headers\n\nChange-Id: I83c3e9ec4779de5fbc4cc0a88e7c12c8897fea42\n"
    },
    {
      "commit": "d048c8c7dac410b2bd2cdfe6d7bae235a10c3a6d",
      "tree": "62db620d42b1a6dad3af8d11ef03761586fbefb3",
      "parents": [
        "4c78078c1d42187810b48c14c8c2bfd3b8d2a516"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Jul 18 07:39:46 2024 -1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 18 10:39:46 2024 -0700"
      },
      "message": "Update set of supported alias-safe types (#158)\n\nRenames `IsChar` to `IsAliasSafe`, removes `signed char` as an alias\r\nsafe type and adds in conditional support for `std::byte` as an anlias\r\nsafe type if available.\r\n\r\nFixes: #116"
    },
    {
      "commit": "4c78078c1d42187810b48c14c8c2bfd3b8d2a516",
      "tree": "baa28038ff4caf0ac9c0113ab47f434497af6641",
      "parents": [
        "e8a03a7672f87f1c56cebf105374615dc504b70d",
        "bc2cf42c625c87fb4e54c354e0397fd94dae9689"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Wed Jul 17 18:09:06 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 17 18:09:06 2024 -0700"
      },
      "message": "Merge pull request #149 from EricRahm/use_dataclass\n\nConvert `ir_data` to a `dataclass`"
    },
    {
      "commit": "bc2cf42c625c87fb4e54c354e0397fd94dae9689",
      "tree": "8cd1374699c9023d0695e00aa6603c24272d42a0",
      "parents": [
        "482a2a45497a3cd174dfac664cbb20786e91d250"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 18:07:29 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 18:07:29 2024 -0700"
      },
      "message": "Fix typo\n"
    },
    {
      "commit": "482a2a45497a3cd174dfac664cbb20786e91d250",
      "tree": "1aff4534deca6572e404d265262402a90125138e",
      "parents": [
        "b9da0c744f80bfacbfecec4169fb6076841b0703"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 17:06:18 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 17:06:18 2024 -0700"
      },
      "message": "Invert typechecking boolean logic\n"
    },
    {
      "commit": "b9da0c744f80bfacbfecec4169fb6076841b0703",
      "tree": "b65de8ec7492ab9114b5e7bf3f002167c7f7450d",
      "parents": [
        "4df21a957881f62d74d214a2d53253e3ee5534e0"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:59:41 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:59:41 2024 -0700"
      },
      "message": "Cleanup formatting in ir_data_fields\n"
    },
    {
      "commit": "4df21a957881f62d74d214a2d53253e3ee5534e0",
      "tree": "8212a1d2826564c9b7d5c48c44e79aec5cccc714",
      "parents": [
        "a458c16dd34347517132ebb62d37d2cce03133fe"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:56:51 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:56:51 2024 -0700"
      },
      "message": "Cleanup formatting in ir_data_utils\n"
    },
    {
      "commit": "a458c16dd34347517132ebb62d37d2cce03133fe",
      "tree": "b95d4500b065cdc0a229b62ebf9290232d945f08",
      "parents": [
        "ce6bb11219946e7325b8027ec668eed67b12a99e"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:52:11 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:52:11 2024 -0700"
      },
      "message": "Use IrDataT in ir_fields.py\n"
    },
    {
      "commit": "ce6bb11219946e7325b8027ec668eed67b12a99e",
      "tree": "cb8597a2e95d744d981e2333cefda6dd8e083fa1",
      "parents": [
        "084ac3af449f9feb00fe1e8b4ded0c906ced5362"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:50:19 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:50:19 2024 -0700"
      },
      "message": "Use MessageT in ir_data_utils.py\n"
    },
    {
      "commit": "084ac3af449f9feb00fe1e8b4ded0c906ced5362",
      "tree": "f07bca9ad8205014fe9c42364f6f3fc678fa4371",
      "parents": [
        "90eb614372f6f36b998a935689794ec5c28cba8f"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:47:03 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 16:47:03 2024 -0700"
      },
      "message": "Add note about autovivification\n"
    },
    {
      "commit": "90eb614372f6f36b998a935689794ec5c28cba8f",
      "tree": "945634ef3b1b7c327fb26cce7c4ff3f48366be86",
      "parents": [
        "44682e2391ee647d27a2dfb03a79b0665a8c8d1a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 11:21:20 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jul 17 11:21:20 2024 -0700"
      },
      "message": "Add debug-only type checking\n"
    },
    {
      "commit": "e8a03a7672f87f1c56cebf105374615dc504b70d",
      "tree": "10f55a702fa3abcb7f842325be1b00d306476185",
      "parents": [
        "1ae0f2777551e32da8990e5e5bb26b7f80b76159"
      ],
      "author": {
        "name": "armandomontanez",
        "email": "montanez.armando.l@gmail.com",
        "time": "Mon Jul 15 21:07:13 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 15 21:07:13 2024 -0700"
      },
      "message": "Forward kwargs to emboss_cc_library (#155)\n\n* Forward kwargs to emboss_cc_library\r\n\r\nForwards kwargs to emboss_cc_library to fix\r\nhttps://github.com/google/emboss/issues/154.\r\n\r\n* Exercise kwargs in testdata"
    },
    {
      "commit": "1ae0f2777551e32da8990e5e5bb26b7f80b76159",
      "tree": "9c4fe9e950c91074027dfe8a53e1715d33e159d1",
      "parents": [
        "61e9a22768d268331141dec64cf1cd59572e81a8"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 15 18:01:52 2024 -1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 15 21:01:52 2024 -0700"
      },
      "message": "Remove unused \u003costream\u003e (#157)\n\n`\u003costream\u003e` isn\u0027t needed unless enum traits are being used, in that case\r\nit will be included by the files that need it. Removing this fixes a\r\nfailure for targets that don\u0027t have `\u003costream\u003e` available.\r\n\r\nFixes: 156"
    },
    {
      "commit": "44682e2391ee647d27a2dfb03a79b0665a8c8d1a",
      "tree": "ecdb8eb8acdb4aad614f0fe230e56b36a32b7807",
      "parents": [
        "ef7de74a47187d5a2e89d607a069f64d0b60939a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 13:47:43 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 13:47:43 2024 -0700"
      },
      "message": "Cleanup ir_data_utils_test.py\n"
    },
    {
      "commit": "ef7de74a47187d5a2e89d607a069f64d0b60939a",
      "tree": "25bc1ef8be975ca9dd9ecc3c81f70331acb233d9",
      "parents": [
        "e5cdb765f6bfeafdac5eee12f54e82f5e47ea87a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 13:45:31 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 13:45:31 2024 -0700"
      },
      "message": "Cleanup ir_data_utils.py\n"
    },
    {
      "commit": "e5cdb765f6bfeafdac5eee12f54e82f5e47ea87a",
      "tree": "0b33c8c426990a604aa2327ce71bf657a5d7f90f",
      "parents": [
        "9961adb5446d091fc8012e1068e1e6eb9ce4670a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 13:38:42 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 13:38:42 2024 -0700"
      },
      "message": "Consolidate `cache_data_fields`\n"
    },
    {
      "commit": "9961adb5446d091fc8012e1068e1e6eb9ce4670a",
      "tree": "0486822ce3a4595d40e83a10b58622c78a0d1798",
      "parents": [
        "4a948b69b031f41dc96e8cdb85dd61c793869db8"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 12:56:21 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 12:56:21 2024 -0700"
      },
      "message": "Cleanup ir_data_fields\n"
    },
    {
      "commit": "4a948b69b031f41dc96e8cdb85dd61c793869db8",
      "tree": "5b2121b490c5a5f769fb0b70f1748e8098ecb62f",
      "parents": [
        "28f60721d48fbd9b7ea67dcd464035d5c29644de"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 12:11:46 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 12:11:46 2024 -0700"
      },
      "message": "Cleanup comments in ir_data\n"
    },
    {
      "commit": "28f60721d48fbd9b7ea67dcd464035d5c29644de",
      "tree": "3bea377e115906869ac0058097618a441ff0ebb0",
      "parents": [
        "9b98d3fa158697cfda94d6299246c105ea96c35a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 11:53:44 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 11:53:44 2024 -0700"
      },
      "message": "Update if sequence in _check_all_source_locations\n\nWe can simplify the if flow in `_check_all_source_locations` by checking\nif the field is a dataclass first.\n"
    },
    {
      "commit": "9b98d3fa158697cfda94d6299246c105ea96c35a",
      "tree": "aaf14d4b92de20492b5fa8e58a86855ae5255e87",
      "parents": [
        "c4d0956ebdc01f13ab0ddd85221113f2bc5fdad4"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 11:43:14 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Jul 08 11:43:14 2024 -0700"
      },
      "message": "Update `test_error_on_missing_inner_array_size`\n\nThis adds a note on an existing latent issue in the source location\nprovided in errors related to missing inner array sizes. Issue #153 has\nbeen filed to track the bug.\n"
    },
    {
      "commit": "61e9a22768d268331141dec64cf1cd59572e81a8",
      "tree": "c05c8d99b5c4154d2a90722ee0c91a1a2ee47fc9",
      "parents": [
        "457234d0289692b5fe6e4fd7ff170f78b35adbdd"
      ],
      "author": {
        "name": "Ben Lawson",
        "email": "BenjaminLawson@users.noreply.github.com",
        "time": "Tue Jul 02 14:54:03 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 02 14:54:03 2024 -0700"
      },
      "message": "Fix missing template parameters (#151)\n\nFix missing template parameters in MaybeDo. The latest version of clang\r\nthrows an error without this fix.\r\n\r\nFixes #150"
    },
    {
      "commit": "c4d0956ebdc01f13ab0ddd85221113f2bc5fdad4",
      "tree": "37195ff361f628e4aed6b56b4fb76cb0813ae195",
      "parents": [
        "457234d0289692b5fe6e4fd7ff170f78b35adbdd"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 15 13:06:40 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Jun 12 08:36:27 2024 -0700"
      },
      "message": "Convert `ir_data` to a `dataclass`\n\nThis converts `ir_data` over to a `dataclasses.dataclass` and adds\nvarious `FieldSpec` helpers to support that conversion. The `builder`,\n`reader`, `IrDataSerializer`, `copy`, and `update` stubs are fully\nimplemented to support dataclasses as well.\n\nThis change results in a 38% speedup against a 75KB test file.\n\nFixes #118.\n"
    },
    {
      "commit": "457234d0289692b5fe6e4fd7ff170f78b35adbdd",
      "tree": "9efa2c7a47433b865af875d9bb5e19ce66bfa45f",
      "parents": [
        "dd186bbb959b758de17cb8971d34ed052641b5a8",
        "899f0f322220c45408845618d03048a184ce761f"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Fri May 31 22:19:59 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 31 22:19:59 2024 -0700"
      },
      "message": "Merge pull request #145 from EricRahm/add_copy_and_update\n\nAdd `ir_data_utils.copy` and `update`"
    },
    {
      "commit": "899f0f322220c45408845618d03048a184ce761f",
      "tree": "9efa2c7a47433b865af875d9bb5e19ce66bfa45f",
      "parents": [
        "dd186bbb959b758de17cb8971d34ed052641b5a8"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 15 13:03:37 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu May 30 22:07:19 2024 -0700"
      },
      "message": "Add `ir_data_utils.copy` and `update`\n\nThis adds `ir_data_utils` helpers to handle copying and updating\n`ir_data` instances. Some instances of `CopyFrom` that aren\u0027t associated\nwith a `builder` are updated to use `copy` or `update`.\n\nPart of #118.\n"
    },
    {
      "commit": "dd186bbb959b758de17cb8971d34ed052641b5a8",
      "tree": "8128a1ab6b33b5f25f4d67ecee8d424b48c6e707",
      "parents": [
        "d977a49f86ef1f339c5eab23d9b968903ff154c4",
        "3daec5c3be2791f596167d66987b5057e4bbeaaf"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Fri May 24 15:36:23 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 24 15:36:23 2024 -0700"
      },
      "message": "Merge pull request #144 from EricRahm/add_reader\n\nAdd `ir_data_utils.reader`"
    },
    {
      "commit": "3daec5c3be2791f596167d66987b5057e4bbeaaf",
      "tree": "8128a1ab6b33b5f25f4d67ecee8d424b48c6e707",
      "parents": [
        "d977a49f86ef1f339c5eab23d9b968903ff154c4"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 15 12:30:02 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri May 24 14:53:10 2024 -0700"
      },
      "message": "Add `ir_data_utils.reader`\n\nThis adds an `ir_data_utils.reader` wrapper that will be used to\naccess potentially unset chains of fields in an `ir_data` instance. For\nnow this is simply an annotation that marks sites that are accessing\nmissing fields.\n\nPart of #118.\n"
    },
    {
      "commit": "d977a49f86ef1f339c5eab23d9b968903ff154c4",
      "tree": "ba9dfc7a5543e15be69f4f7feaa4fb48660467a2",
      "parents": [
        "3f5bb5a4c2b76c0d015d3958912f5798d059c30e",
        "bfd4a58da52ec2d9163eae8354604be7d760b14d"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Mon May 20 09:18:37 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 20 09:18:37 2024 -0700"
      },
      "message": "Merge pull request #143 from EricRahm/add_builder\n\nAdd `ir_data_utils.builder`"
    },
    {
      "commit": "bfd4a58da52ec2d9163eae8354604be7d760b14d",
      "tree": "ba9dfc7a5543e15be69f4f7feaa4fb48660467a2",
      "parents": [
        "3f5bb5a4c2b76c0d015d3958912f5798d059c30e"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri Apr 12 12:04:32 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Tue May 14 12:26:39 2024 -0700"
      },
      "message": "Add `ir_data_utils.builder`\n\nThis adds an `ir_data_utils.builder` wrapper that will be used to\ndynamically build up `ir_data` instances rather than the ad-hoc behavior\nof `ir_data` field access. For now this is a no-op and simply annotates\nsites that are mutating `ir_data` instances.\n\nPart of #118.\n"
    },
    {
      "commit": "3f5bb5a4c2b76c0d015d3958912f5798d059c30e",
      "tree": "828d3ee320269cf1928174408efb89c69c325a1f",
      "parents": [
        "2598103a46f39b07ed610e00d655bd92a8290937",
        "7994653f55698c3fa8cb806349d9ab41e25f1894"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Tue May 14 11:34:05 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 14 11:34:05 2024 -0700"
      },
      "message": "Merge pull request #142 from EricRahm/add_ir_data_serializer\n\nSplit out an `IrDataSerializer` class"
    },
    {
      "commit": "01356ef0015e91be6757d166fae36c5271fa304a",
      "tree": "a647b863acd0ae3afbc539a52123ba06e12e17bf",
      "parents": [
        "b736eedda4d4a2b93070f0e3efb5b6a86a822b9a",
        "2598103a46f39b07ed610e00d655bd92a8290937"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri May 03 20:16:58 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Sat May 04 03:44:13 2024 +0000"
      },
      "message": "Upgrade emboss to v2024.0503.200352\n\nThis project was upgraded with external_updater.\nUsage: tools/external_updater/updater.sh update external/emboss\nFor more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md\n\nBug: 338684899\nTest: TreeHugger\nChange-Id: Id3da4c022e95ef8b93e5b3a3e99ba8188f4305cd\n"
    },
    {
      "commit": "7994653f55698c3fa8cb806349d9ab41e25f1894",
      "tree": "828d3ee320269cf1928174408efb89c69c325a1f",
      "parents": [
        "2598103a46f39b07ed610e00d655bd92a8290937"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri Apr 12 11:44:44 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri May 03 16:03:16 2024 -0700"
      },
      "message": "Split out an `IrDataSerializer` class\n\nIn preparation for reworking `ir_data` move json serialazition to it\u0027s\nown class. For now this is simply a wrapper. All `to_json` call sites\nare updated.\n\nPart of #118.\n"
    },
    {
      "commit": "2598103a46f39b07ed610e00d655bd92a8290937",
      "tree": "3b2ac5faff53bc3df5c676c50f49e27dd12f0396",
      "parents": [
        "f837f97aaee3618b72d2434e1c8c13e36d80a99a",
        "12c5e847773f18eacd81c92933e0f88e44daea16"
      ],
      "author": {
        "name": "Aaron Webster",
        "email": "AaronWebster@users.noreply.github.com",
        "time": "Fri May 03 13:03:36 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 03 13:03:36 2024 -0700"
      },
      "message": "Merge pull request #141 from EricRahm/rename_ir_pb2\n\nRename ir_pb2 to ir_data"
    },
    {
      "commit": "12c5e847773f18eacd81c92933e0f88e44daea16",
      "tree": "3b2ac5faff53bc3df5c676c50f49e27dd12f0396",
      "parents": [
        "f837f97aaee3618b72d2434e1c8c13e36d80a99a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri Mar 22 09:37:24 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri May 03 12:09:12 2024 -0700"
      },
      "message": "Rename ir_pb2 to ir_data\n\nThe IR classes are no longer based on a protobuf implementation. This\nmakes that clear by migrating to a more neutral `ir_data` name. This\nwill also help avoid tripping up static analysis that looks for\nprotobuf-like things.\n\nPart of #118.\n"
    },
    {
      "commit": "f837f97aaee3618b72d2434e1c8c13e36d80a99a",
      "tree": "7f7ca83cf2e5c579925c4d579925c71ed33690d4",
      "parents": [
        "fb5e6da6d11203c9dbcd96eb027470aec03074f6",
        "534064f5a6db6307ea61dc69fbf4629c1fdba3ed"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Wed May 01 14:54:08 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 01 14:54:08 2024 -0700"
      },
      "message": "Merge pull request #134 from EricRahm/enum_trait\n\nSplit out enum trait generation"
    },
    {
      "commit": "534064f5a6db6307ea61dc69fbf4629c1fdba3ed",
      "tree": "7f7ca83cf2e5c579925c4d579925c71ed33690d4",
      "parents": [
        "cbea20f1b305faded9c2124b47626d152f73b733"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 17 17:27:40 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed May 01 10:51:42 2024 -0700"
      },
      "message": "Add bazel support for disabling enum traits\n\nThis adds bazel support for setting the `--no-cc-enum-traits` flag and\nadds a test to exercise it.\n"
    },
    {
      "commit": "cbea20f1b305faded9c2124b47626d152f73b733",
      "tree": "e63a3533be649f73876e1cb4876b9971ed70bcc2",
      "parents": [
        "c6376497d9810d91223d4f0abe814476ea16bcad"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 08 15:07:04 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed May 01 10:51:42 2024 -0700"
      },
      "message": "Add --no-cc-enum-traits param\n\nAdd a `--no-cc-enum-traits` param that can be used to disable the\ngeneration of C++ `EnumTrait` structures.\n"
    },
    {
      "commit": "c6376497d9810d91223d4f0abe814476ea16bcad",
      "tree": "b95e599151aec427b66b470a14e515311da9e3f2",
      "parents": [
        "54130e2ac33f4b6aeeca4dc74776840fb35309fd"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 08 10:28:54 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed May 01 10:51:42 2024 -0700"
      },
      "message": "Split out enum trait generation\n\nThis change makes the generation of EnumTraits configurable. With this\nchange we can see reductions in code size by up over 1MB. Example file\nsize changes:\n\n|File              | src (KB) | .h (KB) before | .h (KB) after |\n|------------------|----------|----------------|---------------|\n| hci_events.emb   |       76 |           5356 |          3884 |\n| hci_commands.emb |      108 |           5612 |          4268 |\n| hci_vendor.emb   |       32 |           1748 |          1304 |\n| hci_common.emb   |       32 |            644 |           368 |\n| hci_data.emb     |        4 |            152 |           104 |\n| l2cap_frames.emb |        4 |             48 |            40 |\n| hci_h4.emb       |        4 |              8 |             4 |\n\nThis is also helpful for embedded users who couldn\u0027t use emboss due to\ndependencies on string libraries and functions like `sscanf`.\n"
    },
    {
      "commit": "54130e2ac33f4b6aeeca4dc74776840fb35309fd",
      "tree": "80373c6693e89937063628c7080dd669aecdff61",
      "parents": [
        "fb5e6da6d11203c9dbcd96eb027470aec03074f6"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 17 17:31:58 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 29 12:37:12 2024 -0700"
      },
      "message": "Add forward declarations for text helpers\n\nThis moves text related helpers out to the `emboss::support` namespace\nin `emboss_text_util.h`. We add forward declarations for the helpers and\nconvert a few options instances to take refs instead. This is in\npreparation for adding support for disabling the generation of\ntext-related helpers such as `EnumTraits`.\n"
    },
    {
      "commit": "fb5e6da6d11203c9dbcd96eb027470aec03074f6",
      "tree": "41df078944b6f2354973efc6f0e9fad2332d07ba",
      "parents": [
        "f94cbfb1e79e7464cccf7a6e41a695bc4838167c",
        "1744629f5a70d60f5bcebbb253035e8d3f008818"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Fri Apr 26 13:03:20 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 26 13:03:20 2024 -0700"
      },
      "message": "Merge pull request #133 from EricRahm/strip_comments\n\nStrip comments from templates"
    },
    {
      "commit": "1744629f5a70d60f5bcebbb253035e8d3f008818",
      "tree": "41df078944b6f2354973efc6f0e9fad2332d07ba",
      "parents": [
        "f94cbfb1e79e7464cccf7a6e41a695bc4838167c"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 08 11:18:56 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri Apr 26 10:47:15 2024 -0700"
      },
      "message": "Strip comments from templates\n\nThis removes comments related to the emboss backend code generator from\nthe generated emboss headers. For an example project we see several MB\nof reduction in size of the generated headers:\n\n|File              | src (KB) | .h (KB) before | .h (KB) after |\n|------------------|----------|----------------|---------------|\n| hci_events.emb   |       76 |           7488 |          5356 |\n| hci_commands.emb |      108 |           7376 |          5612 |\n| hci_vendor.emb   |       32 |           2328 |          1748 |\n| hci_common.emb   |       32 |            824 |           644 |\n| hci_data.emb     |        4 |            204 |           152 |\n| l2cap_frames.emb |        4 |             60 |            48 |\n| hci_h4.emb       |        4 |              8 |             8 |\n\nThe comments are stripped while generating the code fragment templates,\nthis allows us to keep comments useful to emboss development in-place\nwhile reducing the impact on generated code size.\n"
    },
    {
      "commit": "b736eedda4d4a2b93070f0e3efb5b6a86a822b9a",
      "tree": "a5b186db14a3ca3dfb00ca86dda14275fa02296f",
      "parents": [
        "8a5c47e0789169907acb1b19e59f5696bf1fb586",
        "f94cbfb1e79e7464cccf7a6e41a695bc4838167c"
      ],
      "author": {
        "name": "David Rees",
        "email": "drees@google.com",
        "time": "Fri Apr 19 10:21:43 2024 -0700"
      },
      "committer": {
        "name": "David Rees",
        "email": "drees@google.com",
        "time": "Fri Apr 19 10:23:37 2024 -0700"
      },
      "message": "Upgrade emboss to v2024.0419.155605\n\nFYI, To create this I manually edited the default.xml manifest to add\nexternal/emboss then ran external_updater.\n\nThis project was upgraded with external_updater.\nUsage: tools/external_updater/updater.sh update external/emboss\nFor more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md\n\nBug: 335724776\nTest: TreeHugger\nChange-Id: I67135e77be153530fbd32c03c8f3b08228045dc2\n"
    },
    {
      "commit": "f94cbfb1e79e7464cccf7a6e41a695bc4838167c",
      "tree": "50479e0cfae773f683801fd778ab229e0a874a74",
      "parents": [
        "5f7b4fc3d517dea3c2af19edff525aadee06cc8f",
        "10e3e5ba0c3d7f54718680660b09b07c24872bc9"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Fri Apr 19 08:55:52 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 19 08:55:52 2024 -0700"
      },
      "message": "Merge pull request #135 from EricRahm/add_module_dot_bazel\n\nAdd a default MODULE.bazel"
    },
    {
      "commit": "10e3e5ba0c3d7f54718680660b09b07c24872bc9",
      "tree": "50479e0cfae773f683801fd778ab229e0a874a74",
      "parents": [
        "5d99737f08d033386fd26123949d36684a47c8bd"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Apr 18 11:32:38 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Apr 18 11:32:38 2024 -0700"
      },
      "message": "Update .gitignore with more common entries\n\nThis adds an ignore for the `.vscode` directory used by VS Code projects\nand the `.venv` directory used for python virtual environments.\n"
    },
    {
      "commit": "5d99737f08d033386fd26123949d36684a47c8bd",
      "tree": "919f80a3840d8264b519267aa82773375e9d5f6a",
      "parents": [
        "5f7b4fc3d517dea3c2af19edff525aadee06cc8f"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Apr 18 11:30:02 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Apr 18 11:30:02 2024 -0700"
      },
      "message": "Add a default MODULE.bazel file\n\nSome versions of `bazel` have started generating a `MODULE.bazel` file\nin preparation for the migration to `bzlmod`. This adds the default file\nfor now and updates `.gitignore` to ignore the associated lock file.\n"
    },
    {
      "commit": "5f7b4fc3d517dea3c2af19edff525aadee06cc8f",
      "tree": "04f21175fa6250d27a9964f07dfd8262ff9de381",
      "parents": [
        "0a362eabb90eb57b5036955f0ffbdc1d9594bf36",
        "b77e83941a936e7439d90899c74714894aae5b7d"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Thu Apr 18 09:39:01 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 18 09:39:01 2024 -0700"
      },
      "message": "Merge pull request #130 from EricRahm/use_string_template\n\nSwitch `code_templates` to `string.Template`"
    },
    {
      "commit": "b77e83941a936e7439d90899c74714894aae5b7d",
      "tree": "04f21175fa6250d27a9964f07dfd8262ff9de381",
      "parents": [
        "0a362eabb90eb57b5036955f0ffbdc1d9594bf36"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 15:10:32 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 17 18:30:38 2024 -0700"
      },
      "message": "Switch code_templates to string.Template\n\nPython\u0027s standard `string.Template` is significantly more performant\nthan the custom `code_template` formatter. At the cost of removing\ncustom formatting support (unused) and changing our format string to\n`${foo}` instead of `$_foo_$` we can achieve an 11% speedup in the back\nend code generation for C++.\n"
    },
    {
      "commit": "0a362eabb90eb57b5036955f0ffbdc1d9594bf36",
      "tree": "0806ba94b2dd442067f183a12496be7ea39e3d8f",
      "parents": [
        "e0f9b368bba0309f0f8ebf80487e5125f56f1f3c",
        "6e57e981a322a8c1e331d42df233de5ee26b849f"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Wed Apr 17 12:08:37 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 17 12:08:37 2024 -0700"
      },
      "message": "Merge pull request #131 from EricRahm/use_enums_in_ir\n\nSplit out IR enums"
    },
    {
      "commit": "6e57e981a322a8c1e331d42df233de5ee26b849f",
      "tree": "96880dd37415e05dbe01054aa2221e1cdef44325",
      "parents": [
        "11debfa43141ea1d28a500a6810891ad1c478b08"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Apr 04 15:25:08 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Apr 15 15:16:03 2024 -0700"
      },
      "message": "Split out IR enums\n\nAdds `FunctionMapping` and `AddressableUnit` enums and pulls out the\nexisting definitions from the IR classes.\n"
    },
    {
      "commit": "e0f9b368bba0309f0f8ebf80487e5125f56f1f3c",
      "tree": "3cfd169a12c86297a6bf7485084684178699dc46",
      "parents": [
        "c06bd037a8ea4dd67f691ed8b30fe5fd1b0c68ec",
        "4a044db003e38af3f2b8bc84298188a47c7f6ae3"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Thu Apr 11 09:28:39 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 11 09:28:39 2024 -0700"
      },
      "message": "Merge pull request #129 from tpudlik/rules_python\n\nLoad py_library, py_binary from rules_python"
    },
    {
      "commit": "c06bd037a8ea4dd67f691ed8b30fe5fd1b0c68ec",
      "tree": "b59f80e81a746062dc17e7e964b5d29f0e39896b",
      "parents": [
        "96ad72e6193c20b8ec6c64bc0a970ce5350d3cca",
        "35bf3a0b2e60266cae8afd6787708ed149ae4a08"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Thu Apr 11 09:28:05 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 11 09:28:05 2024 -0700"
      },
      "message": "Merge pull request #123 from EricRahm/remove_subproc\n\nCall parsing and generation functions directly in `embossc`"
    },
    {
      "commit": "4a044db003e38af3f2b8bc84298188a47c7f6ae3",
      "tree": "489a80a35d084e6dd06dc97ec247fc92cac07494",
      "parents": [
        "96ad72e6193c20b8ec6c64bc0a970ce5350d3cca"
      ],
      "author": {
        "name": "Ted Pudlik",
        "email": "tpudlik@google.com",
        "time": "Wed Apr 10 15:56:42 2024 -0700"
      },
      "committer": {
        "name": "Ted Pudlik",
        "email": "tpudlik@google.com",
        "time": "Wed Apr 10 16:32:19 2024 -0700"
      },
      "message": "Load py_library, py_binary from rules_python\n\nThis adds an explicit dependency on rules_python and loads py_library\nand py_binary rules from there, instead of relying on built-in versions\nin Bazel.\n\nThis prepares us for the rollout of\nhttps://github.com/bazelbuild/bazel/issues/15897 (which is happening\ninternally already, and across the Bazel ecosystem soon).\n\nExcept for the change to the WORKSPACE file, this change was\nauto-generated by running,\n\n    buildozer \u0027new_load @rules_python//python:py_library.bzl py_library\u0027 //...:__pkg__\n    buildozer \u0027new_load @rules_python//python:py_binary.bzl py_binary\u0027 //...:__pkg__\n    buildozer \u0027new_load @rules_python//python:py_test.bzl py_test\u0027 //...:__pkg__\n    buildozer \u0027fix unusedLoads\u0027 //...:__pkg__\n\nUpstreams cl/551628592.\n"
    },
    {
      "commit": "96ad72e6193c20b8ec6c64bc0a970ce5350d3cca",
      "tree": "3d0c5fad8203c5ad7e8a9cccaaa1118373889031",
      "parents": [
        "dc5a0f166ae069d880f284a908db4974c438d9a1",
        "2e0b8a98954b7904e2e3a3815aba32e6f4d7e772"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Fri Apr 05 17:25:45 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 05 17:25:45 2024 -0700"
      },
      "message": "Merge pull request #127 from tpudlik/ischar\n\nStop using std::basic_string\u003cunsigned char\u003e"
    },
    {
      "commit": "2e0b8a98954b7904e2e3a3815aba32e6f4d7e772",
      "tree": "3d0c5fad8203c5ad7e8a9cccaaa1118373889031",
      "parents": [
        "dc5a0f166ae069d880f284a908db4974c438d9a1"
      ],
      "author": {
        "name": "Ted Pudlik",
        "email": "tpudlik@google.com",
        "time": "Fri Apr 05 16:39:55 2024 -0700"
      },
      "committer": {
        "name": "Ted Pudlik",
        "email": "tpudlik@google.com",
        "time": "Fri Apr 05 16:39:55 2024 -0700"
      },
      "message": "Stop using std::basic_string\u003cunsigned char\u003e\n\nstd::basic_string\u003cunsigned char\u003e relies on a non-standard generic\nchar_traits\u003c\u003e implementation, recently removed from libc++.\n\nUpstreams cl/605337651.\n\nRelevant to #116.\n"
    },
    {
      "commit": "dc5a0f166ae069d880f284a908db4974c438d9a1",
      "tree": "37d72ef8fde0c65d95c5965c57e0329ea2900a58",
      "parents": [
        "a5126d648a1d32c4049ef3f5e19122a74cc78c5e",
        "1ea8916c4754bbe0459e8aff73aac563ffc30aa3"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Wed Apr 03 16:20:47 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 03 16:20:47 2024 -0700"
      },
      "message": "Merge pull request #121 from tpudlik/allocator\n\nRemove references to deprecated allocator members"
    },
    {
      "commit": "35bf3a0b2e60266cae8afd6787708ed149ae4a08",
      "tree": "bba87a3f36fa04ecec76bb282a19ea0ee4372494",
      "parents": [
        "1aa2d6db6fe8df2e1b8d00e532cc7ddfa400b5e3"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 10:49:18 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 11:14:47 2024 -0700"
      },
      "message": "Use front end and back end libraries directly\n\nRather than spwaning 2 subprocesses and serializing IR data between them\nwe can just use the front end and back end libraries directly. This is a\ncode simplification as well as a performance improvement showing up a 3%\nreduction in overhead for larger emb files.\n\nFixes #122\n"
    },
    {
      "commit": "1aa2d6db6fe8df2e1b8d00e532cc7ddfa400b5e3",
      "tree": "a9d6ed03cdd17d581e97cd2a6687dca028d5abbb",
      "parents": [
        "d1c9e5b968ed838d1568be9787e8c2000446912b"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 10:48:03 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 10:53:44 2024 -0700"
      },
      "message": "Expose a function to build headers and log errors\n\nRefactors header generation and error logging into a public function\nthat can be used by library consumers.\n"
    },
    {
      "commit": "d1c9e5b968ed838d1568be9787e8c2000446912b",
      "tree": "fecf790dd9097a57c0d1c12cb479f8caf3b468fd",
      "parents": [
        "11debfa43141ea1d28a500a6810891ad1c478b08"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 10:46:24 2024 -0700"
      },
      "committer": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Wed Apr 03 10:53:18 2024 -0700"
      },
      "message": "Expose a function to parse an emb and log errors\n\nRefactors the parsing and error logging steps into a public function\nthat can be called by library consumers.\n"
    },
    {
      "commit": "1ea8916c4754bbe0459e8aff73aac563ffc30aa3",
      "tree": "37d72ef8fde0c65d95c5965c57e0329ea2900a58",
      "parents": [
        "a5126d648a1d32c4049ef3f5e19122a74cc78c5e"
      ],
      "author": {
        "name": "Ted Pudlik",
        "email": "tpudlik@google.com",
        "time": "Tue Apr 02 16:45:41 2024 -0700"
      },
      "committer": {
        "name": "Ted Pudlik",
        "email": "tpudlik@google.com",
        "time": "Tue Apr 02 16:45:41 2024 -0700"
      },
      "message": "Remove references to deprecated allocator members\n\nThese allocator members were deprecated in C++17 and deleted in C++20.\n\nThis upstreams cl/601574967.\n"
    },
    {
      "commit": "a5126d648a1d32c4049ef3f5e19122a74cc78c5e",
      "tree": "284c79e21142bff0b0ef9454c8bcf0e28e62de24",
      "parents": [
        "11debfa43141ea1d28a500a6810891ad1c478b08"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Fri Mar 29 11:54:01 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 29 11:54:01 2024 -0700"
      },
      "message": "Improve perf of `_call_with_optional_args` (#120)\n\n* Convert action lambdas to static functions\r\n\r\nCleanup in preparation for further performance improvements.\r\n\r\nThis changes lambda actions to static functions. Additionally duplicate\r\nfield actions of the form follwing form were removed:\r\n  `ir_pb2.Field: lambda f: {\"field\": f}`.\r\nThese actions were already covered by the default actions and ended up\r\nbeing run twice.\r\n\r\n* Improve perf of _call_with_optional_args\r\n\r\nThis adds memoization of the results of `getfullargspec` calls. Running\r\nagainst real-life examples it shows a 10% reduction of runtime for the\r\nEmboss front-end."
    },
    {
      "commit": "11debfa43141ea1d28a500a6810891ad1c478b08",
      "tree": "2afcaf76aad0ce1518264e6d3091175eeb2b1729",
      "parents": [
        "35e21b10019ded9ae14041af9b8e49659d9b327a"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Thu Mar 28 10:41:42 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 28 10:41:42 2024 -0700"
      },
      "message": "Update Python version requirement (#117)\n\nUpdates the minimum supported Python version to 3.8 and notes the policy\r\nof tracking the support timeline of the Python project."
    },
    {
      "commit": "8a5c47e0789169907acb1b19e59f5696bf1fb586",
      "tree": "d10f2bdad0392b747554c35df881551c25a43623",
      "parents": [
        "d659eb34b087e5e69f6c1c5ae7701f4517361dfc",
        "1325c01f43c5b3fa058b2da1c18a7f571bef1f3f"
      ],
      "author": {
        "name": "Roman Yepishev",
        "email": "ryepishev@google.com",
        "time": "Tue Mar 26 20:50:40 2024 +0000"
      },
      "committer": {
        "name": "Roman Yepishev",
        "email": "ryepishev@google.com",
        "time": "Tue Mar 26 20:50:40 2024 +0000"
      },
      "message": "Merge remote-tracking branch \u0027origin/third-party-review\u0027\n"
    },
    {
      "commit": "1325c01f43c5b3fa058b2da1c18a7f571bef1f3f",
      "tree": "d10f2bdad0392b747554c35df881551c25a43623",
      "parents": [
        "35e21b10019ded9ae14041af9b8e49659d9b327a"
      ],
      "author": {
        "name": "David Rees",
        "email": "drees@google.com",
        "time": "Wed Mar 13 15:43:51 2024 -0700"
      },
      "committer": {
        "name": "David Rees",
        "email": "drees@google.com",
        "time": "Thu Mar 21 10:57:28 2024 -0700"
      },
      "message": "Initial import of emboss.\n\nThird-Party Import of: https://github.com/google/emboss\nRequest Document: go/android3p\nFor CL Reviewers: go/android3p#cl-review\nFor Build Team: go/ab-third-party-imports\nBug: http://b/328273473\nBug: http://b/327470550\nTest: Repository is present.\n\nChange-Id: I637071ea1d0c99f01bb025455c1077cd1ecf4fcd\n"
    },
    {
      "commit": "d659eb34b087e5e69f6c1c5ae7701f4517361dfc",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Inna Palant",
        "email": "ipalant@google.com",
        "time": "Wed Mar 13 01:08:37 2024 +0000"
      },
      "committer": {
        "name": "Inna Palant",
        "email": "ipalant@google.com",
        "time": "Wed Mar 13 01:08:37 2024 +0000"
      },
      "message": "Initial empty repository\n"
    },
    {
      "commit": "35e21b10019ded9ae14041af9b8e49659d9b327a",
      "tree": "d6668774f325c1a112b49c1c347c93bc7a8484d6",
      "parents": [
        "35bae732b2d3c7e6aa1bf7388d66880e96377627"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "erahm@google.com",
        "time": "Mon Mar 04 10:42:57 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 04 10:42:57 2024 -0800"
      },
      "message": "Fix `import_dirs` support (#114)\n\n`import_dirs` arguments come through as part of the `ctx.files` list and\r\nneed to have their `path` extracted when building the `embossc`\r\ncommand-line. This CL also adds a `testdata` entry that checks that\r\n`emboss_cc_library` works when specifying `import_dirs`.\r\n\r\nTest: bazel build \u0027//testdata:import_dir_importer_emboss\u0027"
    },
    {
      "commit": "35bae732b2d3c7e6aa1bf7388d66880e96377627",
      "tree": "0d34fc00667ce61df19879ce30355853b4c43ddc",
      "parents": [
        "621896da0081d432739f3b4d472e4204915cc2a2"
      ],
      "author": {
        "name": "Eric Rahm",
        "email": "ericrahm@gmail.com",
        "time": "Thu Feb 29 16:12:45 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 29 16:12:45 2024 -0800"
      },
      "message": "Add support for a import_dirs param (#113)\n\nThis adds support for specifying custom `import_dirs` in an\r\n`emboss_cc_library` bazel declaration. Example usage:\r\n\r\nemboss_cc_library(\r\n    name \u003d \"foo\",\r\n    srcs \u003d [\"public/foo/foo.emb\"],\r\n    import_dirs \u003d [\"public\"],\r\n)"
    },
    {
      "commit": "621896da0081d432739f3b4d472e4204915cc2a2",
      "tree": "fd52ad23c085f1dff7e221758a831ba2dce6551d",
      "parents": [
        "69bb1372053fc3cb8a16180497970465ae2ed66d"
      ],
      "author": {
        "name": "David Rees",
        "email": "770765+studgeek@users.noreply.github.com",
        "time": "Tue Feb 27 16:18:24 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 27 16:18:24 2024 -0800"
      },
      "message": "Add --output-file embossc flag to allow setting exact generated file name (#112)\n\n"
    },
    {
      "commit": "69bb1372053fc3cb8a16180497970465ae2ed66d",
      "tree": "744e307c780f37fbc82ff10c23e8f664f22ebc96",
      "parents": [
        "2014655c1adda74d2372821b83344a5d27058209",
        "b9b93c396c3c4525bcf62c2f4151f3af4e938566"
      ],
      "author": {
        "name": "Aaron Webster",
        "email": "AaronWebster@users.noreply.github.com",
        "time": "Tue Feb 20 13:55:39 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 20 13:55:39 2024 -0800"
      },
      "message": "Merge pull request #111 from reventlov/importlib_instead_of_pkgutil\n\nSwitch from pkgutil to importlib.resources."
    },
    {
      "commit": "b9b93c396c3c4525bcf62c2f4151f3af4e938566",
      "tree": "744e307c780f37fbc82ff10c23e8f664f22ebc96",
      "parents": [
        "2014655c1adda74d2372821b83344a5d27058209"
      ],
      "author": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Tue Feb 20 21:47:41 2024 +0000"
      },
      "committer": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Tue Feb 20 21:47:41 2024 +0000"
      },
      "message": "Switch from pkgutil to importlib.resources.\n\nFor loading resources, use `importlib.resources.files()` instead of\n`pkgutil.get_data()`.  This works across project boundaries with Bazel\n7, as well as through the `embossc` driver.\n\nAlso packaged resource loading into a utility function, so that\nfurther changes can be more easily accomodated.\n"
    },
    {
      "commit": "2014655c1adda74d2372821b83344a5d27058209",
      "tree": "2aaed527874b564fa9968c1699d26ef5bc6de6f6",
      "parents": [
        "9f8115b0db900296c5e9fe7d9b0ee5dbc473c01b"
      ],
      "author": {
        "name": "Ben Lawson",
        "email": "BenjaminLawson@users.noreply.github.com",
        "time": "Wed Feb 14 09:25:05 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 14 09:25:05 2024 -0800"
      },
      "message": "Move cpp_utils to compilation_contexts (#109)\n\nMove cpp_utils from the cc_common.compile private_hdrs parameter\r\nto the compilation_contexts parameter in order to fix the\r\ncpp_utils header include paths when Emboss is an external repository.\r\n\r\nFixes #108"
    },
    {
      "commit": "9f8115b0db900296c5e9fe7d9b0ee5dbc473c01b",
      "tree": "9c5baee66f86ca4fa06c591b08943e35c9158541",
      "parents": [
        "de05f7428fe8357d5609e7a503fa868432cd5bc3"
      ],
      "author": {
        "name": "Ben Lawson",
        "email": "BenjaminLawson@users.noreply.github.com",
        "time": "Thu Feb 08 10:41:08 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 08 10:41:08 2024 -0800"
      },
      "message": "Fix using emboss_cc_library from external Bazel repo (#106)\n\nFixes google#105"
    },
    {
      "commit": "de05f7428fe8357d5609e7a503fa868432cd5bc3",
      "tree": "3294fb606aac6f990c8b940b6da5094973748ee9",
      "parents": [
        "5d2870e5297ab1b6936f2a63b2318f8ddc9e82b7"
      ],
      "author": {
        "name": "Ben Lawson",
        "email": "BenjaminLawson@users.noreply.github.com",
        "time": "Wed Feb 07 09:18:27 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 07 09:18:27 2024 -0800"
      },
      "message": "Fix emboss_cpp_library Bazel rule (#104)\n\nAdd `toolchains` parameter to _cc_emboss_aspect rule to fix\r\nfind_cpp_toolchain error.\r\n\r\nFixes #103"
    },
    {
      "commit": "5d2870e5297ab1b6936f2a63b2318f8ddc9e82b7",
      "tree": "880e9658256c87816bd021d915c927376baf4f90",
      "parents": [
        "ac5e59b3be7ccac05921fff6ec274ff56b095ae6"
      ],
      "author": {
        "name": "Faraaz Sareshwala",
        "email": "faraazs@gmail.com",
        "time": "Fri Jan 12 14:02:32 2024 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 12 14:02:32 2024 -0800"
      },
      "message": "Reorder sections in bits to match the ordering in struct (#102)\n\n* doc: reorder sections in bits to match the ordering in struct\r\n\r\n* doc: add documentation about using struct to effectively create a union (#101)"
    },
    {
      "commit": "ac5e59b3be7ccac05921fff6ec274ff56b095ae6",
      "tree": "9b164d04d2c3df8a97cc313c7d784afc99f150a5",
      "parents": [
        "d457a4f13f072efa105af1212ca0f2a434c95620"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed Oct 04 18:44:32 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 04 15:44:32 2023 -0700"
      },
      "message": "Fix subscripted types for Python 3.8 (#97)\n\nThe changes in PR #89 inadvertently added a line that is incompatible\r\nwith Python version 3.8. However, Python 3.8 is still supported for\r\naround one more year from now (https://devguide.python.org/versions/),\r\nso this change restores 3.8 compatibility."
    },
    {
      "commit": "d457a4f13f072efa105af1212ca0f2a434c95620",
      "tree": "74e5251bd72a3cafa0ce82bf9c6550de7e425636",
      "parents": [
        "5dd164f06c4961731e7b06a8ac91bdece42737e9",
        "19743e4117a415200e24c0fb743b52ef118836dd"
      ],
      "author": {
        "name": "Aaron Webster",
        "email": "AaronWebster@users.noreply.github.com",
        "time": "Mon Oct 02 16:10:50 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 02 16:10:50 2023 -0700"
      },
      "message": "Merge pull request #96 from reventlov/fix_iterator_bug\n\nFix array iterators when the array view is a temporary object."
    },
    {
      "commit": "19743e4117a415200e24c0fb743b52ef118836dd",
      "tree": "bc2de491f6a16170fa995f0da0763465e6cce799",
      "parents": [
        "46fe1ec3f618ceb31acd27ce4dc9dd9be975d557"
      ],
      "author": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Mon Oct 02 23:07:59 2023 +0000"
      },
      "committer": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Mon Oct 02 23:07:59 2023 +0000"
      },
      "message": "Fix array iterators when the array view is a temporary object.\n\nFIXES #95\n"
    },
    {
      "commit": "5dd164f06c4961731e7b06a8ac91bdece42737e9",
      "tree": "0918cb7f9506dd3beb4f51fc40358ae3af9b22b3",
      "parents": [
        "4b28ad444465551a8f0ff842dd9bffe2929075f3"
      ],
      "author": {
        "name": "Ben Lawson",
        "email": "BenjaminLawson@users.noreply.github.com",
        "time": "Fri Sep 29 14:24:43 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 29 14:24:43 2023 -0700"
      },
      "message": "Disable clang-tidy lint in C++ header body (#94)\n\nDisable all clang-tidy linting in C++ the body of the C++ outline\r\ntemplate. This fixes several readability lint errors downstream."
    },
    {
      "commit": "4b28ad444465551a8f0ff842dd9bffe2929075f3",
      "tree": "2bc8e6d21baaf9a5150b6daa8a44246fcb81b275",
      "parents": [
        "699bf1a0dcaac53770056d54fc819ddb8e4280c4"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Thu Jun 29 19:48:04 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 29 16:48:04 2023 -0700"
      },
      "message": "Emit compilation errors for bad C++ namespaces (#92)\n\n* Emit compilation errors for bad C++ namespaces\r\n\r\nPrior to this CL, an incorrectly-formatted namespace will fail an assert\r\nand print a python exception to the user. While this likely sufficient\r\nfor a user to diagnose the issue, it is inconsistent with other error\r\nreporting in Emboss.\r\n\r\nWith this change, the namespace checking is implemented in the same way\r\nas other validations in the Emboss compiler, providing a specific file,\r\nline, and column range of the issue and printing the line containing the\r\nissue to the user.\r\n\r\n* Improve namespace error messages"
    },
    {
      "commit": "699bf1a0dcaac53770056d54fc819ddb8e4280c4",
      "tree": "90afc0fc2473e236918624e9c49b2adc16d6cf44",
      "parents": [
        "5a501d8f00becef232ea4022027cf4c6bac31f1a"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed Jun 28 20:15:15 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 28 17:15:15 2023 -0700"
      },
      "message": "Implement `enum_case` attribute in cpp backend (#89)\n\n* Implement `enum_case` attribute in cpp backend\r\n\r\nImplements the `enum_case` attribute in the C++ backend to support\r\nemitting enum values with a case other than SHOUTY_CASE. Currently only\r\nthe original SHOUTY_CASE and the new kCamelCase cases are supported, but\r\nadding a new case should be trivial.\r\n\r\nAdditionally, the implementation was designed to make it simple for a\r\n`name` attribute to be added for enum values (other IR nodes should be\r\nunaffected, it would be neither simpler nor harder to implement after\r\nthis commit for other nodes).\r\n\r\nTests were added for case conversions, header generation, and a cc_test.\r\nAll tests pass both in `bazel test` and `python -m unittest`.\r\n\r\nA small change was made to the front-end, as some attribute handling\r\nfunctions were hoisted into `compiler/util` for reuse in the backend.\r\n\r\n* Fixes from PR comments\r\n\r\n- Uses the original SHOUTY_CASE emboss names as the canonical name for\r\n  enum values rather than the backend-specific names.\r\n- Tests (and fixes) the text stream functions.\r\n- Adds additional test cases.\r\n- Uses indicative verb forms for docstrings rather than imperative.\r\n- Handles errors in enum_case strings much better.\r\n  - Gives the source location of the specific issue.\r\n  - Checks for empty/leading commas, allows trailing commas.\r\n  - Checks for duplicate cases.\r\n\r\n* Update docs for enum_case feature.\r\n\r\n* Fix comment\r\n\r\n* Test and fix empty/whitespace enum_case values with no comma"
    },
    {
      "commit": "5a501d8f00becef232ea4022027cf4c6bac31f1a",
      "tree": "5a69eeafaa8439e0e428c4828a0a82a08ce0d43b",
      "parents": [
        "46fe1ec3f618ceb31acd27ce4dc9dd9be975d557"
      ],
      "author": {
        "name": "Dmitri Prime",
        "email": "bolms@google.com",
        "time": "Thu Jun 22 01:59:48 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 22 01:59:48 2023 -0700"
      },
      "message": "Fix error message printing in `emboss_front_end.py`. (#91)\n\n"
    },
    {
      "commit": "46fe1ec3f618ceb31acd27ce4dc9dd9be975d557",
      "tree": "4efcfa7025eb0c9b5fe2d3fdb62463b781c57e59",
      "parents": [
        "9191077294ebd809e6e706c82d8f811423b11bd7"
      ],
      "author": {
        "name": "Dmitri Prime",
        "email": "bolms@google.com",
        "time": "Thu May 25 13:41:12 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 25 13:41:12 2023 -0700"
      },
      "message": "Design Sketch for String Support (#82)\n\nAdd a design sketch for string support in Emboss."
    },
    {
      "commit": "9191077294ebd809e6e706c82d8f811423b11bd7",
      "tree": "0fbc110dde97404f158fe242ee68ddf1e4fde108",
      "parents": [
        "1119723db88f5360cf17d2e4cc4cd2f6d52f3c67"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Thu May 18 12:43:52 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 18 09:43:52 2023 -0700"
      },
      "message": "Fix header_generator_test (#88)\n\n* Fix header_generator_test\r\n\r\nDue to a missing `unittest.main()` call, the header_generator_test was\r\nnot actually running any tests when run with bazel/run directly.\r\nHowever, the failure was noticed by `python -m unittest discover`. Fixed\r\nthe header_generator_test in the following ways:\r\n\r\n - Import test_util (tests failed due to missing import).\r\n - Change attribute_checker.normalize_and_verify to\r\n   header_generator.generate_header.\r\n - Remove unused imports.\r\n - Make appropriate BUILD changes.\r\n - Add unittest.main() call so that unit tests are run.\r\n\r\nAdditionally, this change adds a (blank) __init__.py to compiler/ and\r\ncompiler/util/ so that they are importable by the unittest module. This\r\nmeans that running `python -m unittest discover -p \u0027*_test.py\u0027` from the\r\nmain emboss repository should run all python tests in the compiler - and\r\ncould be a good sanity check to make sure all python tests pass, even\r\nwhen `bazel test compiler/...` could miss tests (not declared in BUILD\r\nor missing the unittest.main() call).\r\n\r\n* Move front_end/test_util to util/test_util"
    },
    {
      "commit": "1119723db88f5360cf17d2e4cc4cd2f6d52f3c67",
      "tree": "8e4bf3cc241e2e43464ff1627b09ac9c03593d24",
      "parents": [
        "1d9223b84db78e5c15f217aa2f7c3688c7cb2eb5"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Wed May 17 19:12:14 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 17 16:12:14 2023 -0700"
      },
      "message": "Add attributes to enum values (#86)\n\n* Add attributes to enum values\r\n\r\nAs of this change, the grammar allows attributes on enum values, either\r\ninline or indented in the body, the same as fields. Additionally, this\r\nchange updates the formatter and grammar documentation to account for\r\nthis change.\r\n\r\n* Check attributes of enum values\r\n\r\nThis ensures that enum values are checked during attribute verification.\r\nSince currently there are no non-backend attributes for enum values,\r\nhaving any (non-backend) attribute at all will produce an error."
    },
    {
      "commit": "1d9223b84db78e5c15f217aa2f7c3688c7cb2eb5",
      "tree": "c7f37f82383502f0162f8a7b0f6a44b36705e531",
      "parents": [
        "5b3812671124153698c840422fafaf25545bfb1e"
      ],
      "author": {
        "name": "Jason Graffius",
        "email": "jasongraffius@gmail.com",
        "time": "Thu May 11 18:42:30 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 11 15:42:30 2023 -0700"
      },
      "message": "Add design for alternate enum cases (#83)\n\n* Add design for alternate enum cases\r\n\r\n* Fix quotes in doc example\r\n\r\n* Added a future work section"
    },
    {
      "commit": "5b3812671124153698c840422fafaf25545bfb1e",
      "tree": "da3ff1232be10508a4c8c0068d50e840d1a5c99d",
      "parents": [
        "053bd6c7203364ae6f796d71414a4dcf4672bd89"
      ],
      "author": {
        "name": "Dmitri Prime",
        "email": "bolms@google.com",
        "time": "Mon May 01 23:55:07 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 01 23:55:07 2023 -0700"
      },
      "message": "Factor back-end attribute checking into the back end. (#80)\n\nFactor back-end attribute checking into the back end.\r\n\r\nThis change splits up `front_end/attribute_checker.py`, moving the\r\ngeneric parts to a new file `util/attribute_util.py`, and moving the\r\nback-end-specific parts to `back_end/cpp/header_generator.py`.\r\n\r\nSome tests from `front_end/attribute_checker_test.py` were moved to\r\na new test suite, `header_generator_test.py`.  There should probably\r\nbe a `util/attribute_checker_test.py`, but for now the old tests\r\nprovide sufficient coverage.\r\n\r\nAs a result of moving some attribute checking into the back end,\r\n`generate_header()` can now return errors.  A future change should\r\nconvert some of the `assert` statements in the same file into error\r\nreturns.\r\n\r\nIn order for the `emboss_codegen_cpp.py` driver to properly display\r\nerrors, the original source code of the `.emb` is now included\r\nverbatim in the IR, increasing the IR size by about 3%.\r\n\r\nThis change does still enforce some minimal checking of back end\r\nattributes: the back end must be listed in the new\r\n`[expected_back_ends]` attribute (default value `\"cpp\"`), or it is\r\nconsidered to be an error.  This change does not document the\r\n`[expected_back_ends]` attribute because it is not currently useful for\r\nend users."
    },
    {
      "commit": "053bd6c7203364ae6f796d71414a4dcf4672bd89",
      "tree": "602d4e6acfe08453ff180f6d8749913a0a424c2c",
      "parents": [
        "07ef4ff1858d70a0611b84a2f09328a764e64b72",
        "1b1d4c7caa13dfc85fcdc8e9825ae74fc48413a8"
      ],
      "author": {
        "name": "Aaron Webster",
        "email": "AaronWebster@users.noreply.github.com",
        "time": "Mon Apr 03 13:16:07 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 03 13:16:07 2023 -0700"
      },
      "message": "Merge pull request #79 from reventlov/fix_traverse_ir_test\n\nFix `traverse_ir_test` by using `varkw` instead of `kwonlyargs`."
    },
    {
      "commit": "07ef4ff1858d70a0611b84a2f09328a764e64b72",
      "tree": "b444ac4a51c6fc65200c4f5d0b58abfac8f5c5cd",
      "parents": [
        "b02439aeecb9cc8621c7aea9fc206f65da45c9be",
        "1cde98bfed773b09e8edb01de120138978d8d004"
      ],
      "author": {
        "name": "Rob Russell",
        "email": "robrussell@users.noreply.github.com",
        "time": "Wed Mar 22 14:28:17 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 22 14:28:17 2023 -0700"
      },
      "message": "Merge pull request #81 from reventlov/import_ir\n\nSwitch `emboss_cc_library` to use real Starlark rules."
    },
    {
      "commit": "1cde98bfed773b09e8edb01de120138978d8d004",
      "tree": "b444ac4a51c6fc65200c4f5d0b58abfac8f5c5cd",
      "parents": [
        "378cd5dcdb0e8baa74c3e8ac5815727d53de4328"
      ],
      "author": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Tue Mar 21 00:48:23 2023 +0000"
      },
      "committer": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Tue Mar 21 00:48:23 2023 +0000"
      },
      "message": "Update copyright date on new files.\n"
    },
    {
      "commit": "378cd5dcdb0e8baa74c3e8ac5815727d53de4328",
      "tree": "d2580b7b739699f399f42e8f50aee1027c6a578e",
      "parents": [
        "b02439aeecb9cc8621c7aea9fc206f65da45c9be"
      ],
      "author": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Tue Mar 21 00:38:33 2023 +0000"
      },
      "committer": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Tue Mar 21 00:38:33 2023 +0000"
      },
      "message": "Switch `emboss_cc_library` to use real Starlark rules.\n\nThis change creates the `emboss_library` and `cc_emboss_library`\nStarlark rules, which mirror `proto_library` and `cc_proto_library`.\n\nThis also fixes issues with `.emb` files that import `.emb` files that\nimport `.emb` files, where imports-of-imports were not always included\nin the compilation.\n\nThis also required new command-line arguments to `emboss_front_end`\n(`--output-file`) and `emboss_codegen_cpp` (`--input-file` and\n`--output-file`).\n"
    },
    {
      "commit": "1b1d4c7caa13dfc85fcdc8e9825ae74fc48413a8",
      "tree": "d016212594ca6b109b7e244e31ab87aeacc3b8e1",
      "parents": [
        "b02439aeecb9cc8621c7aea9fc206f65da45c9be"
      ],
      "author": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Thu Mar 16 19:00:46 2023 +0000"
      },
      "committer": {
        "name": "Ben Olmstead",
        "email": "bolms@google.com",
        "time": "Thu Mar 16 19:00:46 2023 +0000"
      },
      "message": "Fix `traverse_ir_test` by using `varkw` instead of `kwonlyargs`.\n"
    }
  ],
  "next": "b02439aeecb9cc8621c7aea9fc206f65da45c9be"
}
