JSR(jsr.io)が公開 (パブリックベータ版)

jsr.ioがパブリックベータ版として一般公開されました。

deno_stdOak, 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パッケージの実験的サポートが追加されています。

これにより、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 publishpackage.jsonに書かれた依存関係を元にbare specifierを解決してくれるように改善されました
  • .gitignoredeno.jsonexcludeなどで指定されたファイルが公開対象から除外されるように変更されました
  • --unstable-bare-node-builtins--unstable-sloppy-importsがサポートされました

dynamic import

jsrパッケージが非jsrパッケージへのリモートなdynamic importを含んでいる場合に、実行が拒否されるように挙動が変更されました。

deno compile

deno compileARM64向けのバイナリの生成がサポートされました。

Node.js互換性

node:httpserverless-httpserverless-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ライクなomitpickが追加されています。

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のリポジトリから閲覧できます。