)]}'
{
  "log": [
    {
      "commit": "fe3dc34dc3484006e12b403f7ceb06f0ad40b6f4",
      "tree": "fe539116714d8428c8f75c66d80eada3e2b73d81",
      "parents": [
        "93133cb7288062c3598083619983447a514af452"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Sep 30 01:37:53 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Sep 30 01:37:53 2026 +0200"
      },
      "message": "Updated NEWS for release\n"
    },
    {
      "commit": "93133cb7288062c3598083619983447a514af452",
      "tree": "6f385e5464c6d1b33b6a0402915d93ac95881d3f",
      "parents": [
        "fba74cf8bd9696b9b7f42a8cbb9e16dd065b0a83"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Sep 30 01:34:04 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Wed Sep 30 01:34:04 2026 +0200"
      },
      "message": "Bump soversion for release\n"
    },
    {
      "commit": "fba74cf8bd9696b9b7f42a8cbb9e16dd065b0a83",
      "tree": "89ebb7b5a8ca5dfaa2e0e57887ae846ac147712a",
      "parents": [
        "2b0754dee5c5b9c4b3d5114359436e7b737a57f4"
      ],
      "author": {
        "name": "Alberto Maschietto",
        "email": "albertomaschietto9@gmail.com",
        "time": "Tue Sep 08 01:12:20 2026 +0400"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Sep 29 17:00:18 2026 +0200"
      },
      "message": "plistutil: preserve binary data on Windows standard streams\n"
    },
    {
      "commit": "2b0754dee5c5b9c4b3d5114359436e7b737a57f4",
      "tree": "a9b97a6e6e3619377aebef853c422e9a6c5d2d48",
      "parents": [
        "bd68e726e45c10fd223814eaf6129e1bb2f7b022"
      ],
      "author": {
        "name": "zero",
        "email": "zero.kwok@foxmail.com",
        "time": "Tue Aug 25 18:05:34 2026 +0800"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Sep 29 16:58:36 2026 +0200"
      },
      "message": "plistutil: fix missing ssize_t definition when compiling with MSVC\n"
    },
    {
      "commit": "bd68e726e45c10fd223814eaf6129e1bb2f7b022",
      "tree": "139a2eba6ddd6d555fbd89bcbe75aadaaa3d0d01",
      "parents": [
        "be3a7ff2862868b4612d4c56edbd42e1d7dd7fdb"
      ],
      "author": {
        "name": "Arpit Jain",
        "email": "arpitjain099@gmail.com",
        "time": "Wed Jul 29 14:25:18 2026 +0900"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Sep 29 16:43:02 2026 +0200"
      },
      "message": "plist: fix inverted strcmp in string to boolean conversion\n\nplist_dict_get_bool() compared the string value with strcmp() but treated a\nnon-zero return as a match. strcmp() returns 0 on equality, so the conditions\nwere inverted: \"true\" produced 0, \"false\" produced 1, and any other string\nalso produced 1. The error branch could never be reached, since it required\nboth comparisons to return 0 at once.\n\nThe result is that the API returns the opposite of the stored value for both\nvalid boolean strings, and returns true for strings that are not booleans at\nall, instead of reporting the conversion error.\n\nCompare \u003d\u003d 0 in both conditions:\n\n  input          before   after\n  true           0        1\n  false          1        0\n  not-a-bool     1        error\n  TRUE           1        error\n  (empty)        1        error\n\nSigned-off-by: Arpit Jain \u003carpitjain099@gmail.com\u003e\n"
    },
    {
      "commit": "be3a7ff2862868b4612d4c56edbd42e1d7dd7fdb",
      "tree": "037fa437701d5e6fcaa74e60cb9094aea0862c56",
      "parents": [
        "f168c10b52325b00da6355989a18a11743b33f89"
      ],
      "author": {
        "name": "Jeewoong Kim",
        "email": "dnd414@gmail.com",
        "time": "Tue Jul 07 21:46:20 2026 +0900"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Sep 29 16:41:08 2026 +0200"
      },
      "message": "fuzz: add plist writer API fuzzer\n"
    },
    {
      "commit": "f168c10b52325b00da6355989a18a11743b33f89",
      "tree": "186ef3afe45963fcfca15daf8efebf0f2151360e",
      "parents": [
        "8b48fa72d359de89215f50cbf6ac8c77ae5de9b4"
      ],
      "author": {
        "name": "Comtea04",
        "email": "chase0414@naver.com",
        "time": "Sun Sep 27 15:06:22 2026 +0900"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Tue Sep 29 16:39:28 2026 +0200"
      },
      "message": "bytearray: Handle realloc() failure in byte_array_grow()\n\nbyte_array_grow() assigned the result of realloc() directly to\nba-\u003edata and increased the capacity even if realloc() failed, so the\nfollowing memcpy() in byte_array_append() wrote to NULL + len.\n\nOn failure, free the old buffer and leave the byte array in a failed\nstate (data \u003d\u003d NULL), which byte_array_append() already ignores. The\ncallers check for that state:\n\n- the writers (bin, xml, json, openstep and the text output formats)\n  return PLIST_ERR_NO_MEM instead of handing out a NULL/truncated buffer\n- node_to_xml() base64-encodes \u003cdata\u003e directly into the grown buffer,\n  so it must bail out there (only guarded by assert() before)\n- the OpenStep parser returns PLIST_ERR_NO_MEM for \u003chex data\u003e instead of\n  silently returning truncated data\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "8b48fa72d359de89215f50cbf6ac8c77ae5de9b4",
      "tree": "07c02aa1437e53e0994ef0ec89edf752c4b309a8",
      "parents": [
        "32428abacb909988e8e960a8845a6430b17b6a60"
      ],
      "author": {
        "name": "Comtea04",
        "email": "chase0414@naver.com",
        "time": "Sun Sep 27 15:06:22 2026 +0900"
      },
      "committer": {
        "name": "Comtea04",
        "email": "chase0414@naver.com",
        "time": "Sun Sep 27 15:06:22 2026 +0900"
      },
      "message": "ptrarray: Handle realloc() failure in ptr_array_insert()\n\nptr_array_insert() assigned the result of realloc() directly to\npa-\u003epdata and bumped the capacity without checking for failure, so on\nout-of-memory the old buffer was leaked and the following store or\nmemmove() wrote through a NULL pointer.\n\nKeep the old buffer on failure and return -1 from ptr_array_insert()\nand ptr_array_add(). The callers now handle the error:\n\n- the array lookup cache (plist.c) is dropped instead of silently going\n  out of sync with the node list; lookups then fall back to walking\n  the children, as they do before the cache exists\n- bplist parsing (used_indexes) and serialization (objects) return\n  PLIST_ERR_NO_MEM; ignoring the error in parse_bin_node_at_index()\n  would otherwise loop forever since the array never grows\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "32428abacb909988e8e960a8845a6430b17b6a60",
      "tree": "cf1d49ba8560c9c2458a1f35bc191ede793347c5",
      "parents": [
        "bd851a87ec93db2516455e982f121389a86fc0f7"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat May 23 00:52:53 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Sat May 23 00:52:53 2026 +0200"
      },
      "message": "[github-actions] Updated build workflow\n"
    },
    {
      "commit": "bd851a87ec93db2516455e982f121389a86fc0f7",
      "tree": "2634e22b57c2e04611573c4a3f03a6f96506d87b",
      "parents": [
        "024864926b1de278d6877a0864c1ca36f35c20e6"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 20:41:23 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 20:41:23 2026 +0200"
      },
      "message": "Print debug error message when encoutering invalid PLIST_DATE values\n"
    },
    {
      "commit": "024864926b1de278d6877a0864c1ca36f35c20e6",
      "tree": "01a10d2050d81764fc28483a473f52b73fc650ea",
      "parents": [
        "ba82092e43d4769dbc6f0557d58a243f93542486"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 19:23:23 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 19:23:23 2026 +0200"
      },
      "message": "bplist: Use format macro to use correct format in error message\n"
    },
    {
      "commit": "ba82092e43d4769dbc6f0557d58a243f93542486",
      "tree": "4054d7d4b701207f6a7def2799295557c5fdf68d",
      "parents": [
        "9711459dbed7d60bb00c7d2c052623e8489c88e1"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 19:20:51 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 19:20:51 2026 +0200"
      },
      "message": "common: validate PLIST_DATE values before Time64_T conversion\n\nAvoid undefined behavior when serializing malformed PLIST_DATE values\ncontaining NaN, infinity, or values outside the Time64_T range. Add a\nshared helper for checked date conversion and use it across writer paths.\n"
    },
    {
      "commit": "9711459dbed7d60bb00c7d2c052623e8489c88e1",
      "tree": "550cceb133bbff047ad5b8d7e0334596b252f7f2",
      "parents": [
        "389fab9a07baf3913c4214425e86cca588d559a1"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 18:46:02 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 18:46:02 2026 +0200"
      },
      "message": "refactor: centralize formatting helpers and harden out-plutil\n"
    },
    {
      "commit": "389fab9a07baf3913c4214425e86cca588d559a1",
      "tree": "79194d9bf12f11ac788c6ac7c8512c69ede90ed9",
      "parents": [
        "5546a8746558d088d90ba8f6cb52a50f886c9572"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 16:37:57 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 16:37:57 2026 +0200"
      },
      "message": "out-default: harden node serialization paths\n\nImprove robustness and memory safety in node_to_string() and dtostr():\n\n- add missing NULL and allocation checks\n- fix snprintf() error handling and signed/unsigned conversions\n- replace sprintf() with snprintf()\n- fix base64 buffer sizing\n- switch string offset tracking to size_t\n- improve malformed data handling for strings and data blobs\n"
    },
    {
      "commit": "5546a8746558d088d90ba8f6cb52a50f886c9572",
      "tree": "b66f9b4ab51736376f830770b4f16debb40970c1",
      "parents": [
        "9d4f14a0ba93dc39d516b5e1c1cd107693b81629"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 15:46:37 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 15:46:37 2026 +0200"
      },
      "message": "out-limd: Properly handle snprintf and some smaller improvements\n"
    },
    {
      "commit": "9d4f14a0ba93dc39d516b5e1c1cd107693b81629",
      "tree": "5b11003763da40aff38d607d31a0e7f6f3f013da",
      "parents": [
        "d35b31d0a2661b6346a1592a5eb7b70e66b2a141"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 15:00:16 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Fri May 22 15:00:16 2026 +0200"
      },
      "message": "out-limd: Fix memory buffer allocation size (#313)\n\nCredit to @Bri1987\n"
    },
    {
      "commit": "d35b31d0a2661b6346a1592a5eb7b70e66b2a141",
      "tree": "a65156248dfd4df7c9301daf2a786a3469586147",
      "parents": [
        "dddb76d74a646a7ec41cfa6b9f7772830b7acbd2"
      ],
      "author": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Apr 27 01:45:33 2026 +0200"
      },
      "committer": {
        "name": "Nikias Bassen",
        "email": "nikias@gmx.li",
        "time": "Mon Apr 27 01:45:33 2026 +0200"
      },
      "message": "Add error handling to all modification functions\n\nConvert all array/dict modification functions from void to plist_err_t return type:\n  - plist_array_set_item: replace at index n\n  - plist_array_append_item: append to end\n  - plist_array_insert_item: insert at position n\n  - plist_array_remove_item: remove item at index n\n  - plist_array_item_remove: remove item from its array parent\n  - plist_dict_set_item: replace or insert key/value\n  - plist_dict_remove_item: remove key/value pair\n  - plist_dict_merge: merge source dict into target\n\nReturns:\n  - PLIST_ERR_SUCCESS on success\n  - PLIST_ERR_INVALID_ARG for invalid arguments (NULL, wrong type, out of range, etc.)\n  - PLIST_ERR_NO_MEM on memory allocation failure\n  - PLIST_ERR_UNKNOWN on unexpected internal errors\n\nHeader documentation updated with full error code semantics for each function.\n"
    },
    {
      "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"
    }
  ],
  "next": "6eff9eb548ffa00bd5aa310ed4bddc5ab0ed71cc"
}
