Deno v1.19.3
Deno v1.19.3がリリースされました。
deno test --doc
でtypescript
やjavascript
タイプのコードブロックをチェックできるようになりました。
```ts
let str: string = 0;
```
だけでなく
```typescript
let str: string = 0;
```
のようにコードブロックを記述した際もテストが行われるようになります。
また、パフォーマンスチューニングも実施されており、atob
とbtoa
のパフォーマンスが最大で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
モジュールが追加されました。
現時点では、以下のクラスが提供されています:
- Buffer (
std/io/buffer
のBuffer
クラスのstreams APIバージョン) - LimitedTransformStream (
std/io/readers
のLimitedReader
のstreams APIバージョン) - LimitedBytesTransformStream (
std/io/readers
のLimitedReader
のstreams APIバージョン)
また、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 script
がdeno 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がマージされました。
(まだこの機能は正式リリースされておらず、正式リリース時に使用法が変わる可能性があるためご注意ください!)
使い方としては、まず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
test_suite
というDenoの組み込みテストランナーを拡張するモジュールが公開されています。
このモジュールではdescribe
やit
などに加え、afterEach
やbeforeEach
などのフックが提供されます。
定義したテストケースはdeno test
で実行できます。