)]}'
{
  "log": [
    {
      "commit": "c8bf23342ba33d8257f350ffdc2b220b8cc55291",
      "tree": "b8f57cc46c347c2e719a789adac5febee1e8e777",
      "parents": [
        "e06075f9c30a767a26dd19122cb3c3dfb27d4a78"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 18:31:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 16:01:42 2026 +0530"
      },
      "message": "perf(json): add ordered field read fast path (#3962)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n\u003c!--\nIs there any related issue? If this PR closes them you say say\nfix/closes:\n\n- #xxxx0\n- #xxxx1\n- Fixes #xxxx2\n--\u003e\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "e06075f9c30a767a26dd19122cb3c3dfb27d4a78",
      "tree": "dd156110696aec6ff4c074d6788514ac5e638539",
      "parents": [
        "34801cb5b9b25f923f772eeccc99e73c3617a725"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 17:04:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 14:34:37 2026 +0530"
      },
      "message": "perf(java): optimize GraalVM JSON interpreted access (#3960)\n\n## Why?\n\n\n\n## What does this PR do?\n\nOptimize GraalVM JSON interpreted access- #3960\n\n\n## Related issues\n\n#3950 \n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "34801cb5b9b25f923f772eeccc99e73c3617a725",
      "tree": "f348d874eeb26e1e09485ddac14cb9d121727500",
      "parents": [
        "359eddb3e3c841a8f97f7a61b774a1da84e4ae1e"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 14:42:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 12:12:01 2026 +0530"
      },
      "message": "feat(json): expose stream value limit errors (#3959)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "359eddb3e3c841a8f97f7a61b774a1da84e4ae1e",
      "tree": "f47189fad50e301cb4b748d2471e66eeebeb4d8e",
      "parents": [
        "b0b7cdac2fae95aa5dc79eef4c9d6d4e3c6f8b64"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 14:26:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 11:56:31 2026 +0530"
      },
      "message": "refactor(java): remove unbounded metadata decompression (#3958)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "b0b7cdac2fae95aa5dc79eef4c9d6d4e3c6f8b64",
      "tree": "27eff109056ae1567a345c70d294c1a6788575e5",
      "parents": [
        "69ae4a24314107e4bd8b0ac5b2e6ee81c7e53755"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 13:36:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 11:06:12 2026 +0530"
      },
      "message": "ci: isolate Scala snapshot dependencies (#3957)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "69ae4a24314107e4bd8b0ac5b2e6ee81c7e53755",
      "tree": "54078b04c3aa10034ddea13f488b094048df436b",
      "parents": [
        "a723392a5b27a542c92e1100ee8c7c9d0dd5b41b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 13:28:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 10:58:49 2026 +0530"
      },
      "message": "feat(java): add incremental JSON stream decoding (#3956)\n\n## What does this PR do?\n\n- adds `JsonStreamDecoder\u003cT\u003e` for incremental top-level JSON array and\nNDJSON decoding from `ByteBuffer` chunks\n- adds bounded byte-array range roots to `ForyJson` and enforces the\nlogical range throughout generated UTF-8 readers\n- separates scanning from caller-visible buffer consumption, committing\none current-buffer value segment at a boundary or chunk end\n- allocates staging storage from the first proven required length, grows\nit only when needed, reuses it within the active stream, and releases it\non finish or failure\n- supports heap, direct, sliced, read-only, and either-byte-order\nbuffers while preserving one-value backpressure and root cleanup\n- documents stream ownership, `ByteBuffer.position()`, and exact\nper-value limit accounting\n\n## Tests\n\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 mvn -pl fory-json\n-Dtest\u003dForyJsonByteRangeTest,JsonStreamDecoderTest test` (17 tests)\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 mvn -pl fory-json test` (931 tests)\n- `mvn -pl fory-json spotless:check`\n- `mvn -pl fory-json checkstyle:check`\n- `prettier --check ../docs/json/getting-started.md fory-json/README.md`\n- Azul JDK 8u462 `mvn -pl fory-json clean compile -DskipTests`\n- `mvn -pl fory-json package -DskipTests` including sources and Javadoc\nJARs\n\nBoundary coverage includes every byte split of representative array and\nNDJSON inputs, delimiters on either side of a buffer boundary, CRLF\nsplit across buffers, adjacent NDJSON separators split across buffers,\nexact-size values, and incomplete values that wait for more input."
    },
    {
      "commit": "a723392a5b27a542c92e1100ee8c7c9d0dd5b41b",
      "tree": "333bf80026d1a3bd2d4a0a00c833fb5c49ea2553",
      "parents": [
        "8728bd82535637aebc100cf47348fb3957347110"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 21 12:22:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 09:52:34 2026 +0530"
      },
      "message": "feat: harden deserialization paths (#3955)\n\n## What does this PR do?\n\nThis PR hardens untrusted deserialization across Fory runtimes and\naligns shared metadata cache semantics with the wire protocol.\n\nKey changes:\n\n- make remote `TypeDef` and `TypeMeta` checked caches use the protocol\ntop 52-bit hash as schema identity while keeping current-frame low bits\nonly for bounded body skipping;\n- make large `MetaString` cache hits use the wire hash alone as\nidentity, independent of the current body length;\n- route cached and shared metadata through the concrete owner selected\non the validated miss, rejecting incompatible declared owners before\ncache, version, or root-table publication;\n- fix Python/Cython published-list mutation safety and strict/default\nreduce callable authorization;\n- bound Java metadata decompression and stream growth, tighten the\ndisallowed-class list, and guard dynamic/generated field assignment;\n- fix Rust UTF-16 bounds handling and concrete metadata routing for\nstatic/grouped carriers;\n- enforce Swift nested decoder depth consistently across generated and\ncompatible owners;\n- document trusted-input boundaries and the cache-hit validation model.\n\nThe wire format is unchanged. Cache hits do not reparse or revalidate\nmetadata bodies; only cold misses perform body/hash/policy/limit\nvalidation and publish non-local checked metadata.\n\n## Performance\n\nCompared sequentially against a fresh `apache/main` worktree at\n`8728bd82535637aebc100cf47348fb3957347110`:\n\n- Java sample-list deserialize: paired median `+0.610%` throughput;\nMetaShare was faster.\n- Python/Cython sample-list deserialize: `-0.591%` and `-0.680%`\nlatency.\n- Swift sample-list deserialize, 30-second pair: `+0.241%` latency.\n- Rust sample-list deserialize: `-0.468%` and `-3.060%` latency.\n- C++ sample-list deserialize, six balanced pairs: `-0.136%` median and\n`+0.059%` mean latency.\n\nAll retained affected hot paths are within the 1% regression gate."
    },
    {
      "commit": "8728bd82535637aebc100cf47348fb3957347110",
      "tree": "0d2bf785ebcb67020a0a4265268865cfb8fc56b8",
      "parents": [
        "8605ab7f61187a4d001066df2038128fb78da88a"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Aug 20 23:30:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 21:00:48 2026 +0530"
      },
      "message": "ci: stabilize JVM snapshot publishing (#3953)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "8605ab7f61187a4d001066df2038128fb78da88a",
      "tree": "e28bfe96d849cb5ad71e36253d4a1cabb812816b",
      "parents": [
        "2ee794710bdd3d69faae01713ade313697300ec6"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Aug 20 22:25:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 19:55:50 2026 +0530"
      },
      "message": "fix(scala): support Enumeration JSON on Scala 3 (#3952)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\nCloses #3947\n\n#3935\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "2ee794710bdd3d69faae01713ade313697300ec6",
      "tree": "41dbb186056acd93191ee0c0a9a7ba81ff76dcaa",
      "parents": [
        "d2c46d591b4e56ed89a1ed4c7b31ac70ea09600b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Aug 20 20:47:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 18:17:54 2026 +0530"
      },
      "message": "ci: reduce Android Kotlin setup time (#3951)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "d2c46d591b4e56ed89a1ed4c7b31ac70ea09600b",
      "tree": "4b5dfab4bdaf321091fc1f1f253edd6be9345007",
      "parents": [
        "6fedcf1dcd99e31ed0a78a4d9927017c0bb67975"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Aug 20 19:47:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 17:17:53 2026 +0530"
      },
      "message": "feat(json): add Kotlin JSON support (#3937)\n\n## Why?\n\nKotlin/JVM models carry constructor defaults, nullability, unsigned and\nvalue-class semantics,\nsealed hierarchies, and complete generic type information that Java\n`Class` tokens cannot express.\nThis PR adds an optional Kotlin JSON module while keeping the existing\nJava JSON APIs and Fory\nbinary protocols unchanged.\n\n## What does this PR do?\n\n- Adds `fory-json-kotlin` with `ForyJsonKotlin.builder()` and reusable\n`jsonTypeRef\u003cT\u003e()` tokens for\nKotlin object models, defaults, nullability, generics, value classes,\nunsigned types, sealed\nhierarchies, Mixin overlays, custom codecs, and supported Kotlin/JVM\nbuilt-ins.\n- Extends the shared JSON resolver, object model, and generated\ncapability paths so language-owned\nmetadata can retain direct generated readers and writers, exact semantic\ntypes, nullability, and\n  primitive/no-box value-class carriers.\n- Adds `fory-json-kotlin-ksp` as a retention-only processor that emits\nexact R8/ProGuard rules for\n`@JsonType` and Kotlin-owned `@JsonMixin` declarations; it does not\ngenerate codecs or application\n  classes.\n- Adds a small shared JVM/Android/GraalVM corpus covering defaults,\nvalue classes and unsigned\nvalues, sealed types, Mixins, custom codecs, and generics, plus JPMS and\nrelease wiring.\n- Adds Kotlin JSON documentation and a standalone Gradle/JMH benchmark\nproject for Fory,\nkotlinx.serialization, Moshi, and Jackson Kotlin. Benchmark timing is\nnot part of CI.\n\n## Related issues\n\nN/A.\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\nYes. It adds the optional Kotlin/JVM JSON runtime, Kotlin type-token and\nbuilder APIs, Android\nretention-rule processor, documentation, and platform setup described\nabove.\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "6fedcf1dcd99e31ed0a78a4d9927017c0bb67975",
      "tree": "0a8f706dbc383fa9b5d17cd84321e011e0867db3",
      "parents": [
        "7dbf22153869f3a5a7621a4c2cc5ccaa6b66192b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 18 16:44:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 14:14:06 2026 +0530"
      },
      "message": "docs: update jackson annotations license (#3944)\n\n## Why?\n\n\n\n## What does this PR do?\n\nDocument the Fory JSON annotations derived from Jackson Annotations in\nLICENSE, including their source files and Apache-2.0 attribution.\n\n\n10:39 AM\n\n## Related issues\n\nCloses #3942 \n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "7dbf22153869f3a5a7621a4c2cc5ccaa6b66192b",
      "tree": "deb467369bbfe7a84b3a877a6a638f8eb4cdc06c",
      "parents": [
        "0c249419e83b8c21010bb017cb04ae2a032a2621"
      ],
      "author": {
        "name": "PJ Fanning",
        "email": "pjfanning@users.noreply.github.com",
        "time": "Tue Aug 18 03:25:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 07:55:56 2026 +0530"
      },
      "message": "chore: upgrade scala dependencies (#3943)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\nUpgrade dependencies used in Scala build\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "0c249419e83b8c21010bb017cb04ae2a032a2621",
      "tree": "b2e7cc5827f34b797e67c89aca57d569efab9a48",
      "parents": [
        "5591685cc52fea86f1082fd6f6e36125e031bd30"
      ],
      "author": {
        "name": "Robert Karasev",
        "email": "100449801+KarasevRob@users.noreply.github.com",
        "time": "Tue Aug 18 06:00:22 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 10:00:22 2026 +0800"
      },
      "message": "fix(scala): target Java 8 bytecode for fory-scala (#3941)\n\n## Why?\n\n`fory-scala` Java sources are compiled with JDK 25 during release,\nproducing Java 25 bytecode\n\n## What does this PR do?\n\nSet the Java target to Java 8:\n\n```scala\nCompile / javacOptions ++\u003d Seq(\"--release\", \"8\")\n```\n\nAnalogue to `fory-json-scala`\n\n## Related issues\n\n* Fixes [#3940](https://github.com/apache/fory/issues/3940)\n\n## Does this PR introduce any user-facing change?\n\nFixes `fory-scala` compatibility with supported older JDKs.\n\n* [ ] Does this PR introduce any public API change?\n* [x] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\nNot applicable."
    },
    {
      "commit": "5591685cc52fea86f1082fd6f6e36125e031bd30",
      "tree": "d8ce9caffcbe2b3f97f2861e0f156398ca9a7af4",
      "parents": [
        "97379be15f6188d956aeeefe955f1aa097e4f6b2"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Sun Aug 16 23:55:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 21:25:03 2026 +0530"
      },
      "message": "ci: update sbt setup action (#3939)\n\n## Why?\n\nThe three Scala jobs in Fory CI fail during job setup because\n`sbt/setup-sbt` v1.5.1 reaches a transitive\n`carabiner-dev/actions/install/ampel` commit that expired from the\nApache GitHub Actions allowlist.\n\n## What does this PR do?\n\nUpdate the existing `sbt/setup-sbt` pin from v1.5.1 to v1.5.7 in Scala\nCI, Scala Xlang Test, and Scala IDL Tests. The new action and its full\ntransitive dependency chain are present in the Apache allowlist.\nExisting JDK versions, test commands, and `disk-cache: false` behavior\nremain unchanged.\n\nLocal checks:\n\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 ci/format.sh`\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 sbt clean +test` from `scala/` (136/136\ntests passed across Scala 2.13 and Scala 3)\n- `git diff --check`\n\n## Related issues\n\nN/A.\n\n## AI Contribution Checklist\n\n## Does this PR introduce any user-facing change?\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\nN/A; workflow-only change."
    },
    {
      "commit": "97379be15f6188d956aeeefe955f1aa097e4f6b2",
      "tree": "25deff6c26a327818ff38539c5d02a77ffff915c",
      "parents": [
        "4f6fb6d0a8ef06572b0e0615cddf234b7a06e113"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Sun Aug 16 14:05:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 14:05:54 2026 +0800"
      },
      "message": "chore: update release version to 1.6.1 (#3938)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "4f6fb6d0a8ef06572b0e0615cddf234b7a06e113",
      "tree": "d3e027946ae204be6039d126158d962b9767c97d",
      "parents": [
        "3102b223aa00f02b6da428374ac891dcff0db40a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Aug 16 06:50:01 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 06:50:01 2026 +0530"
      },
      "message": "chore: Bump org.apache.logging.log4j:log4j-api from 2.25.4 to 2.25.5 in /java/fory-test-core (#3933)\n\nBumps org.apache.logging.log4j:log4j-api from 2.25.4 to 2.25.5.\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dorg.apache.logging.log4j:log4j-api\u0026package-manager\u003dmaven\u0026previous-version\u003d2.25.4\u0026new-version\u003d2.25.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3102b223aa00f02b6da428374ac891dcff0db40a",
      "tree": "2346a886a5b939338f02c46122732a090f5895e7",
      "parents": [
        "1d22fc8c7021142b4a13b85f0aa5d334c13d92da"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 14 12:54:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 10:24:10 2026 +0530"
      },
      "message": "perf(scala): streamline exact List JSON writes (#3936)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "1d22fc8c7021142b4a13b85f0aa5d334c13d92da",
      "tree": "fa8d7fe888858d4b8dbc1d5c9afeae281632bb20",
      "parents": [
        "f44ff568e5cddedaae6e608d27a023567323800f"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 14 12:35:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 10:05:17 2026 +0530"
      },
      "message": "feat(scala): add scala2 json enumeration annotation (#3935)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "f44ff568e5cddedaae6e608d27a023567323800f",
      "tree": "c8f98b5bea687a2a58ec52405474db04dd4ad3a9",
      "parents": [
        "c50369695a2d123adf6d267d8f4032dfc602af10"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 14 11:51:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 09:21:43 2026 +0530"
      },
      "message": "feat(scala): add json support for scala (#3934)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "c50369695a2d123adf6d267d8f4032dfc602af10",
      "tree": "a1ef8d5e4f13a7ce4815de46b7e69917fe72f20f",
      "parents": [
        "5a8daaf9df463c192835dc92302ccfff14dbca5f"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Aug 12 20:22:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 20:22:55 2026 +0800"
      },
      "message": "perf(cpp): simplify TypeMeta index tracking (#3932)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "5a8daaf9df463c192835dc92302ccfff14dbca5f",
      "tree": "c50c17d0bfa64fe1324aa79551f63476798e2aa9",
      "parents": [
        "8f247ab543f561cedb2657084e483d9ddd1deecf"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Aug 12 19:39:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 17:09:18 2026 +0530"
      },
      "message": "fix(java): fix compatible metadata state regressions (#3931)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\nCloses #3929 \nCloses #3926 \n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "8f247ab543f561cedb2657084e483d9ddd1deecf",
      "tree": "1dedfa21ed96d3aa0af003cfcd143a399fb03e8e",
      "parents": [
        "b9644492f3c0e92fa3a671ea410201a39a4b218d"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Aug 12 16:12:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 13:42:56 2026 +0530"
      },
      "message": "feat(benchmarks): add Jackson Blackbird JSON mode (#3930)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "b9644492f3c0e92fa3a671ea410201a39a4b218d",
      "tree": "e0152c77a30afe0e828746e5a06cdc868187462f",
      "parents": [
        "4f95641e00d1324b52325b1c7580d848cd31b5cf"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Mon Aug 10 19:48:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 11 01:48:09 2026 +0800"
      },
      "message": "chore(ci): pin android-emulator-runner to v2.38.0 SHA (#3927)\n\n## What\n\nPin `reactivecircus/android-emulator-runner` in\n`.github/workflows/ci.yml` from the floating `v2` tag to the v2.38.0\ncommit SHA `a421e43855164a8197daf9d8d40fe71c6996bb0d`.\n\n## Why\n\nEvery GitHub Action used by an ASF project must be on the ASF\ninfrastructure allowlist. apache/infrastructure-actions#1100 replaces\nthe `reactivecircus/android-emulator-runner@*` wildcard entry with the\nv2.38.0 SHA as the permanent, Dependabot-maintained pin. The floating\n`v2` tag stays allowlisted only as a temporary grace entry until\n2026-08-25, after which `remove_expired.yml` drops it automatically.\n\nThat PR lists `apache/fory` (`.github/workflows/ci.yml`) among the repos\nstill using the floating `v2` tag and therefore needing migration.\nWithout this change, the Android instrumented test job would start\nfailing once the temporary allowlist entry expires.\n\nv2.38.0 is the current latest release, so this is a pin, not a\ndowngrade. CI itself is the test."
    },
    {
      "commit": "4f95641e00d1324b52325b1c7580d848cd31b5cf",
      "tree": "d0ce821de8fefb14d22b3c51005b45e56f3c691a",
      "parents": [
        "9e41d9b3df88f91e1b1f89ae5909c916c4f25788"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 07 15:02:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 12:32:26 2026 +0530"
      },
      "message": "chore: bump development version to 1.7.0 (#3925)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "9e41d9b3df88f91e1b1f89ae5909c916c4f25788",
      "tree": "c73c75cebb67e6d8ee40e87c92a45ffe16975f35",
      "parents": [
        "69aa98495a02d99134e9968dfae8cc2068f73c89"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 07 12:48:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 12:48:11 2026 +0800"
      },
      "message": "perf(go): update go perf docs (#3924)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n#3923\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "69aa98495a02d99134e9968dfae8cc2068f73c89",
      "tree": "454c2437f299c5164c1f878be144da347ed3b33b",
      "parents": [
        "24ca8e41ebf3a67f8cb15490b0718050e22f21d3"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Aug 07 11:51:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 09:21:58 2026 +0530"
      },
      "message": "perf(go): optimize go performance (#3923)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "24ca8e41ebf3a67f8cb15490b0718050e22f21d3",
      "tree": "50a8618daa54986f15d1f322d9a4cbfd600c56bc",
      "parents": [
        "5eb14cda66fe1266e81f71233ea5aabf448587ad"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 04 23:57:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 23:57:02 2026 +0800"
      },
      "message": "docs(java): clarify JDK 25 module opening recommendation (#3922)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n\u003c!--\nIs there any related issue? If this PR closes them you say say\nfix/closes:\n\n- #xxxx0\n- #xxxx1\n- Fixes #xxxx2\n--\u003e\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "5eb14cda66fe1266e81f71233ea5aabf448587ad",
      "tree": "748da29753dd7ed7d5889b29ec849ab4a298b9ec",
      "parents": [
        "aaf50d835b92c2085460ada2311c6d736648a65c"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 04 18:49:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 18:49:54 2026 +0800"
      },
      "message": "perf(swift): optimize swift serialization performance (#3921)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\nSwift\u0027s dynamic exclusivity checks and generic collection/String paths\nadd measurable overhead to\nserialization and deserialization, especially for small structs and\ncollection-heavy objects.\n\n## What does this PR do?\n\n- Removes dynamic exclusivity checks from synchronous `ByteBuffer` state\naccess.\n- Specializes packed primitive-array reads and avoids zero-initializing\ndestination arrays.\n- Accelerates ASCII String detection with eight-byte checks while\npreserving UTF-8 validation.\n- Adds a direct fast path for non-null Array elements.\n- Uses the TypeMeta header hash directly for exact-schema compatible\nreads.\n- Refreshes the Swift benchmark report and throughput plot.\n\n## Related issues\n\nCloses #3460\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\nEnvironment: Apple Swift 6.2.1. The complete benchmark used three\nseconds per case:\n\n```shell\ncd benchmarks/swift\n./run.sh\n```\n\n| Datatype | Operation | Fory ops/s | Protobuf ops/s | JSON ops/s |\n| --- | --- | ---: | ---: | ---: |\n| NumericStruct | Serialize | 14,759,606 | 7,572,190 | 481,278 |\n| NumericStruct | Deserialize | 18,155,795 | 7,317,942 | 377,802 |\n| Sample | Serialize | 5,633,231 | 1,380,130 | 102,372 |\n| Sample | Deserialize | 1,509,740 | 916,626 | 52,897 |\n| MediaContent | Serialize | 2,987,821 | 784,863 | 111,200 |\n| MediaContent | Deserialize | 1,072,345 | 549,726 | 97,799 |\n| NumericStructList | Serialize | 5,515,769 | 1,093,924 | 93,635 |\n| NumericStructList | Deserialize | 2,598,609 | 746,527 | 76,161 |\n| SampleList | Serialize | 1,201,868 | 220,772 | 20,772 |\n| SampleList | Deserialize | 286,949 | 161,192 | 10,777 |\n| MediaContentList | Serialize | 657,276 | 118,004 | 22,744 |\n| MediaContentList | Deserialize | 215,726 | 99,445 | 19,521 |"
    },
    {
      "commit": "aaf50d835b92c2085460ada2311c6d736648a65c",
      "tree": "9e4b2b540d18aed14515a423e36d392506b0d865",
      "parents": [
        "4f841f16fac94ffdf1599c0aaa548796c85726d6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Aug 04 11:45:58 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 11:45:58 2026 +0530"
      },
      "message": "chore: Bump brace-expansion, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, eslint, jest and ts-jest in /javascript (#3920)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nto 5.0.9 and updates ancestor dependencies\n[brace-expansion](https://github.com/juliangruber/brace-expansion),\n[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin),\n[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser),\n[eslint](https://github.com/eslint/eslint),\n[jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and\n[ts-jest](https://github.com/kulshekhar/ts-jest). These dependencies\nneed to be updated together.\n\nUpdates `brace-expansion` from 1.1.16 to 5.0.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/releases\"\u003ebrace-expansion\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efmt  5a5cc17\u003c/li\u003e\n\u003cli\u003eFix potential ReDoS Vulnerability or Inefficient Regular Expression\n(\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/65\"\u003e#65\u003c/a\u003e)\n0b6a978\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: use string replaces instead of splits (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/64\"\u003e#64\u003c/a\u003e)\n278132b\u003c/li\u003e\n\u003cli\u003efmt  dd72a59\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003etea.yaml\u003c/code\u003e  70e4c1b\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAs a precaution to not risk breaking anything with 278132b, this is a\nnew semver major release\u003c/p\u003e\n\u003ch2\u003ev3.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epkg: publish on tag 3.x  3059c07\u003c/li\u003e\n\u003cli\u003efmt  8229e6f\u003c/li\u003e\n\u003cli\u003eFix potential ReDoS Vulnerability or Inefficient Regular Expression\n(\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/65\"\u003e#65\u003c/a\u003e)\n15f9b3c\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to ES Modules and balanced-match 3.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/62\"\u003e#62\u003c/a\u003e)\nc0360e8\u003c/li\u003e\n\u003cli\u003eadded jsdoc (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/55\"\u003e#55\u003c/a\u003e)\n68c0e37\u003c/li\u003e\n\u003cli\u003enode 16 is EOL  9e781e9\u003c/li\u003e\n\u003cli\u003eadd standard  3494c4d\u003c/li\u003e\n\u003cli\u003euse const and let (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/57\"\u003e#57\u003c/a\u003e)\ndd5a4cb\u003c/li\u003e\n\u003cli\u003edocs  6dad209\u003c/li\u003e\n\u003cli\u003eremove \u003ccode\u003etest\u003c/code\u003e  e3dd8ae\u003c/li\u003e\n\u003cli\u003eci: update node versions  d23ede9\u003c/li\u003e\n\u003cli\u003edocs: add \u003ca\nhref\u003d\"https://github.com/lanodan\"\u003e\u003ccode\u003e@​lanodan\u003c/code\u003e\u003c/a\u003e to\ncontributors 1eb3fa4\u003c/li\u003e\n\u003cli\u003edocs  1e7c9cd\u003c/li\u003e\n\u003cli\u003eswitch from tape to test module (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/60\"\u003e#60\u003c/a\u003e)\n2520537\u003c/li\u003e\n\u003cli\u003eBump minimist from 1.2.5 to 1.2.6 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/59\"\u003e#59\u003c/a\u003e)\n61a94f1\u003c/li\u003e\n\u003cli\u003eBump path-parse from 1.0.6 to 1.0.7 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/51\"\u003e#51\u003c/a\u003e)\ndc741cf\u003c/li\u003e\n\u003cli\u003edocs: add back ci badge  8ee5626\u003c/li\u003e\n\u003cli\u003eAdd github actions, remove travis. Closes \u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/52\"\u003e#52\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/53\"\u003e#53\u003c/a\u003e)\n5c8756a\u003c/li\u003e\n\u003cli\u003eCI: Drop unused sudo: false Travis directive (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/50\"\u003e#50\u003c/a\u003e)\n05978a7\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v3.0.0\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v2.0.1...v3.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBackport v5.0.6 change to v2 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/109\"\u003e#109\u003c/a\u003e)\nc3a817c\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/fbcf8ec75b88c79374b4aac06559b1a5288a1223\"\u003e\u003ccode\u003efbcf8ec\u003c/code\u003e\u003c/a\u003e\n5.0.9\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/f6f3939e531052d536c9066b100ad19d4175d3cc\"\u003e\u003ccode\u003ef6f3939\u003c/code\u003e\u003c/a\u003e\ntest: cover dropping empties when only some prefixes are empty\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/688a99eeaab02627c2b89ba8ba4821fecfa659cf\"\u003e\u003ccode\u003e688a99e\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/c66e5f9bce61a1c2b232cdfcc5178cd26322a979\"\u003e\u003ccode\u003ec66e5f9\u003c/code\u003e\u003c/a\u003e\ndocs: make the maxLength example produce a non-empty result (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/473d3e95e9614c783a6033f9c8577c0ba9cb6881\"\u003e\u003ccode\u003e473d3e9\u003c/code\u003e\u003c/a\u003e\nBump linkify-it from 5.0.1 to 5.0.2 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/128\"\u003e#128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/96a63c0011c0288846ad41773c73e3fbd0906b59\"\u003e\u003ccode\u003e96a63c0\u003c/code\u003e\u003c/a\u003e\n5.0.8\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/a1bd33999ea75262c4749fff3bbb0d1372bd07b5\"\u003e\u003ccode\u003ea1bd339\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/592a36fd18455c37f81e0848a642d84c63147fa7\"\u003e\u003ccode\u003e592a36f\u003c/code\u003e\u003c/a\u003e\nBump tar from 7.5.16 to 7.5.20 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/bd146909cd6c7bedde61a5d6428ba252860a0159\"\u003e\u003ccode\u003ebd14690\u003c/code\u003e\u003c/a\u003e\nBump brace-expansion from 2.0.2 to 2.1.2 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/126\"\u003e#126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/e729ba647887042f16b531fdb3d8ac3d7762ccad\"\u003e\u003ccode\u003ee729ba6\u003c/code\u003e\u003c/a\u003e\nBump ws from 8.19.0 to 8.21.1 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/124\"\u003e#124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v1.1.16...v5.0.9\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eInstall script changes\u003c/summary\u003e\n\u003cp\u003eThis version adds \u003ccode\u003eprepare\u003c/code\u003e script that runs during\ninstallation. Review the package contents before updating.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@typescript-eslint/eslint-plugin` from 5.62.0 to 8.66.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases\"\u003e@​typescript-eslint/eslint-plugin\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.66.0\u003c/h2\u003e\n\u003ch2\u003e8.66.0 (2026-08-03)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etypescript-estree:\u003c/strong\u003e handle import.defer() as\nImportExpression (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12609\"\u003e#12609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-conversion]\nignore shadowed built-ins (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12590\"\u003e#12590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-nullish-coalescing] handle\nshadowed Boolean calls (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12591\"\u003e#12591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-useless-default-assignment]\ndon\u0027t report defaults used by other overloads (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12607\"\u003e#12607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-parameters]\ncheck MappedType key remapping (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12588\"\u003e#12588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [class-literal-property-style]\npreserve type annotations and don\u0027t drop decorators (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12617\"\u003e#12617\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ewebsite:\u003c/strong\u003e list\n\u003ccode\u003eonUnsupportedTypeScriptVersion\u003c/code\u003e in parser options (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12585\"\u003e#12585\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKirk Waiblinger \u003ca\nhref\u003d\"https://github.com/kirkwaiblinger\"\u003e\u003ccode\u003e@​kirkwaiblinger\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSteffen Schroeder\u003c/li\u003e\n\u003cli\u003e송재욱\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003ev8.65.0\u003c/h2\u003e\n\u003ch2\u003e8.65.0 (2026-07-20)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd warning when TS 7 is detected (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12529\"\u003e#12529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-restricted-imports] deprecate\nextension rule (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12527\"\u003e#12527\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/issues/19562\"\u003e#19562\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/issues/11889\"\u003e#11889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-shadow] specialized error on\nenum declaration and member shadowing (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12578\"\u003e#12578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparser:\u003c/strong\u003e add onUnsupportedTypeScriptVersion option\nto error on unsupported TypeScript versions (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12465\"\u003e#12465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypescript-estree:\u003c/strong\u003e throw for invalid import defer\nsyntax (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12552\"\u003e#12552\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-string-starts-ends-with]\nhandle escaped $ ending regex literals (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12515\"\u003e#12515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [unbound-method] report unbound\nmethods accessed via member expression on union types (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12448\"\u003e#12448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e\n[no-unnecessary-parameter-property-assignment] don\u0027t flag computed\nassignments with a variable key (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12568\"\u003e#12568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJosh Goldberg ✨\u003c/li\u003e\n\u003cli\u003eKirk Waiblinger \u003ca\nhref\u003d\"https://github.com/kirkwaiblinger\"\u003e\u003ccode\u003e@​kirkwaiblinger\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSerhii Leniv \u003ca\nhref\u003d\"https://github.com/Serhii-Leniv\"\u003e\u003ccode\u003e@​Serhii-Leniv\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e@​typescript-eslint/eslint-plugin\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.66.0 (2026-08-03)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [class-literal-property-style]\npreserve type annotations and don\u0027t drop decorators (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12617\"\u003e#12617\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-parameters]\ncheck MappedType key remapping (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12588\"\u003e#12588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-useless-default-assignment]\ndon\u0027t report defaults used by other overloads (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12607\"\u003e#12607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-nullish-coalescing] handle\nshadowed Boolean calls (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12591\"\u003e#12591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-conversion]\nignore shadowed built-ins (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12590\"\u003e#12590\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e송재욱\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003e8.65.0 (2026-07-20)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-shadow] specialized error on\nenum declaration and member shadowing (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12578\"\u003e#12578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd warning when TS 7 is detected (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12529\"\u003e#12529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-restricted-imports] deprecate\nextension rule (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12527\"\u003e#12527\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/issues/19562\"\u003e#19562\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/issues/11889\"\u003e#11889\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e\n[no-unnecessary-parameter-property-assignment] don\u0027t flag computed\nassignments with a variable key (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12568\"\u003e#12568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [unbound-method] report unbound\nmethods accessed via member expression on union types (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12448\"\u003e#12448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-string-starts-ends-with]\nhandle escaped $ ending regex literals (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12515\"\u003e#12515\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJosh Goldberg ✨\u003c/li\u003e\n\u003cli\u003eKirk Waiblinger \u003ca\nhref\u003d\"https://github.com/kirkwaiblinger\"\u003e\u003ccode\u003e@​kirkwaiblinger\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSerhii Leniv \u003ca\nhref\u003d\"https://github.com/Serhii-Leniv\"\u003e\u003ccode\u003e@​Serhii-Leniv\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e송재욱\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.65.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003e8.64.0 (2026-07-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-loop-func] support\n\u003ccode\u003eusing\u003c/code\u003e / \u003ccode\u003eawait using\u003c/code\u003e declarations and deprecate\nthe rule (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12500\"\u003e#12500\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/e51b11ba3ab31837762c675f62f0d4dcb1abc4fb\"\u003e\u003ccode\u003ee51b11b\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.66.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/20cb15e6dbed8f42b7857a75e34f96d231b95449\"\u003e\u003ccode\u003e20cb15e\u003c/code\u003e\u003c/a\u003e\nchore(eslint-plugin): split prefer-optional-chain.test.ts in multiple\nfiles (...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/780a8c52d54fcb6420232b2f53974959a9b26dff\"\u003e\u003ccode\u003e780a8c5\u003c/code\u003e\u003c/a\u003e\ndocs(eslint-plugin): [member-ordering] add lacking commas in default\nmember t...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/08dd427202e08de304cf172472e3a97de3f382cf\"\u003e\u003ccode\u003e08dd427\u003c/code\u003e\u003c/a\u003e\nfix(eslint-plugin): [class-literal-property-style] preserve type\nannotations ...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/6be25d3b45f189d0c71018fb4ba7a2c9be4e14de\"\u003e\u003ccode\u003e6be25d3\u003c/code\u003e\u003c/a\u003e\nfix(eslint-plugin): [no-unnecessary-type-parameters] check MappedType\nkey rem...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/8826d0ebf7ff178afb6b0e72bf22d9132e4c83a2\"\u003e\u003ccode\u003e8826d0e\u003c/code\u003e\u003c/a\u003e\nfix(eslint-plugin): [no-useless-default-assignment] don\u0027t report\ndefaults use...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/7aecc1c44e60bc4b47402ce63a79587746766d9f\"\u003e\u003ccode\u003e7aecc1c\u003c/code\u003e\u003c/a\u003e\nfix(eslint-plugin): [prefer-nullish-coalescing] handle shadowed Boolean\ncalls...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/5ffa76049a0dd6c73ba9c0a7e8388ab1324f740f\"\u003e\u003ccode\u003e5ffa760\u003c/code\u003e\u003c/a\u003e\nfix(eslint-plugin): [no-unnecessary-type-conversion] ignore shadowed\nbuilt-in...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/f282f84df6418d405c5fbaa4312bf6c951b34957\"\u003e\u003ccode\u003ef282f84\u003c/code\u003e\u003c/a\u003e\nchore(eslint-plugin): fix all\n\u003ccode\u003eeslint-plugin/require-test-error-positions\u003c/code\u003e (#...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/c8cafa4ae9a0b57a64ba23659eba25a01301684a\"\u003e\u003ccode\u003ec8cafa4\u003c/code\u003e\u003c/a\u003e\ndocs: [unified-signatures] caveats regarding signatures merging (\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12581\"\u003e#12581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commits/v8.66.0/packages/eslint-plugin\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for \u003ccode\u003e@​typescript-eslint/eslint-plugin\u003c/code\u003e since your\ncurrent version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@typescript-eslint/parser` from 5.62.0 to 8.66.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases\"\u003e@​typescript-eslint/parser\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.66.0\u003c/h2\u003e\n\u003ch2\u003e8.66.0 (2026-08-03)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etypescript-estree:\u003c/strong\u003e handle import.defer() as\nImportExpression (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12609\"\u003e#12609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-conversion]\nignore shadowed built-ins (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12590\"\u003e#12590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-nullish-coalescing] handle\nshadowed Boolean calls (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12591\"\u003e#12591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-useless-default-assignment]\ndon\u0027t report defaults used by other overloads (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12607\"\u003e#12607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-parameters]\ncheck MappedType key remapping (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12588\"\u003e#12588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [class-literal-property-style]\npreserve type annotations and don\u0027t drop decorators (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12617\"\u003e#12617\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ewebsite:\u003c/strong\u003e list\n\u003ccode\u003eonUnsupportedTypeScriptVersion\u003c/code\u003e in parser options (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12585\"\u003e#12585\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKirk Waiblinger \u003ca\nhref\u003d\"https://github.com/kirkwaiblinger\"\u003e\u003ccode\u003e@​kirkwaiblinger\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSteffen Schroeder\u003c/li\u003e\n\u003cli\u003e송재욱\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003ev8.65.0\u003c/h2\u003e\n\u003ch2\u003e8.65.0 (2026-07-20)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd warning when TS 7 is detected (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12529\"\u003e#12529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-restricted-imports] deprecate\nextension rule (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12527\"\u003e#12527\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/issues/19562\"\u003e#19562\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/issues/11889\"\u003e#11889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-shadow] specialized error on\nenum declaration and member shadowing (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12578\"\u003e#12578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparser:\u003c/strong\u003e add onUnsupportedTypeScriptVersion option\nto error on unsupported TypeScript versions (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12465\"\u003e#12465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypescript-estree:\u003c/strong\u003e throw for invalid import defer\nsyntax (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12552\"\u003e#12552\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-string-starts-ends-with]\nhandle escaped $ ending regex literals (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12515\"\u003e#12515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [unbound-method] report unbound\nmethods accessed via member expression on union types (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12448\"\u003e#12448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e\n[no-unnecessary-parameter-property-assignment] don\u0027t flag computed\nassignments with a variable key (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12568\"\u003e#12568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJosh Goldberg ✨\u003c/li\u003e\n\u003cli\u003eKirk Waiblinger \u003ca\nhref\u003d\"https://github.com/kirkwaiblinger\"\u003e\u003ccode\u003e@​kirkwaiblinger\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSerhii Leniv \u003ca\nhref\u003d\"https://github.com/Serhii-Leniv\"\u003e\u003ccode\u003e@​Serhii-Leniv\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md\"\u003e@​typescript-eslint/parser\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.66.0 (2026-08-03)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for parser to align it with other\nprojects, there were no code changes.\u003c/p\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003e8.65.0 (2026-07-20)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd warning when TS 7 is detected (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12529\"\u003e#12529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparser:\u003c/strong\u003e add onUnsupportedTypeScriptVersion option\nto error on unsupported TypeScript versions (\u003ca\nhref\u003d\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12465\"\u003e#12465\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvyatar Daud \u003ca\nhref\u003d\"https://github.com/StyleShit\"\u003e\u003ccode\u003e@​StyleShit\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJosh Goldberg ✨\u003c/li\u003e\n\u003cli\u003eKirk Waiblinger \u003ca\nhref\u003d\"https://github.com/kirkwaiblinger\"\u003e\u003ccode\u003e@​kirkwaiblinger\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e송재욱\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.65.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003e8.64.0 (2026-07-13)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for parser to align it with other\nprojects, there were no code changes.\u003c/p\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.64.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003e8.63.0 (2026-07-06)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for parser to align it with other\nprojects, there were no code changes.\u003c/p\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.63.0\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003ch2\u003e8.62.1 (2026-06-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for parser to align it with other\nprojects, there were no code changes.\u003c/p\u003e\n\u003cp\u003eSee \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.1\"\u003eGitHub\nReleases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca\nhref\u003d\"https://typescript-eslint.io/users/versioning\"\u003eversioning\nstrategy\u003c/a\u003e and \u003ca\nhref\u003d\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our\nwebsite.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/e51b11ba3ab31837762c675f62f0d4dcb1abc4fb\"\u003e\u003ccode\u003ee51b11b\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.66.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/63ba81b6acfa0d663c29aa0013d4672bf3b0426c\"\u003e\u003ccode\u003e63ba81b\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.65.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/eaf457631ac381aadfee747c2d098c8ac4df9d63\"\u003e\u003ccode\u003eeaf4576\u003c/code\u003e\u003c/a\u003e\nfeat: add warning when TS 7 is detected (\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12529\"\u003e#12529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/d8f1044702e3257ee92c0af6681c1455563009db\"\u003e\u003ccode\u003ed8f1044\u003c/code\u003e\u003c/a\u003e\nfeat(parser): add onUnsupportedTypeScriptVersion option to error on\nunsupport...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/0d06406f3181f063041dbd1621d71984127ddae1\"\u003e\u003ccode\u003e0d06406\u003c/code\u003e\u003c/a\u003e\nchore: add attw validation to repo (\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12437\"\u003e#12437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/c2386e49ec6347aa92d53a1f32143ca45984cc13\"\u003e\u003ccode\u003ec2386e4\u003c/code\u003e\u003c/a\u003e\nchore(deps): update dependency prettier to v3.9.5 (\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12486\"\u003e#12486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/414d9abbf66f77796ab12ec7e75b07722e592832\"\u003e\u003ccode\u003e414d9ab\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/290cf6cdcc5ffb00c5b8f3e1e0e9f2fd8cc96374\"\u003e\u003ccode\u003e290cf6c\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.63.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/3ea32f4ba5e196c08c6da1095619d7f65ba4905e\"\u003e\u003ccode\u003e3ea32f4\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.62.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commit/54e285728e5d8cb83fadb8041189f0c3b4ab436a\"\u003e\u003ccode\u003e54e2857\u003c/code\u003e\u003c/a\u003e\nchore(release): publish 8.62.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/typescript-eslint/typescript-eslint/commits/v8.66.0/packages/parser\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e since your current\nversion.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `eslint` from 8.57.1 to 10.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/eslint/eslint/releases\"\u003eeslint\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev10.8.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/2fee9bb7416116cbed4d8c8100b1ae713b6356a1\"\u003e\u003ccode\u003e2fee9bb\u003c/code\u003e\u003c/a\u003e\nfeat: export \u003ccode\u003eConfigObject\u003c/code\u003e from \u003ccode\u003eeslint/config\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21082\"\u003e#21082\u003c/a\u003e)\n(sethamus)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/6b8d2f7589b8a7c8b91b8ca2a2ef6d46178760d8\"\u003e\u003ccode\u003e6b8d2f7\u003c/code\u003e\u003c/a\u003e\nfix: escape reserved characters in rule id in \u003ccode\u003ehtml\u003c/code\u003e\nformatter (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21129\"\u003e#21129\u003c/a\u003e)\n(Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/90910715011211a20d011d807d398a7005127f35\"\u003e\u003ccode\u003e9091071\u003c/code\u003e\u003c/a\u003e\nfix: prevent \u003ccode\u003eno-unreachable-loop\u003c/code\u003e crash when all loop types\nare ignored (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21116\"\u003e#21116\u003c/a\u003e)\n(Pixel)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/e23fafe8d4b15355adef6cdebef414c3a2019454\"\u003e\u003ccode\u003ee23fafe\u003c/code\u003e\u003c/a\u003e\nfix: prefer-object-spread add semicolon when adding parenthesis (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21081\"\u003e#21081\u003c/a\u003e)\n(synthex-byte)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/20b5ad052360a443786a202e94624a3f81846511\"\u003e\u003ccode\u003e20b5ad0\u003c/code\u003e\u003c/a\u003e\nfix: quadratic-time regex in \u003ccode\u003eprefer-template\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21096\"\u003e#21096\u003c/a\u003e)\n(Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/8b6f6c0b33411f34485512456d94f221daf7321f\"\u003e\u003ccode\u003e8b6f6c0\u003c/code\u003e\u003c/a\u003e\nfix: apply ignore configs to computed methods in class-methods-use-this\n(\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21094\"\u003e#21094\u003c/a\u003e)\n(Pixel)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/b2c608c014a396800a24a89343265d0616bee2d8\"\u003e\u003ccode\u003eb2c608c\u003c/code\u003e\u003c/a\u003e\nfix: NewExpression with parenthesized callee in\n\u003ccode\u003epreserve-caught-error\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21083\"\u003e#21083\u003c/a\u003e)\n(Francesco Trotta)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/6ddf8587e5cfeeb7328332601bb76d98b8a198ea\"\u003e\u003ccode\u003e6ddf858\u003c/code\u003e\u003c/a\u003e\ndocs: fix broken Specify Parser Options anchor link (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21106\"\u003e#21106\u003c/a\u003e)\n(Minsu)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/784dfbe98f0222426fd200153a5ce2e5624151f0\"\u003e\u003ccode\u003e784dfbe\u003c/code\u003e\u003c/a\u003e\ndocs: Clarify \u003ccode\u003eno-eq-null\u003c/code\u003e description (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21120\"\u003e#21120\u003c/a\u003e)\n(Park Harin)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/7ec733a3ba5acb053a73ac656030a3879aa48fda\"\u003e\u003ccode\u003e7ec733a\u003c/code\u003e\u003c/a\u003e\ndocs: Fix typos and grammar in glossary (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21095\"\u003e#21095\u003c/a\u003e)\n(Marry (Subin Yang))\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/92bb13f13065db72d62454b9830d3ae52db15c76\"\u003e\u003ccode\u003e92bb13f\u003c/code\u003e\u003c/a\u003e\ndocs: replace quake link (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21108\"\u003e#21108\u003c/a\u003e)\n(Jung Hyeon Jun)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/68eb4a57572409dbdcfeb3bc5c92ddbba46bc770\"\u003e\u003ccode\u003e68eb4a5\u003c/code\u003e\u003c/a\u003e\ndocs: fix broken Specify Globals anchor links in rule pages (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21103\"\u003e#21103\u003c/a\u003e)\n(Minsu)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/d28f697e0d32d7446c825fd89c362db028450134\"\u003e\u003ccode\u003ed28f697\u003c/code\u003e\u003c/a\u003e\ndocs: replace Code Climate CLI links with Qlty CLI links (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21099\"\u003e#21099\u003c/a\u003e)\n(Jung Hyeon Jun)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/eccc68d42564e46bc9020d19ec52d2988f3b7bfa\"\u003e\u003ccode\u003eeccc68d\u003c/code\u003e\u003c/a\u003e\ndocs: correct --suppressions-location option description (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21093\"\u003e#21093\u003c/a\u003e)\n(Ga eun Lee)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/c5963f74bfa82a5b7ccc0607dcdcc695b8c97a31\"\u003e\u003ccode\u003ec5963f7\u003c/code\u003e\u003c/a\u003e\ndocs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/4fbf46d140120ae838db08cbe49544c985956490\"\u003e\u003ccode\u003e4fbf46d\u003c/code\u003e\u003c/a\u003e\ntest: pin \u003ccode\u003ewebpack\u003c/code\u003e version to 5.108.4 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21137\"\u003e#21137\u003c/a\u003e)\n(Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/2d063e224e9bb0ccb0a28c120f7e380a8d62f320\"\u003e\u003ccode\u003e2d063e2\u003c/code\u003e\u003c/a\u003e\nchore: update HTTP URLs to HTTPS in JSDoc and comments (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21101\"\u003e#21101\u003c/a\u003e)\n(Bo Hyun Kim)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/eccbe7bc9257a6c99880468e452c8dfafbf47f74\"\u003e\u003ccode\u003eeccbe7b\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eno-class-assign\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21123\"\u003e#21123\u003c/a\u003e)\n(devoil)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/e7d1e4373bf626f8da76d62ce024c28928bc99bc\"\u003e\u003ccode\u003ee7d1e43\u003c/code\u003e\u003c/a\u003e\nci: bump actions/setup-go from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21118\"\u003e#21118\u003c/a\u003e)\n(dependabot[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/e9d66d0cde1a7752c29dee53ab7b62632835a87a\"\u003e\u003ccode\u003ee9d66d0\u003c/code\u003e\u003c/a\u003e\nci: bump actions/setup-node from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21119\"\u003e#21119\u003c/a\u003e)\n(dependabot[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/ee225b60c26f0cc5f4d71641888a5bd2ec5626d6\"\u003e\u003ccode\u003eee225b6\u003c/code\u003e\u003c/a\u003e\ntest: Add error location details to \u003ccode\u003eno-eq-null\u003c/code\u003e rule (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21117\"\u003e#21117\u003c/a\u003e)\n(Park Harin)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/044a627fa3e28ee1410d515acc5378eb4b49f8ba\"\u003e\u003ccode\u003e044a627\u003c/code\u003e\u003c/a\u003e\nchore: update minimatch to ^10.2.5 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21107\"\u003e#21107\u003c/a\u003e)\n(김채영)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/fb09aa8ff09730d3ccf68859e065f99666b52466\"\u003e\u003ccode\u003efb09aa8\u003c/code\u003e\u003c/a\u003e\nchore: update ecosystem plugins (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21115\"\u003e#21115\u003c/a\u003e)\n(ESLint Bot)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/5abd878740fe417fd8a910cac3741f2a0317b365\"\u003e\u003ccode\u003e5abd878\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eno-proto\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21114\"\u003e#21114\u003c/a\u003e)\n(Gihyeon Jeong / 정기현)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/9715887ec94a5ff936447d7b680d039fbe2f0541\"\u003e\u003ccode\u003e9715887\u003c/code\u003e\u003c/a\u003e\ntest: Add error location details to \u003ccode\u003eno-div-regex\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21110\"\u003e#21110\u003c/a\u003e)\n(Park Harin)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/a746ec6ea4a2249b1eb3f512264da5f4d5f7c886\"\u003e\u003ccode\u003ea746ec6\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eno-new-wrappers\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21109\"\u003e#21109\u003c/a\u003e)\n(Gihyeon Jeong / 정기현)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/8dde64570e240f3ef8af873d59a752db6d8519aa\"\u003e\u003ccode\u003e8dde645\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eno-ex-assign\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21102\"\u003e#21102\u003c/a\u003e)\n(devoil)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/13ab0ec447650c079d8a5e5d67222f79e69c741e\"\u003e\u003ccode\u003e13ab0ec\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eno-label-var\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21098\"\u003e#21098\u003c/a\u003e)\n(Gihyeon Jeong / 정기현)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/a99906ffb8342dde03336b5c6372b5658f21d5f2\"\u003e\u003ccode\u003ea99906f\u003c/code\u003e\u003c/a\u003e\ntest: Add error location details to \u003ccode\u003eno-delete-var\u003c/code\u003e rule (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21105\"\u003e#21105\u003c/a\u003e)\n(Park Harin)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/c47e8dc9bbfba797430db45ae08cb6f7392cfc9d\"\u003e\u003ccode\u003ec47e8dc\u003c/code\u003e\u003c/a\u003e\nchore: add missing backticks to \u003ccode\u003elanguages/js/index.js\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21104\"\u003e#21104\u003c/a\u003e)\n(beeen)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/0174428dd7543d118cf67a823b98dd97032fe68c\"\u003e\u003ccode\u003e0174428\u003c/code\u003e\u003c/a\u003e\nchore: add missing backticks to \u003ccode\u003etranslate-cli-options.js\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21097\"\u003e#21097\u003c/a\u003e)\n(dongkyu lee)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/3d36589a4917326500f0707bb41745160f387d00\"\u003e\u003ccode\u003e3d36589\u003c/code\u003e\u003c/a\u003e\nchore: add missing backticks to \u003ccode\u003eserialization.js\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21091\"\u003e#21091\u003c/a\u003e)\n(이규환)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/dcc9312c1081931de0fe1b555fbb6aa82fe696b9\"\u003e\u003ccode\u003edcc9312\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eeqeqeq\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21090\"\u003e#21090\u003c/a\u003e)\n(Ga eun Lee)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/2710b182472cd1a95e4aff6186cb2c4fbadb4ee0\"\u003e\u003ccode\u003e2710b18\u003c/code\u003e\u003c/a\u003e\nci: Add explicit permissions to rebuild-docs-sites workflow (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21089\"\u003e#21089\u003c/a\u003e)\n(Marry (Subin Yang))\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/5d2f8663ee60701e9036b0b0933a12efd9d93269\"\u003e\u003ccode\u003e5d2f866\u003c/code\u003e\u003c/a\u003e\nchore: update dependency prettier to v3.9.5 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21086\"\u003e#21086\u003c/a\u003e)\n(renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/d584e31098f262563b97dc5d5f23a63a187879a0\"\u003e\u003ccode\u003ed584e31\u003c/code\u003e\u003c/a\u003e\nchore: fix failing ecosystem test for \u003ccode\u003eeslint-plugin-unicorn\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21084\"\u003e#21084\u003c/a\u003e)\n(Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/bf3eda049bd690f1e9a5a0c4520a6329b3e4ec85\"\u003e\u003ccode\u003ebf3eda0\u003c/code\u003e\u003c/a\u003e\nchore: update ecosystem plugins (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21079\"\u003e#21079\u003c/a\u003e)\n(ESLint Bot)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.7.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/cf2a9bf2d982642f760370c15f1196f4658f4e27\"\u003e\u003ccode\u003ecf2a9bf\u003c/code\u003e\u003c/a\u003e\nfeat: add errorClassNames option to preserve-caught-error rule (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21032\"\u003e#21032\u003c/a\u003e)\n(sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/f8b873aae53610b80b5c1005606716e05ed3b91f\"\u003e\u003ccode\u003ef8b873a\u003c/code\u003e\u003c/a\u003e\nfeat: max-nested-callbacks option for constructor callbacks (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21063\"\u003e#21063\u003c/a\u003e)\n(fnx)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/749dfed106f44d77bf3af2402ebfae20cdbf59ee\"\u003e\u003ccode\u003e749dfed\u003c/code\u003e\u003c/a\u003e\n10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/4bd0d75b22ffd44809a92659f113c972c5be0770\"\u003e\u003ccode\u003e4bd0d75\u003c/code\u003e\u003c/a\u003e\nBuild: changelog update for 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/4fbf46d140120ae838db08cbe49544c985956490\"\u003e\u003ccode\u003e4fbf46d\u003c/code\u003e\u003c/a\u003e\ntest: pin \u003ccode\u003ewebpack\u003c/code\u003e version to 5.108.4 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21137\"\u003e#21137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/6ddf8587e5cfeeb7328332601bb76d98b8a198ea\"\u003e\u003ccode\u003e6ddf858\u003c/code\u003e\u003c/a\u003e\ndocs: fix broken Specify Parser Options anchor link (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21106\"\u003e#21106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/784dfbe98f0222426fd200153a5ce2e5624151f0\"\u003e\u003ccode\u003e784dfbe\u003c/code\u003e\u003c/a\u003e\ndocs: Clarify \u003ccode\u003eno-eq-null\u003c/code\u003e description (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21120\"\u003e#21120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/6b8d2f7589b8a7c8b91b8ca2a2ef6d46178760d8\"\u003e\u003ccode\u003e6b8d2f7\u003c/code\u003e\u003c/a\u003e\nfix: escape reserved characters in rule id in \u003ccode\u003ehtml\u003c/code\u003e\nformatter (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21129\"\u003e#21129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/2d063e224e9bb0ccb0a28c120f7e380a8d62f320\"\u003e\u003ccode\u003e2d063e2\u003c/code\u003e\u003c/a\u003e\nchore: update HTTP URLs to HTTPS in JSDoc and comments (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/eccbe7bc9257a6c99880468e452c8dfafbf47f74\"\u003e\u003ccode\u003eeccbe7b\u003c/code\u003e\u003c/a\u003e\ntest: add error locations to \u003ccode\u003eno-class-assign\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21123\"\u003e#21123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/2fee9bb7416116cbed4d8c8100b1ae713b6356a1\"\u003e\u003ccode\u003e2fee9bb\u003c/code\u003e\u003c/a\u003e\nfeat: export \u003ccode\u003eConfigObject\u003c/code\u003e from \u003ccode\u003eeslint/config\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21082\"\u003e#21082\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eslint/eslint/commit/e7d1e4373bf626f8da76d62ce024c28928bc99bc\"\u003e\u003ccode\u003ee7d1e43\u003c/code\u003e\u003c/a\u003e\nci: bump actions/setup-go from 6 to 7 (\u003ca\nhref\u003d\"https://redirect.github.com/eslint/eslint/issues/21118\"\u003e#21118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/eslint/eslint/compare/v8.57.1...v10.8.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jest` from 29.7.0 to 30.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/jestjs/jest/releases\"\u003ejest\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev30.4.2\u003c/h2\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Fix named imports from CJS modules whose\n\u003ccode\u003emodule.exports\u003c/code\u003e is a function with own-property exports (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16150\"\u003e#16150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/jestjs/jest/compare/v30.4.1...v30.4.2\"\u003ehttps://github.com/jestjs/jest/compare/v30.4.1...v30.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev30.4.1\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-runner, jest-schemas,\njest-types]\u003c/code\u003e Allow custom runner configuration options via tuple\nformat \u003ccode\u003e[\u0027runner-path\u0027, {options}]\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Align CJS-from-ESM default export with\nNode: \u003ccode\u003emodule.exports\u003c/code\u003e is always the ESM default,\n\u003ccode\u003e__esModule\u003c/code\u003e unwrapping is no longer applied (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/jestjs/jest/compare/v30.4.0...v30.4.1\"\u003ehttps://github.com/jestjs/jest/compare/v30.4.0...v30.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev30.4.0\u003c/h2\u003e\n\u003cp\u003eBig release! 😀\u003c/p\u003e\n\u003cp\u003eMain feature is a rewrite of our custom runtime in preparation for\nstabilisation of native support of ESM. As part of that work\n\u003ccode\u003erequire(esm)\u003c/code\u003e module is now supported on Node 24.9+ (still\nrequires \u003ccode\u003e--experimental-vm-modules\u003c/code\u003e like before).\u003c/p\u003e\n\u003cp\u003eIn addition we now support fake timers for the recently released\n\u003ccode\u003eTemporal\u003c/code\u003e API in Node v26.\u003c/p\u003e\n\u003cp\u003eReact 19 is also supported properly in \u003ccode\u003epretty-format\u003c/code\u003e,\nmeaning snapshots of React components now work like they should.\u003c/p\u003e\n\u003cp\u003eDue to all the changes, there might be regressions that snuck in.\nPlease report them!\u003c/p\u003e\n\u003cp\u003eFull list of changes below\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[babel-jest]\u003c/code\u003e Support collecting coverage from\n\u003ccode\u003e.mts\u003c/code\u003e, \u003ccode\u003e.cts\u003c/code\u003e (and other) files (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15994\"\u003e#15994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2,\njest-types]\u003c/code\u003e Add \u003ccode\u003e--collect-tests\u003c/code\u003e flag to discover and\nlist tests without executing them (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16006\"\u003e#16006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-runner, jest-worker]\u003c/code\u003e Add\n\u003ccode\u003eworkerGracefulExitTimeout\u003c/code\u003e config option to control how long\nworkers are given to exit before being force-killed (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15984\"\u003e#15984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Add support for\n\u003ccode\u003ejest.config.mts\u003c/code\u003e as a valid configuration file (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16005\"\u003e#16005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-reporters, jest-runner]\u003c/code\u003e\n\u003ccode\u003everbose\u003c/code\u003e and \u003ccode\u003esilent\u003c/code\u003e can now be set per-project;\nthe project-level value overrides the global value for that project\u0027s\ntests (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16133\"\u003e#16133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept\n\u003ccode\u003eTemporal.Duration\u003c/code\u003e in\n\u003ccode\u003ejest.advanceTimersByTime()\u003c/code\u003e and\n\u003ccode\u003ejest.advanceTimersByTimeAsync()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept\n\u003ccode\u003eTemporal.Instant\u003c/code\u003e and \u003ccode\u003eTemporal.ZonedDateTime\u003c/code\u003e in\n\u003ccode\u003ejest.setSystemTime()\u003c/code\u003e and \u003ccode\u003euseFakeTimers({now})\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Support faking\n\u003ccode\u003eTemporal.Now.*\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16131\"\u003e#16131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-mock]\u003c/code\u003e Add \u003ccode\u003eclearMocksOnScope(scope)\u003c/code\u003e\non \u003ccode\u003eModuleMocker\u003c/code\u003e for clearing every mock function exposed on\na scope object (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16088\"\u003e#16088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-resolve]\u003c/code\u003e Add \u003ccode\u003ecanResolveSync()\u003c/code\u003e on\n\u003ccode\u003eResolver\u003c/code\u003e so callers can detect when a user-configured\nresolver only exports an \u003ccode\u003easync\u003c/code\u003e hook (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16064\"\u003e#16064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Use synchronous \u003ccode\u003eevaluate()\u003c/code\u003e\nfor ES modules without top-level \u003ccode\u003eawait\u003c/code\u003e on Node versions\nthat support it (v24.9+), and prefer the synchronous transform path when\na sync transformer is configured (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Support \u003ccode\u003erequire()\u003c/code\u003e of ES\nmodules on Node v24.9+ (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16074\"\u003e#16074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Validate TC39 import attributes\n(\u003ccode\u003ewith { type: \u0027json\u0027 }\u003c/code\u003e) on ESM imports (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16127\"\u003e#16127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/transform]\u003c/code\u003e Add\n\u003ccode\u003ecanTransformSync(filename)\u003c/code\u003e on\n\u003ccode\u003eScriptTransformer\u003c/code\u003e so callers can pick the sync vs async\ntransform path (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-util]\u003c/code\u003e Add \u003ccode\u003eisError\u003c/code\u003e helper (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16076\"\u003e#16076\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/jestjs/jest/blob/main/CHANGELOG.md\"\u003ejest\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e30.4.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Fix named imports from CJS modules whose\n\u003ccode\u003emodule.exports\u003c/code\u003e is a function with own-property exports (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16150\"\u003e#16150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e30.4.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-runner, jest-schemas,\njest-types]\u003c/code\u003e Allow custom runner configuration options via tuple\nformat \u003ccode\u003e[\u0027runner-path\u0027, {options}]\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Align CJS-from-ESM default export with\nNode: \u003ccode\u003emodule.exports\u003c/code\u003e is always the ESM default,\n\u003ccode\u003e__esModule\u003c/code\u003e unwrapping is no longer applied (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e30.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[babel-jest]\u003c/code\u003e Support collecting coverage from\n\u003ccode\u003e.mts\u003c/code\u003e, \u003ccode\u003e.cts\u003c/code\u003e (and other) files (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15994\"\u003e#15994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2,\njest-types]\u003c/code\u003e Add \u003ccode\u003e--collect-tests\u003c/code\u003e flag to discover and\nlist tests without executing them (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16006\"\u003e#16006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-runner, jest-worker]\u003c/code\u003e Add\n\u003ccode\u003eworkerGracefulExitTimeout\u003c/code\u003e config option to control how long\nworkers are given to exit before being force-killed (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15984\"\u003e#15984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Add support for\n\u003ccode\u003ejest.config.mts\u003c/code\u003e as a valid configuration file (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16005\"\u003e#16005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-reporters, jest-runner]\u003c/code\u003e\n\u003ccode\u003everbose\u003c/code\u003e and \u003ccode\u003esilent\u003c/code\u003e can now be set per-project;\nthe project-level value overrides the global value for that project\u0027s\ntests (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16133\"\u003e#16133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept\n\u003ccode\u003eTemporal.Duration\u003c/code\u003e in\n\u003ccode\u003ejest.advanceTimersByTime()\u003c/code\u003e and\n\u003ccode\u003ejest.advanceTimersByTimeAsync()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept\n\u003ccode\u003eTemporal.Instant\u003c/code\u003e and \u003ccode\u003eTemporal.ZonedDateTime\u003c/code\u003e in\n\u003ccode\u003ejest.setSystemTime()\u003c/code\u003e and \u003ccode\u003euseFakeTimers({now})\u003c/code\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Support faking\n\u003ccode\u003eTemporal.Now.*\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16131\"\u003e#16131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-mock]\u003c/code\u003e Add \u003ccode\u003eclearMocksOnScope(scope)\u003c/code\u003e\non \u003ccode\u003eModuleMocker\u003c/code\u003e for clearing every mock function exposed on\na scope object (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16088\"\u003e#16088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-resolve]\u003c/code\u003e Add \u003ccode\u003ecanResolveSync()\u003c/code\u003e on\n\u003ccode\u003eResolver\u003c/code\u003e so callers can detect when a user-configured\nresolver only exports an \u003ccode\u003easync\u003c/code\u003e hook (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16064\"\u003e#16064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Use synchronous \u003ccode\u003eevaluate()\u003c/code\u003e\nfor ES modules without top-level \u003ccode\u003eawait\u003c/code\u003e on Node versions\nthat support it (v24.9+), and prefer the synchronous transform path when\na sync transformer is configured (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Support \u003ccode\u003erequire()\u003c/code\u003e of ES\nmodules on Node v24.9+ (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16074\"\u003e#16074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Validate TC39 import attributes\n(\u003ccode\u003ewith { type: \u0027json\u0027 }\u003c/code\u003e) on ESM imports (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16127\"\u003e#16127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/transform]\u003c/code\u003e Add\n\u003ccode\u003ecanTransformSync(filename)\u003c/code\u003e on\n\u003ccode\u003eScriptTransformer\u003c/code\u003e so callers can pick the sync vs async\ntransform path (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-util]\u003c/code\u003e Add \u003ccode\u003eisError\u003c/code\u003e helper (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16076\"\u003e#16076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[pretty-format]\u003c/code\u003e Support React 19 (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16123\"\u003e#16123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[expect-utils]\u003c/code\u003e Fix \u003ccode\u003etoStrictEqual\u003c/code\u003e failing\non \u003ccode\u003estructuredClone\u003c/code\u003e results due to cross-realm constructor\nmismatch (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15959\"\u003e#15959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/expect-utils]\u003c/code\u003e Prevent\n\u003ccode\u003etoMatchObject\u003c/code\u003e/subset matching from throwing when\nencountering exotic iterables (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15952\"\u003e#15952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[fake-timers]\u003c/code\u003e Convert \u003ccode\u003eDate\u003c/code\u003e to milliseconds\nbefore passing to \u003ccode\u003e@sinonjs/fake-timers\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16029\"\u003e#16029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest]\u003c/code\u003e Export \u003ccode\u003eGlobalConfig\u003c/code\u003e and\n\u003ccode\u003eProjectConfig\u003c/code\u003e TypeScript types (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus]\u003c/code\u003e Prevent crash when\n\u003ccode\u003easyncError\u003c/code\u003e is undefined for non-Error throws (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16003\"\u003e#16003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-jasmine2]\u003c/code\u003e Include\n\u003ccode\u003eError.cause\u003c/code\u003e in JSON \u003ccode\u003efailureMessages\u003c/code\u003e output (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15967\"\u003e#15967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Fix preset path resolution on Windows\nwhen the preset uses subpath \u003ccode\u003eexports\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/15961\"\u003e#15961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Allow \u003ccode\u003ecollectCoverage\u003c/code\u003e and\n\u003ccode\u003ecoverageProvider\u003c/code\u003e in project config without a validation\nwarning (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Project config validator now emits\n\u0026quot;is not supported in an individual project configuration\u0026quot;\ninstead of \u0026quot;probably a typing mistake\u0026quot; for known global-only\noptions (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-environment-node]\u003c/code\u003e Fix\n\u003ccode\u003e--localstorage-file\u003c/code\u003e warning on Node 25+ (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16086\"\u003e#16086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-reporters]\u003c/code\u003e Apply global coverage threshold to\nunmatched pattern files in addition to glob/path thresholds (\u003ca\nhref\u003d\"https://redirect.github.com/jestjs/jest/pull/16137\"\u003e#16137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/746f2a0f57c56e3bba555280f0587d40f3db95c0\"\u003e\u003ccode\u003e746f2a0\u003c/code\u003e\u003c/a\u003e\nv30.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/b3b4a09ed3005369dacc7466d1d2122797283785\"\u003e\u003ccode\u003eb3b4a09\u003c/code\u003e\u003c/a\u003e\nv30.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/5cbb21e0b3037edb42e503ec1a1ce80efad40c20\"\u003e\u003ccode\u003e5cbb21e\u003c/code\u003e\u003c/a\u003e\nv30.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/db7141a93cc85fab81cf9c25368e1f2b2c312286\"\u003e\u003ccode\u003edb7141a\u003c/code\u003e\u003c/a\u003e\nfix: allow \u003ccode\u003ecollectCoverage\u003c/code\u003e and\n\u003ccode\u003ecoverageProvider\u003c/code\u003e in project config (\u003ca\nhref\u003d\"https://github.com/jestjs/jest/tree/HEAD/packages/jest/issues/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/efb59c2e81083f8dc941f20d6d20a3af2dc8d068\"\u003e\u003ccode\u003eefb59c2\u003c/code\u003e\u003c/a\u003e\nv30.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/96c53d30660e51bf76ed2cd1ecc2334c399ac31c\"\u003e\u003ccode\u003e96c53d3\u003c/code\u003e\u003c/a\u003e\nfeat(jest-config): add \u003ccode\u003edefineConfig\u003c/code\u003e and\n\u003ccode\u003emergeConfig\u003c/code\u003e functions (\u003ca\nhref\u003d\"https://github.com/jestjs/jest/tree/HEAD/packages/jest/issues/15844\"\u003e#15844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/855864e3f9751366455246790be2bf912d4d0dac\"\u003e\u003ccode\u003e855864e\u003c/code\u003e\u003c/a\u003e\nv30.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/da9b532f04632367b0df15a842280501f225b732\"\u003e\u003ccode\u003eda9b532\u003c/code\u003e\u003c/a\u003e\nv30.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/ebfa31cc9787303e8698a1a029a162a18e8974aa\"\u003e\u003ccode\u003eebfa31c\u003c/code\u003e\u003c/a\u003e\nv30.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jestjs/jest/commit/d347c0f3f87f976a1dbd9761d503e45f5ced2a7e\"\u003e\u003ccode\u003ed347c0f\u003c/code\u003e\u003c/a\u003e\nv30.1.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/jestjs/jest/commits/v30.4.2/packages/jest\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ts-jest` from 29.4.11 to 29.4.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/releases\"\u003ets-jest\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.4.12\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e\nfor details.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003ets-jest\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/compare/v29.4.11...v29.4.12\"\u003e29.4.12\u003c/a\u003e\n(2026-07-22)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecompiler:\u003c/strong\u003e support TypeScript 7 projects through\ncompatibility aliases (\u003ca\nhref\u003d\"https://redirect.github.com/kulshekhar/ts-jest/pull/5386\"\u003e#5386\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/3f05625da10da954fdf0a10394385008275ddbb3\"\u003e\u003ccode\u003e3f05625\u003c/code\u003e\u003c/a\u003e\nchore(release): 29.4.12\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/df28b27f2e60edf275866763a3cdf745360d3eae\"\u003e\u003ccode\u003edf28b27\u003c/code\u003e\u003c/a\u003e\ndocs: clarify TypeScript version prerequisites\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/c8a614af419b1dcc90f3d1a7a48238ac1b637e6b\"\u003e\u003ccode\u003ec8a614a\u003c/code\u003e\u003c/a\u003e\ndocs: mention TypeScript 7 setup in README\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/06c79d4cebfa785749b2f96ef2dbeffc12798c47\"\u003e\u003ccode\u003e06c79d4\u003c/code\u003e\u003c/a\u003e\nfix: address TypeScript 7 review feedback\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/f10746008e512203ad7d8c581e2c58cc7dcd43c8\"\u003e\u003ccode\u003ef107460\u003c/code\u003e\u003c/a\u003e\ndocs: explain TypeScript 7 compatibility setup\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/33882274c1e4fc3a06cece3b21f4873182c8fee7\"\u003e\u003ccode\u003e3388227\u003c/code\u003e\u003c/a\u003e\ntest(e2e): add TypeScript compatibility matrix\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/891dc731ff9f31785ad9698e4d7cfa6078991fe6\"\u003e\u003ccode\u003e891dc73\u003c/code\u003e\u003c/a\u003e\nfix(compiler): support TypeScript 7 compatibility aliases\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/eb135ebe819991b1e10c998915cc6db2057c4de1\"\u003e\u003ccode\u003eeb135eb\u003c/code\u003e\u003c/a\u003e\nbuild(deps-dev): bump shell-quote from 1.8.4 to 1.10.0 in /examples\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/d5d80a34bc575be130db2b9f5cd0958173982cda\"\u003e\u003ccode\u003ed5d80a3\u003c/code\u003e\u003c/a\u003e\nci: pin google osv scan action at v2.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/commit/6bf293f0a4ddf468735d81fcdf04f923278e030c\"\u003e\u003ccode\u003e6bf293f\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump shell-quote from 1.8.4 to 1.10.0 in /website\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/kulshekhar/ts-jest/compare/v29.4.11...v29.4.12\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Shawn Yang \u003cshawn.ck.yang@gmail.com\u003e"
    },
    {
      "commit": "4f841f16fac94ffdf1599c0aaa548796c85726d6",
      "tree": "b7f3797a694a4524e6361cdab4106c750677197a",
      "parents": [
        "495f0cda8de6359ab2a16baca0c98128c1ccc687"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 04 13:58:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 11:28:09 2026 +0530"
      },
      "message": "docs(json): update docs (#3919)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "495f0cda8de6359ab2a16baca0c98128c1ccc687",
      "tree": "1ddaf73901026c5fa12c1c794341a63d9c96d5d3",
      "parents": [
        "7a457029694d3d8200c31482f4e56588b190f4e4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Aug 04 10:02:44 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 10:02:44 2026 +0530"
      },
      "message": "chore: Bump brace-expansion in /javascript (#3917)\n\nBumps and\n[brace-expansion](https://github.com/juliangruber/brace-expansion).\nThese dependencies needed to be updated together.\nUpdates `brace-expansion` from 1.1.16 to 1.1.18\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/758fcd6d188a95c2342818519c77b8c06794552b\"\u003e\u003ccode\u003e758fcd6\u003c/code\u003e\u003c/a\u003e\n1.1.18\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/27fbeed22b4fdf2c5f732f66bcf84d43f4a26c6e\"\u003e\u003ccode\u003e27fbeed\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/5c57cc2519dfb067e188b7cb0733fffbd02946bf\"\u003e\u003ccode\u003e5c57cc2\u003c/code\u003e\u003c/a\u003e\n1.1.17\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/d757f1dde7808bcbcd7a4628ab913e5185ed3d57\"\u003e\u003ccode\u003ed757f1d\u003c/code\u003e\u003c/a\u003e\nnpm ignore \u003ccode\u003e.claude\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031\"\u003e\u003ccode\u003ecb4b9e4\u003c/code\u003e\u003c/a\u003e\nfix: backport GHSA-mh99-v99m-4gvg (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/129\"\u003e#129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v1.1.16...v1.1.18\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `brace-expansion` from 5.0.8 to 5.0.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/758fcd6d188a95c2342818519c77b8c06794552b\"\u003e\u003ccode\u003e758fcd6\u003c/code\u003e\u003c/a\u003e\n1.1.18\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/27fbeed22b4fdf2c5f732f66bcf84d43f4a26c6e\"\u003e\u003ccode\u003e27fbeed\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/5c57cc2519dfb067e188b7cb0733fffbd02946bf\"\u003e\u003ccode\u003e5c57cc2\u003c/code\u003e\u003c/a\u003e\n1.1.17\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/d757f1dde7808bcbcd7a4628ab913e5185ed3d57\"\u003e\u003ccode\u003ed757f1d\u003c/code\u003e\u003c/a\u003e\nnpm ignore \u003ccode\u003e.claude\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031\"\u003e\u003ccode\u003ecb4b9e4\u003c/code\u003e\u003c/a\u003e\nfix: backport GHSA-mh99-v99m-4gvg (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/129\"\u003e#129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v1.1.16...v1.1.18\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7a457029694d3d8200c31482f4e56588b190f4e4",
      "tree": "6688bb174035164fd4671798a238cd661a57c16a",
      "parents": [
        "594eafd1975c08fb1dcb1d2144174bbc76f75df2"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 04 12:05:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 09:35:10 2026 +0530"
      },
      "message": "docs: update start docs (#3918)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "594eafd1975c08fb1dcb1d2144174bbc76f75df2",
      "tree": "7b5bee4a32fd878601b90a7c05c78d6544e72883",
      "parents": [
        "b853d32af0c0397e1b3785697f71773cf21d19e1"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 04 10:06:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 10:06:40 2026 +0800"
      },
      "message": "perf(json): optimize json performance (#3914)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "b853d32af0c0397e1b3785697f71773cf21d19e1",
      "tree": "7b97a8d6be08d8f72ff9aaa3d18303e8859042f2",
      "parents": [
        "1171637d4e4f1ca569844afc8228b771709b9998"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Aug 04 01:23:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 22:53:07 2026 +0530"
      },
      "message": "docs: reorganize documentation by capability (#3916)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n\u003c!--\nIs there any related issue? If this PR closes them you say say\nfix/closes:\n\n- #xxxx0\n- #xxxx1\n- Fixes #xxxx2\n--\u003e\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "1171637d4e4f1ca569844afc8228b771709b9998",
      "tree": "6739fd1f2340647826bfff3022a9ec69c43f9b8c",
      "parents": [
        "312a686dbb74c20d16dc09b5180a4a285bc2bfee"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 23:32:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 21:02:21 2026 +0530"
      },
      "message": "feat(rust): enhance rust row format (#3915)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n\u003c!--\nIs there any related issue? If this PR closes them you say say\nfix/closes:\n\n- #xxxx0\n- #xxxx1\n- Fixes #xxxx2\n--\u003e\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "312a686dbb74c20d16dc09b5180a4a285bc2bfee",
      "tree": "d70e4e26077d3785b167db5fb657c4e3a1074564",
      "parents": [
        "6a0fee1c344965bca7a90814455f0759dc32f01d"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 22:59:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 20:29:32 2026 +0530"
      },
      "message": "feat(rust): align row format with specification (#3913)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n\u003c!--\nIs there any related issue? If this PR closes them you say say\nfix/closes:\n\n- #xxxx0\n- #xxxx1\n- Fixes #xxxx2\n--\u003e\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "6a0fee1c344965bca7a90814455f0759dc32f01d",
      "tree": "638a92e2a8023aa5da630327eb596586eec9edde",
      "parents": [
        "6cddd3352abf5c1ac2119a0b4bde4402b19cd658"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 17:11:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 14:41:19 2026 +0530"
      },
      "message": "feat(java): add JSON graph budgets and validators (#3909)\n\n## Why?\n\n## What does this PR do?\n\n- Adds a fixed per-root `maxGraphMemoryBytes` limit with a 128 MiB\ndefault. Object, reference-array,\ncollection, map, and composite-wrapper owners are charged by the codec\nthat materializes them.\n  Dedicated leaf codecs remain uncharged and contain no budget branch.\n- Adds public method annotation `JsonValidator`. Effective public\ninstance no-argument void methods\nrun after the complete mapped object is constructed and populated.\nMultiple validators have no\nordering contract, and `JsonCreator` validation remains an alternative.\n- Supports validator add/remove overlays through exact `JsonMixin`\nmethod matching.\n- Completes interpreted, runtime-codegen, annotation-processor, GraalVM\nNative Image, Android, and\nrelease-minified R8 paths, with focused and platform integration\ncoverage.\n- Documents the public configuration, accounting scope, custom-codec\nownership, validator contract,\n  Mixin behavior, and Android/GraalVM setup.\n\n## Related issues\n\nN/A\n\n## AI Contribution Checklist\n\n## Validation\n\n\n## Does this PR introduce any user-facing change?\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "6cddd3352abf5c1ac2119a0b4bde4402b19cd658",
      "tree": "2f2ed2829d98cc3ceb5b6a1f520e120f9b9e9fe2",
      "parents": [
        "5613ea0fe3f5e26db750e6c8b60c904e0eb27e2e"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 13:53:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 11:23:12 2026 +0530"
      },
      "message": "refactor: unify read progress capability naming (#3912)\n\n\u003c!--\n**Thanks for contributing to Apache Fory™.**\n\n**If this is your first time opening a PR on fory, you can refer to\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**\n\nContribution Checklist\n\n- The **Apache Fory™** community has requirements on the naming of pr\ntitles. You can also find instructions in\n[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).\n\n- Apache Fory™ has a strong focus on performance. If the PR you submit\nwill have an impact on performance, please benchmark it first and\nprovide the benchmark result here.\n--\u003e\n\n## Why?\n\n\u003c!-- Describe the purpose of this PR. --\u003e\n\n## What does this PR do?\n\n\u003c!-- Describe the details of this PR. --\u003e\n\n## Related issues\n\n#3910\n\n## AI Contribution Checklist\n\n\u003c!-- Full requirements and disclosure template:\n\nhttps://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs\n--\u003e\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\u003c!-- If substantial AI assistance \u003d `yes`, paste the completed checklist\nand disclosure block here, including the final ai_review summary and\nscreenshot evidence or equivalent persisted links from both fresh\nreviewers described in AI_POLICY.md, the Fory-guided reviewer and the\nindependent general reviewer, on the current PR diff or current HEAD\nafter the latest code changes. --\u003e\n\n## Does this PR introduce any user-facing change?\n\n\u003c!--\nIf any user-facing interface changes, please [open an\nissue](https://github.com/apache/fory/issues/new/choose) describing the\nneed to do so and update the document if necessary.\n\nDelete section if not applicable.\n--\u003e\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n\u003c!--\nWhen the PR has an impact on performance (if you don\u0027t know whether the\nPR will have an impact on performance, you can submit the PR first, and\nif it will have impact on performance, the code reviewer will explain\nit), be sure to attach a benchmark data here.\n\nDelete section if not applicable.\n--\u003e"
    },
    {
      "commit": "5613ea0fe3f5e26db750e6c8b60c904e0eb27e2e",
      "tree": "eae93a7e9b6d3924195932dbc19d80f2b918702c",
      "parents": [
        "3194ad514dba41ec466818c71cb799408fd0244a"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 13:36:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 11:06:36 2026 +0530"
      },
      "message": "feat(java): support timezone in JSON date formats (#3911)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n#3908 \n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "3194ad514dba41ec466818c71cb799408fd0244a",
      "tree": "1ae68e47172cefd1276f03b47bdadc99ec27dc9c",
      "parents": [
        "0578df0b78ffde94b835296433830020374bc15d"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 13:11:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 10:41:45 2026 +0530"
      },
      "message": "feat(json): add GraalVM codegen support for json (#3907)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "0578df0b78ffde94b835296433830020374bc15d",
      "tree": "ff98bc398804800a62b39ae97d901c4eb040d1ee",
      "parents": [
        "b7bccc1162f4abfa6de88163a6b2deb540fbc5cf"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 13:10:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 10:40:52 2026 +0530"
      },
      "message": "feat: bound unbacked container deserialization (#3910)\n\n## Why?\n\n\n## What does this PR do?\n\n\n## Related issues\n\nNone.\n\n## AI Contribution Checklist\n\n### AI Usage Disclosure\n\n\n\n## Does this PR introduce any user-facing change?\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\nThe public configuration gains the bounded unbacked-container-item\nlimit. The wire encoding is unchanged.\n\n## Benchmark\n\nNot run, per explicit maintainer instruction for this robustness task.\nThe implementation preserves positive static/generated loop shape and\nadds no per-element allocation; focused source/codegen assertions cover\nremoval of budget/cursor work from proven-positive paths."
    },
    {
      "commit": "b7bccc1162f4abfa6de88163a6b2deb540fbc5cf",
      "tree": "39eb2e3cbe362465635039a88e999cc2cbef209c",
      "parents": [
        "5971ded1da4a9b308620388546f581e7c90188df"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 11:07:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 08:37:41 2026 +0530"
      },
      "message": "feat(java): add JSON date/time format annotation (#3908)\n\n## Why?\n\nFory JSON date/time fields currently use only their built-in textual\nrepresentations. Applications\nneed a field-owned way to select a deterministic `DateTimeFormatter`\npattern without registering a\ncomplete custom codec for every occurrence.\n\n## What does this PR do?\n\n- adds the field-only `JsonFormat(pattern \u003d ...)` annotation;\n- applies the pattern to direct supported date/time values and one\ndirect wrapper child, including\n`Optional`, arrays, `Collection`/`List`/`Set`, `AtomicReference`,\n`AtomicReferenceArray`, and Map\n  values;\n- rejects nested or ambiguous wrapper shapes, Map keys, complete wrapper\nrepresentations, and\n  conflicting representation annotations;\n- keeps formatter construction and annotation resolution on the cold\nmetadata path, reuses the\nexisting generated/interpreted codec capability path, writes without an\nintermediate String, and\n  parses ordinary ASCII input through the reader\u0027s reusable view;\n- supports runtime and processor Mixins, generated companions, Android,\nand GraalVM retention;\n- documents the exact supported types, root-locale behavior, UTC\n`Instant` behavior, and unsupported\n  cases.\n\n## Related issues\n\nNone.\n\n## AI Contribution Checklist\n、\n## Does this PR introduce any user-facing change?\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "5971ded1da4a9b308620388546f581e7c90188df",
      "tree": "ef97ea3ce77ae1c4cb6562a2c10be09c4599f07f",
      "parents": [
        "00e2e6e61ea1db82f6784962bddd4cd6f94addd6"
      ],
      "author": {
        "name": "Peiyang He",
        "email": "peiyang_he@smail.nju.edu.cn",
        "time": "Mon Aug 03 01:15:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 02 22:45:32 2026 +0530"
      },
      "message": "feat(compiler): support C++ gRPC code generation (#3877)\n\n## Why?\n\nSupport C++ gRPC code generation.\n\n## What does this PR do?\n\n### Overview\n\nThis PR adds C++ gRPC code generation support. \nAll unary, server-streaming, client-streaming, and bidirectional RPC\ntypes are supported.\nThey integrate with gRPC C++ synchronous APIs.\n\n### Fory-backed codec\n\nGenerated gRPC code uses Fory as codec. Given that the codec is\nrelatively small, it is generated directed within each\n`*_service_grpc.h`.\nOn writes, codec moves serialized bytes into a gRPC `Slice`, avoiding an\nadditional outbound payload copy. On reads, it uses a single\n`ByteBuffer` slice when possible and merges fragmented buffers only when\nnecessary.\n\n### Error-handling\n\nTo make the logic more robust, this PR also adds gRPC-related naming\ncollision detection and escaping.\nThis PR also considers special characters of C++ such as compilation\nguards.\nGenerated model and service headers use sanitized include guards; \nthe shared Fory codec is protected by\n`FORY_GENERATED_GRPC_SERIALIZATION_TRAITS_`;\neach `grpc::SerializationTraits\u003cT\u003e` specialization has a stable,\ntype-specific guard derived from a sanitized fully qualified type name\nand a SHA-256 prefix. This prevents duplicate specializations when\nseveral generated service headers use the same message type.\n\n### Testing\n\nThis PR adds compiler-side pytests and C++-Java gRPC interop tests. It\nalso adds a dedicated job in the CI.\n\n### Documentation\n\nThis PR adds documentation for the usage and example of the C++ gRPC\ncode generation feature.\n\n\n## Related issues\n\nClose https://github.com/apache/fory/issues/3276.\n\n## AI Contribution Checklist\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n## Does this PR introduce any user-facing change?\n\nN/A.\n\n## Benchmark\n\nN/A."
    },
    {
      "commit": "00e2e6e61ea1db82f6784962bddd4cd6f94addd6",
      "tree": "6baadaa77935d6e44560c5fb18cfccb7590cd677",
      "parents": [
        "0591f4a614fb574e0c2e57b958ebf355b5097285"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Aug 03 01:06:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 02 22:36:08 2026 +0530"
      },
      "message": "feat: add more read checks (#3898)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "0591f4a614fb574e0c2e57b958ebf355b5097285",
      "tree": "30c0dab00528c68b82213cde19d48a3ec8dcf24f",
      "parents": [
        "262b8ec4319f4c1f1ba40d33011e516f56269b15"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Sat Aug 01 21:39:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 21:39:20 2026 +0800"
      },
      "message": "docs(java): document cyclic container limitation (#3906)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\nCloses #3903 #3902\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "262b8ec4319f4c1f1ba40d33011e516f56269b15",
      "tree": "a6812e786068e242bc0c8a1c5230a126f88c0f2a",
      "parents": [
        "9321a223832a3b353ef29cd06e29250dab64d971"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Jul 31 14:03:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 11:33:00 2026 +0530"
      },
      "message": "chore(release): bump versions after 1.5.0 (#3905)\n\n## Summary\n\n- move active build, package, benchmark, and integration metadata to the\n1.6.0 development versions\n- update installation documentation and examples to the released 1.5.0\nartifacts\n- promote the Dart 1.5.0 changelog without dropping accumulated release\nnotes\n\n## Why\n\nApache Fory 1.5.0 has been released. The main development tree now\ntargets 1.6.0 while user-facing dependency examples must continue to\nreference the latest published release.\n\nThe Dart changelog updater previously replaced the full matching\ndevelopment section during promotion, which could discard release notes\ncollected during the cycle. It now preserves those notes and only\nreplaces the development-cycle marker.\n\n## User impact\n\nUsers copying installation snippets receive version 1.5.0. Contributors\nbuild and test against the ecosystem-specific 1.6.0 development\nversions.\n\n## Validation\n\n- ran the release bump command twice to check idempotence\n- formatted changed Markdown and Python files\n- ran Ruff checks on the changed release script\n- ran `git diff --check`\n- full build and test coverage is delegated to pull request CI"
    },
    {
      "commit": "9321a223832a3b353ef29cd06e29250dab64d971",
      "tree": "aac8aca2a0171fb7aa72b146d8b58faf132b3ea5",
      "parents": [
        "2e1225d81c1bf83ced31991e3c6194f2e12d759d"
      ],
      "author": {
        "name": "Peiyang He",
        "email": "peiyang_he@smail.nju.edu.cn",
        "time": "Thu Jul 30 11:53:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:23:25 2026 +0530"
      },
      "message": "fix(ci): pin Ruff version to 0.15.22 (#3900)\n\n## Why?\n\nPin Ruff version so existing Python files are not affected by breaking\nchanges brought by Ruff 0.16.0.\n\n## What does this PR do?\n\nPin Ruff version to 0.15.22, the last version before 0.16.0.\n\n## Related issues\n\nCloses https://github.com/apache/fory/issues/3899.\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "2e1225d81c1bf83ced31991e3c6194f2e12d759d",
      "tree": "4f74d29ba2ec1b18dffd4c0672c85f65e7ab97e7",
      "parents": [
        "68c9186f95693d0e223665bdce1f33fc7212cc77"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 29 21:45:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 19:15:02 2026 +0530"
      },
      "message": "feat(java): use fixed Fory JSON execution states (#3897)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "68c9186f95693d0e223665bdce1f33fc7212cc77",
      "tree": "5979d849b0df98a2d9e43505f4b142827cd9f33f",
      "parents": [
        "1adfe9822065d6304517eff01655d6b3b2216d32"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 28 19:47:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 17:17:33 2026 +0530"
      },
      "message": "docs: rename manual serializers to custom serializers (#3896)\n\n## Summary\n\n- standardize the repository on the canonical term `custom serializer`\n- destructively rename six guide, example, test, and fixture files and\nupdate every reference\n- align runtime comments, diagnostics, tests, benchmarks,\nspecifications, READMEs, and agent guidance without keeping aliases or\nredirects\n\n## Why\n\n`Custom serializer` describes an application-defined serialization\nimplementation more precisely than `manual serializer` and is already\nthe established term in several language guides. Keeping both terms\ncreated inconsistent documentation, filenames, test names, and\ndiagnostics for the same concept.\n\n## Verification\n\n- stale terminology, path, ID, identifier, and filename scans: zero\nmatches\n- relative links in 50 changed Markdown files: all targets exist\n- C#: format check and 312 tests\n- Dart: code generation, analysis, and 334 + 32 tests\n- Rust: full test suite and Clippy (allowing only the pre-existing\nconstant-assertion lint)\n- Swift: format, lint, and 229 tests\n- Python: Ruff and 690 tests\n- Java: Spotless and compile with JDK 21\n- JavaScript: Prettier and ESLint\n- Go: gofmt and full tests\n- C++: clang-format check\n- Rust and Swift external-type benchmarks: compile checks"
    },
    {
      "commit": "1adfe9822065d6304517eff01655d6b3b2216d32",
      "tree": "a08f63bf8941a502fe5d1ecc04d57c0a72adde61",
      "parents": [
        "bd0ca9825b3206b1a53bf27bfb180a551ab39236"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 28 18:03:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 18:03:51 2026 +0800"
      },
      "message": "docs(java): publish JSON benchmark results (#3895)\n\n## Why?\n\n\n\n## What does this PR do?\n\npublish JSON benchmark results:\n\n\n| Representation | Operation | fory-json ops/sec | jackson ops/sec |\ngson ops/sec | Fastest |\n| -------------- | ----------- | ----------------: | --------------: |\n-----------: | --------- |\n| String | Serialize | 7,387,465 | 2,049,368 | 1,084,042 | fory-json |\n| String | Deserialize | 2,897,955 | 1,074,885 | 902,772 | fory-json |\n| UTF-8 bytes | Serialize | 10,375,498 | 1,868,614 | 1,037,211 |\nfory-json |\n| UTF-8 bytes | Deserialize | 3,077,158 | 1,268,397 | 933,079 |\nfory-json |\n\n\u003cimg width\u003d\"1854\" height\u003d\"450\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/acbdce12-97b5-4b43-8f00-ee1b2aef2c92\"\n/\u003e\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "bd0ca9825b3206b1a53bf27bfb180a551ab39236",
      "tree": "7473603c117304867f6eb387b688d5a0fc1d2a9d",
      "parents": [
        "c91f7c562b6f4b92cec73df60b04f3905f48ae37"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 28 12:50:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 12:50:37 2026 +0800"
      },
      "message": "feat(dart): allow omitting inherited private fields (#3894)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "c91f7c562b6f4b92cec73df60b04f3905f48ae37",
      "tree": "d59851931536f22730240a9e1522c9ec00b27c79",
      "parents": [
        "3d791e20f3488be00e08152006340b3a2e801c57"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 28 11:07:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 08:37:03 2026 +0530"
      },
      "message": "feat(dart): add dart inheriance support (#3892)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "3d791e20f3488be00e08152006340b3a2e801c57",
      "tree": "a60fdb6a3e60ebb65b8a46754c2635e724360924",
      "parents": [
        "fc82f73f283576b20765b47c1c9b6744fa49beca"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 28 10:10:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 07:40:52 2026 +0530"
      },
      "message": "feat(csharp): support generated class inheritance (#3893)\n\n## Why?\n\nGenerated C# serializers previously modeled only members declared by the\nconcrete class. Base-class\nwire members could be omitted from field ordering, schema metadata,\nreads, and writes, while private\nparent storage could not be included correctly when the parent came from\nanother compilation.\nThird-party base classes also need an explicit, application-owned way to\ndescribe inaccessible\nfields without inspecting private assembly metadata.\n\n## What does this PR do?\n\n- Adds declaration-owned hierarchy provider contracts for ordinary\ninheritable classes. A concrete\nserializer flattens the immediate parent provider\u0027s wire members with\nits own members and composes\n  cumulative shallow-storage bytes without calling a parent serializer.\n- Separates the flattened wire-member model from shallow\ninstance-storage accounting so inherited\nschema behavior and graph-memory reservation each have one clear owner.\n- Adds exact external class field mappings through `TargetDeclaringType`\nand `TargetMemberName`, plus\n`BaseOnly` declarations for unmodifiable third-party hierarchy prefixes\nand storage-only fields.\n- Validates referenced provider identity, descriptor counts and\nordinals, accessor signatures,\naccessibility, generic construction, and override/member identities\nbefore generating child code.\n- Splits `ForyModelGenerator` into focused partial files for analysis,\nhierarchy composition,\nexternal mappings, models, and emission while retaining one generation\npath.\n- Adds same-compilation, cross-assembly, external private-field,\ngraph-memory, generator diagnostic,\nand C# xlang coverage, and updates the C# guides and xlang\nimplementation specification.\n\n## Related issues\n\nN/A\n\n## AI Contribution Checklist\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n## Does this PR introduce any user-facing change?\n\nYes. Annotated C# class hierarchies now serialize inherited fields.\nExternal serializer declarations\ngain `BaseOnly`, `TargetDeclaringType`, and `TargetMemberName` for\nexplicit third-party class\nhierarchy and private-field mappings. The shared binary protocol\nencoding is unchanged.\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\nThe existing C# external-equivalence benchmark model now declares exact\nbacking storage through\nstorage-only external mappings. This PR does not add a benchmark harness\nor a separate inheritance\nbenchmark path."
    },
    {
      "commit": "fc82f73f283576b20765b47c1c9b6744fa49beca",
      "tree": "69821be81abd8d6362968993c9b5d05327d34118",
      "parents": [
        "ad37f0d72eed073d11cb8804548c69f84a570832"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 28 09:34:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 07:04:50 2026 +0530"
      },
      "message": "fix: fix release errors (#3891)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "ad37f0d72eed073d11cb8804548c69f84a570832",
      "tree": "eab2e913178e9af46e4e53a729672f56b84dd582",
      "parents": [
        "c5bc54fd1aa70f2e392f7d323351cf2aae9f366b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 18:36:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:06:08 2026 +0530"
      },
      "message": "feat(xlang): harden external type support (#3890)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "c5bc54fd1aa70f2e392f7d323351cf2aae9f366b",
      "tree": "144d1ba6030078ea4f3d576065553c8d5141fd3e",
      "parents": [
        "78cba25b6c54b4182ddd5573cb3a73008c74d856"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 17:25:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 14:55:27 2026 +0530"
      },
      "message": "feat(csharp): support external type serialization (#3889)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "78cba25b6c54b4182ddd5573cb3a73008c74d856",
      "tree": "1ac64513669c3d1cd2f6b7ad92537e280e4a45e5",
      "parents": [
        "1d4cf0042bb9ac2b827544f425effe3e8344fd21"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 13:32:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 13:32:58 2026 +0800"
      },
      "message": "feat(swift): support external-type serialization (#3888)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "1d4cf0042bb9ac2b827544f425effe3e8344fd21",
      "tree": "38c7c7cc13dc6062fd726aa2c275594e7d2c5bb4",
      "parents": [
        "5a2252d33802d42649b7004f939de5d9c7ea5234"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 11:02:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:02:30 2026 +0800"
      },
      "message": "feat(dart): add external-type serialization (#3886)\n\n## Why?\n\nDart classes owned by dependencies cannot carry Fory annotations.\nApplications\nneed generated serializers for those types without copying values into\nlocal\nmodels or adding a second registration, carrier, root, or polymorphic\npath.\n\n## What does this PR do?\n\n- Adds `ForyStruct.target` and constructor selection so an `abstract\nfinal`\nlocal schema declaration generates a direct serializer for a closed\nexternal\n  class.\n- Uses the existing generated struct model, target-keyed schema/module\n  registration, field descriptors, carrier codecs, root APIs, reference\n  resolver, compatible reads, and polymorphic registration.\n- Generates direct target getters, generative constructor calls, and\nsetters;\nvalidates the external contract at generation time, including generic\ntype\nrendering, re-exported nullable aliases, and constructor-cycle\nconstraints.\n- Covers roots, fields, nested list/set/map fields, named and numeric\nregistration, polymorphism, references, compatible mode, generic\ntargets,\n  Java-to-Dart xlang exchange, and JavaScript compilation.\n- Documents the current external-type serialization and manual\nserializer\n  APIs without migration or removed-API material.\n\n## Related issues\n\nN/A\n\n## AI Contribution Checklist\n\n\n### AI Usage Disclosure\n\n\n## Does this PR introduce any user-facing change?\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\nThe public Dart annotation API adds optional `target` and `constructor`\narguments to `ForyStruct`. The wire format is unchanged.\n\n## Verification\n\n- `cd dart/packages/fory \u0026\u0026 dart run build_runner build \u0026\u0026 dart analyze\n\u0026\u0026 dart test`\n  - generation: 98 outputs, no tracked changes\n  - analysis: clean\n  - tests: 232/232 passed\n- `cd dart/packages/fory-test \u0026\u0026 dart run build_runner build \u0026\u0026 dart\nanalyze \u0026\u0026 dart test`\n  - generation: 3 outputs, no tracked changes\n  - analysis: clean\n  - tests: 18/18 passed\n- `cd dart \u0026\u0026 dart analyze \u0026\u0026 dart test`\n  - analysis: clean\n  - tests: 1/1 passed\n- `cd dart/packages/external-type-test-models \u0026\u0026 dart analyze`\n  - analysis: clean\n- `dart compile js` for\n`dart/packages/fory-test/tool/external_type_js_smoke.dart`, followed by\nNode\n  execution\n  - compiled successfully and exited successfully\n- `FORY_DART_JAVA_CI\u003d1 ENABLE_FORY_DEBUG_OUTPUT\u003d1 mvn -T16\n--no-transfer-progress test -Dtest\u003dorg.apache.fory.xlang.DartXlangTest`\n  - 101/101 passed with no failures, errors, or skips\n\n## Benchmark\n\nFresh `apache/main` ordinary benchmarks were run in adjacent\nbaseline/current\npairs. Every retained median met the less-than-1% slowdown gate, and the\ngenerated ordinary benchmark source was byte-identical.\n\nEquivalent ordinary/external generated paths were measured in AOT mode\nwith\nsplit debugging data:\n\n| Path                    | Retained delta |\n| ----------------------- | -------------: |\n| Root serialize          |         +0.02% |\n| Root deserialize        |         +0.04% |\n| Direct field serialize  |         +0.53% |\n| Direct field deserialize |         -0.82% |\n| List field serialize    |         +1.47% |\n| List field deserialize  |         -0.02% |\n| Map field serialize     |         +0.09% |\n| Map field deserialize   |         +0.90% |\n\nNegative values are slowdowns; every slowdown is below 1%. Serialized\nbytes\nand normalized generated serializer bodies matched. The fixed-iteration\nVM\nallocation check reported identical per-class object counts for all\neight\nserialize/deserialize lanes at 1,000 iterations."
    },
    {
      "commit": "5a2252d33802d42649b7004f939de5d9c7ea5234",
      "tree": "e43841c573e409d937fd70125636348e33d2b803",
      "parents": [
        "4cdf1510fcf292a08d79b8233a6c2dac8d4998be"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 10:33:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 10:33:46 2026 +0800"
      },
      "message": "fix(cpp): validate polymorphic smart pointer reads (#3887)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "4cdf1510fcf292a08d79b8233a6c2dac8d4998be",
      "tree": "478deebc41f0cb7f2dad68b8732615961420a0b8",
      "parents": [
        "f868e576bb950de1c8d5576e00aca19619cb83b2"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 01:30:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 01:30:47 2026 +0800"
      },
      "message": "fix(xlang): reject malformed meta strings (#3885)\n\n## Why?\n\nMalformed meta strings and TypeDef name metadata could trigger\nruntime-specific indexing failures or\nallow decoding to continue with an incomplete error state. Go also\nexposed both a shared `*Error`\nparameter and a returned `error`, which made it easy for callers to drop\none error channel.\n\n## What does this PR do?\n\n- Hardens Go meta-string decoding for empty transformed output and\nunmatched escape markers.\n- Makes Go `MetaStringResolver.ReadMetaStringBytes` report failures only\nthrough its supplied\n`*Error`, and stops TypeInfo consumers before dereferencing failed\nresults.\n- Treats Go name-hash lookups as candidates on TypeDef cache misses and\nrequires exact encoded\n  namespace/type identity before accepting them.\n- Rejects malformed escape markers and invalid TypeDef name encodings or\noverflowing name lengths\n  in the affected Java, Python, JavaScript, and Dart paths.\n- Corrects JavaScript dynamic meta-string reference IDs and one-based\nreference lookup.\n- Adds focused regression coverage for the malformed cases and valid\nJavaScript reference reuse.\n\nValid metadata bytes and the binary protocol are unchanged.\n\n## Related issues\n\nN/A.\n\n## AI Contribution Checklist\n\n### AI Usage Disclosure\n\n\n## Does this PR introduce any user-facing change?\n\nGo callers of `MetaStringResolver.ReadMetaStringBytes` now receive only\n`*MetaStringBytes`; failures\nare stored in the supplied `*Error`.\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Validation\n\n- Go:\n  - `ENABLE_FORY_DEBUG_OUTPUT\u003d1 go test -v ./...`\n- focused `go test -race` coverage for malformed meta strings, resolver\nerrors, TypeDef names, and\n    TypeInfo consumers\n- Java:\n  - `mvn -T16 spotless:check`\n- focused metadata tests and full `ENABLE_FORY_DEBUG_OUTPUT\u003d1 mvn -T16\ntest`\n- Python:\n- full pytest suites with `ENABLE_FORY_CYTHON_SERIALIZATION\u003d0` and `\u003d1`\n  - Java-driven `PythonXlangTest` in both modes\n- `ruff format --check` passed; the changed lines introduce zero Ruff\nfindings\n- JavaScript:\n  - focused and full Jest suites\n  - `npm run build`\n  - `npm run format-check`\n- Dart:\n  - `dart analyze`\n  - focused xlang protocol test and full `dart test packages/fory/test`\n\n## Benchmark\n\nNot run, by explicit scope. The final diff was reviewed to ensure\nvalidation remains on TypeDef\ncache-miss or malformed-input paths. Checked metadata cache hits are\nunchanged, and no new\nsuccessful-path allocation or wrapper was introduced."
    },
    {
      "commit": "f868e576bb950de1c8d5576e00aca19619cb83b2",
      "tree": "3ce0199b6266484c0db45ddb5b883245d07f8b28",
      "parents": [
        "df991ac49953ea0991e7404892eda17c66744c41"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 00:20:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 00:20:12 2026 +0800"
      },
      "message": "fix(cpp): validate tagged struct field reads (#3884)\n\n## What changed\n\n- route tagged integer fields in the C++ struct batch reader through the\nchecked local-offset decoder\n- preserve the existing fast path for ordinary varints\n- reject truncated signed and unsigned tagged fields in\nschema-consistent and exact-compatible modes\n\n## Why\n\nThe primitive struct batch reader used unchecked fixed-width loads for\ntagged integer fields. A truncated input could reach those loads before\nthe declared buffer boundary was validated.\n\n## Validation\n\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 bazel test\n//cpp/fory/serialization:struct_test\n--test_filter\u003dStructComprehensiveTest.TaggedIntTruncationFails`\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 bazel test\n//cpp/fory/serialization:struct_test`"
    },
    {
      "commit": "df991ac49953ea0991e7404892eda17c66744c41",
      "tree": "84e9040eb95e7894bfd14bebde989f3a5238436c",
      "parents": [
        "2d323736a8cb273c95f950778e34051a7b97cdff"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 27 00:15:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 00:15:20 2026 +0800"
      },
      "message": "feat(rust): support external-type serialization (#3881)\n\n## Why?\n\nRust\u0027s orphan rule prevents applications from implementing Fory traits\ndirectly for types owned by other crates. Users currently need local\nwrapper or mirror types for common external types such as `uuid` and\n`jiff`, which adds conversions and makes external types difficult to use\nin fields, containers, roots, and dynamic values.\n\n## What does this PR do?\n\n- Introduces target-based external-type serialization for Rust.\n`ForyStruct`, `ForyEnum`, and `ForyUnion` can derive serializers for\ntypes owned by another crate, while manual serializers can provide\ncustomized encodings.\n- Adds `serialize_with`, `serialize_to_with`, `deserialize_with`, and\n`deserialize_from_with` for serializer-selected roots.\n- Supports node-local serializer selection for direct fields and\nrecursive list, map, and tuple children.\n- Adds allocation-free carrier serializers for the supported Rust\nwrappers, collections, maps, fixed arrays, and tuple arities 1 through\n22, so external serializers compose recursively without registration or\nruntime provider trees.\n- Unifies ordinary, external, manual, carrier, `Any`, and\napplication-trait serialization on one serializer/codec ownership model\nwhile preserving existing wire encodings, schema metadata, reference\ntracking, compatible mode, and graph-memory checks.\n- Updates Rust code generation, public exports, API fixtures, focused\ntests, the Rust xlang suite, guides/specifications, and separates\nlocal/external Rust benchmarks from the xlang benchmark package.\n\n## Related issues\n\nCloses #3873 \n\n#1226 \n#2671 \n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\nYes. Rust users can define structural or manual serializers for\nthird-party types, select them at roots or nested field nodes, and\ncompose them through Fory-provided carrier serializers.\n\n- [x] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\nAdjacent Criterion comparisons against `apache/main`:\n\n- Ordinary `sample/fory_serialize`: retained median delta `-0.158%`.\n- Ordinary `sample/fory_deserialize`: `211.69 ns` -\u003e `213.71 ns`\n(`+0.954%`).\n- External structural root: self-owned `21.993 ns`, selected `20.984 ns`\n(selected `4.59%` faster).\n- External recursive field: self-owned `53.675 ns`, selected `53.320 ns`\n(selected `0.66%` faster).\n\nAll affected retained medians remain within the 1% regression gate; the\nselected paths preserve equivalent wire work and add no hot-path\nallocation."
    },
    {
      "commit": "2d323736a8cb273c95f950778e34051a7b97cdff",
      "tree": "809204edc7ba404d797512cf38e7f8e71b64184d",
      "parents": [
        "c86d6306d2f90c1862ab47d5e176a4dcb7888de8"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Sun Jul 26 23:35:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 23:35:15 2026 +0800"
      },
      "message": "chore(deps): upgrade test deps (#3883)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "c86d6306d2f90c1862ab47d5e176a4dcb7888de8",
      "tree": "6a962c443055a58dd30edd8fba990686aecada46",
      "parents": [
        "585eb16fda3b5729f6d6ca6d1be88fc42cd424d6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 26 22:58:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 22:58:14 2026 +0800"
      },
      "message": "chore: Bump tar from 7.5.20 to 7.5.22 in /javascript (#3882)\n\nBumps [tar](https://github.com/isaacs/node-tar) from 7.5.20 to 7.5.22.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/2a22bfc5d3a432a606d9da0e2d87ba634aa3b1cb\"\u003e\u003ccode\u003e2a22bfc\u003c/code\u003e\u003c/a\u003e\n7.5.22\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/df1cd8dc09cded47b00c4129698824b3986432ac\"\u003e\u003ccode\u003edf1cd8d\u003c/code\u003e\u003c/a\u003e\nAllow transform to be falsey\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/0cd9cc3c5814446d3c0cbea6a31d6c00c2c8a9d9\"\u003e\u003ccode\u003e0cd9cc3\u003c/code\u003e\u003c/a\u003e\n7.5.21\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/631ae59121bf8fc8a22bbae35f074cb9b789cd4a\"\u003e\u003ccode\u003e631ae59\u003c/code\u003e\u003c/a\u003e\nlist: prevent unbounded recursion\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/compare/v7.5.20...v7.5.22\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dtar\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d7.5.20\u0026new-version\u003d7.5.22)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "585eb16fda3b5729f6d6ca6d1be88fc42cd424d6",
      "tree": "5e2c456b86940402c2d0f1fe1b639ada91565779",
      "parents": [
        "6a4a686813eee9a4a98fdbde04eacb9836ef13d9"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Sun Jul 26 22:27:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 22:27:59 2026 +0800"
      },
      "message": "feat(java): optimize json perf (#3871)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "6a4a686813eee9a4a98fdbde04eacb9836ef13d9",
      "tree": "83928060251023ffcf40c96a8189dfce6fc77972",
      "parents": [
        "5253568815394c2362f7dfceed7f0ec98971d425"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 25 00:12:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 00:12:02 2026 +0800"
      },
      "message": "chore: Bump com.fasterxml.jackson.core:jackson-core from 2.18.6 to 2.18.8 in /java/fory-testsuite (#3880)\n\nBumps\n[com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core)\nfrom 2.18.6 to 2.18.8.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/899d70ae7ddf5bb42db09bfe3c384b7fe4b68808\"\u003e\u003ccode\u003e899d70a\u003c/code\u003e\u003c/a\u003e\n[maven-release-plugin] prepare release jackson-core-2.18.8\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/a006b52ed5de9ac8e94a0074e7e0c09317b5c15d\"\u003e\u003ccode\u003ea006b52\u003c/code\u003e\u003c/a\u003e\nPrep for 2.18.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/88e394136bcd3a0b3e19770eab55158f43bd8976\"\u003e\u003ccode\u003e88e3941\u003c/code\u003e\u003c/a\u003e\nAdd back JDK 11 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/1665ef1a9d23e6158a51e9198c10a02d91a262b6\"\u003e\u003ccode\u003e1665ef1\u003c/code\u003e\u003c/a\u003e\nFix release notes\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/4cdd529749da396cc7edf6d4a2aad41d47902641\"\u003e\u003ccode\u003e4cdd529\u003c/code\u003e\u003c/a\u003e\nApply number-length validator on streaming integer path of async parser\n(\u003ca\nhref\u003d\"https://redirect.github.com/FasterXML/jackson-core/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/cd4d6b2baf575fd84419368717ddf12eb21fc8d7\"\u003e\u003ccode\u003ecd4d6b2\u003c/code\u003e\u003c/a\u003e\nPost-release dep version bump\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/03458823cc3cf78f1ea19cfe5f045475628ee834\"\u003e\u003ccode\u003e0345882\u003c/code\u003e\u003c/a\u003e\n[maven-release-plugin] prepare for next development iteration\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/a7a5562c0215da3e1297e4825fc5fc4d4f237c68\"\u003e\u003ccode\u003ea7a5562\u003c/code\u003e\u003c/a\u003e\n[maven-release-plugin] prepare release jackson-core-2.18.7\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/cd647ea2cf15ee7740f1e3eb447335f667dd3a7a\"\u003e\u003ccode\u003ecd647ea\u003c/code\u003e\u003c/a\u003e\nPrep for 2.18.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/commit/8c91dbba9e7c0872ad2bfee5675f2b9fff09c536\"\u003e\u003ccode\u003e8c91dbb\u003c/code\u003e\u003c/a\u003e\nFix \u003ca\nhref\u003d\"https://redirect.github.com/FasterXML/jackson-core/issues/1602\"\u003e#1602\u003c/a\u003e:\nenforce StreamReadConstraints.maxNameLen on\nUTF8DataInputJsonParse...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.6...jackson-core-2.18.8\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dcom.fasterxml.jackson.core:jackson-core\u0026package-manager\u003dmaven\u0026previous-version\u003d2.18.6\u0026new-version\u003d2.18.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5253568815394c2362f7dfceed7f0ec98971d425",
      "tree": "f8c0616c1df4b00eefe94e8942c12f107a70b10a",
      "parents": [
        "dbdae12f852eecae6b1a50f0e23dacef2aeaeeaf"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 16:57:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 16:57:18 2026 +0530"
      },
      "message": "chore: Bump tar from 7.5.16 to 7.5.20 in /javascript (#3879)\n\nBumps [tar](https://github.com/isaacs/node-tar) from 7.5.16 to 7.5.20.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/ebbb72094159d003f428dcd1cb28255d37ea4873\"\u003e\u003ccode\u003eebbb720\u003c/code\u003e\u003c/a\u003e\n7.5.20\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/2f271963a7fe5a5960aee5dd6adf9647a1e266fd\"\u003e\u003ccode\u003e2f27196\u003c/code\u003e\u003c/a\u003e\nfix: fully disable and dispose of unzip when aborting parser\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/be440da64e9fe80c68c755d8147328ea1cc2a9ad\"\u003e\u003ccode\u003ebe440da\u003c/code\u003e\u003c/a\u003e\n7.5.19\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/2812e9338665659b183aa7226518c307044957d3\"\u003e\u003ccode\u003e2812e93\u003c/code\u003e\u003c/a\u003e\nadd maxDecompressionRatio guard against explosive decompression\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/9ecd4d2956fd915507eca018ddc1fea727fbba93\"\u003e\u003ccode\u003e9ecd4d2\u003c/code\u003e\u003c/a\u003e\n7.5.18\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/9e78bf058b2c22dd4d52e00d8922d5c06fc2f7b5\"\u003e\u003ccode\u003e9e78bf0\u003c/code\u003e\u003c/a\u003e\nrefuse to let header size be less than 0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/e02a4e9e013c4be95302e2eb2047a942b883c27b\"\u003e\u003ccode\u003ee02a4e9\u003c/code\u003e\u003c/a\u003e\npax: parse values according to known types\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/9cbdb31e5e8dbcb97a642e0f91e2d1e342585946\"\u003e\u003ccode\u003e9cbdb31\u003c/code\u003e\u003c/a\u003e\n7.5.17\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/commit/7a635c29f5edbf083557374d43984273ecfed5b3\"\u003e\u003ccode\u003e7a635c2\u003c/code\u003e\u003c/a\u003e\nterminate pax strings on nul bytes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/isaacs/node-tar/compare/v7.5.16...v7.5.20\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dtar\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d7.5.16\u0026new-version\u003d7.5.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "dbdae12f852eecae6b1a50f0e23dacef2aeaeeaf",
      "tree": "e728c5b9f552e3ea473180ff243d3ef0c111f188",
      "parents": [
        "8d08942c8949557466360dd55f4128f098dcc64f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 16:50:25 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 16:50:25 2026 +0530"
      },
      "message": "chore: Bump protobufjs from 7.6.3 to 7.6.5 in /javascript (#3878)\n\nBumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.6.3\nto 7.6.5.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/releases\"\u003eprotobufjs\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eprotobufjs: v7.6.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.4...protobufjs-v7.6.5\"\u003e7.6.5\u003c/a\u003e\n(2026-07-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehandle EOF during options parsing (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2352\"\u003e#2352\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2356\"\u003e#2356\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/10fba6d54815ceecca8a06b9a6db490c8f5d2217\"\u003e10fba6d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eprotobufjs: v7.6.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.3...protobufjs-v7.6.4\"\u003e7.6.4\u003c/a\u003e\n(2026-06-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReconfigure and speed up CI (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2329\"\u003e#2329\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/574f761c05b007dab6595ca1eaed86436579ba3f\"\u003e574f761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove inquire submodule (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2327\"\u003e#2327\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/06ddd07064329032aae6db586e2d54938b591792\"\u003e06ddd07\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.6.5/CHANGELOG.md\"\u003eprotobufjs\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.4...protobufjs-v7.6.5\"\u003e7.6.5\u003c/a\u003e\n(2026-07-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehandle EOF during options parsing (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2352\"\u003e#2352\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2356\"\u003e#2356\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/10fba6d54815ceecca8a06b9a6db490c8f5d2217\"\u003e10fba6d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.3...protobufjs-v7.6.4\"\u003e7.6.4\u003c/a\u003e\n(2026-06-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReconfigure and speed up CI (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2329\"\u003e#2329\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/574f761c05b007dab6595ca1eaed86436579ba3f\"\u003e574f761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove inquire submodule (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2327\"\u003e#2327\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/06ddd07064329032aae6db586e2d54938b591792\"\u003e06ddd07\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/89048ba0bbf3ed78f77199102f0614dafc2b4860\"\u003e\u003ccode\u003e89048ba\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2357\"\u003e#2357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/10fba6d54815ceecca8a06b9a6db490c8f5d2217\"\u003e\u003ccode\u003e10fba6d\u003c/code\u003e\u003c/a\u003e\nfix: handle EOF during options parsing (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2352\"\u003e#2352\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2356\"\u003e#2356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/f8f64efbfc5b52997beb7549e7ea722704320cb1\"\u003e\u003ccode\u003ef8f64ef\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2330\"\u003e#2330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/574f761c05b007dab6595ca1eaed86436579ba3f\"\u003e\u003ccode\u003e574f761\u003c/code\u003e\u003c/a\u003e\nfix: Reconfigure and speed up CI (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2329\"\u003e#2329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/06ddd07064329032aae6db586e2d54938b591792\"\u003e\u003ccode\u003e06ddd07\u003c/code\u003e\u003c/a\u003e\nfix: Remove inquire submodule (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2327\"\u003e#2327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.3...protobufjs-v7.6.5\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dprotobufjs\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d7.6.3\u0026new-version\u003d7.6.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8d08942c8949557466360dd55f4128f098dcc64f",
      "tree": "819cb3412636d3a655cd1f1fd747f908c2f13745",
      "parents": [
        "0f6c22bb92683a322a41579c2b8e2f515325db50"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 20 15:18:43 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 15:18:43 2026 +0530"
      },
      "message": "chore: fix package metadata links (#3876)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "0f6c22bb92683a322a41579c2b8e2f515325db50",
      "tree": "47ce1c3b2895c30acfb53edf390a0d2aaf039b08",
      "parents": [
        "668cbdc52f7739d2d54c80aac40ed07fa3ad1b87"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 20 09:22:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 09:22:18 2026 +0530"
      },
      "message": "docs: add java json serialization doc (#3875)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "668cbdc52f7739d2d54c80aac40ed07fa3ad1b87",
      "tree": "edf89ac0623a5d1023dce5834149ad8352b8c388",
      "parents": [
        "9a2a22ad17479b66223e9d564d6b900c913f8ef7"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 20 08:24:13 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 08:24:13 2026 +0530"
      },
      "message": "chore(release): bump versions for 1.4.0 (#3874)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "9a2a22ad17479b66223e9d564d6b900c913f8ef7",
      "tree": "9db5f322d63bfeafa429ea841360d6c72df4263a",
      "parents": [
        "bd999e2f74f6a2e3fde87c30a2fad0baa1cbfe1c"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Fri Jul 17 08:34:16 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 08:34:16 2026 +0530"
      },
      "message": "feat(java): add configurable JSON benchmark reports (#3870)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "bd999e2f74f6a2e3fde87c30a2fad0baa1cbfe1c",
      "tree": "c84f7078111228d14031aa260b3600651565c619",
      "parents": [
        "d2b158e5ce7afd00801d48b33c623ce12b467306"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 08:31:33 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 08:31:33 2026 +0530"
      },
      "message": "chore: Bump com.fasterxml.jackson.core:jackson-databind from 2.22.0 to 2.22.1 in /benchmarks/java (#3869)\n\nBumps\n[com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson)\nfrom 2.22.0 to 2.22.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/FasterXML/jackson/commits\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dcom.fasterxml.jackson.core:jackson-databind\u0026package-manager\u003dmaven\u0026previous-version\u003d2.22.0\u0026new-version\u003d2.22.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d2b158e5ce7afd00801d48b33c623ce12b467306",
      "tree": "d6bddb643fef3c96484d86fb3b03ad5059b3b775",
      "parents": [
        "54d2db9bf3abb52789c0f912a7cd48d71007443c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 09:52:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 09:52:56 2026 +0800"
      },
      "message": "chore: Bump protobufjs from 7.6.2 to 7.6.3 in /javascript (#3868)\n\nBumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.6.2\nto 7.6.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/releases\"\u003eprotobufjs\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eprotobufjs: v7.6.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.2...protobufjs-v7.6.3\"\u003e7.6.3\u003c/a\u003e\n(2026-06-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid name collisions in generated code (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2311\"\u003e#2311\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/78a9576269a5b590c54686a8122e78e28135cd50\"\u003e78a9576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve null conversion behavior for fieldless messages (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2312\"\u003e#2312\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/df91652aa5cb1ee0204566252df85cbe752298a6\"\u003edf91652\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.6.3/CHANGELOG.md\"\u003eprotobufjs\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.2...protobufjs-v7.6.3\"\u003e7.6.3\u003c/a\u003e\n(2026-06-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid name collisions in generated code (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2311\"\u003e#2311\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/78a9576269a5b590c54686a8122e78e28135cd50\"\u003e78a9576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve null conversion behavior for fieldless messages (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2312\"\u003e#2312\u003c/a\u003e)\n(\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/df91652aa5cb1ee0204566252df85cbe752298a6\"\u003edf91652\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/1d3796d7d29830c73eec792ccbe769be6aa020ac\"\u003e\u003ccode\u003e1d3796d\u003c/code\u003e\u003c/a\u003e\nchore: release protobufjs-v7.x (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2317\"\u003e#2317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/df91652aa5cb1ee0204566252df85cbe752298a6\"\u003e\u003ccode\u003edf91652\u003c/code\u003e\u003c/a\u003e\nfix: Preserve null conversion behavior for fieldless messages (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2312\"\u003e#2312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/commit/78a9576269a5b590c54686a8122e78e28135cd50\"\u003e\u003ccode\u003e78a9576\u003c/code\u003e\u003c/a\u003e\nfix: Avoid name collisions in generated code (\u003ca\nhref\u003d\"https://redirect.github.com/protobufjs/protobuf.js/issues/2311\"\u003e#2311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.6.2...protobufjs-v7.6.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dprotobufjs\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d7.6.2\u0026new-version\u003d7.6.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts page](https://github.com/apache/fory/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "54d2db9bf3abb52789c0f912a7cd48d71007443c",
      "tree": "79d1bb0ac3b2ce1c0e7152054ce55431f02ae1e1",
      "parents": [
        "da6b5ce2bda38b3762e4bf13175ac1887220f940"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 23:36:29 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 02:06:29 2026 +0800"
      },
      "message": "chore: fix release script (#3867)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "da6b5ce2bda38b3762e4bf13175ac1887220f940",
      "tree": "f4c68d7dc7f3bcd75c194909c95e28fae63a30cc",
      "parents": [
        "37e934c99e8ac5679b1fd66473fda4d647525787"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 21:13:13 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 21:13:13 2026 +0530"
      },
      "message": "perf(java): optimize json perf regression (#3866)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "37e934c99e8ac5679b1fd66473fda4d647525787",
      "tree": "37c81d092212d5a2126a87836d47c38765eee58e",
      "parents": [
        "835b852090f61e99c60131b1086411734407689d"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 18:05:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 18:05:18 2026 +0530"
      },
      "message": "feat(java): add abstract json value codec (#3865)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "835b852090f61e99c60131b1086411734407689d",
      "tree": "f1121eced7aca7c35014f2532559c175a24bac90",
      "parents": [
        "93a30f51b66833e6a8893556468e8deb2ded995b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 17:42:53 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 17:42:53 2026 +0530"
      },
      "message": "feat(java): add json mixin support (#3863)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "93a30f51b66833e6a8893556468e8deb2ded995b",
      "tree": "e2ab1938b2b78cc19ae399531045eb2b4dd58bc4",
      "parents": [
        "46831b08310a58f535b236d32c29d9c3607817de"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 14:19:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 14:19:18 2026 +0530"
      },
      "message": "feat(java): add Json object field cache (#3862)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "46831b08310a58f535b236d32c29d9c3607817de",
      "tree": "693017c062af075f1d5190de2f475609f784cd9a",
      "parents": [
        "2ff0694f09fb0ac52e8cc5c1711990103f6cc726"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 14:19:01 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 14:19:01 2026 +0530"
      },
      "message": "fix(java): restore inherited container field types (#3864)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\nCloses #3843\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "2ff0694f09fb0ac52e8cc5c1711990103f6cc726",
      "tree": "e88eb709a15ad12b8fac782b974c28dd448812fd",
      "parents": [
        "bb0cbd1c0dcfad6e8ab0afd84e0ebbb16d9c1b9b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 06:29:05 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 06:29:05 2026 +0530"
      },
      "message": "feat(java): support JSON unwrapped properties (#3856)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "bb0cbd1c0dcfad6e8ab0afd84e0ebbb16d9c1b9b",
      "tree": "2b35a521202ba13142229c83e98c0d4b462c490d",
      "parents": [
        "b86fd4aa648cee892c18dabab04b65fee1911d8e"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Thu Jul 16 00:45:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 00:45:28 2026 +0530"
      },
      "message": "feat(java): generate JSON object/record codecs helper for android (#3857)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "b86fd4aa648cee892c18dabab04b65fee1911d8e",
      "tree": "446e571482851dcdcee985a17b92edaa972db7bf",
      "parents": [
        "35a827d51beaf7136c748e0af02153ee8f2e650c"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 15 22:34:34 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 22:34:34 2026 +0530"
      },
      "message": "feat(java): add json value annotations (#3855)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "35a827d51beaf7136c748e0af02153ee8f2e650c",
      "tree": "3969acb62fc0ccd22b875c8d57c6f55ebfaacb51",
      "parents": [
        "96a657a6aa3853ce8fba081c1bc65f7afafff6af"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 15 19:36:58 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 19:36:58 2026 +0530"
      },
      "message": "refactor(java): simplify json codec annotations (#3854)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "96a657a6aa3853ce8fba081c1bc65f7afafff6af",
      "tree": "601aeeb821d694e3fce2fa8fc46886b6d8278249",
      "parents": [
        "894586850b945ccce6edea15774e3bfeefd6eb19"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 15 17:19:56 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 17:19:56 2026 +0530"
      },
      "message": "fix(java): stabilize GraalVM field offsets (#3853)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "894586850b945ccce6edea15774e3bfeefd6eb19",
      "tree": "bee99954e1a540093cb5395912fa3997fd83f79c",
      "parents": [
        "c6fb315c964247cc1127e19bb782ed264bf50358"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 15 16:51:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 16:51:28 2026 +0530"
      },
      "message": "feat(java): support Fory JSON on Android (#3852)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "c6fb315c964247cc1127e19bb782ed264bf50358",
      "tree": "d2ffe9e548e5b74d32d49e55a3e5fb0e7147d72c",
      "parents": [
        "b3ee6cc7d83ddce5f0a16778393eba8ea750191f"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 15 14:59:16 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 14:59:16 2026 +0530"
      },
      "message": "fix(java): support guava android collections (#3851)\n\n## What does this PR do?\n\n- tolerate Guava variants that omit the singleton immutable list and\nbi-map implementation classes\n- preserve Guava internal type ID alignment with distinct fallback\nregistrations\n- account for the actual materialized collection owners in graph-memory\nchecks\n- document why missing singleton slots require placeholders and actual\nowner sizing\n\nFixes #3847.\n\n## Tests\n\n- `mvn -T16 -pl fory-core spotless:check`\n- `mvn -T16 -pl fory-core checkstyle:check`\n- `ENABLE_FORY_DEBUG_OUTPUT\u003d1 mvn -T16 -pl fory-core\n-Dtest\u003dorg.apache.fory.serializer.collection.CollectionSerializersTest#testGuavaListOwnerBudget+testGuavaBiMapOwnerBudget\ntest`"
    },
    {
      "commit": "b3ee6cc7d83ddce5f0a16778393eba8ea750191f",
      "tree": "36bf1a695acc784cce8b45d404940018f773f8e1",
      "parents": [
        "477bcb88068e6335d81e750fb1c802f9b5c29abf"
      ],
      "author": {
        "name": "Eryan",
        "email": "eryanwcp@gmail.com",
        "time": "Wed Jul 15 15:23:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 12:53:27 2026 +0530"
      },
      "message": "feat(java): update AllowListChecker to include checks against disallowed and allowed class lists (#3850)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n---------\n\nCo-authored-by: chaokunyang \u003cshawn.ck.yang@gmail.com\u003e"
    },
    {
      "commit": "477bcb88068e6335d81e750fb1c802f9b5c29abf",
      "tree": "a100d4071e846afbdd0d65669b7889a1058e53f5",
      "parents": [
        "fb311aa0609480199ffaec3ca56a8001453dd0fb"
      ],
      "author": {
        "name": "Eryan",
        "email": "eryanwcp@gmail.com",
        "time": "Wed Jul 15 14:22:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 11:52:09 2026 +0530"
      },
      "message": "feat(java): make DefaultJdkClassAllowList public and add method to re… (#3849)\n\n…trieve allowed class names\n\n\n\n## Why?\n\nCause: org.apache.fory.exception.InsecureException: Class\njava.io.Serializable isn\u0027t in the allow list for serialization or\ndeserialization. If this class is allowed, add it with\nAllowListChecker#allowClass\n\nAllowListChecker checker \u003d new\nAllowListChecker(AllowListChecker.CheckLevel.STRICT);\n     checker.allowClasses(DefaultJdkClassAllowList.getAllowClasses());\n\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark\n\n---------\n\nCo-authored-by: chaokunyang \u003cshawn.ck.yang@gmail.com\u003e"
    },
    {
      "commit": "fb311aa0609480199ffaec3ca56a8001453dd0fb",
      "tree": "16fb3ab4ced2e1c9ce0d1efea0a83e83a5eef13a",
      "parents": [
        "2670d03fa438d901c3667dc935482e101278d2a1"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Wed Jul 15 08:23:38 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 08:23:38 2026 +0530"
      },
      "message": "feat(java): support Fory JSON in GraalVM native image (#3846)\n\n## Why?\n\nFory JSON generates codecs from each `ForyJsonBuilder` configuration.\nThose configurations affect\nfield discovery, naming, null handling, custom codecs, and generated\nsource, so one codec generated\nduring Native Image construction cannot represent every runtime builder.\nNative executables also\ncannot run the existing runtime compiler.\n\nThis change supports the complete interpreted JSON codec path in GraalVM\nNative Image while keeping\nordinary JVM code generation enabled and unchanged.\n\n## What does this PR do?\n\n- adds the non-inherited `@JsonType` marker for reachable native JSON\nobject models;\n- adds an automatically activated MR-JAR Native Image Feature that\nregisters the reflection,\nconstructor, unsafe-field, record, container, built-in, and\nannotation-codec metadata used by the\n  interpreted path;\n- supports declaration, inherited, nested type-use, record, accessor,\nand creator `@JsonCodec`\n  locations without constructing codecs at image build time;\n- disables JSON runtime code generation and asynchronous compilation\nonly inside native images;\n- preserves every other `ForyJsonBuilder` option for independently\nconfigured runtime instances;\n- adds classpath and JPMS GraalVM acceptance coverage, MR-JAR/source-JAR\nverification, and user\n  documentation.\n\nThe hosted scanner reuses the existing Fory core metadata owner and the\neffective JSON-member\nclassification owned by `ObjectCodecBuilder`. Hosted work does not enter\nserialization or\ndeserialization hot paths, and the ordinary-JDK builder loop remains\nunchanged.\n\n## Related issues\n\nNone.\n\n## AI Contribution Checklist\n\n## Does this PR introduce any user-facing change?\n\n- [x] Does this PR introduce any public API change? Adds `@JsonType`.\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Validation\n\n- `cd java \u0026\u0026 ENABLE_FORY_DEBUG_OUTPUT\u003d1 mvn -T8 -pl fory-core,fory-json\n-am test`\n  - Fory core: 2,184 tests, 0 failures\n  - Fory JSON: 593 tests, 0 failures\n- GraalVM 21 classpath native package/run: passed, `Fory JSON succeed`\n- GraalVM 21 JPMS native package/run: passed, `Fory JSON succeed`\n- GraalVM 25 classpath native package/run: passed, `Fory JSON succeed`\n- GraalVM 25 JPMS native package/run: passed, `Fory JSON succeed`\n- Fory JSON MR-JAR and source-JAR verification: passed\n- Java and integration Spotless checks: passed\n- Markdown Prettier and `git diff --check`: passed\n\n## Benchmark\n\nNot applicable. The change adds Native Image hosted metadata discovery\nand native-only builder\nresolution. It does not change ordinary JVM\nserialization/deserialization hot paths, and no new\nruntime allocation is introduced there."
    },
    {
      "commit": "2670d03fa438d901c3667dc935482e101278d2a1",
      "tree": "c4cba91b69cb233333a392eb637ceb16e56d0e38",
      "parents": [
        "489e21080f884d27eca792e203ae1120ae76c0be"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 14 22:35:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 22:35:02 2026 +0530"
      },
      "message": "refactor(java): embed GraalVM feature in core (#3845)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "489e21080f884d27eca792e203ae1120ae76c0be",
      "tree": "ae2ec961edbd1e7539dd027a1768fb8ccbdeb0ec",
      "parents": [
        "a1388d4a20e52e168d044882271eb874539461e4"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 14 21:39:53 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 21:39:53 2026 +0530"
      },
      "message": "feat(java): add JSON codec annotation (#3844)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "a1388d4a20e52e168d044882271eb874539461e4",
      "tree": "fbe42330fd66f273311de2e98bdb1217fb111a87",
      "parents": [
        "b5937d63fbe4b84bd226885a845d728aeb9243d1"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 14 18:00:05 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 18:00:05 2026 +0530"
      },
      "message": "refactor(java): simplify JSON subtype member writing (#3842)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "b5937d63fbe4b84bd226885a845d728aeb9243d1",
      "tree": "8f52cb67015de831de707414ff9d71f28f24ac8e",
      "parents": [
        "03f3b4aff108c161fa7c79690fc5b25e7263fc0b"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 14 16:42:05 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:42:05 2026 +0530"
      },
      "message": "feat(json): support dynamic object properties (#3841)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "03f3b4aff108c161fa7c79690fc5b25e7263fc0b",
      "tree": "aee02e3d67e6646bd66fc5ec9cdc5af9a4ad7fbc",
      "parents": [
        "3dcf6ba771698570460d581b74f073c5744cb225"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 14 11:09:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 11:09:35 2026 +0530"
      },
      "message": "feat(java): add json property order annotation (#3840)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "3dcf6ba771698570460d581b74f073c5744cb225",
      "tree": "f6dc0276689b66bf8f09392a9cc2875012b7ca6e",
      "parents": [
        "55b23746972e4065a24af99be00a9273200b001f"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Tue Jul 14 10:31:55 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 13:01:55 2026 +0800"
      },
      "message": "feat(java): enhance class check (#3837)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "55b23746972e4065a24af99be00a9273200b001f",
      "tree": "19275c99c4884c4edbd0f15d9acd9e9025bed51a",
      "parents": [
        "6865924c883d98b92fafcddd1b9ee102517e42bc"
      ],
      "author": {
        "name": "Peiyang He",
        "email": "peiyang_he@smail.nju.edu.cn",
        "time": "Mon Jul 13 22:15:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 19:45:37 2026 +0530"
      },
      "message": "feat(compiler): handle C++ identifier escaping and name collisions (#3839)\n\n## Why?\n\nThe C++ compiler generates IDL identifiers with class declarations,\nnamespaces, helper APIs, and preprocessor macro contexts.\n\nA legal IDL identifier can therefore become a C++ keyword, shadow a\nglobal or runtime name such as `std`, `fory`, or fixed-width integer\ntypedefs, expand as a Fory macro, or collide with generated accessors,\nunion helpers, and registration functions.\n\nDifferent IDL names can also normalize to the same C++ identifier,\nnamespace, or output path. Without compiler-side handling, these cases\nproduce uncompilable generated code or surface later as unclear\nredefinition and ODR errors when generated headers are combined.\n\nThe compiler should resolve safe cases deterministically and reject\nirreconcilable collisions early with proper prompts.\n\n## What does this PR do?\n\nThis PR **tries** handling C++ identifier escaping and name collisions\ncompletely.\nIt roughly follows the corresponding Rust handling in\nhttps://github.com/apache/fory/pull/3744 and handles many other corner\ncases unique in C++ such as macros.\n\n- Adds identifier sanitization and scope-aware name allocation for IDL\ntypes, fields, enum values, union cases, and package segments.\n  - Escapes C++ keywords and conflicting Fory object-like macro names.\n- Reserves generated helper names such as serialization methods, union\nhelpers, and registration symbols.\n- Reports an error when distinct IDL names still map to the same\ngenerated C++ identifier.\n\n- Uses global qualification for generated C++ runtime and\nstandard-library references, including metadata macro expansion paths.\n\n- Hardens C++ union generation:\n  - avoids generated union member/helper name conflicts.\n- protects generated union declarations and metadata macros from\nsame-name function-like macros.\n- constructs `std::variant` alternatives by index, allowing distinct IDL\nunion cases to use the same C++ payload type.\n\n## Related issues\n\nN/A.\n\n## AI Contribution Checklist\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n## Does this PR introduce any user-facing change?\n\nN/A.\n\n## Benchmark\n\nN/A."
    },
    {
      "commit": "6865924c883d98b92fafcddd1b9ee102517e42bc",
      "tree": "f7cbc641b831509d733a43c2c10235edbddb25f0",
      "parents": [
        "8c82d61ecdc375ed644ac92ff0ac8bbf0a3eb122"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 13 17:42:52 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 17:42:52 2026 +0530"
      },
      "message": "fix(java): support inherited fields in xlang (#3838)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\nCloses #3836 \n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    },
    {
      "commit": "8c82d61ecdc375ed644ac92ff0ac8bbf0a3eb122",
      "tree": "922a72443ee8fa9f7311cadfe9ba2a78f10add3f",
      "parents": [
        "c727ea5a26e707e2cbfcb8604112323702ed0246"
      ],
      "author": {
        "name": "Shawn Yang",
        "email": "shawn.ck.yang@gmail.com",
        "time": "Mon Jul 13 10:33:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 13:03:08 2026 +0800"
      },
      "message": "feat(java): add fory json annotations (#3835)\n\n## Why?\n\n\n\n## What does this PR do?\n\n\n\n## Related issues\n\n\n\n## AI Contribution Checklist\n\n\n\n- [ ] Substantial AI assistance was used in this PR: `yes` / `no`\n- [ ] If `yes`, I included a completed [AI Contribution\nChecklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)\nin this PR description and the required `AI Usage Disclosure`.\n- [ ] If `yes`, my PR description includes the required `ai_review`\nsummary and screenshot evidence or equivalent persisted links of the\nfinal clean AI review results from both fresh reviewers described in\n`AI_POLICY.md`, the Fory-guided reviewer and the independent general\nreviewer, on the current PR diff or current HEAD after the latest code\nchanges.\n\n\n\n## Does this PR introduce any user-facing change?\n\n\n\n- [ ] Does this PR introduce any public API change?\n- [ ] Does this PR introduce any binary protocol compatibility change?\n\n## Benchmark"
    }
  ],
  "next": "c727ea5a26e707e2cbfcb8604112323702ed0246"
}
