Deno v1.25.2
Deno v1.25.2がリリースされました。
(破壊的変更) Node.js互換モード(--compat
)の削除
Deno v1.25.0でnpmパッケージのサポートが追加されたため、Node.js互換モード(--compat
)が削除されました。
FFI
Rustのdynasmrt crateを使用して、JITの仕組みが再実装されています。
こちらのコメントによると、これにより以下の点などが改善されているようです。
- Windows x64 PCでもv8 Fast APIを使用した最適化が適用されるようになりました。
- Denoからtinyccへの依存がなくなりました。
- SElinuxが有効化されている環境でもFFIが動作するようになりました。
その他には、bool
型のサポートが追加されています。
const dylib = Deno.dlopen(libPath, {
"do_something_with_bool": {
parameters: ["bool"],
result: "bool",
},
});
npmパッケージサポートの改善
pre-releaseタグがサポートされています。(例: npm:some-package@1.2.3-alpha.4
)
また、パッケージのバージョンが指定されなかった際に、そのパッケージの最新バージョンがインストールされるように改善されています。(dist-tagsのlatest
で指定されたバージョンがダウンロードされます)
その他には、npm:
経由で読み込んだパッケージ内ではwindow
変数が削除され、cjsモジュールが再帰的に解析されるように改善されています。
これによりVue.jsがimport
できるようになっているようです。
import { createApp } from "npm:vue@3.2.39"
console.log(createApp);
deno_std v0.155.0
deno_std v0.155.0がリリースされました。
std/encoding/csv
: stringify()
のシグネチャが変更 (破壊的変更)
stringify()
が同期的に動作するように変更されています。
また、columns
オプションがオプショナルに変更されています。
具体的には、以下のように型定義が変更されています。
v0.154.0:
stringify(
data: DataItem[],
columns: Column[],
options?: StringifyOptions,
): Promise<string>
v0.155.0:
stringify(data: DataItem[], options?: StringifyOptions): string
そのため、使用法が以下のように変わっています。
// v0.154.0 (Promise<string>が返却されます)
const csvText = await stringify(data, columns, options);
// v0.155.0 (stringが返却されます)
const csvText = stringify(data, { columns, ...options });
std/dotenv
: アクセスされる環境変数に制限を掛けられるように
restrictEnvAccessTo
オプションが追加されました。
const conf = await config({
restrictEnvAccessTo: ["HOST", "PORT", "DB_URL"],
});
このオプションを指定すると、Deno.env.toObject()
を使用せずに、指定された環境変数のみがアクセスされるため、より安全に環境変数を取り扱えるようになります。
std/log
setup()
が同期的に動作するように変更されています。
- https://doc.deno.land/https://deno.land/std@0.155.0/log/mod.ts/~/setup
- https://doc.deno.land/https://deno.land/std@0.154.0/log/mod.ts/~/setup
std/node
node/stream
の実装がreadable-streamベースのものに変更されました。
これにより、互換性の向上が期待できそうです。
また、url.format
の互換性が向上しており、これによりaxiosが利用できるようになったようです。
import axios from "npm:axios@0.27.2"
const res = await axios.get("https://api.github.com/repos/denoland/fresh");
console.info(res.data);
Fresh v1.1
Fresh v1.1がリリースされました。
変更点については以下にまとめたため、よろしければ参照ください。
Cache API
DenoにCache APIを実装するPRが作成されています。
いまのところ、SQLiteをベースに、CacheStorageやCacheなどのAPIが実装されているようです。
Deno.setRaw
の安定化について
以下のissueでDeno.setRaw
の安定化が提案されています。
安定化にあたって、まず、Deno v1.26でDeno.setRaw
をDeno.stdin
のメソッドに変更することが検討されているようです。
その後、Deno v1.27で--unstable
オプションを外すことが予定されているようです。
Denoの新機能「npmインポート」について予習する
Deno v1.25で実装されたnpmパッケージサポートに関する解説記事が公開されています。