2024/09/30〜2024/10/06の最新情報

The Final Touches: What’s New In v2.0.0-rc.10 後述するDeno v2.0.0-rc.10に関する記事がDeno公式ブログで公開されています: The Final Touches: What’s New In v2.0.0-rc.10 上記の記事によると、Deno v2の正式リリースについては今週に予定されているようです。 Deno Deploy NextGen Deno公式からDeno Deploy NextGenが公開されています: Deno Deploy NextGen これはKubernetesクラスター上でユーザーがDeno Deployのインフラストラクチャーを実行するための基盤のようで、現時点だとAWSとAzureがサポートされているようです。 Deno v2.0.0-rc.8/v2.0.0-rc.9/v2.0.0-rc.10がリリース Denoのv2.0.0-rc.8〜v2.0.0-rc.10がリリースされています: v2.0.0-rc.7からv2.0.0-rc.8までの差分 v2.0.0-rc.8からv2.0.0-rc.9までの差分 v2.0.0-rc.9からv2.0.0-rc.10までの差分 破壊的変更 URLPattern#execの振る舞いの変更 Deno v1.46.0で導入され、 Deno v1.46.1で取り消されたURLPattern#execの振る舞いの変更が改めて実施されました。 URLPattern#execでパターンにマッチするグループがない場合にgroups[key]にundefinedが設定されるように振る舞いが変わります。 Revert “fix(urlpattern): fallback to empty string for undefined group values” #25961 $DENO_DIR/depsが$DENO_DIR/remoteへリネーム リモートからダウンロードされた依存関係のグローバルキャッシュとして利用される$DENO_DIR/depsディレクトリが$DENO_DIR/remoteへリネームされました。 DENO_DIRの操作を行うツールやライブラリなどを除いて、基本的にはこの変更による影響は特にないはずです。 BREAKING: rename “deps” remote cache folder to “remote” #25969 deno lsp npm:@types/*を追加するQuick fixのサポート 自前で型定義を持たないnpmパッケージに対して// @deno-types=\"npm:@types/*"を追加するQuick fixが実装されています。(Add @deno-types directive for \"<package>\")...

October 6, 2024

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

Denoの直近の変更について 先週に続けて、おそらく次のDeno v1.46でリリースされると思われる機能がいくつかマージされているため、気になったものについて紹介いたします。 ⚠️正式にDeno v1.46がリリースされる際には、仕様などに変更が入る可能性もあります🙏 deno removeコマンド deno removeという新しいコマンドが追加されています。引数で指定されたパッケージをdeno.jsonのimportsやpackage.jsonなどから削除しつつ、deno.lockを更新してくれます。 $ deno remove @std/testing feat: deno remove (denoland/deno#24952) deno serve --parallel deno serveに--parallelオプションが追加されています。このオプションが指定された場合、deno serveはコア数またはDENO_JOBSで指定された値に基づいて、リクエストを複数のワーカーへ分散してくれるようです。 Deno公式のYoutubeチャンネルで解説動画が公開されています。 Parallelizing Deno Serve feat(serve): Opt-in parallelism for deno serve (denoland/deno#24920) HMRの安定化 DenoのHMR機能が安定化されるようです。 安定化に合わせて、コマンドラインオプションが--unstable-hmrから--watch-hmrにリネームされています。 feat: Rename –unstable-hmr to –watch-hmr (denoland/deno#24975) deno publishのLICENSEチェックについて deno publishコマンドの実行時にLICENSEファイルが存在しない場合は、警告ではなくエラーが発生するように挙動が変更されています。(articles/2024/07/28) また、deno.jsonにlicenseフィールドが追加されており、こちらによってライセンスを定義することもできるようです。 feat(publish): error on missing license file (denoland/deno#25011) feat(config/jsr): add license field (denoland/deno#25056) deno_stdのリリース deno_stdがリリースされています。...

August 18, 2024

2024/05/20〜2024/05/26の最新情報

Fresh v2のアルファバージョンが公開 Fresh v2向けに開発されていたコードがmainブランチに取り込まれています。 major: import Fresh 2.0 code (denoland/fresh#2449) 合わせて、Fresh v2のアルファバージョンとして公開されています。 現状、大きな変更として以下のような内容がありそうです。 FreshのJSRへの公開 preactやesbuildなどのパッケージがnpm:経由で読み込まれるように変更されています (例: www/deno.json) ExpressライクなAPIの採用 (例: www/main.ts) ハンドラーやページコンポーネントなどの定義方法の改善 (例: www/routes/showcase.tsx) 現状、わかっている変更点などを少しずつ以下のページにまとめているため、もし興味がありましたら参照ください。 https://scrapbox.io/uki00a/Fresh_v2 Deno v1.43.6 Deno v1.43.6がリリースされています。 Node.js互換性の改善 JestやVitest, avaなどのテストフレームワーク向けの対応を中心に進められています。 node:worker_threads: Workerを介して転送されるメッセージの中にMessagePortがあった場合に、addListenerなどのメソッドが未定義になってしまう問題が修正されています (vitestなど向けの対応) node:module: avaを動かせるようにするため、findSourceMapの空実装が追加されています。 node:process: process.listeners()に'SIG*'を渡した際に、きちんとリスナー数が返却されるように改善されています。 deno task deno.jsonでnodeModulesDir: true設定されていて かつ node_modulesディレクトリがない場合に、deno taskの実行に失敗してしまう問題が修正されています。 deno serve deno serveコマンドで指定されたエントリポイントでfetchが引数を受け取らない形式で定義されている場合に、TypeErrorが発生する問題が修正されています。 URL.{canParse,parse}の型定義の改善 URL.canParseの第2引数にURLオブジェクトを渡せるように型定義が改善されています。 URL.parseの型定義が追加されています。 deno_stdのリリース deno_stdのリリースが行われています。主要な変更点についてのみ紹介します。 @std/collections@1.0.0-rc.1 @std/collections v1のRCバージョンが公開されています。近いうちにv1がリリースされる可能性がありそうです。 @std/streams@0.224.1 新規APIとしてconcatReadableStreamsが追加されています。...

May 26, 2024

2024/05/13〜2024/05/19の最新情報

Deno v1.43.4 Deno v1.43.4がリリースされました。このリリースはバグ修正やパフォーマンス改善などがメインです。 deno publish expandoプロパティのサポート deno publish(fast check)やdeno docでexpandoプロパティが認識されない問題が修正されています。 --dry-runの改善 deno publish --dry-runの実行時に、以下のケースでエラーが発生するように挙動が改善されています。 バージョン指定がないjsr:specifierが検出された場合 deno.jsonが存在しない場合 Node.js互換性の改善 node:worker_threads メインスレッドとWorkerスレッドでモジュールキャッシュが分離されました。SvelteKitなどのパッケージがこの挙動に依存しているようです。(#23461) node:os homedirの互換性が改善されています。 node:fs EISDIRが発生する状況下でReferenceErrorが発生してしまう問題が修正されています。 Deno API "junction"に関する型定義の追加 Deno.SymlinkOptionsのtypeプロパティの型定義に"junction"が追加されています。 "junction"のサポートは以前に実装されていたものの、型定義が追加されていなかったようです。 ReadableStream ReadableStreamのSymbol.asyncIteratorメソッドが返却する非同期イテレーターに対して.return()の直後に.next()を呼ぶと、.next()が返却したPromiseが.return()が返却したものよりも先に解決される問題が修正されています。 Update ongoing promise in async iterator return() method #22389 その他 DenoがTypeScriptなどのファイルをトランスパイルする際に、トランスパイル後のソースからコメントが削除されてしまう問題が修正されています。 Deno v1.43.5 Deno v1.43.5がリリースされています。 Deno v1.43.4でいくつかのnpmパッケージを使おうとするとエラーが発生していたため、その修正が行われています。(#23862) deno_stdのリリース deno_stdのリリースが行われています。主要な変更点だけ抜粋します。 @std/collections@0.224.2 invertとinvertByが追加されています。オブジェクトのキーと値を入れ替えることができます。 const actual = invert({ "foo": 1, "bar": 2 }); const expected = { "1": "foo", "2": "bar" }; assertEquals(actual, expected); freshのホームページの新デザイン freshのホームページのデザインが更新されています。...

May 19, 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/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/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

2023/12/25〜2023/12/31の最新情報

Temporal APIのサポートについて まだマージはされていませんが、Deno本体にTemporal APIのサポートを追加するPRが作成されています。 feat(unstable): add Temporal API support #21738 現時点では、--unstableまたは--unstable-temporalを指定したときのみTemporal APIが有効化される想定のようです。 Danet v2 DenoのWebフレームワークであるDanetのv2がリリースされています。 内部で使用されているフレームワークがHonoへ移行されているようです。また、パフォーマンスについても60%の向上が実現されているようです。 このリリースに合わせてdeno.land/x/danet_swaggerのv2もリリースされており、Swagger UIからscalarへの移行が行われているようです。 https://discord.com/channels/684898665143206084/712010403302866974/1189921808883912775 Comparing 1.8.0…2.0.0 · Savory/Danet Netzo Netzoというプロダクトが公開されているようです。 FreshのメタフレームワークであるNetzo frameworkやNetzo platformというビジネス向けのWebアプリケーションの開発やデプロイなどを容易にしてくれるプラットフォームなどが提供されるようです。 Netzo frameworkについてはOSSとして開発されているようで、以下のリポジトリで公開されているようです。 https://github.com/netzo/netzo https://github.com/uki00a/awesome-fresh/pull/38

December 31, 2023

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/04〜2023/12/10の最新情報

Deno v1.38.5 Deno v1.38.5がリリースされました。 Deno.Kvにwatch()メソッドが実装されています。引数として監視したいキーの一覧を指定すると、戻り値として返却されたReadableStream<Deno.KvEntryMaybe<T>[]>からそれらのキーに関する変更が通知されます。 const kv = await Deno.openKv(":memory:"); const watcher = kv.watch( [ ["users", 1], ["users", 2] ] ); (async () => { for await (const entries of watcher) { // 変更があった際は通知されます。 console.info(entries); } })(); await kv.set(["users", 1], "foo"); await kv.set(["users", 2], "bar"); await kv.set(["users", 3], "baz"); --unstable-sloppy-importsの実装について まだリリースはされていませんが、Deno本体に--unstable-sloppy-importsというオプションを導入するPRがマージされています。 feat(unstable): ability to resolve specifiers with no extension, specifiers for a directory, and TS files from JS extensions #21464...

December 10, 2023