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

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

WebGPU APIの再導入について Deno v1.32で一時的に削除されていたWebGPU APIを再度導入するPRが作成されています。 bring back WebGPU #20812 まだマージはされていませんが、今後、再びWebGPU APIが導入される可能性がありそうです。 denoland/terraform-provider-deno Deno公式からDeno DeployのTerraformプロパイダーが公開されています。 denoland/terraform-provider-deno Ree.js Bun/Deno/Node.jsなどをサポートする軽量・高速なWebフレームワーク。 https://github.com/rovelstars/reejs 以下のような特徴を備えているようです。 React/Twindなどをサポート esm.shなどのCDNからのURLインポートをサポート npm:<パッケージ名>によるnpmパッケージの読み込みをサポート Import Mapsのサポート Packitという独自のビルドツールの採用 Honoベースの高速なサーバー ファイルシステムベースのルーティングシステム 以下で作者の方による紹介記事が書かれています。 Welcome to the dark side. Ree.js awaits you!

October 8, 2023

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/05〜2023/06/11の最新情報

Deno v1.34.2 Deno v1.34.2がリリースされました。 Node.js互換性 node:http2が追加されました。 http2.connectとhttp2.createServerの基本的な実装が追加されています。 node:fs/promises: FileHandleの以下のメソッドが実装されました。 readFile() read() write() close() node:child_process: spawnのstdioオプションで[0, 1, 2]の指定がサポートされました。 node:process: process.stdoutにpipeされたReadableストリームがクローズされた際に、process.stdoutも一緒にクローズされてしまう問題が修正されています。 Web API 巨大なArrayBufferをconsole.logなどで表示しようとした際に、誤ってdetached状態として表示される問題が修正されました。 EventTargetのリスナ内で同一イベントへのリスナを新しく登録した際に、登録されたばかりのリスナが即座に呼ばれてしまう問題が修正されました。 パフォーマンス改善 主にHTTPサーバ(Deno.serve)に対して、様々なパフォーマンス改善が実施されています。 perf: use sendto syscalls #19414 perf(ext/http): Add a sync phase to http serving #19321 perf(ext/http): Use flat list of headers for multiple set/get methods #19336 perf(ext/http): Migrate op_http_get_request_headers to v8::Array #19354 perf(ext/http): Migrate op_http_get_request_method_and_url to v8::Array #19355 perf: optimize RegExp usage in JS #19364 perf(http): avoid flattening http headers #19384 deno_std v0....

June 11, 2023

2023/05/22〜2023/05/28の最新情報

Deno v1.34 Deno v1.34がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.34 deno_std v0.189.0 deno_std v0.189.0がリリースされました。 std/async/retry.ts retry()の内部でジッターが適用されるようになりました。 std/collections/group_by.ts groupBy()でIterable<T>型の値がサポートされました。 import { groupBy } from "https://deno.land/std@0.189.0/collections/group_by.ts"; groupBy( new Set([1, 2, 3, 4, 5]), (x) => x % 2 === 0 ? "even" : "odd", ); // Output: { odd: [ 1, 3, 5 ], even: [ 2, 4 ] } また、selector関数が引数として現在処理中の要素のindexを受け取るように変更されています。 v0.189.0 v0.188.0 Deno DeployでNode.js組み込みモジュールがサポート Deno DeployでNode.js組み込みモジュールがサポートされたようです。...

May 28, 2023

2023/05/01〜2023/05/07の最新情報

Deno v1.33.2 Deno v1.33.2がリリースされました。 Deno KV Deno.KvU64にvalueOf/toStringが実装されました。 assert(new Deno.KvU64(1n) + 2n === 3n); assert(new Deno.KvU64(123n).toString() === "123"); また、Deno.Kvのコンストラクタを直接呼ぶと、エラーが発生するように変更されました。(Deno.openKvの使用が推奨されるため) Node.js互換性 node:process: process.releaseが実装されました。 node:http: ClientRequest.setTimeoutに0を渡すとタイムアウトが無効化されるように修正されました。 その他 パフォーマンス向上のため、Windows以外の環境では、グローバルアロケータやArrayBufferの割り当ての用途としてjemallocが使用されるように変更されました。 beforeunloadのリスナ内でpreventDefaultを呼んでいると、Deno.test内で発生したUncaught Errorが画面に表示されなくなる問題が修正されました。 WebSocketクライアントが適切にクローズされなかった場合、WebSocketサーバがハングする問題が修正されました。 引数なしでURL.canParse()が呼ばれた際に、falseを返すのではなくTypeErrorが発生するように修正されました。 deno_std v0.186.0 deno_std v0.186.0がリリースされました。 std/path sepが非推奨化されました。 今後はSEPの使用が推奨されます。 std/async deadline.ts: signalオプションによるキャンセルがサポートされました。 pool.tsがブラウザ互換になりました。 std/http/method.tsの追加 isHttpMethodで与えられた文字列が正しいHTTPメソッドであるか判定できます。 import { isHttpMethod } from "https://deno.land/std@0.186.0/http/method.ts"; assert(isHttpMethod("GET")); assert(isHttpMethod("POST")); assert(!isHttpMethod("get")); assert(!isHttpMethod("foo")); std/http/file_server.ts Rangeヘッダが仕様どおりにハンドリングされるように改善されました。 std/http/server.ts serve()ですでに使用中のportを指定した際に、たまにAddrInUseではなくTypeError: Cannot read properties of undefined (reading 'port')が発生する問題が修正されました。...

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

Deno v1.32.4 Deno v1.32.4がリリースされました。 Deno v1.32.2以降、Freshが動かなくなっていた問題が解消されています。(#18572) Node.js互換性 node:cryptoで以下のAPIが実装されています: X509Certificate generateKey hkdf 特定のnpmパッケージのバージョンを更新しようとすると、以下のエラーが起きる問題が解消されています。 Could not find npm package '<package>’ matching <version>. Try retrieving the latest npm package information by running with --reload deno cache --reload npm:<package>を実行すると、依存している全npmパッケージが再インストールされる問題が解消されています。 KV Deno.Kvの各メソッドで、キーに配列以外の値を渡せないように挙動が変更されました。 例えば、今まではkv.get("key")のような呼び方ができましたが、今後はkv.get(["key"])のように呼ぶ必要あります。 Cache API プログラムの実行をまたいで同一のリクエストに対して複数回Cache.putを呼んだ際に、値がうまく上書きされなくなる問題が修正されています (#18649) deno_std v0.183.0 deno_std v0.183.0がリリースされました。 std/encoding/varint/の削除 非推奨化されていたstd/encoding/varint/が削除されました。 deno_std v0.179.0でstd/encoding/varint.tsにTypeScriptベースのAPIが追加されているため、今後はこれらの使用が推奨されます。 std/csv 破壊的変更 CsvStreamがCsvParseStreamへリネームされています。(CsvStreamはまだ削除はされていないものの、非推奨化されています) この変更はJsonParseStream/JsonStringifyStreamを提供するstd/jsonとの一貫性の向上を目的としています。 parse()などのAPIの型定義が改善されています。 具体的には、以下のように型推論が効くように変更されています。 import { parse } from "https://deno.land/std@0.183.0/csv/parse.ts"; const records: Array<Record<"id" | "name", string>> = parse("1,a\n2,b", { columns: ["id", "name"], }); std/http/etag....

April 16, 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