)]}'
{
  "log": [
    {
      "commit": "dddb76d74a646a7ec41cfa6b9f7772830b7acbd2",
      "tree": "d9f08eb8bf7c9e6ebab14167568c49b620df25e6",
      "parents": [
        "9dfcfe8dc22233cb08aa22ba743640d8db92c4e7"
      ],
      "author": {
        "name": "Dave Nicolson",
        "email": "david.nicolson@gmail.com",
        "time": "Thu Apr 09 08:18:58 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Apr 10 12:21:50 2026 +0200"
      },
      "message": "Add OpenStep to man page"
    },
    {
      "commit": "9dfcfe8dc22233cb08aa22ba743640d8db92c4e7",
      "tree": "12020050e429f5acac7473301838fd3895c9312b",
      "parents": [
        "f41b1ea67045e0c09339974d83e389972d84f166"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Apr 10 12:21:17 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Apr 10 12:21:17 2026 +0200"
      },
      "message": "Fix fread() unused return values by actually handling errors\n"
    },
    {
      "commit": "f41b1ea67045e0c09339974d83e389972d84f166",
      "tree": "65f479bb3a3c4718b4e5e32c70f70b6891b9c744",
      "parents": [
        "c8b36a80bad4a1fe488927af4da0ecbcf10079bb"
      ],
      "author": {
        "name": "Dave Nicolson",
        "email": "david.nicolson@gmail.com",
        "time": "Mon Mar 30 20:21:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 20:21:22 2026 +0200"
      },
      "message": "Fix Cython crashes"
    },
    {
      "commit": "c8b36a80bad4a1fe488927af4da0ecbcf10079bb",
      "tree": "657066f92a85dc43bd51af7698e76d00c29c0b4a",
      "parents": [
        "3edac28498d883f1f768699ee15ce85a82bb2a7b"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Mar 22 19:16:51 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Mar 22 19:16:51 2026 +0100"
      },
      "message": "Add OpenStep coercion support for non-OpenStep plist types\n\n- Use PLIST_OPT_COERCE option to coerce PLIST_BOOLEAN, PLIST_DATE, PLIST_UID, and PLIST_NULL to OpenStep-compatible types (1 or 0, ISO 8601 strings, integers, and \u0027NULL\u0027 string)\n- Add plist_to_openstep_with_options() function to allow passing coercion option (and others)\n- Update plist_write_to_string() and plist_write_to_stream() accordingly\n"
    },
    {
      "commit": "3edac28498d883f1f768699ee15ce85a82bb2a7b",
      "tree": "b350517a84a671fc500d943168f973e7c97aa93e",
      "parents": [
        "6e03a1df6d1aa87c8f9e2b35f1a2ca60feca1c0e"
      ],
      "author": {
        "name": "Calil Khalil",
        "email": "cnkfilho@gmail.com",
        "time": "Sat Feb 21 10:39:24 2026 -0300"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Mar 20 17:12:47 2026 +0100"
      },
      "message": "Add JSON coercion support for non-JSON plist types\n\n- Add PLIST_OPT_COERCE option to coerce PLIST_DATE, PLIST_DATA, and PLIST_UID to JSON-compatible types (ISO 8601 strings, Base64 strings, and integers)\n- Add plist_to_json_with_options() function to allow passing coercion options (and others)\n- Update plist_write_to_string() and plist_write_to_stream() to support coercion option\n- Add --coerce flag to plistutil for JSON output\n- Create plist2json symlink that automatically enables coercion when invoked\n"
    },
    {
      "commit": "6e03a1df6d1aa87c8f9e2b35f1a2ca60feca1c0e",
      "tree": "a571c74147d33da0a4dbfade178180c692c60447",
      "parents": [
        "f5e74fc1e007b8f625d91e40c160785580de8f60"
      ],
      "author": {
        "name": "Sami Kortelainen",
        "email": "sami.kortelainen@piceasoft.com",
        "time": "Wed Feb 25 02:27:00 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Feb 25 02:27:00 2026 +0100"
      },
      "message": "xplist: Enforce single root value inside \u003cplist\u003e\n\nEnsure that XML property lists contain exactly one root value inside the \u003cplist\u003e element and reject any additional value nodes before \u003c/plist\u003e.\n\nAdd tests covering root value handling and nested CF$UID conversion behavior.\n\nCo-authored-by: Sami Kortelainen \u003csami.kortelainen@piceasoft.com\u003e\nCo-authored-by: Nikias Bassen \u003cnikias@gmx.li\u003e\n"
    },
    {
      "commit": "f5e74fc1e007b8f625d91e40c160785580de8f60",
      "tree": "ce9da2c80c13a0718605019c098e2a3b775b814a",
      "parents": [
        "3bdee70a9c1490ea011c6fb65193b2c7e242d26d"
      ],
      "author": {
        "name": "Sami Kortelainen",
        "email": "sami.kortelainen@piceasoft.com",
        "time": "Sun Feb 22 03:39:54 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Feb 22 03:39:54 2026 +0100"
      },
      "message": "xplist: Convert nested {CF$UID:\u003cint\u003e} dicts to PLIST_UID safely\n\nConvert single-entry { \"CF$UID\" : \u003cinteger\u003e } dictionaries to PLIST_UID\nnodes when closing a dict in the XML parser.\n\nRefactor node cleanup logic:\n- Split plist_free_data() into internal _plist_free_data()\n- Introduce plist_free_children() to release child nodes separately\n- Update plist_set_element_val() to free children before changing\n  container node types\n- Ensure PLIST_DICT hashtables do not free values (assert + force\n  free_func \u003d NULL)\n\nThis avoids in-place container mutation issues and ensures child\nnodes and container metadata are released correctly before\nchanging node type.\n\nCo-authored-by: Sami Kortelainen \u003csami.kortelainen@piceasoft.com\u003e\nCo-authored-by: Nikias Bassen \u003cnikias@gmx.li\u003e\n"
    },
    {
      "commit": "3bdee70a9c1490ea011c6fb65193b2c7e242d26d",
      "tree": "90389bf6f8542bac2f2a4fffa1f5b31d099ee364",
      "parents": [
        "e3d5bbdf1f213caafedf185251fba02558d30b98"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 20 05:17:32 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 20 05:17:32 2026 +0100"
      },
      "message": "plistutil: Read STDIN in chunks instead of 1 byte at a time\n"
    },
    {
      "commit": "e3d5bbdf1f213caafedf185251fba02558d30b98",
      "tree": "dc62bee53ebb9b3057b2a6fef043684efcefc125",
      "parents": [
        "30132a9e2ce44f8325d574ea7a3c28466c132f0e"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 20 03:38:36 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 20 03:38:36 2026 +0100"
      },
      "message": "plistutil: Add a --nodepath option to allow selecting a specific node\n"
    },
    {
      "commit": "30132a9e2ce44f8325d574ea7a3c28466c132f0e",
      "tree": "634d0386ff3da8875c0413ce761ba2028134356e",
      "parents": [
        "d5a582e95a0535ba2ec916cf0532dfe29bcd7e6e"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 20 02:32:19 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 20 02:32:19 2026 +0100"
      },
      "message": "plistutil: Use getopt for solid option parsing\n"
    },
    {
      "commit": "d5a582e95a0535ba2ec916cf0532dfe29bcd7e6e",
      "tree": "6168cefb432fd50f490972e93f0f85f7b0b8b2f5",
      "parents": [
        "70fd355f94f41bd53d236c9365ed4f888a8818eb"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 13 01:05:53 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 13 01:05:53 2026 +0100"
      },
      "message": "json: Fix a few memory leaks\n"
    },
    {
      "commit": "70fd355f94f41bd53d236c9365ed4f888a8818eb",
      "tree": "fe4a98169f516a02da13224898fd8ad93b7fb952",
      "parents": [
        "9969b8ebeb2dd2ac66e4d18fc15d0340de6e8d0e"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 13 00:48:34 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 13 00:48:34 2026 +0100"
      },
      "message": "libcnary: Fix leak on error in node_copy_deep()\n"
    },
    {
      "commit": "9969b8ebeb2dd2ac66e4d18fc15d0340de6e8d0e",
      "tree": "cad46eb503d50655946b77e38433ce76b9f9563d",
      "parents": [
        "c4763002d20e845b566edbe499ada85b03d38dc2"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 02:43:50 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 02:43:50 2026 +0100"
      },
      "message": "bplist: Add overflow check to node offset pointer arithmetic\n\nCredit to OSSFuzz\n"
    },
    {
      "commit": "c4763002d20e845b566edbe499ada85b03d38dc2",
      "tree": "ae6ab6a37679ef86d736aeab1d4a3dcebbb732d3",
      "parents": [
        "a7e82b846543a4fc8d3291a5a65dd66b0cb84396"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 02:13:59 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 02:14:45 2026 +0100"
      },
      "message": "jplist: Add another NULL check to prevent NULL pointer dereference\n"
    },
    {
      "commit": "a7e82b846543a4fc8d3291a5a65dd66b0cb84396",
      "tree": "1b940620358f798b5f7fca41df9920f6b4948194",
      "parents": [
        "4e82bc85671cfe50763de2637b54cb8576d7976f"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 02:10:19 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 02:10:19 2026 +0100"
      },
      "message": "plist: make array and dict iterators opaque\n\nIntroduce private iterator structs for plist_array_iter and\nplist_dict_iter, and fix *_next_item() to properly advance\niterator state and handle malformed containers safely.\n"
    },
    {
      "commit": "4e82bc85671cfe50763de2637b54cb8576d7976f",
      "tree": "378d7d8c51e9a6a618e0f45aa6edf97e56bd3c1c",
      "parents": [
        "8c78d89041b713bffcb0b09fee4468304a3a54d5"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 01:20:05 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Feb 12 01:20:05 2026 +0100"
      },
      "message": "Add NULL checks across codebase\n"
    },
    {
      "commit": "8c78d89041b713bffcb0b09fee4468304a3a54d5",
      "tree": "2c9427e2382b47c2aaf724a074fadafde415c066",
      "parents": [
        "9ef0d05265198ede1fd14271ab3f4812d34ebe2e"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Feb 10 17:45:12 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Feb 10 17:45:12 2026 +0100"
      },
      "message": "plist: Make plist copy and free implementations iterative\n\nConvert plist_free_node() and plist_copy_node() to iterative\nimplementations. This avoids unbounded recursion and stack\noverflow when handling deeply nested plist data, while\npreserving existing semantics and caches.\n"
    },
    {
      "commit": "9ef0d05265198ede1fd14271ab3f4812d34ebe2e",
      "tree": "b8e90be6fd549ac0295eb3e348228d7c84464a68",
      "parents": [
        "714ef4f95652bc5dde2bc1a461cac8c3a89a61c9"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Feb 08 04:31:01 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Feb 08 04:31:01 2026 +0100"
      },
      "message": "plist: Handle node_attach/node_insert failures\n\nUpdate plist array and dict mutation helpers to check\nreturn values from node_attach() and node_insert(). This\nprevents cache corruption and allows new depth and cycle\nchecks to be enforced correctly.\n"
    },
    {
      "commit": "714ef4f95652bc5dde2bc1a461cac8c3a89a61c9",
      "tree": "16c666a3934c51723fd8aeb6d1502eae28b601ae",
      "parents": [
        "1df039994ff2368bc64ea4bc38d9261e6153437c"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Feb 08 03:54:06 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Feb 08 03:54:06 2026 +0100"
      },
      "message": "libcnary: Fix node_detach to fully clear parent relationship\n\nEnsure node_detach() clears child-\u003eparent after removal and\nhandles missing children lists safely. This makes detached\nnodes reusable and allows correct rollback when reinserting\nnodes after failed inserts (e.g. depth-limit failures).\n\nWithout this, detached nodes could remain logically parented,\ncausing inconsistent state and preventing reinsertion.\n"
    },
    {
      "commit": "1df039994ff2368bc64ea4bc38d9261e6153437c",
      "tree": "ed16b612677c253925685a9f380abbc19d74d05b",
      "parents": [
        "b7f09ccdddc75d82ccaed867eb60e6997a7cad40"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 06 22:08:39 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Feb 06 22:08:39 2026 +0100"
      },
      "message": "libcnary: Define error codes and add cycle, depth, and parent guards\n"
    },
    {
      "commit": "b7f09ccdddc75d82ccaed867eb60e6997a7cad40",
      "tree": "261c3184ac15aebc953d91bc6cb097b5419d320a",
      "parents": [
        "ebf24567ea5e4f72bd5acbc22f085e9d0b208e05"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 29 17:45:01 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 29 17:45:01 2026 +0100"
      },
      "message": "xplist: Improve robustness of XML text parsing and value conversion\n\nThis change adds stricter validation for numeric and date nodes,\nincluding full-input consumption, overflow/range checks, and rejection\nof invalid floating-point values. Whitespace handling is clarified by\nexplicitly trimming trailing XML whitespace for value nodes.\n"
    },
    {
      "commit": "ebf24567ea5e4f72bd5acbc22f085e9d0b208e05",
      "tree": "1eedfa999d8a53c96f53ad713fd33e41698c156b",
      "parents": [
        "57664f6394d9f96ffd54a8bb71fafb6d01528300"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Jan 26 18:56:41 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Jan 26 18:56:41 2026 +0100"
      },
      "message": "xplist: Use small stack buffer instead of dynamic allocations\n\nThis removes the necessity for malloc failures and reduces overhead\n"
    },
    {
      "commit": "57664f6394d9f96ffd54a8bb71fafb6d01528300",
      "tree": "bb240c1f4b6f11b7a870e4793a56f7b07a8a7545",
      "parents": [
        "d0e6ef114aef98c410e59e30cc203489ddf3ba52"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Jan 23 16:35:54 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Jan 23 16:35:54 2026 +0100"
      },
      "message": "plistutil: Make sure to check for memory allocation failure\n\nAddresses #302.\n\nCredit to @ylwango613.\n"
    },
    {
      "commit": "d0e6ef114aef98c410e59e30cc203489ddf3ba52",
      "tree": "e57f45829095954df8b39d8baa7cbbef4dc42f46",
      "parents": [
        "1d628bc5b051ba941389a13aa94983d5d273618b"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Jan 23 16:20:55 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Jan 23 16:20:55 2026 +0100"
      },
      "message": "plist: Improve plist_dict_get_item() to safely iterate key/value pairs\n\nUse explicit key/value stepping, zero-initialize hash lookup key,\nand perform length-checked comparisons on NUL-terminated key strings.\n"
    },
    {
      "commit": "1d628bc5b051ba941389a13aa94983d5d273618b",
      "tree": "0a89d21dcc7922e34acbde0467f621003d6df6d0",
      "parents": [
        "287e7e7fd6f221985a325bef66b8a81e8dda1062"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:29:11 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:29:11 2026 +0100"
      },
      "message": "bplist: Fix compiler warning with explicit cast\n\nCredit to @ylwango613\n"
    },
    {
      "commit": "287e7e7fd6f221985a325bef66b8a81e8dda1062",
      "tree": "c14ad5fcb536e59323384e4006f57486e3a91b9f",
      "parents": [
        "06d92b11523115b5813ee3235f6ea052b98e6d2d"
      ],
      "author": {
        "name": "Rosen Penev",
        "email": "rosenp@gmail.com",
        "time": "Thu Jan 15 18:06:49 2026 -0800"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:26:30 2026 +0100"
      },
      "message": "time64: Add time_s support for WIN32\n\nSigned-off-by: Rosen Penev \u003crosenp@gmail.com\u003e\n"
    },
    {
      "commit": "06d92b11523115b5813ee3235f6ea052b98e6d2d",
      "tree": "56de8771f6f8cd480a5a0717cc58dcf4779a725a",
      "parents": [
        "2b5b43bdb301eeb7e3396833af25212aeb09214f"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:15:46 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:16:28 2026 +0100"
      },
      "message": "plist: Fix plist_is_binary() not checking for NULL input\n\nFixes issue #300\n\nCredit to @jasonmli8\n"
    },
    {
      "commit": "2b5b43bdb301eeb7e3396833af25212aeb09214f",
      "tree": "202d133088fea0603af607f7ccc116e192c39481",
      "parents": [
        "ac7b64160f5c204b11451cdda0165e0a1a810188"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:12:45 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:12:45 2026 +0100"
      },
      "message": "xplist: Use memcpy instead of strncpy since we know the exact size\n"
    },
    {
      "commit": "ac7b64160f5c204b11451cdda0165e0a1a810188",
      "tree": "b08f887081b773a297f04b3f61e3277c925195c7",
      "parents": [
        "502eb2a10201e98f247186672add810e54afc15b"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:12:05 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Jan 22 13:12:05 2026 +0100"
      },
      "message": "xplist: Harden entity unescaping against malformed input\n\n- Fix numeric character reference parsing\n- Enforce exact entity name matching\n- Guard against size_t underflow and oversized entities\n- Reject invalid Unicode code points\n"
    },
    {
      "commit": "502eb2a10201e98f247186672add810e54afc15b",
      "tree": "560bbbce26814d0f9616edcdbeaffa6e967b35d2",
      "parents": [
        "80c2fe807308475d183ae62cc05766f3caee0463"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 18:28:45 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 18:28:45 2026 +0100"
      },
      "message": "bplist: Fix is_ascii_string by using sufficiently large data type\n\nFixes #285\n\nCredit to @ylwango613 for reporting.\n"
    },
    {
      "commit": "80c2fe807308475d183ae62cc05766f3caee0463",
      "tree": "402447907966a436f6e1f490d842f66b26ec5d91",
      "parents": [
        "f06c4c6b6cf29c9e53637731fedd86a6e99e9882"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 18:22:13 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 18:22:13 2026 +0100"
      },
      "message": "bplist: Fix UTF-8 to UTF-16 decoding and enforce strict validation\n\n- Treat input as unsigned bytes\n- Correct UTF-8 bit decoding for 2/3/4-byte sequences\n- Add overlong, surrogate, and range checks\n- Enforce lead/continuation byte constraints\n\nThis addresses issue #283.\n\nCredit to @hgarrereyn for reporting.\n"
    },
    {
      "commit": "f06c4c6b6cf29c9e53637731fedd86a6e99e9882",
      "tree": "9cafd3b51d0d194f265df12be2f9e50e4ac8c25e",
      "parents": [
        "c0f9df912d2a4001e56321fb53615e6474b32232"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 17:33:53 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 17:33:53 2026 +0100"
      },
      "message": "plist: Fix incorrect size storage in plist_copy() for PLIST_STRING nodes\n"
    },
    {
      "commit": "c0f9df912d2a4001e56321fb53615e6474b32232",
      "tree": "ce3d46fa9ac9e173d2f86451037d1456205c067f",
      "parents": [
        "c18d6b323e8121c041e8b88d2ea6b6e85ca41274"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 12:24:52 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 21 12:26:13 2026 +0100"
      },
      "message": "jsmn: use size_t for token offsets and harden against overflow\n\nUse size_t for token start/end offsets instead of int, replace the -1\nsentinel with SIZE_MAX, and add a defensive guard against offset\nwraparound. This prevents overflow when parsing very large JSON inputs.\n\nThis addresses issue #282.\n\nCredit to @ylwango613 for repporting.\n"
    },
    {
      "commit": "c18d6b323e8121c041e8b88d2ea6b6e85ca41274",
      "tree": "2e4007b37eaa8ad6a7a7497c8d36b4c4bd67d077",
      "parents": [
        "cff6a14ba4d0964c4fb4843aad84db12b4df2854"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Jan 20 15:15:17 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Jan 20 15:15:17 2026 +0100"
      },
      "message": "plist: Fix heap overflow caused by incorrect PLIST_STRING length during copy\n\nCredit to @LkkkLxy. Addresses #277.\n"
    },
    {
      "commit": "cff6a14ba4d0964c4fb4843aad84db12b4df2854",
      "tree": "7ddb25e2b98088f0fcfea345eddebe9366f39572",
      "parents": [
        "001a59eef3b2a981f28af74ea82e1fc06b0c4275"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Jan 20 09:52:02 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Jan 20 09:55:40 2026 +0100"
      },
      "message": "plist: Reject insertion of plist nodes that already have a parent\n\nCredit to @LkkkLxy for reporting (#276).\n\nlibplist nodes are owned by exactly one container. Inserting the same\nplist_t into multiple dicts or arrays corrupts the tree structure and\nleads to use-after-free crashes during traversal or plist_free().\n\nAdd explicit parent checks to dict and array insertion APIs to reject\nnodes that already belong to another container. In debug builds, this\nfails loudly via assert() and optional diagnostics; in release builds,\nthe operation safely no-ops.\n\nCallers that need to reuse values must create a copy using plist_copy()\nor explicitly detach the node before reinserting it.\n"
    },
    {
      "commit": "001a59eef3b2a981f28af74ea82e1fc06b0c4275",
      "tree": "b1893557c9d6863f9176b9876686257a5f73aab9",
      "parents": [
        "e45099fb21b679aa0cdb0db394587bb5ba675b0c"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Jan 17 16:35:19 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Jan 17 16:35:19 2026 +0100"
      },
      "message": "plistutil: Use proper error description for new error codes\n"
    },
    {
      "commit": "e45099fb21b679aa0cdb0db394587bb5ba675b0c",
      "tree": "b1a2c1dd34877d83a04d6d6fab804fb2e5a65f2d",
      "parents": [
        "26dd27c435a0d110c924e1fef34ad0f6ae60e251"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Jan 17 15:18:06 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Jan 17 16:04:00 2026 +0100"
      },
      "message": "Prevent deep nesting of plist structures in all input/output formats\n\nThanks to @unbengable12 for reporting. Addresses #288, #289, #290, #291, and #292.\n"
    },
    {
      "commit": "26dd27c435a0d110c924e1fef34ad0f6ae60e251",
      "tree": "530278da18c801aa6333c865ec5d0a3f8327b10e",
      "parents": [
        "5b3ae4c1326e0c85df906ffea49b97b80b13ceae"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 14 03:08:53 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 14 03:08:53 2026 +0100"
      },
      "message": "bplist: Fix format specifier in debug message\n"
    },
    {
      "commit": "5b3ae4c1326e0c85df906ffea49b97b80b13ceae",
      "tree": "a6efdca6333188abf924e13cb70a7aae49665ae1",
      "parents": [
        "25d61ff8b5d994a02c0cc2af8e029bebd3a94cb3"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 14 02:50:40 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Jan 14 02:50:40 2026 +0100"
      },
      "message": "Add circular reference detection to all format writers\n\nThanks to @LkkkLxy for pointing out the issue.\n"
    },
    {
      "commit": "25d61ff8b5d994a02c0cc2af8e029bebd3a94cb3",
      "tree": "c64d79dff76e23704860e37e0bb45781e44e69cc",
      "parents": [
        "c74e34edda2cd76194a09e76f945cfa89dd41a79"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Jan 12 12:13:01 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Jan 12 12:13:01 2026 +0100"
      },
      "message": "hashtable: Remove unnecessary casts by using the correct type for the `next` member\n"
    },
    {
      "commit": "c74e34edda2cd76194a09e76f945cfa89dd41a79",
      "tree": "c23304b3e95e89a738f6abf1e2a12dda2d0f2cef",
      "parents": [
        "15164ebe870590376b2286b09dc97890a07dd373"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Jan 12 01:30:44 2026 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Jan 12 01:32:25 2026 +0100"
      },
      "message": "plist: make plist_data_compare NULL-safe\n\nEnsure plist_data_compare safely handles NULL inputs by normalizing\nNULL data to empty values and avoiding invalid dereferences.\n"
    },
    {
      "commit": "15164ebe870590376b2286b09dc97890a07dd373",
      "tree": "22b75304e7d19eff3f22bc23edb4471b2d86dc1d",
      "parents": [
        "b32b370d8d44fa7cc9d3478b9e19f3abaa43d3c2"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Dec 08 02:03:27 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Dec 08 02:03:27 2025 +0100"
      },
      "message": "bplist: Fix offset_table range check\n\nCredit to OSS-Fuzz\n"
    },
    {
      "commit": "b32b370d8d44fa7cc9d3478b9e19f3abaa43d3c2",
      "tree": "9683e796241b4d2665c8247dc7745b8f0289567b",
      "parents": [
        "b020cf26b8f35aa82a091e02945325af4b2534b0"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Dec 05 21:33:24 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Dec 05 21:33:24 2025 +0100"
      },
      "message": "test: Fix ostep-invalid-types test case\n"
    },
    {
      "commit": "b020cf26b8f35aa82a091e02945325af4b2534b0",
      "tree": "fa8d6c9f11dbb2099ef2f6df71d7583272869e3e",
      "parents": [
        "18e5b22a71f85091127cc063db79c8df687c582c"
      ],
      "author": {
        "name": "Tsuk1ha",
        "email": "txw5ifd9@duck.com",
        "time": "Wed Aug 20 23:04:42 2025 +0800"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Dec 05 00:43:45 2025 +0100"
      },
      "message": "cpp: Add `this` comparison to `operator\u003d` copy assign\n"
    },
    {
      "commit": "18e5b22a71f85091127cc063db79c8df687c582c",
      "tree": "a9aa7eaf90c6cc85a7d2b2c51a73c99af7a714eb",
      "parents": [
        "2c50f76481429c495628c56223b7810c5af0b2cd"
      ],
      "author": {
        "name": "Ankur Tyagi",
        "email": "ankur.tyagi85@gmail.com",
        "time": "Thu Nov 20 16:01:58 2025 +1300"
      },
      "committer": {
        "name": "Ankur Tyagi",
        "email": "ankur.tyagi85@gmail.com",
        "time": "Thu Nov 20 16:01:58 2025 +1300"
      },
      "message": "test: fix operator error\n\nOtherwise test fail with error [: -neq: binary operator expected\n\nSigned-off-by: Ankur Tyagi \u003cankur.tyagi85@gmail.com\u003e\n"
    },
    {
      "commit": "2c50f76481429c495628c56223b7810c5af0b2cd",
      "tree": "203ab1a65f8e1f9631c53fa2983d71d760c209cc",
      "parents": [
        "438f01bad1437a15d35fa102bcde693171f03074"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Nov 14 20:07:02 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Nov 14 20:11:43 2025 +0100"
      },
      "message": "xplist: Allow empty key entry in PLIST_DICT\n\nEven though this is weird, the DTD allows it. This commit will also make\nthe XML output write `\u003ckey/\u003e` and `\u003cstring/\u003e` instead of `\u003ckey\u003e\u003c/key\u003e` and `\u003cstring\u003e\u003c/string\u003e`\nin case of empty key/string node.\n"
    },
    {
      "commit": "438f01bad1437a15d35fa102bcde693171f03074",
      "tree": "c7bdc31815122f333b7527ed54a116f8a2fc5e78",
      "parents": [
        "613a76fb86294aa9ebff172932978c67b4d3cc3d"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:50:38 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:50:38 2025 +0100"
      },
      "message": "plistutil: (partially) Fix processing extremely large files\n\nThanks to @ylwango613 for reporting.\n"
    },
    {
      "commit": "613a76fb86294aa9ebff172932978c67b4d3cc3d",
      "tree": "405c6833399282635606d59de5facac71d378884",
      "parents": [
        "2bcc19589d9f34bb25f04bd0d4b755bbe06c9271"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:43:35 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:43:35 2025 +0100"
      },
      "message": "xplist: Fix possible integer overflow\n\nThanks to @ylwango613 for reporting\n"
    },
    {
      "commit": "2bcc19589d9f34bb25f04bd0d4b755bbe06c9271",
      "tree": "495bcad75c4d6f8388a981576a86db96ffe3d80d",
      "parents": [
        "b5a9af880ffbdd5f310a2cd04c41cc86daac20cd"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:37:01 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:37:01 2025 +0100"
      },
      "message": "OpenStep: Fix possible integer overflow in node_from_openstep\n\nThanks to @ylwango613 for pointing this out!\n"
    },
    {
      "commit": "b5a9af880ffbdd5f310a2cd04c41cc86daac20cd",
      "tree": "8ece25971f81b7118bfc75a0ef24c53c74c5177e",
      "parents": [
        "3588b4dbdb3be8648b47333b97e063c19d7ce9ae"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:31:30 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:33:48 2025 +0100"
      },
      "message": "time64: Assert if date is pointing to NULL\n\nGiven the fact that timegm64 is only invoked with a valid pointer,\nthis should never trigger.\n"
    },
    {
      "commit": "3588b4dbdb3be8648b47333b97e063c19d7ce9ae",
      "tree": "2e6898e2831e77cb52937378fa0be0c392e48aa4",
      "parents": [
        "543e20b9d792bb16d6b3c594da129448f74142c5"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:23:56 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Oct 29 16:23:56 2025 +0100"
      },
      "message": "Use sufficiently large data type for indexes/position counters\n"
    },
    {
      "commit": "543e20b9d792bb16d6b3c594da129448f74142c5",
      "tree": "fee9ee6e45bccfca66f1fdcf380384f7b6cd24d0",
      "parents": [
        "d9958ba8fd366e1092f0f4d07717227689adce2b"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Oct 23 03:59:30 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Oct 23 03:59:30 2025 +0200"
      },
      "message": "docs: Fix CSS\n"
    },
    {
      "commit": "d9958ba8fd366e1092f0f4d07717227689adce2b",
      "tree": "87df8ceedc17afc4ef8f323be6ccb45756e76aa9",
      "parents": [
        "7355dc8e8344f00fae0e24db72e461d985eb6381"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Oct 23 01:00:14 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Oct 23 01:00:14 2025 +0200"
      },
      "message": "Update documentation style\n"
    },
    {
      "commit": "7355dc8e8344f00fae0e24db72e461d985eb6381",
      "tree": "604cc49a3db1ea0146b540638ba6b2a36656e24d",
      "parents": [
        "91ba4263dd795f83eaa9c43e52c3be55e4f382a6"
      ],
      "author": {
        "name": "Bing Ye",
        "email": "yebingcrack@gmail.com",
        "time": "Wed Aug 20 22:34:10 2025 +0800"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Sep 27 01:49:33 2025 +0200"
      },
      "message": "Fix Integer constructor to copy plist node\n\nUpdated the Integer(const PList::Integer\u0026) constructor to free the existing plist node and copy the node from the input object, ensuring correct initialization.\n"
    },
    {
      "commit": "91ba4263dd795f83eaa9c43e52c3be55e4f382a6",
      "tree": "8bb170d255d20c8f13dac49c9d64c6cbee8409d3",
      "parents": [
        "c38ad1678887412674552a9c44a7e91ef767b79e"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Sep 12 12:44:39 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Sep 12 12:44:39 2025 +0200"
      },
      "message": "Fix proper use of calloc\n"
    },
    {
      "commit": "c38ad1678887412674552a9c44a7e91ef767b79e",
      "tree": "41ad0f6cfd8691c09cda83b4d2be6d1b0efb6ba1",
      "parents": [
        "20d5d57e92e0f84a80c0e0b420b0001a10e9d5d2"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Sep 08 00:13:25 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Sep 08 00:13:25 2025 +0200"
      },
      "message": "Add FUNDING\n"
    },
    {
      "commit": "20d5d57e92e0f84a80c0e0b420b0001a10e9d5d2",
      "tree": "d72e7a415ffab2988e6bacc566446d7508016955",
      "parents": [
        "cf5897a71ea412ea2aeb1e2f6b5ea74d4fabfd8c"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Jul 11 00:34:33 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Jul 11 00:34:33 2025 +0200"
      },
      "message": "[github-actions] Update build workflow to use windows-latest\n"
    },
    {
      "commit": "cf5897a71ea412ea2aeb1e2f6b5ea74d4fabfd8c",
      "tree": "4dd07870482794e7c6584a7ed9cb57aae3413572",
      "parents": [
        "b8cfac2aae312225ffb9bee944a4d84dbb73fbcd"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed May 14 10:23:37 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed May 14 10:23:37 2025 +0200"
      },
      "message": "Silence deprecation warning by using underlying code directly\n\nplist_date_val_compare calls plist_get_date_val which is now marked\ndeprecated. To avoid compiler warnings during build, we use the underlying\nimplementation directly instead of calling the function to work around it.\n"
    },
    {
      "commit": "b8cfac2aae312225ffb9bee944a4d84dbb73fbcd",
      "tree": "5617992d4aec679c90c21fe3ee8c0a1d3b3da0e5",
      "parents": [
        "e255ed0727cd8734520d4e105bd2327520323b9d"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:37:14 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:37:14 2025 +0200"
      },
      "message": "Updated NEWS for release\n"
    },
    {
      "commit": "e255ed0727cd8734520d4e105bd2327520323b9d",
      "tree": "1901d18586a017f74e7538fa27871c925aa9a171",
      "parents": [
        "cb76e4da84c61609c13e84c922f14a27b8348a36"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:36:59 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:36:59 2025 +0200"
      },
      "message": "Update soversion for release\n"
    },
    {
      "commit": "cb76e4da84c61609c13e84c922f14a27b8348a36",
      "tree": "6f0057efd11780ec38da6e8b686726f51bd10f30",
      "parents": [
        "d7fe479707af57aeedf7e41c08e7fb698cd2e2a3"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:34:32 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:34:32 2025 +0200"
      },
      "message": "Add plist_new_unix_date, plist_get_unix_date_val, plist_set_unix_date_val functions\n\nThese functions work with int64_t values representing a UNIX timestamp instead\nof using the \u0027MAC epoch\u0027. They should be used instead of plist_new_date,\nplist_get_date_val, and plist_set_date_val, which are now marked deprecated\nand might be removed in a future version of libplist.\n"
    },
    {
      "commit": "d7fe479707af57aeedf7e41c08e7fb698cd2e2a3",
      "tree": "c50a5f91e2729fcedeb12871633e7ab15295cc19",
      "parents": [
        "eee2e519e9ecccca038f93b6f8e5dd3c0082fe89"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:32:50 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 13 18:32:50 2025 +0200"
      },
      "message": "cython: Fix build with cython 3.1+\n"
    },
    {
      "commit": "eee2e519e9ecccca038f93b6f8e5dd3c0082fe89",
      "tree": "fe6bb40843f202129706cd46e17215fc4e4fbf82",
      "parents": [
        "d031e94d7aee14c4e7646e67623c94e6164b99e3"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 12 11:26:13 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 12 11:27:35 2025 +0200"
      },
      "message": "Fix plist_set_date_val to use correct size for data storage\n\nOtherwise the internal assertion will trigger since the incorrect\nsize will be checked against.\n\nThanks to @michaelwright235, @guyingzhao, and others for pointing this out!\n"
    },
    {
      "commit": "d031e94d7aee14c4e7646e67623c94e6164b99e3",
      "tree": "2dd944a09ff0ef4f76ce91527744e6720ecb0e90",
      "parents": [
        "1aae1e5b7d8ee26c626c126fa64392a5ef949f42"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Sun Apr 06 12:38:45 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 12:38:45 2025 +0200"
      },
      "message": "C++: Data: Add const char* constructor\n"
    },
    {
      "commit": "1aae1e5b7d8ee26c626c126fa64392a5ef949f42",
      "tree": "f638aaea20326387c7475c4ebda436b9aac5b5c7",
      "parents": [
        "464382e6f835dd54eeea9e3ed7c1c8d2fb25dfd0"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Sun Apr 06 12:37:05 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 12:37:05 2025 +0200"
      },
      "message": "C++: Add f/Front() and b/Back() to Array to access first/last element\n"
    },
    {
      "commit": "464382e6f835dd54eeea9e3ed7c1c8d2fb25dfd0",
      "tree": "f08ebe4c827df4f49c87662dcad1ec8d8e7b802e",
      "parents": [
        "e6f3c6c62111b37cc97db2d61a1c765695ee401a"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Sun Apr 06 12:25:02 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 12:27:40 2025 +0200"
      },
      "message": "C++: Dictionary: Update template definition for better readability\n"
    },
    {
      "commit": "e6f3c6c62111b37cc97db2d61a1c765695ee401a",
      "tree": "ea39e49b6587443d070a0edeccef6c8dffe35c8e",
      "parents": [
        "ed8a73301b844bf5f7efd9cd437c9c0765a49a88"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Sun Apr 06 12:18:23 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 12:18:23 2025 +0200"
      },
      "message": "C++: Array: Add const Node\u0026 variants to Append, Insert\n"
    },
    {
      "commit": "ed8a73301b844bf5f7efd9cd437c9c0765a49a88",
      "tree": "803d3f9bc1b08bba8ad5f921da42f42c297a9905",
      "parents": [
        "31f1a810e5264ef970bab17d517692ef906470e1"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:48:14 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:48:14 2025 +0200"
      },
      "message": "C++: Add \u003d operator to String class\n"
    },
    {
      "commit": "31f1a810e5264ef970bab17d517692ef906470e1",
      "tree": "672bd841e21fb43fe8e7f8c7ddf9333d687c5a6d",
      "parents": [
        "8e310421adfa157a0a62c903b0bcd83cf27c3f46"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Sun Apr 06 11:44:13 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:44:13 2025 +0200"
      },
      "message": "C++: Add const char* constructor to String class\n"
    },
    {
      "commit": "8e310421adfa157a0a62c903b0bcd83cf27c3f46",
      "tree": "4b5822d46eb5be76109f3cc3fa879ad376176312",
      "parents": [
        "636ec1f53bf3087cdd33eb447d8a066ba80ae8f5"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:36:18 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:36:18 2025 +0200"
      },
      "message": "C++: Add new Structure::FromMemory()\n"
    },
    {
      "commit": "636ec1f53bf3087cdd33eb447d8a066ba80ae8f5",
      "tree": "3b29352623176b6831aaa30af4ddde7a5d7964fe",
      "parents": [
        "a6afb2229d14981bff00de103ecec397bc067e5a"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:34:09 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 11:34:09 2025 +0200"
      },
      "message": "C++: Explicitly initialize base class in copy constructor\n"
    },
    {
      "commit": "a6afb2229d14981bff00de103ecec397bc067e5a",
      "tree": "a2bf09201c5b4c1eebc33326a9edb168905ff0e2",
      "parents": [
        "02ceecad2a885f031d2238c644772055bcb42548"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 10:42:25 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 06 10:42:25 2025 +0200"
      },
      "message": "C++: Fix bug in array_fill helper function\n"
    },
    {
      "commit": "02ceecad2a885f031d2238c644772055bcb42548",
      "tree": "109a571cc10862bcbfa029699bc1d3f518c34897",
      "parents": [
        "228a3050695d222dc77e2cab9993396e045dcdfb"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Apr 05 14:29:59 2025 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Apr 05 14:29:59 2025 +0200"
      },
      "message": "[github-actions] cifuzz: Update upload-artifact to v4\n"
    },
    {
      "commit": "228a3050695d222dc77e2cab9993396e045dcdfb",
      "tree": "b924253cc029e6873aaaccf1f98ff43aae6af092",
      "parents": [
        "5ea6de69afcf11f2d2e59258cb055a5b1fdb5f82"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Mar 27 00:44:24 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Mar 27 00:44:24 2025 +0100"
      },
      "message": "Fix segmentation fault when calling plist_sort() on an empty dictionary\n\nCredit to @Anza2001\n"
    },
    {
      "commit": "5ea6de69afcf11f2d2e59258cb055a5b1fdb5f82",
      "tree": "adf925cb6b61b5279c2ad3627b2fd7bc48b34300",
      "parents": [
        "d40f03e4090edafea75f04a1697ef0384231d333"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Mar 01 23:56:06 2025 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Mar 01 23:56:06 2025 +0100"
      },
      "message": "C++: Use `free()` instead of `delete` for C things\n"
    },
    {
      "commit": "d40f03e4090edafea75f04a1697ef0384231d333",
      "tree": "e3915131a791b3ce5669ee7938ff4eb4f2c5bbba",
      "parents": [
        "02be84957d44ce68dcf81bada0d3250d4d81395a"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Fri Feb 28 00:17:57 2025 +0800"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Mar 01 23:42:06 2025 +0100"
      },
      "message": "C++: Add more convenience functions to the interface\n"
    },
    {
      "commit": "02be84957d44ce68dcf81bada0d3250d4d81395a",
      "tree": "9a74cbe22aced4c2b410ce883fb2834144399085",
      "parents": [
        "44099d4b79c8d6a7d599d652ebef62db8dae6696"
      ],
      "author": {
        "name": "guyingzhao",
        "email": "572488191@qq.com",
        "time": "Mon Feb 24 23:01:20 2025 +0800"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat Mar 01 23:17:04 2025 +0100"
      },
      "message": "C++: Fix String::GetValue memory leaking and suport assignment of const char*\n"
    },
    {
      "commit": "44099d4b79c8d6a7d599d652ebef62db8dae6696",
      "tree": "402e253465032f72fe6af2fa62816360abf273a2",
      "parents": [
        "e3ca6af2c580c0b748a5635c15b973094765abbf"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Dec 03 02:31:03 2024 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Dec 03 02:31:03 2024 +0100"
      },
      "message": "Remove pthread dependency\n"
    },
    {
      "commit": "e3ca6af2c580c0b748a5635c15b973094765abbf",
      "tree": "345ae08b449f18f2c790d0efdf2543ff778261f9",
      "parents": [
        "8dee549fd286ab152e94428f38eae6edac1bb746"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Dec 03 02:28:15 2024 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Dec 03 02:28:15 2024 +0100"
      },
      "message": "configure: Allow building the library without tool(s)\n"
    },
    {
      "commit": "8dee549fd286ab152e94428f38eae6edac1bb746",
      "tree": "25930c4a4a77f8bedb69b60cbdb14163fd1cc331",
      "parents": [
        "c1e3868485c16292d1c7c69f8dc891fd378286b1"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Dec 02 05:59:09 2024 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Dec 02 05:59:09 2024 +0100"
      },
      "message": "configure: Removed unused check\n"
    },
    {
      "commit": "c1e3868485c16292d1c7c69f8dc891fd378286b1",
      "tree": "835fef5c406e59a3e1a735571ae451f1a819e9e8",
      "parents": [
        "581b3e23a72ab54fda875ca447b4e492051bbd1c"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Nov 29 02:58:51 2024 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Nov 29 02:58:51 2024 +0100"
      },
      "message": "Updated ax_python_devel.m4\n"
    },
    {
      "commit": "581b3e23a72ab54fda875ca447b4e492051bbd1c",
      "tree": "5c606b4303f8ffc7062bb9bbaa4ae2147dfa4423",
      "parents": [
        "3d61170bbb1c69e7f85c33e3771e006491994d39"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Nov 29 01:20:23 2024 +0100"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri Nov 29 01:20:23 2024 +0100"
      },
      "message": "[github-actions] Run build workflow on pull_request\n"
    },
    {
      "commit": "3d61170bbb1c69e7f85c33e3771e006491994d39",
      "tree": "cb89d15a5c5ddad38f83a87e73445899661f4479",
      "parents": [
        "6eff9eb548ffa00bd5aa310ed4bddc5ab0ed71cc"
      ],
      "author": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Fri Nov 29 01:13:40 2024 +0100"
      },
      "committer": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Fri Nov 29 01:13:40 2024 +0100"
      },
      "message": "Add missing cast in UINT_TO_HOST\n"
    },
    {
      "commit": "6eff9eb548ffa00bd5aa310ed4bddc5ab0ed71cc",
      "tree": "7d022b4f3ecea1e525b3f24cd2f2d4b81b17c603",
      "parents": [
        "1813edad70efd32feba4f5778536de264241132e"
      ],
      "author": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 16:47:57 2024 +0100"
      },
      "committer": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 16:47:57 2024 +0100"
      },
      "message": "Use listplist_version function instead of PACKAGE_VERSION in plistutil\n"
    },
    {
      "commit": "1813edad70efd32feba4f5778536de264241132e",
      "tree": "bcfb81fe083df54bce92ea0d78f6d61067914e8a",
      "parents": [
        "b611aa62b8373f6d47bf3528782550a2667cc0f0"
      ],
      "author": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 16:22:09 2024 +0100"
      },
      "committer": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 16:22:09 2024 +0100"
      },
      "message": "Fix warnings on MSVC\n"
    },
    {
      "commit": "b611aa62b8373f6d47bf3528782550a2667cc0f0",
      "tree": "e877dd21834b35a880a9306b6c3ba4223ea573a3",
      "parents": [
        "8f24c4876a32b4f19e459bedd1fdbbc54cb0daa9"
      ],
      "author": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 15:39:51 2024 +0100"
      },
      "committer": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 15:39:51 2024 +0100"
      },
      "message": "Fix compilation on MSVC\n"
    },
    {
      "commit": "8f24c4876a32b4f19e459bedd1fdbbc54cb0daa9",
      "tree": "4316563019acbd85e277422afe5b687959f2e940",
      "parents": [
        "3a1404c2e87daff1eb45c3f21182b7ede7a7a82b"
      ],
      "author": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 15:16:54 2024 +0100"
      },
      "committer": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 15:16:54 2024 +0100"
      },
      "message": "Switch from detecting little endian (common) to detecting big endian (rare)\n\nThis prevents a bug class where we bswap things when __LITTLE_ENDIAN__ is not defined.\nAlmost all modern systems are little endian, so detecting __BIG_ENDIAN__ is a better strategy.\n"
    },
    {
      "commit": "3a1404c2e87daff1eb45c3f21182b7ede7a7a82b",
      "tree": "2b20c20901e6275d24e1eb7424999c02d29978d1",
      "parents": [
        "a5df0a66409e565a46f6f73f988d3496b991c7c0"
      ],
      "author": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 14:34:21 2024 +0100"
      },
      "committer": {
        "name": "Duncan Ogilvie",
        "email": "mr.exodia.tpodt@gmail.com",
        "time": "Thu Nov 28 14:34:21 2024 +0100"
      },
      "message": "Switch to more generic global initializer method\n"
    },
    {
      "commit": "a5df0a66409e565a46f6f73f988d3496b991c7c0",
      "tree": "58a85b821e3c1ae38f69eb131d11507c261804c8",
      "parents": [
        "e8791e2d8b1d1672439b78d31271a8cf74d6a16d"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Oct 22 19:35:40 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Oct 22 19:35:40 2024 +0200"
      },
      "message": "Update README\n"
    },
    {
      "commit": "e8791e2d8b1d1672439b78d31271a8cf74d6a16d",
      "tree": "f7be6cff3a64116bce13d8538476c4ce278af5c5",
      "parents": [
        "e3568d816efcae05d017900845009d1cc6258fca"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun May 19 13:39:25 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun May 19 13:39:25 2024 +0200"
      },
      "message": "[github-actions] codeql-analysis: Update actions to newer version\n"
    },
    {
      "commit": "e3568d816efcae05d017900845009d1cc6258fca",
      "tree": "f992ce218588e61c9f0f72c4ed5f3b49b8d2bb6b",
      "parents": [
        "2117b8fdb6b4096455bd2041a63e59a028120136"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 14 10:17:13 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue May 14 10:17:13 2024 +0200"
      },
      "message": "json: Allow e+/E+ in exponent as per RFC 8259\n"
    },
    {
      "commit": "2117b8fdb6b4096455bd2041a63e59a028120136",
      "tree": "c8d7979d16d3d0f044210fae718249517211f365",
      "parents": [
        "c96b1ad1422ed529970d54b7d1e9c3908aee4033"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 13 19:42:53 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 13 19:42:53 2024 +0200"
      },
      "message": "Updated NEWS for release\n"
    },
    {
      "commit": "c96b1ad1422ed529970d54b7d1e9c3908aee4033",
      "tree": "67d3aafca0b3cec06d109a5ecec1c504a2773ded",
      "parents": [
        "1327c87bf92f1d51286e3172c1047a8a47c5ee3a"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 13 19:39:53 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 13 19:39:53 2024 +0200"
      },
      "message": "Update soversion for release\n"
    },
    {
      "commit": "1327c87bf92f1d51286e3172c1047a8a47c5ee3a",
      "tree": "8edf522f2d5b749027810c73b55270a3d3477dc3",
      "parents": [
        "06877b5ecb9704baded1160a149912fad8141a39"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 13 19:38:22 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon May 13 19:38:22 2024 +0200"
      },
      "message": "Revert \"Change API around #PLIST_DATA to use uint8_t instead of char arrays\"\n\nThis reverts commit a91f5740d100414a76959714b819422ee5b2d8a8.\n"
    },
    {
      "commit": "06877b5ecb9704baded1160a149912fad8141a39",
      "tree": "ecdb31ea3835f2410d64f545eaf754487f629c0b",
      "parents": [
        "0e7657e24d76a3b52b2b305c488566fe65b737b1"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat May 04 13:25:03 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat May 04 13:25:03 2024 +0200"
      },
      "message": "Updated NEWS for release\n"
    },
    {
      "commit": "0e7657e24d76a3b52b2b305c488566fe65b737b1",
      "tree": "b862c9aaa5bb3eed797d9d6acf25bcf32d96ce75",
      "parents": [
        "5461edafb3e45c0d3cd3338cdede32acdb2aad5b"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat May 04 13:22:01 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat May 04 13:22:01 2024 +0200"
      },
      "message": "Bump soversion for release\n"
    },
    {
      "commit": "5461edafb3e45c0d3cd3338cdede32acdb2aad5b",
      "tree": "588b4ca2478be2dcb801d522c0eb0b47a70288f0",
      "parents": [
        "f8be42eaefe50ed4275bb86573ed44088ffab6c5"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Apr 30 10:30:38 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Apr 30 10:30:38 2024 +0200"
      },
      "message": "[github-actions] Fix cython installation for macOS build\n"
    },
    {
      "commit": "f8be42eaefe50ed4275bb86573ed44088ffab6c5",
      "tree": "131e0fd85ec985a3d90df4166f703a966a78fbb2",
      "parents": [
        "0b73e02a2b9b50daeb95b63b39e9496c8899e33d"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Apr 18 10:18:17 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Thu Apr 18 10:18:17 2024 +0200"
      },
      "message": "Add PLIST_DICT convenience functions for different queries/operations\n"
    },
    {
      "commit": "0b73e02a2b9b50daeb95b63b39e9496c8899e33d",
      "tree": "5728baa03d84a3ba8b79b610c115e381da430dae",
      "parents": [
        "a91f5740d100414a76959714b819422ee5b2d8a8"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Apr 15 20:05:56 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Apr 15 20:05:56 2024 +0200"
      },
      "message": "automake: Prevent `dist` or `distcheck` when uncommitted changes are present\n"
    },
    {
      "commit": "a91f5740d100414a76959714b819422ee5b2d8a8",
      "tree": "087400da3ed5af11ef1f4806ffc58a9a3a090323",
      "parents": [
        "612cdf3ffd3e8c200e4a21ec15e3b3f0af170b42"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 14 18:19:14 2024 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sun Apr 14 18:19:14 2024 +0200"
      },
      "message": "Change API around #PLIST_DATA to use uint8_t instead of char arrays\n\nThis makes it more obvious that it is arbitrary data and not necessarily\na string value.\n"
    }
  ],
  "next": "612cdf3ffd3e8c200e4a21ec15e3b3f0af170b42"
}
