Deno v1.24.3
Deno v1.24.3がリリースされました。
fetch()
でSOCKSがサポート
検証はしていないのですが、HTTP_PROXY
やHTTPS_PROXY
環境変数にsocks5:
またはsocks5h:
形式のURLを指定すると利用できそうです。
Deno.UnsafePointerView
への機能追加
Deno.UnsafePointerView
に以下の3つのstaticメソッドが追加されています。
これらのメソッドの挙動は、Deno.UnsafePointerView
の同名のインスタンスメソッドとほぼ同様です。
compilerOptions.jsxImportSource
が指定されていると、deno.json(c)
をimportできない問題が修正
次のように、compilerOptions.jsxImportSource
が設定されたdeno.json
が定義されていたとします。
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "preact"
},
"importMap": "./import_map.json"
}
このファイルをImport assertionsを使用して読み込もうとすると、エラーが発生する問題が修正されています。
import config from "./deno.json" assert { type: "json" }; // => `error: Loading unprepared module`
console.log(config);
この修正は、Freshにおけるfeat: support JSX automatic mode (#610)の対応のために実施されたようです。
その他の修正
--allow-net
に空の値を指定するとプロセスがパニックする問題が修正されています。--location
オプションが指定されていないときはglobalThis.location
が上書きできるようになりました。
https://github.com/denoland/deno/releases/tag/v1.24.3
deno_std v0.152.0
deno_std v0.152.0がリリースされました。
std/crypto
: subtle.timingSafeEqual()
が追加
import { crypto } from "https://deno.land/std@0.152.0/crypto/mod.ts";
const a = new Uint8Array([102, 111, 111, 98, 97, 114]);
const b = new Uint8Array([102, 111, 111, 98, 97, 114]);
crypto.subtle.timingSafeEqual(a, b); // => `true`
この機能はまだ標準化はされていないため、ひとまずDeno本体ではなくstd/crypto
に導入されたようです。
std/testing/mock
: stub()
で未定義のメソッドのスタブがサポート
stub()
で、未定義のメソッドに対するスタブを作成できるようになりました。
const obj = {};
stub(obj, "doSomething", () => 123); // v0.151.0までだとエラー
https://github.com/denoland/deno_std/releases/tag/0.152.0
deno init
コマンド
まだDraftの段階ですが、Deno本体にdeno init
コマンドを追加するPRが作成されています。
$ deno init path/to/dir
今のところ、このコマンドによって、
- エントリポイント (
mod.ts
) - テストファイル (
mod_test.ts
) - 設定ファイル (
deno.json(c)
) - Import mapsファイル
- vscodeに関する設定
などのファイルを生成することが検討されているようです。
https://github.com/denoland/deno/pull/15469
deno bundle
コマンドを非推奨化し、deno pack
コマンドを追加する提案
以下のissueでdeno pack
コマンドを追加する提案が行われています。
背景としては、deno bundle
コマンドに関する以下の問題などの解消を目的としているようです。
- 用途に関する誤解
deno bundle
コマンドに対して、Webpackなどの汎用的かつ高機能なバンドラー相当の機能を求める要望が多くあるようです。- しかし、この
deno bundle
コマンドは、Denoで書いたコードを依存関係のダウンロードをせずに簡単に再配布できるようにすることを目的に導入されたものであり、フロントエンド開発などの複雑な用途での利用が想定されたものではありませんでした。
- 安定性に関する問題
- 現在、
deno bundle
コマンドの内部で使用されているswcは、トランスパイル用途では安定しているものの、バンドラーとしての用途では問題が発生することがあるようです。
- 現在、
これらの問題の解消を目的として、deno pack
という新しいコマンドを導入することが提案されています。
このdeno pack
コマンドでは、swcを使用してSystemJS形式のモジュールを出力することで、deno bundle
コマンドが抱えていた安定性に関する問題を解消することが計画されているようです。
ただし、deno bundle
コマンドと同様に、高機能なバンドラーとしての利用は想定されておらず、そういった用途では、引き続きesbuildなどのサードパーティパッケージの使用が推奨されるようです。
https://github.com/denoland/deno/issues/15463
deno-jaのLP
hashrockさんによって、deno-jaコミュニティのLPが作成されています。
FreshやDeno Deployなどを活用して作成されています。
Denonomicon
Deno FFI(Deno.dlopen
)などのコントリビューターであるAapo Alasuutariさんによって、Deno FFIの解説ページが公開されました。
deno_gi
FFIベース(Deno.dlopen
)のGTKなどのバイディングライブラリ