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がサポートされました。
- napi_ref_threadsafe_function
- napi_unref_threadsafe_function
- napi_add_env_cleanup_hook
- napi_remove_env_cleanup_hook
また、Node-API経由で定義したclass
の静的プロパティが適切にハンドリングされるように修正されています。
CLI
--reload
と--watch
を併用した際に、ファイル変更のたびに--reload
によるモジュールの再ダウンロードが行われてしまう問題が修正されていますdeno install
によって作成されるshimにデフォルトで--no-config
が指定されるように修正されています
その他
ReadableStream
のasyncIterator
の挙動に関する互換性が向上されています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
クラスでunref
とref
メソッドが実装されています
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が作成されています。
- 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が作成されています。
Denoの--v8-flags
オプションと同様の形式でDENO_V8_FLAGS
を定義しておくと、この変数に設定されたオプションがV8に適用されるようです。
この機能は今のところDeno v1.30でのリリースが計画されているようです。
How to Build a GraphQL Server with Deno
Denoの公式ブログでGraphQLサーバの実装例が公開されています。