)]}'
{
  "log": [
    {
      "commit": "51671f351f23d85f78c13c71b684d27987feb026",
      "tree": "750d92c10970b10ed30efebf055e34b4ac34f686",
      "parents": [
        "472f1dc3ae8c26a2a0255578421f0aa6f4891854"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 14 17:01:53 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 14 17:01:53 2026 +1000"
      },
      "message": "GEP-19: narrow two carve-outs that overstated the compatibility cost\n\nBoth were checked against the reference implementation and neither\nbreaks as much as the text claimed. In each case the implementation is\nmore backward-compatible than the document, so the document was wrong.\n\nColon-form empty literals. The text said `case []:` and `case [:]:`\nbecome compile-time errors because patterns require the arrow form.\nThey do not: a colon-form label is never read as a pattern, so both keep\ntheir legacy never-matching meaning and nothing that compiles today\nstops compiling. The reinterpretation applies to the arrow spellings\nalone.\n\nCall labels with a wildcard argument. The text gave `case foo(_) -\u003e` as\nthe example. That spelling is unaffected and still calls `foo`. The form\nthat does change is the capitalised one, `case Foo(_) -\u003e` where `Foo`\nnames a method rather than a type, since capitalisation is what tips the\nlabel into being read as a record pattern. Other pattern-shaped\narguments such as `var x` do not parse today, so they claim no existing\nmeaning and are not carve-outs at all.\n\nThe compatibility list is now two items rather than three, says so, and\nthe unchanged-forms table gains rows for lower-case `case foo(_)` and\nthe colon-form empty literals so the distinction is visible where\nreaders look for it.\n"
    },
    {
      "commit": "472f1dc3ae8c26a2a0255578421f0aa6f4891854",
      "tree": "da4414e9f017059fb99acfe3eb4e17c5ebf9c54a",
      "parents": [
        "9dca941b9582e70bcdf7c49cc1c9549cfc5286ad"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 14 15:51:23 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 14 15:56:46 2026 +1000"
      },
      "message": "GEP-19: reconcile the July reference-implementation learnings with the switch-position updates\n\nTwo sets of proposed changes had been written against different bases and\nneither had seen the other. The July branch (gep19refImplLearnings)\nrecorded what building the reference implementation taught us; the\nSeptember commit on asf-site recorded what GROOVY-12399, 12405, 12406 and\n12408 settled about switch position. They are largely complementary.\n\nTaken from July, verified against the current port where checkable:\n\n- Bracket-form assignment `def [...] \u003d expr` deferred pending review.\n  The implementation already omits it, so this is the document catching\n  up rather than a change of scope.\n- Pattern semantics the implementation settled: pattern labels are\n  arrow-only and a colon-form pattern label is an error; patterns and\n  legacy labels mix freely; patterns never match null, so a null subject\n  falls through and a legacy `case null` label still matches it, while\n  within a pattern a typed element does not match null and `var`, `def`\n  and `_` do; list and map matching rules; guards rejected on\n  legacy-shaped labels; the `instanceof` primitive-component divergence.\n- The rewritten Compilation section, including the measured 6x and 1.4x\n  figures and the note that SwitchBootstraps.typeSwitch waits on a\n  JDK 21+ target.\n- The fuller carve-out list, replacing the shorter September version.\n- The more precise JEP 507 row.\n\nKept from September, which July predates entirely:\n\n- Position, exhaustiveness and unmatched values: the rule that position\n  decides, the split whereby an expression is always exhaustive and a\n  statement only when it carries a pattern label, and the runtime\n  answers for an unmatched value and a null selector.\n- The Remaining work section: severity, deconstruction coverage,\n  `case null` as a trigger, control transfer in arrow arms, and the\n  minimum JDK question.\n\nAdjusted where July had gone stale:\n\n- It said a non-exhaustive switch warns. The implementation errors, and\n  whether that is right is now an open question, so the text says so and\n  points at Remaining work.\n- The header note said the implementation was developed against master.\n  It has been re-ported since, and the note now says its behaviour\n  records progress rather than a decision.\n- The two null passages are reconciled: Features defines the rule and\n  the later section refers back to it.\n\n"
    },
    {
      "commit": "9dca941b9582e70bcdf7c49cc1c9549cfc5286ad",
      "tree": "fbf0f57c758c8b574975f1cbee730bfc383266e8",
      "parents": [
        "badaf753de8440c6f307847850ff9f8615ead1ed"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 14 14:11:49 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 14 14:11:49 2026 +1000"
      },
      "message": "GEP-19 updates from GROOVY-12399/12405/12406/12408\n"
    },
    {
      "commit": "badaf753de8440c6f307847850ff9f8615ead1ed",
      "tree": "bc47517952362f3c5bef54ef4d12c2710cd0bdfc",
      "parents": [
        "d513dd5345929541fc6c3334fcd2a8134fc2d6bf"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Sep 13 22:08:58 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Sep 13 22:09:06 2026 +1000"
      },
      "message": "RC-2 changes\n"
    },
    {
      "commit": "d513dd5345929541fc6c3334fcd2a8134fc2d6bf",
      "tree": "53cb6619d77be417a2005391dfcd91d4b7c4aad5",
      "parents": [
        "ad21bec89b154d72bd09e5ef846e581e63d92f4a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Sep 13 20:58:47 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Sep 13 21:15:05 2026 +1000"
      },
      "message": "Release 6.0.0-RC-2: update sitemap"
    },
    {
      "commit": "ad21bec89b154d72bd09e5ef846e581e63d92f4a",
      "tree": "4035d4f57c93e796f3b794dd713d3e774060f694",
      "parents": [
        "06c72cc9ae85d537572bed38ae07a8234c0b8cb9"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Sep 11 20:48:48 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Sep 11 20:48:48 2026 +1000"
      },
      "message": "minor changes\n"
    },
    {
      "commit": "06c72cc9ae85d537572bed38ae07a8234c0b8cb9",
      "tree": "0c86e7fac66a0db5175bb376051d5e404412220e",
      "parents": [
        "8d7d6c2f215f7502e846c6c143893391a4579ce5"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Sep 09 13:30:46 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Sep 09 13:30:57 2026 +1000"
      },
      "message": "minor changes\n"
    },
    {
      "commit": "8d7d6c2f215f7502e846c6c143893391a4579ce5",
      "tree": "b35ff3031a395bbbe924764e44a18d0e1589c6e8",
      "parents": [
        "8a4863727c5bcceb2a6d703b56589e7122d3f587"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 07 21:42:39 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 07 21:47:49 2026 +1000"
      },
      "message": "Release 6.0.0-RC-1: update sitemap"
    },
    {
      "commit": "8a4863727c5bcceb2a6d703b56589e7122d3f587",
      "tree": "c397b247cd12a6091795bf360a5a5b592ffdb189",
      "parents": [
        "b91d4f73e7acf66b86c5e20bb0d6df082f5370dc"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 07 20:54:02 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 07 20:54:02 2026 +1000"
      },
      "message": "minor changes\n"
    },
    {
      "commit": "b91d4f73e7acf66b86c5e20bb0d6df082f5370dc",
      "tree": "b6a6b888ea5e6e7355b9cf8c84510ab764d032fc",
      "parents": [
        "408b85fea09a6d622e4b2ccfac152ca08b0841c9"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 07 15:35:52 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Sep 07 15:50:12 2026 +1000"
      },
      "message": "Release 5.1.2: update sitemap"
    },
    {
      "commit": "408b85fea09a6d622e4b2ccfac152ca08b0841c9",
      "tree": "4e34e7e0fa2baebfb4dd798f6e54dc4cee494a9d",
      "parents": [
        "f9a07c52018f62ac647dfa9326c8abf41ea1c3fa"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Sep 05 15:31:45 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Sep 05 15:31:45 2026 +1000"
      },
      "message": "minor changes\n"
    },
    {
      "commit": "f9a07c52018f62ac647dfa9326c8abf41ea1c3fa",
      "tree": "b8b2879f74c0397fe681e52f2cda6c245727cefa",
      "parents": [
        "a8c9cc7c16680365d9728075451adde1b6be0305"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Sep 05 11:04:06 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Sep 05 11:04:06 2026 +1000"
      },
      "message": "Optimization problems blog post updated for Groovy 6, Timefold 2.6 and OptaPlanner 10.2\n"
    },
    {
      "commit": "a8c9cc7c16680365d9728075451adde1b6be0305",
      "tree": "e823af44d637f3fa08625f7df098227740d1f4a6",
      "parents": [
        "181b02794ebf91ac03f05b85e428d5f33c40cfe6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Sep 05 06:40:46 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Sep 05 06:40:53 2026 +1000"
      },
      "message": "update release notes\n"
    },
    {
      "commit": "181b02794ebf91ac03f05b85e428d5f33c40cfe6",
      "tree": "5d2ed16eeebe426002dc70305d29fa05e1a49ef6",
      "parents": [
        "ab6a2419b366c33bdcc81dca86691ac504421327"
      ],
      "author": {
        "name": "Jochen Theodorou",
        "email": "blackdrag@gmx.org",
        "time": "Mon Aug 31 18:10:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 18:10:38 2026 +0200"
      },
      "message": "Create GEP-31.adoc (Realm based dynamic semantics)\n\nA new proposal for the realms idea from back in 2012, this time with a quite different and much more general concept. It no longer tries to redefine the current default MOP"
    },
    {
      "commit": "ab6a2419b366c33bdcc81dca86691ac504421327",
      "tree": "227f64bfe17b03ca11ae4ee87b7b1597ede324f5",
      "parents": [
        "c5bab426aad7da9ed1041e4685f6f1a3a3265abd"
      ],
      "author": {
        "name": "Jochen Theodorou",
        "email": "blackdrag@gmx.org",
        "time": "Mon Aug 31 18:02:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 18:02:27 2026 +0200"
      },
      "message": "Reject GEP-11.adoc\n\nGEP-11 is pretty outdated by now. A new approach is needed"
    },
    {
      "commit": "c5bab426aad7da9ed1041e4685f6f1a3a3265abd",
      "tree": "6358ed4b7e9e6772acb188156de0656f76294853",
      "parents": [
        "9312a4b68b67ed0166741a047062ab05725cbe5d"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 29 20:26:55 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 29 20:27:02 2026 +1000"
      },
      "message": "add hero-cards to release notes\n"
    },
    {
      "commit": "9312a4b68b67ed0166741a047062ab05725cbe5d",
      "tree": "67b4a49283efb485cf46eadf4ac377db61bca757",
      "parents": [
        "1a325857fdb35f885b7c8a6d303a3b76c6ce2c23"
      ],
      "author": {
        "name": "Keegan Witt",
        "email": "keeganwitt@gmail.com",
        "time": "Thu Aug 27 17:02:54 2026 -0400"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Aug 28 12:51:21 2026 +1000"
      },
      "message": "fix: LinkedIn links\n"
    },
    {
      "commit": "1a325857fdb35f885b7c8a6d303a3b76c6ce2c23",
      "tree": "355c4551620b70276f94c0492e7bb3d371d3b35c",
      "parents": [
        "32cae4f27c122945f3e0bbdcde239dba54406845"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 27 16:15:40 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 27 16:29:29 2026 +1000"
      },
      "message": "Release 6.0.0-beta-3: update sitemap"
    },
    {
      "commit": "32cae4f27c122945f3e0bbdcde239dba54406845",
      "tree": "c0a362b5c9b3285488d2f28a5b3ccd2c4e7c389f",
      "parents": [
        "e3b904e5f8af9afae62bf29a9b9d849b6f6fbbf6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 27 13:41:00 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 27 13:50:03 2026 +1000"
      },
      "message": "Release 5.1.1: update sitemap"
    },
    {
      "commit": "e3b904e5f8af9afae62bf29a9b9d849b6f6fbbf6",
      "tree": "183c724e6c3e55849683d60a182b058a760d6c22",
      "parents": [
        "57e62bc6ace08fb0e4f9f151b289f7f103c63e49"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 26 21:42:26 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 26 21:42:26 2026 +1000"
      },
      "message": "add jcuda example to matrix multiplication blog post\n"
    },
    {
      "commit": "57e62bc6ace08fb0e4f9f151b289f7f103c63e49",
      "tree": "fe2f925ef573120be88dd1a2505d646c1d6afd82",
      "parents": [
        "440fb396b62dd6b6a5ebb0cc3a8701749707141f"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 26 12:05:33 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 26 12:05:33 2026 +1000"
      },
      "message": "add groovy-csv examples\n"
    },
    {
      "commit": "440fb396b62dd6b6a5ebb0cc3a8701749707141f",
      "tree": "68c76cbef36ffd88a39e8155b70288c0a447496f",
      "parents": [
        "f0e6490e282ff46c04ee71faff12d5cdbfc7fd95"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 26 09:43:50 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 26 09:43:50 2026 +1000"
      },
      "message": "add groovy-csv examples\n"
    },
    {
      "commit": "f0e6490e282ff46c04ee71faff12d5cdbfc7fd95",
      "tree": "c0f4aa321977409671da81c4346d45afe9e928c9",
      "parents": [
        "880a113c52de849b6ad2e6b23d65e07f3bbef544"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 25 15:16:29 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 25 15:16:29 2026 +1000"
      },
      "message": "add groovy-csv examples\n"
    },
    {
      "commit": "880a113c52de849b6ad2e6b23d65e07f3bbef544",
      "tree": "c3b1905125e72b74287da91daf2cc706549f2236",
      "parents": [
        "6f73bbdf0275617733be8b437433f9649ca537ce"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 25 07:26:09 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 25 07:26:09 2026 +1000"
      },
      "message": "minor edits\n"
    },
    {
      "commit": "6f73bbdf0275617733be8b437433f9649ca537ce",
      "tree": "63add23f6e2a8b60f7bcfe7e722017fab7ddb311",
      "parents": [
        "a0b80ddc12f343fe91b9e453fd40128da0d4de5a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 16:38:23 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 16:38:23 2026 +1000"
      },
      "message": "minor edits\n"
    },
    {
      "commit": "a0b80ddc12f343fe91b9e453fd40128da0d4de5a",
      "tree": "a1e68d59c6252ca83c086c140297fda0f2816e2c",
      "parents": [
        "156a7cad87d1b453be6e1354924f3405bf35e895"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 14:42:53 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 14:42:53 2026 +1000"
      },
      "message": "update release notes\n"
    },
    {
      "commit": "156a7cad87d1b453be6e1354924f3405bf35e895",
      "tree": "573f01ffb868ea1202526901664074bf216d6fb3",
      "parents": [
        "6d5e94098d1d9973a452f239c92c87d4c2b68a15"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 09:19:56 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 09:19:56 2026 +1000"
      },
      "message": "update release notes\n"
    },
    {
      "commit": "6d5e94098d1d9973a452f239c92c87d4c2b68a15",
      "tree": "a656c1bf7eeb962ce6a432800b6cea32ffa13533",
      "parents": [
        "fc00e6527649fd2bfa90b5de9872ff44a046d7f6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 08:40:33 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 24 08:40:33 2026 +1000"
      },
      "message": "minor edits\n"
    },
    {
      "commit": "fc00e6527649fd2bfa90b5de9872ff44a046d7f6",
      "tree": "6bf5cbf949324e5733a6c4c95a0a519ea73dd6a3",
      "parents": [
        "8d2cb1d22518d257596b9eb92ea6e51fc4740ca8"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 22 20:05:54 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 22 20:05:54 2026 +1000"
      },
      "message": "fix date\n"
    },
    {
      "commit": "8d2cb1d22518d257596b9eb92ea6e51fc4740ca8",
      "tree": "31a48a9d74fe1f6878e794397d77b0cb2ce4a49f",
      "parents": [
        "589c7a740c6146e122b00a90f6e2afdac76f77cb"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 22 16:26:05 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 22 16:26:05 2026 +1000"
      },
      "message": "note about native code for deep learning post\n"
    },
    {
      "commit": "589c7a740c6146e122b00a90f6e2afdac76f77cb",
      "tree": "4eb31f476eae8a5c9731fcc9ff597c85c81d28d2",
      "parents": [
        "d8bb540fcd902fe21f3de4684f7d664c4892cb09"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:33:54 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:33:54 2026 +1000"
      },
      "message": "note about native code for deep learning post\n"
    },
    {
      "commit": "d8bb540fcd902fe21f3de4684f7d664c4892cb09",
      "tree": "733fde9f71b246589e9cb53777d740ab90831162",
      "parents": [
        "1b925e53cefcdf24dfc1a9ff3a7bfbc006345dce"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:33:32 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:33:32 2026 +1000"
      },
      "message": "note about native code for release notes\n"
    },
    {
      "commit": "1b925e53cefcdf24dfc1a9ff3a7bfbc006345dce",
      "tree": "4fdece69899d66e02be20a5735e35ccc2456c235",
      "parents": [
        "a64cda685542b84cfdf742646c49eeef30fe0609"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:07:42 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:07:42 2026 +1000"
      },
      "message": "update for Groovy 6\n"
    },
    {
      "commit": "a64cda685542b84cfdf742646c49eeef30fe0609",
      "tree": "a73574ac76a8fdb9cdeef5ea139f30e87d2a2183",
      "parents": [
        "6f49928407fdd75f3f6b97898bc6c812bacbe44c"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:06:31 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 20 15:06:31 2026 +1000"
      },
      "message": "fix flag typo\n"
    },
    {
      "commit": "6f49928407fdd75f3f6b97898bc6c812bacbe44c",
      "tree": "d406285d2c81a85092b7c608bab668e59a40d797",
      "parents": [
        "c81ddcf8e4adb3ce3582f870ff3e00f4fc5cee84"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 18 18:29:27 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 18 18:29:36 2026 +1000"
      },
      "message": "minor release note tweaks\n"
    },
    {
      "commit": "c81ddcf8e4adb3ce3582f870ff3e00f4fc5cee84",
      "tree": "1b17acc60ab198f75aa7a9d1facd46b2e6c787df",
      "parents": [
        "84967c05e9ca159ab0a300c4e07cea54f92089f8"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 18 18:29:04 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 18 18:29:36 2026 +1000"
      },
      "message": "add links to Apache projects\n"
    },
    {
      "commit": "84967c05e9ca159ab0a300c4e07cea54f92089f8",
      "tree": "482e32782bb574d8179a1568f87bbcbf3bcb8289",
      "parents": [
        "78e674b7eb6df440987f5fa4c48b0d8c0580f77e"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 18 12:11:08 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 18 18:29:36 2026 +1000"
      },
      "message": "Groovy 6 release notes: align Grape Maven to Grape Ivy for checksum failure\n"
    },
    {
      "commit": "78e674b7eb6df440987f5fa4c48b0d8c0580f77e",
      "tree": "ca4cac200473d19d94389a3c89ba71b080ca79c9",
      "parents": [
        "f43289be4f887b7efe6f408c00f5d72057d0a101"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 14:30:25 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 15:21:19 2026 +1000"
      },
      "message": "Release 6.0.0-beta-2: update sitemap"
    },
    {
      "commit": "f43289be4f887b7efe6f408c00f5d72057d0a101",
      "tree": "293a1abf751f398fa719df7f06bc171dc7d70142",
      "parents": [
        "8854286c0759a26727f93e06241c6ffef6bdc97c"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 14:05:49 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 14:21:57 2026 +1000"
      },
      "message": "Release 5.1.0: update sitemap"
    },
    {
      "commit": "8854286c0759a26727f93e06241c6ffef6bdc97c",
      "tree": "a3bf1932ef7794f875bbcff0518e9be977da020e",
      "parents": [
        "903edb548a68b3214abb06dcf58a453bc36065eb"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 08:05:23 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 08:05:23 2026 +1000"
      },
      "message": "make post no longer draft\n"
    },
    {
      "commit": "903edb548a68b3214abb06dcf58a453bc36065eb",
      "tree": "e8bb49658a973570707f77df712e80a626239da2",
      "parents": [
        "6f0926803f4cc69a0166e78d9881785e9ee94e29"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 07:57:00 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 15 07:57:00 2026 +1000"
      },
      "message": "add windows installers\n"
    },
    {
      "commit": "6f0926803f4cc69a0166e78d9881785e9ee94e29",
      "tree": "c9cf6a4faa28873f4837876f6633a14b872a9578",
      "parents": [
        "11f714a865061c2562b221e7287fd083a8cacfc7"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Aug 14 09:44:31 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Aug 14 09:44:31 2026 +1000"
      },
      "message": "tweaks to GeaFlow blog post\n"
    },
    {
      "commit": "11f714a865061c2562b221e7287fd083a8cacfc7",
      "tree": "b17e07701b234a0c4b051449eacb430a7db27f09",
      "parents": [
        "9c1062f7d4cea9bd9e1af243294f845147e1af9a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 22:04:51 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 22:04:51 2026 +1000"
      },
      "message": "draft blog post about GeaFlow\n"
    },
    {
      "commit": "9c1062f7d4cea9bd9e1af243294f845147e1af9a",
      "tree": "67d1d4ee8b3fd6ad44ab6657c026234104bf93cc",
      "parents": [
        "3f759c94d2bddb4ce082617ab88f56eccbd4da67"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 09:37:45 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 09:37:45 2026 +1000"
      },
      "message": "another image\n"
    },
    {
      "commit": "3f759c94d2bddb4ce082617ab88f56eccbd4da67",
      "tree": "88818f8e9c61bc4b59e7e2ec1743241e3b2c8f38",
      "parents": [
        "3ab2ea6d85de122697e8fe0020f9ab7fa702a196"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 09:16:51 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 09:16:51 2026 +1000"
      },
      "message": "a couple of images\n"
    },
    {
      "commit": "3ab2ea6d85de122697e8fe0020f9ab7fa702a196",
      "tree": "ec8e68459fabdd3e1b630ac3943568720c9d69da",
      "parents": [
        "b4813cf3112b898e99c0893e1aa89c3189bbd363"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:15:48 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:15:48 2026 +1000"
      },
      "message": "eye candy summaries for the AI post\n"
    },
    {
      "commit": "b4813cf3112b898e99c0893e1aa89c3189bbd363",
      "tree": "43a07e0a3df8387a79f765f2f8f943d8de3b1d55",
      "parents": [
        "8e773f94149fd0a94bbc25f8d5cf12be543a81e2"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:14:46 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:14:46 2026 +1000"
      },
      "message": "eye candy summaries for the AI post\n"
    },
    {
      "commit": "8e773f94149fd0a94bbc25f8d5cf12be543a81e2",
      "tree": "2df2e4558a93c5bdb2daedd62cce36dade5b6c32",
      "parents": [
        "fe7d80413640c82e3f2867c7cdb2337f6042ee1f"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:08:02 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:08:02 2026 +1000"
      },
      "message": "eye candy summaries for the AI post\n"
    },
    {
      "commit": "fe7d80413640c82e3f2867c7cdb2337f6042ee1f",
      "tree": "84551f53019845ae32cd301d8c9ee7524994fa73",
      "parents": [
        "0acb89915b0909c7df1ae3869426ffb61db92bc6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:04:31 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 08:04:31 2026 +1000"
      },
      "message": "eye candy summaries for the AI post\n"
    },
    {
      "commit": "0acb89915b0909c7df1ae3869426ffb61db92bc6",
      "tree": "9d5ecdc4b4a27003e55ba8310e503fbacf614379",
      "parents": [
        "74470a53375ed162b65321d307db3549dc169af4"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 06:55:28 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Aug 13 06:55:28 2026 +1000"
      },
      "message": "eye candy summaries for the AI post\n"
    },
    {
      "commit": "74470a53375ed162b65321d307db3549dc169af4",
      "tree": "72a7cff76d4e1e80bcc8859ed9e2c0d3351dcf4c",
      "parents": [
        "62e858859df93fec16e6daf591bbde2d0206ad24"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 12 15:01:28 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 12 15:01:28 2026 +1000"
      },
      "message": "update NullChecker post\n"
    },
    {
      "commit": "62e858859df93fec16e6daf591bbde2d0206ad24",
      "tree": "4d3a3842f2d332eb3510a40f7b842471c5730b44",
      "parents": [
        "909918f2b077dcb3973416d13c2c9b0c992f737c"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 12 15:01:13 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 12 15:01:13 2026 +1000"
      },
      "message": "add AI post\n"
    },
    {
      "commit": "909918f2b077dcb3973416d13c2c9b0c992f737c",
      "tree": "8a915749420debdf1970b35152d94c287de5cc37",
      "parents": [
        "146eaa15a5f3db32334d0021ac457e3d92b1541a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 12 13:37:14 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Aug 12 13:37:14 2026 +1000"
      },
      "message": "update release notes\n"
    },
    {
      "commit": "146eaa15a5f3db32334d0021ac457e3d92b1541a",
      "tree": "6166a123ac61a4c4c7bd296ff221d7710aa97193",
      "parents": [
        "8f5a40edce8d4fad45d33ffb93678e0f7f727163"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 11 17:22:00 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 11 17:22:00 2026 +1000"
      },
      "message": "update release notes\n"
    },
    {
      "commit": "8f5a40edce8d4fad45d33ffb93678e0f7f727163",
      "tree": "a2ec8408a49851082f3ce5cf1427080576b7dafa",
      "parents": [
        "c470e188f39d462abbb19ecc95b5cf24a88ef7e6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 10 16:43:12 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 10 16:43:19 2026 +1000"
      },
      "message": "Add 12240 to Groovy 6 rel notes\n"
    },
    {
      "commit": "c470e188f39d462abbb19ecc95b5cf24a88ef7e6",
      "tree": "4aa4c3e4617aa06e83ca83fa0e7cca2b81307224",
      "parents": [
        "66128c0fc72b8172528e548265393974e921fa1b"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 04 15:35:18 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 04 16:28:52 2026 +1000"
      },
      "message": "Release 6.0.0-beta-1: update sitemap"
    },
    {
      "commit": "66128c0fc72b8172528e548265393974e921fa1b",
      "tree": "988f4306fc7db42b49519f5c5de339de8024485b",
      "parents": [
        "5f064dd1dd0592b489baccdd16682df0acaeb7f4"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 04 10:40:53 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Aug 04 10:40:53 2026 +1000"
      },
      "message": "update GEP-28 based on mailing list feedback (thanks to Matt M)\n"
    },
    {
      "commit": "5f064dd1dd0592b489baccdd16682df0acaeb7f4",
      "tree": "f33453f1cd8fe0f4a5dbc6dfed9ed2eef7f886d5",
      "parents": [
        "6c76abf920e3b5b6d0a35902254e653fd5e86372"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 03 10:29:42 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 03 10:29:42 2026 +1000"
      },
      "message": "add link for external reference to release notes\n"
    },
    {
      "commit": "6c76abf920e3b5b6d0a35902254e653fd5e86372",
      "tree": "27edfb3bed88292bfc5c810ea58c1cf07513d3fa",
      "parents": [
        "a9a13af40744a21486a3efa01350a52bf3ddec4f"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 03 10:26:53 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Aug 03 10:26:53 2026 +1000"
      },
      "message": "tweak for Groovy 5/6 enhancements\n"
    },
    {
      "commit": "a9a13af40744a21486a3efa01350a52bf3ddec4f",
      "tree": "69791c8b0f4b0a65a7ced13d40b978c2dc1950b9",
      "parents": [
        "aff6067dd867362d6292c79fd2371b4190e2bebd"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 17:46:57 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 20:34:11 2026 +1000"
      },
      "message": "Add measured performance figures to Groovy 6 highlights\n"
    },
    {
      "commit": "aff6067dd867362d6292c79fd2371b4190e2bebd",
      "tree": "b0fc0db828c0c4c1b85e4536053c9b4154475efe",
      "parents": [
        "65102a7c3dc49c572a44d72fc199beb83322121c"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 13:33:47 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 15:52:51 2026 +1000"
      },
      "message": "Include GROOVY-12191 and a performance highlight subsection\n"
    },
    {
      "commit": "65102a7c3dc49c572a44d72fc199beb83322121c",
      "tree": "f4ddebfed7b845b64420117485e0a5ef50525f5f",
      "parents": [
        "acc0408ad42198bfb00e4ca3c766afed7ce7fd12"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 15:38:07 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 15:39:48 2026 +1000"
      },
      "message": "Release 5.0.8: update sitemap"
    },
    {
      "commit": "acc0408ad42198bfb00e4ca3c766afed7ce7fd12",
      "tree": "7940568bcfbf569c29fb78d73809ac40fa43af71",
      "parents": [
        "13fc1de353f7a4babdab77f4fe52c5303138c9e5"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 14:33:06 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Aug 01 14:43:57 2026 +1000"
      },
      "message": "Release 4.0.33: update sitemap"
    },
    {
      "commit": "13fc1de353f7a4babdab77f4fe52c5303138c9e5",
      "tree": "64ce3142188fe1d4ea3ce74b55dc12c2f731e50b",
      "parents": [
        "d109205e332f40bc33f8c215c2cbf243ee983a39"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 31 13:03:48 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 31 13:03:48 2026 +1000"
      },
      "message": "latest rel note additions\n"
    },
    {
      "commit": "d109205e332f40bc33f8c215c2cbf243ee983a39",
      "tree": "2de45c07731974b8a6305faa52bd252ab48bb9c2",
      "parents": [
        "af624cdd9ed717cd9462f86c411c222b70f559a3"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 30 14:30:37 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 30 14:30:37 2026 +1000"
      },
      "message": "latest rel note additions\n"
    },
    {
      "commit": "af624cdd9ed717cd9462f86c411c222b70f559a3",
      "tree": "c6e4e02b0493418d4cb67a08090fea4a4c49da7c",
      "parents": [
        "6baaf16242c8d60fb1602efc0d8ce6b657597fda"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 30 11:29:10 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 30 11:29:10 2026 +1000"
      },
      "message": "Add ClassTag to Groovy 6 rel notes\n"
    },
    {
      "commit": "6baaf16242c8d60fb1602efc0d8ce6b657597fda",
      "tree": "398dd7c2bf185128934fe7acdd058e01d6f420fb",
      "parents": [
        "59db0aff0c260ac14f96894e01c6b9b8669fcdd6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 29 12:38:52 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 29 12:38:52 2026 +1000"
      },
      "message": "Draft GEP-30 for consideration for Groovy 7\n"
    },
    {
      "commit": "59db0aff0c260ac14f96894e01c6b9b8669fcdd6",
      "tree": "26a5ac24b1bcbe3f75fd7b4eb9577e7fc379d89c",
      "parents": [
        "722a344e2b3be54ea26ab82db29a18d0f190f39e"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Jul 28 15:56:37 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Jul 28 15:56:37 2026 +1000"
      },
      "message": "Draft GEP-29 for consideration for Groovy 7\n"
    },
    {
      "commit": "722a344e2b3be54ea26ab82db29a18d0f190f39e",
      "tree": "83321ce076b42dd76d7cc4aad82d2926523db786",
      "parents": [
        "3595389364b6c4731e823a1a3dd63800b171c58e"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 26 20:51:51 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 26 20:51:51 2026 +1000"
      },
      "message": "Latest additions for Groovy 6\n"
    },
    {
      "commit": "3595389364b6c4731e823a1a3dd63800b171c58e",
      "tree": "f039446fcd3ca5dba3c0b27b6e061f553d8e34de",
      "parents": [
        "5d5fc8cd3fa4e8a19f77342831e7eb391bf05a5a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 26 20:29:54 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 26 20:29:54 2026 +1000"
      },
      "message": "Latest additions for Groovy 6\n"
    },
    {
      "commit": "5d5fc8cd3fa4e8a19f77342831e7eb391bf05a5a",
      "tree": "3a138b2356c72c8a45d2735a667c2c8af2fff774",
      "parents": [
        "a350336321bbb5e96fbc3ef771315ad6edd0a5b6"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 26 18:09:40 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 26 18:09:40 2026 +1000"
      },
      "message": "Latest additions for Groovy 6\n"
    },
    {
      "commit": "a350336321bbb5e96fbc3ef771315ad6edd0a5b6",
      "tree": "9488414aaddf7318b6a9855c47c0991ce6cab87f",
      "parents": [
        "e92adb5a8dfe358308490020f9cb212b80a838ac"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 25 13:04:26 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 25 13:04:26 2026 +1000"
      },
      "message": "Draft of GEP-28 for discussion\n"
    },
    {
      "commit": "e92adb5a8dfe358308490020f9cb212b80a838ac",
      "tree": "3d9d8913dc58ee47cc8709222ac87af62f2c3ca8",
      "parents": [
        "7b3bd4b1e5388621fad311760fa3ad353cb75120"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Jul 21 18:30:08 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Jul 21 18:30:08 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "7b3bd4b1e5388621fad311760fa3ad353cb75120",
      "tree": "2170cd5e82a89318bd9d7d793f82c115d43ae2a7",
      "parents": [
        "28dd9f258b740217c4177d3bbe547d0abb1ca1eb"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 16 19:10:17 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 16 19:10:17 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "28dd9f258b740217c4177d3bbe547d0abb1ca1eb",
      "tree": "efca63aa817cf7dd23fc5377570df06d7c978605",
      "parents": [
        "c56c304f84c848606c9e7642549653841dea065a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 16 14:54:22 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 16 14:54:22 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "c56c304f84c848606c9e7642549653841dea065a",
      "tree": "b0d76e2c08df4aeb726f9648886dda427fc15d58",
      "parents": [
        "84e29fd802c9c589a712bd39cf98f1697685fe20"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 23:42:01 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 23:42:01 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "84e29fd802c9c589a712bd39cf98f1697685fe20",
      "tree": "1ee2363602a4c5d8df844083b44073dc2af7191d",
      "parents": [
        "608e2e62713d8c3809170e4a342d0c0a401c3118"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 17:03:36 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 17:03:36 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151 (try it on groovy-macro)\n"
    },
    {
      "commit": "608e2e62713d8c3809170e4a342d0c0a401c3118",
      "tree": "00bf138146a31b02a075cf05b3374073fd3258a1",
      "parents": [
        "841c849e2b4f740cf0dde9761fd15f30aad8d556"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 16:25:16 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 16:25:16 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151 (try it on groovy-macro)\n"
    },
    {
      "commit": "841c849e2b4f740cf0dde9761fd15f30aad8d556",
      "tree": "6a9e77ad30e85d70ae87fec82cfb186503ff5cf1",
      "parents": [
        "5c83f33eb19d3c50d2a25f781038a8e134cb340d"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 13:54:41 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 13:54:41 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "5c83f33eb19d3c50d2a25f781038a8e134cb340d",
      "tree": "9e9cd2851a9b1c35f2e35c8e928d31c860c6fad5",
      "parents": [
        "18871b004e46552ea5c38b5b0e0fa15758dc4a5d"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 13:22:22 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 13:22:22 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "18871b004e46552ea5c38b5b0e0fa15758dc4a5d",
      "tree": "2f092976d8a0a63536c80980d507a7e750be81e5",
      "parents": [
        "2f21ebfbf1d500547f01fd4efe735912abfd78c7"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 13:07:57 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 15 13:07:57 2026 +1000"
      },
      "message": "updated with recent changes for GROOVY-12151\n"
    },
    {
      "commit": "2f21ebfbf1d500547f01fd4efe735912abfd78c7",
      "tree": "af54a18c04abb94646dc2030f3be1247e33f8e18",
      "parents": [
        "28ee6f4b479f77cc461560cae1b1263647edd2a7"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Jul 13 09:34:10 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Jul 13 09:34:10 2026 +1000"
      },
      "message": "updated with recent changes\n"
    },
    {
      "commit": "28ee6f4b479f77cc461560cae1b1263647edd2a7",
      "tree": "d12fd88cfb5663da1f672ae38ff95443ab62a10c",
      "parents": [
        "436de333a2164b5e3768bd37c9417e27baf7b2ed"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Jul 13 00:03:07 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Mon Jul 13 00:03:07 2026 +1000"
      },
      "message": "updated with recent changes\n"
    },
    {
      "commit": "436de333a2164b5e3768bd37c9417e27baf7b2ed",
      "tree": "302a61614d916731f3dd88f52d699f101df345ce",
      "parents": [
        "7a45bdc090afe018f1aaf6c4e35aac293499184a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 23:44:12 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 23:44:12 2026 +1000"
      },
      "message": "updated with recent changes\n"
    },
    {
      "commit": "7a45bdc090afe018f1aaf6c4e35aac293499184a",
      "tree": "679cb3f65fe89c2e949f4f9db98a503a2b1fc389",
      "parents": [
        "aa654a480b7d70aaae30801f9bc762c16c5bd3cf"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 14:38:19 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 14:38:19 2026 +1000"
      },
      "message": "latest release notes updates\n"
    },
    {
      "commit": "aa654a480b7d70aaae30801f9bc762c16c5bd3cf",
      "tree": "2b4bf3a6937767b4c7843fa49704ca39be800243",
      "parents": [
        "974f01cbe56955a33337803efd99da28e61b8148"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 13:56:36 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 13:56:36 2026 +1000"
      },
      "message": "Three blog posts updated to a more recent Pekko version and recommending Groovy 6 concurrency features ahead of GPars once you migrate to Groovy 6.\n"
    },
    {
      "commit": "974f01cbe56955a33337803efd99da28e61b8148",
      "tree": "c17acd0fb31a0ad0de04c14ef1fdcbafc93971d0",
      "parents": [
        "83b0540d411d8121a16a476984dd2b629e788730"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 08:09:45 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sun Jul 12 08:09:45 2026 +1000"
      },
      "message": "GEP-27: update to reflect latest GROOVY-12151 slice\n"
    },
    {
      "commit": "83b0540d411d8121a16a476984dd2b629e788730",
      "tree": "3d05a1081e869d3b7c373824f5060309a060577c",
      "parents": [
        "8c7419af0e86988dc0c57407147520fb78ee8493"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 11 14:54:11 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 11 14:54:11 2026 +1000"
      },
      "message": "GEP-27: update the closure reference-implementation to the current state\n\nAll three safety layers are now implemented (add the decline-diagnostics layer);\nthe capability analysis and typed static dispatch are implemented and validated\n(compile-time packing across the core module and others), so the remaining Groovy\n7 work is restated as S3 elision, writer unification, nested-closure owner\nretargeting, and hardening the automatic path from experimental to default-on.\n"
    },
    {
      "commit": "8c7419af0e86988dc0c57407147520fb78ee8493",
      "tree": "76a647b2625385c5fe85b7842e00479984670e53",
      "parents": [
        "21d070b62e3b91cc8ac9af62b15de0867c450940"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 11 14:52:38 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 11 14:52:38 2026 +1000"
      },
      "message": "GEP-27: finish the merged-status pass for the lambda reference-implementation text\n\nMark the reference-implementation lambda bullet and Piece 2 as merged (were\n\u0027candidate\u0027/\u0027on the first-step branch\u0027), and note the pre-hoist bytecode-shape\ntests are skipped under the opt-in flag with migration deferred to a default\nflip -- rather than described as remaining first-step work.\n"
    },
    {
      "commit": "21d070b62e3b91cc8ac9af62b15de0867c450940",
      "tree": "775962227bdf542797658c8c5593c07e9c1babe7",
      "parents": [
        "490e3469b4e639c255747fb41b618c9ed4e00026"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 11 14:51:33 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 11 14:51:33 2026 +1000"
      },
      "message": "GEP-27: mark the SAM lambda slice as merged; fix the lambda flag name\n\nThe lambda hoisting (GROOVY-12143) and warning printing (GROOVY-12132) landed in\nmaster. Update the doc to match: the Groovy 6.0 deliverables and both Pieces are\nmarked merged (was \u0027pending\u0027/\u0027primary\u0027/\u0027implemented\u0027), the intro says merged\n(was \u0027on the first-step branch\u0027), and the flags table now names the actual flag\n\u0027groovy.target.lambda.hoist\u0027 (opt-in, off by default) rather than the never-used\n\u0027groovy.target.lambda.hoist.disabled\u0027 opt-out form.\n"
    },
    {
      "commit": "490e3469b4e639c255747fb41b618c9ed4e00026",
      "tree": "1d63c20c7cba0f32a8066f59fff819b40ea58523",
      "parents": [
        "b7a60275e8240f670a987cfdd46aedc4803d4ecd"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 23:12:48 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 23:12:48 2026 +1000"
      },
      "message": "GEP-27: note the DISABLED opt-out in the per-closure-control deferred-feature row\n\nUsers influence packing only via target type, arrow syntax and @PackedClosures --\nincluding opting a scope out with mode \u003d DISABLED -- but never select which packed\nrepresentation (S1/S2/S3) is used.\n"
    },
    {
      "commit": "b7a60275e8240f670a987cfdd46aedc4803d4ecd",
      "tree": "af48b8d121845921a27867ccafc96e35f1412c4a",
      "parents": [
        "69e0ff79bb7a0068792b2983056c6ff579c80518"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 23:07:15 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 23:07:15 2026 +1000"
      },
      "message": "GEP-27: document PackMode.DISABLED opt-out\n\nAdd the fourth mode value: DISABLED packs nothing in its scope (the fine-grained\nopt-out), most-specific declaration wins so a DISABLED method beats a packed\nclass, and DISABLED overrides the groovy.target.closure.pack flag.\n"
    },
    {
      "commit": "69e0ff79bb7a0068792b2983056c6ff579c80518",
      "tree": "7e69285080eab25913984c2dfae758f5945462c7",
      "parents": [
        "1ca316812363c3fb630b636387c3c30b0e66273e"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 22:42:16 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 22:42:16 2026 +1000"
      },
      "message": "GEP-27: reconcile with implementation — @PackedClosures name and mode diagnostics\n\nAlign the doc with what shipped:\n- rename @Packed -\u003e @PackedClosures throughout (14 occurrences); the annotation is\n  named for what it packs (closures), and since a dynamic arrow-lambda is itself a\n  closure with no separate dynamic-lambda packing, the closures-specific name is\n  exact -- note added;\n- replace the boolean @Packed(strict \u003d true) design with the delivered\n  @PackedClosures(mode \u003d LENIENT | WARN | STRICT) enum (silent / compiler warning\n  per decline with reason / compile error), and state that the automatic\n  groovy.target.closure.pack path is always lenient;\n- drop \u0027designed but not yet wired\u0027 -- the mode diagnostics are implemented and\n  listed among the delivered safety mechanisms.\n"
    },
    {
      "commit": "1ca316812363c3fb630b636387c3c30b0e66273e",
      "tree": "937a055b8a569cc0f47d447035ee9dcdb618f8bb",
      "parents": [
        "9a811130973f6b53a57a4d3da892749a404cfbc0"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 12:52:38 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 12:52:38 2026 +1000"
      },
      "message": "GEP-27: update with prototype findings; remove outdated framing\n\nFold in the validated spike results and reconcile stale sections:\n- Reference implementation: PackedClosure runtime guard and compile-time escape\n  decline are implemented+validated (every delegate-redirect funnels through the\n  two setters); add measured impact (FormTagLib 8-\u003e1 classes, ~90% of closure\n  bytes are scaffolding; RemarkCriteria domain 24 classes/80KB); document the\n  Grails artefact-DSL safety and the unsound naive nested-validator hoist (needs\n  owner-correct retargeting \u003d Groovy 7).\n- Piece 2 (read-only-capturing SAM lambdas) is implemented, not a stretch; phase\n  table and abstract updated accordingly.\n- Guarding section: resolveStrategy guard covers all non-owner modes (incl.\n  TO_SELF); escape gate described as implemented syntactic form.\n- Bump last-modified date.\n"
    },
    {
      "commit": "9a811130973f6b53a57a4d3da892749a404cfbc0",
      "tree": "5dadb6eb3db5d1b64a0f70a4d6610268b722c95d",
      "parents": [
        "0a28012ede43f977dcf5909ec55bce8f22bf437a"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 09:25:36 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Fri Jul 10 09:25:36 2026 +1000"
      },
      "message": "draft \"Compact Closure and Lambda Compilation\" GEP\n"
    },
    {
      "commit": "0a28012ede43f977dcf5909ec55bce8f22bf437a",
      "tree": "1e6152913698a80fc9fee60ed9263f95f57412ff",
      "parents": [
        "307d3d5471d6d8ec6bc02a44b505a70fd2e2439b"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 09 22:38:02 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Thu Jul 09 22:38:02 2026 +1000"
      },
      "message": "draft \"Compact Closure and Lambda Compilation\" GEP\n"
    },
    {
      "commit": "307d3d5471d6d8ec6bc02a44b505a70fd2e2439b",
      "tree": "a79a5966fe681627bc88e21af67c0f0a20068a76",
      "parents": [
        "1f7319114e0bb753daab20c89bf7344fb0c913f7"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 08 14:36:35 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Wed Jul 08 14:36:44 2026 +1000"
      },
      "message": "Added ThrowsIf and specs to groovy-verify blog\n"
    },
    {
      "commit": "1f7319114e0bb753daab20c89bf7344fb0c913f7",
      "tree": "6190c4984c95dc927dd72f20ae34a10edd120a55",
      "parents": [
        "aa1af9b81551e06d2360e9c7f41968fb1fcb077c"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 04 21:03:46 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Tue Jul 07 09:04:04 2026 +1000"
      },
      "message": "proposed changes based on reference implementation learnings\n"
    },
    {
      "commit": "aa1af9b81551e06d2360e9c7f41968fb1fcb077c",
      "tree": "900ad505ec01784f7dffeca7710ebb09d8732f4a",
      "parents": [
        "596cf673bbdc2c9a5b97d4130bd36271a3b09bd2"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 04 16:21:06 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 04 16:21:06 2026 +1000"
      },
      "message": "add 2nd image\n"
    },
    {
      "commit": "596cf673bbdc2c9a5b97d4130bd36271a3b09bd2",
      "tree": "99cac29d6f2e28b0e66027bc448e815c3db5803a",
      "parents": [
        "95ad84792efe0c5479170a329754f45a4045afbc"
      ],
      "author": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 04 15:14:36 2026 +1000"
      },
      "committer": {
        "name": "Paul King",
        "email": "paulk@asert.com.au",
        "time": "Sat Jul 04 15:14:36 2026 +1000"
      },
      "message": "add image\n"
    }
  ],
  "next": "95ad84792efe0c5479170a329754f45a4045afbc"
}
