)]}'
{
  "log": [
    {
      "commit": "12d6b0baf082b4957a14abf2b56ecf1db26f2321",
      "tree": "503322196a9b138a26d20477da94c62563cc60bd",
      "parents": [
        "e8ef2e81995bbf326c48f1973ea106b124e98afd"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jul 07 14:08:52 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jul 07 15:25:09 2026 -0400"
      },
      "message": "Prepare for 4.3.0 development\n"
    },
    {
      "commit": "e8ef2e81995bbf326c48f1973ea106b124e98afd",
      "tree": "296a14dbb9bcd26203adaca8fb1026eb101fa88f",
      "parents": [
        "a0e7e4669bb2b098f0f52b1f076a2da233e7320e"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 23 20:50:14 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Jun 24 09:50:10 2026 -0400"
      },
      "message": "Update Inno Setup installation in `release-candidate.yml`\n\n- Switch to GitHub-hosted Inno Setup binaries.\n- Replace SHA-512 checksum validation with SHA-256.\n- Update version tag references for consistency.\n"
    },
    {
      "commit": "a0e7e4669bb2b098f0f52b1f076a2da233e7320e",
      "tree": "99f0dd4274069dca8580cacba65a938bce213ed2",
      "parents": [
        "a04979670591aa97002d87985758c927d5f3c51b"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 15:16:51 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 23 15:52:25 2026 -0400"
      },
      "message": "Prepare for 4.2.0\n"
    },
    {
      "commit": "a04979670591aa97002d87985758c927d5f3c51b",
      "tree": "89e4d74e3bf2439a7b9ab7c62605567a23304237",
      "parents": [
        "d505941e38a095a6bd7d2a98f201c884ff388784"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 23 14:15:30 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 23 15:52:00 2026 -0400"
      },
      "message": "Revert scalaVersion back to 3.3.7\n"
    },
    {
      "commit": "d505941e38a095a6bd7d2a98f201c884ff388784",
      "tree": "2a3f30c9dc9da5058ea4647ae7983684444669c5",
      "parents": [
        "128075f9144298877825f249a25c82f36d6bf309"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 16:47:45 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 13:34:13 2026 -0400"
      },
      "message": "Bump actions/checkout from 6.0.2 to 7.0.0\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "128075f9144298877825f249a25c82f36d6bf309",
      "tree": "2b6f3b525e3c93626684a7d40c46b6239b50da23",
      "parents": [
        "1a3255a6f8fae2e6331716e19aea3f7e6094673f"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Mon Jun 22 14:31:21 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 12:47:09 2026 -0400"
      },
      "message": "Update sbt, scripted-plugin to 1.12.13\n"
    },
    {
      "commit": "1a3255a6f8fae2e6331716e19aea3f7e6094673f",
      "tree": "940a83b5304d3844e838eda007b686d59ce2bacf",
      "parents": [
        "dc8d4a75026dfdf1b718fd371df93ff22032edf6"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Sat Jun 20 14:35:40 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 12:46:06 2026 -0400"
      },
      "message": "Update jline to 4.2.1\n"
    },
    {
      "commit": "dc8d4a75026dfdf1b718fd371df93ff22032edf6",
      "tree": "e78a16120b5ca00bd57d943294b19af78a5ada68",
      "parents": [
        "5522531acb6e834302cd7821a0723a7818e69b96"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 18 19:52:29 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 12:45:47 2026 -0400"
      },
      "message": "Bump scalacenter/sbt-dependency-submission from 3.2.1 to 3.2.3\n\nBumps [scalacenter/sbt-dependency-submission](https://github.com/scalacenter/sbt-dependency-submission) from 3.2.1 to 3.2.3.\n- [Release notes](https://github.com/scalacenter/sbt-dependency-submission/releases)\n- [Commits](https://github.com/scalacenter/sbt-dependency-submission/compare/f43202114d7522a4b233e052f82c2eea8d658134...d84eef4c09e633bcf5f113bcad7fd5e9af1baee9)\n\n---\nupdated-dependencies:\n- dependency-name: scalacenter/sbt-dependency-submission\n  dependency-version: 3.2.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5522531acb6e834302cd7821a0723a7818e69b96",
      "tree": "576592ec73ebebaad7ce03589a27924955fecc0f",
      "parents": [
        "d3e9de6006cb38fa68a3760a97277b6adc89b658"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 18 19:52:19 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 12:35:31 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.2.0 to 5.3.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.2.0 to 5.3.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/be666c2fcd27ec809703dec50e508c2fdc7f6654...ad2b38190b15e4d6bdf0c97fb4fca8412226d287)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d3e9de6006cb38fa68a3760a97277b6adc89b658",
      "tree": "330827747b99617afacc82c95ec8e8d99f51410e",
      "parents": [
        "1c1f73d0bb119978f0b47dd02d611bd2495295e7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 18 19:52:14 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 12:33:57 2026 -0400"
      },
      "message": "Bump SonarSource/sonarqube-scan-action from 8.0.0 to 8.2.0\n\nBumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 8.0.0 to 8.2.0.\n- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)\n- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/59db25f34e16620e48ab4bb9e4a5dce155cb5432...713881670b6b3676cda39549040e2d88c70d582e)\n\n---\nupdated-dependencies:\n- dependency-name: SonarSource/sonarqube-scan-action\n  dependency-version: 8.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "1c1f73d0bb119978f0b47dd02d611bd2495295e7",
      "tree": "dc407b5294764e3537cf7d472ce88d3189b1a466",
      "parents": [
        "a90d8472cd61fae9a762d986892f8ceb22d58ab7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 18 19:52:10 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jun 22 12:32:54 2026 -0400"
      },
      "message": "Bump msys2/setup-msys2 from 2.31.1 to 2.32.0\n\nBumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.31.1 to 2.32.0.\n- [Release notes](https://github.com/msys2/setup-msys2/releases)\n- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/msys2/setup-msys2/compare/e9898307ac31d1a803454791be09ab9973336e1c...66cd2cce69caa17b53920067426061ca1de3a884)\n\n---\nupdated-dependencies:\n- dependency-name: msys2/setup-msys2\n  dependency-version: 2.32.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a90d8472cd61fae9a762d986892f8ceb22d58ab7",
      "tree": "67e1e02334ec9b0e253d08e9fd61158175f41c99",
      "parents": [
        "87dd0ea806dfcd17c45d3acf7e24f14e675f238e"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 15:25:01 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 13:04:30 2026 -0400"
      },
      "message": "Set up default protection ruleset for default and release branches"
    },
    {
      "commit": "87dd0ea806dfcd17c45d3acf7e24f14e675f238e",
      "tree": "79ec617c85de423015a22a518e08f6a06cdd8ed3",
      "parents": [
        "985328c1fc82cc54ece1ffbb453564f5788ad1c4"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Mon Jun 08 13:28:52 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:57:48 2026 -0400"
      },
      "message": "Update woodstox-core to 7.2.1\n"
    },
    {
      "commit": "985328c1fc82cc54ece1ffbb453564f5788ad1c4",
      "tree": "6a7057631bddb7634f0606a37eb0d55e62dbbf15",
      "parents": [
        "d935bb514e566fb50ccc9d2246e169c9ea20214d"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Fri May 29 13:44:42 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:57:23 2026 -0400"
      },
      "message": "Update Saxon-HE to 13.0\n"
    },
    {
      "commit": "d935bb514e566fb50ccc9d2246e169c9ea20214d",
      "tree": "481c0ee3e6dde77f63ade59f58df1dc1c725cc06",
      "parents": [
        "f9ef2e4d49abb5abf3e654641cfb845fa9c6f977"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Wed May 13 14:19:27 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:56:32 2026 -0400"
      },
      "message": "Update slf4j-api to 2.0.18\n"
    },
    {
      "commit": "f9ef2e4d49abb5abf3e654641cfb845fa9c6f977",
      "tree": "2b22224ca4f52797603efadbbbdcf5950438b9ae",
      "parents": [
        "d4f3b6e1d0d23e01296efef4044045a72a8e3945"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Mon May 11 15:14:10 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:45:04 2026 -0400"
      },
      "message": "Update sbt-scalafmt to 2.6.1\n"
    },
    {
      "commit": "d4f3b6e1d0d23e01296efef4044045a72a8e3945",
      "tree": "db40d4be57cc0036c451c366b0225a5e79b121e5",
      "parents": [
        "8989235935b07ad43da28d916f2523dc99769d4c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed May 06 19:52:31 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:41:58 2026 -0400"
      },
      "message": "Bump actions/labeler from 6.0.1 to 6.1.0\n\nBumps [actions/labeler](https://github.com/actions/labeler) from 6.0.1 to 6.1.0.\n- [Release notes](https://github.com/actions/labeler/releases)\n- [Commits](https://github.com/actions/labeler/compare/634933edcd8ababfe52f92936142cc22ac488b1b...f27b608878404679385c85cfa523b85ccb86e213)\n\n---\nupdated-dependencies:\n- dependency-name: actions/labeler\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8989235935b07ad43da28d916f2523dc99769d4c",
      "tree": "7c01c74f7caa7e8eacc739d6b71c62020734bb07",
      "parents": [
        "cc0d0513c13fa016d823a3c3d2e6e0f97cc02869"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Tue May 05 14:40:42 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:39:11 2026 -0400"
      },
      "message": "Update jline to 3.30.13\n\n- Move `test_CLI_Tdml_DebugFile_singleTest` to `daffodil-test-integration` from `daffodil-cli`. We need to fork so we can use the correct jline version\n"
    },
    {
      "commit": "cc0d0513c13fa016d823a3c3d2e6e0f97cc02869",
      "tree": "9a92d70a23641dade4a34f313e18800d1b7da581",
      "parents": [
        "8533ee97916c573fe5d92054295dcd404bf78323"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 19:52:36 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:38:04 2026 -0400"
      },
      "message": "Bump SonarSource/sonarqube-scan-action from 7.0.0 to 8.0.0\n\nBumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 7.0.0 to 8.0.0.\n- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)\n- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/a31c9398be7ace6bbfaf30c0bd5d415f843d45e9...59db25f34e16620e48ab4bb9e4a5dce155cb5432)\n\n---\nupdated-dependencies:\n- dependency-name: SonarSource/sonarqube-scan-action\n  dependency-version: 8.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8533ee97916c573fe5d92054295dcd404bf78323",
      "tree": "fe1fe066bd42dd6435d6a2dc95fafafe4c97521b",
      "parents": [
        "cc522d3dbf36a27a24c30f19ea88fd12c635da4f"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Thu Apr 23 14:14:01 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:37:32 2026 -0400"
      },
      "message": "Update commons-io to 2.22.0\n"
    },
    {
      "commit": "cc522d3dbf36a27a24c30f19ea88fd12c635da4f",
      "tree": "0ab0c30625872d0d08021afea4e02e73ebea991a",
      "parents": [
        "19f9cb1941186e274b2d27d93400d2c95397d1bb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 19:52:25 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:35:23 2026 -0400"
      },
      "message": "Bump msys2/setup-msys2 from 2.30.0 to 2.31.1\n\nBumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.30.0 to 2.31.1.\n- [Release notes](https://github.com/msys2/setup-msys2/releases)\n- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/msys2/setup-msys2/compare/4f806de0a5a7294ffabaff804b38a9b435a73bda...e9898307ac31d1a803454791be09ab9973336e1c)\n\n---\nupdated-dependencies:\n- dependency-name: msys2/setup-msys2\n  dependency-version: 2.31.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "19f9cb1941186e274b2d27d93400d2c95397d1bb",
      "tree": "fb2a74cb33c5c5bb00bdddefa977d2b397ef09b4",
      "parents": [
        "363d00caf0ab069bbd9be251c219734f41f8d824"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 10 19:52:23 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:34:41 2026 -0400"
      },
      "message": "Bump actions/github-script from 8.0.0 to 9.0.0\n\nBumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0.\n- [Release notes](https://github.com/actions/github-script/releases)\n- [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3)\n\n---\nupdated-dependencies:\n- dependency-name: actions/github-script\n  dependency-version: 9.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "363d00caf0ab069bbd9be251c219734f41f8d824",
      "tree": "1f1e9be8217c0cccc9ae76f5130de60f752f9dd1",
      "parents": [
        "8e1f7cead7edb55e5f17f555fb5829ca30b89110"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 26 19:52:28 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:10:44 2026 -0400"
      },
      "message": "Bump codecov/codecov-action from 5.5.2 to 6.0.0\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.2 to 6.0.0.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/671740ac38dd9b0130fbe1cec585b89eea48d3de...57e3a136b779b570ffcdbf80b3bdc90e7fab3de2)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-version: 6.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8e1f7cead7edb55e5f17f555fb5829ca30b89110",
      "tree": "e37c4e53e5569edf8ebea47807fa42d3b77d3a79",
      "parents": [
        "213c77ad78b9fbec46fc60f1c92c5823bae5a824"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Wed Mar 18 16:13:17 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:10:12 2026 -0400"
      },
      "message": "Update icu4j to 78.3\n"
    },
    {
      "commit": "213c77ad78b9fbec46fc60f1c92c5823bae5a824",
      "tree": "f5dff4040e0b078e359f527faca8d1c75c28b21a",
      "parents": [
        "045407e8209e33c16fb98e813bfb8ba0285e4b48"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Sun Feb 01 04:23:01 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:09:39 2026 -0400"
      },
      "message": "Update os-lib to 0.11.8\n"
    },
    {
      "commit": "045407e8209e33c16fb98e813bfb8ba0285e4b48",
      "tree": "cb14633b07e0838276b848f819fbb83509eb6111",
      "parents": [
        "4ddf700aacac20e458d3aa9e296c792ac3d95396"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Fri Jun 12 13:47:52 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:07:09 2026 -0400"
      },
      "message": "Update scala3-library to 3.3.8\n"
    },
    {
      "commit": "4ddf700aacac20e458d3aa9e296c792ac3d95396",
      "tree": "623c9fd3fc1798d29b377e3bdea40fc2e7f2b9c7",
      "parents": [
        "050d47e1175f42fd6dc0fb670efffd5910a0af2f"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Sun Jun 14 14:08:04 2026 +0000"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jun 18 12:06:46 2026 -0400"
      },
      "message": "Update sbt, scripted-plugin to 1.12.12\n"
    },
    {
      "commit": "050d47e1175f42fd6dc0fb670efffd5910a0af2f",
      "tree": "5a6fc76eaa0bcab38bcf6ad19e50c51807681df8",
      "parents": [
        "64ece503025ece5a539528d00ea8253aa3547906"
      ],
      "author": {
        "name": "Josh Adams",
        "email": "jadams@owlcyberdefense.com",
        "time": "Tue Jun 02 09:10:07 2026 -0400"
      },
      "committer": {
        "name": "jadams-tresys",
        "email": "30659277+jadams-tresys@users.noreply.github.com",
        "time": "Wed Jun 17 09:14:53 2026 -0400"
      },
      "message": "Several small changes attempting to improve unparse performance\n\n- Avoid calling .toList.toVector\n- Remove unnecessary Maybe\n- Avoid frequent push/pop operations\n- Remove unused default parameter\n- Inline unparse1 function\n- Use string interpolation instead of .format inside VariableMap\n- Change all runtimeDependencies to vals of Array\n"
    },
    {
      "commit": "64ece503025ece5a539528d00ea8253aa3547906",
      "tree": "91a71a1c9282e41d27b640377649f828d8df3100",
      "parents": [
        "45fc21ab73c1d22c83e22f66744de88aa12dfa15"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 16 11:26:26 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 16 12:20:24 2026 -0400"
      },
      "message": "Set default `infosetWalkerMode` to \"streaming\"\n\n - update documentation accordingly\n\nDAFFODIL-3089\n\nDeprecation/Compatibility\nThis will revert the change in DAFFODIL-3070 that set the default InfosetWalkerMode to nonStreaming.\n"
    },
    {
      "commit": "45fc21ab73c1d22c83e22f66744de88aa12dfa15",
      "tree": "737e163ff87df2e4dce1cbfa27f677b8edefb747",
      "parents": [
        "e1729f2fc20286bbc394e0b3b314222da0adbaca"
      ],
      "author": {
        "name": "Guichard Desrosiers",
        "email": "gdesrosiers@owlcyberdefense.com",
        "time": "Wed Jun 10 20:02:48 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Jun 12 07:57:46 2026 -0400"
      },
      "message": "Tolerate sub-millisecond differences in TDML dateTime comparison\n\nICU calendars are millisecond-precision, so fractional microseconds in\nxs:dateTime values are not preserved on parse. Truncate fractional seconds\nto milliseconds from the XMLGregorianCalendars before comparison, so\nsub-millisecond differences are ignored rather than flagged as mismatches.\n\nDAFFODIL-3086\n"
    },
    {
      "commit": "e1729f2fc20286bbc394e0b3b314222da0adbaca",
      "tree": "40ddf0aba983e21fcba75db3be0b9784b01907df",
      "parents": [
        "0bfbf4c66eb3bd6e7e42705be51029354269dc5a"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu May 07 13:29:46 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Jun 09 10:51:22 2026 -0400"
      },
      "message": "Add `infosetWalkerMode` tunable for streaming and non-streaming modes\n\n- Introduced `infosetWalkerMode` tunable in `dafext.xsd` with `streaming` and `nonStreaming` options.\n- Extract InfosetWalker trait; rename former InfosetWalker class to StreamingInfosetWalker; introduce NonStreamingInfosetWalker backed by DINode.walk() for the non-streaming path\n- Update DaffodilDebugger to always use StreamingInfosetWalker since debugger performance is not a huge priortiy\n- Added TDML tests to validate the new tunable functionality.\n\nDeprecation/Compatibility\nThe infoset walker mode has been changed to non-streaming behavior as the default, as this can cause significant performance improvements in some instances. To change to previous behavior, set the tunable infosetWalkerMode\u003dstreaming. If the infoset is likely to be very large or if memory is constrained, streaming mode would be more beneficial, otherwise in most other cases, non-streaming mode will be faster or the same.\n\nDAFFODIL-3070\n"
    },
    {
      "commit": "0bfbf4c66eb3bd6e7e42705be51029354269dc5a",
      "tree": "510782cba28bede5c282b670a60a117d1c8bdb69",
      "parents": [
        "c22dfe85cee2d40bda655f426981b66682d946d6"
      ],
      "author": {
        "name": "Guichard Desrosiers",
        "email": "gdesrosiers@owlcyberdefense.com",
        "time": "Fri Jun 05 16:25:43 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jun 09 09:17:17 2026 -0400"
      },
      "message": "Replace deprecated URL constructor globally\n\njava.net.URL(String) has been deprecated since JDK 20, and causes the\nbuild to fail in some instances. Use the new URI(schemaFile).toURL instead,\nwhich is non-deprecated and available on all supported JDK versions.\n\nDAFFODIL-3083\n"
    },
    {
      "commit": "c22dfe85cee2d40bda655f426981b66682d946d6",
      "tree": "3093902d5a12e1baa1d300b4a084b86140ca3f3d",
      "parents": [
        "f66cafefc8471a93425ad61df999a40b78e3ca43"
      ],
      "author": {
        "name": "Guichard Desrosiers",
        "email": "gdesrosiers@owlcyberdefense.com",
        "time": "Mon Jun 01 23:34:26 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jun 09 09:15:54 2026 -0400"
      },
      "message": "Replace ICU-based date/time comparison in TDML Runner with XMLGregorianCalendar\n\nThe TDML date/time comparison previously used the DFDLDate/Time/DateTimeConversion\nclasses, which create ICU objects. This broke cross-testing against the IBM DFDL\ncross tester, which depends on an older ICU version (e.g. it lacks Calendar.clone()).\n\nCompare xs:date/time/dateTime values by parsing into XMLGregorianCalendar and using\nits XSD order relation (compare()), keeping ICU off the comparison path entirely.\n\nXMLGregorianCalendar implements XSD 1.0, which does not permit year zero, so it\nrejects values like \"0000-01-01\". Two tests whose data uses year zero\n(yearfromdate_03 and yearfromdatetime_03) are temporarily ignored as a result.\nThese expose a pre-existing Daffodil bug: Daffodil produces year-zero values that\nare invalid under XSD 1.0, which needs to be addressed separately. The tests should\nbe re-enabled (or converted to negative tests) once that is resolved.\n\nBroaden the catch in verifyParserTestData from XMLDifferenceException back to\nException, so exceptions thrown transitively by compareAndReport\u0027s callees are\nwrapped as TDMLExceptions. Restores the generic catch that was in place before\ncommit b9fb1e53ba95, which narrowed it to XMLDifferenceException.\n\nDAFFODIL-3077\n"
    },
    {
      "commit": "f66cafefc8471a93425ad61df999a40b78e3ca43",
      "tree": "0bd1d325f602c8ec0d6c7371c640cb35a7be4899",
      "parents": [
        "ec72d23c408347a1ac97b0e27e5d2c8b348d766a"
      ],
      "author": {
        "name": "Guichard Desrosiers",
        "email": "gdesrosiers@owlcyberdefense.com",
        "time": "Tue May 26 19:45:54 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Jun 04 08:09:04 2026 -0400"
      },
      "message": "Add configurable gzip compression level\n\nThe gzip layer previously used GZIPOutputStream with the JDK\u0027s default\ncompression level (level 6), with no way for schemas to choose a different\nlevel. This change exposes the speed-vs-size trade-off that the gzip format\nalready supports, giving users control over how their data is compressed\nduring unparsing.\n\nAs a side benefit, this fix also addresses cross-zlib test failures\nobserved on Fedora 42. Fedora\u0027s OpenJDK links against zlib-ng while\nTemurin and most other distributions bundle stock zlib. Both produce valid\ngzip output, but the deflate token streams differ due to different\nmatch-finding heuristics, causing tests with hardcoded byte baselines to\nfail on Fedora. For the small test data used in Daffodil\u0027s gzip tests,\nlevel 9 happens to produce identical output on both implementations,\nletting the tests pass regardless of which zlib is linked. This\nconvergence at level 9 is empirical, not guaranteed.\n\nChanges:\n\n- Add `compressionLevel` DFDL variable to the gzip layer schema, defaulting\n  to Deflater.DEFAULT_COMPRESSION (-1). Schemas can override via\n  `dfdl:newVariableInstance` or `dfdl:setVariable`, and users can set the\n  value externally without having to modify the schema.\n\n- Add ConfigurableGZIPOutputStream, a GZIPOutputStream subclass that allows\n  the compression level to be set via constructor argument.\n\n- Update GZipLayer to accept the compressionLevel variable via\n  setLayerVariableParameters and use it when constructing the output stream.\n\n- Remove GZIPFixedOutputStream and the associated fixIsNeeded() method.\n  These existed to work around a pre-Java-16 bug where GZIPOutputStream\n  wrote 0x00 instead of the spec-compliant 0xFF for the gzip OS header\n  byte. Since Daffodil\u0027s minimum supported Java version is now 17, this\n  workaround is no longer needed.\n\n- Add `-parameters` to javac options This preserves Java parameter names in\n  bytecode, which is required by Daffodil\u0027s reflection-based layer parameter\n  resolution. Without this, Java setters appear with parameters named arg0/arg1/...\n  and cannot be matched to schema variables.\n\n- Update test schemas (exampleGzipLayer.dfdl.xsd, exampleGzipLayer2.dfdl.xsd)\n  to set compressionLevel\u003d9 via newVariableInstance.\n\n- Update TestGzipErrors.makeGZIPData to generate test input data at level 9\n  for byte-stable output across JVMs, with comments documenting the\n  empirical nature of the convergence.\n\nDAFFODIL-3082\n"
    },
    {
      "commit": "ec72d23c408347a1ac97b0e27e5d2c8b348d766a",
      "tree": "5d16c7f6f4927b632fcd5af2f00900b3124f209e",
      "parents": [
        "f9be445a2bae8c82aa8435e5155a4d5a450ca822"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed May 27 10:56:04 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Jun 04 07:08:50 2026 -0400"
      },
      "message": "Make codecov patch stats informational on the main branch\n\nSometimes we merge PRs that do not meet the codecov patch threshold,\nusually because it is not possible or requires too much effort to meet.\nThis leads to a CI failure on the main branch when these PRs are merged.\n\nBut by merging a PR we are tacitly agreeing to accept whatever coverage\nit has and so we don\u0027t need to report CI failures that might hide actual\nfailures.\n\nThis changes the codecov patch configuration for the main branch so it\nis informational only. CI will still run coverage and report the stats,\nbut it should not cause CI to indicate coverage failures even if the\npatch threshold is not met.\n\nDAFFODIL-3081\n"
    },
    {
      "commit": "f9be445a2bae8c82aa8435e5155a4d5a450ca822",
      "tree": "653bf61c8a0ff7a05e028cd00fc5e3601ca6b9be",
      "parents": [
        "4821837d3373444516cf02a7c0483b223ea1dce9"
      ],
      "author": {
        "name": "Guichard Desrosiers",
        "email": "gdesrosiers@owlcyberdefense.com",
        "time": "Mon May 04 10:47:40 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed May 27 10:19:14 2026 -0400"
      },
      "message": "Fix float/double facet checks to use native comparison instead of compareTo\n\nFloat|Double.compareTo define a total order where NaN \u003e all values and\n-0.0 \u003c +0.0, which violates XSD semantics. XSD requires NaN to be\nincomparable (failing all facets) and -0.0 to equal +0.0.\n\n- Replace f.compareTo()/d.compareTo() with native f \u003e\u003d and\n  d \u003e\u003d (and corresponding \u003e, \u003c\u003d, \u003c) so that minInclusive,\n  maxInclusive, minExclusive, and maxExclusive correctly handle NaN,\n  +/-INF, and -0.0 for xs:float and xs:double types.\n- Add unit tests to Facets.tdml covering all four facets for xs:float\n  and xs:double, exercising IEEE 754 special values: NaN, +INF, -INF,\n  and -0.0.\n\nDAFFODIL-3072\n"
    },
    {
      "commit": "4821837d3373444516cf02a7c0483b223ea1dce9",
      "tree": "f4914db66c88a5db21b3ac742add1e19dcb2a9ea",
      "parents": [
        "b9fb1e53ba95cdf5727495cf80a8f768660cb71c"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Apr 02 15:54:20 2026 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue May 26 12:04:39 2026 -0400"
      },
      "message": "Change TDMLRunner to use XMLTextInfosetInputter/Outputter as default\n\n- Replaced `TDMLInfosetOutputterScala` with `TDMLInfosetOutputterXML`.\n- Update TDML Schema to add support for custom validation name/type and use in stringAsXML tests\n- Drop whitespace between elements to keep expected matching actual, but keep all others like mixed whitespace, attributes, comments unchanged\n- Introduced tests for `stringAsXML` validation and namespace handling.\n- Enhanced `DaffodilXMLLoader` and related classes with `removeComments` and `removeProcInstr` flags\n- Add `TestStringAsXmlValidator` with a unified validator for namespace and non-namespace cases.\n- Add getScalaResult for `TDMLInfosetOutputterAll`\n- add clarifying info to TDMLInfosetInputter TDML Exceptions in case of non-matches\n- undo type aware changes for ScalaXMLInfosetOutputter (the way it was adding namespace bindings for scalaXML was not exactly correct as it wasn\u0027t part of the child element\u0027s minimized scope. We found it would be too much trouble to implement correctly for scalaXML, so we decided to remove the functionality)\n- ensure stringAsXml file line endings are not normalized in windows\n- change generic exception to InvalidInfosetException\n- Adjusted `.gitattributes` to prevent line ending normalization for specific test files.\n- Verify prefixes resolve to the same namespaces when checking prefixes\n- NullInfosetInputter should be receiving UTF-8 bytes for its events\n\nDeprecation/Compatibility\n- Instead of ScalaXMLInfosetInputter/Outputter being the default inputter/outputter for TDML Runner, it is now XMLTextInfosetInputter/Outputter since it supports stringsAsXml feature\n- We check the actual infoset for the presence of XMLTextInfoset.stringAsXML(currently stringAsXML) and don\u0027t normalize CRLF to LF in for that element\n\nDAFFODIL-2909\n"
    },
    {
      "commit": "b9fb1e53ba95cdf5727495cf80a8f768660cb71c",
      "tree": "c0d0544ba54b0fe400ddfe79a0878971ee864499",
      "parents": [
        "edee1e2e1a609194110f0e6f87e91decd6f0cbab"
      ],
      "author": {
        "name": "Guichard Desrosiers",
        "email": "gdesrosiers@owlcyberdefense.com",
        "time": "Tue May 05 21:05:06 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri May 22 12:15:36 2026 -0400"
      },
      "message": "Fix duplicated TDML exception output and simplify exception handling\n\nTDMLException previously embedded cause message text in the outer\nexception message while also passing the same cause into the Java\nException cause chain. This resulted in duplicate output, where the\nsame error appeared both in the exception message and again in the\n\"Caused by:\" section.\n\n-Simplified TDMLException to support two construction paths only:\n one for explicit message strings, and one for wrapping a Throwable.\n Removed the causes field from the TDMLException trait and use cause\n from TDMLExceptionImpl constructor parameter.\n-Also removed the constructor that accepted multiple causes. Callers\n that previously passed multiple exceptions now aggregate their\n messages into a single newline-delimited message before constructing\n the string-based exception.\n-Additionally updated TDMLRunner to catch XMLDifferenceException\n directly when calling XMLUtils.compareAndReport, since that method\n specifically throws XMLDifferenceException.\n\nDAFFODIL-3078\n"
    },
    {
      "commit": "edee1e2e1a609194110f0e6f87e91decd6f0cbab",
      "tree": "6a421a415a97c523633210a9e05f0e0c9c0638cf",
      "parents": [
        "d8bc0c199d96ffd3ca9f72a63bb899aedb8fb8b8"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Apr 17 12:34:58 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri May 22 12:14:27 2026 -0400"
      },
      "message": "Convert NodeInfo.Nothing from a lazy val to an object\n\nThe NodeInfo.Nothing instance has a `children` Delay member that never\nactually gets evaluated. This is fine and not unexpected since Nothing\ndoesn\u0027t really have children and so nothing ever attempts to access or\nneed the member.\n\nHowever, in some cases it is possible for the Nothing val to be\nreferenced in a serialized class (e.g. in a DPath expression object that\nstores argument types such as fn:round-half-to-even) when creating a\nsaved parser. And because this Nothing has a Delay that is never\nevaluated, it leads to an \"object not initialized\" exception, preventing\ncreating a saved parser.\n\nTo fix this issue, this changes NodeInfo.Nothing from a lazy val to an\nobject. Whether we use a lazy val or an object here really does not make\na difference with how we use it, but in Scala lazy vals are serialized\nwhile objects are not--Scala only serializes object names which are used\nto look up and return the singleton instance during deserialization.\nThis allows us to avoid all possible serialization issues, and also\nchanges Nothing to match the same pattern as all the other TypeNodes.\n\nDAFFODIL-3079\n"
    },
    {
      "commit": "d8bc0c199d96ffd3ca9f72a63bb899aedb8fb8b8",
      "tree": "96b1385bcdc0f20734f78178b97bb44fcbf68a60",
      "parents": [
        "81104ca865f1d669a768ac05a1cd9212ec3dcc47"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Apr 08 10:38:54 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Apr 08 13:11:58 2026 -0400"
      },
      "message": "Add support for infoset dataType member\n\n- Add new setIncludeDataType and getIncludeDataType functions to the\n  InfosetOutputter API to configure if InfosetOutputters should include\n  the dataType member when creating infosets. It is left up to specific\n  InfosetOutputter implementations if an how to represent this member in\n  their infosets\n- The XMLTextInfosetOutputter and ScalaXMLInfosetOutputter are updated\n  to include the xsi:type attribute when this is enabled. They also\n  define the \"xsi\" namespace prefix if not already defined. Other\n  InfosetOutputters do not currently implement this.\n- Update the TDML Runner to enable this flag for all infoset outputters.\n  The TDML Runner already supports type-aware comparisons when xsi:type\n  is provided, so enabling this allows all TDML test to use type aware\n  logic. This means expected infosets no longer need to include xsi:type\n  when for type-aware comparisons.\n- Add new \"infosetIncludeDataType\", which calls setIncludeDataType if\n  set. This allows enabling this feature without needing to modify code\n  to call the new API function\n- Fix TDML tests that used an xsi:type value that did not match\n  the actual value\n- Discovered a bug where xs:decimal elements could be output with\n  scientific notation. This is not legal in XSD so these elements are\n  now output using .toPlainString\n\nDeprecation/Compatibility\n\n- Previous versions of Daffodil could sometimes use scientific notation\n  when outputting elements with an xs:decimal type, which XSD does not\n  allow. Daffodil now always outputs xs:deicmal types using standard\n  decimal notation without any exponent part.\n\nDAFFODIL-182\n"
    },
    {
      "commit": "81104ca865f1d669a768ac05a1cd9212ec3dcc47",
      "tree": "f84a77d2c72cfe6f15d59e21f0d08871af998421",
      "parents": [
        "deb3f6d6aa035da09b2e86659d73a2e3918485e5"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Apr 08 10:37:21 2026 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Apr 08 11:36:49 2026 -0400"
      },
      "message": "Maintain empty/non-elements in stringAsXml output\n\nThe stringAsXml implementation currently converts both `\u003cfoo/\u003e` and\n`\u003cfoo\u003e\u003c/foo\u003e` XML strings to `\u003cfoo/\u003e`. Although stringAsXml does not\nguarantee the resulting XML will be always be the same, we do try to\nkeep keep the result as close to the original where reasonable.\n\nBy casting the existing XMLReader/Writer classes to XMLStreamReader2 and\nXMLStreamWriter2, we can used additional APIs to detect empty elements\nand write them as empty, with all other elements written with full\nendings.\n\nDAFFODIL-3074\n"
    },
    {
      "commit": "deb3f6d6aa035da09b2e86659d73a2e3918485e5",
      "tree": "9fe35922c0a800bfcf51d6355d3d0ed249e141ec",
      "parents": [
        "b2431b6df049370d1f8165fc2438d61df5c617f6"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Feb 27 14:22:50 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Mar 10 10:01:52 2026 -0400"
      },
      "message": "Update copyright year to 2026\n\nDAFFODIL-3076\n"
    },
    {
      "commit": "b2431b6df049370d1f8165fc2438d61df5c617f6",
      "tree": "7e1e6be86ee321734618bafffef54ba0a513ea4c",
      "parents": [
        "32bc90ffb6ae31960831388a7d00b2f790d42e77"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Feb 25 14:05:31 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Mar 04 13:52:42 2026 -0500"
      },
      "message": "Replace `ParseError` with `MultiException` in `FuzzData`\n\n- Consolidated exception handling under `handleKnownException` to manage both `MultiException` and `ParseError`. This is because MultiException.toss can throw either a ParseError or a MultiException\n- Adjusted related method and variable names for consistency.\n\nDAFFODIL-3075\n"
    },
    {
      "commit": "32bc90ffb6ae31960831388a7d00b2f790d42e77",
      "tree": "6f7fd45eeaf2ae2b3f1a990d39627d0ab61b429f",
      "parents": [
        "41e02e7a0e3b7f405a047916b6c752d93147cded"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Feb 20 12:22:30 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Feb 23 11:42:20 2026 -0500"
      },
      "message": "Avoid possible serialization issues related to ArraySeq\n\nThe ArraySeq class has been known to cause deserialization failures\nrelated to saving/reloading parsers because the class is written in a\nway as to cause serialization sensitivity to changes in the class.\n\nWe don\u0027t use ArraySeq in any of our serialized classes, but Scala\nimplements varargs using ArraySeq, and we do use varargs in the\nserialized CompiledDPath class. This can make serialized objects\nsensitive to different versions of Scala if they make changes to the\nclass.\n\nWe do not need any of the features provided by ArraySeq or varargs, so\nthis converts the ops member of CompiledDPath to an Array, avoiding\npotential deserialzation issues with future versions of Daffodil.\n\nDAFFODIL-3073\n"
    },
    {
      "commit": "41e02e7a0e3b7f405a047916b6c752d93147cded",
      "tree": "f0f45c0bc25f1c763763ee11c581079ac9b6e1ab",
      "parents": [
        "fadf1f1a06843997c57e82dcb0744eb8abfa2cfe"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Feb 19 13:09:26 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Feb 23 11:39:03 2026 -0500"
      },
      "message": "Remove unnecessary `sed` command from SonarCloud configuration in `main.yml`\n\n- it was leftover cruft from dependabot change and results in coverage not being generated\n\nDAFFODIL-3068\n"
    },
    {
      "commit": "fadf1f1a06843997c57e82dcb0744eb8abfa2cfe",
      "tree": "6661b0d2cbd7a850d5ce37504db75f468a6d8ec8",
      "parents": [
        "78517e4e7e745197d4125579e5f47edcf02925f9"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Feb 18 12:12:30 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Feb 19 09:20:44 2026 -0500"
      },
      "message": "Update `main.yml` and `sonar-project.properties` for improved SonarCloud integration\n\n- use environment vars `SONAR_JAVA_JARS` and `SONAR_TEST_JAVA_JARS` for dependency resolution.\n- Updated workflow to dynamically generate environment variables for jar dependencies during scans, as well as scala version\n- Update reportPaths to use env var SONAR_SCALA_VERSION in case of scala version updates\n- Modified `.sonar-project.properties` to reference new environment variables for library paths.\n\nDAFFODIL-3071, DAFFODIL-3068\n"
    },
    {
      "commit": "78517e4e7e745197d4125579e5f47edcf02925f9",
      "tree": "0f93f073a6a148888b802fba0ad09f08459ac49b",
      "parents": [
        "fc05b68e08f240686588209dda7401097372a16a"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Feb 16 14:28:55 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Feb 17 16:42:00 2026 -0500"
      },
      "message": "Remove old settings from `build.sbt`\n\n- Deleted settings for `transitiveClassifiers`, `retrieveManaged`, `useCoursier`, `unmanagedBase`, `sourceManaged`, and `resourceManaged` as they are no longer required\n\nDAFFODIL-3071\n"
    },
    {
      "commit": "fc05b68e08f240686588209dda7401097372a16a",
      "tree": "7a83a6ecee4395c65e122f04605d6891994ffb37",
      "parents": [
        "498c0b43f37814fbf077fa686c7cb1f4cc9a6177"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Feb 09 12:37:54 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Feb 16 15:24:33 2026 -0500"
      },
      "message": "Enhance InfosetNoDataException message to include circular dependencies\n\n- Introduced test cases (`truncatedString_1`, `truncatedString_2`, `truncatedString_3`, `truncatedString_4`) to check different scenarios that the circular dependency occurs and doesn\u0027t occur\n\nDAFFODIL-1598\n"
    },
    {
      "commit": "498c0b43f37814fbf077fa686c7cb1f4cc9a6177",
      "tree": "d87e380d8fc0aec86fe112de959d140f4dd79d80",
      "parents": [
        "ebdadf99a40a7f233eff397fcb52cfe5fff05611"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Feb 03 15:22:59 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Feb 16 15:06:04 2026 -0500"
      },
      "message": "Set max-parallel for matrix GitHub action jobs\n\nIn accordance with ASF policy, set job.strategy.max-parallel to the\nrecommended 15 or less for jobs that specify a matrix. The value is set\nto the number of expected jobs for the matrix, with a maximum of 15.\n\nDAFFODIL-3069\n"
    },
    {
      "commit": "ebdadf99a40a7f233eff397fcb52cfe5fff05611",
      "tree": "f72fef758499f25a3b3addb0a8705d41eebc3a77",
      "parents": [
        "949122e1466405b1bc0c715368b954ff6089a5b0"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Feb 05 08:56:45 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Feb 16 15:05:33 2026 -0500"
      },
      "message": "Prepare for 4.2.0 development\n"
    },
    {
      "commit": "949122e1466405b1bc0c715368b954ff6089a5b0",
      "tree": "9dfa850f55dea684a8543ea863e9a434ad1d6090",
      "parents": [
        "75801c1405432433e5db27f465bd87ac335c5b08"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Jan 28 11:01:18 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Jan 28 14:03:10 2026 -0500"
      },
      "message": "Prepare for 4.1.0\n"
    },
    {
      "commit": "75801c1405432433e5db27f465bd87ac335c5b08",
      "tree": "3b5c3b828bfd8dee31339ab94edece6138ff8123",
      "parents": [
        "96e73e152bb087394b234fc9c3973a00eb961215"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Jan 21 15:04:21 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Jan 28 14:01:44 2026 -0500"
      },
      "message": "Add warning for `dfdl:occursCountKind\u003dparsed` without `dfdl:separatorSuppressionPolicy\u003danyEmpty`\n\n- Introduced `TestImplicitvParsed` including TDML tests for `occursCountKind\u003dparsed` and `occursCountKind\u003dimplicit`.\n- Added \"SeparatorSuppressionPolicyError\" warning to enforce `separatorSuppressionPolicy\u003d\"anyEmpty\"` for `occursCountKind\u003dparsed`.\n- Implicit with SSP\u003dtrailingEmpty works as expected, with it looking for the prefix / for absent arre1 in e2 in the added implicitvparsed.tdml as per the spec (Table 47: RepDef(min) ~ Rep(max - min), which means RepDef(1) followed by Rep(2), so it expects the separator for the last empty arre1 element), so the right thing to do if we don\u0027t want the empty trailing / is to use anyEmpty\n- Add SSP warning and specify error message in SequenceGroupDelimiters TDML test\n- Updated test cases to align with these changes.\n\nDAFFODIL-2801\n"
    },
    {
      "commit": "96e73e152bb087394b234fc9c3973a00eb961215",
      "tree": "cf7c72823da4d0d9995a30d5182ce88fed8f069d",
      "parents": [
        "8851534a9425c3cf1932379705bdef48d02ebcb5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jan 27 19:50:40 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Jan 28 11:55:22 2026 -0500"
      },
      "message": "Bump msys2/setup-msys2 from 2.29.0 to 2.30.0\n\nBumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.29.0 to 2.30.0.\n- [Release notes](https://github.com/msys2/setup-msys2/releases)\n- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/msys2/setup-msys2/compare/fb197b72ce45fb24f17bf3f807a388985654d1f2...4f806de0a5a7294ffabaff804b38a9b435a73bda)\n\n---\nupdated-dependencies:\n- dependency-name: msys2/setup-msys2\n  dependency-version: 2.30.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8851534a9425c3cf1932379705bdef48d02ebcb5",
      "tree": "2ad131d51ef5a7d80496d7745e787b1facce1b83",
      "parents": [
        "8da05647817fa2e007686c281d9a1fb98a52f2f4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jan 27 19:50:36 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Jan 28 11:54:40 2026 -0500"
      },
      "message": "Bump scalacenter/sbt-dependency-submission from 3.1.0 to 3.2.1\n\nBumps [scalacenter/sbt-dependency-submission](https://github.com/scalacenter/sbt-dependency-submission) from 3.1.0 to 3.2.1.\n- [Release notes](https://github.com/scalacenter/sbt-dependency-submission/releases)\n- [Commits](https://github.com/scalacenter/sbt-dependency-submission/compare/64084844d2b0a9b6c3765f33acde2fbe3f5ae7d3...f43202114d7522a4b233e052f82c2eea8d658134)\n\n---\nupdated-dependencies:\n- dependency-name: scalacenter/sbt-dependency-submission\n  dependency-version: 3.2.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8da05647817fa2e007686c281d9a1fb98a52f2f4",
      "tree": "78af6289751f7bed4cc4519e5b2446dced40dc5b",
      "parents": [
        "f016d39733c33527a40d6643d63bb0ad2051633a"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Wed Jan 28 16:00:20 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Jan 28 11:54:21 2026 -0500"
      },
      "message": "Update sbt, scripted-plugin to 1.12.1\n"
    },
    {
      "commit": "f016d39733c33527a40d6643d63bb0ad2051633a",
      "tree": "5f62816b1b11583218c69b0c0abf158c11a66411",
      "parents": [
        "7a2e683cc57abcf7f098d8dbb37a4e485cfb72d2"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Wed Jan 28 15:59:13 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Jan 28 11:53:38 2026 -0500"
      },
      "message": "Update os-lib to 0.11.7\n"
    },
    {
      "commit": "7a2e683cc57abcf7f098d8dbb37a4e485cfb72d2",
      "tree": "c05b2bdbb068a869abc7dca0a186ae35118c5600",
      "parents": [
        "d027bda067984e88d9f868c78b925b946866e5e3"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Tue Jan 27 13:41:51 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 14:04:05 2026 -0500"
      },
      "message": "Update scala3-library to 3.3.7\n"
    },
    {
      "commit": "d027bda067984e88d9f868c78b925b946866e5e3",
      "tree": "8e26ffed56c31a12e314add98826a0e39678c633",
      "parents": [
        "134fef3878d2c2649be0dad8470c5c736c2b6614"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Thu Sep 11 13:59:28 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:04:44 2026 -0500"
      },
      "message": "Update jline to 3.30.6\n"
    },
    {
      "commit": "134fef3878d2c2649be0dad8470c5c736c2b6614",
      "tree": "80a92392ff55e7cfa30539216d044fa908f900d5",
      "parents": [
        "f64ef6cf7f5c0a4aabd8eca5af95c4d0527b2366"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Wed Sep 17 13:44:57 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:03:11 2026 -0500"
      },
      "message": "Update scala-logging to 3.9.6\n"
    },
    {
      "commit": "f64ef6cf7f5c0a4aabd8eca5af95c4d0527b2366",
      "tree": "f8e394706bda54b6bc58096c0f05fcb55aba0e92",
      "parents": [
        "41b21bb70af94ccc99d232f733806a1ea73dbedb"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Sat Sep 13 13:41:03 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:01:11 2026 -0500"
      },
      "message": "Update Saxon-HE to 12.9\n"
    },
    {
      "commit": "41b21bb70af94ccc99d232f733806a1ea73dbedb",
      "tree": "98a19021476ea6177288573d7a3d1191cd85608a",
      "parents": [
        "62465f4391dc48d6dc40ab22a0ecdd5c2cb7c34e"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Mon Oct 27 14:04:14 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:00:56 2026 -0500"
      },
      "message": "Update os-lib to 0.11.6\n"
    },
    {
      "commit": "62465f4391dc48d6dc40ab22a0ecdd5c2cb7c34e",
      "tree": "eda0b6b23f6ff9f6df4a3b4337c985af6f705295",
      "parents": [
        "75b26e42f91137bb84616c4342d4ac8a65923f59"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Sat Nov 08 14:46:23 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:00:48 2026 -0500"
      },
      "message": "Update commons-io to 2.21.0\n"
    },
    {
      "commit": "75b26e42f91137bb84616c4342d4ac8a65923f59",
      "tree": "098f2e151adaf691c3828db4d28b5c9c2827f1d9",
      "parents": [
        "b8bd391b583c9a5d6d7c97806bf67f5ac6f0bb20"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Mon Nov 17 17:08:52 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:00:40 2026 -0500"
      },
      "message": "Update scallop to 5.3.0\n"
    },
    {
      "commit": "b8bd391b583c9a5d6d7c97806bf67f5ac6f0bb20",
      "tree": "d8cd6f725bc0ecda962421f483077693352e1204",
      "parents": [
        "24541b577d439a92b5de658debdbcc03be629f0f"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Fri Jan 09 15:17:36 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 13:00:31 2026 -0500"
      },
      "message": "Update icu4j to 78.2\n"
    },
    {
      "commit": "24541b577d439a92b5de658debdbcc03be629f0f",
      "tree": "25052c0ee42a3b5e337f9724d9f57f53d6e09a1e",
      "parents": [
        "9246cf4a45b910b61c9939f8540916c4267ed53b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jan 26 21:26:38 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 12:38:45 2026 -0500"
      },
      "message": "Bump actions/checkout from 5.0.0 to 6.0.2\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.2.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...de0fac2e4500dabe0009e67214ff5f5447ce83dd)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 6.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "9246cf4a45b910b61c9939f8540916c4267ed53b",
      "tree": "974e32819a76d69f77cea7054172174711af37cd",
      "parents": [
        "32c7ee853d2fb775019a247ec26dead23db173c2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jan 26 21:26:48 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 12:36:55 2026 -0500"
      },
      "message": "Bump codecov/codecov-action from 5.5.1 to 5.5.2\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.1 to 5.5.2.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/5a1091511ad55cbe89839c7260b706298ca349f7...671740ac38dd9b0130fbe1cec585b89eea48d3de)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-version: 5.5.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "32c7ee853d2fb775019a247ec26dead23db173c2",
      "tree": "c4ae366f84c5506dd83d73651d0043cc1b3f90e7",
      "parents": [
        "ce8eb86a5df6d9c000c0db54d699b83c4dae560c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jan 26 21:26:25 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 12:36:45 2026 -0500"
      },
      "message": "Bump actions/setup-java from 5.0.0 to 5.2.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.0.0 to 5.2.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/dded0888837ed1f317902acf8a20df0ad188d165...be666c2fcd27ec809703dec50e508c2fdc7f6654)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ce8eb86a5df6d9c000c0db54d699b83c4dae560c",
      "tree": "4d5dba6c1db5916f095ea793cb705063ff229f3b",
      "parents": [
        "52102af997e7d216d33728bf0c2ebfe9e6fc7d5e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 09 19:01:54 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 12:36:33 2026 -0500"
      },
      "message": "Bump actions/labeler from 5.0.0 to 6.0.1\n\nBumps [actions/labeler](https://github.com/actions/labeler) from 5.0.0 to 6.0.1.\n- [Release notes](https://github.com/actions/labeler/releases)\n- [Commits](https://github.com/actions/labeler/compare/8558fd74291d67161a8a78ce36a881fa63b766a9...634933edcd8ababfe52f92936142cc22ac488b1b)\n\n---\nupdated-dependencies:\n- dependency-name: actions/labeler\n  dependency-version: 6.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "52102af997e7d216d33728bf0c2ebfe9e6fc7d5e",
      "tree": "71d8697f485474e32a2fa93c8ab34c5a6a04931e",
      "parents": [
        "6dd0f5a98902b11ed2ef8a1c758522279931ae81"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Dec 09 19:01:57 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 12:19:09 2026 -0500"
      },
      "message": "Bump SonarSource/sonarqube-scan-action from 5.3.1 to 7.0.0\n\nBumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 5.3.1 to 7.0.0.\n- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)\n- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25...a31c9398be7ace6bbfaf30c0bd5d415f843d45e9)\n\n---\nupdated-dependencies:\n- dependency-name: SonarSource/sonarqube-scan-action\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "6dd0f5a98902b11ed2ef8a1c758522279931ae81",
      "tree": "4130c97f22c817e2d7498989f99c57735ab9a2cb",
      "parents": [
        "5360e832bbf5f84e4d8e759a0405cfef670926ef"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Tue Jan 13 20:59:55 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 11:59:57 2026 -0500"
      },
      "message": "Update sbt-scoverage to 2.4.4\n"
    },
    {
      "commit": "5360e832bbf5f84e4d8e759a0405cfef670926ef",
      "tree": "47cc6096be53bf194f87a010466e2747ad9bfb67",
      "parents": [
        "304c165ef7485619dbfbb386a5f41f3049d96d1e"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Fri Oct 31 14:10:09 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 11:58:14 2026 -0500"
      },
      "message": "Update sbt-scalafmt to 2.5.6\n"
    },
    {
      "commit": "304c165ef7485619dbfbb386a5f41f3049d96d1e",
      "tree": "148ad21341af241c681a74ecefdb047fa0fda392",
      "parents": [
        "cebee437fb43ae1ff82f8a620bcb640e8613bb54"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Tue Jan 13 14:57:31 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 11:57:26 2026 -0500"
      },
      "message": "Update sbt-native-packager to 1.11.7\n"
    },
    {
      "commit": "cebee437fb43ae1ff82f8a620bcb640e8613bb54",
      "tree": "fd7392d441c36b2f0a6e553d31f04297272d5289",
      "parents": [
        "4dc86dca639e1d71c0caff46f01352389a2774df"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Mon Jan 05 18:13:53 2026 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 11:57:10 2026 -0500"
      },
      "message": "Update sbt-unidoc to 0.6.1\n"
    },
    {
      "commit": "4dc86dca639e1d71c0caff46f01352389a2774df",
      "tree": "81f157790ba0b38475e4c6f5157e8487cd3eb9b6",
      "parents": [
        "e6b76fbc8bed5a794e7b2826bff81968114f2d2b"
      ],
      "author": {
        "name": "Scala Steward",
        "email": "scala_steward@virtuslab.com",
        "time": "Sun Oct 05 20:58:29 2025 +0000"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 27 11:55:19 2026 -0500"
      },
      "message": "Update sbt, scripted-plugin to 1.11.7\n"
    },
    {
      "commit": "e6b76fbc8bed5a794e7b2826bff81968114f2d2b",
      "tree": "045bf2ca864b41c894865e6a7e6388ade19c27f7",
      "parents": [
        "01e5483d7640ab1bd73d384daa9f2f71dc94ba0b"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Jan 15 12:45:03 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Jan 15 13:24:42 2026 -0500"
      },
      "message": "Refactor CLI performance command to reduce overhead\n\nIn the CLI performance command, instead of creating one Future per\nparse/unparse, this now creates one Future per thread, reducing the\nnumber of Futures from potentially hundreds of thousands to a small\nhandful. Test data is now added to a ConcurrentLinkedQueue and the\nFutures read from this queue until empty. Not only does this avoid a\nlarge number of Future allocations, it also more closely mimics common\nreal world usage where there is a single serial producer and multiple\nparallel consumers.\n\nAlso no longer store the results of each parse/unparse run to avoid\nallocations. Instead we just keep track of the number of files processed\nand the total latency and use those numbers to calculate average latency\nat the end.\n\nAlso removes the Either allocation, match/case, and Timer functions in the\ncritical loop.\n\nReports vary about whether all these changes improve performance numbers\nbut they do not seem to make performance worse. And they do make the\nresults of profiling more clear with less allocations.\n\nDAFFODIL-3064\n"
    },
    {
      "commit": "01e5483d7640ab1bd73d384daa9f2f71dc94ba0b",
      "tree": "e0317932d1e0eac9af8fa640b08394b79b9f3295",
      "parents": [
        "62d9bb016b8893d3906763a701c0f71c0c4c239f"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Jan 12 12:01:08 2026 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jan 15 12:02:32 2026 -0500"
      },
      "message": "Update java api to declare thrown checked exceptions\n\n- add InvalidGeneratorException for errors during forLanguage as InvalidParserException is only for reload call\n- ensure DaffodilParseXMLReader\u0027s exception declarations match with XMLReader exception declarations\n- allow global OVC, replace thrown error for onPath, with stored error\n- ensure `SchemaSetRuntimeData` cannot have null parser/unparser.\n- Adjust `UnsuppressableException` to extend `RuntimeException` since our Assert macros like aborts are challenging to declare. They are typically issued during runtime anyway, so it\u0027s more fitting for them to be labeled as such\n- fix some broken javacode to use @code instead of @link\n\nDeprecation/Compatibility\n- Previously we didn\u0027t declare checked exceptions that could have been thrown by the API code. Now that we declare them, users of the API will need to explicitly catch these exceptions.\n- Unlike in previous versions of Daffodil, dfdl:outputValueCalc is now allowed on global/root elements\n\nDAFFODIL-2287\n"
    },
    {
      "commit": "62d9bb016b8893d3906763a701c0f71c0c4c239f",
      "tree": "1d4d5479d83a0ef4491486e0b7b5813c61aafac3",
      "parents": [
        "afe49bf3e782b90c487b1a56cda265066b7f102e"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Nov 24 17:17:59 2025 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Jan 15 11:45:51 2026 -0500"
      },
      "message": "Add logic for separator/initiator/prefixed/terminator alignment\n\n- Implement logic to calculate prefix, infix, and postfix separator alignments and lengths in sequence terms.\n- Added new alignment logic/test cases covering initiator alignment, prefixed length elements, terminator alignment and value MTA (for optimization) behavior.\n- Add new variables to more accurately represent alignment, such as contentEndAlignment, which is useful for delimiter text alignment before the terminator and trailing skip is considered.\n- Updated schemas and TDML files to include test data for new alignment scenarios.\n\nDAFFODIL-2295, DAFFODIL-3056, DAFFODIL-3057\n"
    },
    {
      "commit": "afe49bf3e782b90c487b1a56cda265066b7f102e",
      "tree": "7ff75581234e5a4d5f9e37378dd9c2b8bcc8adb6",
      "parents": [
        "f5939dd605a926ce778ba656e211c4dfe237b12d"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Dec 31 10:09:45 2025 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Jan 06 15:36:10 2026 -0500"
      },
      "message": "Configure asf.yaml notification.jira_options\n\nThe default asf.yaml notification.jir_options setting defaults to\ninclude \"worklog\". This means that anytime someone comments on a pull\nrequest that contains a JIRA ticket number in the title it updates the\ntickets worklog, which sends out an email. This leads to excessive\nemails for little gain.\n\nThis configures the setting to just \"link\" and \"label\", which means it\nwill add a link to the PR in JIRA and add a \"pull-request-available\"\nlabel. This should reduce the amount of emails but still take advantage\nof JIRA integration.\n\nDAFFODIL-3062\n"
    },
    {
      "commit": "f5939dd605a926ce778ba656e211c4dfe237b12d",
      "tree": "e1479b66ffa11e1885043f6048a7627dc51ce51a",
      "parents": [
        "d28fb524a7187a03c662381f5e222e4086461f9c"
      ],
      "author": {
        "name": "Tejas Tiwari",
        "email": "tt160705@outlook.com",
        "time": "Mon Jan 05 07:27:05 2026 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Jan 05 09:22:07 2026 -0500"
      },
      "message": "Remove duplicated TDML content under test space/test 1\n\nRename the TDML file for clarity, and retain coverage\nfor schemas and TDML files located in paths with spaces.\n\nSigned-off-by: Tejas Tiwari \u003ctt160705@outlook.com\u003e\n\nDAFFODIL-2539\n"
    },
    {
      "commit": "d28fb524a7187a03c662381f5e222e4086461f9c",
      "tree": "22a124df5fb9e87a798021770bd91f1d3cd1db2f",
      "parents": [
        "fadde324222e23150f701853fb2f1a8caef81dbe"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Dec 19 07:59:39 2025 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Dec 19 08:22:59 2025 -0500"
      },
      "message": "Avoid large allocations related to specified length strings\n\nWhen we need to parse a specified length string, we currently allocate a\nbuffer that can be reused to store the decoded string. The size of this\nbuffer is based on the maximumSimpleElementSizeInCharacters tunable,\nwhich defaults to a fairly large size (1MB) that can be slow and put\nadded pressure on the garbage collector. Fortunately, this buffer is\nallocated using a LocalBuffer so it is reused during a parse so at worst\nthere is only one allocation per parse. But when parsing many small\nfiles that contain specified length strings, this overhead can become\nnoticable. And 1MB is likely orders of magnitude larger than the vast\nmajority of data formats will need for any single string element.\n\nTo address this, instead of using maximumSimpleElementSizeInCharacters,\nwe calculate how many characters the string could possible decode to\ngiven the current bit position, bit limit, and encoding, and use that as\nthe buffer size to request. This way we only ever request and allocate a\nlarge buffer is one is ever needed, which should be rare.\n\nNote that this new logic requires bitLimit as part of specified string\nparsing. That isn\u0027t available in the edge case of specified length\ncomplex nillables. The specified length nil parser is modified to\nhandle this case.\n\nThis also modifies the LocalBuffer to allocate buffers of a reasonably\nlarge minimum size of 1K. This way we will likely only ever need to\nallocate a single buffer rather than allocating small buffers that have\nto be reallocate as larger buffers are needed.\n\nTested with small NITF files (\u003c4000 bytes) that contain lots of fixed\nlength strings, this saw about 30%+ performance improvements. Files\ntested as large as 8000 bytes saw little or no change in performance.\n\nDAFFODIL-2851\n"
    },
    {
      "commit": "fadde324222e23150f701853fb2f1a8caef81dbe",
      "tree": "b19a398e326bb33cb75d4c760476588026b1dd4e",
      "parents": [
        "662f307e66a33c142c1d66364ea50c20ef6c969f"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Dec 04 09:03:48 2025 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Dec 17 13:57:34 2025 -0500"
      },
      "message": "SDE if dfdlx:bitAnd, dfdlx:bitOr, or dfdlx:bitXor arguments do not match signedness\n\nThese functions are not well defined if the arguments do not match in\nsignedness. This modifies these functions to create a schema definition\nerror if the functions do not match in signedness, which matches the\nextension documentation.\n\nDAFFODIL-3049\n"
    },
    {
      "commit": "662f307e66a33c142c1d66364ea50c20ef6c969f",
      "tree": "59287000df4e6c5c4b0ca85c9c9b1adbd94fa4d0",
      "parents": [
        "67053f9fc3ab0e1d778829caceb7ef142c1ba00e"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Dec 08 10:01:06 2025 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Dec 15 07:44:12 2025 -0500"
      },
      "message": "Remove the release candidate container\n\nThe release candidate container was only kept around as a backup in case\na project was not able to use the new GitHub actions based release\ncandidate workflow. All projects have now successfully published\nartifacts using the new workflow, so we no longer need this backup. This\nremoves the container.\n\nDAFFODIL-3058\n"
    },
    {
      "commit": "67053f9fc3ab0e1d778829caceb7ef142c1ba00e",
      "tree": "d1735fb801b1667a1f618e9775bec0711893277c",
      "parents": [
        "252f17c60d334b68f1036c126033823400aaeff5"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Oct 16 13:52:32 2025 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Fri Nov 14 16:40:43 2025 -0500"
      },
      "message": "Add EVDP SDW if EVDP is not both\n\n- Introduced new `emptyValueDelimiterPolicyWarning` enumeration in `dafext.xsd`.\n- Implemented related validation logic in `ElementBaseGrammarMixin`.\n- Added test cases to cover new behavior for `dfdl:emptyValueDelimiterPolicy`.\n\nDAFFODIL-2205\n"
    },
    {
      "commit": "252f17c60d334b68f1036c126033823400aaeff5",
      "tree": "91f21bd5f5d711b4ae258ac9c3dec25e1c223ac7",
      "parents": [
        "f2b215939325af3f73093dbbc6494104ca14a330"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Tue Nov 05 13:30:17 2024 -0500"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Fri Nov 14 12:29:36 2025 -0500"
      },
      "message": "Add tunable to control UpStep resolving to arrays\n\n- Introduced `allowLastUpStepToResolveToArray` tunable and deprecatedLastUpStepToResolveToArray warning\n- Deprecated behavior of `UpStep` resolving to an array, SDWs if used; SDE is tunable is false\n- refactor UpStepExpression.compiledDPath for simplicity and clarity\n- move checkIfTargetIsLastStepAndArray to UpStepExpression, as it\u0027s only relevant to ..\n- Updated related tests\n\nDAFFODIL-2939\n"
    },
    {
      "commit": "f2b215939325af3f73093dbbc6494104ca14a330",
      "tree": "da6b72e9887eca26a3060a57164db9cb25383bfd",
      "parents": [
        "641972a94f855ac2780172dcc0a115344fff8d36"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Nov 07 06:30:14 2025 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Nov 13 14:38:23 2025 -0500"
      },
      "message": "Remove workaround for ICU-22303, fixed in ICU 78.1\n\nICU 77.1 and older had a bug where it would not correctly parse infinity\nor NaN if the text pattern had a decimal and it was required to match a\ndecimal point (which is enabled with strict parse policy). To workaround\nthis bug, we added logic to parse a number second time if the first\nfailed, but with different settings that did not require the decimal\npoint, which allows it to detect infinity/NaN. But this adds extra\noverhead and complexity.\n\nICU 78.1 fixed this bug, so we can now remove this workaround and avoid\nthe overhead related to a second parse. This also updates the test that\nwas added to detect if this bug was fixed, which now detects if ICU has\na regression and breaks the fix.\n\nDAFFODIL-2985\n"
    },
    {
      "commit": "641972a94f855ac2780172dcc0a115344fff8d36",
      "tree": "8753e6c9acc30c73d4b799d2dea14abdc1ebce01",
      "parents": [
        "0b3faf1870fbd022c8ebfc4d8b66eca862310e74"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Nov 06 08:16:36 2025 -0500"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Thu Nov 13 11:48:58 2025 -0500"
      },
      "message": "Add Java 25 LTS to CI, remove Java 24\n\nJava 24 was used in CI because it was the latest version of Java\navailable at the time. But Java 24 is not a LTS version--now that Java\n25 is out drop support for 24 and add 25. Note that Java 25 is LTS so we\nintend on maintaining support for this even as new versions of Java are\nreleased.\n\nDAFFODIL-3051\n"
    },
    {
      "commit": "0b3faf1870fbd022c8ebfc4d8b66eca862310e74",
      "tree": "5fa775d19169cd39715d2013ed8f5f8aab9cb3ab",
      "parents": [
        "d83a86086dec799bb4acb7e31a8617b5a597754a"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Oct 20 12:49:20 2025 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Nov 12 11:10:27 2025 -0500"
      },
      "message": "Fix choice branch selection per errata 5.60\n\n- Update unparser choice branch selection to match errata 5.60: prefer the first branch fully defaultable/OVC/optional instead of the first empty one.\n- Make required arrays return `true` for `isRequiredStreamingUnparserEvent` for consistency with defaulting behavior.\n- Add subset error when arrays with required elements have default values.\n- Rename `canUnparseIfHidden` for clarity—it isn’t limited to hidden elements.\n- Mark required but empty arrays as `PossiblyZeroArrayOccurrencesDetector` to suppress separators.\n- Simplify `optDefaultBranch` logic: `canUnparseIfNoEvents` subsumes `isOpen`/`isEmpty`.\n- Remove `MultipleChoiceBranches` warning—multiple valid defaults are allowed.\n- In `pneResolver`, handle arrays using `possibleSelfPlusNextLexicalSiblingStreamingUnparserElements`.\n- For complex elements, check both element and member requiredness for unparse eligibility.\n- Update CLIDebugger test schema to cover suspension cases.\n- Disallow hidden IVCs except in unselected choice branches; require IVCs in the infoset.\n- Remove support for hidden IVCs in sequences and add tests confirming hidden IVCs aren’t selected by `optDefaultBranch`.\n\nDiscussion\nHidden IVCs are elements computed during parse but never represented in the\n  infoset or needed during unparse. They are not meaningful for unparsing and\n  should not be supported. So we remove !e.isRepresented from the ElementBase\n  case. Unparsing should instead require IVC elements (minOccurs \u003d maxOccurs \u003d 1)\n  to appear in the infoset, even though their values are ignored at unparse\n  time. This behavior is more intuitive and is in line with IVC being MustExist in\n  unparserInfosetElementDefaultingBehavior and preserves expected branch selection semantics for\n  choice/dispatch constructs. Hidden IVCs remain permissible only within choice branches that\n  are not selected during unparse. Note that we will never select a default branch with a Hidden\n  IVC because it will always be canUnparseIfNoEvents\u003dfalse\n\nDeprecation/Compatibility\nPer DFDL errata 5.60, the first branch that can be unparsed entirely without any infoset events (i.e. made up of elements that are dfdl:outputValueCalc, option branches, zero length arrays, or defaultable elements) in a choice is selected, rather than prioritizing the first empty branch. Also, required arrays are no longer treated as optional and hidden IVCs are only permissible in choices.\n\nDAFFODIL-2324\n"
    },
    {
      "commit": "d83a86086dec799bb4acb7e31a8617b5a597754a",
      "tree": "0cfc0454b6104c95d5b0964e5ee209202a06a749",
      "parents": [
        "d0dcca04e48e71a59947558f96365a07ba9fd8b1"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Oct 31 11:34:01 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Oct 31 12:26:29 2025 -0400"
      },
      "message": "Fix property scoping of default properties\n\nSection 8.1.4, Rule 5 of the DFDL specification describes the\nscoping/resolution of default properties, saying:\n\n    Obtain applicable \"default\" properties from a dfdl:format annotation\n    on the xs:schema that contains the component (if such annotation is\n    present). Combine these with the current working set of \"default\"\n    properties, the latter overriding the former (that is, inner wins).\n    Result is a new working set of \"default\" properties.\n\nSo if a schema component does not explicitly define a property, we\nshould look for default properties on the innermost components first.\n\nBut Daffodil currently does the reverse, looking at the default\nproperties of the outermost components first. This happens because we\nbuild the default component property chain list recursively, prepending\nthe outermost components default chain to the list. This means wen we\nscan for default values we look at the outermost chain first.\n\nThe solution to this is to reverse the default component chain so that\nwhen we scan it for properties the innermost components appear first and\nare given precedence.\n\nNote that it is possible that some schemas unintentionally relied on\nthis buggy behavior, and it can sometimes be very difficult to figure\nout which properties changed due to the change in property resolution.\nTo aid in debugging, we keep the old reversed list and when a property\nis found in the default list, we also find it in the reversed default\nlist. If the property value found in the reversed list is different than\nfound using the correct list, this indicates the new logic could have\nchanged a relevant property value and we output a warning. In many cases\nthis can actually be ignored since the property values might not\nactually matter, but when things break this can be a useful diagnostic.\n\nDeprecation/Compatibility:\n\nWhen resolving default properties, Daffodil now gives precedence to\ninnermost referenced schema components rather than the outermost, as\ndescribed by section 8.1.4 of the DFDL specification. If this new logic\nresults in a different property value than previous versions of\nDaffodil then a schema definition warning is issued.\n\nDAFFODIL-2855\n"
    },
    {
      "commit": "d0dcca04e48e71a59947558f96365a07ba9fd8b1",
      "tree": "968e8e67bb06a495cf5572b30bd71f2a1f6ffc48",
      "parents": [
        "4e6383ebcf0605c8ffe1e496c09c1f69e9a1d493"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Fri Oct 03 15:54:12 2025 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Thu Oct 30 12:44:43 2025 -0400"
      },
      "message": "Fix check for trailingEmptyStrict policy validation\n\n- Resolved issues with trailingEmptyStrict violation when maxOccurs is \u00273\u0027 by improving checks for empty trailing optional elements.\n- Refactored code to introduce helper functions for condition checks with appropriate comments\n\nDAFFODIL-2217\n"
    },
    {
      "commit": "4e6383ebcf0605c8ffe1e496c09c1f69e9a1d493",
      "tree": "8e04b0dfe36cf1579c79ef808344966f579b56ef",
      "parents": [
        "3f31018d3a5756736c8408a173df31f97595bb43"
      ],
      "author": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Mon Sep 29 15:35:20 2025 -0400"
      },
      "committer": {
        "name": "olabusayoT",
        "email": "50379531+olabusayoT@users.noreply.github.com",
        "time": "Wed Oct 29 16:44:51 2025 -0400"
      },
      "message": "Add support for `dfdl:decimalSigned` property  to parsers/unparsers\n\n- Integrate `decimalSigned` checks across packed and IBM4690 decimal formats.\n- Update parser and unparser implementations to respect `decimalSigned` semantics (e.g., disallow negative values when `decimalSigned\u003d\"no\"`).\n- Update tests for `dfdl:decimalSigned`, removing `@Ignore` annotations for validation.\n- Adjust TDML error output expectations to include `decimalSigned` error messages.\n- Update `dfdl:decimalSigned` handling for delimited packed formats and add tests for such\n\nDeprecation/Compatibility\nWe added checks for when dfdl:decimalSigned\u003dno or dfdl:decimalSigned is not applicabl (as in the case of BCD numbers, which are always positive), but an attempt is made to parse to/unparse a negative number\n\nDAFFODIL-2957, DAFFODIL-2963\n"
    },
    {
      "commit": "3f31018d3a5756736c8408a173df31f97595bb43",
      "tree": "4e749d2e791f4963e2bda5332946db2defdb0070",
      "parents": [
        "104cb63977229540959d1a2412097890d6bf4b61"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Oct 13 07:57:28 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Oct 27 12:33:06 2025 -0400"
      },
      "message": "Add DaffodilUnparseContentHandler.finish() function to SAX unparse API\n\nWhen unparsing using the SAX API, if an XMLReader ends the parse early\n(usually due to invalid XML), then it stops sending events to the\nDaffodilUnparseContentHandler. This can lead to dangling threads since the\nDaffodilUnparseCotentHandler and SAXInfosetInputter are coroutines,\nwhich uses threads behind the scenes.\n\nTo fix this, we add a new finish() method to the\nDaffodilUnparseContentHandler which should be called by SAX unparse API\nusers after the XMLReader parse completes, regardless of success. For\nexample,\n\n    val contentHandler \u003d dp.newContentHandlerInstance(...)\n    xmlReader.setContentHandler(contentHandler)\n    try {\n      xmlReader.parse(...)\n    } catch (...) {\n      ...\n    } finally {\n      contentHandler.finish()\n    }\n\nThe new finish function cleans up the coroutines setting the next event\nto null, which indicates to the SAXInfosetInputter coroutine that no\nmore events are coming, ands leads to ending the unparse and the\ncoroutine. This now also means getUnparseResult will always return a\nresult, even if the XMLReader sees invalid XML, which makes our API a\nbit more consistent.\n\nNote that this discovered a case where the InfosetInputter.initialize()\nmethod could throw an UnparseError if there was no StartDocument event,\nwhich was not caught correctly. Fixing this requires moving the initialize call\ninside the try/catch block, which is after the UState is created.\nThis means the UState can no longer assert that the InfosetInputter is\ninitialized, but this isn\u0027t necessary UState creation to succeed, as\nlong as the infoset inputter is initialized shortly thereafter.\n\n- Change DaffodilUnhandledSAXException from a SAXException to a\n  RuntimeException. This exception generally indicatesa bug and so we\n  should not require that it be caught. Instead, it should be handled\n  just like any other RuntimeException.\n\nDeprecation/Compatibility:\n\nA new DaffodilUnparseContentHandler.finish() method is added for users\nof the SAX unparse API. This should be called at the end of the\nXMLReader.parse() method to to ensure all internal state is cleaned up\nand an unparse result is available. For example:\n\n    DaffodilUnparseContentHandler contentHandler \u003d dp.newContentHandlerInstance();\n    xmlReader.setContentHandler(contentHandler);\n    try {\n        xmlReader.parse(...):\n    } catch (...)\n        ...\n    } finally {\n        contentHandler.finish();\n    }\n    UnparseResult ur \u003d contentHandler.getUnparseResult();\n\nDeprecation/Compatibility:\n\nThe DaffodilUnhandledSAXException, which can be thrown when unparsing\nusing the SAX API and usually indicates a Daffodil bug, is changed from\na SAXException to a RuntimeException. It is no longer a checked\nexception and does not need to be caught. It should usually be handled\njust like any other unchecked RuntimeException.\n\nDAFFODIL-2768\n"
    },
    {
      "commit": "104cb63977229540959d1a2412097890d6bf4b61",
      "tree": "11e26c7fc1694c5a778d4ea125cf2bfb1aa6ca7e",
      "parents": [
        "25391d8bedc13bd13301e86a671e5d7299ccfc82"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Oct 20 08:11:46 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Oct 24 10:34:36 2025 -0400"
      },
      "message": "Ensure if-expressions converge to a primitive type\n\nCommit 6650eb918e modified if-expressions to use typeLeastUpperBound\ninstead of generalizeArgAndResultTypesForNumericOp to calculate the\nresult type of the if-expression. The thinking was that if-expressions\naren\u0027t really numeric operations and so shouldn\u0027t use the same logic.\n\nHowever, typeLeastUpperBound can return non-primitive types which can\nlead to issues. For example, if one branch of an if-expression returns\nxs:double and the other returns xs:int, then the least upper bound is\nSignedNumeric, which is not a primitive type and can lead to failures in\ncases where DPath operations require an actual type.\n\nWe fix this by reverting back to using generalizeArgAndResultTypesForNumericOp.\nAlthough this function is intended for numeric operations, the same\nlogic of promoting different numeric types to a single primitive type is\nneeded for if-expressions. And it is not too far fetched to say that if\nthe branches of an if-expression are numeric, then the if-expression is\nessentially a numeric operation.\n\nDAFFODIL-2574\n"
    },
    {
      "commit": "25391d8bedc13bd13301e86a671e5d7299ccfc82",
      "tree": "1c4aa46848dcf1b68cbceb24b17d2fce79672172",
      "parents": [
        "854a2929f5366b85ac506a341b49d76e8a1c6061"
      ],
      "author": {
        "name": "Michael Beckerle",
        "email": "mbeckerle@apache.org",
        "time": "Wed Feb 26 12:02:53 2025 -0500"
      },
      "committer": {
        "name": "Mike Beckerle",
        "email": "mbeckerle@apache.org",
        "time": "Fri Oct 17 13:07:27 2025 -0400"
      },
      "message": "Add dfdlx:currentPosition function\n\nThis is for some DFDL experiments with data formats\nthat DFDL can\u0027t currently represent.\n\nThe function is only meaningful at parse time.\n\nDAFFODIL-2974\n"
    },
    {
      "commit": "854a2929f5366b85ac506a341b49d76e8a1c6061",
      "tree": "7d636149ad9659c16b76c331dae98c83b3f6f9bc",
      "parents": [
        "059279320a71bdc61b3a6c928ccddf8988ba1332"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Oct 15 14:23:49 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Fri Oct 17 08:09:58 2025 -0400"
      },
      "message": "Prefer xs:double over xs:decimal for numeric operations\n\nCommit 6650eb918e modified numeric operations so that if the args did\nnot have any common parent type (e.g. xs:double and xs:int) then we\nalways promoted to xs:decimal. However, this caused tiny changes in\nprecision for some operations so could lead to minor backwards\nincompatibilities.\n\nThis modifies the logic so we only promote numeric operations to\nxs:decimal if one of the args is a xs:nonNegativeInteger, xs:integer, or\nxs:decimal (i.e. arbitrary-precision types). If neither arg is\narbitrary-precision, then it means both args have finite precision\n(xs:float, xs:double, xs:long, xs:unsignedLong, or subtype) and so we\npromote to xs:double. This should give more efficient performance,\nmaintains fixed-precision/width operations, and maintains backwards\ncompatibility with previous versions of Daffodil.\n\nDAFFODIL-2574\n"
    },
    {
      "commit": "059279320a71bdc61b3a6c928ccddf8988ba1332",
      "tree": "df806b1804918437ba520bae17eaf75ad69b46be",
      "parents": [
        "6650eb918e370cfb4eba1809939aca91684572cc"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Oct 15 07:28:13 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Oct 15 07:58:06 2025 -0400"
      },
      "message": "Fix dropping characters from escapeBlockStart partial matches\n\nIf a field defines escapeKind\u003d\"escapeBlock\" but looking for the\nescapeBlockStart characters has a partial match (i.e. it matches one or\nmore escapeBlockStart characters but not the whole string), then we\naccidentally drop the characters that partially matched. This is because\nwe do not reset the bit position back to where we started the scan.\n\nThe fix to this is to mark the current position before scan for a block\nstart, and if the scan fails then reset back to the original mark\nposition and do normal delimiter scanning to capture the field\ncharacters.\n\nDAFFODIL-1392\n"
    },
    {
      "commit": "6650eb918e370cfb4eba1809939aca91684572cc",
      "tree": "e5a3c559bcebe49af0aa28c7da6cc7b04f3fb514",
      "parents": [
        "1a51c31236fb22798b43ee84781a54416864bb47"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Oct 07 11:51:22 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Oct 15 07:54:14 2025 -0400"
      },
      "message": "Correct numeric operations\n\nThe current logic of numeric operations using in DFDL expressions is not\ncorrect in a couple of ways\n\nFirst, numeric operations using shorts and bytes are just broken and can\nleast to ClassCastExceptions. The main reason is that Java promotes\nshort and byte operations to ints but our logic did not account for\nthat, so data values had ints when we expected short/byte.\n\nSecond, the currently logic does not correctly implement the XPath 2.0\nspecification for numeric operations. For example, if two arguments have\na least upper bound of SignedNumeric we cast them to Double. An example\nwhere this breaks if xs:double and xs:decimal, which has a least upper\nbound of SignedNumeric. These should should be promoted to Decimal\ninstead of Double. We also did not handle underflow/overflow correctly.\nFor example, xs:long(xs:byte(255) + xs:byte(1)) results in an out of\nrange error rather than correctly returning xs:long(256).\n\nThis changes our numeric operations fix these problems and match the\nXPath 2.0 spec.\n\nTo achieve this we first promote numeric operands to one of decimal,\ninteger, double, float, or long, based on the least upper bound of the\noperand types. Java does not perform any type promotion with these, so\nit avoids accidental changes of expected types. Note that we long where\npossible to maintain performant operations, rather than simply promoting\neverything to xs:integer as implied by the XPath 2.0 specification. This\ndoes mean underflow/overflow is possible, but this is much less likely.\nNote that such overflow will not be detected in intermediate operations,\nbut will be detect if the result does not fit withing the range of the\ntarget type.\n\nThis also changes the results of div and idv operations to return\nDecimal/Float/Double or Integer/Long for similar reasons.\n\nThis means many of the NumericOps can not be removed (e.g. PlusShort)\nsince the set of types we perform operations on is much smaller. We also\nupdate the NumericOps implementations to use DataValue\u0027s, since we know\nexactly what the types should be, rather than relying on asFoo to\nconvert the operand to the expected type.\n\nThis also changes the resulting type of numeric if-branches. This are\nonly promoted to the least upper bound rather than also doing the\nnumeric operation conversions. The numeric results can will be promoted\nif then used in a numeric operation.\n\nDAFFODIL-2574\n"
    },
    {
      "commit": "1a51c31236fb22798b43ee84781a54416864bb47",
      "tree": "d57ffa3cf483b52ff509e009aa860b175b8d07e9",
      "parents": [
        "68288b48667bc25052f07444afdf4da89a2f6024"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Sep 23 11:37:54 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Sep 24 13:39:44 2025 -0400"
      },
      "message": "Exclude xml-apis dependency\n\nXercesImpl depends on xml-apis, but all versions of Java that Daffodil\nsupports (i.e. 17+) already include the APIs provided by this jar.\nIncluding xml-apis on such systems can lead to split packages, which\nalthough has not cause problems so far, should be avoided. Its removal\nalso reduces our dependencies which is always a good thing.\n\nThis modifies our dependency config to exclude xml-apis as a transitive\ndependency form XercesImpl.\n\nDAFFODIL-2812\n"
    },
    {
      "commit": "68288b48667bc25052f07444afdf4da89a2f6024",
      "tree": "b220e2cc05476abf084b77765c931d38496ee9a8",
      "parents": [
        "d76b28109bd4a5c6c84ddcbe46ba97fdf1fd8e67"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Sep 22 13:12:33 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Wed Sep 24 13:39:32 2025 -0400"
      },
      "message": "Bump version to 4.1.0-SNAPSHOT for development\n"
    },
    {
      "commit": "d76b28109bd4a5c6c84ddcbe46ba97fdf1fd8e67",
      "tree": "c833d2d82926a2659c4066a7a94ca3285099cb82",
      "parents": [
        "8041d3b02d6a18d057494a4bf9216dac0e45edbe"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Sep 09 08:26:50 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Sep 09 10:52:30 2025 -0400"
      },
      "message": "Use correct secrets to deploy release candidates to nexus\n\nDAFFODIL-2971\n"
    },
    {
      "commit": "8041d3b02d6a18d057494a4bf9216dac0e45edbe",
      "tree": "8b7f64a404be71fe36c8c02069b7590508279231",
      "parents": [
        "3f5a69f31b3a296fbaeec5c812be1eb406897076"
      ],
      "author": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Mon Sep 08 07:06:20 2025 -0400"
      },
      "committer": {
        "name": "Steve Lawrence",
        "email": "slawrence@apache.org",
        "time": "Tue Sep 09 07:50:11 2025 -0400"
      },
      "message": "Prepare for 4.0.0\n\nDAFFODIL-3038\n"
    }
  ],
  "next": "3f5a69f31b3a296fbaeec5c812be1eb406897076"
}
