Fork me on GitHub

2022-07-14のJS: Bun(all-in-one JavaScript runtime)、Vite 3.0.0、600回目の更新

Edit on GitHub 編集履歴を見る

JSer.info #600 - BunというZig言語とJavaScriptCore(WebKitのJavaScriptエンジン)を使って書かれたJavaScript Runtimeが公開されました。

Bunは"all-in-one JavaScript runtime"とあるように、TypeScript/JSXのTranspiler/Bundler/Task Runerを同梱し、npm互換のパッケージマネージャーやNode-API(N-API)互換の実装、FetchなどのWeb APIの実装をもっています。

Denoと似ている立ち位置のRuntimeですが、Node.js互換のAPIやpackage.jsonを扱えるnpm互換の実装を持つことで、Node.jsを置き換えて利用できることが意識されています。

Bunのロードマップは次のIssueで公開されています。

また、Bunをどのように作ったかについては、次の動画でインタビューに答えています。


Vite 3.0.0がリリースされました。

デフォルトのビルドターゲットをESMとDynamic Import/import.metaをサポートしてるブラウザに変更、オプションの変更や削除、デフォルトportを5173に変更されています。
また、minifyに利用するterserパッケージへの依存をオプショナルへ変更、import.meta.globの仕様変更、Wasmファイルのimport方法の変更などが含まれています。


600回目の更新

この投稿で、JSer.infoは600回目の更新となります。
500回目の更新からは大体2年でした。

JSer.infoのslackワークスペースでは、気になるものを投稿したり、更新作業をやったりしています。
気になるものをメモ書きで投稿するぐらいの場所として扱うぐらいでいいと思います。
質問とかあったら調べて答える気もします。

JSer.infoのslackワークスペースは、次のリンクからだれでも自由に参加できます。

また、GitHub Sponsorsでの支援も引き続き募集しています。

JavaScript周りも新しいツールとかがまた続々と出てきている気がします(特に最近はCDN Edgeを意識したものが多い印象)。
今回公開されたBunも、作者が週80-90時間ぐらいを1年かけて作っているそうです。
こういう労力を結構かけて作られるものが増えている感じはします。

新しいツールが出てもウェブ標準互換やNode.js互換やCDN Edgeでの互換性などの互換性は強く意識されている感じはします。
そのため、完全に全く新しい知識を必要とするものは意外と少なくて、既存のものに対して何かフラストレーションがあり、それを置き換えるために新しいツールとして作りながら既存との互換性を意識するといった形式が多い気がします(Bunの場合はフラストレーションが"速度"で、それを置き換えることを目標にして進化してきた)。

一方でGoogle Chromeが巨大となりウェブ標準のCentralization問題や、AppleのiOS/iPadでWebKit以外のブラウザエンジンを許容しないこと対する反発の高まりといった問題なども起きています。

色々な物事が大きくなっている感覚はありますが、それを小さな視点から見ていくのがJSer.infoなのかなと思いました。


ヘッドライン


vite/CHANGELOG.md at v3.0.0 · vitejs/vite

github.com/vitejs/vite/blob/v3.0.0/packages/vite/CHANGELOG.md

vite ReleaseNote

Vite 3.0.0リリース。
デフォルトのビルドターゲットをESMとDynamic Import/import.metaをサポートしてるブラウザに変更、オプションの変更や削除、デフォルトportを5173に変更。
minifyに利用するterserパッケージへの依存をオプショナルへ変更、import.meta.globの仕様変更、Wasmファイルのimport方法を変更など


July 7th 2022 Security Releases | Node.js

nodejs.org/en/blog/vulnerability/july-2022-security-releases/

node.js security ReleaseNote

Node.js 14/16/18のセキュリティリリース。


アーティクル


応答性を示す新しい指標「INP」 | フロントエンドBlog | ミツエーリンクス

www.mitsue.co.jp/knowledge/blog/frontend/202207/06_1002.html

JavaScript performance article

ユーザー操作に対するインタラクションにかかった時間を計測するメトリクスであるINP(Interaction to Next Paint)について。
FIDとは異なりページのロード後に関する値を計測する。
CrUX、LighthouseのTimespanモード、Web Vitalsでの計測データの取り方についてなど


Announcing support for WASI on Cloudflare Workers

blog.cloudflare.com/announcing-wasi-on-workers/

cloudflare WebAssembly article

Cloudflare WorkersでWASIに対応したWebAssemblyファイルを実行するライブラリがサポートされたことについて


Blogged Answers: How I Estimate NPM Package Market Share (and how Redux usage compares to other libraries) · Mark's Dev Blog

blog.isquaredsoftware.com/2022/07/npm-package-market-share-estimates/

npm React redux article

npmパッケージのシェアを読み取るかについて、Reactとステート管理ライブラリを例に解説している記事。
npmパッケージのダウンロード数、GitHubの依存数を絶対数として見た時の問題点や相対的に見る方法についてなど


Flutter前史: ChromeがFlutterになるまで

zenn.dev/mjhd/articles/680a19ae893c1e

Flutter history article

Flutterの歴史を振り返る動画について。
BlinkのForkから始まり、JavaScriptからDartへの切り替え、DOMからCanvasへの切り替えなどについて


NestJS製GraphQLサーバの起動が遅かったので調査した話 - もうずっといなかぐらし

katainaka0503.hatenablog.com/entry/2022/07/09/190340

TypeScript Tools article

GraphQLのスキーマからTypeScriptのファイルを生成するツールのボトルネックを調べて修正した話。
0xを使ったボトルネック分析、ts-morphでのTypeScript ASTの変換のパフォーマンス問題の修正についてなど


Executing shell commands from Node.js

2ality.com/2022/07/nodejs-child-process.html

node.js article

Node.jsのnode:child_processモジュールでのコマンドの実行についての解説。
spawnとexecの解説、spawnとexecの違い、Streamでの出力の読み取り、AbortControllerを使ったプロセスの終了、同期と非同期についてなど


サイト、サービス、ドキュメント


jcubic/wayne: Service Worker Routing library for in browser HTTP requests

github.com/jcubic/wayne

ServiceWorker library

Service Worker向けのルーティングライブラリ


Tailwind DX

gimli.app/tailwinddx.html

Chrome Extension CSS Tools

Tailwind用のChrome拡張。
TailwindのクラスをChrome DevTools上で変更できる。


ソフトウェア、ツール、ライブラリ関係


samchon/typescript-json: Runtime type checkers and 5x faster JSON.stringify()

github.com/samchon/typescript-json

TypeScript JSON Tools library

ttypescriptなどを使ったコード変換とRuntimeを合わせたJSONライブラリ。
TypeScriptの型を使ったRuntimeでの型チェック、JSON.stringify相当の処理を提供する


oven-sh/bun: Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one.

github.com/oven-sh/bun

JavaScript Tools Bun

JavaScriptCoreとZig言語を使って書かれたJavaScriptのRuntime。
Bundler/TSのTranspiler/Task Runerを同梱し、npm互換のパッケージマネージャーやNode-API(N-API)互換の実装、FetchなどのWeb APIの実装をもつ。


oguimbal/pg-mem: An in memory postgres DB instance for your unit tests

github.com/oguimbal/pg-mem

JavaScript node.js PostgreSQL library testing deno

In-memoryのPostgresエミュレーターライブラリ。
Postgresを使ったテストで利用する目的


この記事へ修正リクエストをする
JSer.info Slackに参加する