Skip to content

rust(feature): add bytes channel support, release prep 0.13.0 / bindings 0.5.1 - #782

Merged
solidiquis merged 2 commits into
mainfrom
python/bytes-channel-support
Sep 4, 2026
Merged

rust(feature): add bytes channel support, release prep 0.13.0 / bindings 0.5.1#782
solidiquis merged 2 commits into
mainfrom
python/bytes-channel-support

Conversation

@solidiquis

@solidiquis solidiquis commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds bytes channel support to sift_stream and sift_stream_bindings, and bumps the workspace to 0.13.0 and sift-stream-bindings to 0.5.1 so it can be released. This is the Rust half of a fix for bytes channel ingestion from the Python library, reported by a customer on sift-stack-py v0.20.0 (ValueError: Unknown data type: bytes during flow registration).

Why

#761 fixed flow registration for bytes channels in Python but is unreleased. The next failure a user would hit is sending a value on a bytes channel: ValueError: Invalid data type: bytes. That one cannot be fixed in Python alone, because sift_stream::Value and the ValuePy binding had no bytes variant even though the proto and ChannelValueTypePy do.

Adding a variant to the public Value enum breaks downstream exhaustive matches, so the workspace gets a minor bump. The bindings need a PyPI release so the Python library can depend on ValuePy.Bytes.

Changes

  • sift_stream: add Value::Bytes(Vec<u8>), mapped to CHANNEL_DATA_TYPE_BYTES. Add a ChannelBytes newtype, since a plain Vec<u8> still converts to BitField. Unit test added.
  • sift_stream_bindings: add ValuePy.Bytes, is_bytes, as_bytes, and IngestWithConfigDataChannelValuePy.bytes. Regenerate the .pyi stub.
  • Cargo.toml: workspace version 0.12.00.13.0 and the 7 internal dependency pins (sift_error, sift_rs, sift_connect, sift_stream, sift_pbfs, sift_mcp, sift_test_util). sift_stream_bindings pin 0.5.00.5.1. sift_cli (0.5.0) is unchanged.
  • rust/crates/sift_stream_bindings/Cargo.toml: 0.5.00.5.1.
  • rust/CHANGELOG.md: new v0.13.0 section.

After merge

Tag rust/v0.13.0 and sift-stream-bindings/v0.5.1. Once 0.5.1 is on PyPI, a Python PR will handle ChannelDataType.BYTES in ChannelValue._to_rust_form and bump the sift-stream-bindings pin. It is blocked until then because python-ci installs the bindings from PyPI.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Python docs preview: https://sift-stack.github.io/sift/python/pr-782/

Deployed from 77a6650. The link may take up to a minute to become live as GitHub Pages propagates.

Add Value::Bytes to sift_stream and expose it through sift_stream_bindings
(ValuePy.Bytes, is_bytes, as_bytes, IngestWithConfigDataChannelValuePy.bytes).
Python support lands separately once the bindings are released.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@solidiquis
solidiquis force-pushed the python/bytes-channel-support branch from 5f4fb41 to 8bd2634 Compare September 4, 2026 18:40
@solidiquis solidiquis changed the title rust/python(feature): add bytes channel support rust(feature): add bytes channel support Sep 4, 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@solidiquis solidiquis changed the title rust(feature): add bytes channel support rust(feature): add bytes channel support, release prep 0.13.0 / bindings 0.5.1 Sep 4, 2026
@solidiquis
solidiquis merged commit 542ea44 into main Sep 4, 2026
43 checks passed
@solidiquis
solidiquis deleted the python/bytes-channel-support branch September 4, 2026 18:57
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.

2 participants