# Ray 2.49.0 — Ray-2.49.0 - Product: Ray (https://whatsnew.fyi/product/ray) - Vendor: Anyscale - Date: 2025-08-26 - Version: 2.49.0 - Original notes: https://github.com/ray-project/ray/releases/tag/ray-2.49.0 - Permalink: https://whatsnew.fyi/product/ray/releases/2.49.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Wrapped batch indices in a BatchMetadata object to make per-batch metadata explicit - **added** — Added support for Anti/Semi Join types - **added** — Introduced an Issue Detection Framework - **added** — Added an option to enable out-of-order execution for better performance - **added** — Introduced a StreamingSplit logical operator for DAG rewrite - **added** — Added a stratify parameter to train_test_split - **added** — Added Snowflake connectors - **added** — Updated Hudi integration to support incremental query - **added** — Added an Actor location tracker - **added** — Added BundleQueue.has_next - **added** — Made DEFAULT_OBJECT_STORE_MEMORY_LIMIT_FRACTION configurable - **added** — Added Expression support and a with_columns API - **added** — Allocate GPU resources in ResourceManager - **added** — Introduced JaxTrainer with SPMD support on TPUs - **changed** — Decoupled actor and node autoscaling; autoscaling now also considers budget - **changed** — Faster hash-shuffle resource usage calculation and more accurate shuffle progress totals - **changed** — Reduced Parquet metadata storage usage - **changed** — map_batches now defaults to row_modification=False and avoids pushing past limit - **changed** — ray.train.get_dataset_shard now lazily configures dataset sharding for better startup behavior - **fixed** — AutoscalingActorPool now properly downscales after execution #### Release Highlights **Ray Data:** - We’ve implemented a variety of performance enhancements, including improved actor/node autoscaling with budget-aware decisions; faster/more accurate shuffle accounting; reduced Parquet metadata footprint; and out-of-order execution for higher throughput. - We’ve also implemented anti/semi joins, stratified train_test_split, and added Snowflake connectors. **Ray Core:** - Performance/robustness cleanups around GCS publish path and raylet internals; simpler OpenTelemetry flagging; new user-facing API to wait for GPU tensor free; plus assorted test/infra tidy-ups **Ray Train:** - We’ve introduced a new JaxTrainer with SPMD support for TPUs. **Ray Serve:** - Custom Autoscaling per Deployment Serve now supports user-defined autoscaling policies via AutoscalingContext and AutoscalingPolicy, enabling fine-grained scaling logic at the deployment level. This is part of a large effort where we are adding support for autoscaling based on custom metrics in Serve, see [this RFC](https://github.com/ray-project/ray/issues/41135#issuecomment-3156717488) for more details. - Async Inference (Initial Support): Ray Serve introduces asynchronous inference execution, laying the foundation for better throughput and latency in async workloads. Please see [this RFC](https://github.com/ray-project/ray/issues/54652) for more details. - Major Performance Gains: This version of ray serve brings double digit % performance improvements both in throughput and latency. See release notes for more details. **Ray Serve/Data LLM:** - We’ve refactored Ray Serve LLM to be fully compatible with the default vllm serve and also now supports vLLM=0.10. - We’ve added a prefix cache-aware router with PrefixCacheAffinityRouter for optimized cache utilization; dynamic cache management via reset prefix cache remote methods; enhanced LMCacheConnectorV1 with kv_transfer_config support. #### Ray Libraries ##### Ray Data 🎉 New Features: - Wrapped batch indices in a BatchMetadata object to make per-batch metadata explicit. (#55643) - Added support for Anti/Semi Join types. (#55272) - Introduced an Issue Detection Framework. (#55155) - Added an option to enable out-of-order execution for better performance. (#54504) - Introduced a StreamingSplit logical operator for DAG rewrite. (#54994) - Added a stratify parameter to train_test_split. (#54624) - Added Snowflake connectors. (#51429) - Updated Hudi integration to support incremental query. (#54301) - Added an Actor location tracker. (#54590) - Added BundleQueue.has_next. (#54710) - Made DEFAULT_OBJECT_STORE_MEMORY_LIMIT_FRACTION configurable. (#54873) - Added Expression support & a with_columns API. (#54322) - Allocate GPU resources in ResourceManager. (#54445) 💫 Enhancements: - Decoupled actor and node autoscaling; autoscaling now also considers budget. (#55673, #54902) - Faster hash-shuffle resource usage calculation; more accurate shuffle progress totals. (#55503, #55543) - Reduced Parquet metadata storage usage. (#54821) - Export API improvements: refresh dataset/operator state, sanitize metadata, and truncate exported metadata. (#55355, #55379, #55216, #54623) - Metrics & observability: task metric improvements, external-buffer block-count metric, row-based metrics, clearer operator names in logs, single debug log when aggregators are ready. (#55429, #55022, #54693, #52949, #54483) - Dashboard: added “Max Bytes to Read” panel/budget, panels for blocks-per-task and bytes-per-block, and streaming executor duration. (#55024, #55020, #54614) - Planner/execution & infra cleanups: ExecutionResources and StatsManager cleanup, planner interface refactor, node trackers init, removed ray.get in _MapWorker ctor, removed target_shuffle_max_block_size. (#54694, #55400, #55018, #54665, #54734, #55158) - Behavior/interop tweaks: map_batches defaults to row_modification=False and avoids pushing past limit; limited operator pushdown; _[Truncated at 4000 characters — full notes: https://github.com/ray-project/ray/releases/tag/ray-2.49.0]_