denoのv1.0.0-rc1の変更点をまとめます。
破壊的変更
(std/ws
) WebSocket
からreceive
メソッドが削除され、直接AsyncIteratorを実装するよう変更された
Deno.Listener
等の型との一貫性を向上させることを目的とした変更のようです。
const ws = await connectWebSocket(endpoint);
for await (const msg of ws) { // v0.42.0までは`ws.receive()`とする必要があった
...
}
deno <script>.ts
形式が廃止された
v0.42.0までは、以下の形式でスクリプトを実行することができました。
$ deno ./mod.ts
v1.0.0-rc1からはこの形式が廃止されます。スクリプトを実行する際はrun
サブコマンドを使用する必要があります。
$ deno run ./mod.ts
JSONファイルのimportが廃止された
セキュリティ上の理由から廃止されました。
window.location
、globalThis.location
、及びself.location
が削除されました
現時点ではWeb標準に準拠できていないなどの理由から削除されました。
(std/io/utils
) copyBytes
関数の引数の順序が変更されました
copyBytes
関数のsrc
引数とdst
引数の順番が入れ替わりました。
v0.42.0におけるDeno.copy
の変更に合わせた修正のようです。
copyBytes(src, dst, off)
copyBytes(dst, src, off)
新機能
(deno install
) スクリプト名が、インストールするファイルの名前を元に決定されるよう変更された
例えば、以下を実行すると、ファイル名であるfile_server.ts
を元に、スクリプト名がfile_server
と決定されます。
$ deno install --allow-net --allow-read https://deno.land/std/http/file_server.ts
$ file_server
この変更に伴い、スクリプト名を明示的に指定できるよう--name
フラグがサポートされました。
例えば、以下を実行した場合、スクリプト名はfs
になります。
$ deno install --name fs --allow-net --allow-read https://deno.land/std/http/file_server.ts
$ fs
(deno fmt
) deno-fmt-ignore
/deno-fmt-ignore-file
コメントがサポートされた
deno fmt
の実行を制御するための特殊なコメントが追加されました。
特定のコードのフォーマットを無効化したいときは、deno-fmt-ignore
コメントを使います。
// deno-fmt-ignore
function add(
a: number,
b: number,
): number {
return a + b;
}
特定のファイルに対してフォーマットを無効化したいときは、deno-fmt-ignore-file
コメントを使います。
// deno-fmt-ignore-file
function add(
a: number,
b: number,
): number {
return a + b;
}
add(
1
, 2);
(std/node/process
) global.process
が設定されるようになった
std/node/process.ts
をimport
とした際に、global
オブジェクトのprocess
プロパティが自動で設定されるようになりました。
WritableStream
/TransformStream
が実装された
const r = new ReadableStream();
const w = new WritableStream();
r.pipeTo(w);
https://github.com/denoland/deno/pull/5042
https://github.com/denoland/deno/pull/4980
Deno.cwd
が--allow-read
を要求するようになった
その他変更点
特定の文字が含まれていると、console.table
を使用した際に、列の幅が揃わなくなる問題が修正された
(std/http
) ServerRequest#respond(r: Response)
が引数のheaders
プロパティを変更しないよう修正された
以下のようにHeaders
オブジェクトを再利用していると、ServerRequest#respond
の呼び出しがhangするケースが存在したため、修正されました。
const headers = new Headers({ 'Content-Type': 'text', });
for await (const req of server) {
...
req.respond({ headers, body });
}
Deno.chdir
が--allow-write
ではなく--allow-read
フラグを要求するようになった
リモートモジュールからローカルモジュールへのimportが禁止された
リモートモジュール(http://...
, https://...
)からローカルモジュール(file://...
)のimportが禁止されました。