Deno v2.0.0-rc.0
Deno v2.0.0-rc.0がリリースされています。
アップデートについて
今回、GitHub Releaseは作成されていないようなので、deno upgradeによってアップデートする必要がありそうです。RCバージョンへのアップデートはDeno v1.46でサポートが入っているため、それ以前のバージョンをお使いの場合は、一度、v1.46を経由してからアップデートする必要がありそうです。
$ deno upgrade 2.0.0-rc.0
もし現在のDenoの実行可能ファイルを上書きしたくない場合は、--outputオプションを使えば回避できます:
# `./deno-2.0.0-rc.0`に保存します
$ deno upgrade --output deno-2.0.0-rc.0 2.0.0-rc.0
直近の変更点について
コミットログを参考に、v2.0.0-rc.0に入っている可能性がありそうな内容について紹介します
⚠️ここで書いている内容には推測も含まれています。もし機能が入っていなそうでしたら、すみません🙏
DENO_FUTURE=1設定時の振る舞いのデフォルト化
DENO_FUTURE=1を設定した際の振る舞いがデフォルト化されたようです。
BREAKING:
DENO_FUTURE=1by default, or welcome to Deno 2.0 (#25213)
具体的には、以下のような変更がデフォルトで適用されます:
Deno.*配下の非推奨APIが削除されますwindow変数が削除されます- FFIやWebGPU APIなどが
--unstable-*なしでも有効化されます - Import Assertionが無効化されます
package.jsonがあればBYONMがデフォルトで有効化されます
--node-modulesオプション
Deno v2 向けに--node-modulesというフラグが追加されています。
⚠️上記のコミットログ内に含まれているため紹介しますが、試したところうまく動いていないようにも見えるので、もしかしたらこの変更はまだv2.0.0-rc.0には入っていない可能性もあるかもしれません🙏
以下の3種類のモードが指定できるようです:
| モード | 説明 | 備考 |
|---|---|---|
local-auto | おそらく、Denoがnode_modules/を作成してくれるモード | |
local-manual | おそらく、BYONMが有効化されます | v2ではpackage.jsonがあれば自動でBYONMが有効化されるはずなので、このモードを指定する場面はおそらく多くはなさそうに思われます |
global-auto | おそらく、Denoがnode_modules/を作成せずにグローバルキャッシュにのみnpmパッケージを保存するモード |
このモードは--node-modulesだけでなく、deno.jsonのnodeModulesで設定することも可能なようです。
この変更に伴い、--node-modules-dir(nodeModulesDir)は削除される予定のようです。
Deno v1.46.2
Deno v1.46.2がリリースされています。
v1.46.0でのfetch()の改善について
Deno v1.46.0で導入されたfetch()のリクエストボディでのAsyncIterable<Uint8Array>のサポートがrevertされています。
意図せぬリグレッションが判明したことが背景のようです:
この対応については、仕様を改めて検討してから再導入することが考えられているようです (Add async iterable<T> type to WebIDL (whatwg/webidl#1397))
node:worker_threads
Workerでonlineイベントが適切なタイミングで発火されない問題が修正されています。
Parcelのサポートに向けた対応のようです。
node:async_hooks
async contextのトラッキングが改善されています。
node:crypto
JWKのサポートに関して様々な改善が行われています:
createPublicKeyで作った公開鍵のJWK形式でのexportがサポートcreatePublicKeyでJWK形式のEC公開鍵の取り込みがサポートcreatePublicKeyとcreatePrivateKeyで"kty": "OKP"形式のJWK鍵がサポートcreatePublicKeyで"kty": "RSA"形式のJWK鍵がサポート
node:cluster
log4jsを動かすため、node:clusterのAPIが改善されています。
deno run <task>
deno runコマンドでdeno.jsonのtasksで定義されたタスクを実行する際に、名前に:を含むタスクが実行できない問題が修正されています。
deno install
Deno v2に向けて、BYONMが有効化され かつ node_modules/がない場合に、npm installではなくdeno installの実行が提案されるように修正されています。
error: Could not resolve "picocolors", but found it in a package.json. Deno expects the node_modules/ directory to be up to date. Did you forget to run `deno install`?
deno_stdのリリース
deno_stdがリリースされています。
@std/encoding@1.0.3
@std/encoding@1.0.3がリリースされています
@doctor/encoding-streamが@std/encodingに取り込まれました。
以下のモジュールが追加されています:
@std/encoding/base32-streamBase32EncoderStreamBase32DecoderStream
@std/encoding/base32hex-streamBase32HexEncoderStreamBase32HexDecoderStream
@std/encoding/base64-streamBase64EncoderStreamBase64DecoderStream
@std/encoding/base64url-streamBase64UrlEncoderStreamBase64UrlDecoderStream
@std/encoding/hex-streamHexEncoderStreamHexDecoderStream
@std/http@1.0.4
@std/http@1.0.4がリリースされました。
@std/http/routeでmethodオプションに指定されたHTTPメソッドがルーティングの際に考慮されていなかった問題が修正されています。
@std/assert@1.0.3
@std/assert@1.0.3がリリースされています。
新しいAPIとしてassertNever(@std/assert/never)が追加されています。指定された値がnever型であるかどうかをチェックしてくれます。
@std/path@1.0.3
@std/path@1.0.3がリリースされています。
extname(@std/path/extname)とdirname(@std/path/dirname)の引数としてURLオブジェクトがサポートされています。
@std/testing@1.0.1
@std/testing@1.0.1がリリースされています。
@std/testing/typesのIsExact型で、意図せずして型チェックが通ってしまうまたは失敗してしまうケースがある問題が修正されています。
@std/front-matter@1.0.3
@std/front-matter@1.0.3がリリースされています。
@std/front-matter/yaml:
extract()の引数としてParseOptions(@std/yaml/parse)を渡せるように改善されています。
@std/cache@0.1.1
@std/cache@0.1.1がリリースされています。
新規APIとしてTtlCache(@std/cache/ttl-cache)が追加されています。
@std/csv@1.0.2
@std/csv@1.0.2がリリースされています。
stringify()にreadonlyな配列を渡せるように型定義が改善されています。
@std/dotenv@0.225.1
@std/dotenv@0.225.1がリリースされています。
不正な形式のキーが.envに存在した場合、警告が表示されるよう挙動が改善されています。
NativeScript macOS Node-API Preview
NativeScriptの公式ブログで@nativescript/macos-node-apiパッケージが紹介されています。
このパッケージはNode.jsに加えてDenoでも動作するようです。
DjDeveloperr/NSBallのリポジトリでは、このパッケージとNode.jsまたはDenoを使って、macOS向けのデスクトップアプリを作成する例が公開されています。
Deno DeployにおけるWeb Cache APIのサポートについて
Deno DeployにおけるWeb Cache APIのベータサポートについてアナウンスされています。
この記事では、HTTPヘッダーに基づいたキャッシュの有効期間の管理や内部の仕組み、料金設定などについて解説されています。
Deno KV internals: building a database for the modern web
Denoの公式ブログでDeno KVの内部実装について解説した記事が公開されています。