2024/02/19〜2024/02/25の最新情報

Deno v1.41 Deno v1.41がリリースされています。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v1.41 deno addコマンドについて deno addコマンドを実装するPRが作成されています。 feat: deno add subcommand (#22520) 使い方としては、以下のようにjsrに公開されているパッケージを引数に指定して実行する想定のようです。 $ deno add @scope/pkg この場合、deno.jsonに以下のような形式で追加したパッケージを書き込んでくれるようです。 { "imports": { "@scope/pkg": "jsr:@scope/pkg@1.2.3" } } リリースされるかどうかはまだわからないものの、今後のバージョンで利用できるようになる可能性もありそうです。 deno_std v0.217.0 deno_std v0.217.0がリリースされています。 std/semver - Operatorに関する非推奨化 Operator型における"==", "===", "!==", ""が非推奨化されています。 "=="と"==="は"="への移行が推奨されます。 "!=="は"!="への移行が推奨されます。 ""はundefinedへの移行が推奨されます。 std/io/iterate_reader.tsが追加 std/io/iterate_reader.tsが追加されています。iterateReaderとiterateReaderSyncの2つのAPIが提供されていて、Readerから(Async)IterableIterator<Uint8Array>への変換が行えます。 std/streams/iterate_reader.tsを使っている場合は、こちらへの移行が推奨されます。 std/io/reader_from_stream_reader.ts 非推奨化されていたstd/streams/reader_from_stream_reader.tsがstd/io/reader_from_stream_reader.tsへ移動されました。合わせて非推奨化も解除されています。 std/testing/mock.ts spyやstubがusingに対応されました。spyまたはstubがスコープから外れた際に、自動でrestore()が呼ばれます。 Lume v2.1.0 Lume v2.1.0がリリースされています。 Lume 2.1.0 release notes LumeCMSのサポート(lume cmsコマンド)が入っています。...

February 25, 2024

Deno v1.41

Deno v1.41がリリースされました。 この記事では主な変更点などについて解説します。 Deno API Deno.FsFile Deno.FsFileにisTerminalとsetRawメソッドが追加されています。 Deno.isattyは非推奨化されているため、Deno.FsFileやDeno.stdinなどのisTerminalメソッドへの移行が推奨されます。 Deno.ConnectTlsOptions Deno.ConnectTlsOptionsにcertとkeyオプションが追加されています。 これに伴い、Deno.ConnectTlsOptionsのcertChainとprivateKeyは非推奨化されているため、新しく追加されたこれらへの移行が推奨されます。 破壊的変更 Deno.DatagramConnとDeno.HttpClientからridプロパティが削除されました。 Deno.CreateHttpClientOptionsのcertChainがcert、privateKeyがkeyにリネームされました。 パッケージシステム パッケージシステム (deno publish)に関してもいくつか改善が行われています。 ⚠️ jsr:に関しては、現在はwaitlistが公開されている段階で、まだ正式には利用できません。 deno lint deno lintにno-slow-typesルールが導入されています (#22430) このルールはdeno.jsonにname, version, 及びexportsフィールドが定義されている場合、自動で有効化されるようです。 このルールが有効化されている場合、fast checkが実行されるようです。 型チェックに関する改善 deno publishの実行時に型チェックが実行されるように変更されています (#22506) デフォルトではローカルモジュールに対してのみfast checkが行われるようです。--allow-slow-typesを指定するとfast checkではなく通常の型チェックが行われるようです また、fast checkに関しては、deno lintなどのコマンドと同様にSQLiteをベースにキャッシュの仕組みが導入されており、型チェックがより効率化されています。(#22485) deno lsp deno lspでjsr:URL向けにimportの補完が実装されています (#22462) deno compile v1.40.5でdeno compile向けの軽量バイナリであるdenortが再導入されています。 Deno v1.41ではstripコマンドを実行することでdenortバイナリがさらに軽量化されています。Deno公式のリリースポストによると、今後、deno compileをする際に特定の機能のみを有効化したカスタムビルドをサポートすることで、さらにバイナリを軽量化することなども検討されているようです。 その他には、deno compileでdeno.jsonのcompilerOptionsなどが効かない問題が修正されています。 deno info deno infoコマンドを実行した際もロックファイル(deno.lock)が生成されるように挙動が改善されています。 Node.js互換性 影響が大きそうな内容として、process.envからパーミッションが与えられていない環境変数にアクセスしようとした際に、パーミッションプロンプトが表示されるように挙動が変更されています。 それ以外には、node:testではDenoのテストサニタイザーの仕組みが無効化されています。 参考 https://github.com/denoland/deno/releases/tag/v1.41.0 Deno 1.41: smaller deno compile binaries

February 25, 2024

2024/02/12〜2024/02/18の最新情報

Deno v1.40.5 Deno v1.40.5がリリースされています。 denort (deno compile向けの軽量バイナリ) deno compile向けの軽量バイナリであるdenortが再導入されています。これにより、deno compileによって生成される実行可能ファイルのサイズがかなり縮小されるようです。 feat: denort binary for deno compile #22205 GitHub Releaseに各プラットフォーム向けのdenortバイナリがアップロードされており、deno compileを実行する際にダウンロードされ、利用されます。 Remove denort optimization #10350 DENO_FUTURE環境変数の導入 DENO_FUTUREという環境変数が導入されています。この環境変数は、将来的なDenoのバージョンで実施予定の破壊的変更をテストしやすくするために導入されたようです。 今のところ、この環境変数を設定するとglobalThis.windowが削除されるようです。 $ DENO_FUTURE=1 deno repl --eval='console.log(globalThis.window)' undefined Add DENO_FUTURE env var for testing breaking changes (#22315) その他 deno lspでjsr:サポートの実装が進んでいるようです (#22382, #22418) CompressionStream/DecompressionStreamで処理を中断すると、リソースリークが発生する問題が修正されています (Aborting a CompressionStream/DecompressionStream leaks a resource #14212) deno.jsonから依存パッケージを削除すると、deno.lockが壊れてしまうことがある問題が修正されています deno_std v0.216.0 deno_std v0.216.0がリリースされています。...

February 18, 2024

2024/02/05〜2024/02/11の最新情報

Deno v1.40.4 Deno v1.40.4がリリースされています。 Deno.FsFile.lock(Sync)/unlock(Sync) Deno.FsFileにlock(Sync)とunlock(Sync)メソッドが追加されています。 挙動については既存のDeno.flockなどと同様です。 ARM64ビルド ARM64向けのビルドがサポートされています。 これに合わせてdeno-arm64も非推奨化されているようです。 https://github.com/denoland/deno/pull/22298 https://github.com/LukeChannings/deno-arm64/commit/d7419ea6472b89f56fc9f3ea5c9d370fbf7794c2 Symbol.metadata Symbol.metadataが追加されています。 CLI DENO_AUTH_TOKENS環境変数でIPアドレスの指定がサポートされています。 v1.40.3でdeno jupyterが動かなくなっていた問題が修正されています。(#22231) deno testコマンドで../がうまく認識されない問題が修正されています。 --allow-sysに指定できる値としてcpus(--allow-sys=cpus)がサポートされていいます。node:osのcpus()などの使用を許可できます。 deno_std v0.215.0 deno_std v0.215.0がリリースされています。 破壊的変更 std/log/levels.ts LogLevels.WARNINGが削除されています。(LogLevels.WARNへの移行が推奨されます) std/path std/path/glob.tsが削除されています。下記への移行が推奨されます。 std/path/is_glob.ts std/path/glob_to_regexp.ts std/path/join_globs.ts std/path/normalize_glob.ts また、std/path/separator.tsも削除されています。(std/path/constants.tsへの移行が推奨されます) std/semver 以下のファイルが削除されています。 削除対象 移行先 std/semver/test_comparator.ts std/semver/test_range.ts std/semver/try_parse_comparator.ts std/semver/try_parse_range.ts std/semver/range_format.ts std/semver/format_range.ts std/semver/sort.ts Array#sort + std/semver/compare.ts 非推奨化 (std/semver) 以下のAPIが非推奨化されています。...

February 11, 2024

2024/01/29〜2024/02/04の最新情報

dax v0.38.0 dax v0.38.0がリリースされています。 サブシェルやリダイレクト、パイプなどのサポートが追加されています。 import { $ } from "https://deno.land/x/dax@0.38.0/mod.ts"; // サブシェル await $`(export VAR=123; echo $VAR) && echo $VAR`; // リダイレクト { const request = $.request( "https://raw.githubusercontent.com/denoland/deno_std/0.214.0/version.ts", ) .showProgress(); await $`cat - < ${request}`; const path = $.path("test.txt"); await $`echo foobar > ${path}`; } // パイプ { await $`cat deno.json | jq .imports`; const imports = await $`cat deno....

February 4, 2024

2024/01/22〜2024/01/28の最新情報

Deno v1.40 Deno v1.40がリリースされました。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v1.40 deno_stdでのワークスペースの導入について deno_stdでワークスペースやdeno publish、“fast check”などの導入に向けた準備が進んでいるようです。 chore: set up workspace publish from CI #4210 もし今後、パッケージの公開やワークスペースの利用などを検討されている際は、参考になるかもしれません。 std/kvについて deno_std/kvモジュールの開発が行われているようです。 feat: std/kv まだ入るかどうかは不明なのですが、今後、こちらからDeno KV関連のユーティリティが提供されていく可能性がありそうです。 Deno v1.40.1 Deno v1.40.1がリリースされています。 v1.40.0でdeno lspにおいてデフォルトでcompilerOptions.experimentalDecoratorsが無効化されていなかったため、改めて無効化されています。 Deno v1.40.2 Deno v1.40.2がリリースされています。 Deno.FsFileでinstanceofが動作しなくなっていた問題が修正されています。 また、v1.40.0で導入された非推奨API使用時の警告メッセージが簡略化されています。 もし、v1.40.0時点での詳細な警告メッセージへ戻したい場合は、DENO_VERBOSE_WARNINGSを設定する必要があります。 deno_std v0.213.0 deno_std v0.213.0がリリースされています。 破壊的変更 非推奨化されていたモジュールやAPIが削除されています。 std/http/cookie_map.tsが削除されています。 std/semver/format.ts: function format(semver: SemVer, style?: FormatStyle): string形式が削除されています。 std/semver/compare_build.tsが削除されています。 std/semver/rsort.tsが削除されています。(reverseSortへの移行が推奨されます) 非推奨化 std/path std/path/constants.tsが追加されています。 これに合わせてstd/path/separator.tsが非推奨化されました。このファイルで公開されていたSEPはSEPARATORに、SEP_PATTERNはSEPARATOR_PATTERNにリネームされており、それぞれconstants.tsからの読み込みが推奨されます。 std/semver std/semver/types.ts: SemVerRangeが非推奨化されています。代わりにRangeが追加されているため、そちらのへの移行が推奨されます。 std/semver/outside....

January 28, 2024

Deno v1.40

Deno v1.40がリリースされました。 この記事では主な変更点などについて解説します。 Temporalサポート DenoでTemporal がサポートされました。利用するには--unstable-temporalの指定が必要です。 Temporal.Now.instant(); 今のところTemporalのサポートはv2での安定化が検討されているようです。 Decorators proposal (stage 3)のサポート ⚠️ V8でまだサポートされていない関係で.jsファイルではまだ動作しないようなためご注意 (.tsなどのトランスパイルされるファイルでのみ動作します) TypeScript v5で導入されたDecorators (stage 3)がDenoでもサポートされました。 これに伴い、今までデフォルトで有効化されていたTypeScriptのexperimentalDecoratorsは無効化されたため、もし利用したい場合はdeno.jsonで明示的に有効化する必要があります。 { "compilerOptions": { "experimentalDecorators": true } } TypeScript5で導入されたStage 3のDecoratorを眺めてみる | 豆蔵デベロッパーサイト deno.json importsでnpm:URLのマッピングを定義する際の挙動の改善 npmパッケージが提供するサブパスの読み込みに関する挙動が改善されています。 例えば、deno.jsonでImport Mapsを定義しておき、npm:なしでmswとmsw/nodeを読み込みたい場面があったとします。 import { http, HttpResponse } from "msw"; import { setupServer } from "msw/node"; const server = setupServer( http.get(`${location.origin}/api/user`, () => HttpResponse.json({ id: 1, name: "foo", })), ); この場合、v1....

January 28, 2024

2024/01/15〜2024/01/21の最新情報

fresh v1.6.2 fresh v1.6.2がリリースされています。 Tailwind CSS tailwindプラグインを本番環境で事前ビルドなしに利用しようとした場合に、エラーが発生するように挙動が改善されています。 また、初期化スクリプトでTailwind CSSを利用するように選択した場合、GitHub Actionsの設定もセットアップされるように改善されています。 https://github.com/denoland/fresh/pull/2227 Partials <Partial>による再レンダリング時に、f-partialで指定されたエンドポイントが<title>を返さなかった場合、タイトルが失われてしまう問題が修正されています。 f-client-navが適用された<form>からサブミットされた際に、ブラウザURLが更新されない問題が修正されています。 Import Attributes IslandコンポーネントでImport Attributesが利用できない問題が解消されています。 fresh v1.6.3 fresh v1.6.3がリリースされています。 dangerouslySetInnerHTMLを使用している際のプロトタイプ汚染攻撃への対策が行われています。 もしfreshを利用されている場合は、可能な限りこのバージョンへのアップデートを行うように推奨されています。 Deno v1.39.4 Deno v1.39.4がリリースされています。 deno.jsonで./から始まるパスが各種include/excludeオプションに含まれていた場合、それらがうまく取り扱われなくなっていた問題が修正されています。 deno check: excludeで指定されたディレクトリにcompilerOptions.typesで指定されたd.tsファイルが含まれていた場合、プロセスがパニックする問題が修正されています。 External WebGPU surfaces / BYOW WebGPUによるレンダリング結果を外部ウィンドウに出力できるようにするため、Deno.UnsafeWindowSurfaceというAPIが追加されています。 feat: External webgpu surfaces / BYOW (#21835) この機能は今のところ、Deno v1.40でのリリースが検討されているようです。 deno_sdl2では、まだリリースはされていないものの、この機能へのサポートが進んでいるようです。 Add windowSurface() 非推奨APIの使用に関する警告について Deno 2.0に向けて、Deno.runなどの非推奨化されたDeno APIの使用時に警告を表示する機能が導入されています。 feat: Start warning on each use of a deprecated API #21939...

January 21, 2024

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