Deno v1.20.2

permissionsオプションへの破壊的変更について

Deno v1.20で行われる予定であったpermissionsオプションへの破壊的変更が正式に反映されました。

詳細については下記を参照ください。

deno taskコマンドの改善

deno taskコマンドの内部で使われているdeno_task_shellがアップデートされています。

これにより、cp -R|&のサポートなどが行われています。

deno lspenablePathsオプションがサポート

deno lspenablePathsオプションがサポートされました。

ワークスペース内の特定のフォルダでのみdeno lspを有効化したいが、それ以外のフォルダでは組み込みのJavaScript/TypeScriptランゲージサーバを使いたいようなときに設定することが想定されているようです。


その他の変更

  • --unstableなしでdeno benchを実行した際のエラーメッセージが改善
  • deno upgradeコマンドでDENO_CERT環境変数による証明書の指定がサポート
  • HTTPサーバのパフォーマンスチューニング

など


https://github.com/denoland/deno/releases/tag/v1.20.2

Deno v1.20.3

Deno v1.20.2に続けて、v1.20.3もリリースされています。

セキュリティに関する修正が含まれるので早めのアップデートが推奨されています。

変更点:

  • Denoはfetchの第一引数としてURLの指定をサポートしていますが、この形式での呼び出しが非推奨化されました。 (v2で削除される予定のようです)
  • FFI関連の各API(Deno.UnsafeFnPointer#callなど)でちゃんと--unstableオプションが与えられているかチェックされるよう変更されました。
  • Deno.RunOptionscmdプロパティがreadonlyに変更されました。

https://github.com/denoland/deno/releases/tag/v1.20.3

deno_std v0.131.0

deno_std v0.131.0がリリースされました。

collections

BinaryHeapが追加されました。

import { BinaryHeap } from "https://deno.land/std@0.132.0/collections/binary_heap.ts";

const heap = new BinaryHeap<number>();
heap.push(4);
heap.push(1);
heap.push(10);
heap.push(6);
heap.push(3);
console.log(Array.from(heap)); // [ 10, 6, 4, 3, 1 ]

async

async/abortableモジュールの内部関数であったabortablePromiseabortableAsyncIterableが公開APIに変更されました。

node

  • node/eventsEventTargetが実装されました。
  • node/consoleConsoleコンストラクタが実装されました。
  • worker_threadsパッケージが実装されました。
  • process.allowedNodeEnvironmentFlagsが実装されました。

https://github.com/denoland/deno_std/releases/tag/0.131.0

deno_std v0.132.0

deno_std v0.132.0がリリースされました。

collectionsモジュールにBSTree(二分探索木)とRBTree(赤黒木)が追加されています。

import { BSTree } from "https://deno.land/std@0.132.0/collections/bs_tree.ts";

const tree = new BSTree<number>();
tree.insert(4);
tree.insert(2);
tree.insert(10);
tree.insert(9);
tree.insert(1);
console.log(Array.from(tree)); // [ 1, 2, 4, 9, 10 ]

また、node/fsfs.createReadStream()が実装されています。


https://github.com/denoland/deno_std/releases/tag/0.132.0

deno checkコマンド

Deno本体にdeno checkコマンドを追加するPRが作成されています。

feat: Add “deno check” subcommand for type checking (#14072)

このコマンドは、現在のdeno cacheコマンドと同様に機能します。

また、deno runコマンドなどに--checkオプションが追加されており、将来的にはこれを指定しないと型チェックが行われなくなる想定のようです。

また、DENO_FUTURE_CHECK環境変数も追加されており、これに1を設定した場合もdeno runの型チェックが無効化されます。(将来的なデフォルトの挙動)

現在の予定としては、下記のスケジュールが想定されているようです。(https://github.com/denoland/deno/issues/11786#issuecomment-1076188236)

  • v1.21: deno checkコマンドを追加
  • v1.23: deno runでの型チェックをデフォルトで無効化

deno serveコマンド

Deno本体にdeno serveコマンドを追加するPRが作成されています。

[EXPERIMENT] feat: add deno serve subcommand (#14108)

使い方としては、Requestを引数として受け取りResponseまたはPromise<Response>を返す関数をdefault exportしたファイルを用意します。

export default function handler(req: Request): Response {
  return new Response("Hello world!");
}

このファイルを引数にdeno serveを実行すると、定義されたハンドラを元にHTTPサーバが起動されます。

$ deno serve --port 8888 handler.ts

deployctl v1.1.0

deployctl v1.1.0がリリースされました。

CLIとGitHubアクションでImport mapsファイルの指定がサポートされました (import-mapオプション)


https://github.com/denoland/deployctl/releases/tag/1.1.0

esm.sh v74

?no-requireパラメータがサポートされ、ESMパッケージ中のrequire()の呼び出しを無視できるようになりました。


https://github.com/esm-dev/esm.sh/releases/tag/v74