ruby / ruby/ruby.wasm

Port `arraybuffer` to ruby

オープン
#342 コメント 6 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
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.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。