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=1
by 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-stream
Base32EncoderStream
Base32DecoderStream
@std/encoding/base32hex-stream
Base32HexEncoderStream
Base32HexDecoderStream
@std/encoding/base64-stream
Base64EncoderStream
Base64DecoderStream
@std/encoding/base64url-stream
Base64UrlEncoderStream
Base64UrlDecoderStream
@std/encoding/hex-stream
HexEncoderStream
HexDecoderStream
@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の内部実装について解説した記事が公開されています。