Deno v1.19.3

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

deno test --doctypescriptjavascriptタイプのコードブロックをチェックできるようになりました。

  ```ts
  
  let str: string = 0;
  
  ```

だけでなく

  ```typescript
  
  let str: string = 0;
  
  ```

のようにコードブロックを記述した際もテストが行われるようになります。

また、パフォーマンスチューニングも実施されており、atobbtoaのパフォーマンスが最大で20倍まで高速化されています。

その他には古いバージョンのglibcを搭載するプラットフォームのサポートが行われています。


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

deno_std v0.129.0

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

streams

deno_stdのWeb streams APIへの移行の一環として、streams/bufferモジュールが追加されました。

現時点では、以下のクラスが提供されています:

また、streams/delimiterモジュールにTextDelimiterStreamが追加されています。

testing/asserts

assertStrictEquals()のシグネチャがAssertion Functionsを使用した形式に変更されています。

具体的には下記コードが動くようになります:

const a = { name: "foo" };
const b = a as unknown;
assertStrictEquals(b, a);
b.name; // => OK

node

大きな変更点として、cryptoパッケージにcrypto.publicEncrypt()crypto.privateDecrypt()などが実装されています。

これにより、node-mysql2パッケージがある程度動くようになったようです。

fmt/colors

ReDoS攻撃への対策などのため、内部で使用されている正規表現パターンが更新されています。


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

deno taskコマンド

2021/02/20の記事にてdeno scriptコマンドを追加するPRが作成され、実装が行われていると記述しました。

このPRが正式にmainブランチへマージされました。

前回の記事の時点から、いくつか変更点があります。

  • deno scriptdeno taskへリネームされています:

    $ deno task start
    
  • deno.json(c)でスクリプトの一覧を定義するフィールドがscriptsからtasksへリネームされています:

    {
      "tasks": {
        "start": "deno run --allow-net mod.ts"
      }
    }
    

上記以外については、2021/02/20の記事と同じ方法で使用できそうです。

このdeno taskコマンドはおそらく次にリリースされるv1.20.0にて含まれそうです。


https://github.com/denoland/deno/pull/13725

deno benchコマンド

Denoにdeno benchコマンドを追加するPRがマージされました。

feat: “deno bench” subcommand (#13713)

(まだこの機能は正式リリースされておらず、正式リリース時に使用法が変わる可能性があるためご注意ください!)

使い方としては、まずbench.ts*_bench.tsなどの名前でベンチマークファイルを作成します。

そして、このファイル内でDeno.bench()を使ってベンチマークを定義していきます。

Deno.bench({
  // ベンチマークの実行回数 (デフォルトは`1000`)
  n: 1000,

  // ウォームアップの実行回数 (デフォルトは`1000`)
  // JITによる最適化を目的として、ベンチマーク開始前に、ここで指定された回数だけ`fn`が繰り返し実行されます (このウォームアップ処理は計測結果には影響しません)
  warmup: 1000,

  // ベンチマークコード
  // `n`+`warmup`の回数だけこの関数が実行されます
  fn: () => {
    doSomeHeavyComputation();
  },
});

そして、deno benchコマンドを実行すると、定義したベンチマークを実行できます。

$ deno bench

この機能もDeno v1.20でリリースされる可能性がありそうです。


https://github.com/denoland/deno/pull/13713

test_suite

udibo/test_suite

test_suiteというDenoの組み込みテストランナーを拡張するモジュールが公開されています。

このモジュールではdescribeitなどに加え、afterEachbeforeEachなどのフックが提供されます。

定義したテストケースはdeno testで実行できます。


https://github.com/udibo/test_suite