2024/01/08〜2024/01/14の最新情報

Deno v1.39.3 Deno v1.39.3がリリースされています。 Node.js互換性の改善 node:fs: cp/cpSync/promises.cpが実装されました。 deno.jsonなどでnodeModulesDir: falseが設定されている場合、package.jsonがある場合でもnpmパッケージを必要に応じてダウンロードするように挙動が変更されました。 deno compile deno compileコマンドが--unstable-kvなどの--unstable-*オプションに対応しました。 deno lsp Deno.testのテスト名にテンプレートリテラルが与えられているテストケースがTest code lensで検出されない問題が修正されています。 Web API SubtleCrypto#importKeyとSubtleCrypto#generateKeyでP-521がサポートされています。 また、EventSourceの型定義が追加されています。 Androidサポート Androidでのビルドがサポートされています。 https://github.com/denoland/deno/pull/19437 jsr: ⚠️jsr:は開発中の機能のため、基本的にまだ利用はできません。 deno_graphに導入された“fast check”という仕組みを利用して、jsr:からダウンロードされたモジュールの型チェックを高速化する仕組みが導入されているようです。対象パッケージのpublic APIとその型情報のみを含むグラフを構築することで、型チェックの高速化が図られているようです。 feat(unstable): fast subset type checking of JSR dependencies (denoland/deno#21873) deno_std v0.212.0 deno_std v0.212.0がリリースされました。 非推奨モジュール・APIの削除 std/signal 非推奨化されていたstd/signalモジュールが削除されました。 std/log std/log/levels.ts: LogLevelsの数値キーが削除されました。(getLevelByNameへの移行が推奨されています) ログレベルをnumber型で取り扱っていた箇所がLogLevel型で取り扱われるように修正されています。 std/semver 以下のAPIやファイルが削除されています。 削除対象 移行先 SemVerComparator Comparator canParse(version: SemVer): boolean canParse(version: string): boolean std/semver/cmp....

January 14, 2024

2024/01/01〜2024/01/07の最新情報

Deno v1.39.2 Deno v1.39.2がリリースされました。 Node.js互換性 BYONMとImport Mapsを併用できるようになりました。 また、import.meta.resolve()でnpm:URLがサポートされています。 import.meta.resolve("npm:express"); // => "npm:express" Node.jsの組み込みパッケージに関しても様々な改善が行われており、試せてはいないのですが、next buildが動作するようになったようです。 node:dgram: Socketのunref/refが実装 node:http: ClientRequest#setNoDelayが実装 node:crypto: aes-192-ecbとaes-256-ecbがサポート node:process: process.abort()が実装 node:os: os.machine()が実装 node:os: os.cpus()の互換性の向上 (今まではダミーの値が返されていました。) node:test: TestContext#testで2段階以上のネストがサポートされました。 deno lsp V8インスペクターへの接続がサポートされています。 vscode_deno v3.31.0で"deno.internalInspect"オプションが追加されており、これにtrueなどを設定すると有効化されるようです。 Debugger listening on ws://127.0.0.1:9222/ws/<id> Visit chrome://inspect to connect to the debugger. compilerOptions.jsxImportSourceで指定されたモジュールをdeno lspが自動でキャッシュするように挙動が改善されました。 Test code lensでDeno.test.only/Deno.test.ignoreを使用して定義されたテストケースが検出されるように改善されました。 deno check deno checkコマンドでdeno.jsonのexcludeの内容が反映されるように改善されました。 Deno KV DBがクローズされたらウォッチャー(Deno.Kv#watch)も自動で停止するように挙動が改善されています。 Object.groupBy 戻り値の型がRecord<Key, Item[]>からPartial<Record<Key, Item[]>>に変更されました。 deno_std v0.211.0 deno_std v0....

January 7, 2024

2023/12/18〜2023/12/24の最新情報

Deno v1.39.1 Deno v1.39.1がリリースされました。 Deno.serveのUnixドメインソケットサポートの安定化 Deno.serveのUnixドメインソケットサポートが--unstableなしで動作するようになりました。(Deno v1.39) deno coverage deno coverageの実行時にディレクトリの省略が任意に変更されました。(デフォルトとしてcoverage/が使われます) deno jupyter importされたモジュールでDeno.testを使っているとパニックする問題が修正されています。 Node.js互換性 Prismaなどが動かなくなってた問題が修正されているようです。(https://github.com/prisma/prisma/issues/2452#issuecomment-1866409306) また、node:cryptoで以下の対応が実施されています。 pseudoRandomBytes()が実装されています。 fork()から返却されたChildProcessに対してkillを呼ぶと、プロセスがハングする問題が修正されています。 deno_std v0.210.0 deno_std v0.210.0がリリースされました。 非推奨モジュール・APIの削除 std/crypto/to_hash_string.tsが削除されました。(encodeHexやencodeBase64への移行が推奨されます。) std/encoding: ascii85.ts/base32.ts/base58.ts/base64.ts/base64url.ts/hex.tsからencodeとdecodeが削除されました。 std/http/method.tsが削除されました。 非推奨化 std/semver parse()とcanParse()からSemVerを引数に取る形式が非推奨化されました。 rcompare.tsが非推奨化されています。 isSemVerComparatorがisComparatorへリネームされています。(isSemVerComparatorは非推奨化されています) SemVerComparatorがComparatorへリネームされています。(SemVerComparatorは非推奨化されています) std/encoding/base32.ts byteLength()が非推奨化されています。 cli/spinner.tsが実装 CLI向けにスピナーを表示できます。 import { Spinner } from "https://deno.land/std@0.210.0/cli/spinner.ts"; const spinner = new Spinner({ message: "Loading..." }); spinner.start(); try { await doSomething(); } finally { spinner.stop(); } std/logでJSONL形式でのロギングがサポート handlersのセットアップ時に、formatterにjsonFormatterを指定すると有効化されます。...

December 24, 2023

2023/12/11〜2023/12/17の最新情報

Deno v1.39 Deno v1.39がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.39 deno_std v0.209.0 deno_std v0.209.0がリリースされました。 非推奨モジュール・APIの削除 以下の非推奨化されていたモジュールやAPIが削除されています。 std/fs/eol.ts: EOLがenumから文字列("\n" | "\r\n")に変更されています。 std/async/deferred.tsが削除されています。(Deno v1.38からPromise.withResolversがサポートされたため) std/bytes/concat.ts: スプレッド形式のシグネチャ(concat(...buf: (Uint8Array | Uint8Array[])[]): Uint8Array)が削除されました。 std/collections: binary_heap.tsなどのデータ構造に関わるファイルが削除されています。 deno_std v0.207.0でstd/data_structuresが追加されていて、今回削除されたデータ構造はそちらから利用できます。 std/datetime/to_imf.tsが削除されました。(Date#toUTCString()の使用が推奨されます。) std/http/server_sent_event.tsが削除されました。(std/http/server_sent_event_stream.tsの使用が推奨されます。) 既存モジュール・APIの非推奨化 std/types.d.tsが非推奨化されました。 今後はWeb Streams APIの使用が推奨されます。 また、std/io/types.d.tsが追加されており、こちらはdeno_std v1までは維持されるようなので、もしstd/types.d.tsを利用したいケースではこちらの利用が推奨されます。 std/log: LogLevelsがenumから通常のオブジェクトへ変更されています。(これに伴い、一部フィールドが非推奨化されています。) これに合わせてLogLevel型が追加されており、v0.211.0でログレベルをnumber型として扱っていた箇所がLogLevelに変更される予定のようです。 std/front_matter: Formatが非推奨化されています。 std/webgpuが追加 Deno v1.39でのWebGPU APIの再導入に伴い、deno_stdにstd/webgpuモジュールが追加されています。 WebGPU APIに関連するユーティリティが提供されているようです。 std/netが追加 新規モジュールとしてstd/netが追加されています。 現在はgetAvailablePort()というシステムの空きポートを返してくれる機能のみが提供されています。 std/iniが追加 新規モジュールとしてstd/iniが追加されています。 INIファイルの解析やJavaScriptオブジェクトからの生成がサポートされています。...

December 17, 2023

2023/11/20〜2023/11/26の最新情報

Deno v1.38.3 Deno v1.38.3がリリースされました。 deno publishコマンドについて ⚠️パッケージレジストリが公開されていないため、この機能はまだ利用できません。また、この機能には、今後、大きな変更が入る可能性があります。 Denoの新しいパッケージレジストリへパッケージを公開するためのコマンドが実装されているようです。(helpメッセージにはこのコマンドは表示されず、まだ使用は推奨されません) feat(unstable): tar up directory with deno.json #21228 現時点では、公開したいパッケージが含まれるディレクトリを指定して利用することが想定されているようです。 $ deno publish path/to/package_directory 引数で指定したディレクトリには、以下の項目を設定したdeno.jsonを置いておく必要があります。 項目 説明 version パッケージのバージョン name パッケージ名(@<scope_name>/<package_name>のフォーマット) また、もし指定されたディレクトリでワークスペースが有効化されている場合、ワークスペース内の各パッケージがまとめて公開されるようです。 パッケージが公開される際は、Import Mapsの内容を元に各ファイルのspecifierを解決した後、tarballが作成され、DENO_REGISTRY_URLへアップロードされるようです。 認証については、--tokenオプションでpublish用のAPIトークンを指定できます。もし--tokenオプションが指定されなかった場合は、以下のように認証が行われるようです。 GitHub Actionsで実行されていれば、OIDCを使用する。 そうでなければ、インタラクティブに認証をする。 その他の改善 node:stream: Writableで意図した通りにデータが書き込まれないことがある問題が修正されています。 @jsxプラグマとshebangを併用するとパニックする問題が修正されています。 deno repl/deno jupyterでPromise was collectedエラーが起きることのある問題が修正されています。 NO_COLOR環境変数に空文字列が設定されている際は、Deno.noColorにtrueが設定されないように修正されています。 deno_std v0.208.0 deno_std v0.208.0がリリースされています。 既存モジュールの非推奨化 以下のモジュールが非推奨化されました。 std/collections/group_by.ts: 今後はObject....

November 26, 2023

2023/11/13〜2023/11/19の最新情報

ワークスペースのサポートについて DenoにワークスペースをサポートするPRがマージされています。Deno v1.39でリリースされる可能性があるかもしれません。 feat(unstable): Workspaces support #20410 これはdeno.jsonで定義された各ワークスペースごとに独自のImport Mapsを持たせることができる機能のようです。 利用方法 ⚠️この機能は今後使用方法が大きく変わる可能性があります。 以下の構成のプロジェクトがあったとします。 . ├── deno.json ├── main.ts ├── ws-a │ ├── deno.json │ └── mod.ts └── ws-b ├── deno.json └── mod.ts ワークスペースを利用する際は、ルートディレクトリのdeno.jsonでワークスペースとして扱うディレクトリを指定します。 { "workspaces": ["ws-a", "ws-b"], "imports": { "$std/": "https://deno.land/std@0.206.0" } } これにより、ws-aとws-bという2つのワークスペースが認識されます。 ws-a/deno.jsonは以下のように定義します。ここではルートディレクトリとは異なるバージョンのdeno_stdを読み込むよう指定しています。 { "name": "ws-a", "version": "0.0.1", "imports": { "$std/": "https://deno.land/std@0.207.0/" } } ws-a/mod.tsは以下のように書かれていたとします。 export { VERSION } from "$std/version....

November 19, 2023

2023/11/06〜2023/11/12の最新情報

Deno v1.38.1 Deno v1.38.1がリリースされました。 Node.js互換性の改善 require() .jsが見つからなければ.jsonも探すように挙動が改善されました。 BYONMが有効化された際に、scopedパッケージ(@foo/bar)が適切に解決されるように修正されました。 node:crypto createPrivateKey()が実装されました。 node:child_process spawnSync()でstdioオプションが適切に取り扱われるように改善されました。 これにより、execaパッケージが動くようになったようです。 node:util toUSVString()が実装されました。 deno doc --lintの出力内容の改善 deno doc --lintを実行した際の出力内容が変更されました。 今までは、lintに成功した際はAPIドキュメントが表示されました。 このリリースでは、lintに成功した際はAPIドキュメントを表示せず、チェックされたファイル数を表示するように変更されています。 $ deno doc --lint bytes/copy.ts Checked 1 file Deno.AtomicOperation#checkで指定できるキー数の増加 Deno.AtomicOperation#checkが最大で合計100個のキーまでチェックできるように改善されました。(今までは10個が最大値でした) Promise.withResolvers()の型定義の改善 Promise.withResolvers()が返すresolve関数の引数がオプショナルから必須に変更されています。 deno_std v0.206.0 deno_std v0.206.0がリリースされました。 std/async/deferred.tsが非推奨化 Deno v1.38でPromise.withResolvers()が利用できるようになったため、deferred()が非推奨化されました。 std/encoding/binary.tsが削除 非推奨化されていたstd/encoding/binary.tsモジュールが削除されています。 std/path/glob.tsに関するAPIの移動 std/path/glob.tsで提供されていた以下のAPIが移動されています。 API 移動先 isGlob std/path/is_glob.ts globToRegExp std/path/normalize_glob.ts joinGlobs std/path/join_globs.ts std/http/server_sent_event_stream....

November 12, 2023

2023/10/30〜2023/11/05の最新情報

Deno v1.38 Deno v1.38がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.38 deno_std v0.205.0 deno_std v0.205.0がリリースされました。 std/httpモジュールの整理 std/http/server.tsが非推奨化されました。今後はDeno.serve()やその周辺APIへの移行が推奨されます。 また、以下の各ファイルがリネームされています。 http/http_status.ts → std/http/status.ts std/http/cookie_map.ts → std/http/unstable_cookie_map.ts std/http/http_errors.ts → std/http/unstable_errors.ts std/http/method.ts → std/http/unstable_method.ts std/http/server_sent_event.ts → std/http/unstable_server_sent_event.ts std/wasiの非推奨化 使用率が高くなかったため、std/wasiが非推奨化されました。 Deno v1.38の公式ブログではwasmer-jsへの移行が推奨されています。 非推奨化されたAPIの削除 std/dotenv: restrictEnvAccessToオプションが削除されました。 deno_std v0.201.0でのstd/dotenvの改善により必要性が低下したため std/bytes/bytes_list.tsが削除されました。 std/csv/parse.ts: 以下のAPIが削除されました。 ERR_BARE_QUOTE ERR_FIELD_COUNT ERR_INVALID_DELIM ERR_QUOTE ParseError ReadOptions std/fs/walk.ts: canonicalizeオプションが追加 walk()にcanonicalizeオプションが追加されました。 このオプションはfollowSymlinksオプションがtrueのときのみ効果を持ちます。 このオプションにfalseが設定された場合、シンボリックリンク解決後のパスが正規化されなくなります (デフォルトはtrueのため、互換性には影響ありません) std/fs/expand_glob.ts: パーミッションの取り扱いの改善 expandGlob()にrootオプションまたは絶対パスが指定された際は、ファイルシステム全体への--allow-read権限を要求しないように挙動が改善されました。 denokv v0.1.0 denokv v0....

November 5, 2023

2023/10/09〜2023/10/15の最新情報

fresh v1.5 fresh v1.5がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 fresh v1.5 Deno v1.37.2 Deno v1.37.2がリリースされました。 Deno.serve Deno.serveでUnixドメインソケットがサポートされています。(unstable) Deno.serveのpathオプションを指定することで有効化されます。 また、Deno.serveから返却されるDeno.Serverがthenableオブジェクトではなくなりました。 これにより、async関数から直接Deno.Serverをreturnできなかった問題が解消されたようです。 TransformStreamでキャンセルがサポート (cancelオプションの追加) readableがキャンセルされたタイミング または writableが中断されたタイミングでcancelオプションに指定された関数が呼ばれるようです。 TransformStream cleanup using “Transformer.cancel” (whatwg/streams#1283) deno jupyter deno.land/x/displayのDeno本体への追加 deno.land/x/displayがDeno本体に取り込まれたようです。 これにより、以下のAPIが追加されています。 Deno.jupyter.display Deno.jupyter.md Deno.jupyter.html Deno.jupyter.svg Deno.jupyter.format Deno.jupyter.broadcast Deno.jupyter.broadcastに以下のオプションが追加されています。 metadataオプション buffersオプション (バイナリデータを送信したい場合に使用できます) Deno.testのサポート deno replやdeno jupyterでDeno.testがサポートされています。 $ deno repl Deno 1.37.2 exit using ctrl+d, ctrl+c, or close() > Deno.test(function ok() {}); ok ....

October 15, 2023

2023/09/25〜2023/10/01の最新情報

Deno v1.37.1 Deno v1.37.1がリリースされました。 deno lsp 現在のファイルの全依存モジュールをキャッシュするQuickFixアクションが実装されています。(Cache all dependencies of this module.) また、deno lspでリモートのImport mapsのサポートも追加されています。 deno test Deno.testやDeno.TestContext.stepなどによるテストケースの登録がDeno v1.37から2倍近くまで高速化されています。 deno jupyter: Deno.jupyter.broadcastが追加 (unstable) Denoからdisplay_dataやupdate_display_dataメッセージを送信するためのメソッドのようです。 Deno.jupyter.broadcast Deno KV Deno.Kv#enqueueのdelayオプションに設定できる最大値が30日まで増加されました。 Node.js互換性 node:crypto: randomFillSync()にArrayBufferなどを渡すと、TypeErrorが発生する問題が修正されています。 package.json: exportsフィールドがnullだった場合、プロセスがパニックする問題が修正されています。 deno_std v0.203.0 deno_std v0.203.0がリリースされました。 std/ioが非推奨化 std/ioはDeno.ReaderとDeno.Writerベースの機能が提供されていたため、非推奨化されました。 std/encoding: encode/decodeが非推奨化 std/encodingの各モジュールで提供されていたencodeとdecodeが非推奨化されています。今後は、以下の関数への移行が推奨されます。 std/encoding/ascii85.ts: encodeAscii85/decodeAscii85 std/encoding/base32.ts: encodeBase32/decodeBase32 std/encoding/base58.ts: encodeBase58/decodeBase58 std/encoding/base64.ts: encodeBase64/decodeBase64 std/encoding/base64url.ts: encodeBase64Url/decodeBase64Url std/encoding/hex.ts: encodeHex/decodeHex std/front_matter 他のモジュールとの一貫性の向上のため、以下の各ファイルで提供されていたdefault exportが非推奨化されました。 std/front_matter/any.ts std/front_matter/json.ts std/front_matter/toml.ts std/front_matter/yaml.ts std/collections - 一部関数の引数がArrayからReadonlyArrayへ変更 以下の各関数の引数がArrayではなくReadonlyArrayを受け取るように修正されています。(std/collectionsの他の関数との一貫性の向上が目的)...

October 1, 2023