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
TL;DR: DuckDB-Wasm is an in-process analytical SQL database for the browser. It is powered by WebAssembly, speaks Arrow fluently, reads Parquet, CSV and JSON files backed by Filesystem APIs or HTTP requests and has been tested with Chrome, Firefox, Safari and Node.js. You can try it in your browser at shell.duckdb.org or on Observable. DuckDB-Wasm is fast! If you're here for performance numbers, h
And open a browser at localhost:3000. Features# Our demo version has a few neat features! Postgres 14.5, psql, pg_dump, etc. Save & restore state to/from a file. Save & restore Postgres state to/from the browser storage (IndexedDB). Quick start from a state file or fully reboot the emulator. Memory configuration options from 128MB to 1024MB. Adjust the font size for the terminal. Upload files to t
前提 ミドルウェアのログ可視化 ログサイズは全体で 1 TB 未満 ログは jsonl で出力される まとめ 非同期での可視化 オフラインでの可視化 低コスト DuckDB とは こちらをどうぞ。 DuckDB雑紹介(1.1対応版)@DuckDB座談会 - Speaker Deck サンプル とりあえず動くのが見たい人用です。ソースコードも公開してます。 DuckDB-Wasm + Parquet + S3-compatible object storage + OPFS S3 から Parquet ファイルを fetch して DuckDB-Wasm への登録 OPFS へ Parquet ファイルの保存 OPFS から Parquet ファイルの読み込み DuckDB-Wasm へ登録 SAMPLE 1 の出力 SAMPLE 1 での検索 SAMPLE 1 での Parquet ファイ
この記事は何 以前Qiitaで以下のようなRubyで仮想DOMを扱う方法を記事にしました。 これらで紹介した仮想DOMを使って、Brainf*ckのインタプリタを作ってみたのですが、簡単なプロトタイプを作るのにはかなり便利なことが改めて実感できたので、せっかくなのでライブラリとして公開してみました。 この記事では作成したruby-wasm-vdomについて紹介していきます。 ruby-wasm-vdomとは ruby-wasm-vdomは、文字通りRubyで仮想DOMを扱えるようにするためのライブラリです。 以下のような感じで仮想DOMを全てRubyのみで書くことができます。 <html> <head> </head> <body> <div id="app"></div> <script src="https://getty104.github.io/ruby-wasm-vdom/ind
Required background The post Deprecating and removing Web SQL announced the deprecation of the Web SQL database technology. While the technology itself may be deprecated, the use cases addressed by the technology very much are not, so the follow-up post SQLite Wasm in the browser backed by the Origin Private File System, outlines a replacement set of technologies based on the SQLite database, comp
≈ On April 1, 2018, Cloudflare announced the 1.1.1.1 public DNS resolver. Over the years, we added the debug page for troubleshooting, global cache purge, 0 TTL for zones on Cloudflare, Upstream TLS, and 1.1.1.1 for families to the platform. In this post, we would like to share some behind the scenes details and changes. When the project started, Knot Resolver was chosen as the DNS resolver. We st
import xlsxInit, { Format, FormatAlign, FormatBorder, Formula, Workbook, Image, Url, } from "wasm-xlsxwriter"; // Load the WebAssembly module and initialize the library. await xlsxInit(); // Create a new Excel file object. const workbook = new Workbook(); // Create some formats to use in the worksheet. const boldFormat = new Format().setBold(); const decimalFormat = new Format().setNumFormat("0.00
Kotlin/Wasmでサーバサイドアプリケーションを開発するフレームワーク「KoWasm」が登場。WebAssemblyのガベージコレクションやコンポーネントの活用を想定 JetBrainsでKotlinの開発を担当するZalim Bashorov氏と、VMwareでSpring Frameworkのコミッタとして働くSébastien Deleuze氏は、Kotlinで書かれたコードをWebAssemblyバイナリにコンパイルする機能を備えた「Kotlin/Wasm」を用いて、WebAssemblyベースでサーバサイドアプリケーションを開発するフレームワーク「KoWasm」を発表しました。 KoWasmの開発にはKotlinおよびKotlin/Wasmの開発元であるJetBrainsのKotlin/Wasmチームと協力しているとのことです。 Kotlin/WasmはWebブラウザ上のア
KotlinからWebAssemblyバイナリを生成するコンパイラ搭載、「Kotlin/Wasm」が試験的プレビュー公開。Kotlin 1.8.20ベータ版で Kotlinで書かれたコードをWebAssemblyバイナリとするコンパイル機能を備えた「Kotlin/Wasm」が、Kotlin 1.8.20ベータ版で搭載されたことが明らかになりました。 Kotlin 1.8.20-Beta brings many new features: - AutoCloseable interface and Base64 encoding in stdlib - New JVM incremental compilation enabled by default - Gradle composite builds in Kotlin Multiplatform - New Kotlin/Wasm co
Scala.js 1.17.0 で実験的な Wasm backend がサポートされました! リリースノートに書いてあるとおり、以下のような設定をすることでScala.jsがJSの代わりにWasmモジュール(とモジュールに渡すJS object)を生成することができます。 @JSExport によるモジュールのexportがサポートされていませんが、それ以外のsemanticsはサポートされており、既存のScala.jsアプリケーションを変更なしにWasmにビルドすることが可能なはずです。(もし何か問題があれば教えて下さい!) // Emit ES modules with the Wasm backend scalaJSLinkerConfig := { scalaJSLinkerConfig.value .withExperimentalUseWebAssembly(true) //
WebAssembly Type Reflection JavaScript APIの一部をWebKitに実装したので紹介します。 WebAssembly Type Reflection JavaScript API とは WebAssembly Type Reflection JavaScript APIは、Memory・Table・Global・関数の型に関する情報をJavaScriptから取得するAPIを追加する提案です。https://github.com/WebAssembly/js-types で管理されています。 たとえば、MemoryやTableであればサイズの制限、Globalであれば値の型とミュータビリティ、FunctionであればそのシグネチャをJavaScriptから取得できます。 この提案は、既存のAPIに対して3つの変更を加えます。 1. Memory、Glob
はじめに WASM (WebAssembly) はブラウザを問わす色々な所で実行が可能になる仮想命令セットおよびアーキテクチャです。 WASM を使う事で、ブラウザでネイティブに近いパフォーマンスのコードを実行できる様になります。既に色々な開発言語から WASM を生成できる様になっています。Go 言語も WASM を生成できる様になっています。 WASM を実行できる処理系 WASM を実行できる処理系としてはブラウザや、wasmtime、Lucet、wasm-micro-runtime、wasmer 等があります。 wasmer は Rust で実装された WebAssembly ランタイムで、Go 言語からは wasmer-go というバインディングから利用できます。 Go 言語の WASM の残念なところ しかし Go 言語の WASM は、Rust や他の言語の様に関数を直接呼び
Envoy での WebAssembly サポートと WebAssembly Hub, WASM OCI Image Specification についてWebAssemblyenvoyistioenvoyproxyWebAssemblyHub はじめに この記事では Envoy で WebAssembly がサポートされるまでの背景と WebAssembly Hub, WASM OCI Image Specification に関する情報をまとめていきます。 Envoy で WebAssembly がサポートされるまでの背景 2016年に Istio で Envoy が採用されて以来、Istio ではユーザーの多様なニーズを満たすために豊富な拡張性が提供されてきました。Service Mesh の Data Plane の機能を拡張したい理由としては、独自のアクセス制御システムとの統合、
2024年6月20日に『深掘りRubyKaigi 2024 with kateinoigakukun & ledsun & remore』を開催しました。イベントの内容をほぼ全文文字起こし形式でお届けします。この記事は第1部です。 hey.connpass.com イベントのアーカイブはYouTubeでも公開しています。 登場人物 ゲスト kateinoigakukun/齋藤さん ledsun/中島さん remore/澤田さん STORES fujimura/藤村 大介 mame/遠藤 侑介 自己紹介 fujimura:藤村です。STORES でCTOをやっています。 mame:遠藤です。STORES でフルタイムRubyコミッターをしています。ruby.wasmはkateiさんが開発を始めた初期から話を聞いたりサポートさせてもらったりしてます。ruby.wasmはまだ仕事で使った人はほと
この記事は新野淳一氏のブログ「Publickey」に掲載された「CDNエッジでJS/TS/WASMを実行できる「Vercel Edge Functions」正式リリース。Node.jsサブセットを目指す」(2022年12月26日掲載)を、ITmedia NEWS編集部で一部編集し、転載したものです。 Next.jsの開発元であり、Webアプリケーションのホスティングサービスなどを提供する米Vercelは、CDNエッジでJavaScript/TypeScript/WebAssemblyを実行できるサーバレス基盤「Vercel Edge Functions」の正式リリースを発表しました。 Vercel Edge FunctionsはMicroVMにChromeブラウザで採用されているJavaScriptエンジンのV8を組み込むことで、軽量かつ高速なJavaScript/TypeScript/W
mavisとは mavisは私がフルスクラッチで開発している自作OSです。 これをビルドしてmake runするとshellが立ち上がり、"hello"コマンドを実行すると"Hello World!"が表示されます。 現状できることはたったこれだけですが、面白いのはその仕組みです。実は上の画像のshellとhello worldプログラムはどちらも WASMバイナリ です。そしてkernelは低レベルなメモリ管理機能とタスク管理機能を除くと、「WASMバイナリをタスクとして実行する」以外の機能を持ちません。つまりkernelがWASM Runtimeであり、それによって"ユーザーランド"を実現しているということです。 このOSは「仮想メモリ」を持ちません。なぜならWASMバイナリは位置独立だからです。WASMはスタックマシンベースの命令セットなので、スタックさえ用意すればどこでも、何度でも
Three years ago we successfully sped up the Notion app for Mac and Windows by using a SQLite database to cache data on the client. We also use this SQLite caching in our native mobile application. This year we’ve been able to deliver this same improvement to users who access Notion through their web browsers. This article is a deep dive into how we used the WebAssembly (WASM) implementation of sql
WebAssembly (Wasm) is an universal low level bytecode that runs on the web. It is a compilation target for languages like Rust, AssemblyScript (Typescript-like), Emscripten (C/C++), and much more! Wasm offer a compact binary format with predictable performance, and portability to run alongside Javascript and other host languages. Wasm is currently shipped in all major browsers, and has runtimes me
本記事はsudachiclone-rs開発の続編であり、Rustのコードをwasmにし、WebWorker内で状態を持ったまま使いつつ、Typescriptで開発する、ということをやる場合にハマりそうなところに悉くハマった気がするので、その備忘録です。 成果物 レポジトリ: Rustで開発したsudachiclone-rsをwasmにコンパイルし、WebWorker内で動くようにしたもののデモ。 デモページ: 上記をhostingしています。pipから辞書を取ってきてブラウザ上のみでわかち書きできるデモ。 使ったツール群 typescript-definition Rustのstructやfunctionからtypescriptのd.tsを生成してくれる優れもの。crates.ioにあるのもを使っていないのは今のRustでは動かないから。(詳しくはissue参照) wasm-bindgen
Zigのコミッタの方から有益なフィードバックを頂いたり、Wasmランタイムのメンテナからコメントしてもらったり、Twitterでプロ開発者に助けてもらったり、と良い話が多かったのでそのへんの話も含めつつメモとして残しておきます。 最初に断っておきますがWasmにもZigにも特に詳しくないです。 概要 実装 GoのWasmランタイム TinyGoのExample ランタイムの初期化 関数の実行 別の渡し方 Zigの実装 malloc free ptrToString stringToPtr 呼び出し側 サンプル まとめ 概要 自分の開発しているOSSでWebAssemblyによるプラグイン機能に対応したのですが*1、Wasmは仕様が小さく関数の引数や戻り値もi32/i64/f32/f64だけで頑張るみたいな世界なので直接ユーザに生のWasm用コードを書いてもらうのは利便性の面で厳しいです。*
Ruby 3.2 から WASI ベースの WebAssembly がサポートされるということで、すでに Preview 版も公開されています。 この記事は、正直 WebAssembly とか WASI とかよく分かっていない1人間がブラウザ上で Ruby を色々動かしてみる記事です。とりあえず動けばいいという感じなので、おそらく無駄な記述も多いかと思います。ご了承ください。 作るもの テキストボックス等に記述された任意の Ruby スクリプトをブラウザ上で動かして、その実行結果を得られるようなもの。 要するに RubyOnBrowser とか TryRuby とかの二番煎じを作りたいのです。 とりあえず Ruby スクリプトを動かす ruby.wasm の github 上に Quick Start (for Browser) が載っているので、まずはこれをほぼそのまま。 <html>
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する本連載「Cloud Nativeチートシート」。今回は、最近注目されている「WebAssembly」について復習しながら、WebAssemblyのアプリケーションをKubernetesで試す方法を紹介します。 Webブラウザからサーバサイドへ~注目されるWebAssembly~ ブラウザ上で高速にアプリを実行する仕組みとして、WebAssembly(「Wasm」と省略されることもある)が注目されています。W3C(World Wide Web Consortium)で標準化されていることもあり、2017年ごろには既に主要なブラウザはWebAssemblyをサポートしています。さらに「Zoom」「Google Meet」「Google Earth」「Unity」などでWebAssemblyが
Server-first: Designed for servers, not CLIs nor GUIs. Standard-based: Built-in APIs are based on web platform standards, such as fetch(). Nanoservices: Split your application into components that are decoupled and independently-deployable like microservices, but with performance of a local function call. When one nanoservice calls another, the callee runs in the same thread and process. Homogeneo
This post is best described as a technology demonstration; it melds together web servers, plugins, WebAssembly, Go, Rust and ABIs. Here's what it shows: How to load WASM code with WASI in a Go environment and hook it up to a web server. How to implement web server plugins in any language that can be compiled to WASM. How to translate Go programs into WASM that uses WASI. How to translate Rust prog
cloudflare workers routes を利用するので、cloudflare が ns を持つドメインを持っている必要があります。 import { Hono } from "hono"; import { createMiddleware } from "hono/factory"; import { optimizeImage } from "wasm-image-optimization"; import { cache } from "hono/cache"; const app = new Hono(); const via = createMiddleware((c, next) => { if (c.req.header("via")) { console.log("pass through", c.req.raw.url); return fetch(c.req
Ruby on Rails アプリケーションである Redmine の Wasm 化を試しました。 基本機能は動作しましたが、ディスクアクセスが必要な機能(例: 添付ファイルのアップロード)は動作しませんでした。 Mastodon in the browser demo を参考に、Redmine を Wasm 化する手順を解説します。 前田 稔です。プログラミング言語Rubyの国際会議 RubyKaigi 2024 のセッション「RubyGems on ruby.wasm」で紹介された Mastodon in the browser demo を拝見し、 Redmine も同様にブラウザ内で動作させられるのではないかと考えました。本記事では、その検証結果と Wasm 化の手順についてまとめています。 期待と検証結果 Mastodon は Ruby on Rails で開発されたアプリケーシ
はじめに 先日話題になった「Webの将来はサーバサイドレンダリング(SSR)に回帰していく」という記事によると、Isomorphic /Universal JavaScriptのような、単一のコードでサーバーとクライアントの両方で実行できるアプリケーションを構築する手法が再び注目を集めているようです。そこで、本記事では以前書いたタスクボードアプリを題材として、Isomorphic RustなフロントエンドフレームワークであるLeptosを使ったサーバーサイドレンダリング (SSR) とハイドレーションを行う方法を紹介します。 なお、ソースコードはGitHubに上げていますが、前回のブログ記事からLeptosのバージョンが上がっており、前回から多少ソースコードを変更しています (本記事ではLeptos v0.2.4を使っています)。 前回のおさらいと今回の概要 前回作ったアプリはクライアント
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く