wasm: streaming APIs accept non-Uint8Array response body chunks
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- JavaScript
- Star
- 122k
- Fork
- 37.3k
- Merge trung bình
- 4 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 283
Mô tả
Version
latest main branch
Platform
7.1.3-arch1-3
Subsystem
wasm
What steps will reproduce the bug?
const bytes = new Uint8Array([
0x00, 0x61, 0x73, 0x6d, // \0asm
0x01, 0x00, 0x00, 0x00, // version 1
]);
const stream = new ReadableStream({
start(controller) {
controller.enqueue(bytes.buffer); // ArrayBuffer, not Uint8Array
controller.close();
},
});
const response = new Response(stream, {
headers: {
'Content-Type': 'application/wasm',
},
});
WebAssembly.compileStreaming(response).then(
() => console.log('unexpectedly compiled'),
(error) => console.error('rejected:', error),
);
How often does it reproduce? Is there a required condition?
Every
What is the expected behavior? Why is that the expected behavior?
Fetch body consumption requires every chunk read from the response body to be a Uint8Array. Other values, including ArrayBuffer, DataView, and other typed arrays, should cause the operation to reject with a TypeError.
What do you see instead?
WebAssembly.compileStreaming() and WebAssembly.instantiateStreaming() accept response bodies whose
ReadableStream produces non-Uint8Array chunks.The WebAssembly module is compiled successfully, even though the response body produces an ArrayBuffer chunk.
Additional information
Refs: https://github.com/web-platform-tests/wpt/blob/master/wasm/webapi/wasm_stream_compile_test.any.js#L80-L93
Refs: https://github.com/web-platform-tests/wpt/blob/master/wasm/webapi/wasm_stream_instantiate_test.any.js#L79-L92
Hướng dẫn đóng góp
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.
Hướng nghiên cứu
Bắt đầu với các entry point WebAssembly.compileStreaming() và WebAssembly.instantiateStreaming() cùng các bài kiểm thử WPT được tham chiếu, wasm/webapi/wasm_stream_compile_test.any.js và wasm/webapi/wasm_stream_instantiate_test.any.js. Tái hiện trường hợp chunk ArrayBuffer từ báo cáo, sau đó xác minh rằng các chunk phản hồi không phải là Uint8Array sẽ bị từ chối với TypeError, trong khi các chunk hợp lệ vẫn tiếp tục hoạt động.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- javascript, wasm
- Lĩnh vực
- api
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 65/100