WebAssembly night #10 イベント: https://emsn.connpass.com/event/192221/ 自作したWasmリンカ: https://github.com/kateinoigakukun/chibi-link
はじめに 少し前までLinuxユーザだったので、Blogに使用するgifアニメを作るときにはffmpegを使っていました。最近Windowsに移行しまして、はてgifアニメを作るにはどうしたらいいのかな?と調べていたのですが、普通にffmpegで作れそうなことがわかりました(参考)。まぁ、結論としてはそうだったのですが、Windowsにいろんなアプリケーションをいれると動作不安定になるし嫌だな(久々にWindowsに戻ってきた人間の偏見です。)と思いまして、少し前にバズってたffmpeg.wasmを使ってブラウザ上でスクリーンを録画する機能でも作ってみるかということになりました。これで変なアプリケーションを入れずに済みそうだ。 今回作ったものは、こんな感じのものです。左側でキャプチャ対象のエリアを指定して録画します。右側で録画の結果を表示して、ダウンロードします。 余談ですが、Window
WebAssembly, a.k.a. WASM, is a standard defining a low-level programming language suitable (A) as a target for cross-compilation from many other languages and (B) for running via a virtual machine in a browser. Designed with scriptability via JavaScript in mind, it provides a way to compile C code (among others) to WASM and script it via JavaScript with relatively little friction despite the vast
Dockerは2023年3月22日(米国時間)、「Docker+Wasm Technical Preview 2」を発表した。WebAssembly(Wasm)コンテナを実行できるDocker Desktopの特別なビルドである「Docker+Wasm」の最新開発版だ。 Dockerは2022年10月に、前のバージョンである「Docker+Wasm Technical Preview 1」を発表した。Technical Preview 1は、「WasmEdge」ランタイムを用いてWasmコンテナを実行するようになっていた。 さらにDockerは、2022年12月に公開した「Docker Desktop 4.15」で、実験的機能である「containerdイメージストア」を有効にすることで、誰でもDocker+Wasmを試せるようにした。 関連記事 Kubernetesを使ったリモート開発が
TL;DR JavaScriptとWebAssemblyの間の値渡しには気を使おう(なるべく値のコピーを避けよう)。 JSはとても高速で、単純なループではWASM並の速度が出るので、WASMの使い所はよくよく考えるべき。 はじめに 1000^2級の画像の全ピクセルをループして、(簡単に言うと)RGBA値の最も大きい値を抽出する、という処理をブラウザ上で突然したくなりました。ピクセル数が1,000,000だと、RGBAなので配列長は4,000,000となります。ブラウザで扱いたくないサイズ感です。 ここで、①WASMで高速化、ダメなら②サーバーサイドで計算させる…という算段をして、とりあえずWASMを試してみました。色々チューニングした結果、ブラウザ上で現実的な速度が出ることがわかりました(数十msの世界)。 RGBA値の計算について 本記事では深く説明しませんが、今回やりたい処理は「下記式
KotlinのコードからWebAssemblyバイナリを生成可能、Kotlin/Wasmがアルファ版として提供開始 開発ツールのIntelliJ IDEAやプログラミング言語Kotlinなどの開発元であるJetBrainsは、これまで試験的プレビュー版だったKotlinのコードからWebAssemblyバイナリを生成する「Kotlin/Wasm」を、アルファ版として提供開始すると発表しました。 Kotlin/Wasm is now in Alpha and ready for you to try! Build web applications with Kotlin and use Kotlin/Wasm in your KMP projects. Take it for a spin and share your feedback with us! Learn more about t
When WebAssembly was first shipped it was an MVP which, while minimal, has spawned a huge number of exciting projects which work today across all major browsers. Rust has capitalized on the wasm MVP’s success as well with tools like wasm-bindgen and wasm-pack by making the MVP feel less minimal. WebAssembly is yet more ambitious, though! Since inception it’s always been intended to extend the WebA
The Artificial Intelligence Controller Interface (AICI) lets you build Controllers that constrain and direct output of a Large Language Model (LLM) in real time. Controllers are flexible programs capable of implementing constrained decoding, dynamic editing of prompts and generated text, and coordinating execution across multiple, parallel generations. Controllers incorporate custom logic during t
https://rconv.ongaeshi.me Ruby on Browser に続いて Ruby WASM/WASI で電卓っぽいものを作りました。 ongaeshi.hatenablog.com テキストボックスの内容を入力としてRubyスクリプトに渡して評価し実行結果を出力します。つまり入力→変換→出力するRubyアプリケーションがブラウザ上で簡単に作れます。コードはURLに記録されるので簡単に共有することができます。 基本 Rconv.set()メソッドに渡したブロックの中身が変換プログラムになります。ブロック引数に渡されるのはテキストボックスの内容がevalされたものです。Always string = true のときは常に文字列になります。ブロックの戻り値、もしくは標準出力に何か出力されたときはその内容が、そうでないときはブロックの戻り値が出力されます。 例えば irb
(at least for now)… We recently got pinged on Twitter regarding a question about WebAssembly (WASM) being the future of Babylon.js. Here is our response: Our friends at Three.js had the same answer by the way :) I wanted to use this blog to get more into details about why we do not think WASM is the future of JavaScript frameworks. WASM is a target not a user facing languageWASM is meant to be a w
こんにちは! テリーです。コロナのワクチンができたかも!?といううれしいニュースが話題になりましたね。自宅引きこもり生活もそろそろ終わりが見えてきたでしょうか。多くの芸能人がYouTubeにチャンネルを開設してくれたおかげで、入浴中に10分程度のお気に入りチャンネルを毎日見る習慣ができてしまいました。自分もヒカキンのようなYouTuberになって一儲けしてやろうと思い立ち、スマホで撮影してみましたが、編集の大変さでギブアップしてしまいました。オンラインで動画編集して、誰かに作業を手伝ってもらったり、アドバイスしてほしいですよね。そこで今回は、ブラウザで動画編集するのに役立つ最新技術をご紹介します。 今回紹介する技術 rnnoise-wasm ffmpeg.wasm wasmとは wasmはWebAssemblyの略称または拡張子で、ワズムまたはワスムと読みます。WebAssemblyとは、
std: Add a new wasm32-unknown-unknown target by alexcrichton · Pull Request #45905 · rust-lang/rust · GitHub Rust の nightly で wasm32-unknown-unknown という target が入ったので、Emscripten ナシでも wasm を吐けるようになったということで。 rust と js で json 投げあうコードまで書くか— Insanely fast (@mizchi) 2017年11月26日 やった。 github.com 普通に serde とか使えて便利。 文字列を渡すときには Rust 側の関数で alloc してヒープのそのポインタへ JS から書いてやる必要がある。で、関数にはそのポインタを渡す。 受け取るときはポインタが返ってくる
This patch set results in a working standard library for the asmjs-unknown-emscripten and wasm32-unknown-emscripten targets. It is based on the work of @badboy and @rschulman. It does a few things: Updates LLVM with the emscripten fastcomp patches, which include the pnacl IR legalizer and the asm.js backend. This patch is thought not to have any significant effect on existing targets. Teaches rust
はじめに 表題の通り、以前Emscriptenを使って作っていたライブラリをwasm対応して性能比較してみます。本来ならSION2 HDで比較してみたかったのですが、色々とハマっているうちに時間がなくなってしまったので、SION2 HDの中でも使っているz-music.jsに絞って評価してみようと思います。 なお評価にはChrome 63を使っています。ブラウザ間の比較とかもあれば良かったのかもしれませんが、純粋に時間がなくてやっていません。比較的新しいブラウザは全て実装しているので、いずれ比較・競争は自然と激しくなるでしょう:) 使ったマシンはMac mini (Late 2014)で、性能に関係しそうなプロセッサは3GHz Core i7です。古めのマシンとは言え、シングルコア性能で考えると今でも現役ですね。 一応Chromium Developerです、とか言っておきますが、だからと
HTML5ではIndexedDBというデータベースAPIが実装されています。しかし、若干利用法が独特な分、なかなか使いこなすのが難しいようです。昔ながらのRDBMSであったり、廃止になってしまったWebSQLデータベースの方が使いやすかったかも知れません。 今回紹介するsql.jsはSQLiteをEmscriptenを使ってJavaScriptで使えるようにしたライブラリになります。 sql.jsの使い方 デモです。SQLを実行できます。 結果も取得できます。 任意のSQLiteファイルを読み込めます。 sql.jsはSQLiteをWebAssemblyにし、実行できるようになっています。仮想ファイルシステムを使っており、インメモリで動作しています。そのため、Webブラウザをリロードしてしまうと消えてしまうのが難点です。その点さえ目をつぶれば、Webブラウザ上で自由にSQLを実行できる環境
Editor’s note: With the release of Docker Desktop 4.15, Docker+Wasm is now in beta! Check out the documentation to learn more. The Technical Preview of Docker+Wasm is now available! Wasm has been producing a lot of buzz recently, and this feature will make it easier for you to quickly build applications targeting Wasm runtimes. As part of this release, we’re also happy to announce that Docker will
どうもこんにちは。筆者はここ1年くらいnitrogqlというTypeScript + GraphQL向けコード生成ツールを開発しています。(初手宣伝) このツールの本体はRustで書かれており、コンパイルするとWASMバイナリが生成されます。このWASMバイナリをNode.jsから呼び出すようなラッパーを作って、コマンドラインツールとしてnpmで公開しています。 その性質上、Node.js側とWASM側で通信(データのやり取り)が発生します。特に、設定ファイルなどが.jsや.tsで書かれていても読み込む機能があり、その際はRust側からNode.js側に制御を渡してNode.js側でファイルを読み込み、結果をRust側に返すようになっています。 実は、nitrogqlの(Rust側)コードにはこれまで非同期処理が含まれていませんでした。しかし、パフォーマンスのことなどを考えると非同期処理に
Back to articlesAnnouncing py2wasm: A Python to Wasm compilerpy2wasm converts your Python programs to WebAssembly, running them at 3x faster speeds Since starting Wasmer five years ago we've been obsessed with empowering more languages to target the web and beyond through Webassembly. One of the most popular languages out there is Python, and while it is certainly possible to run Python programs i
少し前ですが、Docker の Technical preview として WASM (WebAssembly) のサポートが発表されました。 普段から Docker を利用していますが、そもそも WASM が何なのか? WASM をサポートしたことによって何ができるようになるのか? がわかっていなかったので、一通り調べてみました。 WASMとは まずは、WASM 自体の理解を深めるために、下記のドキュメントにざっと目を通します。 WebAssembly MDN's WebAssembly pages WASM とはバイナリコードの仕様で、そのフォーマットに対応したバイナリを実行する Stack-based な仮想マシンのことを指します。 開発初期は、ブラウザ(JS)の高速化が目的で、それを念頭に置いたような記載もドキュメントにあります。 WebAssembly is a new type
Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。佐伯氏は、WebAssemblyのWebの外の応用について発表しました。全2回。後半は、WasmがWeb外でどのように使われているか、WASIとProxy-Wasmの例から発表しました。前半はこちらから。 WASIはOSの上でWasm executableを動かすためのPortableなAPI/ABI 佐伯学哉氏(以下、佐伯):そういう特徴があると、かなりうれしいことがわかったんですが、具体的に何に使われているのか特にWASI(WebAssembly System Interface)とProxy-Wasm(Web Assembly for Proxies)について話したいと思います。 WASIはWebAssembly System Interfaceの略で、OSの上
Frame Rate. WASM = Green; JS = Blue; Choppy Video? Disable Javascript below to see WebAssembly only
クリスマスですね どうも、メリークリスマス🎄🎅🎄 会社のアドベントカレンダーにこんな日記みたいな記事を書いてしまって死にたみが高まる @kakerukaeru です。 最近のぼく 去年ぐらいから、Cloudflare が Edge 上で JavaScript を実行できるようにする Cloudflare Workers を発表したかと思えば、Akamai も負けじと Edge Workers を Edge Conference で発表したりして、今までの面倒な CDN の Configuration からより Dynamic な Routing だったり Caching の設定を Code で表現出来るようになってきてて夢が広がるなぁ〜と思いつつ、Cloudflare Workers を遊びでちびちび触ったりしていた。 ちなみに、Akamai の Edge Workers は楽しみで
はじめに質問 Wasm は何で書く?Go? Rust? AssembyScript? やっぱりWasm は C++!!!~Wasm/EmscriptenでOpenCVを使う~ ※現状での個人の見解です。 ということで、Emscripten で OpenCV を扱うことについて記事です。 この記事の元ネタはWebAssembly Night #10の発表内容です。 そしてOpenCV Advent Calendar 2020 の 9 日目でもあります。 画像処理 on your Browserの時代 Wasm といえば最近はすっかり Go や Rust で書くことが盛り上がっていますが、まだまだ C++/Emscripten も活躍しどころがあります。ブラウザでのクライアント画像処理が代表的なものでしょう。 WebRTCインフラの充実 時雨堂 WebRTC SFU Sora/NTT Com.
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く