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
によって無効化することもできるようです。
https://t.co/cnvsAYd1eZ supports package provenance attestations - it improves supply chain security by linking a package to where it was built and published from.
— Divy Srivastava (@undefined_void) March 1, 2024
Provenance attestations are generated by default on Github actions, your will see a provenance stamp in the page: pic.twitter.com/MikFMX7OBO
それ以外にも以下のような改善が行われています。
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.any
expect.anything
expect.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のリポジトリから閲覧できます。