)]}'
{
  "commit": "52585064843f0855412839aff2f9c366e84842c8",
  "tree": "4a456e015e3559d0bc934270958c16eb8d051cf0",
  "parents": [
    "90e2e781b291187d10dc37bb5936f2ef012b61d9"
  ],
  "author": {
    "name": "Chad Brokaw",
    "email": "cbrokaw@gmail.com",
    "time": "Tue Aug 25 13:35:56 2026"
  },
  "committer": {
    "name": "Chad Brokaw",
    "email": "cbrokaw@gmail.com",
    "time": "Tue Aug 25 13:51:43 2026"
  },
  "message": "[read-fonts] Read computed array items at a position\n\n`PositionedArray` was a near copy of `ComputedArray` differing only in\nwhether an item is handed data sliced to it or the enclosing data plus\nits own position. That is a property of the item, not of the array, so\nlet `ComputedArray` do the latter and read its items through\n`FontReadAt`. An item that does not care simply slices first.\n\nCodegen emits that slicing impl for the records it generates that are\nnot positioned, and `impl_font_read_at!` covers the handful written by\nhand. A blanket impl is not possible: a positioned record implements\n`FontReadAt` directly, and the compiler cannot be told that no type\nimplements both it and `FontRead`.\n\nTwo things follow from the array holding the enclosing data. Its\nconstructor takes the range the items occupy rather than data already\nsliced to them, so the `FontRead` impl goes; nothing built one that way\noutside codegen. And `get` has to check the index, where before an out of\nrange one fell out of `split_off` — against the enclosing data it would\nread a neighbouring item instead.\n\nIteration keeps the running offset: the length is bounded up front so\nevery position it computes is representable, and each step is an add.\n\nThis leaves one array type for dynamically sized items again, and one\n`Cursor` method and one traversal wrapper for it.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d555ab85cd697040a1d11eec9dcbb11d3f54748d",
      "old_mode": 33188,
      "old_path": "font-codegen/src/fields.rs",
      "new_id": "341b678da3cf4c4dca5b1f5a9b989b9ac742600c",
      "new_mode": 33188,
      "new_path": "font-codegen/src/fields.rs"
    },
    {
      "type": "modify",
      "old_id": "6797cb26f986f57a0522b74f1c1cf4cb92685943",
      "old_mode": 33188,
      "old_path": "font-codegen/src/record.rs",
      "new_id": "bf48b89c8e4f690ed9853a6b22499f4b9473f357",
      "new_mode": 33188,
      "new_path": "font-codegen/src/record.rs"
    },
    {
      "type": "modify",
      "old_id": "563a6d2c4e3e3520aa334e0da42bd9037a5015b9",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_fvar.rs",
      "new_id": "aac3dfcf86b80a63699f9d4da8c1e5d59869f175",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_fvar.rs"
    },
    {
      "type": "modify",
      "old_id": "05c1ff20ad4c494d1853036839d61f1e41b7119c",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_gpos.rs",
      "new_id": "2c5d0f2c928f2fd6c56f4f090f0cec8014b45d4f",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_gpos.rs"
    },
    {
      "type": "modify",
      "old_id": "00f5c0c23ab5ea188d1d8142c03d2ad1253c074b",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_gvar.rs",
      "new_id": "142ea2e2cf762ab59b33ad5a4836372e039a7b40",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_gvar.rs"
    },
    {
      "type": "modify",
      "old_id": "191a34b73a833e495898a614ea9c9b1060fd43d4",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_hdmx.rs",
      "new_id": "132709e3c68482d2f18117f6ede612cf61fac7b3",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_hdmx.rs"
    },
    {
      "type": "modify",
      "old_id": "6f8e5b8b3331c85593310f90bbaa39da65b9649e",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_ift.rs",
      "new_id": "3a6a32aa6db641894c4494cd480e116b7b146f2f",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_ift.rs"
    },
    {
      "type": "modify",
      "old_id": "724820f26fe041362362e3e77a8856d1094b7b46",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_test_positioned.rs",
      "new_id": "7688feed59067f4fb297c113233de32ff9f22755",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_test_positioned.rs"
    },
    {
      "type": "modify",
      "old_id": "4fe8ca2dfe1e3927f5f67d455124bca373cacf47",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_test_read_args.rs",
      "new_id": "2de383b13337dfb110e53cb3368954d5a11fd80e",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_test_read_args.rs"
    },
    {
      "type": "modify",
      "old_id": "e9bf69420c16959f7b0efa7026c09a69c82143cf",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_test_records.rs",
      "new_id": "012af5a820203e968a1ac5106a447b5d54fa29ee",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_test_records.rs"
    },
    {
      "type": "modify",
      "old_id": "349a221b062643d56047caa13cd2eb55b364adf3",
      "old_mode": 33188,
      "old_path": "read-fonts/generated/generated_variations.rs",
      "new_id": "722842aeb02407de7688586acb2cd16d8be28d5c",
      "new_mode": 33188,
      "new_path": "read-fonts/generated/generated_variations.rs"
    },
    {
      "type": "modify",
      "old_id": "80b88ec7b016a1a5b6cf193c15dd9ecc0fd1a6bf",
      "old_mode": 33188,
      "old_path": "read-fonts/src/array.rs",
      "new_id": "cc088d3c33ed6d81e484abdef0bf29c4f1753ecf",
      "new_mode": 33188,
      "new_path": "read-fonts/src/array.rs"
    },
    {
      "type": "modify",
      "old_id": "367947e5817b1c76f1020882d3f670951b91c49c",
      "old_mode": 33188,
      "old_path": "read-fonts/src/font_data.rs",
      "new_id": "2924e8d6c254bc918993d6acdc0318d5f1ac6728",
      "new_mode": 33188,
      "new_path": "read-fonts/src/font_data.rs"
    },
    {
      "type": "modify",
      "old_id": "5731c75266c6d8f15f7b25a210af85a8b290862a",
      "old_mode": 33188,
      "old_path": "read-fonts/src/lib.rs",
      "new_id": "e8df49798d89337182b3a666ded9e6a779ad8e06",
      "new_mode": 33188,
      "new_path": "read-fonts/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "d3f5aa5b30462b7161b981534872545e5c1f28b0",
      "old_mode": 33188,
      "old_path": "read-fonts/src/tables/gvar.rs",
      "new_id": "2aae632462329c4fdb8e4c569a3c3109dc0c5ffb",
      "new_mode": 33188,
      "new_path": "read-fonts/src/tables/gvar.rs"
    },
    {
      "type": "modify",
      "old_id": "1851978765f839cbaf7d3f070c3130da04058771",
      "old_mode": 33188,
      "old_path": "read-fonts/src/tables/hdmx.rs",
      "new_id": "aefa6a7d00a50efba17aacf292105a4584ed5ead",
      "new_mode": 33188,
      "new_path": "read-fonts/src/tables/hdmx.rs"
    },
    {
      "type": "modify",
      "old_id": "67d0c1ea76a2498d2956bc88cfb539501156181b",
      "old_mode": 33188,
      "old_path": "read-fonts/src/tables/ift.rs",
      "new_id": "5e8316db7ef8d0192f7cad075df6a1132d698fdd",
      "new_mode": 33188,
      "new_path": "read-fonts/src/tables/ift.rs"
    },
    {
      "type": "modify",
      "old_id": "af5a17e7fd3f11ae386372de6a587d0326352120",
      "old_mode": 33188,
      "old_path": "read-fonts/src/tables/instance_record.rs",
      "new_id": "dd207b82508d757d512fa698d208b9e3368466cb",
      "new_mode": 33188,
      "new_path": "read-fonts/src/tables/instance_record.rs"
    },
    {
      "type": "modify",
      "old_id": "6746d93546fabb638b2f08d04ec96373c845268c",
      "old_mode": 33188,
      "old_path": "read-fonts/src/tables/value_record.rs",
      "new_id": "6bd69f972aeeceead9e6129809b00c028fad9f5c",
      "new_mode": 33188,
      "new_path": "read-fonts/src/tables/value_record.rs"
    },
    {
      "type": "modify",
      "old_id": "f25f21e4d4012c1bb2e500f9141a82ed40ff33b9",
      "old_mode": 33188,
      "old_path": "read-fonts/src/traversal.rs",
      "new_id": "18f7f881c737910292664262ea1f14a34326ce42",
      "new_mode": 33188,
      "new_path": "read-fonts/src/traversal.rs"
    }
  ]
}
