This is an automated email from the ASF dual-hosted git repository.
shreemaanabhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new 9a3ef2ecc chore: release 3.15.0 (#12947)
9a3ef2ecc is described below
commit 9a3ef2ecc94c798b03e9e1c338b761695729de4f
Author: Shreemaan Abhishek <[email protected]>
AuthorDate: Thu Feb 5 19:41:01 2026 +0545
chore: release 3.15.0 (#12947)
---
.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 f5bafe315..a2b0f88c8 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 36d3c66e1..21f8e0256 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 db47f95cb..f98207c40 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 dc7929557..ed7543623 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 7052adca4..bb5495678 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 fa08cc666..fc1dd46b3 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",