2024/03/25〜2024/03/31の最新情報

Deno v1.42 Deno v1.42がリリースされています。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v1.42 deno_std v0.221.0 deno_std v0.221.0がリリースされています。 @std/expect 以下のAPIが実装されました。 expect.closeTo expect.stringContaining expect.stringMatching @std/crypto FNVハッシュ関連の実装がTypeScriptからRust+Wasmベースへ移行されています。 これによりWeb StreamsなどのIterableな入力も処理できるように改善されているようです。 https://github.com/denoland/deno_std/pull/4515 Deno v2におけるBYONMのデフォルトでの有効化について Deno v2におけるBYONMのデフォルトでの有効化に関するissueが作成されています。 Enable BYONM by default for Deno 2 (#23151) まずDENO_FUTURE=1が指定された際にBYONMをデフォルトで有効化することが検討されているようです。 @david/publish-on-tag Gitタグの作成時にGitHub Actionsからjsrへパッケージを公開するためのツールが公開されています。 @david/publish-on-tag

March 31, 2024

Deno v1.42

Deno v1.42がリリースされました。 この記事では主な変更点などについて解説します。 Deno v2に向けた変更 DENO_FUTUREによるDeno.*配下の非推奨APIの削除 DENO_FUTURE=1を指定すると、Deno.*配下の非推奨APIが削除されるようになりました。 deno installに--globalオプションが追加 deno installコマンドはインターネット上などで公開されたスクリプトをインストールするためのコマンドです。(デフォルトのインストール先は$HOME/.deno) Deno v2ではこのdeno installコマンドはデフォルトでdeno addコマンドのエイリアスとして機能するように変更される予定のようです。 deno install changes for Deno 2 (#23062) この変更に向けてdeno installコマンドに--global/-gオプションが追加されました。Deno v2のリリース以降、Deno v1におけるdeno installと同じ振る舞いをさせるためには、この--globalオプションを指定する必要があります。 $ deno install --global --allow-read=. --allow-write=. --allow-net https://deno.land/x/udd/main.ts deno lint Quickfixのサポート deno lintとdeno lspでQuickfixがサポートされました。deno lintでは--fixオプションによりQuickfixを実行できます。 $ deno lint --fix main.js 今のところ以下のルールでQuickfixがサポートされています。 no-window no-window-prefix verbatim-module-syntax jsr関連のルールの自動適用 deno.jsonにname/version/exportsが定義されていたら、jsr関連のlintルールが自動で有効化されるように挙動が変更されています。 適用されるルールについては以下で確認できます。 $ deno lint --rules-tags=jsr --rules deno task タスクのコメント deno taskコマンドがタスクに記述されたコメントを認識してくれます。 // deno.jsonc { "tasks": { // Run tests "test": "deno test --allow-read=....

March 31, 2024

2024/03/18〜2024/03/24の最新情報

deno lintとdeno lspでのQuickfixのサポートについて deno lintとdeno lspでQuickfixをサポートするPRがマージされています。Deno v1.42あたりでリリースされる可能性がありそうです。 feat(lint): deno lint --fix and lsp quick fixes #22615 deno_lint v0.58.0 deno lintでは--fixオプションを指定することで利用できるようです。 いまのところQuickfixが実装されているのはno-windowとno-window-prefixルールのみのようです。 deployctl v1.12.0 deployctl v1.12.0がリリースされています。 deployctl deployコマンドで--envや--env-fileオプションがサポートされています。これらはDeno Deployのデプロイメントに対して環境変数を設定するためのオプションのようです。これらを介して設定された環境変数はDeno.env経由でアクセスできるようです。 Introducing deployctl, the command line interface for Deno Deploy また、deployments redeployコマンドが実装されており、既存のデプロイに対して環境変数のみを変更したい場合などに使用されることが想定されているようです

March 24, 2024

2024/03/11〜2024/03/17の最新情報

Deno v1.41.3 Deno v1.41.3がリリースされています。 Node.js互換性の改善 BYONMを有効化した際に、VitePressが動かせるようになったようです。 node:crypto 以下のサポートが追加されています。 getCipherInfoの基本的な実装が追加 createPublicKeyの初期実装が追加 createPrivateKeyでDHがサポート Sign#signでEC鍵がサポート node:worker_threads receiveMessageOnPortが実装されています。 また、Workerに指定したスクリプトが終了したら、Workerがプロセスの終了をブロックしないように挙動が変更されました。 node:fs statfsが実装されています。 また、symlinkでjunctionタイプがサポートされています。 node:timers Immediateクラスが追加され、setImmediateの戻り値として返却されるように変更されています。 node:module isBuiltinが実装されました。 node:punycode Node.jsとの互換性が改善されています。 node:http validateHeaderNameとvalidateHeaderValueが公開されました。 .cssサポート npmパッケージに.cssへのimportが含まれていた際に、型エラーが起きないように挙動が改善されています。 deno publish fast checkにおけるasで指定されたリテラル型の推論などが改善されています。 Fresh v2について Fresh v2に関する新機能や変更点などに関するissueが公開されています。 The road to Fresh 2.0 #2363 以下のような機能や変更などが検討されているようです。 deno.land/xからJSRへの移行 ExpressやHonoライクな新しいプラグインAPIを提供する Preactの非同期コンポーネントサポートを活用して非同期Routeコンポーネントをレンダリングする <Head>の削除 (今のところ、ハンドラーから<head>に追加する要素を返却できるようにすることなどが検討されているようです) など deno-sqlx sqlx crateやGoのdatabase/sqlライクなインターフェースを提供するためのdeno-sqlxモジュールが公開されています。 halvardssm/deno-sqlx 以下のPRで初期実装が進められているようです。 feat: initial implementation #1

March 17, 2024

2024/03/04〜2024/03/10の最新情報

Deno v1.41.2 Deno v1.41.2がリリースされています。 jsr deno addでnpmパッケージがサポート deno addの引数にnpm:<パッケージ名>の形式でパッケージを指定すると、対象のnpmパッケージがdeno.jsonに追加されます。 $ deno add npm:chalk@5.3.0 deno addでパッケージのバージョン指定がサポート deno addでパッケージを追加する際に、以下のような形式などでバージョンを指定できます。 $ deno add @std/ulid@0.219.1 $ deno add @oak/oak@14 deno publish - include/excludeに関する挙動の改善 deno publishがJSRにパッケージを公開する際に、パッケージに含めるまたは除外するファイルを決定する際の挙動が改善されています。 祖先のディレクトリの.gitignoreも参照されるように挙動が変更されています .gitignoreやexcludeで除外されたファイルのunexcludeがサポートされています { "publish": { "exclude": [ "!tmp/generated" ] }, "exclude": [ "tmp" ] } fix(publish): make include and exclude work #22720 deno publish --dry-run - GitHub Actionsのパーミッションに関する改善 GitHub Actionsでdeno publish --dry-runを実行する際に、GitHub Actionsのパーミッションなしで動作するように改善されました。...

March 10, 2024

2024/02/26〜2024/03/03の最新情報

JSR(jsr.io)が公開 (パブリックベータ版) jsr.ioがパブリックベータ版として一般公開されました。 Introducing JSR - the JavaScript Registry deno_stdやOak, daxなどのパッケージもすでに公開されています。 また、レジストリのソースコードも公開されており、以下のリポジトリで開発が行われているようです。 jsr-io/jsr @deno/x-to-jsr Deno公式から@deno/x-to-jsrというdeno.land/xパッケージをJSRパッケージに変換するためのツールが公開されています。 jsr-npm Node.jsやBunなどでJSRパッケージを利用するためのjsr-npmというCLIツールが公開されています。 $ npx jsr --version 0.9.0 # @oak/oakをインストール $ npx jsr add @oak/oak # package.jsonにjsrパッケージが追加されます $ cat package.json | jq '.dependencies["@oak/oak"]' "npm:@jsr/oak__oak@^14.1.1" # .npmrcが自動で作成されます $ cat .npmrc @jsr:registry=https://npm.jsr.io esm.sh - JSRの実験的サポートが追加 esm.shにJSRパッケージの実験的サポートが追加されています。 JSR is now in public beta 🔥 FYI https://t.co/GUKvoBGZVC also experimentally supports JSR packages too!...

March 3, 2024

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