You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Zigで簡単クロスコンパイル 2022を読んでZigを使えばクロスコンパイルできることを知る -> Zigを使えばWASMバイナリが作れる ->つまりmrubyでWASMバイナリが作れるのでは?っと思いついたのでやってみたら、条件付きでWASMバイナリにクロスコンパイルできたのでメモしておく。 WASMバイナリのビルドの手順 まず冒頭に書いた条件付きとなっている理由に着いて説明する。 詳しくは後述するのだがWASMにクロスコンパイルするためにはWASMのexception handling機能を使う必要がある。 この機能は2023/02/20時点ではすべてのWASMランタイムで動くわけではないため、今回はこの機能に対応したNode.jsをランタイムとして使用する。 また、exception handling機能に絡んでもう1つ制約がある。 ここで紹介する手順ではRubyのraise〜cat
ink! 3.0: Parity’s Rust-Based Language for WASM Smart Contracts Gets a Major Updateink!, Parity’s Rust-based programming language for writing Web Assembly (Wasm) smart contracts, has just launched its biggest update to date… ink!, Parity's Rust-based programming language for writing Web Assembly (Wasm) smart contracts, has just launched its biggest update to date. ink! is used by developers in the
What is Wasm/k? Wasm/k (WebAssembly continuations) is an extension of WebAssembly with additional primitive instructions that offer support for full first-class continuations, very similar to call/cc in Scheme / Racket. These instructions allow for significantly more efficient implementations of high-level language features such as green threads. Wasm/k consists of three parts: A fork of Wasmtime,
動画の変換を行うコマンドとして有名なのがFFMPEGです。利用されている方も多いでしょう。数多あるコーデックに対応するために、関連ライブラリも数多く存在します。その結果、インストール時の肥大化、複雑化が避けられません。 何らかの理由でFFMPEGがインストールできないという方は、ffmpeg.wasmを使ってみるのはいかがでしょう。 ffmpeg.wasmの使い方 サンプルのプログラムです。 動画を指定すると、変換が開始されます。 変換完了すると、再生されます。 ffmpeg.wasmはFFMPEGをWebAssembly(WASM)化したものです。実行速度は実バイナリ並ですが、最初にバイナリをダウンロードするので処理開始までに時間がかかります。動画の変換が基本になると思いますが、Webブラウザ内で完結できるのが便利です。 ffmpeg.wasmはJavaScript製のオープンソース・ソ
Feature Name: proc_macro_sandbox Start Date: 2023-08-20 Summary Procedural macro crates can opt-in to precompilation to WebAssembly as part of the publish process. The crate compiles locally (as already done by cargo publish) and then is securely verified by a crates.io-managed service, conceptually similar to docs.rs, which enforces that sources in the crate exactly reproduce the Wasm artifact be
こちらの記事でちょっと書きましたが、久しぶりにEmscriptenを利用してちょっとしたツールを作ったので、そのときにハマったポイントをメモしておきます。一歩目がなかなか難しくビルドが通りませんでしたが、通ってしまえばあとは特に問題は起こりませんでした。何年か前にも使いましたがその頃に比べてだいぶ楽になっているとは思います。 環境はMacなのでWindowsだとまた違ったやり方になりそうな気がします。 コードの書き方 当然ですが普通にC/C++が使えます。一部API(マルチスレッドとか)はサポートされていませんが、基本的には普通のC/C++です。コンパイラそのものやビルドオプションをいじることで、WebAssembly向けのバイナリを生成します。 リンカに渡すオプション ビルド時に指定するリンカオプションを以下にまとめます。 -s AUTO_NATIVE_LIBRARIES=0 なんかごち
はじめに Heroku 無料枠終了のお知らせの衝撃からだいぶ月日がたち、終了まで残り1か月強となりました。皆様におかれましては、有料プランへの移行準備あるいは、別サービスへの移行作業は進められておられますでしょうか。どうすべきか迷っておられる方は、識者の方々がいろいろと比較検討してくださっていますので、ご参考にされるといいと思います。(参考, 参考, 参考, 参考) 私も例にもれず、実験的なアプリはHerokuにデプロイするのが常であり、いろいろとお世話になっていました。慣れもあるかもしれませんが、Herokuの開発UXは非常に優れていると感じており、サーバ側で処理が必要となるようなアプリについては、引き続きHerokuを使ってもいいかなと考えています。一方で、サーバ側の処理がない、いわゆる静的なアプリについては、ソースコードと一緒にリポジトリで管理できるので、GitHub Pagesがお
本エントリはSQLite Advent Calendar 2022の16日目です。 SQLite Release 3.40.0 On 2022-11-16 1.Add support for compiling SQLite to WASM and running it in web browsers. NB: The WASM build and its interfaces are considered "beta" and are subject to minor changes if the need arises. We anticipate finalizing the interface for the next release. SQLiteをWASMにコンパイルし、Webブラウザーで実行するためのサポートを追加しました。 注意:WASMビルドとそのI/Fは「ベータ版」とみ
こんにちは、CX事業本部のうらわです。 以前書いた記事ではC++/EmascriptenでWASMモジュールを作成し、SORACOM Orbit(以下、orbit)を試してみました。 今回はTinyGoで試してみます。 作業環境 Macで作業します。 SORACOM CLIが認証含め利用できる状態を前提とします。 参考: Getting Started: SORACOM CLI をインストールし SIM カードの一覧を取得する | SORACOM CLI 利用ガイド | SORACOM Users $ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H15 $ soracom version SORACOM API client v0.7.0 準備 TinyGoをHomebrewでインストールします
This is a simple proof of concept that shows how you could use HTMX and Rust for frontend development. The basic idea in HTMX is that a webserver is being called on interactions with DOM elements, and returning back snippets of HTML that will replace certain DOM elements. Instead of http requests going to a regular web server, this project shows how service workers can intercept calls to a server
WasmerはどのようにWasmからネイティブバイナリを作っているのか? 最近Wasmランタイムの1つであるWasmerのバージョン3.0.0がリリースされ、色々と機能が追加された。 その中でも個人的に特に気になったのが、Support for creating native executables for any platformという記載。(ニュースでも取り上げられていた) どうやら、WasmバイナリからOSのネイティブバイナリを生成できるようになったらしい。 そもそもどうやって生成してる?とか、CやRustのコンパイラから直接生成したときと比べてパフォーマンスはどうなる?バイナリサイズは?などなど、色々と気になった。 これは調べるしかないということで、今回は**WasmerはどのようにWasmからネイティブバイナリを作っているのか?**を深堀りしていこうと思う。 とりあえず作ってみる
In order for multiple wasm instances to share the same memory, SharedArrayBuffer is required. This means that the COOP and COEP security headers for the webpage will need to be set (see Mozilla's documentation). These may be enabled by adjusting webserver settings or using a service worker. Any blocking API (thread.join(), futures::block_on(), etc) on the main thread will freeze the browser for as
こんにちは。研究開発室の岡田です。 Heroku 無料枠終了のお知らせの衝撃からだいぶ月日がたち、終了まで残り1か月強となりました。皆様におかれましては、有料プランへの移行準備あるいは、別サービスへの移行作業は進められておられますでしょうか。どうすべきか迷っておられる方は、識者の方々がいろいろと比較検討してくださっていますので、ご参考にされるといいと思います。(参考, 参考, 参考, 参考) 私も例にもれず、実験的なアプリはHerokuにデプロイするのが常であり、いろいろとお世話になっていました。慣れもあるかもしれませんが、Herokuの開発UXは非常に優れていると感じており、サーバ側で処理が必要となるようなアプリについては、引き続きHerokuを使ってもいいかなと考えています。一方で、サーバ側の処理がない、いわゆる静的なアプリについては、ソースコードと一緒にリポジトリで管理できるので、G
Wasm(バイナリ)を読む ちょっと前にWasmに入門してみて興味を持ったので、もうちょっと深堀ってみる。 今回は、前回の入門で書いたWasmモジュール(ローカルホスト上でハロワしただけ)を気合で読んで仕様を垣間見てみる。 Wasmモジュール 入門で軽く触れたけどもう少し見てみる。 公式の記載としてはこんな感じ。 WebAssembly programs are organized into modules, which are the unit of deployment, loading, and compilation. 一言でまとめると、WebAssemblyのプログラムを意味のある単位でまとめたもの。 コンパイル後吐き出したり、実行対象として読み込んだり、デプロイしたりする単位。(脳死翻訳) 公式ドキュメントを見てみる 公式ドキュメントにある、Wasmモジュールのバイナリフォーマ
No Glue Code: If you've ever tried to write even a simple "Hello World" with WebAssembly before, you'll know it usually involves writing a bunch of JS and HTML glue. WASM-4 removes all of that, games interface directly with the system through a small API. Minimalist: Fantasy consoles force developers to work with limited resources. This makes them simple to learn, and easier to focus on finishing
Flutter Web and WASM Begin… View the demo here Website: https://web.flatteredwithflutter.com/#/ We will cover briefly about Precise Intro about WASMWeb Assembly (WASM) using AssemblyScriptIntegrate with Flutter Web Intro to WASM WebAssembly (Wasm) is inspired by the Assembly language. Assembly language is the lowest form of text-based human-readable language which generates optimized fast programs
こんにちは、複雑な模様に癒しを感じるWebプログラマのpirosukeです。 今回はWebフロントエンド側で複雑なロジックを実装する際、Wasm形式で作成しておけば そのロジックをサーバ側やコマンドで使いたくなったときに使い回しがしやすいのでは? と思い立ってVueとWasmを組み合わせて使う方法を調べてみました。 Webに依存するUI部分はVueに任せて、Webに依存しないロジック部分をRustで作成したWasmに持たせる形でWebアプリを作ってみます。 Webスピログラフを作る 今回は私が愛してやまない「スピログラフ」をブラウザで楽しむことができる「Web版スピログラフ」というものを作ってみました。 スピログラフというのは、下記のWikipediaに説明があるような、円形の幾何学模様を描くことができるプラスチック製のおもちゃです。 ファミレスのお子様セットのおまけについていたり、100
Thank you to our Diamond Sponsor Neon for supporting our community. DEV Community — A constructive and inclusive social network for software developers. With you every step of your journey. Home DEV++ Podcasts Videos Tags DEV Help Forem Shop Advertise on DEV DEV Challenges DEV Showcase About Contact Guides Software comparisons Code of Conduct Privacy Policy Terms of use
単純に実装すると、webworkerの中からwasmはimportできない。エラーメッセージでググれば同じ轍を踏んだ先人が何人も見つかる。 https://github.com/webpack/webpack/issues/7647 https://www.mizdra.net/entry/2018/10/17/080000 https://imasanari.github.io/blog/wasm-bindgen-with-worker/ craをejectすれば解決はできるんだけど、信条としてそれはやりたくない。じゃあどうすればいいのかというと、worker-loaderでもcomlink-loaderでもreact-app-rewire-multiple-entryでもなく、worker-pluginを使うのが正解だ。(これにたどり着くのに2日くらいかかった) https://git
先日リリースなどでも紹介しましたが、2022年11月26日(土)に開催されるJSConf JP 2022に弊社はPremium Sponsorとして協賛をしています! この記事では、弊社エンジニアから登壇予定のniboshiとteramotodaikiのそれぞれの登壇内容の概要とコメントを紹介しようと思います。 Wasm活用によるポータブルなライブラリの実現に向けたHelpfeel社の取り組み niboshi 11:30 - 12:00 トラックC 発表概要 Helpfeelでは、Wasm(Rust)によるプロダクト独自記法のパーサ実装に取り組んでいます。当日は以下の内容をお話しします。 HelpfeelでWasmを必要としている背景 Wasm実装のメリットと他アプローチとの比較 実装時の具体的な工夫(JSとの繋ぎこみ、テスト、パッケージング、GitHub Packagesでのパッケージ配
公開先 えんぴつチャットの主な特徴・使い方 高解像度の256色キャンバス(A3 600dpi、9921x7016pixel)で軽快な描き味 多人数参加でもUndo/Redo可能 筆圧と傾き検知に対応 参加人数は8人まで(見学参加は現状40人まで) 2本指のタッチ操作でキャンバスのスクロール・拡縮 2本指タップでUndo、3本指タップでRedo キャンバスを原寸サイズで保存可能 動作環境 Windows上のChromeと板タブレット又は液晶ペンタブレット iPad上のSafariとApple-pencil Android上のChrome 等、大体のモダンブラウザで動作します。 注意:FireFoxで使用する場合 「about:config」で設定画面を開いて 「dom.w3c_pointer_events.dispatch_by_pointer_messages」を「true」に変更してくだ
Welcome to the wasm-pack docs! This tool seeks to be a one-stop shop for building and working with rust- generated WebAssembly that you would like to interop with JavaScript, in the browser or with Node.js. wasm-pack helps you build rust-generated WebAssembly packages that you could publish to the npm registry, or otherwise use alongside any javascript packages in workflows that you already use, s
documentのクラスはJS::Objectです。 Rubyではmethod_missingという仕組みがあります。 呼びだされたメソッドが定義されていなかった時、Rubyインタプリタがこのメソッドを呼び出します。 JS.global[:document].querySelectorを呼び出したとき、JS::Object#querySelectorメソッドは定義されていません。 JS::Object#method_missisgメソッドが呼び出されます。 JS::Object#method_missisgメソッド JS::Object#method_missisgメソッドの実装を見てみましょう。 ソースコードは https://github.com/ruby/ruby.wasm/blob/d0e144577f4a947638e9a0d354e12716f10c24a0/ext/js/li
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く