From cd0e1fab27591dbc0fbca4b6d2b01a0c339303fc Mon Sep 17 00:00:00 2001 From: Abhishek Choudhary Date: Thu, 29 Jan 2026 14:07:12 +0545 Subject: [PATCH 1/2] chore: release 3.15.0 Signed-off-by: Abhishek Choudhary --- .requirements | 2 +- CHANGELOG.md | 59 ++++++++++++++++++++++++++++++++++++++ apisix/core/version.lua | 2 +- ci/check_changelog_prs.ts | 4 ++- docs/en/latest/config.json | 2 +- docs/zh/latest/config.json | 2 +- 6 files changed, 66 insertions(+), 5 deletions(-) diff --git a/.requirements b/.requirements index f5bafe3157f5..a2b0f88c8d84 100644 --- a/.requirements +++ b/.requirements @@ -18,4 +18,4 @@ APISIX_PACKAGE_NAME=apisix APISIX_RUNTIME=1.3.3 -APISIX_DASHBOARD_COMMIT=39be363cdbc5395d3163572c532be95f3dbad03a +APISIX_DASHBOARD_COMMIT=bbe05ad95396f90db03d831660f454c2844d906e diff --git a/CHANGELOG.md b/CHANGELOG.md index 36d3c66e1595..21f8e0256783 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ title: Changelog ## Table of Contents +- [3.15.0](#3150) - [3.14.1](#3141) - [3.14.0](#3140) - [3.13.0](#3130) @@ -82,6 +83,64 @@ title: Changelog - [0.7.0](#070) - [0.6.0](#060) +## 3.15.0 + +**The changes marked with :warning: are not backward compatible.** + +### Change + +- :warning: fix: disallow creating duplicate plugins in global rules [#12800](https://github.com/apache/apisix/pull/12800) + +### Core + +- feat: kubernetes discovery readiness check [#12852](https://github.com/apache/apisix/pull/12852) +- feat: standalone mode status api [#12810](https://github.com/apache/apisix/pull/12810) +- feat: add validate API to standalone mode [#12718](https://github.com/apache/apisix/pull/12718) +- feat: add dependency protocol checking and deletion checking for stream routing [#12794](https://github.com/apache/apisix/pull/12794) +- feat: relax resource name length restriction to 256 [#11822](https://github.com/apache/apisix/pull/11822) +- feat: add support for wildcard on SNIs for SSL [#12668](https://github.com/apache/apisix/pull/12668) +- refactor: use secret URI as key for cache and refactor lrucache [#12682](https://github.com/apache/apisix/pull/12682) +- fix: maintain node_version for independent upstream [#12856](https://github.com/apache/apisix/pull/12856) +- fix: request failure during reload after any Eureka node fails [#12906](https://github.com/apache/apisix/pull/12906) +- fix: nacos service discovery request lacks retries after failure [#12734](https://github.com/apache/apisix/pull/12734) +- fix: load full data during init_worker phase require a new apisix-runtime [#12678](https://github.com/apache/apisix/pull/12678) +- chore: upgrade lua-resty-logger-socket [#12898](https://github.com/apache/apisix/pull/12898) +- chore: upgrade lua-resty-dns-client to 7.1.0 [#12851](https://github.com/apache/apisix/pull/12851) +- change: remove lua-resty-worker-events from the core dependencies [#12930](https://github.com/apache/apisix/pull/12930) + +### Plugins + +- feat: rate limiting plugins support setting keepalive for redis policy [#12861](https://github.com/apache/apisix/pull/12861) +- feat: support `apisix_request_id` variable with request-id plugin [#12931](https://github.com/apache/apisix/pull/12931) +- feat: support vertex-ai [#12933](https://github.com/apache/apisix/pull/12933) +- feat: support gemini openai api [#12883](https://github.com/apache/apisix/pull/12883) +- feat: support anthropic openai api [#12881](https://github.com/apache/apisix/pull/12881) +- feat: add support for openrouter [#12878](https://github.com/apache/apisix/pull/12878) +- feat: auth plugins respond with `www-authenticate` header with realm [#12864](https://github.com/apache/apisix/pull/12864) +- feat: allow grpc web in non prefix based routes [#12830](https://github.com/apache/apisix/pull/12830) +- feat(file-logger): add path properties to file-logger plugin metadata [#12825](https://github.com/apache/apisix/pull/12825) +- feat(log): add nested log format support for logger plugins [#12697](https://github.com/apache/apisix/pull/12697) +- feat: add max pending entries to all logger plugins [#12709](https://github.com/apache/apisix/pull/12709) +- feat(kafka-logger): add support for scram for authentication [#12693](https://github.com/apache/apisix/pull/12693) +- fix(limit-conn): implement configurable redis key expiry [#12872](https://github.com/apache/apisix/pull/12872) +- fix(skywalking): start timer when route is hit [#12855](https://github.com/apache/apisix/pull/12855) +- fix: eliminate deepcopy when destroying prometheus [#12905](https://github.com/apache/apisix/pull/12905) +- fix(limit-req): ensure safe eviction of keys in redis [#12911](https://github.com/apache/apisix/pull/12911) +- fix(limit-count): use meta parent to identify plugin source [#12900](https://github.com/apache/apisix/pull/12900) +- fix: Make protocol_name optional and default to 'MQTT' for mqtt plugin [#12831](https://github.com/apache/apisix/pull/12831) +- fix(batch-requests): the number of sub-responses does not match that of sub-requests [#12779](https://github.com/apache/apisix/pull/12779) +- fix(ai-proxy): correct logging schema key in ai-proxy-multi [#12795](https://github.com/apache/apisix/pull/12795) +- fix(plugin_metadata): ensure enable_data_encryption initialization & querying issue [#12624](https://github.com/apache/apisix/pull/12624) + +### Bugfixes + +- fix: correct handling of endpointSlices in Kubernetes service discovery [#12634](https://github.com/apache/apisix/pull/12634) +- fix: Adding request-id header in case of empty header value in request [#12837](https://github.com/apache/apisix/pull/12837) +- fix(docker): adjust permissions for apisix directory to run in openshift without anyuid command [#12824](https://github.com/apache/apisix/pull/12824) +- fix: correct pre/post hook typos in Kubernetes discovery and improve cleanup safety [#12288](https://github.com/apache/apisix/pull/12288) +- fix(performance): move the ipv6 check to schema validation [#12714](https://github.com/apache/apisix/pull/12714) +- fix(authz-keycloak): strip query string when resolving resources with lazy_load_paths [#12914](https://github.com/apache/apisix/pull/12914) + ## 3.14.1 ### Bugfixes diff --git a/apisix/core/version.lua b/apisix/core/version.lua index db47f95cbb7a..f98207c408ee 100644 --- a/apisix/core/version.lua +++ b/apisix/core/version.lua @@ -20,5 +20,5 @@ -- @module core.version return { - VERSION = "3.14.1" + VERSION = "3.15.0" } diff --git a/ci/check_changelog_prs.ts b/ci/check_changelog_prs.ts index dc7929557aa9..ed7543623671 100755 --- a/ci/check_changelog_prs.ts +++ b/ci/check_changelog_prs.ts @@ -51,7 +51,9 @@ const IGNORE_PRS = [ // 3.13.0 9945, 11420, 11765, 12036, 12048, 12057, 12076, 12122, 12123, 12168, 12199, 12218, 12225, 12272, 12277, 12300, 12306, 12329, 12353, 12364, 12375, 12358, //3.14.0 - 8772, 12655 + 8772, 12655, + // 3.15.0 + 12761, 12805, 12844, 12863, 12829, 12725, 12948 ]; diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json index 7052adca4b13..bb5495678af1 100644 --- a/docs/en/latest/config.json +++ b/docs/en/latest/config.json @@ -1,5 +1,5 @@ { - "version": "3.14.1", + "version": "3.15.0", "sidebar": [ { "type": "category", diff --git a/docs/zh/latest/config.json b/docs/zh/latest/config.json index fa08cc6661d1..fc1dd46b3de2 100644 --- a/docs/zh/latest/config.json +++ b/docs/zh/latest/config.json @@ -1,5 +1,5 @@ { - "version": "3.14.1", + "version": "3.15.0", "sidebar": [ { "type": "category", From a1065e8353f113760ce9f9263d2e2bee186b69a2 Mon Sep 17 00:00:00 2001 From: wangyazhou Date: Fri, 13 Feb 2026 16:45:43 +0800 Subject: [PATCH 2/2] Fix wording for Script and Plugin compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR fixes a minor but potentially confusing typo in docs/en/latest/script.md (and its Chinese counterpart if applicable), where the terms "Script" and "Plugin" were incorrectly used interchangeably or mislabeled in a sentence describing APISIX's extension mechanisms. In Apache APISIX, Scripts and Plugins are distinct concepts: Plugins are reusable, configurable modules that hook into the request lifecycle (e.g., key-auth, limit-req). Scripts refer to inline Lua logic attached directly to a Route (or Service) for custom, route-specific behavior. The original wording blurred this distinction, which could mislead users about APISIX’s architecture. This PR corrects the terminology to ensure clarity and technical accuracy. Which issue(s) this PR fixes: Fixes # Checklist [x] I have explained the need for this PR and the problem it solves [x] I have explained the changes or the new features added to this PR [ ] I have added tests corresponding to this change >Not applicable: documentation-only change [x] I have updated the documentation to reflect this change [x] I have verified that this change is backward compatible ✅ Note: Since this is a documentation typo fix with no behavioral impact, no tests are required. The change improves clarity without altering functionality. --- docs/zh/latest/terminology/script.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/latest/terminology/script.md b/docs/zh/latest/terminology/script.md index 3e1820ec468d..fc57f143cebc 100644 --- a/docs/zh/latest/terminology/script.md +++ b/docs/zh/latest/terminology/script.md @@ -32,7 +32,7 @@ Script 表示将在 `HTTP` 请求/响应生命周期期间执行的脚本。 Script 配置需要绑定在路由上。 -Script 与 Plugin 不兼容,并且 Script 优先执行 Script,这意味着配置 Script 后,Route 上配置的 Plugin 将**不被执行**。 +Script 与 Plugin 不兼容,并且 Script 优先于 Plugin 执行,这意味着配置 Script 后,Route 上配置的 Plugin 将**不被执行**。 理论上,在 Script 中可以编写任意 Lua 代码,你也可以直接调用已有的插件以复用已有的代码。