2024/10/07〜2024/10/13の最新情報

Deno v2がリリース Deno v2が正式にリリースされました。公式ブログとYoutubeでアナウンスが行われています: https://deno.com/blog/v2.0 https://www.youtube.com/watch?v=d35SlRgVxT8 新しい発表について 大きな点として、LTSリリースチャネルが発表されています。Deno v2.1からLTSチャネル向けにリリースから6ヶ月間の間は、重要度の高いバグ修正などがバックポートされ続ける想定のようです。 また、Webサイトだけ先に公開されていたDeno for Enterpriseについても正式に発表されました。 周辺ライブラリでの対応 Oakではすでに対応が行われており、v17.1.0にてすでにDeno v2サポートがリリースされています: Release v17.1.0 Honoについてもまだリリースはされていなさそうですが、早速、Deno v2の対応が入れられています (ci: use Deno v2 #3506) 各種パッケージマネージャーを抽象化してくれるni.zshでも、Deno v2のリリースに合わせて、Denoのサポートが導入されたようです (v1.3.0) deno_stdのリリース deno_stdがリリースされています。 @std/cbor 新規パッケージとして@std/cborが追加されています。CBORの実装が提供されます。 @std/collections@1.0.8 @std/collections@1.0.8がリリースされています。 Iterableのサポート @std/collections@1.0.7に続けて、以下のAPIでもIterableオブジェクトのサポートが追加されています: takeLastWhile (@std/collections/unstable-take-last-while) dropWhile (@std/collections/unstable-drop-while) intersect (@std/collections/unstable-intersect) dropLastWhile (@std/collections/unstable-drop-last-while) @std/async@1.0.6 @std/async@1.0.6がリリースされています。 @std/async/unstable-mux-async-iteratorが追加 @std/async/unstable-mux-async-iteratorではMuxAsyncIteratorが提供されており、振る舞いとしては既存の@std/async/mux-async-iteratorにおける同名APIと同じですが、コンストラクタ引数に複数のAsyncIterableを可変長引数として渡すことができる点が異なります。 @std/streams@1.0.7 @std/streams@1.0.7がリリースされています。 @std/streams/unstable-to-byte-stream toByteStream (@std/streams/unstable-to-byte-stream)が追加されています。ReadableStream<Uint8Array>をreadable byte streamへ変換してくれます。 @std/io@0.225.0 @std/io@0.225.0がリリースされています。 非推奨APIの削除 非推奨化された以下のAPIが削除されています。APIによっては@std/streamsに対応するものがあるため、そちらへの移行が推奨されます。 削除対象 移行先 補足 StringReader Buffer....

October 13, 2024

2024/09/02〜2024/09/08の最新情報

Deno v2.0.0-rc.1 Deno v2.0.0-rc.1がリリースされています。 どの変更内容がv2.0.0-rc.1に入っているかは不明なため、Deno v2.0.0-rc.0からの差分を参考に直近の変更内容についてまとめます (差分) deno lint jsr関連のlintルールの実行について deno.jsonでnameとexportsが定義されていればjsr関連のlintルールが実行されるように挙動が変更されています (今まではnameとexportsに加えてversionの3つのフィールドが定義されている必要がありました) fix(lint): support linting jsr pkg without version field #25230 deno lsp HTML/CSS/Yamlファイルのフォーマット deno lspでHTML/CSS/Yamlファイルのフォーマットがサポートされています。 feat(lsp): html/css/yaml file formatting #25353 deno add パッケージのサブパスの指定がサポート # 例: 以下の場合、`@std/dotenv`が追加されます $ deno add @std/dotenv/load feat(add): strip package subpath when adding a package #25419 deno install --entrypointがサポート このオプションが指定された場合、指定されたファイルの依存関係がダウンロードされます (deno cacheと同じように振る舞います) $ deno install --entrypoint main.ts feat(install): deno install with entrypoint #25411 TypeScript useUnknownInCatchVariablesがデフォルトで有効化 TypeScriptのuseUnknownInCatchVariablesがデフォルトで有効化されています。...

September 8, 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/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

2023/07/03〜2023/07/09の最新情報

Deno v1.35 Deno v1.35がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.35 deno_std v0.193.0 deno_std v0.193.0がリリースされました。 std/http/user_agent.ts std/httpにユーザーエージェントを取り扱うためのユーティリティが追加されています。 import { UserAgent } from "https://deno.land/std@0.193.0/http/user_agent.ts"; const ua = new UserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"); console.info(ua.browser); // => { name: "Chrome", version: "114.0.0.0", major: "114" } 直近でリリースされたOak v12.6.0にも、このstd/http/user_agent.tsを使用したUser-Agentのサポートが入っています。 std/json/concatenated_json_parse_stream.ts nullnullのように、セパレータなしで連続してnullやtrueなどの値が現れた際に、適切に処理が行われるように修正されました。 import { ConcatenatedJsonParseStream } from "https://deno.land/std@0.193.0/json/concatenated_json_parse_stream.ts"; const result = []; for await ( const x of ReadableStream.from(["nullnull", "1"])....

July 9, 2023

2023/06/19〜2023/06/25の最新情報

Fresh Devtools Fresh本体にFresh Devtoolsという開発者ツールを実装することが検討されているようです。 Fresh Devtools #1321 経緯としては、Freshのバックエンドで動作する各種ハンドラなどはPreact Devtoolsではカバーしきれないという課題などの解消が狙われているようです。 また、Nuxt DevToolsのように、Freshアプリケーションの一部として開発者ツールをレンダリングできるようにすることなども考慮されているようです。 例えば、このFresh Devtoolsでroutesタブやpluginsタブ、Preact Devtools向けのタブなどを提供することで、生産性やデバッグなどのサポートをすることが構想されています。 denoland/kv_api Deno KVのデータをREST API経由で管理できるようにしてくれるモジュールが公開されています。 denoland/kv_api 現状はFreshのみがサポートされていますが、今後、Oakのサポートが追加されることも検討されているようです。 deno_std/msgpack deno_stdにMessagePackのサポートを追加するPRが作成されています。 feat: msgpack encoding #3460 まだマージはされていませんが、近いタイミングでリリースされる可能性もあるかもしれません。 Global database comparison Deno KVやDynamoDBなどのDeno Deployからの利用に適していると考えられる各種データベースについて、詳しく比較を行っているWebページが公開されています。 https://global-db-comparison.deno.dev/

June 25, 2023

2023/04/17〜2023/04/23の最新情報

Deno v1.32.5 Deno v1.32.5がリリースされました。 KV Deno.AtomicOperation.sumが実装されました。 const kv = await Deno.openKv(":memory:"); const result = await kv.set(["key"], new Deno.KvU64(1n)); const ok = await kv.atomic() .check({ key: ["key"], versionstamp: result.versionstamp }) .mutate({ type: "sum", key: ["key"], value: new Deno.KvU64(2n) }) .commit(); assert(ok); const result2 = await kv.get(["key"]); assert(result2.value instanceof Deno.KvU64); assert(result2.value.value === 3n); Node.js互換性 node:http: ClientRequest.socket.remoteAddressが実装されました node:crypto: createVerifyが実装されました node:path: fromFileUrlなどのNode.jsでは提供されないシンボルがexportされていた問題が修正されました npm: ロックファイルで指定されたバージョンがキャッシュに見つからなかった場合に、そのバージョンのパッケージをダウンロードするように挙動が変更されました (このような場合、今まではエラーが起きていました) バグ修正 deno lsp: Unix系のOSでstatusページが返ってこなくなっていた問題が修正されました deno test --watchの実行中にSIGINTを送信しても、プロセスを停止できない問題が修正されました Deno....

April 23, 2023

2023/04/03〜2023/04/09の最新情報

Flashの削除について まだリリースはされていませんが、Deno v1.25で実装されたFlashというHTTPサーバを削除する対応が実施されているようです。 refactor: remove “ext/flash” #18578 これに伴い、Flashを起動するためのAPIであったDeno.serve()についても、一時的にDeno.serveHttp()ベースの実装へ書き換えられています。 refactor: “Deno.serve()” API uses “Deno.serveHttp()” internally #18568 Deno.serve()については、現在、上記とは別に改めてhyperベースの実装への書き換えが試みられているようです。 Extremely experimental HTTP rewrite #18619 Oakでもすでに対応が行われており、次のリリースあたりでFlashのサポートが削除される可能性が高そうです。 feat: remove experimental support for Deno flash server docs: remove experimental flash content from README fresh v1.1.5 fresh v1.1.5がリリースされました。 twindv1プラグインで、SSRとCSR時に生成されたスタイルが一部重複してしまうことがある問題について改善されています。 Deno SaaSKit Deno公式からFreshやSupabase, Stripeなどを活用したSaaSプロジェクトのテンプレートが公開されました。 Announcing Deno SaaSKit: an open-source SaaS template built with Fresh ソースコードやロードマップなどが以下のリポジトリで公開されています。 https://github.com/denoland/saaskit SaaSKit v1....

April 9, 2023

2023/02/27〜2023/03/05の最新情報

Oak v12 Oak v12がリリースされています。 Router#allの挙動の変更 (破壊的変更) 今までのバージョンでは、Router#allはDELETE/GET/POST/PUTの4つのメソッドに対してミドルウェアを登録していました。 このバージョンでは、Routerの生成時にmethodsオプションで指定されたメソッドに対してミドルウェアが登録されるように挙動が変更されています。(ただし、OPTIONSについてはミドルウェアの登録がスキップされます) methodsオプションのデフォルト値は以下のように定義されているため、このバージョン以降、デフォルトでHEAD/PATCHメソッドに対してもミドルウェアが登録されるようになります。 [ "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" ] その他の修正 Router#allowedMethodsで返却されたミドルウェアでOPTIONSメソッドが処理される際に、AllowではなくAllowedという名前のヘッダが返却されていた問題が修正されています。 Cookies#getにObject.prototypeで定義されているメソッドの名前が指定された際に、Cookieが設定されている場合でも、空の値が返却される問題が修正されています。 Content-Lengthが0に設定されたPOSTリクエストを受信した際に、RangeErrorが発生する問題が修正されています。 Release 12.0.0

March 5, 2023

2021/08/15〜2022/08/21の最新情報

Denoの今後の計画について Deno公式からBig Changes Ahead for Denoという、Denoの今後の計画などに関する記事が公開されました。 今のところ、以下の点などに注力されていく予定のようです。 Node.jsとの互換性の向上 パフォーマンスの向上 エンタープライズユーザへのサポートの強化 開発体験の向上 これらに関連すると思われる直近での変更について簡単にまとめてみます。 npm:URLのサポート 現在、npm:URLによるnpmパッケージのimportに関する開発が行われています。 feat(unstable): initial support for npm specifiers (#15484) 例えば、以下のようにして、npmパッケージをimportすることができるようです。 import express from "npm:express@5"; import { expect } from "npm:chai@4.2"; この機能には、大まかに以下のような特徴があります。 デフォルトでnpmパッケージはnpmの公式レジストリからダウンロードされ、DENO_DIRにキャッシュされます。 Node.js互換モード(--compat)とは異なり、npm:URLで読み込まれたモジュール内のみにNode.jsのグローバルAPI(process/global/Bufferなど)が注入されます。 Node.js互換モード(--compat)とは異なり、現時点では--unstableなしで使用できる想定のようです。 型チェック, LSPのサポート, エントリポイントでのnpm:URLの指定(例: deno run npm:mkdirp path/to/dir)などの機能はまだ入っておらず、今後追加されていく予定のようです。 この機能はおそらく、次のv1.25でリリースされるのではないかと思われます。 新しいHTTPサーバ (Flash) HTTPサーバの高速化を目的に、Deno本体でFlashという新しいHTTPサーバが開発されています。 feat(ext/flash): An optimized http/1.1 server (#15405) feat(unstable): change Deno.serve() API (#15498)...

August 21, 2022