NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1008 most downloaded on PyPI
Ray provides a simple, universal API for building distributed applications.
Last release 2 days ago
02 Oct 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
133 releases · first in 2017
Deprecations: ray_remote_args for read APIs ( #65501 ) and for Dataset transformations ( #65228 ); min_rows_per_file with partitioned Parquet writes
Highlights
🎉 New Features:
BackpressureConfig lets you return 429 instead of 503 when a request is rejected for exceeding max_queued_requests, and optionally attach a Retry-After header. This separates deliberate load shedding from "the deployment is broken" for load balancers, retry policies, and availability SLOs, and brings the HTTP path to parity with gRPC's RESOURCE_EXHAUSTED. Defaults are unchanged (#65193).TracingConfig model (enabled, exporter_import_path, sampling_ratio) can be passed to serve.start(tracing_config=...) or set in a Serve config file, replacing environment-variable-only setup and wiring tracing through the proxy and replica paths. Setup errors now fail fast instead of being silently swallowed (#63273).min_replicas=0; the autoscaler preserves the final 1 → 0 transition instead of rounding it back up to a full gang (#65575).💫 Enhancements:
jinja2 is now imported lazily and declared in the serve extra, so it is no longer pulled in on every Serve import (#65542, #65988).deploy_mode / ServeDeployMode, use_new_handle_api on DeploymentHandle.options, and the RAY_AGENT_ADDRESS deprecation path are gone, and a # in a deployment name is now a hard ValueError since it is the replica ID delimiter (#65215).ray.serve.request_router now declares __all__, making the custom-router extension API visible to the API consistency checks (#65485).🔨 Fixes:
ActorUnschedulableError and killed the controller loop; the handle is now cleaned up gracefully. This showed up with GCS fault tolerance backed by Redis, where the new cluster restores proxy actors pinned to pre-upgrade node IDs (#65076).📖 Documentation:
# restriction on deployment names and why it exists, so the new ValueError has something to point at (#65489).llms.txt, high-traffic landing pages and card grids converted from RST to MyST, explicit image versions in place of floating latest tags, and the "Ray Pod" term retired from the Kubernetes docs (#65115, #65467, #65472, #65339, #65423).🏗 Architecture refactoring:
controller, deployment_state, replica, application_state), the proxy and data-plane modules (proxy, proxy_state, haproxy), and the scheduling and routing modules (deployment_scheduler, router, request_router). Beyond annotations, this tightened several honest-return-type and ReplicaID-vs-str key confusions in state-machine code where type confusion becomes persistent state corruption (#64753, #65332, #65410).Many thanks to all those who contributed to this release!
@mikemikimike, @ShockYoungCHN, @elliot-barn, @aaronlinear, @spencer-p, @nadongjun, @marwan116, @Kunchd, @avigyabb, @suppagoddo, @harshit-anyscale, @n3sfan, @Smallfu666, @bveeramani, @pjdurden, @Jenson97, @gangli113, @ronny-anyscale, @wufeiye, @preneond, @ankushbbbr, @yuhuan130, @ixsanpe, @dossett, @rayhhome, @ArturNiederfahrenhorst, @robertnishihara, @CrossManger, @hogeheer499-commits, @iamjustinhsu,
Note truncated.
One column per quarter.
Upgrade bundled dependencies: log4j 2.25.4, jackson-databind 2.18.8 ( CVE-2026-54512 , CVE-2026-54513 ), gson 2.11.0, aiohttp, idna, and azure ( #6426…
LLMRouter ingress replica, the routing decision is made there, tokens are transmitted out-of-band so the engine does not re-tokenize, KV lifecycle events are broadcast to every ingress replica (#64642, #64920, #64949, #65010, #65095). KV cache and token aware routing is also aware of CPU KV caches, so offloaded KV cache blocks count toward a replica's cache hit (#65063).RAY_enable_task_events_to_dashboard_head on, the task event buffer is replaced by the ray event recorder, events are exported from the aggregator agent to a task events head that keeps an in-memory store, and the state APIs and ray.timeline read from it (#64835, #65028, #65123, #65160, #65218). Enabling the feature removes task event ingestion and serving from the GCS hot path.SubslicePlacementGroup for gang scheduling on TPU subslices, single-host TPU support in SlicePlacementGroup, and resource accounting for tpu7x and multi-core chips (#64578, #64079, #64058). This lets TPU slices and subslices be reserved and trained on without external gang-scheduling glue.Dataset.with_columns for multi-column expression projection (#63858)write_delta for Delta Lake, with catalog support (#64923, #65079)ignore_missing_paths and skip_paths to read_parquet on DatasourceV2 (#65118)delta_timestamps (temporal windows) to read_lerobot (#64877)DataContext.max_consecutive_actor_init_deaths (#64846)RAY_DATA_HASH_SHUFFLE_MAP_TASK_TARGET_INPUT_BYTES in DataContext (#65103)Limit into ReadFiles when it sits directly on it, and extract FileIndexer.list_file_infos (#65167, #65168)BlockRefCounter for object store memory estimation and remove BlockRefCounter.clear() (#64456, #64521)BatchIterator and iter_torch_batches, and allow a custom collate_fn with a custom device (#64994, #64967)sort_reduce memory multiplier to 3x and stop using estimated_input_blocks as the shuffle partition count (#65176, #65296, #65335)PlacementGroupSchedulingStrategy is in use (#64417)reports_custom_op_stats to should_report_custom_op_stats across all MapTransformFn variants (#64461, #64515)allocated to reserved and add type aliases in the autoscaling coordinator (#64997, #65096)ray_remote_args_fn and Dataset.zip (#64963, #65111)read_lance or nested pickle objects could execute arbitrary code (#64881)null[pyarrow] in to_pandas (#65187)iter_torch_batches device resolution and typing (#65059, #64947)isolate_read_workers to DatasourceV2 (#65191)tf-keras to the text_embedding pip packages (#64889)use_datasource_v2 docstring default and an incorrect default_map_logical_memory_enabled reference (#65155, #65091)Retry-After header for backpressure rejections (#65193, #65319)RUNNING replicas round-robin instead of every tick (#64690)CreatePlacementGroupRequest.runtime_env as a dict (#64892)ASGIService bypassing token authentication (#65189)PreemptingState (#64360)contains_tensor check and add a serialization check for the results return value (#64930)PlacementGroupCleaner to the head node (#64705)HyperOptSearch dropping tune.choice categories that are constant dicts (#64537)test_multi_trial_reuse_with_failing and decide test_experiment_restore completion from measured progress (#64526, #65212)LLMRouter ingress replica, decide KV/token routing there, broadcast KV lifecycle events to all ingress replicas, and make selection and reservation atomic (#64642, #64920, #64949, #65010)apply_checkpoint_info (#62962)az:// Blob streaming with RunAI Streamer (#64819, #64825)target_qf_twin head in IQL target prediction (#64932)use_kl_loss in the PPO Torch and TF policies (#61562)KeyError in the multi-agent module-to-env connector (#64803)test_env_runner callback-count tests (#64807, #64989)ray.timeline are rerouted to it, with reconciliation on worker death and job completion (#64835, #65028, #65057, #65123, #65141, #65160, #65218, #65247, #65288)SubslicePlacementGroup for gang scheduling on TPU subslices, support single-host TPUs in SlicePlacementGroup, and add a per_slice_pgs parameter (#64578, #64079, #64072)mps) support and an Intel GPU ZE_AFFINITY_MASK mapping (#38464, #64440)tpu7x and multi-core chips, add gb200/gb300 accelerator constants, and add TTNPU custom accelerator resources (#64058, #65009, #61554)RedisContext::Connect non-fatal on connection failure (#64299)io_context (#65024)ActorPool instead of recycling them (#64646)label_domain to topology strategy in the scheduling policy (#64384)StateSchema column order in filter_fields (#65052)StreamResponse on an empty log stream (#62296)ObjectRefStreamEndOfStreamError from _get_next_ref_n (#64602)FunctionDescriptor rebuild in CallSiteString (#64874)canceled_tasks_ its own mutex to break a lock-order cycle (#65393, #65620)collect() in OpenTelemetryMetricRecorder (#64946)check_signals instead of exiting the process (#65184, #65400)OwnerDiedError during graceful raylet shutdown (#64899)ray.get on refs from a non-restartable streaming generator when those objects are lost (#64756)Push hits a stale local_objects_ mirror (#64916)spill_manager_objects_bytes reporting the restored object count instead of restored bytes (#65013)RDTManager that could SIGSEGV (#64558)Status::operator<< against an OK status, and fix UB in StatusOr swap and assignment on error-state operands (#64983, #64799)ResourceRequest fields in operator== (#64838)kubernetes import (#64962)ray-torch release test image (py3.14, cu12.8) and a hello_world_py314 smoke release test (#65114, #64857)pybase64 into the ML release-test image (#64980, Note truncated.
Add ray-haproxy to the ray[serve] extra and base requirements, and bump it to 2.8.25 for CVE-2026-55203/55204 (#64141, #64430).
DataSourceV2 by default (#64821), so read_parquet and friends use the new scan/listing infrastructure with row-group-aware chunking and predicate splitting. Hash Shuffle V2 eliminates the aggregator actor pool. V1 had to provision that pool up front from an estimate of the input size, and its actors accumulated partition shards in actor heap memory, invisible to Ray and unspillable, until finalization. V2 replaces it with two stateless task-based operators, ShuffleMapOp --> ShuffleReduceOp, that pass shards through the object store, so intermediate state spills under pressure and no capacity has to be reserved in advance. The map/reduce barrier itself remains in both designs.join (#63598, #64538, #64687). This lets shuffles reuse standard map/reduce scheduling, backpressure, and resource accounting.ray-haproxy PyPI package instead of being compiled into images, and it is the default HAProxy binary (#64141, #64163, #64164). We've also added gRPC support to the HAProxy direct-ingress path, including streaming, metrics, and custom request IDs (#63735, #64310, #64166, #64112). For Ray Serve LLM, we've added experimental KV-cache-aware request routing that tracks replica KV state through an event plane, tokenizes before routing, and routes on prefill/decode token load (#64084, #64085, #64097, #64224, #64327, #64400). KV cache-aware routing’s complete support will land in 2.58.RAY_gcs_storage=rocksdb and RAY_gcs_storage_path (#63657). GCS fault tolerance no longer requires an external Redis instance. We've also added a public API for topology-aware scheduling (#63479, #63740).DataSourceV2 by default via DataContext.use_datasource_v2 (#64821)ShuffleMapOp → ShuffleReduceOp) with join, multi-input reduce, downstream map fusion, and reducer remote args, behind an env flag (#63598, #64538, #64687, #64438, #64302, #64532, #64481)Catalog abstraction with a UnityCatalog implementation that can be passed to read_*, and Unity Catalog write support for Parquet and Iceberg (#64193, #64519)read_zarr for Zarr datasets (#63003) and read_lerobot for LeRobot v3 datasets (#63821)PushdownCountFiles optimization to answer count() from Parquet footers (#64763)Aggregate (#63708)UsageCallback (#64500)from_blocks from ray.data (#64127)rapidsmpf-26.4.0 (#64324)MetadataFetcher interface (#64378)ExecutionResources and the reservation/budget loops on the scheduling hot path (#63964)O(n^2) schema reconciliation in unify_schemas and avoid per-column Series materialization in tensor-column casting (#64555, #64038)iter_torch_batches, add per-stage training-thread blocking attribution, bound in-flight iter_threaded items, and finalize after reordering under preserve_order (#64653, #64183, #64219, #64282)OpResourceAllocator budgeting, and move estimate_object_store_usage into the physical op (#63814, #63665, #63961)S3FileSystem downloads to the PyArrow threaded path (#64089)ray.get when fetching partitions (#63929, #64256)read_numpy to allow_pickle=False and make it manually configurable (#64684)write_lance(mode=CREATE) error instead of silently overwriting (#64364)DistributionTracker with merge() and p25/p75, and add dead node counts and detected issues to usage collection (#64074, #64459, #64198)ray-subcluster, avoid scaling nodegroups dedicated to the head node, and quiet autoscaling coordinator logs (#64380, #64003, #63918, #63534)ExecutionPlan, _num_outputs, batch_format on AllToAllOperators, and InheritBatchFormatRule; use input_dependencies in logical operators (#63662, #64167, #64152, #64149, #64148)DataContext.scheduling_strategy, actor_locality_enabled, exclude_resources, local://) ahead of the actor-only rearchitecture (#64632)getdaft to daft (#64240)apply_chat_template/tokenize/detokenize callers to *_stage form, and remove PrepareImageStage while deprecating the image row column (#63590, #63570)TensorDtype.__from_arrow__ crash on empty tensor columns (#64767)to_pandas regressions with an opt-out flag and int/float block overflow handling (#64768)OSError (#64342)PandasBlock.size_bytes deterministic (#64393)_append_and_commit() for the Iceberg overwrite save mode (#63922)isolate_read_workers to DatasourceV2 (#65191, #65207)safe_round in the ExecutionResources hot path (#64296)iterate_with_retry (#64639)tf-keras to the text_embedding pip packages (#64889, #64968)build_processor failing with vLLM >= 0.19, correct its config type hint, and add request_timeout_s to ServeDeploymentProcessor to prevent indefinite hangs (#64337, #64098, #64496)throughput_solver.py (#64289)read_zarr guide back into its docstring (#64409)ray-haproxy PyPI package, make it the default binary, and remove the from-source build (#64141, #64163, #64164)root_path in the HAProxy ingress (#64295)ReplicaSelection (#63948)close-spread-time is set in the template (#63886, #63920, #63995, #64022, #64063, #63996)O(1) version-filtered replica counts, in-place health-check reconcile in the deployment-state loop, and a fast-path orphaned-actor check (#64699, #64507, #64511)fallback_strategy on DeploymentSchedulingInfo (#62693, #64346)HTTPOptions.location in favor of proxy_location, raise on non-zero HTTPOptions.num_cpus, and warn on other deprecated HTTP options (#64479, #64418, #63604)serve.multiplexed is used on an ingress deployment under direct ingress (#64211, #64045)RAY_SERVE_CONTROLLER_METRICS_INCLUDE_HIGH_CARDINALITY_TAGS to control controller metric tags (#63642)RAY_SERVE_PORT_QUARANTINE_S to hard-stop-after plus a margin (#64021)parse_uri from _private to _common (#64041, #64371)mypy and pyrefly type checking on clean Serve files (#64662)@serve.ingress with a sync __init__ (#63413)serve.ingress(FastAPI()) pickling and include_router under FastAPI >= 0.137 (#64814, #64531)serve.shutdown() skipping live shutdown when the cached controller client is stale after a driver reconnect (#64660)route=None crash in direct-ingress metrics reporting (#64645)healthz falling through to 404 when there are no backends (#64582)OverflowError (#64539)SingletonThreadRouter.choose_replica (#63649)RAY_SERVE_HAPROXY_CLOSE_SPREAD_TIME_S (#64752)RequestRouterConfig stats docstring to reference record_routing_stats (#64086)ray.train.report(checkpoint) to in-band checkpoints only (#63645)Result.from_path read-only (#64340)tune_torch_benchmark.py (#64274)CometLoggerCallback mutating the caller's result dict via result.pop() (#64570)WorkerMetricsCallback method name to match the WorkerCallback interface (#64568)TorchCheckpoint.get_model() and FrameworkCheckpoint.get_preprocessor() (#64586)--check-style-mismatch=True in pydoclint (#63988)ScalingConfig (#63449)BayesOptSearch float-hash precision configurable (#63914)optuna>=3.0.0 in OptunaSearch (#64242)max_concurrent_trials for custom searchers (#63770)BayesOptSearch stops early on convergence, and document patience/skip_duplicate (#64288)ResultGrid.get_best_result and add a conditional search-space example to tune.sample_from (#63445, #63443)KVAwareRouter/KVRouterActor interfaces, replica tracking, an event plane, pre-routing tokenization, token-level request lifecycle tracking, and prefill/decode token-load-aware routing (#64084, #64085, #64097, #64224, #64327, #64400)RayEngine, reach control-plane parity, and support Ray Serve direct streaming by serving SGLang's native OpenAI app (#62888, #63021, #64611)/classify and /pooling endpoints in direct-streaming mode (#64494)request.request_id authoritative for the engine and stop clobbering an explicitly set request id with the Serve id (#63949, #64044)asyncio.create_task instead of ensure_future in KVRouterActor (#64546)accelerator_type for CPU vLLM engine configs (#64235)model_id rather than the remote URI as the cache identifier in VLLMEngineConfig (#64110)EnvRunnerStateServer for async weight sync (#63849)EnvRunners dropped on timeout_seconds calls (#63493)from_checkpoint expectations to avoid silent failures (#63614)MultiRLModuleSpec.rl_module_specs to be a dict (#64785)AlgorithmConfig.to_dict() change for the new API stack (#63695, #64501)onnxscript and migrating to the dynamo exporter (#64410, #64033)compute_single_action() on the old API stack (#64088)rllib-algorithms (#63435)RAY_gcs_storage=rocksdb and RAY_gcs_storage_path (#63657)topology_strategy (#63479, #63740)_num_objects_per_yield (#64383, #63310, #63943)RayTaskEventRecorder as the first step of moving task events out of GCS (#64168)SIGTERM before shutting down ray start --block (#64454)tpu.dispatch syntax sugar and a JAX profiler for TPU (#64493, #62371)__ray_call__ as a DeveloperAPI for running closures on actors (#64367)LIBFABRIC backend for NIXL and upgrade NIXL to v1.2.0 (#62339, #63980)FreeLocalObjects RPC and remove the original FreeObjects RPC and ObjectEviction pubsub (#63218, #63181)Pull RPCs by destination node and read spilled object chunks in bulk instead of byte-by-byte (#64225, #63830)IOContextMonitor into GCS, update its metrics, and exclude ray_syncer_io_context and task_io_context from health checks while raising the probe deadline to 30s (#63930, #63975, #64522, #64421)ClockInterface migration in the core worker and dependency-inject PeriodicalRunnerInterface (#63956, #63994, #64061, #64029)process_group_cleanup_enabled by default and fix graceful-shutdown cleanup (#64407)prom_metrics_service_discovery.json to the session dir, and set the OpenTelemetry resource identity (#64093, #63932, #63850, #63921)common/monitor (#63864, #64491)AdjustWorkerOomScore read failure and clamp the score to [-1000, 1000] (#62713)runtime_env parse_uri package name length to avoid ENAMETOOLONG (#64339)TaskToExecute, split task/resource preparation utils out of _raylet.pyx, consolidate the GCS dedicated io_context policy, and rename OnDemandBroadcasting (#64182, #63088, #63931, #63855)collect() in OpenTelemetryMetricRecorder (#64946, #65094)__dealloc__(), and honor timeout_s in the end-of-stream ray.get (#64581, #64394, #64333, #64014)GetSchedulingClassDescriptor (#64707)RedisResponseFn (#64204)working_dir being overridden by the job-level py_driver_sys_path (#63756)RAY_CHECK failures caused by double ray.cancel() and keyboard interrupts (#63663)event_logger and export_event_logger to flush all handlers safely (#63947)TaskProfileEvent.extra_data_ to {} to avoid a JSON decoding error in the State API, and normalize the cmdline field in the StatsPayload schema (#64589, #64286)ALLOCATION_TIMEOUT worker replacement ordering and the RAY_STOP_REQUESTED → RAY_RUNNING fallback when drain has succeeded (#63815, #63424)assert with RuntimeError in put_status and avoid mutating runtime_env during submission (#64569, #63990)RAY_ADDRESS is set to an HTTP address (#64180)WIN32_LEAN_AND_MEAN globally for Windows builds (#64361)ray.shutdown() (#63655)restartPolicy requirement (#64855)name parameter for task.options() (#63450)RuntimeEnvState.creation_time_ms as a duration (#64207)JobHead and stop configuring the root logger on module import (#64443, #64463)/logs API endpoint by rejecting absolute paths and .. components in LogAgentV1Grpc.ListLogs() (#64701)cu130 variants for the ray and ray-extra images (#63972, #63801).ray-ml image with torchft-nightly (#63587).ray-haproxy to the ray[serve] extra and base requirements, and bump it to 2.8.25 for CVE-2026-55203/55204 (#64141, #64430).requirements_compiled across Python versions and upgrade the HuggingFace stack to datasets 4.x (#64257, #64054).-Wl,-pie from the TSAN link flags, and silence TSAN false-positive races (#64748, #64917, #64937, #64759).AGENTS.md with the AI-assisted contribution policy, routed .claude/CLAUDE.md to it, and added a documentation style and grammar guide (#64419, #64518).doc/source, and added an rst-to-myst conversion skill (#64100, #64111, #64115, #64136, #64259, #64279, #64135).llms.txt) and a custom 404 page with absolute URLs (#64330, #64603).Many thanks to all those who contributed to this release!
@justinvyu, @neuyilan, @bveeramani, @abhishekverma-ray, @dstrodtman, @yinli-systems, @Truc54, @tanmayrauth, @ArchishmanSengupta, @yuhuan130, @skpark-rh, @shaun0927, @ps2181, @edoakes, @htvien, @xinyuangui2, @owenowenisme, @ronny-anyscale, @nadongjun, @LeMinhNhat2901, @kevin85421, @akyang-anyscale, @jeffreywang88, @sai-miduthuri, @robertnishihara, @andrewsykim, @iamjustinhsu, @leewyang, @marwan116, @MortalHappiness, @fscnick, @ayushk7102, @ArturNiederfahrenhorst, @rayhhome, @nh-atuan, @kimngoc280105, @TimothySeah, @zyxue, @antoine-galataud, @omkar-334, @alimaazamat, @jhasm, @ShockYoungCHN, @Kunchd, @richardliaw, @xyuzh, @linh285, @shorbaji, @ans9868, @LuciferYang, @joaquinhuigomez, @liujp, @ShuChenLin, @johntaylor-cell, @vickytsang, @abrarsheikh, @saivedant169, @rmhowe425, @kyuds, @kunling-anyscale, @fuxi611, @karticam, @enginarslan1, @spencer-p, @MengjinYan, @AyushKashyapII, @dragongu, @Sparks0219, @rueian, @praneethkaturi, @dinhxuanvu, @lonexreb, @AarryaSaraf, @Junyi-Wang-6, @saschwartz, @odncode, @vicentefb, @JasonLi1909, @coqian, @kouroshHakha, @daiping8, @pseudo-rnd-thoughts, @wanadzhar913, @HungHiHung10, @goutamvenkat-anyscale, @LeThienTrong, @alexandrplashchinsky, @raulchen, @ryankert01, @jiangxt2, @HirokiNariyoshi, @Yicheng-Lu-llll, @martinlhw, @richabanker, @aaronscalene, @SohamRajpure, @tvaucher, @Jade07-1, @eicherseiji, @dayshah, @Kropiunig, @machichima, @harshit-anyscale, @elliot-barn, @liulehui, @OneSizeFitsQuorum, @alexeykudinkin, @sampan-s-nayak, @prince8273, @jpatra72
Added protobuf >=7 compatibility to _proto_to_dict by binding to FieldDescriptor.is_repeated when the deprecated label attribute is absent (#64592, #6…
to_pandas regressions introduced in 2.56: an opt-out flag (RAY_DATA_ENABLE_ARROW_BACKED_PANDAS_CONVERSION) for Arrow-backed conversion, an int64/double[pyarrow] overflow crash on concatenation, and a TensorDtype.__from_arrow__ crash on empty tensor columns (#64793, #64794).--system-reserved-memory before it causes node deaths (#64492).PrefixCacheAffinityRouter no longer hang when RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 (#64592, #64488).to_pandas regressions: added DataContext.enable_arrow_backed_pandas_conversion as an opt-out, and reconciled divergent numeric column types before concatenation to avoid int64/double[pyarrow] overflow crashes (#64793, #64768).TensorDtype.__from_arrow__ crash on zero-size tensor elements by using an explicit row count instead of numpy's -1 dimension inference (#64794, #64767)._input_dependencies in _get_args so exporting operator args no longer triggers an exponential sanitize_for_struct call chain over fused operators (#64412, #64316).>=7 compatibility to _proto_to_dict by binding to FieldDescriptor.is_repeated when the deprecated label attribute is absent (#64592, #64362).SimpleNamespace over routing-key fields (messages, prompt) so choose_replica receives the message body instead of raw bytes (#64488, #64328, #64326).torchvision and pinned onnxscript in the GPU/ml-build CI dep locks, fixing ONNX export failures (#64591, #64028, #64031, #64590, #64033).--system-reserved-memory (#64492).cuMem host buffer registration in CI pytests to stabilize GPU test runs (#64580, #64146).README document, fixing the fail_on_warning ReadTheDocs build on the release line (#64761, #64630).pip freeze dependency list for the Ray 2.56.0 release (#64447, #64357).Many thanks to all those who contributed to this release!
@eicherseiji, @ryankert01, @bveeramani, @elliot-barn, @iamjustinhsu, @Sparks0219, @owenowenisme, @dstrodtman, @marwan116
Your coding agent can read these notes before it upgrades. Set up the MCP server →