JSR(jsr.io)が公開 (パブリックベータ版)
jsr.ioがパブリックベータ版として一般公開されました。
deno_stdやOak, daxなどのパッケージもすでに公開されています。
また、レジストリのソースコードも公開されており、以下のリポジトリで開発が行われているようです。
@deno/x-to-jsr
Deno公式から@deno/x-to-jsrというdeno.land/xパッケージをJSRパッケージに変換するためのツールが公開されています。
jsr-npm
Node.jsやBunなどでJSRパッケージを利用するためのjsr-npmというCLIツールが公開されています。
$ npx jsr --version
0.9.0
# @oak/oakをインストール
$ npx jsr add @oak/oak
# package.jsonにjsrパッケージが追加されます
$ cat package.json | jq '.dependencies["@oak/oak"]'
"npm:@jsr/oak__oak@^14.1.1"
# .npmrcが自動で作成されます
$ cat .npmrc
@jsr:registry=https://npm.jsr.io
esm.sh - JSRの実験的サポートが追加
esm.shにJSRパッケージの実験的サポートが追加されています。
JSR is now in public beta 🔥
— Je Xia (@jexia_) March 1, 2024
FYI https://t.co/GUKvoBGZVC also experimentally supports JSR packages too!
e.g.https://t.co/L21we2hNoq (deno std)https://t.co/veKrSW3bZi https://t.co/w8Z9EZw1Ib
これにより、deno_stdに存在するブラウザー互換モジュールをブラウザーから利用できる余地が生まれそうです。
import { toCamelCase } from "https://esm.sh/jsr/@std/text@0.218.2";
console.info(toCamelCase("DENO_DIR")); // => "denoDir"
Deno v1.41.1
Deno v1.41.1がリリースされました。
jsr
deno add
deno addコマンドが実装されました。
$ deno add @david/dax
$ cat deno.json | jq '.imports["@david/dax"]'
"jsr:@david/dax@^0.39.2"
deno publish
サプライチェーン攻撃への対策のため、provenance attestationが導入されました。GitHub Actions経由でdeno publishを実行すると、provenance attestationが自動で生成されてSigstoreに格納されるようです。この挙動はDISABLE_JSR_PROVENANCEまたは--no-provenanceによって無効化することもできるようです。
それ以外にも以下のような改善が行われています。
deno publishの実行時のみdeno.json/deno.jsoncに加えてjsr.json/jsr.jsoncも探索してくれるようになりましたdeno publishがpackage.jsonに書かれた依存関係を元にbare specifierを解決してくれるように改善されました.gitignoreやdeno.jsonのexcludeなどで指定されたファイルが公開対象から除外されるように変更されました--unstable-bare-node-builtinsと--unstable-sloppy-importsがサポートされました
dynamic import
jsrパッケージが非jsrパッケージへのリモートなdynamic importを含んでいる場合に、実行が拒否されるように挙動が変更されました。
deno compile
deno compileでARM64向けのバイナリの生成がサポートされました。
Node.js互換性
node:httpでserverless-httpやserverless-expressを動かせるようにする対応が行われています。
また、process.argv0に意図する値が設定されないケースがある問題が修正されています。
Web API
Date.prototype.toTemporalInstantの型定義が追加されていますcrypto.randomUUIDの戻り値の型がstringから${string}-${string}-${string}-${string}-${string}に変更されています
deno lsp
Import map expansionのサポートが追加されています。
また、jsr:URLの補完もサポートされています。
CLI
sloppy importsにより.jsを読み込む際に、.d.tsも解決されるように挙動が改善されました。
また、--trace-opsオプションが--trace-leaksへリネームされています。
deno_std v0.218.0
deno_std v0.218.0がリリースされています。
std/collections
Lodashライクなomitとpickが追加されています。
std/expect
以下のAPIが実装されました。
expect.anyexpect.anythingexpect.arrayContaining
std/assert/unreachable.ts
unreachableでオプショナルなreason引数がサポートされています。
std/fs/ensure_symlink.ts
ensureSymlink(Sync)で指定されたパスがすでに存在した際の挙動が変更されています。
// 以下のいずれかの場合、エラーが発生します:
// * linkNameにシンボリックリンクではないファイルが存在する
// * linkNameにtarget以外を指しているシンボリックリンクがすでに存在する
await ensureSymlink(target, linkName)
alosaur v1
alosaur v1がリリースされています。
DIコンテナがTSyringeからStage 3 Decoratorsベースの独自実装へ移行されているようです。
Oak v14.1.0
Oak v14.1.0がリリースされています。
BunやCloudflare Workersのサポートが追加されています。
Survey Results and Roadmap
2024年向けに行われていたDenoのアンケートの結果が公開されています。
データはdenoland/survey-resultsのリポジトリから閲覧できます。