NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #541 most downloaded on PyPI
Ray provides a simple, universal API for building distributed applications.
Last release 1 months ago
23 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
9 years old
132 releases · first in 2017
Replace socat subprocess with Python socket for HAProxy admin communication; bump HAProxy to avoid CVE-2025-11230 (#61897, #62585)
iter_batches stability by reducing hidden buffering and shutting down the executor when consumers exit early (#63660, #63682, #62949). This reduces object-store spilling for common training workloadsConsistentHashRouter (#62905, #63096, #62906) and CapacityQueueRouter (#62323) which is beneficial for supply-constrained workloads.ray.io/gpu-domain label instead of only packing at the single-node level. We've also added initial Kubernetes in-place pod resizing support for Autoscaler v2 (#55961, #62369, #62215), enabling Ray clusters to resize CPU and memory on existing worker pods before scaling out new pods.Dataset.mix() public API and MixOperator for weighted dataset mixing (#63168, #62450)ParquetDatasourceV2, chunked reader, predicate splitting, listing/scanner infra (#63113, #63454, #63163, #62975, #63027, #62182)batch_size='auto' to map_batches to derive batch row count from target row batch size (#62648)include_row_hash to read_parquet (#61408)isolate_read_workers (#63490)default_map_logical_memory_enabled (#63814)start_offset and end_offset for read_kafka (#61620)iter_batches spilling by replacing make_async_gen with iter_threaded and reducing buffered batches (#63660, #63682)restore_original_order in iter_batches behind preserve_order (#63792)drop_columns to a Project logical operator when input schema is known (#63813)ConcatAggregation and TurbopufferDatasink use polars for sorting (#61904)hash_partition with sort_indices, zero-copy slices, and pandas (#63498, #62757, #63152, #62587)GPU_SHUFFLE in grouped_data.py (#62410)StarExpr expansion, schema inference for non-black-box UDFs, and Expressions struct support (#63776, #63387, #62560)RAY_DATA_LOG_LEVEL and log RAY_DATA env vars at execution start (#63487, #63380)compute= in filter(expr=...) and deprecate concurrency= (#63576)StreamingRepartition and read stage column-rename removal (#62347, #63384, #63582)BlockMetadataWithSchema (#63462)TaskDurationStats and Timer with DistributionTracker (#63488, #63530, #63825)BlockEntry on RefBundle in place of (ref, metadata) tuples (#63654)DataIterator exit (#62456, #62949)pandas, modin, and pyarrow minimum versions (#62899)ActorPool (#61987, #61528)ConcurrencyCapBackpressurePolicy, DataIterator.to_torch, and pandas UDF batches (#63392, #62540, #61733).options (#62309, #62722)read_delta reads from preconfigured pyarrow dataset (#61721)ArrowConversionError; reduce arrow conversion warning verbosity (#62407, #61486, #62521)DataSourceV2 by default after earlier enabling (#63674, #63326)__subcluster__ to ray-subcluster (#63982)get_or_create_stats_actor crash in Ray Client mode (#63402)UDFExpr filter predicates (#63781)CheckpointConfig FileNotFoundError on Azure Blob Storage (#63606)_concatenate_extension_column (#62939)HashAggregate duplicate group rows for AggregateFnV2 (#63066)read_parquet ArrowNotImplementedError for nested column types exceeding ~2GB row group (#61824)read_parquet nested-type fallback and parquet scanner memory accumulation (#63175, #62745)DataIterator.to_torch() by switching to PyArrow (#60966)ZipOperator freeing shared blocks via _split_at_indices (#62665)write_parquet (#62377)ShuffleStrategy.GPU_SHUFFLE (#62351)DatasetStat uuid propagation (#62255)DATA_ENABLE_OP_RESOURCE_RESERVATION=False (#61718)PyFileSystem (#61850)try_create_dir to pyarrow.dataset.write_dataset (#58302)nan_is_null/nans-as-nulls semantics in encoder (#62623, #62618)find_partition_index (#62594)_split_predicate_by_columns correctness fix (#63176)_is_cudf_dataframe when cudf not loaded (#62302)tfx-bsl support from read_tfrecords (#63245)isolate_read_workers for read_parquet (#63816)build_processor and "auto" batch size (#61757, #62790)DefaultClusterAutoscalerV2 and stale object-store-memory warnings (#62385, #62387)choose_replica/dispatch on deployment handles and AsyncioRouter with replica-side slot reservation (#63255, #63254, #63252)ConsistentHashRouter for session-sticky routing (#63238, #62906, #63096, #62905)CapacityQueueRouter (#62323)ray-haproxy support behind RAY_SERVE_EXPERIMENTAL_PIP_HAPROXY (#62589)ControllerOptions for configurable controller runtime_env (#63352)0.0.0.0 for cross-node HAProxy routing (#62515)TCP_NODELAY default 1, optional retry knobs, RAY_SERVE_HAPROXY_STATS_PORT (#63356, #63531, #63353, #63415, #62979)RAY_SERVE_HAPROXY_BINARY_PATH; HAProxy abspath env var (#63829, #62610)/api/serve/applications/ API; add max_replicas_per_node to response (#63556, #63234)DeploymentStateManager APIs for controller access (#62950)DEPLOYMENT_TARGETS broadcast while replicas are RECOVERING (#62751)LongPollHost state on deployment delete; enable logs when client stops its event loop (#62820, #63028)serve_autoscaling_target_ongoing_requests (#62381, #62355, #62421)serve_long_poll_latency_ms (#62868)build_serve_application task on failure (#62987)DeploymentMode (#63548, #63510)move_to_end() (#62548)AttributeError when request_router is None in update_deployment_config (#63180)UnboundLocalError in ActorReplicaWrapper.check_stopped() (#63339)_global_client cache across driver sessions (#62368)start_metrics_pusher crash when deployment has record_autoscaling_stats but no autoscaling config (#62123)ingress_request_router.lua.tmpl in package_data (#63145)root_path parameter across uvicorn versions (#62529)LoggingConfig for configuring the ray.train logger on controller and workers (#61550)DataParallelTrainer's train_fn to return data (#62021)ray.train.report(checkpoint) (#62027)create_or_update_train_run completes on Train initialization (#63432)DatasetManager (#63309)label_selector to AutoscalingCoordinator (#63287)contextlib.redirect_stdout() to bypass print redirect to logs (#61075)ray.train.report (#62916)ray.train.report does not hang across replica group restarts; Ray Train manages replica group restarts (#62651, #61475)RayTaskError during BackendSetupCallback shutdown (#63143)JaxTrainer TPU multi-slice fault tolerance and reservation ergonomics (#62893)PlacementGroupCleaner race condition: drain queue before cleanup on controller death (#62754)delete_local_checkpoint_after_upload=True (#62555)timeout_s to ray.train.get_all_reported_checkpoints (#61761)pytorch_lightning imports (#61291)Predictor from Train v1 (#63461)DataBatchType Union type (#63872)exclude_resources regression for V1 Train + V2 cluster autoscaler (#62827)%s to logger.debug (#63039)get_actor timeout (#62516)Result.from_path in docs (#62887)AxSearch for Ax Platform 1.0.0+ (#60522)inspect for argument capture (#60049)topology field to LLMConfig for multi-host TPU support (#61906)TPUAccelerator (#63177)RAY_SERVE_SESSION_ID_HEADER_KEY (#63362)vLLM to 0.22.0 (#63730, #63396, #62970, #62349)AsyncioRouter for LLM ingress (#63517)choose_replica; don't fetch LLMConfig from replicas at startup (#63280, #63065)max_tasks_in_flight_per_actor to a first-class config field and adjust defaults (#63214)accelerator_type against CPU-only configs; replace GPUType alias with AcceleratorType (#62139, #62978)_internal (#62570)guided_decoding, truncate_prompt_tokens, build_llm_processor (#63569)ImportError when vLLM is installed but fails to import (#63305)max_pending_requests default to track vLLM's GPU-dependent max_num_seqs (#62918)rope_scaling (#62464)LLMRouter constructor (#63206)content in sanitizer (#63119)lora_request not forwarded to vLLM engine + add regression tests (#62609)SGLangEngineProcessor telemetry for trust_remote_code models (#62102)TOKENIZER_ONLY downloads missing chat_template for S3-backed models (#62121)add_generation_prompt (#61688)benchmark_vllm CLI builder (#63516)vLLM compatibility (#63593)VLLM_USE_V1 from docs and examples (#63001)max_tasks_in_flight_per_actor (#62917)custom_resources_per_learner config and custom_resources_for_main_process to AlgorithmConfig (#63303, #62475)APPO metrics to the torch learner (#63675)IMPALA/APPO learner thread gracefully to avoid misleading error messages (#62763)PPO's value target calculation (#59958)EnvRunner crash loops (#62884)ValueError in MultiAgentEpisode.get_rewards() when an agent is inactive for all requested env steps (#62907)_update_env_seed_if_necessary (#61823)EMAStat (#63064)register_collective_backend API for custom collective backends (#60701)noDriverTimeoutSeconds for KubeRay cluster termination (#63465)ObjectRefs in ray.get (#61773), retry support (#62842), and NIXL memory deregistration via deregister_nixl_memory (#62341).tar.gz archives for remote working_dir URIs (#62813)NodeAffinitySchedulingStrategy with Label Selector API when soft=False (#54940)SlicePlacementGroup lifecycle and support explicit bundle_label_selector for TPUs (#63171); add TPU head resource for Ironwood TPU (#62786), chips_per_vm arg (#62526), and v6e single-host fixes (#62306)ClockInterface with a fake clock for testing (#62562, #62502, #62476)IOContextMonitor; run GCS health check on io_service (#63042, #63166, #62608, #62374)request_resources (#63306)inspect_serializability messages and traversal context (#63501, #63373, #63258); better worker startup error messages (#63714)runtime_env package approaches upload size limit (#63404); harden zip extraction path containment (#63786, #62813)OwnerDiedError (#63727); add dependency info to taskspec debug string (#62316)ray CLI help (#62748)InternalPubSub* to ControlPlanePubSub* (#62806, #63044, #62461)rocm-smi ctypes binding with amd-smi Python interface (#62393); detect NVIDIA Blackwell consumer GPUs (#63322)ACTOR_UNAVAILABLE retries (#62330); improve State API filter key handling (#63638)setproctitle to skip launch services IPC calls (#63366); add timeout for first redis probe (#63148)ray up output (#63409); pass logging_config through Ray Client ray.init (#62192)DAGNode.execute() (#63716); remove experimental _owner support for ray.put (#63520)ray.get hanging forever when an object's owner dies during pull (#63694); resolve ReferenceCounter race on WORKER_REF_REMOVED_CHANNEL (#60495)runtime_env cache not detecting changes in -r-referenced requirements files (#63403)PrepareResources/CommitResources (#62836)ray job submit CLI via shlex.join (#63797) and --working-dir for local zip files and http:// URLs (#62843)ray stop failing to terminate dashboard/runtime_env agents on Windows (#62428)ray down not stopping Docker containers on worker nodes for local clusters (#62169); fix delayed/missing worker logs in Jupyter by flushing stdout/stderr (#63599)os.getcwd() on import by lazily evaluating scratch_dir (#63040)FabricManager stall on NVLink systems in GpuProfilingManager (#63312)OpenTelemetryMetricRecorder singleton init guard (#63081)MarkFootprintAsBusy clearing saved idle state for unrelated items (#62588); fix HandleIsLocalWorkerDead for drivers (#62688)AttributeError on trace in client mode (#62955); fix IndexError in legacy post-mortem debugging (#61479)JobConfig code_search_path type (#62499)uv existence check in UVProcessor (#62818); fix invalid default stats factory in ClusterStatus (#62934)instance_type_name in autoscaling state (#62101) and stopped-node metric double counting (#62026)ReadOnlyProviderConfigReader max_workers counting bug (#62819); fix circular import in ray_print_logs thread (#63410)return in finally block (Python 3.14 SyntaxWarning) (#63742); fix typos and replace type() checks with isinstance() (#62154)drain_node APIs (#62942); update outdated description for max_direct_call_object_size (#63164)py-spy --idle and --subprocesses flags to profiling endpoints (#63852)Grafana cluster filter to Serve metrics URLs (#63211)Name column to Jobs view from job_name metadata (#62257)get_entrypoint_name() to prevent password exposure (#61995)num_cpus in k8s_utils.cpu_percent (#63729)PromQL when global_filters is empty in Grafana dashboard generation (#63687)pyproject.toml (#62569).torchft image for Torch trainer tests (#63361) and ran apt-get upgrade for slim base images (#62666).doc/redirects/current.yaml as the redirects source of truth with legacy-version 404 redirect coverage (#63367, #63880).ipython3 lexer hook for notebook shell/magic cells (#63227, #63515)./llms.txt and /llms-full.txt generation, excluding Jupyter notebooks (#63130, #63228).pydata-sphinx-theme 0.17.1, myst-nb 1.4.0, added sphinxext-opengraph, unpinned yanked tf-keras (#63344, #63360, #63343, #63358)..rst files under doc/source/ and added CI to skip RTD builds for PRs that don't touch docs (#63057, #63431).sample_from examples to config-dict style and documented time_attr scheduler values (#63804, #32467).hiddens as dueling-only, removed a broken parametric-actions link, fixed broken doc links (#43051, #54671, #47146).map_batches shuffle section, streaming generator docs, and fixed a broken README link (#62576, #63791, #63412).iter_jax_batches for JaxTrainer and updated TPU scaling config docs (#63294, #62584).AutoscalingConfig replica/target fields and corrected max_calls default docs (#48601, #63894).This is the last Ray release to support the dependency versions listed below. For the 2.57.0 release, Ray will raise its minimum required versions for several core dependencies. If your environment pins any of these packages below the new minimums, plan to upgrade before moving to the next Ray release.
| Dependency | Last supported in this release | New minimum (next release) |
|---|---|---|
| numpy | < 2.1 |
>= 2.1 |
| protobuf | < 5.26 |
>= 5.26 |
| pandas | < 2.2.3 |
>= 2.2.3 |
| pyarrow | < 18.0.0 |
>= 18.0.0 |
| pydantic | < 2.9 |
>= 2.9 |
| grpcio | < 1.66 |
>= 1.66 |
| scipy | (previously unpinned) | >= 1.14.1 |
Most users on recent releases of these packages are unaffected
Many thanks to all those who contributed to this release!
@khluu, @Krishnachaitanyakc, @leewyang, @ssam18, @christian-pinto, @Hyunoh-Yeo, @hango880623, @yuanzhuoyang1-bit, @marwan116, @aaronscalene, @tianyi-ge, @TriNguyen1208, @andrewsykim, @leonaIee, @OneSizeFitsQuorum, @AksodFlare, @limarkdcunha, @dayshah, @jade710, @pedrojeronim0, @dev-miro26, @DonPalius, @TimothySeah, @abrarsheikh, @nathon-lee, @prince8273, @Bye-legumes, @rayhhome, @Yunnglin, @spencer-p, @ryanaoleary, @herin049, @stephanie-wang, @liulehui, @slxswaa1993, @psaikaushik, @cyhapun, @tdat1465, @akyang-anyscale, @chenshi5012, @zzchun, @ryankert01, @EagleLo, @mzjp2, @justinvyu, @petern48, @YuangGao, @sjp611, @wingkitlee0, @AndySung320, @dstrodtman, @Accurio, @JasonLi1909, @peterjc123, @eicherseiji, @kyuds, @Chong-Li, @joaquinhuigomez, @IrvinFan, @XuQianJin-Stars, @AJamesPhillips, @harshit-anyscale, @claytonlin1110, @nhquana2, @Rruop, @win5923, @raulchen, @rohankmr414, @andrew-anyscale, @YoyinZyc, @doanxem99, @liujp, @dancingactor, @Evelynn-V, @SohamRajpure, @dragongu, @ShockYoungCHN, @ljstrnadiii, @WFY123wfy, @axreldable, @pseudo-rnd-thoughts, @H4ck2, @mvcb, @xinyuangui2, @edoakes, @ankushbbbr, @ps2181, @dominikkawka, @vinhuytran0810-cell, @siyuanfoundation, @MengjinYan, @Chronostasys, @jeffreywang88, @lalitc375, @sampan-s-nayak, @ArturNiederfahrenhorst, @srini047, @ChangyuWang, @adam360x, @Yicheng-Lu-llll, @thakoreh, @Aydin-ab, @manhld0206, @oab24413gmai, @ayushk7102, @tycao0338-cpu, @slfan1989, @myandpr, @rueian, @ans9868, @Ziy1-Tan, @elliot-barn, @as-jding, @daiping8, @robertnishihara, @MatthewCWeston, @Cursx, @laysfire, @karticam, @Mr-Neutr0n, @jjyao, @zent1n0, @aslonnie, @DenBuzz, @michael-pryor, @goanpeca, @nadongjun, @ronny-anyscale, @GoparapukethaN, @werkt, @carolynwang, @kamil-kaczmarek, @madiyar-wayve, @peterxcli, @pqkzzz, @Future-Outlier, @iamjustinhsu, @micah-yong-ai, @wxwmd, @owenowenisme, @sai-miduthuri, @lonexreb, @prassanna-ravishankar, @wanadzhar913, @kouroshHakha, @tobby168, @johntaylor-cell, @richabanker, @Kunchd, @vincere-mori, @vaishdho1, @wenhaozhao011-cmd, @bveeramani, @bittoby, @Phucvt123, @aschuh-hf, @RudrenduPaul, @xyuzh, @Sparks0219, @yancanmao, @eureka0928, @yuhuan130, @goutamvenkat-anyscale, @Zerui18, @machichima, @Lucas61000, @weimingdiit, @xi377266, @EmaFerrao, @awen11123, @Lawson-Darrow, @suppagoddo
One column per quarter.
Fixes SSH connectivity issue in the ray-llm image (#62625 / #62718).
ray-llm image (#62625 / #62718).Remove deprecated Logger interface and logger_creator
DataSourceV2 API with scanner/reader framework, file listing, and file partitioning (#61220, #61615, #61997)rapidsmpf 26.2 (#61371, #62062)confluent-kafka, support datetime offsets (#60307, #61284, #60909)random(), uuid(), cast, and map namespace support (#59656, #60695, #59879)pathlib.Path support to read_* functions (#61126)cudf as a batch_format (#61329)ActorPoolStrategy for read_datasource() via compute parameter (#59633)ExecutionCache for streamlined caching (#60996)strict=False mode for StreamingRepartition (#60295)_map_task args, heap-based actor ranking, actor pool map improvements (#61996, #62114, #61591)DownstreamCapacityBackpressurePolicy threshold to 50% (#61890)get_parquet_dataset configurable in number of fragments to scan (#61670)SerializablePreprocessorBase (#61213, #61341)DataContext in JSON format at execution start for traceability (#61150, #61428)BlockList, locality_with_output, old callback API, PyArrow 9.0 checks (#60575, #61044, #62055, #61483)pyiceberg 0.11.0; cap pandas to <3 (#61062, #60406)local:// paths with a zero-resource head node (#60709)StreamingSplitDataIterator.schema() (#62057)ParquetDatasource handling of FileSystemFactory.inspect (#62065)read_parquet file-extension filtering for versioned object-store URIs (#61376)wide_schema_pipeline_tensors cloudpickle deserialization (#62149)OpBufferQueue race condition (#60828)OneHotEncoder max_categories to use global top-k instead of per-partition (#60790)ReservationOpResourceAllocator resource borrowing for ActorPoolMapOperator (#60882)DatabricksUCDatasource schema() shadowing by schema string attribute (#61282)AliasExpr structural equality to respect rename flag (#60711)_align_struct_fields failure with unaligned scalar fields (#58364)min_scheduling_resources fallback to incremental_resource_usage (#60997)ref_bundle + input_files (#61774)on_exit hook with __ray_shutdown__ to fix UDF cleanup race (#61700)Limit from getting pushed past map_groups (#60881)_shuffle_block to fix ColumnNotFound in chained left joins (#61507)TimeWindowAverageCalculator (#61580)end_offset in Kafka datasource (#61476)train_test_split (#60274)None when no outputs have been produced (#62029)raise with TypeError in string concatenation (#60795)exclude_resources docs for Train autoscaling changes (#61990)locality_with_output migration instructions (#61151)max_tasks_in_flight_per_actor vs max_concurrent_batches (#60477)MOD operation docs; improve ray.data.Datasource docs (#60803, #59654)polars usage instructions (#60029)policy_kwargs, so advanced users can package reusable autoscaling logic without custom forks. (#60964)AsyncInferenceAutoscalingPolicy documentation and clarified Serve performance guidance for HAProxy and inter-deployment gRPC use cases. (#61086, #61386)status attribute to ReportedCheckpoint (#61684)torchft environment (#61156)AutoscalingCoordinator in FixedScalingPolicy (#61703)datasets field from TrainRunContext (#61953)checkpoint_upload_fn when slow (#61720)StateManagerCallback to accept datasets explicitly (#62042)before_controller_shutdown (#61816)RayActorError (#61375)sync_actor to use wait_with_logging (#61063)UserExceptionWithTraceback in WorkerGroupError.worker_failures (#61153)PlacementGroupCleaner zombie actor (#61756)Logger interface and logger_creator (#61181)NaN values are present (#57160)PDProxyServer with decode-as-orchestrator PD architecture (#62076)bundle_per_worker config for simpler placement group setup (#59903)PlacementGroup config schemes (#62241)num_cpus=0 to reduce contention on low-CPU machines (#61191)format_messages_to_prompt with _build_chat_messages (#61117, #61372)data: [DONE] in streaming SSE responses (#62246)enable_log_requests=False not forwarded to vLLM AsyncLLM (#60824)OpenAiIngress scale-to-zero when all models set min_replicas=0 (#60836)init_app_state (#60812)trust_remote_code download (#60344)TRANSFORMERS_CACHE; treat HuggingFace config load failure as non-fatal (#60854)TorchRLModule forward passes (#61985)AlgorithmConfig (#61233)eval_results, env_steps, or agent_steps (#61563)PrioritizedEpisodeReplayBuffer bug (#60065)LayerNorm in RLModuleSpec (#61025)MultiAgentEpisode.env_t_to_agent_t (#60319)torch_learner.py crash under parameter-freezing edge cases (#62158)ResizeRayletResourceInstances to GCS/Python client, schema/status models, KubeRay provider (#61654, #61666, #61803, #61814)PlatformEvent proto and placement group events in one-event framework (#61701, #60449)Percentile metric type backed by quadratic histogram (#61148)fallback_strategy in TaskInfoEntry and ActorTableData (#60659)ray.put() generic: put(value: R) -> ObjectRef[R] (#60995)cloudpickle to 3.1.2, gRPC to v1.58.0, protobuf to 3.20.3 (#60317, #61499, #60736)pg.ready() performance via async GCS RPC; fix deadlocks (#60657, #62086)ActorHandle.__hash__ and fix __eq__ correctness (#61638)find_gcs_addresses (#61065)get_all_node_info (#61232)getName/setDaemon) (#62153)@ray.remote/@ray.method with num_returns (#59286)StopIteration on non-generator functions to RuntimeError (#60521)AuthenticationValidator in sync server (#60778, #60779)local_mode (#60647)worker_process_setup_hook on re-entry (#61473)memory_info instead of calling memory_full_info (#60000)NodeManager and InternalKVManager (#61002)HandleUnregisterNode/HandleDrainNode (#62226, #62112)bool env var parsing for RAY_CGRAPH_overlap_gpu_communication (#61421)OnNodeDead to destroy all owned actors when owner node dies (#60669)TASK_PROFILE_EVENT aggregation for multiple phases (#61559)WorkerPool::WarnAboutSize() (#61246)TaskLifecycleEvent.node_id using emitting node instead of executor (#61478)publisher_id type mismatch in GCS pubsub (#61518)dataclass.asdict with None in dashboard list_jobs API (#61033)ReadOnlyProvider.terminate() signature mismatch (#62251)set/get env races in OtlpGrpcMetricExporterOptions and metrics exporter init (#61034, #61281)ray start (#61837)ray.init() (#61029)Node._node_labels initializes regardless of connect_only (#61618)WrongClusterID on head restart (#60860)**kwargs through JobSubmissionClient to cluster info resolvers (#61902)torch to 2.7.0+cu128 and torchvision (#61328)jackson-databind 2.16.1 -> 2.18.6 (GHSA-72hv-8253-57qq) (#61808)build-image.sh and CLI for local Docker image builder (#61042, #61338)setup-dev.py (#61357)RAY_BACKEND_LOG_JSON environment variable documentation (#59962)RayCluster name as ServiceAccount name for RBAC authentication (#61785)RayCluster (#61719)development.rst with image build, wheel paths, and cross-references (#61500, #61501, #61504, #61596)Many thanks to all those who contributed to this release!
@justinyeh1995, @marwan116, @jddqd, @MkDev11, @mjd3, @XuQianJin-Stars, @elliot-barn, @DeborahOlaboye, @aaronscalene, @rayhhome, @ayushk7102, @bj-son, @nadongjun, @Daraan, @xinyuangui2, @Sparks0219, @justinvyu, @suppagoddo, @akyang-anyscale, @ambicuity, @Aydin-ab, @mickeyyliu, @MatthewCWeston, @vaishdho1, @jinbum-kim, @eicherseiji, @kouroshHakha, @karticam, @JasonLi1909, @ArturNiederfahrenhorst, @moktamd, @nrghosh, @dragongu, @andrewsykim, @mgchoi239, @ruoliu2, @harshit-anyscale, @Chong-Li, @pseudo-rnd-thoughts, @lee1258561, @khluu, @daiping8, @SolitaryThinker, @jonalee99, @yancanmao, @SohamRajpure, @rueian, @VitaliyEroshin, @Future-Outlier, @nehiljain, @JiangJiaWei1103, @Yicheng-Lu-llll, @KaisennHu, @jeffreywang-anyscale, @aslonnie, @alanwguo, @machichima, @limarkdcunha, @codope, @sampan-s-nayak, @kyuds, @thjung123, @abrarsheikh, @wingkitlee0, @preneond, @7ckingBest, @slfan1989, @win5923, @kaori-seasons, @israbbani, @andrew-anyscale, @zestze, @owenowenisme, @edoakes, @laysfire, @pushpavanthar, @tohtana, @leewyang, @liulehui, @Hyunoh-Yeo, @eureka0928, @ryanaoleary, @947132885, @Kunchd, @simonsays1980, @dpj135, @bveeramani, @raulchen, @Partth101, @dubin555, @richabanker, @bittoby, @sai-miduthuri, @RedGrey1993, @kamil-kaczmarek, @TimothySeah, @myandpr, @rishic3, @justinrmiller, @HassamSheikh, @chiayi, @petern48, @carolynwang, @MrKWatkins, @400Ping, @summaryzb, @peterxcli, @RocMarshal, @coqian, @yuhuan130, @ryankert01, @dayshah, @Anarion-zuo, @ZacAttack, @weimingdiit, @iamjustinhsu, @matthewdeng, @goutamvenkat-anyscale, @KeeProMise, @Sanskarzz, @yuchen-ecnu, @praneethkaturi, @rajeshg007, @ankur-anyscale, @Art0white, @xyuzh, @dancingactor, @MengjinYan, @dengkliu92, @alexeykudinkin
DataSourceV2 API with scanner/reader framework, file listing, and file partitioning (#61220, #61615, #61997)rapidsmpf 26.2 (#61371, #62062)confluent-kafka, support datetime offsets (#60307, #61284, #60909)random(), uuid(), cast, and map namespace support (#59656, #60695, #59879)pathlib.Path support to read_* functions (#61126)cudf as a batch_format (#61329)ActorPoolStrategy for read_datasource() via compute parameter (#59633)ExecutionCache for streamlined caching (#60996)strict=False mode for StreamingRepartition (#60295)_map_task args, heap-based actor ranking, actor pool map improvements (#61996, #62114, #61591)DownstreamCapacityBackpressurePolicy threshold to 50% (#61890)get_parquet_dataset configurable in number of fragments to scan (#61670)SerializablePreprocessorBase (#61213, #61341)DataContext in JSON format at execution start for traceability (#61150, #61428)BlockList, locality_with_output, old callback API, PyArrow 9.0 checks (#60575, #61044, #62055, #61483)pyiceberg 0.11.0; cap pandas to <3 (#61062, #60406)local:// paths with a zero-resource head node (#60709)StreamingSplitDataIterator.schema() (#62057)ParquetDatasource handling of FileSystemFactory.inspect (#62065)read_parquet file-extension filtering for versioned object-store URIs (#61376)wide_schema_pipeline_tensors cloudpickle deserialization (#62149)OpBufferQueue race condition (#60828)OneHotEncoder max_categories to use global top-k instead of per-partition (#60790)ReservationOpResourceAllocator resource borrowing for ActorPoolMapOperator (#60882)DatabricksUCDatasource schema() shadowing by schema string attribute (#61282)AliasExpr structural equality to respect rename flag (#60711)_align_struct_fields failure with unaligned scalar fields (#58364)min_scheduling_resources fallback to incremental_resource_usage (#60997)ref_bundle + input_files (#61774)on_exit hook with __ray_shutdown__ to fix UDF cleanup race (#61700)Limit from getting pushed past map_groups (#60881)_shuffle_block to fix ColumnNotFound in chained left joins (#61507)TimeWindowAverageCalculator (#61580)end_offset in Kafka datasource (#61476)train_test_split (#60274)None when no outputs have been produced (#62029)raise with TypeError in string concatenation (#60795)exclude_resources docs for Train autoscaling changes (#61990)locality_with_output migration instructions (#61151)max_tasks_in_flight_per_actor vs max_concurrent_batches (#60477)MOD operation docs; improve ray.data.Datasource docs (#60803, #59654)polars usage instructions (#60029)policy_kwargs, so advanced users can package reusable autoscaling logic without custom forks. (#60964)AsyncInferenceAutoscalingPolicy documentation and clarified Serve performance guidance for HAProxy and inter-deployment gRPC use cases. (#61086, #61386)status attribute to ReportedCheckpoint (#61684)torchft environment (#61156)AutoscalingCoordinator in FixedScalingPolicy (#61703)datasets field from TrainRunContext (Note truncated.
Disable hanging issue detection (#61895) — The hanging issue detector was making blocking calls to the Ray State API, which could cause the scheduling
🔨 Fixes
Your coding agent can read these notes before it upgrades. Set up the MCP server →