4 hours ago
redis

8.12 RC1

This is the first Release Candidate of Redis 8.12 in Redis Open Source.

Release Candidates are feature-complete pre-releases. Pre-releases are not suitable for production use.

Headlines:

Redis 8.12 introduces new features and performance improvements.

Operating systems we test Redis 8.12 on

  • Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat), 26.04 (Resolute Raccoon)
  • Rocky Linux 8.10, 9.7, 10.1
  • AlmaLinux 8.10, 9.7, 10.1
  • Debian 12.13 (Bookworm), Debian 13.4 (Trixie)
  • Alpine 3.23
  • macOS 14.8.4 (Sonoma), 15.7.4 (Sequoia), 26.3 (Tahoe) - for both Intel and ARM

Security fixes

  • RediSearch/RediSearch#10073 Indexed value hashing is now collision-resistant, preventing HashDoS-style index degradation from adversarial input. (MOD-14459)
  • RediSearch/RediSearch#11202 Incomplete UTF-8 characters no longer reads out of bounds in indexed TEXT fields. (MOD-18088)

New Features

  • #15331 Compressed bitmaps — Integrated redis-roaring into Redis core for lower memory usage and faster bitmap operations. Special thanks to Antonio, the original creator of redis-roaring, for contributing this capability! https://redisroaring.com/redis-merge/#/1;
  • #15986 New command: BITRANGEINTARRAY equivalent to redis-roaring’s R.RANGEINTARRAY, to return set bit offsets within a specified range
  • #15938 Set expiration to individual set member; New commands: SEXPIRE,SPEXPIRE,SEXPIREAT,SPEXPIREAT to set expiration and STTL, SPTTL, SEXPIRETIME,SPEXPIRETIME to retrieve remaining TTLs or expiration timestamps
  • #15649 Bless keys: avoid eviction of specified keys; New command: BLESS
  • #15829 CLUSTER MIGRATION STATUS now reports progress for both the snapshot and incremental migration phases
  • #15556 TLS named groups can now be configured using tls-groups
  • RedisBloom/RedisBloom#1063 Count-min-sketch extensions: Added optional CELL_SIZE support to CMS.INITBYDIM and CMS.INITBYPROB for lower memory usage, negative increments in CMS.INCRBY to decrement counts, and cell size reporting in CMS.INFO
  • RedisJSON/RedisJSON#1640 Auto-create JSON deep path
  • RediSearch/RediSearch#10151 EXPLAINSCORE is now supported for FT.HYBRID. (MOD-10044)
  • RediSearch/RediSearch#11330 SQ8 new compression is now available for HNSW vector fields. (MOD-6132)
  • RediSearch/RediSearch#10247 RETURN_STRICT timeout handling is now enabled for local FT.HYBRID execution. (MOD-16492)
  • RediSearch/RediSearch#11278 FT.ALTER avoids unnecessary document reindexing during schema additions. (MOD-18171)
  • RediSearch/RediSearch#11384 Score/payload-only hash updates avoid reindexing. (MOD-18182)
  • RediSearch/RediSearch#11230 Hash documents are no longer re-indexed when no vector indexed field is touched. (MOD-17688)

Bug fixes

  • #15569 Changes made by XDELEX DELREF for already-deleted stream entries could fail to propagate to replicas or the AOF
  • #15508 Operations using random radix-tree traversal could behave incorrectly when starting from certain leaf nodes
  • #15604 Memory usage could be calculated incorrectly for hashes using shared templates
  • #15489 RDB files could fail to load after XSETID reduced a stream’s entries_added counter
  • #15626 SET could calculate an incorrect expiration time when given an excessively large relative TTL
  • #15628 Active defragmentation could incorrectly handle the shared-template registry used by compact hashes
  • #15530 After failover, a replica could remain connected to another replica instead of the new primary
  • #15733 Invalid cluster slot ranges could be accepted after being merged into a valid range
  • #15756 RESTORE could calculate an incorrect expiration time when given an excessively large relative TTL
  • #15699 Memory growth could be accounted for incorrectly when SETBIT or BITFIELD expanded a string
  • #15815 XTRIM could leave a stream in a state that prevented an RDB file containing it from loading
  • #15795 Clients could fail to receive a protocol error when a malformed command arrived across multiple network reads
  • #15875 ARLASTITEMS could omit elements appearing after a gap in an array
  • #15916 Data could be lost when a legacy AOF file was upgraded before loading completed
  • #15917 Hiredis clients on Linux could mishandle errors when establishing TCP connections
  • #15869 Redis could crash when a module thread paused I/O threads
  • #15468 - Pub/Sub subscriptions could remain active after the subscribing user’s channel permissions were revoked or the user was deleted, if the client had re-authenticated as another user.
  • #15623 Module actions scheduled by hash-field expiration notifications could be delayed after fields expired in the background
  • #15680 Data could be lost after a replica migrated to a different shard
  • #15587 LMOVEM could emit keyspace notifications inconsistent with those produced by LMOVE
  • #15695 Command side effects could be propagated to replicas or the AOF despite settings that should have excluded them
  • RediSearch/RediSearch#10872 Shard no longer crashes with SIGSEGV when RESTORE of a legacy ft_index0 payload is issued outside an RDB load. (MOD-15685)
  • RediSearch/RediSearch#10728 GC timer arming off the main thread on ARM no longer causes random shard crashes after extended uptime. (MOD-17309)
  • RediSearch/RediSearch#10767 Server no longer crashes on writes when an index FILTER references no schema fields. (MOD-15592)
  • RediSearch/RediSearch#11303, RediSearch/RediSearch#11304, RediSearch/RediSearch#11308, RediSearch/RediSearch#11309, RediSearch/RediSearch#11310, RediSearch/RediSearch#11311 FT.ALTER SCHEMA ADD running concurrently with queries under WORKERS>0 no longer crashes query execution across VECTOR, TAG, NUMERIC, GEO, ISMISSING, and GEOSHAPE nodes. (MOD-18356, MOD-18361, MOD-18366, MOD-18367, MOD-18368)
  • RediSearch/RediSearch#11474 FT.AGGREGATE with the numeric SORTBY optimizer no longer crashes or returns wrong results. (MOD-6967)
  • RediSearch/RediSearch#10209 Coordinator no longer crashes under RESP2 when FT.PROFILE HYBRID hits a return-strict timeout. (MOD-16396)
  • RediSearch/RediSearch#10145 TEXT PHONETIC matches now behave correctly when non-TEXT fields precede TEXT fields in the schema. (MOD-16304)
  • RediSearch/RediSearch#11262 FT.AGGREGATE cursor with FILTER now reports the correct result count. (MOD-18172)
  • RediSearch/RediSearch#11282 FT.EXPLAIN now renders a multi-word tag value as a single tag rather than an INTERSECT. (MOD-8666)
  • RediSearch/RediSearch#10768 NOT queries no longer leak excluded documents or drop results after a concurrent index change. (MOD-17394)
  • RediSearch/RediSearch#10637 Numeric index cardinality and bounds are now correct under float compression. (MOD-16877)
  • RediSearch/RediSearch#10704 Empty wildcard patterns no longer cause out-of-bounds writes or spurious empty-value matches. (MOD-17451)
  • RediSearch/RediSearch#10752 Wildcard ? on WITHSUFFIXTRIE TEXT fields now matches per codepoint rather than per byte. (MOD-17476)
  • RediSearch/RediSearch#10112 Suffix-trie wildcard queries on TEXT fields are now case-insensitive. (MOD-16259)
  • RediSearch/RediSearch#11450 Matching literal * no longer hangs on the indexed string.
  • RediSearch/RediSearch#11267 Duplicate vector results are no longer returned during tiered indexing. (MOD-17795)
  • RediSearch/RediSearch#10731 FT.SEARCH on cluster now returns an error for invalid LIMIT arguments, matching standalone behavior. (MOD-12465)
  • RediSearch/RediSearch#10251 FT.SEARCH under WORKERS>0 no longer returns a nil field-array for documents re-indexed mid-query. (MOD-16507)
  • RediSearch/RediSearch#10921 Sort keys with embedded NUL bytes are no longer truncated in replies.
  • RediSearch/RediSearch#9963 Trie RangeIter now preserves the excluded-empty lower bound. (MOD-15897)
  • RediSearch/RediSearch#10085 RETURN_STRICT safe-loader no longer deadlocks the GIL on client timeout. (MOD-16267)
  • RediSearch/RediSearch#11449 Index reference leak after queued search cancellation no longer occurs. (MOD-18682)
  • RediSearch/RediSearch#11369 Memory leaks after coordinator SEARCH cancellation no longer occur. (MOD-18548)
  • RediSearch/RediSearch#10110 FT.HYBRID cursor setup now has a bounded channel timeout. (MOD-16145)
  • RediSearch/RediSearch#10211, RediSearch/RediSearch#10745 RETURN_STRICT cursors are now depleted on timeout; strict-timed-out hybrid cursor cycles drop their cursors at cycle end. (MOD-16091, MOD-16991)
  • RediSearch/RediSearch#10947 Coordinator cursor memory is now capped via INDEX_CURSOR_LIMIT. (MOD-17479)
  • RediSearch/RediSearch#10766, RediSearch/RediSearch#10763 Cursor reads no longer time out against a deadline belonging to an earlier read, and now correctly reports a timeout that expires while iterators are revalidated. (MOD-17489, MOD-17488)
  • RediSearch/RediSearch#10993 RDB and replication payloads no longer leak a stray heap byte. (MOD-17800)
  • RediSearch/RediSearch#10074 FT.HYBRID now returns a stable RRF result order across cluster shards. (MOD-12438)
  • RediSearch/RediSearch#11027 Cluster TLS connections now use Redis node metadata, aligning with topology changes. (MOD-15869)
  • RediSearch/RediSearch#10380, RediSearch/RediSearch#10430 Cluster topology is now refreshed on topology-change events rather than by polling. (MOD-15868, MOD-15870)
  • RediSearch/RediSearch#10835 Coordinator fanout now preserves binary argument lengths.
  • RediSearch/RediSearch#11095 Replica stalls during FT.DROPINDEX DD are reduced.
  • RediSearch/RediSearch#10255 Blocked search clients no longer trigger eager query dumps. (MOD-16518)
  • RediSearch/RediSearch#10083 Internal query arguments missing during rolling upgrade are now tolerated. (MOD-16047)
  • RediSearch/RediSearch#10816 Forced GC now waits for a concurrent child process instead of skipping its cycle.
  • RediSearch/RediSearch#10958 Async disk read pool no longer spins when saturated; it blocks instead.
  • RediSearch/RediSearch#10646, RediSearch/RediSearch#10392 VectorSimilarity dependency refreshed to address unaligned metadata access on ARM/SVE paths. (MOD-15303, MOD-16696)
  • RediSearch/RediSearch#10352 FT.PROFILE ON_TIMEOUT FAIL now reports a pre-execution timeout as a warning rather than an error. (MOD-16660)
  • RediSearch/RediSearch#10870 Crash reports now include in-flight coordinator aggregate, hybrid, and cursor-read queries. (MOD-16992)
  • RediSearch/RediSearch#11089 Debug aggregate request synchronization no longer crashes. (MOD-17616)
  • RediSearch/RediSearch#10063 COLLECT LIMIT now honors the configurable search-max-aggregate-results
  • RedisJSON/RedisJSON#1636 Fixed array-index normalization overflow for extreme negative indexes, including i64::MIN, affecting commands such as JSON.ARRTRIM
  • RedisJSON/RedisJSON#1648 Corrected JSON.MGET key-spec metadata to identify all key arguments and exclude the trailing JSONPath argument.
  • RedisJSON/RedisJSON#1670 Fixed downstream compilation when using redis_json_module_create! with the as-library feature and the new RDB depth configuration
  • RedisBloom/RedisBloom#1035 TDIGEST.QUANTILE, TDIGEST.CDF, and TDIGEST.TRIMMED_MEAN could return NaN for a sketch containing exactly one observation
  • RedisBloom/RedisBloom#1053 RDB loading and RESTORE did not consistently reject invalid numeric values, allocation sizes, serialized counts, or inconsistent metadata in Bloom filters, Count-Min Sketches, Top-K sketches, and t-digests; Bloom filter growth also lacked overflow checks
  • RedisBloom/RedisBloom#1053 Top-K sketches containing nonempty items with zero counts or empty-string items with nonzero counts could be restored incorrectly
  • RedisBloom/RedisBloom#1067 Bloom filters with excessive hash-function counts could be accepted during loading and restoration, including through BF.LOADCHUNK
  • RedisBloom/RedisBloom#1062 CMS.MERGE key metadata did not correctly identify the destination and all source keys, affecting cluster slot validation
  • RedisBloom/RedisBloom#1071 CF.COMPACT command metadata was missing its argument count and key specification

Performance and resource utilization improvements

  • #15618 Batch updates to hashes using shared templates now run more efficiently
  • #15018 Supported x86 systems now use the processor-based monotonic clock by default, with runtime calibration to reduce timing overhead
  • #15782 RDB and AOF loading now provides sequential-read hints to the operating system to improve loading efficiency
  • RediSearch/RediSearch#10169 Searches on indexes using field-level expiration (HEXPIRE) are faster. (MOD-16350)
  • RediSearch/RediSearch#10981, RediSearch/RediSearch#11065 Coordinator field lookup and row-reply serialization overhead is reduced. (MOD-17924)
  • RediSearch/RediSearch#11055, RediSearch/RediSearch#11056, RediSearch/RediSearch#11057 Cluster reply conversion, result destruction, and GROUPBY cleanup have reduced overhead. (MOD-17908, MOD-17909, MOD-17910)
  • RediSearch/RediSearch#11507, RediSearch/RediSearch#11506 Query replies now format integral numeric values without snprintf and declare reply collection lengths up front. (MOD-18800, MOD-18799)
  • RediSearch/RediSearch#11509 Hash field loading for RETURN and LOAD no longer requires per-field allocations. (MOD-18811)
  • RediSearch/RediSearch#10246 Concurrent writes are now allowed during vector range queries. (MOD-16437)
  • RediSearch/RediSearch#10515 Coordinator requests are now allocated on the main thread, removing CoordRequestCtx. (MOD-16990)
  • RediSearch/RediSearch#11018 Query usage is now separated from administrative index operations. (MOD-17536)
  • RediSearch/RediSearch#10066 Shard response barrier removed in favor of async iterator depletion callback for FT.AGGREGATE WITHCOUNT. (MOD-16210)
  • RedisJSON/RedisJSON#1645 More accurate memory usage reporting for shared strings: Memory usage now accounts for each reference’s proportional share of a shared string’s allocation, including its header and padding, instead of charging the full allocation to every reference
  • J1660 Reduced object memory consumption: JSON parsing now uses compact object allocation to reduce the actual memory needed to store JSON objects
  • RedisJSON/RedisJSON#1661 Improved JSONPath parsing and evaluation by reducing parser backtracking, temporary allocations, and repeated traversal. Optimizations include caching root-path operands across filter candidates, stopping existence checks at the first match, and reducing overhead in regex matching and string comparisons
  • RedisJSON/RedisJSON#1631 Improved typed-array element access through direct indexing, avoiding repeated iteration and quadratic work during full indexed scans
  • RedisBloom/RedisBloom#1049 Improved t-digest compression performance for inputs containing many duplicate values. Sorting is now bounded to O(n log n), avoiding quadratic behavior on pathological inputs

Configuration parameters

  • Redis-roaring:bitmap-default-roaring - to enable the new roaring bitmaps type, disabled by default
  • RedisJSON/RedisJSON#1657 Configurable RDB depth validation: Added json-legacy-rdb-depth-limit, disabled by default, to enforce a maximum nesting depth of 128 when loading JSON from RDB or through RESTORE
  • RedisJSON/RedisJSON#1640 Addedjson-auto-create-deep-paths and is disabled by default and can only be configured at load time. Use the same value on every node of a shard and when replaying AOF files, because differing values can cause data divergence

Metrics

  • #15374 INFO keysizes histograms now include streams, providing visibility into stream key sizes
  • #15682 Streams observability – Added INFO STREAMS with per-database histograms of consumer groups per stream, pending entries per group, and consumers per group. Enable with stream-stats yes (disabled by default)
  • RediSearch/RediSearch#10097 FT.INFO now exposes the default EF_RUNTIME. (MOD-16147)
  • RediSearch/RediSearch#10107 Disk GC bytes_collected and cycle stats are now reported in FT.INFO. (MOD-14621)
  • RediSearch/RediSearch#10464 FT.INFO on coordinator now aggregates per-field disk metrics via the reducer. (MOD-14859)
  • RediSearch/RediSearch#10204 Redis INFO now breaks down query timeout metrics by pipeline stage. (MOD-13192)
  • RediSearch/RediSearch#11521 Index metrics are no longer collected for unrelated INFO sections. (MOD-18033)
  • RediSearch/RediSearch#10536 FT.PROFILE loader-field timing resolution is improved. (MOD-17132)

Behavior changes

  • RediSearch/RediSearch#10109 FT.CREATE rejects RERANK on HNSW vector fields in RAM mode. (MOD-16015)
  • RediSearch/RediSearch#10200 Disk indexes reject DIALECT 4 and WITHOUTCOUNT. (MOD-15997)
  • RediSearch/RediSearch#10082 COLLECT requires an @ prefix for field names. (MOD-16233)
  • RediSearch/RediSearch#11106 JSON HIGHLIGHT/SUMMARIZE fields with multi-value JSONPath are now rejected. (MOD-16530)
  • RediSearch/RediSearch#10208 Non-cacheable commands are now marked with dont_cache. (MOD-16175)
  • RediSearch/RediSearch#10699 Numeric command arguments are now strictly parsed. (MOD-17409)
  • RediSearch/RediSearch#11335 Search module now requires Redis 8.9.241 or newer to load. (MOD-15868)
  • RedisBloom/RedisBloom#1063 Rejected CMS.INCRBY item updates now leave counters and the total count unchanged instead of saturating counters on overflow. Multi-item commands can still partially succeed.
  • RedisBloom/RedisBloom#1063 CMS.MERGE now requires matching cell sizes across the destination and all sources.

Modules API

  • #15517 Modules can now retrieve a cluster node’s TLS port using the new REDISMODULE_NODE_PORT_TLS flag in RM_GetClusterNodeInfo()
  • RedisJSON/RedisJSON#1623 Added getWithPath in shared API V9 to evaluate a precompiled JSONPath, allowing callers to compile a path once and reuse it across documents.
  • RedisJSON/RedisJSON#1666 Added pathParseNoErrorMsg in shared API V10 to compile JSONPaths without a Redis context or an allocated error message. Returns a compiled handle on success or NULL on failure.
  • RedisJSON/RedisJSON#1653 Made pre-command hooks optional and allowed hook errors to abort JSON commands before execution. Hooks now return RedisResult<()>; shared C API calls continue to ignore hook errors.
  • RedisJSON/RedisJSON#1640 Extended the Rust Manager interface with clone_value and create_object to support construction of missing paths. Custom implementations must implement these methods and satisfy the new Borrow<Self::V> requirement for owned values.
7 hours ago
nacos

3.3.0(Oct 29th, 2026)

Nacos 3.3.0

Nacos 3.3.0 is a feature iteration release for the Nacos 3.x series. It brings protocol-neutral Agent management and discovery, shared AI resource search, and unified MCP lifecycle management to the stable release.

This release focuses on:

  • AI Registry capabilities across Agent, AgentSpec, Skill, Prompt, and MCP resources.
  • DNS service discovery and distributed locks.
  • Dynamic plugin management and authentication enabled by default.
  • Spring Boot 4 and Jackson 3 compatibility, with improved client and server reliability.

The main feature updates include:

  • Agent registration, version management, runtime endpoints, RAD discovery, transport negotiation, and Watch/Push through Java SDKs and Console workflows.
  • Shared AI resource search with hybrid keyword and vector retrieval, artifact access, and optional relevance filtering.
  • MCP draft, review, publish, online/offline, and visibility management, with migration support for historical resources.
  • Optional DNS discovery with A, AAAA, and SRV records over UDP and TCP.
  • Distributed reentrant and non-reentrant locks with watchdog renewal and Raft consistency.

The stable release also improves Skill metadata consistency across version transitions, extends visibility plugin capabilities, and strengthens Config SDK usability, Console compatibility, and recovery after Naming reconnects and cluster restarts.

These notes are cumulative and include the changes delivered in 3.3.0-BETA and 3.3.0-RC.


Detailed changes in this release:

Feature

  • #50 Add optional DNS service discovery over UDP and TCP, with A, AAAA, and SRV records, metrics, and configurable external DNS forwarding.
  • #14466 Add a neutral JSON adapter with Jackson 2 and Jackson 3 runtime support.
  • #14804 Add protocol-neutral Agent lifecycle management, Console workflows, RAD discovery, runtime endpoints, transport negotiation, Watch/Push, and Java SDKs.
  • #15279 Add distributed reentrant and non-reentrant locks with watchdog renewal, FIFO waiting, gRPC notifications, Raft consistency, and a Java Lock SDK.
  • #15471 Support SkillSpector as an AI publish pipeline.
  • #15475 Add unified dynamic plugin configuration, lifecycle management, runtime updates, deterministic discovery, and Console configuration workflows.
  • #15476#15604 Add plugin-owned visibility grant and revoke APIs and Console management for Skill and AgentSpec resources.
  • #15541 Add Agentic Resource Discovery with search, exploration, artifact retrieval, visibility filtering, persistent indexes, and hybrid keyword and vector retrieval.
  • #15640 Add Linux RISC-V64 compatibility for RocksDB JNI loading and startup.
  • #15761 Add shared MCP lifecycle management with drafts, review, publish, online/offline operations, visibility, Java SDKs, and historical reconciliation while preserving existing Config/Naming serving data.

Enhancement/Refactor

  • #8354 Replace the mandatory Prometheus client dependency with a pluggable client metrics SPI and a no-op default.
  • #12064 Support configuring the gRPC port offset through individual client properties.
  • #12734 Add request/result-based Config SDK methods, encrypted Config CAS publishing, and conditional queries with local cache reuse.
  • #13690 Log the resolved client logging configuration and include namespace IDs in subscription logs.
  • #14804 Improve Agent Console workflows, expose SDK discovery capabilities and A2A conversion helpers, and trace discovery request origins.
  • #14817 Disable selected deprecated Pipeline and MCP import APIs by default and provide a shared temporary compatibility switch.
  • #14932 Reduce read-path contention and improve index consistency in the legacy MCP cache.
  • #14980 Support deregistering persistent Naming instances from Console v3.
  • #15315#15561 Improve Skill upload precheck, conflict handling, and server-side ZIP validation.
  • #15322 Remove obsolete Config migration compatibility code and retain only the current Config storage model.
  • #15345 Return cached Skill frontmatter in list and metadata-detail responses.
  • #15346 Manage the reserved latest label for AI resources on the server.
  • #15357 Enable Client API authentication by default and validate standard integration scenarios with authentication enabled.
  • #15432#15440#15441 Remove reviewed unused Java code while preserving required compatibility contracts.
  • #15448 Improve English translations in Console UI Next.
  • #15486 Include the Skill owner in upload permission-denied messages.
  • #15606 Return a stable per-item result for every Skill batch upload candidate.
  • #15661 Restrict distributed embedded database query results to supported scalar types and registered row mappers.
  • #15678 Decouple the visibility plugin SPI from server runtime modules.
  • #15686#15692 Align authorization method resolution with Spring MVC routing and expand controller-level authorization regression coverage.
  • #15687 Authenticate native JRaft gRPC requests with server identity and a rolling-upgrade enforcement transition.
  • #15695 Improve Config detail, edit, and history page layouts with larger content areas and full-screen reading.
  • #15720 Automatically publish the first uploaded Skill version.
  • #15746 Add operator-controlled outbound access policies for MCP tool imports.
  • #15837 Add opt-in initialization for multiple Spring AOT contexts and improve GraalVM runtime metadata.
  • #15838 Clarify that rolling back the first inserted Config history record deletes the configuration.
  • #15854 Remove untagged legacy Raft request parsing and preserve explicit errors for malformed log entries.
  • #15868 Support disabling local Config snapshots through the configSnapshotEnabled startup property.
  • #15896 Migrate Copilot streaming to typed AgentScope events while preserving the existing SSE response contract.
  • #15900 Correlate Java SDK HTTP requests with server request context through Nacos-Request-Id.
  • #15903 Add a runnable Parallel Search MCP example for registration, endpoint discovery, web search, and page fetching.
  • #15921 Add optional Jev relevance filtering for ARD Search, with stable result ordering and fallback to basic search.
  • #15929 Add Russian localization and a language selector to Console UI Next.
  • #15956 Allow visibility plugins to declare additional AI resource scopes and extend Agent validation through an optional SPI, while preserving default PUBLIC/PRIVATE behavior.

BugFix

  • #11122 Accept healthCheckEnabled as a health-check switch entry while retaining the legacy check alias.
  • #11780 Preserve Config and service list filters and pagination when returning from detail pages.
  • #11890 Avoid removing metadata for instances that still exist after restart.
  • #12557 Retry Config dump write-lock acquisition to prevent stale MD5 cache data.
  • #14008 Fix native-image metadata required to establish gRPC client connections.
  • #14804 Keep AI search available with partial results while indexes are being backfilled.
  • #14804 Preserve Agent SDK Watches across transient failures and deliver initial and updated state through a consistent Listener path.
  • #14981#15468 Fix concurrent Config publish duplicate-key handling through the datasource dialect SPI, including PostgreSQL unique_violation.
  • #15410 Fix trailing separators when joining collections containing null elements.
  • #15415 Prevent malformed config-plugin property names from discarding valid plugin configuration.
  • #15420 Fix Skill ZIP uploads with invalid or unavailable version candidates.
  • #15425 Prevent out-of-range batch indexes from causing IndexOutOfBoundsException.
  • #15446 Fix page count calculation for empty and exactly divisible result sets.
  • #15447 Prevent NamingUtils.getServiceName from failing on a trailing service separator.
  • #15466 Correct @Since annotations for Skill upload APIs.
  • #15470 Prevent Naming connection cleanup from waiting for unrelated distributed-lock Raft writes.
  • #15475 Fix standalone Console auth plugin initialization and forward the caller identity to downstream Server requests.
  • #15476 Enforce Prompt visibility on list, detail, version, download, and Client read APIs.
  • #15477 Wait for persistent service metadata before starting health checks.
  • #15490 Fix Chinese text corruption in Skill Scanner pipeline reports on Windows.
  • #15494 Restore complete MCP tool advanced-template support in Console UI Next.
  • #15510 Reject explicitly supplied invalid Bearer tokens instead of falling back to anonymous access.
  • #15534 Generate deterministic, ASCII-safe physical Config keys for AI resources.
  • #15543 Restore case-sensitive collation for newly initialized MySQL Config schemas.
  • #15557 Fix startup failures when plugin state snapshots are restored before unified plugin discovery.
  • #15560 Preserve MCP tool passthrough authentication when editing and publishing runtime templates.
  • #15603 Fix visibility query conversion when explicitly authorized resources are present.
  • #15618 Try lower-priority explicit Skill upload versions before generating a version.
  • #15620 Allow AI resource versions to be resubmitted after completed or stale review results.
  • #15625 Fix gray Config cache null access and cross-thread visibility in Config disk services and client connections.
  • #15634 Fix API authorization metadata, custom resource parser precedence, AgentSpec authorization, and Prometheus security path matching.
  • #15642 Make AI resource deletion cleanup-first and retryable across all stored versions.
  • #15658 Keep AI resource reads, updates, and deletion bound to the persisted storage provider.
  • #15660 Fix standalone Console startup when the Config clone source-permission checker is unavailable.
  • #15663 Preserve case-sensitive AI resource identities in MySQL search and task tables.
  • #15675 Preserve nullable MCP tool output schemas during editing, display, and OpenAPI import.
  • #15682 Prevent login responses from disclosing whether a username exists.
  • #15689 Preserve string serialization of Config storage IDs with Jackson 3 to avoid numeric precision loss.
  • #15701 Fix Config history next-record queries on Derby and preserve gray-version filtering.
  • #15703 Migrate the legacy skills.sh importer state key without overriding canonical configuration.
  • #15705 Clean removed Skill and AgentSpec draft files while retaining retry metadata after storage failures.
  • #15710 Declare the required SQL LIKE escape clause for Derby, Oracle, and other affected dialects.
  • #15712#15827 Reject unsafe instance addresses, HTTP targets, headers, and MySQL connection options in active health checks.
  • #15714 Handle encoded context paths consistently in the legacy controller-method resolver.
  • #15718 Escape all LIKE predicates when searching embedded roles with username filters.
  • #15724 Forward the namespace when querying Config listeners by IP across cluster members.
  • #15744 Align bootstrap and distribution configuration defaults.
  • #15763 Reject invalid IPv6 mixed addresses with too many explicit address blocks.
  • #15788 Allow the Java client to run with Jackson 3 after excluding Jackson 2 core/databind, including authentication paths.
  • #15803 Reject unsafe AgentSpec and Skill ZIP layouts and enforce entry-count and decompression limits.
  • #15804 Reject unsafe filesystem paths before Config, archive, and local rule-storage operations.
  • #15821 Increase the embedded Derby connection timeout to prevent initialization failures on slow storage.
  • #15836 Fix plugin availability RPC serialization so remote cluster members are reported correctly.
  • #15844 Use the correct default gRPC protocol negotiator type.
  • #15847 Restore public defaults for newly created Agent and MCP resources and preserve existing visibility scopes.
  • #15850#15851 Select the default JDBC driver from the datasource dialect and clarify non-MySQL configuration examples.
  • #15853 Return schema metadata in current, historical, and previous-version Config details.
  • #15857 Prevent stale Distro snapshots from overwriting redo registrations and losing service instances after cluster restarts.
  • #15864 Resolve HEAD requests through their GET mapping in the legacy controller-method cache.
  • #15866 Remove server-list event subscriptions on client shutdown and prevent callbacks from accessing a closed server-list provider.
  • #15872 Display subscriber addresses, client versions, and application names correctly in Console UI Next.
  • #15876 Ignore registration responses from obsolete connections so ephemeral instances are re-registered after reconnect storms.
  • #15883 Fix unexpected HTTP 403 responses from identity-only APIs when Console is deployed independently.
  • #15899 Fix Console UI Next loading failures on Chromium 90 by transpiling unsupported JavaScript syntax.
  • #15930 Prevent uncaught errors from permanently cancelling Naming redo tasks and blocking registration or subscription recovery.
  • #15945#15947 Parse multiline YAML Skill descriptions correctly and prevent spurious frontmatter fields.
  • #15946 Preserve empty and whitespace-only Skill resource files when reading versions and downloading packages.
  • #15949 Keep Skill descriptions consistent with the displayed version across draft edits and lifecycle transitions, and retain the correct description when the last online version goes offline.
  • #15953 Keep Publish and Cancel actions visible on Config creation and edit pages, and eliminate nested scrolling on Config and history detail pages in Console UI Next.

Dependencies

  • #14944 Upgrade Spring Boot from 3.5.14 to 4.0.6.
  • #15470 Upgrade SOFA JRaft to 1.4.1 while preserving callback cache behavior and JRaft authentication.
  • #15584 Upgrade Maven Compiler Plugin from 3.5.1 to 3.15.0 for JDK 25 build compatibility.
  • #15645#15834#15944 Update legacy and next Console dependencies, refresh packaged assets, and upgrade the bundled DOMPurify sanitizer to 3.4.17.
  • #15707 Upgrade Log4j API from 2.25.4 to 2.25.5.
  • #15767 Upgrade gRPC to 1.81.0 to address CVE-2026-33871.
  • #15796 Upgrade Apache Derby from 10.14.2.0 to 10.16.1.1, align split artifacts, and retain the Java 17 baseline.
  • #15878 Upgrade AgentScope Java from 1.0.7 to 2.0.3 in Copilot.

Breaking Change Notice

Nacos 3.3.0 changes authentication defaults, disables selected deprecated APIs, and introduces migration requirements. Applications using the new Agent SDK from BETA or RC also need to review the finalized subscription contract.

Affected users:

  • Applications relying on Client APIs without credentials or on deprecated Pipeline and MCP import endpoints.
  • Deployments with legacy Config data, historical AI storage keys, untagged Raft logs, or A2A/MCP resources requiring migration.
  • Applications relying on built-in Prometheus client metrics or implicit AI resource visibility defaults.
  • BETA/RC adopters using RAD subscriptions or remotely accessing the optional DNS server.

Recommended upgrade path:

  • Prepare Client API credentials. An absent nacos.core.auth.enabled now means true. Existing explicit false settings remain effective. If necessary, keep authentication explicitly disabled during credential provisioning, then enable it consistently across the cluster after verifying client access. Admin and Console authentication defaults are unchanged.
  • Migrate deprecated AI API calls. Selected legacy Pipeline and Console MCP import endpoints return HTTP 410 with API_DEPRECATED by default. Use the Pipeline /list and /detail endpoints and unified /v3/console/ai/import/validate and /execute endpoints. nacos.core.api.compatibility.enabled=true temporarily reopens the selected endpoints; nacos.ai.resource.import.legacy-mcp-api-enabled is no longer recognized.
  • Complete legacy Config migrations. Upgrade pre-3.0 deployments through an earlier Nacos 3.x version. Migrate default-namespace data from the empty tenant to public, and legacy beta/tag data to config_info_gray. For the nacos_config AI storage provider, explicitly migrate affected historical non-ASCII or overlength Config coordinates to the deterministic ASCII-safe mapping.
  • Check persisted Raft logs. Nacos 3.3 no longer replays untagged entries, including entries originally written by Nacos 2.0.x and retained through intermediate upgrades. Recover and migrate those logs or snapshots with a compatible version before upgrading; changing the running version alone does not convert persisted logs.
  • Plan historical A2A and MCP migration. The default nacos.ai.a2a.compatibility.mode=CANONICAL does not scan historical A2A data. Follow the A2A upgrade runbook for AUTO migration and early-3.3 preflight. After permanent canonical cutover, legacy-only servers must not rejoin. Preserve MCP reconciliation state and its existing Config/Naming serving data during the one-way lifecycle transition.
  • Keep cluster server identities consistent. Native JRaft authentication becomes enforced after all members advertise support, and enforcement persists across restarts. Rolling downgrades to members without JRaft credential support are not guaranteed to remain available.
  • Update BETA/RC Agent SDK consumers. The new RAD subscribeAgent methods now return void. Receive both initial state and subsequent updates through the Listener, prepare Listener state before subscribing, and recompile dependent applications. Legacy A2A signatures and HTTP/gRPC wire contracts remain unchanged.
  • Configure client metrics explicitly. nacos-client no longer includes a mandatory Prometheus client dependency. Install an implementation of NacosClientMetricsProvider when metrics are required; without one, recording is a no-op even when enableClientMetrics is enabled.
  • Review MCP import and visibility settings. Private or local MCP import targets require nacos.console.ai.mcp.import.allowed-private-addresses, and redirects are not followed. The built-in visibility plugin defaults newly created Agent and MCP resources to PUBLIC; explicitly choose a private scope where required. Existing stored scopes and Prompt/Skill defaults are unchanged.
  • Review DNS listener configuration. DNS remains optional and disabled by default. When enabled, nacos.naming.dns.bind-address defaults to 127.0.0.1; configure the intended listening address for remote clients. External forwarding requires separate explicit configuration.
  • Refresh affected Skill metadata. Historical Skill descriptors without parsed frontmatter retain their existing metadata; this release does not automatically read their packages or backfill missing metadata. Update the content or re-upload affected Skills to regenerate frontmatter and correct previously stored multiline descriptions.
  • Back up and rehearse the upgrade. Back up the database and persisted server data, then verify authentication, data migration, discovery, and client behavior in staging. Embedded Derby is upgraded to 10.16.1.1, so include persisted-data reads, subsequent writes, and restart recovery in upgrade validation.

Deployments without the affected historical data do not require those data migrations. The authentication defaults and any applicable API or SDK changes still need review.


Java Version Requirements

Module Java Required
Nacos-Server / Nacos-Console Java 17
Nacos-Client Java 8
Nacos-Maintainer-Client Java 8

New Contributors

Full Changelog: https://github.com/alibaba/nacos/compare/3.3.0-RC...3.3.0

14 hours ago
nacos

2.5.5 (Oct 29th, 2026)

Nacos 2.5.5 Release Notes

Nacos 2.5.5 is mainly a bugfix and experience-improvement release for the 2.x series.

This release focuses on:

  • Hardening server disk paths and active HTTP health checks.
  • Preventing service instance loss during full cluster restarts.
  • Fixing gRPC frame corruption while preserving Java 8 compatibility.
  • Improving HTTP request handling and cluster member consistency.

Detailed changes in this release:

Enhancement/Refactor

  • #15809 Harden server disk path validation for Config storage, local TPS rules, and ZIP extraction to prevent access outside intended directories.
  • #15828 Harden active HTTP health checks by validating request targets and custom headers and restricting checks to the registered instance target.

BugFix

  • #15857 Fix permanent service instance loss during full cluster restarts by excluding connection-based clients from Distro snapshots that can overwrite new registrations.
  • #15865 Fix controller method lookup for HTTP HEAD requests by resolving them to the corresponding GET mappings.
  • #15951 Fix inconsistent cluster member hashing by aligning hashCode() with the address-based comparison used by equals().

Dependencies

  • #15936 Upgrade gRPC to 1.78.0 to fix frame corruption causing false message-size and mid-frame end-of-stream errors, while retaining Guava 33.3.1-android for Java 8 compatibility.

Upgrade Notes

This release strengthens validation for disk paths and active HTTP health checks. Before upgrading, review the following configurations:

  • Config identity fields must not be exactly . or ... Local TPS rule names must be valid file names without path separators or directory traversal components.
  • HTTP health-check targets must use relative URI references, such as /health with optional query parameters, without a scheme, authority, or fragment. Custom headers must be valid and must not include Content-Length or Transfer-Encoding.

Existing HTTP health checks that fail the new validation are skipped without sending requests or changing instance health status. Update affected configurations to restore health checking.

Deployments using valid identifiers and health-check configurations require no changes for these validation updates.


Java Version Requirements

Nacos 2.5.5 retains the Java 8 baseline used by the 2.x series.

Module Java Required
Nacos-Server / Nacos-Console Java 8
Nacos-Client Java 8

Full Changelog: https://github.com/alibaba/nacos/compare/2.5.4...2.5.5

22 hours ago
node

2026-10-28, Version 24.22.2 'Krypton' (LTS), @aduh95

Commits

1 days ago
prometheus

3.16.0-rc.2 / 2026-10-27

  • [CHANGE] API: The experimental search endpoints now clamp batch_size to 1000. (#19731, @roidelapluie)
  • [CHANGE] Configuration: Default --web.external-url to https when --web.config.file enables TLS. (#19241, @hexonal)
  • [CHANGE] PromQL: Subquery samples are now included in the query TotalSamples and TotalSamplesPerStep statistics, and SamplesRead now counts reads from subqueries with an @ modifier in range queries. (#19165, @DanCech)
  • [CHANGE] Remote write: Stop exposing the deprecated prometheus_remote_storage_metadata_total, prometheus_remote_storage_metadata_failed_total, prometheus_remote_storage_metadata_retried_total, and prometheus_remote_storage_metadata_bytes_total metrics for Remote Write 2.0 queues. (#20080, @shilohlee98)
  • [CHANGE] Remote write receiver: Count Remote Write 2.x samples and histograms ingested without metadata in prometheus_api_remote_write_without_metadata_appended_samples_total even when metadata-wal-records is disabled. (#19812, @bwplotka)
  • [CHANGE] TSDB: Reject exemplars whose label names are not unique, instead of storing them and serving a duplicate JSON key from /api/v1/query_exemplars. (#19896, @Ramya-9353)
  • [FEATURE] API: Allow overriding PromQL Start Timestamp processing on a per-query basis using the X-Prometheus-Use-Start-Timestamps HTTP header. (#19066, @69iqqq)
  • [FEATURE] Agent: Support metadata-wal-records in Prometheus Agent mode. (#19684, @bwplotka)
  • [FEATURE] PromQL: Add experimental integral() function for computing integral-over-time of range vectors behind the --enable-feature=promql-experimental-functions flag. (#14440, @jjo)
  • [FEATURE] PromQL: Add experimental query cost estimation, actual cost reporting, and configurable execution limits, enabled with --enable-feature=query-cost. (#20028, @roidelapluie)
  • [FEATURE] PromQL: Smoothed and Anchored vector selectors are now stable and always-on. (#19697, @roidelapluie)
  • [FEATURE] PromQL: Use start timestamps to detect counter resets when float timeseries are queried using extended range selector modifiers (anchored, smoothed). This feature is hidden behind use-start-timestamps feature flag. (#18966, @vpranckaitis)
  • [FEATURE] Promtool: print test filename during promtool tests (#18271, @dnwe)
  • [FEATURE] PromQL: Allow unquoted Unicode letters and dots behind a feature flag (#20162, @roidelapluie)
  • [ENHANCEMENT] Search API: Warn when participating remote-read storage does not support search. (#19992, @aknuds1)
  • [ENHANCEMENT] Remote Read: Add native histogram prometheus_remote_read_handler_gate_wait_duration_seconds to measure concurrency-gate wait duration, including requests canceled while waiting. (#18355, @ogulcanaydogan)
  • [ENHANCEMENT] Remote Write: Add experimental flag convert_nhcb_to_classic to convert NHCB to classic histograms for external systems that dont support NHCBs. (#17205, @Naman-B-Parlecha)
  • [ENHANCEMENT] promtool: Add --allow-incompatible-block-duration so users can specify any max-block-duration instead of being restricted to the default Prometheus block durations. (#19363, @sarthaksarthak9)
  • [PERF] Remote write: Cache repeated OTLP histogram metric names. (#19717, @perfloop-agent)
  • [PERF] OpenMetrics 2.0 parser: Reuse classic histogram and summary expansion buffers across scrapes. (#19907, @bwplotka)
  • [PERF] PromQL: Decode only histogram sum/count (not buckets) for timestamp(), start_timestamp() and absent(). (#19738, @linasm)
  • [PERF] PromQL: Only select the fixed window for subqueries with an @ modifier. (#19863, @roidelapluie)
  • [PERF] Remote write / TSDB: Deduplicate per-series metadata structs in memory with unique.Handle. (#20040, @bwplotka)
  • [PERF] Scrape: Avoid some copies of scrape response bodies. (#19394, @shubhgupta2104)
  • [PERF] TSDB: Improve XOR2 compression and append performance by selecting value windows based on encoding cost. (#19962, @roidelapluie)
  • [PERF] TSDB: Reduce memory used writing and reading checkpoint metadata records. (#19712, @kgeckhart)
  • [PERF] Scrape: Convert classic histograms to NHCB directly in the OpenMetrics 2.0 parser without wrapping in NHCBParser. (#19880, @bwplotka)
  • [PERF] Scrape: Reduce OpenMetrics 2.0 parser allocations and CPU overhead by lazily constructing composite series and exemplar labels. (#19895, @bwplotka)
  • [BUGFIX] Remote read: Abort failed streaming responses without writing duplicate headers or appending plain-text errors to the protobuf stream (#19749, @aknuds1)
  • [BUGFIX] TSDB: Fix loss of out-of-order samples when a WAL checkpoint drops a series record that the out-of-order write-behind log still needs (#19737, @replay)
  • [BUGFIX] TSDB: Fix queries that seek within a head chunk returning samples committed after the query started (#19854, @aknuds1)
  • [BUGFIX] TSDB: Preserve mapped chunks when WAL replay merges multiple references for the same series, preventing missing out-of-order samples and duplicate in-order chunks after restart (#19805, @dmatth1)
  • [BUGFIX] Fix auto-reload logic to reload after reverting a failed configuration change (#19838, @eholzbach)
  • [BUGFIX] API: Do not match metric family metadata for doubled _total and _info suffixes in experimental search API. (#19910, @tcp13equals2)
  • [BUGFIX] API: Reject timeout and lookback_delta values that overflow int64 instead of turning them into a negative duration (#19658, @youdie006)
  • [BUGFIX] API: Resolve metric family metadata for suffixed metric names in search results, in experimental search API. (#19824, @roidelapluie)
  • [BUGFIX] AWS SD: Describe each ElastiCache cluster once instead of twice for clusters that are not replication group members. (#19434, @ekalinin)
  • [BUGFIX] Build: Allow installing promtool with version-suffixed go install commands (#19754, @aknuds1)
  • [BUGFIX] Discovery: Fix a panic in Azure service discovery when a VM tag has a null value. (#19755, @shoemoney)
  • [BUGFIX] Federation: fix corruption of float native histograms. (#19679, @MichaHoffmann)
  • [BUGFIX] Fix ts_of_last_over_time for samples before the Unix epoch. (#19828, @fallintoplace)
  • [BUGFIX] Histograms: Fix ConvertNHCBToClassic inflating classic bucket counts for integer native histograms whose spans have gaps. (#19659, @youdie006)
  • [BUGFIX] Logging: Preserve rule and TSDB block values in JSON logs. (#19572, @shilohlee98)
  • [BUGFIX] OTLP receiver: Drop exemplars with timestamps more than 10 minutes in the future instead of storing them and blocking subsequent exemplars for that series. (#19812, @bwplotka)
  • [BUGFIX] OTLP: Count only out-of-order exemplars in prometheus_api_otlp_out_of_order_exemplars_total, not every rejected exemplar. (#20030, @aknuds1)
  • [BUGFIX] OTLP: Do not drop exemplars that have a trace_id or span_id filtered attribute in addition to a trace or span ID. The trace context now takes precedence over the colliding attribute, as required by the OpenTelemetry specification. (#20004, @krajorama)
  • [BUGFIX] OTLP: Do not emit le="+Inf" twice when a histogram's explicit bounds end at +Inf, and warn about the bound. (#19425, @serhiy-bzhezytskyy)
  • [BUGFIX] OTLP: Stop dropping exemplars that arrive out of timestamp order within a data point. (#20029, @aknuds1)
  • [BUGFIX] OpenMetrics 2.0: Attach histogram exemplars to matching classic _bucket series and preserve them when scraping both native and classic histograms. (#20020, @dashpole)
  • [BUGFIX] PromQL: Avoid intermediate overflow in rad() and deg() conversions. (#19901, @fallintoplace)
  • [BUGFIX] PromQL: Consistently ignore and drop __type__ and __unit__ labels in without aggregations, absent(), info(), and binary operator fill matching. (#19986, @dashpole)
  • [BUGFIX] PromQL: Do not panic when printing the partial AST returned alongside a parse error. (#19797, @zenador)
  • [BUGFIX] PromQL: Drop type and unit in binary operations so they are transparent to users, similar to how name is handled. (#18680, @iam-prane-eth)
  • [BUGFIX] PromQL: Fix ==, !=, changes() and count_values on native histograms giving wrong results inside histogram_count(), histogram_sum() and histogram_avg(). (#20024, @linasm)
  • [BUGFIX] PromQL: Fix histogram_fraction returning wrong results for native histograms with custom buckets when a bucket boundary is exactly 0. (#19657, @youdie006)
  • [BUGFIX] PromQL: Fix histogram_quantile and histogram_quantiles interpolating within the wrong bucket for native histograms whose sum is NaN. (#19973, @bhabishnu)
  • [BUGFIX] PromQL: Fix lexing of subqueries whose range is a duration keyword expression, e.g. foo[range():1s]. (#19729, @roidelapluie)
  • [BUGFIX] PromQL: Fix warning and error locations for duration expressions min_of and max_of. (#19742, @roidelapluie)
  • [BUGFIX] PromQL: Ignore NaN classic histogram bucket boundaries in histogram_quantile, histogram_quantiles and histogram_fraction and return correct value instead of NaN if there are normal buckets. (#20057, @fallintoplace)
  • [BUGFIX] PromQL: Preserve infinite values at exact quantile ranks. (#19899, @fallintoplace)
  • [BUGFIX] PromQL: Preserve original operand sides for experimental fill modifiers with group_right matching. (#19939, @inanna-malick)
  • [BUGFIX] PromQL: Preserve subquery step expressions when printing queries after preprocessing. (#19743, @roidelapluie)
  • [BUGFIX] PromQL: Range vector functions no longer raise a spurious "vector cannot contain metrics with the same labelset" error when series have different metric names but the same remaining labels, as long as their timestamps do not overlap within the evaluated range window (#18631, @kasharkzy)
  • [BUGFIX] PromQL: do not count subquery materialized samples in total samples statistics (#19873, @roidelapluie)
  • [BUGFIX] Remote write: Prevent future-dated exemplars from scaling shards down to the minimum. (#19866, @thampiotr)
  • [BUGFIX] Agent: Prevent future sent timestamps from advancing WAL truncation beyond the minimum retention window. (#19866, @thampiotr)
  • [BUGFIX] Rules: Restore firing alerts with for durations shorter than --rules.alert.for-grace-period after a restart. (#19882, @ajaykr0905)
  • [BUGFIX] Scrape: fix failing scrape when float histogram is emitted over protobuf with count, zero count and buckets all zero, for example a result of recording rate(x[1m]) over constant histogram. (#19682, @MichaHoffmann)
  • [BUGFIX] Search API: Return the lexically smallest label values when limit is set on /api/v1/search/label_values, instead of an arbitrary subset (#19694, @tcp13equals2)
  • [BUGFIX] TSDB: Fix WAL watcher permanently skipping checkpoint series garbage collection when lagging behind head truncation. (#20041, @bwplotka)
  • [BUGFIX] Search API: Avoid panics when the requested time range has no participating storage. (#19992, @aknuds1)
  • [BUGFIX] TSDB: Fix a race in selected-series and stale-series compaction where a sample committed after the block was written but before the series was evicted from the head could be silently lost. The fix no longer depends on isolation being enabled. (#19666, @duricanikolic)
  • [BUGFIX] TSDB: Fix a rare case where a sample could be lost during selected-series or stale-series compaction if an unrelated write to the same series ran cleanup that erased the evidence needed to protect it. (#19672, @duricanikolic)
  • [BUGFIX] TSDB: Fix spurious "unknown series references" warnings during WAL replay after a restart, when the only blocks on disk were produced by selected-series or stale-series compaction. (#19734, @duricanikolic)
  • [BUGFIX] TSDB: Increment prometheus_tsdb_wal_corruptions_total when WAL corruption is detected during checkpoint creation, so the metric reflects corruption found at compaction time rather than only after a restart-triggered repair. (#19858, @mstinsky)
  • [BUGFIX] TSDB: Preserve series identities needed to recover exemplars after compaction and restart. (#19940, @duricanikolic)
  • [BUGFIX] TSDB: Reject native histograms whose span offsets overflow the int32 bucket index instead of storing them with corrupted buckets. (#20034, @Ramya-9353)
  • [BUGFIX] TSDB: fix no passing metadata-wal-records to TSDB from main feature flag. (#19678, @krajorama)
  • [BUGFIX] Templates: Preserve IPv6 addresses with dotted zone identifiers in stripDomain. (#19908, @ItsRoy69)
  • [BUGFIX] UI: Don't automatically open an autocomplete dropdown after closing a function call body or aggregation operator with a closing parenthesis. (#19825, @juliusv)
  • [BUGFIX] Web: Fix HTTP/2 negotiation silently falling back to HTTP/1.1 under Go 1.27+ when TLS is enabled with http2: true. The server now correctly advertises h2 via ALPN and multiplexes concurrent requests over a single connection. (#19848, @dongjiang1989)
  • [BUGFIX] mixin: Fix double-counting of failed samples in the PrometheusRemoteStorageFailures alert denominator. (#19877, @nikhilsaxena04)
  • [BUGFIX] promtool: Honor --enable-feature when evaluating rules in test rules. (#20046, @dennisme)
  • [BUGFIX] Scrape: Ensure UTF-8 works with the experimental OpenMetrics 2.0 (#19902, @bwplotka)
  • [BUGFIX] Scrape: Reject sum-only classic histograms during NHCB conversion (#19315, @shubhgupta2104)
1 days ago
turso

v0.9.0-pre.2

Install turso_cli 0.9.0-pre.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tursodatabase/turso/releases/download/v0.9.0-pre.2/turso_cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/tursodatabase/turso/releases/download/v0.9.0-pre.2/turso_cli-installer.ps1 | iex"

Download turso_cli 0.9.0-pre.2

File Platform Checksum
turso_cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
turso_cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
turso_cli-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
turso_cli-x86_64-pc-windows-msvc.zip x64 Windows checksum
turso_cli-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
turso_cli-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo tursodatabase/turso

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
1 days ago
node

2026-10-28, Version 26.13.0 'Lithium' (LTS), @richardlau

Notable Changes

This release marks the transition of Node.js 26.x into Long Term Support (LTS) with the codename 'Lithium'. It will continue to receive updates through to the end of April 2029.

Other than updating metadata, such as the process.release object, to reflect that the release is LTS, no further changes from Node.js 26.12.1 are included.

If you are updating from an earlier Long Term Support release (e.g. Node.js 24 or 22 or earlier) please note that since Node.js 25 the official binaries for Linux are linked against libatomic, which may need to be installed separately depending on your Linux distribution.

2 days ago
grafana

13.2.5

Download page What's new highlights

Security

  • Security: Fix CVE-2026-100105
  • Security: Fix CVE-2026-103506
  • Security: Fix CVE-2026-88858
  • Security: Fix CVE-2026-88967

Features and enhancements

  • Git Sync: Ignore hidden paths in repository scans and diffs #135028, @ferruvich
  • Provisioning: Default save from a branch preview to the previewed branch #135174, @Clarity-89
  • Provisioning: Never replace the repository root folder during incremental sync #135463, @ferruvich

Bug fixes

2 days ago
grafana

13.0.12

Download page What's new highlights

Security

  • Security: Fix CVE-2026-100105
  • Security: Fix CVE-2026-88858
  • Security: Fix CVE-2026-88967

Features and enhancements

  • Provisioning: Default save from a branch preview to the previewed branch #135173, @Clarity-89
2 days ago
grafana

13.1.9

Download page What's new highlights

Security

  • Security: Fix CVE-2026-100105
  • Security: Fix CVE-2026-88858
  • Security: Fix CVE-2026-88967

Features and enhancements

  • Provisioning: Default save from a branch preview to the previewed branch #135175, @Clarity-89