)]}'
{
  "commit": "13e1730769227cf93e7a2744354b4ea82129d74b",
  "tree": "48b66164853271394446605a04ae1995389fe1b9",
  "parents": [
    "c962481742fa1a3a2921f47baa3d970c17e350e8"
  ],
  "author": {
    "name": "Aaron Webster",
    "email": "awebster@gmail.com",
    "time": "Wed Jun 03 17:41:29 2026 -0700"
  },
  "committer": {
    "name": "Aaron Webster",
    "email": "awebster@gmail.com",
    "time": "Wed Jun 03 17:41:29 2026 -0700"
  },
  "message": "Support conditional fields and variable-length arrays in the Wireshark Lua backend\n\nAdd an Emboss-expression -\u003e Lua translator so the dissector backend can\nhandle constructs it previously skipped:\n\n* Conditional (`if`) fields are emitted as `if \u003ccond\u003e then ... end`.\n* Variable-length arrays (`T[n]`, with `n` a sibling field) and\n  dynamically-located fields are emitted with the length/offset\n  expression translated to Lua.\n\nSibling field values referenced by a condition, array length, or offset are\ncaptured into `local val_*` reads. Fields whose governing expression can\u0027t be\ntranslated are still skipped with a comment, so the generator always emits\nvalid Lua. Constant-only structs produce byte-identical output to before.\n\nAdd testdata/wireshark_dynamic.emb (and its golden), expression/conditional/\narray unit tests, and a TShark smoke test that loads a generated dissector\nand checks both branches of a conditional, length-prefixed message (the test\nskips itself when tshark is not installed).\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "604db094f5abe69aa627815c7bff39589e98603d",
      "old_mode": 33188,
      "old_path": "compiler/back_end/lua/BUILD",
      "new_id": "a01c930014368673a5eb3f612ac3d14f42c6030e",
      "new_mode": 33188,
      "new_path": "compiler/back_end/lua/BUILD"
    },
    {
      "type": "modify",
      "old_id": "697d24cb5980ab5b6919a4378a30c59702e372e4",
      "old_mode": 33188,
      "old_path": "compiler/back_end/lua/dissector_generator.py",
      "new_id": "6c2c344d6303db5d55463793ed6057543aef527d",
      "new_mode": 33188,
      "new_path": "compiler/back_end/lua/dissector_generator.py"
    },
    {
      "type": "modify",
      "old_id": "a9daa89dfc9c95d55a5fd11be0f4a54fddeceaf0",
      "old_mode": 33188,
      "old_path": "compiler/back_end/lua/dissector_generator_test.py",
      "new_id": "8f5803458fbad85c7baab1c7a13049134a6e95e9",
      "new_mode": 33188,
      "new_path": "compiler/back_end/lua/dissector_generator_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1b05125077a662cce1ee1b1abcb5452015d316ac",
      "new_mode": 33188,
      "new_path": "compiler/back_end/lua/tshark_smoke_test.py"
    },
    {
      "type": "modify",
      "old_id": "fd15391e9079f80b1f7729479dfde7ecaa26cc4a",
      "old_mode": 33188,
      "old_path": "scripts/regenerate_goldens.py",
      "new_id": "feab4bc92845fd8b916928148b398625dcf040ad",
      "new_mode": 33188,
      "new_path": "scripts/regenerate_goldens.py"
    },
    {
      "type": "modify",
      "old_id": "5641aaa6ddcaf83b5a2ed8dc699dabe93fd16c59",
      "old_mode": 33188,
      "old_path": "testdata/BUILD",
      "new_id": "d1ad3d9f8303f4c10c941f4ec09996d1a1cba731",
      "new_mode": 33188,
      "new_path": "testdata/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "51a936a0cb8b1f6c8100ef1eaf9d8cfe65b0bb6b",
      "new_mode": 33188,
      "new_path": "testdata/golden_lua/wireshark_dynamic.emb.lua"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e0caaef1d2bd0bbdf6be8b7127ad0fb3f442ca58",
      "new_mode": 33188,
      "new_path": "testdata/wireshark_dynamic.emb"
    }
  ]
}
