並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 28 件 / 28件

新着順 人気順

wasmの検索結果1 - 28 件 / 28件

  • Google、Google Sheetsの計算エンジンをWebAssemblyに最適化し、2倍の性能を実現したと発表

    Google、Google Sheetsの計算エンジンをWebAssemblyに最適化し、2倍の性能を実現したと発表 GoogleはWebブラウザ上でスプレッドシート機能を提供する「Google Sheets」の計算エンジンの性能をWebAssembyで実装し、従来のJavaScriptによる実装と比較して性能を2倍に向上させたことを明らかにしました。 これにより単純なSUM計算から複雑なクエリまで、シート上でのあらゆる計算を始め、ピボットテーブルの作成、条件付きフォーマットなどさまざまな処理が高速になるとのことです。 この性能向上は、JavaScriptで構築されていた計算エンジンをWebAssemblyに最適化したことで実現していると説明されており、そのためにWebAssemby GC(ガベージコレクション)機能を用いたとのことです。 そのため現時点ではChromeとMicrosoft

      Google、Google Sheetsの計算エンジンをWebAssemblyに最適化し、2倍の性能を実現したと発表
    • Ruby on Browser

      ruby.wasm で作ったページの紹介と ruby.wasm の使い方 スライド内のリンク - 文字化けを復元するよ https://tmtms.net/mojibake/ - シャッフル https://tmtms.net/shuffle.html?list=Ruby,Perl,Pytho…

        Ruby on Browser
      • Rust+WebAssemblyを使ったWebアプリでの高速画像処理入門 - アダコテック技術ブログ

        要約 背景 WebAssembly (WASM) とは? Rust言語とは? サンプルアプリ概要 LBP特徴量計算をRustで実装 フロントエンド環境構築 バックエンド環境構築 スキーマ定義 Rust実装 WASMバイナリの生成 TypeScript実装 実行結果 まとめ メンバー募集しています! おまけ こんにちは!美味しいタコスを食べることを専門としているプロダクト開発部エンジニアの井上です。 要約 WebAssembly(WASM)、Rustは近年注目されている技術であり、これを利用することでWebアプリケーション上で高速な画像処理を実現できるよ。 我々も画像前処理を行っていたWindowsデスクトップアプリケーションを、WebAssembly+Rustを使用してWebアプリケーションに置き換えたよ。 Rust言語で実装した画像処理をWASMにコンパイル、そしてWebアプリケーション

          Rust+WebAssemblyを使ったWebアプリでの高速画像処理入門 - アダコテック技術ブログ
        • Why Google Sheets ported its calculation worker from JavaScript to WasmGC  |  web.dev

          Why Google Sheets ported its calculation worker from JavaScript to WasmGC Stay organized with collections Save and categorize content based on your preferences. Google Sheets is one of the first products at Google to use WasmGC on Chrome. The move was announced in 2022, and the Sheets and Chrome teams partnered on standardization, engineering, and tooling to provide real-time feedback on optimizat

            Why Google Sheets ported its calculation worker from JavaScript to WasmGC  |  web.dev
          • Serverless Haskell - GHCのWASMバックエンドで Haskell を Cloudflare Workers に載せる

            Serverless Haskell - GHCのWASMバックエンドで Haskell を Cloudflare Workers に載せる TL;DR GHC 9.10 から WASM バックエンド(クロスコンパイラ)が JavaScript FFI に対応したので、Haskell コードを Cloudflare Workers 上で動かしてみたよ。快適に開発するための環境構築・ハック方法と、GHCの出力をCloudflare Workers 向けに修正する方法を紹介するよ。 はじめに──Asterius から GHC WASM バックエンドへ GHC は 9.6 から WASM バックエンド(クロスコンパイラ)を搭載していますが、GHC 9.10 から WASM バックエンドが遂に JavaScript FFI に対応しました。 従来から C FFI には対応しており、これを使って F

              Serverless Haskell - GHCのWASMバックエンドで Haskell を Cloudflare Workers に載せる
            • ScalaMatsuri 2024 で Scala の WebAssembly 対応について話しました / スタッフとして参加しました - たにしきんぐダム

              2024年6月に開催された ScalaMatsuri 2024 に参加しました! Scala to WebAssembly: How and Why 今回は久々の大規模オフライン開催で、会場は久しぶりにお台場のプラザ平成でした。この会場でのScalaMatsuriに参加したのは5年前の2019年(と2018年に初参加)だったので、とてもエモい気持ちで会場に向かいました。 今年はスピーカー兼スタッフとしての参加で、スピーカーとしては最近開発しているScalaのWebAssembly対応について話し speakerdeck.com スタッフとしては、プログラムの選定や翻訳・(@scala_jpと@scalamatsuriの)SNS運用・(会場でたまに)通訳などをさせていただきました。大変だったけど楽しかった!来年以降もScalaMatsuri運営に関わっていきたい😎 久々の大規模オフライン開

                ScalaMatsuri 2024 で Scala の WebAssembly 対応について話しました / スタッフとして参加しました - たにしきんぐダム
              • WebAssembly JSPI has a new API · V8

                WebAssembly’s JavaScript Promise Integration (JSPI) API has a new API, available in Chrome release M126. We talk about what has changed, how to use it with Emscripten, and what is the roadmap for JSPI. JSPI is an API that allows WebAssembly applications that use sequential APIs to access Web APIs that are asynchronous. Many Web APIs are crafted in terms of JavaScript Promise objects: instead of im

                • 仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた

                  【増枠】2024年Rust Webアプリ開発の現在 https://findy.connpass.com/event/319829/ で利用した発表資料です。

                    仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
                  • WebAssemblyコンポーネントでHTTPハンドラーを作成 - Qiita

                    package component:http-sample; world sample { export wasi:http/incoming-handler@0.2.0; } [package] name = "http_sample" version = "0.1.0" edition = "2021" [dependencies] bitflags = "2.5.0" wit-bindgen-rt = "0.24.0" [lib] crate-type = ["cdylib"] [package.metadata.component] package = "component:http-sample" [package.metadata.component.dependencies] [package.metadata.component.target.dependencies] "

                      WebAssemblyコンポーネントでHTTPハンドラーを作成 - Qiita
                    • GraalVM を使って WebAssembly を実行してみる - Qiita

                      Zenn にも書籍として公開しています. 読みやすい方で読み進めていただけたらと思います. Zenn の方が最新版です. この記事の目的 GraalVM ずっと触ってみたかったんですが,WebAsssembly 周りの実装が増えてきていることで万を持して動かしてみることにしました! こちらの記事では,公式ドキュメントに従って GraalVM を動かしてみた結果と実装例,コメント等を残します. こちらの記事を参考にして GraalVM を活用した Java プロジェクト開発 & WebAssembly 埋め込みの基礎を学ぶことができます. Java が初めての方も含め,なるべく誰でも手を動かして動作を再現できるように記載しています. GraalVM の基本機能紹介から行うので,WebAssembly 連携だけ気になる方は WebAssembly (Wasm) 連携する まで読み飛ばしてくださ

                        GraalVM を使って WebAssembly を実行してみる - Qiita
                      • C/C++ アプリを WASI で WasmEdge で動かすメモ - Qiita

                        WebAssemblyランタイム比較(Lucet, Wasmer, Wasmtime) https://zenn.dev/zaki_yama/scraps/cd40f7535b3224 wasi-sdk + wasmer-python で C/C++ アプリを WASM でポータブルに動かすメモ https://qiita.com/syoyo/items/300d4ef7fd105e69ad10 WASI で動かすのは wasmer, wasmtime が主にありましたが, 最近(2022/09 時点), WasmEdge というのも出てきました. AOT(Ahead of time) compile で高速実行目指す?っぽい. C/C++ アプリを速度落とさずのサンドボックス実行できそうな気がしますので試してみます. wasmer(C/C++ をポータブルなプラグインにして Python

                          C/C++ アプリを WASI で WasmEdge で動かすメモ - Qiita
                        • SQLiteをブラウザ上で実行するサンプル(React+vite+comlink) - Qiita

                          はじめに 特徴 ブラウザ上でリレーショナルデータベースのsqlite-wasmを実行します(sqlを実行できます) SQLiteはWeb Workerで実行するため、DB処理がUIスレッドをブロックしません DBファイルはOPFS(オリジンプライベートファイルシステム)上に永続化します(ブラウザを閉じてもデータは失われません。GB単位の大きなデータを扱うことが可能です) Web Workerを容易に扱うために、Comlinkを利用します プログラムソース 動作確認ページ(GitHub Pages) ReactでSQLite Wasmを実行して、localStorageに永続化する最小のサンプルは、 メインスレッドで実行しているため?かSQLiteの読み込み時に警告が出ていました。 Ignoring inability to install OPFS sqlite3_vfs: The OPF

                            SQLiteをブラウザ上で実行するサンプル(React+vite+comlink) - Qiita
                          • TinyGo×leavesでLightGBMのWASMを作る - Qiita

                            概要 この記事では、LightGBMを用いた推論処理をWASMにしてブラウザ上で実行させる方法を紹介します。具体的には、軽量なビルドアセットが作成可能なTinyGoと全てGo言語で実装されているleavesを使い、軽量でランタイムやモデルファイルが内包されているWASMを作ります。 leaves leavesは純粋なGo言語だけでGBRTモデルの予測コードを実装しているライブラリで、対応モデルはLightGBM、XGBoost、scikit-learnのtree modelです。今回はLightGBMの学習済みモデルを推論で利用させるために使用します。LightGBMのモデル読み込みは、txt形式とjson形式の2種類が対応しており、自分の環境ではLightGBMのモデルファイルサイズが小さいtxtの方を利用しました。また、標準でカテゴリ特徴量がサポートされていたり、バッチ推論もできるのが

                              TinyGo×leavesでLightGBMのWASMを作る - Qiita
                            • runwasi関連の基礎知識 - Qiita

                              runwasiとは ContainerdでWasmを動かすための共通platformを提供する。WASIをターゲットにcompileされたプログラムであれば、WASIに準拠したランタイム(wasmtimeなど)で実行できる。Rustで記述されている。 runcの代わりに、WebAssemblyランタイムを可能にするshim(異なる環境での互換性を保つソフトウェア層)であるrunwasiをcontainerdで動かすことが出来る。 Container毎に1つのshim processが存在するnormal modeと、すべてのshimを実行する単一のprocessで実行されるshared modeがある。 Wasm containerはコンパイルされたWasmバイトコードのみなので、Linuxコンテナよりも非常に軽量で起動が速く可搬性も高い。 Component containerd-shi

                                runwasi関連の基礎知識 - Qiita
                              • WebAssemblyCompiler.jl で推しビューワを作った話 - Qiita

                                本日は Julia アドベントカレンダーの $N=10$ 日目です. Julia のコードを WebAssembly に変換しブラウザで実行する話です.例として生命維持活動として行なっている推しの自炊をしているので作ったものを飾るギャラリーを作る技術として採用しました(かなり後付け). Julia の IR(中間表現) から WebAssembly を作る 試みの解説は3年前に下記の記事を書きました. ただし,簡単な足し算しかできてませんでした. 最近の動向 クリスさんの投稿でかなり進化していることがわかりました. 例 WebAssemblyCompiler.jl にある例を見てみましょう.スマホだとみられなかったのでPCでご覧ください. 上記のスクショは GitHub 上でホスティングされた Documenter.jl のページです.まずすごいのが思ったよりも本格的なことがデモページで公

                                  WebAssemblyCompiler.jl で推しビューワを作った話 - Qiita
                                • C言語へのFFIを含むRustコードをWASMにする(CMakeを添えて)

                                  動機 PlantUMLをwasm化するためにGraphvizへの依存をどうしたものか考えていました。すべてRustで書き直せればそれがいちばん手堅いのですが、Graphvizのソースコードは中々に大きく、それをRustで書き直すのは現実的ではありません。そこで考えたのが、RustからFFIでGrapvizのC++コードを呼ぶようにして、それをwasm化すればいいじゃないかというアイデアです。 探してみると以下のnpmパッケージでGraphvizをEmscriptenでwasm化していました。 これを応用すればやりたいことができるのではないかと考え、まずは最小限のCMakeを使ったFFIをwasm化することを試みることにしました。 結論 最終的には以下にまとめてあります。 . ├── Cargo.lock ├── Cargo.toml ├── ffi-example ...Cのコードを使った

                                    C言語へのFFIを含むRustコードをWASMにする(CMakeを添えて)
                                  • wasmtime serve ってなに? - Qiita

                                    概要 この記事では wasmtime v14.0.3 から利用できるようになったサブコマンドである wasmtime serve について調査した内容を記載します。 Wasm コンポーネントモデルについて調査していると、コンポーネントモデルのドキュメントに HTTP コンポーネントを実行する方法が紹介されていました。 Web アプリケーションでの活用方法を模索している私としては HTTP Proxy World などの仕組みに興味があったので、どのような仕様により実装されているかを確認しました。 Running HTTP components with Wasmtime - The WebAssembly Component Model どんなことができるのか それでは wasmtime serve サブコマンドでどんなことができるかを確認していきます。 wasmtime serve は

                                      wasmtime serve ってなに? - Qiita
                                    • TinyGoでWasmをbuildするまでの内部実装 - Qiita

                                      TinyGoとWasm TinyGoとは組み込み向けアーキテクチャで動作させるGo言語のコンパイラです。サポートしているマイコンボードの一覧は、GitHubのReadMeに記載されています(https://github.com/tinygo-org/tinygo)。 TinyGoの特徴として、Wasmにコンパイルさせることができます。Wasmは今後発展していきそうな技術トピックの1つだと思います。OS非依存にVMで動く、ブラウザで動作するなど、将来性を感じさせてくれる技術です。 本記事では、tinygoコマンドを実行した際、内部で何が起きているのか、コードを追って調べました。 TinyGoでWasmを動かす // main.go package main import "fmt" func main() { fmt.Println("hello world") }

                                        TinyGoでWasmをbuildするまでの内部実装 - Qiita
                                      • wasm-toolsでWebAssemblyコンポーネントを合成する - Qiita

                                        wasm-tools の compose コマンド(wasm-compose)を使った WebAssembly コンポーネントの合成を試してみました。 wasm-tools 1.203 ここでは、item と app という 2つの WebAssembly コンポーネントを作成し、wasm-compose を使って app へ item を合成します。 なお、WebAssembly コンポーネントの作成には cargo component を使用します。 item コンポーネント作成 item 側を作成します。 とりあえず、WIT はこのようにしてみました。 指定した商品の内容を取得する処理を itemfind インターフェースとして定義し、それを export しています。 package component:item; interface itemfind { type item-id

                                          wasm-toolsでWebAssemblyコンポーネントを合成する - Qiita
                                        • Wasm を利用したフレームワーク Spin について(前編) - Qiita

                                          はじめに WebAssembly(Wasm)は元々ブラウザで実行するものでしたが、WASI等のサーバーサイドで実行するための取り組みも進んでいます。 この記事ではサーバーサイドでの活用例の一つとしてSpinというフレームワークを紹介します。 Spinの概要 SpinはFermyon社が開発しているWebAssemblyを使用してマイクロサービスをビルド・実行するためのフレームワークで、以下の特徴があります。 Spin SDKを使用して実装したハンドラをWebAssembly形式でコンパイルしてイベントドリブンで実行する(WebAssemblyを使ったFaaS) ランタイムはWasmtimeを利用 イベントは、HTTPアプリケーションを作成できる「HTTPトリガー」とRedis Pub/Subのメッセージを処理できる「Redisトリガー」の2種類をサポート 複数のプログラミング言語でマイクロ

                                            Wasm を利用したフレームワーク Spin について(前編) - Qiita
                                          • 【Rust / GLSL / WebAssembly】Rust + WebAssembly ではじめる WebGL 入門【前編】 - Qiita

                                            【Rust / GLSL / WebAssembly】Rust + WebAssembly ではじめる WebGL 入門【前編】WebGLGLSLRustWebAssembly ※ この記事は 2022年8月 に作成したものを一部改稿したものです。 WebGL (Web Graphics Library) はハードウェア向けの 3DCG ライブラリである OpenGL のWeb版で、ブラウザ上で GPU アクセラレータを用いて 2D や 3D の CG を描画できる技術です。 JavaScript の Web API として実装されているためプラグイン等は不要で、今日ではスマートフォン向けを含むほとんどのブラウザが対応しています。 WebGL を利用してWebページ上で 3DCG を描画するにあたり、普通に JavaScript で実装するだけではやや面白味に欠けるので、WebAssemb

                                              【Rust / GLSL / WebAssembly】Rust + WebAssembly ではじめる WebGL 入門【前編】 - Qiita
                                            • Flutter WebとWasmGCと最適化 - Qiita

                                              はじめに WebAssembly(WASM)において標準化が最終段階にあるガーベージコレクション(GC)サポート(WasmGC)についてChromeのJavaScriptエンジンであるV8のブログに興味深い投稿がありました。 WasmGCの最大の特徴はもちろん、Dart、Java、Kotlin、Go、C#等のメモリ管理をGCに頼る言語(GC言語)においてWASMをターゲットとしたコンパイラ実装が容易になることです。 また、WASMにコンパイルしたGCエンジンをアプリに同梱するのと比較して、アプリのロード、実行時間、メモリ管理が効率的になります。 しかし、個人的に同ブログで最も興味深かったのは最適化に関する話題でした。 以降、WasmGCにおける最適化について話します。 ツールチェーン最適化(AOT最適化) 下図は同ブログからの引用です。 上図において、各ボックスはコンパイラツールチェーンに

                                                Flutter WebとWasmGCと最適化 - Qiita
                                              • WasmtimeからHTTP通信をする手解き - Qiita

                                                限界開発鯖 Advent Calender 2022 6 日目 32 日目 です (年末に投稿したかったのに… あ, 明けましておめでとうございます) 今話題沸騰中の WASI を Rust からコンパイルして Wasmtime 上から HTTP で echo をするまでの記録です Rust のことについて, 特に断りは入れません 前置き WASI, The WebAssembly System Interfaceという 変態的 革新的技術をご存知でしょうか. めちゃめちゃざっくり言うと, WASM の親戚みたいな感じで, 尚且つ syscall とかが絡むようなこともできちゃうっていうか syscall ができる (多分) すごーいやつです. で, 今回お世話になる WASI の実行環境, ランタイムは Wasmtime というやつです. なんか Lucet ってやつが有ったり無かったり

                                                  WasmtimeからHTTP通信をする手解き - Qiita
                                                • ReactでSQLite Wasmを実行して、localStorageに永続化する最小のサンプル - Qiita

                                                  はじめに SQLiteの正式なWebAssembly版「SQLite3 WASM/JS」が登場 - Publickey SQLite3をWebAssembly化した「SQLite3 WASM/JS」が気になっていたので、React上で動作するサンプルを作成してみました。 (Web標準になれなかったWeb SQL Databaseの代わりに利用できればと) SQLite Wasmの実行方法は3つあります。今回は一番単純な「メインスレッドで実行」パターンを試しました ラップされたWorderをメインスレッドで実行(推奨) Web Workerで実行 メインスレッドで実行 サンプルプログラムの動作確認はこちらをクリック React環境はViteで作成しています localStorageに保存しているため、ブラウザを閉じても永続化されます(最大10MB) 作成したソースはこちら https://g

                                                    ReactでSQLite Wasmを実行して、localStorageに永続化する最小のサンプル - Qiita
                                                  • wasm-encoder で WebAssembly を生成する - Qiita

                                                    [package] name = "sample" version = "0.1.0" edition = "2021" [dependencies] wasm-encoder = "0.31.1" wasmparser = "0.110.0" WebAssembly の生成 次のような内容の WebAssembly を生成し、ファイルへ出力する処理を実装してみました。 2つの引数を合算して 2倍する関数を calc という名前でエクスポート wasm-encoder では次のようにして WebAssembly を組み立てる事ができます。 Module へ各セクションを追加して、finish を呼び出すと WebAssembly のバイナリを生成 TypeSection で型定義(今回は関数の型) FunctionSection で関数定義 ExportSection でエクスポートの定義

                                                      wasm-encoder で WebAssembly を生成する - Qiita
                                                    • WebAssemblyに特化したプログラミング言語「Onyx」にWindowsで入門してみる - Qiita

                                                      Onyxとは WebAssembly(wasm)に特化した新しいプログラミング言語です。 コンパイラはC言語で記述されており、高速なコンパイルを実現しています。 その為、C言語のネイティブライブラリを呼び出すことも可能です。 LLVM や Binaryan などのコンパイラ基盤を使用せず、直接 wasmバイナリにコンパイルするのが特徴です。 ガベージコレクションは無く、メモリの割り当てと解放を意識する必要があり少々上級者向けの言語となっています。 以下のような感じで記述します。 use core { printf, iter } main :: () { for i: 1 .. 10 { fact := factorial(i); printf("{}! = {}\n", i, fact); } } factorial :: (n: i32) -> i32 { return iter.as

                                                        WebAssemblyに特化したプログラミング言語「Onyx」にWindowsで入門してみる - Qiita
                                                      • Rust で waPC を使った WebAssembly の関数呼び出し - Qiita

                                                        waPC (WebAssembly Procedure Calls) による WebAssembly の関数呼び出しを wapc-rs を使って試してみました。 wapc-rs v1.0 waPC とは waPC (WebAssembly Procedure Calls) はその名の通り、WebAssembly でプロシージャコールを実現するための仕様です。 通常、WebAssembly とその呼び出し側(ランタイム等)との間で文字列を直接受け渡したりはできないため、共有するメモリへデータを書き込み、そのポインタやバイトサイズをやり取りする事になります。 そのような手続きをプロシージャコールに特化して仕様化したのが waPC のようです。 https://wapc.io/docs/spec/ によると、呼び出される WebAssembly を Guest、その呼び出し側を Host と表現

                                                          Rust で waPC を使った WebAssembly の関数呼び出し - Qiita
                                                        • Nextjsでsql.jsのwasmを綺麗にプロジェクトに追加する方法 - Qiita

                                                          ブラウザ上でSQLite3を使用したい場合はsql.jsというライブラリを使う事ができます。 sql.jsはSQLite3をwasmでビルドすることでブラウザ上で動くようにしたプロジェクトです。 そのため、SQLiteに互換性があり、データベースファイルを読み込む事もできます。 sql.jsを動かすにはwasmもロードする必要がある sql.jsを動かすためにはwasmが必要になるため、フロントエンドエンドのプロジェクトをビルドする際にsql.jsのjsだけでなく、wasmの方もアクセスできるように追加してやる必要があります。 wasmファイルはインストールしたsql-jsのライブラリ内に存在します。

                                                            Nextjsでsql.jsのwasmを綺麗にプロジェクトに追加する方法 - Qiita
                                                          1