Deno v1.29.3

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

FFI

構造体の値渡しがサポートされています。

const Point = ["i32", "i32"];
const dylib = Deno.dlopen(libpath, {
  make_point: {
    parameters: ["i32", "i32"],
    result: { struct: Point },
  },
  print_point: {
    parameters: [{ struct: Point }],
    result: "void",
  },
});

const point = dylib.symbols.make_point(1, 2);
assert(point instanceof Uint8Array);

dylib.symbols.print_point(point);

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

Node-API

以下のNode-APIがサポートされました。

また、Node-API経由で定義したclassの静的プロパティが適切にハンドリングされるように修正されています。

CLI

  • --reload--watchを併用した際に、ファイル変更のたびに--reloadによるモジュールの再ダウンロードが行われてしまう問題が修正されています
  • deno installによって作成されるshimにデフォルトで--no-configが指定されるように修正されています

その他

  • ReadableStreamasyncIteratorの挙動に関する互換性が向上されています
  • BroadcastChannel.postMessageでのメッセージ送信時に、事前にチャンネルがクローズされていないことが確認されるように修正されています
  • Deno.resolveDnsでサポートしていないタイプのリソースレコードを取得しようとした際に、プロセスがパニックする問題が修正されています

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

deno_std 0.172.0

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

std/node

  • node:clusterパッケージが部分的に実装されました
  • node:netパッケージのSocketクラスでunrefrefメソッドが実装されています

std/collections/binary_heap

BinaryHeapクラスにtoArrayメソッドが追加されています。

std/datetime/difference

difference()quarterが適切に計算されるように修正されています。


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

Deno.createHttpClientへの新しいオプションの導入について

Deno.createHttpClientに新しいオプションを導入するためのPRが作成されています。

feat: add more options to Deno.createHttpClient #17385

  • poolMaxIdlePerHost - コネクションプール内におけるホストごとの待機コネクション数の最大値を設定できます
  • poolIdleTimeout - 待機中のソケットのタイムアウトを秒単位で指定できます (デフォルトは90秒)
  • only - HTTP1のみを使用したい場合は"http1", HTTP2のみを使用したい場合は"http2"を指定します。

このPRはまだマージされてはいませんが、早ければDeno v1.30あたりでリリースされる可能性もありそうです。


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

DENO_V8_FLAGS環境変数のサポート

Denoの内部で使用されるV8の挙動を変更するために、DENO_V8_FLAGS環境変数をサポートするPRが作成されています。

feat(cli): add DENO_V8_FLAGS env var #17313

Denoの--v8-flagsオプションと同様の形式でDENO_V8_FLAGSを定義しておくと、この変数に設定されたオプションがV8に適用されるようです。

この機能は今のところDeno v1.30でのリリースが計画されているようです。

How to Build a GraphQL Server with Deno

Denoの公式ブログでGraphQLサーバの実装例が公開されています。