JS SDK: no way to read a binary file back (fs.read refuses it as Binary)
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript, rust
Hướng nghiên cứu
Read the existing fs.read implementation and read_range in layerfs-content, then follow the path through layerfs-store-service/src/read/reads.rs to the layerfs-api handler. The issue leaves the public API shape, byte cap, and whether the method should exist undecided, so those owner decisions must be settled before implementation. Done means a decision and, if approved, a bounded binary read with a Linux SDK test.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Split from #413. Writes are fixed by #416; this issue is about reading.
Problem
The JS SDK can write a binary file but cannot read it back. fs.read reads text in windows (at most 2000 lines / 48 KiB per call) and refuses a file with NUL or invalid UTF-8 as Binary. No other SDK call returns a file's raw bytes. fs.stat gives only its size.
This means a binary file round-trip through the fs surface is impossible. For example, the Magpie LayerFS plugin (magpie-community/plugins#318) has to skip binary files on checkout and list them as not materialized.
Decision needed (owner)
Whether to add a byte read to the public SDK, and in what shape. It would be a new public method, and once released it has to be kept.
A possible shape (not decided)
fs.read_bytes(ref, path, offset = 0, length?) → { bytes: Buffer, size, hasMore }:
- One bounded range per call, capped like
fs.read's window. A whole-file read would hold a large file in memory. - Reads at the same immutable snapshot as
fs.read(a Branch, Commit or Layer), so paging through a file is consistent. NotFile/IsDirectory/NoSuchPathrefusals as forfs.read. Anoffsetpast the end returns emptybyteswithhasMore: false.- Built on the existing
read_rangeinlayerfs-content, throughlayerfs-store-service/src/read/reads.rsand a smalllayerfs-apihandler. No storage format change. - The binding already returns
SdkValue::Bytesas aBuffer, and the dsh port's encoding carriesBuffer. So no binding or port change is expected. - Rough size: +45 to +65 production lines (mostly core), plus a Linux SDK test.
Questions for the decision
- A new method, or an option on
fs.read(for exampleencoding: "bytes")?fs.readis line-based, so a separate method seems cleaner. - The per-call cap: the same 48 KiB as
fs.read, or larger, since bytes need no line scanning? - Is it needed at all, or should binary access go through a mounted Workspace (
workspace.mount+ exec) instead?
- Ngôn ngữ chính
- Rust
- Star
- 2.1k
- Fork
- 110
- Merge trung bình
- 23 giờ 52 phút
- Pull request đã merge (30 ngày)
- 138
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Ephemeral-AI-Lab/layerfs
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Ephemeral-AI-Lab/layerfs#689 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Ephemeral-AI-Lab/layerfs#643 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`branch.publish` accepts a stale base and overwrites `main` (lost update)Có thể đã có người làm @mengmengmengqiang đã nhận hôm nay. Đang mởapi/calls bug core/history
Ephemeral-AI-Lab/layerfs#691 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 8/100
Ephemeral-AI-Lab/layerfs#684 · 10 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
LayerFS Paper Write in PublicĐang mởdocs
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
Ephemeral-AI-Lab/layerfs#683 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Ephemeral-AI-Lab/layerfs
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
pop-os/cosmic-settings#2296 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
jonathanong/no-mistakes#3431 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Eyevinn/open-live-ingest#36 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày