Port `arraybuffer` to ruby
オープン
まだ誰も着手していません。
- 主要言語
- Ruby
- スター
- 875
- フォーク
- 68
- 平均マージ
- 9日 5時間
- マージ済み PR(30日)
- 1
説明
require "js"
response = JS.global.fetch("<dumped buffer's url>").await
puts response[:status]
arraybuffer = response.arrayBuffer.await
# Expected goal:
# Marshal.load(arraybuffer)
some byte arrays need to port ruby (typically generated by Marshal.dump), but no fast way
# Correct but too slow way:
uint8array = JS.global[:Uint8Array].new(arraybuffer)
Marshal.load(uint8array.to_a.map(&:to_i).pack("C*")) # Especially the slow JS::Object#to_i on each byte.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、JS.global.fetch と response.arrayBuffer で使用されている Ruby WebAssembly の JavaScript 相互運用を追跡し、次に issue に示されている Uint8Array への変換と比較します。response.arrayBuffer の ArrayBuffer データを、各バイトを JavaScript オブジェクト経由で変換せずに Marshal.load に渡せれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, ruby, wasm
- 領域
- web-dev
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 38/100