Deno v1.15.0

Deno v1.15.0がリリースされました。

Node.jsの互換モードやサブテストの実験的な実装や、URLPatternDeno.killの安定化、deno uninstallコマンドの実装などが行われています。

新機能:

  • CLI
    • Node.js互換モードの実装 (--compat を付与してDenoを実行すると、Node.jsの組み込みモジュールの読み込みが有効化されます)
    • deno uninstallコマンドが実装されました (deno installでインストールされたスクリプトをアンインストールできます)
    • deno lintコマンドで--watchオプションがサポートされました
  • テスト
    • Deno.testでテストケースの入れ子が実験的にサポートされました
    • Deno.testで定義したテストケースがリソースリークによって失敗した際に、より詳細なエラーメッセージが表示されるようになりました (unstableをつけたときのみ)
  • Deno API
    • 下記のAPIが安定化されました
      • Deno.kill
      • Deno.Process.kill
      • Deno.resolveDns
      • URLPattern
    • Deno.startTLS/Deno.connectTLS/Deno.createHttpClientcaCertsオプションがサポートされ、複数のルート証明書を指定できるようになりました
      • 合わせてDeno.startTLSDeno.connectTLScertFileオプションが非推奨化されています
      • また、Deno.createHttpClientcertFileオプションが削除されています
    • Deno.resolveDnsの内部でエラーが発生した際に返却されるエラーが改善されました
  • Web Crypto API
    • SubtleCrypto.deriveKeyが実装されました
    • SubtleCrypto.wrapKeyが実装されました
    • SubtleCrypto.exportKeyでRSAキーをspkiフォーマットでエクスポートできるようになりました
    • SubtleCryptoencryptdecryptメソッドでAES-CBCによる暗号化と復号がサポートされました
    • SubtleCrypto.deriveBitsでECDH (p256)がサポートされました
    • SubtleCrypto.importKeyでraw形式のECDSAキーをインポートできるようになりました
    • SubtleCryptoでAESキーのインポートとエクスポートがサポートされました
  • FFI関連 (Deno.dlopen)
    • バッファ引数(ArrayBuffer)のサポート
    • 非同期呼び出しのサポート
  • WASM
    • スタックトレースにおけるWebAssembly.compileStreaming経由でコンパイルされたWASMモジュールのURLの表示が改善されました
    • WebAssembly.ModuleをWorker間で受け渡せるようになりました
  • その他
    • ファイルシステム関連のAPIでエラーが発生した際に、対象のファイル名がスタックトレースに表示されるよう改善されました
    • DOMException.stackプロパティが実装されました

deno_std v0.111.0

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

std/fs, std/hash, 及びstd/ioで既存APIの非推奨化や破壊的変更が実施されています。

変更点:

  • fs: existsexistsSyncが非推奨化されました
  • hash: 非推奨化されました (cryptoモジュールが追加されたため)
  • io: ディレクトリ構造が大幅に変更されました
    • std/io/bufio.tsが非推奨化されました (今後は代わりにstd/io/buffer.tsから読み込むのを推奨)
    • std/io/streams.tsが非推奨化されました (今後は代わりにstd/streamsから読み込むのを推奨)
    • std/io/ioutil.tsが非推奨化されました (今後は代わりにstd/io/util.tsから読み込むのを推奨)
    • std/io/util.tsで公開されていたAPIがreadRangereadRangeSyncを除いてstd/io/streams.tsへ移動されました
      • 合わせて、iter及びiterSyncがそれぞれiterateReader及びiterateReaderSyncにリネームされています
    • std/io/util.tsreadRangereadRangeSyncstd/io/files.tsへ移動しました
    • std/io/ioutil.tsにあったcopyN/readShort/readInt/readLong/sliceLongToBytesstd/io/util.tsへ移動しました
  • node: dns及びnetモジュールが実装されました
  • node: httpモジュールが部分的に実装されました
  • node/crypto: randomFillSync/randomFill/randomIntが実装されました
  • node/url: UNCパスのサポート
  • node/url: fileURLToPath関数のNode.jsとの互換性が向上しました
  • async/delay: 引数に渡されたAbortControllerがすでにabortされていた場合、rejectされたPromiseを返却するように修正されました
  • encoding/base64url: encode関数に文字列を渡せるようになりました

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

Pagic v1.5.0

DenoのスタティックサイトジェネレータであるPagicのv1.5.0がリリースされました

新機能:

  • グローバルまたはページ単位でKatexマクロを定義できるようになりました
    • グローバルなマクロはpagic.config.tsmd.katexMacrosで定義します
  • markdown-it-deflist が導入されました

https://github.com/xcatliu/pagic/releases/tag/v1.5.0

dnt

Denoで書かれたコードをNode.js向けに変換するツール

JavaScriptやRust向けのAPIも公開されており、ライブラリとしても利用できるようです。


https://github.com/dsherret/dnt