2022/10/31〜2022/11/06の最新情報

Deno v1.27.1 ロックファイルに関する機能の追加や改善などが実施されています。 ロックファイルの自動探索 ロックファイルの自動探索が実装されました。 これは、deno.json(c)と同じディレクトリにdeno.lockというファイルがあれば、それを元に自動でインテグリティチェックを実行する機能です。 現状、この機能は--unstableを指定したときのみ有効化されます。(Deno v1.28にて安定化予定のようです) また、この自動探索を無効化する目的で、--no-lockというオプションも追加されています。 これらの変更に合わせて、--lockオプションの引数がオプショナルに変更されました。(未指定の場合は、デフォルトでdeno.lockが読み込まれます) また、--lock-writeオプションを指定する際の--lockオプションの指定も不要になっています。 ロックファイルによるインテグリティチェックの挙動が変更 ロックファイルの自動探索機能の実装に合わせて、インテグリティチェックに関する挙動が変更されています。 具体的には、ロックファイルに列挙されていないパッケージが見つかったときに、インテグリティチェックが失敗しないように挙動が変更されています。 もしこのようなパッケージがあった際は、ロックファイルへ自動でハッシュが書き込まれ、次回以降からそのパッケージに対するインテグリティチェックが実施されます。 その他の変更点 deno infoコマンドでnpm:がサポートされました。 Deno.osRelease()が--unstableなしだと利用できなかった問題が解消されています。(このAPIは元々、Deno v1.27.0で安定化される予定でした) Change Array by copyに関する型定義ファイルが追加されました。 Promise.prototype.thenが上書きされても、DenoのコアAPIが影響を受けないように実装が変更されました。 WindowsでDeno.hostname()が空文字列を返すことがある問題が修正されています。 https://github.com/denoland/deno/releases/tag/v1.27.1 deno_std v0.162.0 deno_std v0.162.0がリリースされました。 std/encoding/front_matter - YAML以外のフォーマットのサポート std/encoding/front_matter/any.tsを使うと、YAML/TOML/JSONのいずれかのフォーマットで記述されたFront Matterブロックを読み込むことができます。 import { extract } from "https://deno.land/std@0.162.0/encoding/front_matter/any.ts"; // YAMLでの記述例) let { attrs, body } = extract<{ title: string, date: Date }>(`--- title: foobar date: 2022-06-12 --- Hello`); assert(attrs.title === "foobar"); assert(attrs.date instanceof Date); assert(body === "Hello"); // TOMLでの記述例) ({ attrs, body } = extract<{ title: string, date: Date }>(`---toml title='foobar' date=2022-06-12 --- Hello`)); assert(attrs....

November 6, 2022

2022/09/12〜2022/09/18の最新情報

Deno v1.25.3 Deno v1.25.3がリリースされました。 npmパッケージサポートの改善 esm形式のモジュールからcjs形式のモジュールをimportする際の挙動のNode.jsとの互換性が向上しています。 deno run --unstable npm:<package>@version/subpathで.js形式または拡張子なしのファイルを実行できるようになりました。 typescript/tscを実行できない問題があったようです。 パッケージのサブパスにpackage.jsonがあれば、その定義内容を元にエントリポイントが解決されるようになりました。 --unstableが指定されたときは、NODE_DEBUGとNODE_OPTIONS環境変数に対して--allow-envのチェックがスキップされるように変更されました。 Flash(Deno.serve)の改善 同時に一つのリクエストしか処理できなかった問題が解消されています。 https://github.com/denoland/deno/releases/tag/v1.25.3 deno_std v0.156.0 deno_std v0.156.0がリリースされました。 std/node Deno本体のnpmパッケージサポートの改善に合わせて、バグ修正などが実施されています。 今回のリリースによってcpy-cliなどが動かせるようになったようです。 変更点: fs: ReadStreamとWriteStreamがnewなしで作成できるようになりました。 process: "FOO" in process.envなどでprocess.envを利用した際に、全パーミッションが要求される問題が解消されています。(内部的にDeno.env.toObject()が使用されないように修正されています) process: process.execPathが書き込み可能なプロパティに変更されました。(pnpmなどの書き込みを行うパッケージが存在したため) std/fs すでにシンボリックリンクが存在する場合にensureSymlinkが失敗しないように改善されています。 std/http/file_server serveFileにディレクトリのパスが指定された場合、404エラーが返却されるように修正されました。 (今までは200が返却されるものの、ボディを読もうとするとエラーが発生していたようです) https://github.com/denoland/deno_std/releases/tag/0.156.0 Mongooseサポートに向けたunstable APIの安定化について Mongooseのサポートに向けて、下記のAPIの安定化が検討されています。 Deno.consoleSize() Deno.hostname() Deno.osRelease() Deno.consoleSize()とDeno.hostname()についてはすでにPRが作成されており、次のv1.26あたりで安定化される可能性がありそうです。 Ultra v2.0.0-beta.6 Island Architectureのサポートなどが追加されています。 /examples/with-islands https://github.com/exhibitionist-digital/ultra/releases/tag/v2.0.0-beta.6 deno-sqlite v3.5.0 PreparedQueryに.first()と.firstEntry()が追加されています。 その影響で既存の.one()と.oneEntry()は非推奨化されています。 const query = db....

September 18, 2022

2021/05/09〜2022/05/15の最新情報

Deno v1.21.3 Deno v1.21.3がリリースされました。 deno task deno task <タスク名>の<タスク名>の直後に--から始まるオプションを指定できない問題が修正されました。 その他の修正 Deno.connectTlsで作成したTLSコネクションを閉じる前に、ハンドシェイクが完了することが保証されるようになりました。 その他にも、Windows上で標準出力や標準エラー出力にマルチバイト文字を書き込んだ際の挙動の改善などが実施されています。 https://github.com/denoland/deno/releases/tag/v1.21.3 deno_std v0.139.0 deno_std v0.139.0がリリースされました。 encoding/jsonc deno_stdにJSONCパーサが実装されました。 import { parse } from "https://deno.land/std@0.139.0/encoding/jsonc.ts"; console.log(parse(`{ // hello "foo": 1 }`)); // => { foo: 1 } node dnsパッケージで以下のAPIが実装されました。 dns.Resolver dns.setServers / dns.getServers dns.resolveAnyやdns.resolve4などの問い合わせAPI また、netパッケージでUnixドメインソケットがサポートされています。 testing/snapshot assertSnapshotにオプションを渡せるようになりました。 例えば、dirオプションによってスナップショットの保存先ディレクトリなどをカスタマイズできます。 await assertSnapshot(t, actual, { dir: "testdata" }); https://github.com/denoland/deno_std/releases/tag/0.139.0 --no-configオプションのサポートについて deno.json(c)の自動的な読み込みを無効化するために、--no-configオプションを追加するPRが作成されています。 feat: add –no-config flag (#14555)...

May 15, 2022

2021/03/14〜2022/03/20の最新情報

Deno v1.20 Deno v1.20がリリースされました。 詳しくは下記の記事を参照ください: Deno v1.20 deno_std v0.130.0 deno_std v0.130.0がリリースされました。 std/testing/assertsモジュールでassertInstanceOfが実装されました。 import { assertInstanceOf } from "https://deno.land/std@0.130.0/testing/asserts.ts"; assertInstanceOf(new Date(), Date); // OK assertInstanceOf(/abc/, RegExp); // OK assertInstanceOf("baz", Number); // NG その他にもstd/nodeでのfs.writevSyncの実装などが行われています。 https://github.com/denoland/deno_std/commit/dbccc64488bbcc2bc540b833488b9bb97c11e1cb IndexedDBサポートについて Deno本体にIndexedDBを追加するPRが作成されています。 feat(ext/webstorage): IndexedDB (#14035) 内部的にはlocalStorageなどと同様にSQLiteを使用して実装されているようです。 近い将来にリリースされる可能性があるかもしれません。 https://github.com/denoland/deno/pull/14035 deno-sqlite v3.3.0 deno-sqlite v3.3.0がリリースされました。 DBクラスにexecuteメソッドが追加されています。 これを使うと、複数のSQLステートメントをまとめて実行することができます。 import { DB } from "https://deno.land/x/sqlite@v3.3.0/mod.ts"; const db = new DB(":memory:"); db.execute(` CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT ); INSERT INTO users (name) VALUES ('foo'), ('bar'); `); for (const [id, name] of db....

March 20, 2022

2021/12/13〜2021/12/19の最新情報

Deno v1.17.0 Deno v1.17.0がリリースされました。 --no-check=remoteのサポート リモートモジュール(http:またはhttps:で始まるモジュール)の型チェックのみが無効化されます。 $ deno run --no-check=remote mod.ts Import assertionsのサポート Import assertionsが実装されました。 現在はJSON modulesのみがサポートされています。 import modules from "./modules.json" assert { type: "json" }; Object.keys(modules); Deno.testのシグネチャの向上 Deno v1.16.4までは下記の形式のみがサポートされていました。 Deno.test(name: string, fn: (t: Deno.TestContext) => void | Promise<void>): void Deno.test(t: Deno.TestDefinition): void v1.17で以下のオーバーロードが追加され、使い勝手が向上しました。 // オプションを第2引数、テスト関数を第3引数で指定 Deno.test("foo", { permissions: { read: false } }, () => { Deno.cwd(); }); // オプションを第1引数、テスト関数を第2引数で指定 Deno.test({ name: "bar", ignore: Deno....

December 19, 2021

2021/08/02〜2021/08/08の最新情報

deno-sqlite v3.0.0がリリース deno-sqliteのv3.0.0がリリースされました。 このリリースではRowsタイプへの破壊的変更やパフォーマンスの向上などが実施されています。 変更点: DB#queryメソッドで型パラメータがサポートされました DB#queryメソッドの戻り値がRowsタイプからRowタイプの配列へ変更されました DB#prepareQueryメソッドで型パラメータがサポートされました DB#prepareQueryの戻り値であるPreparedQueryタイプが大幅に変更され、より詳細にクエリの実行方法を制御できるようになりました v3.0.0 v2.5.0 DB#queryEntriesメソッドが追加され、問い合わせ結果をオブジェクトの配列として取得できるようになりました localtime修飾子がローカルのタイムゾーンを参照するように修正されました https://github.com/dyedgreen/deno-sqlite/releases/tag/v3.0.0 Velociraptor v1.1.0がリリース DenoのタスクランナであるVelociraptorのv1.1.0がリリースされました。 変更点: スクリプトを実行する際に--option=value形式の引数が—-option value形式に正規化されてしまう問題が修正されました vrコマンドを引数なしで実行した際に、Composite scriptsのdescプロパティで定義した説明文が表示されるように修正されました https://github.com/jurassiscripts/velociraptor/releases/tag/1.1.0 deno_sdl2 SDL2へのバインディング まだ開発途中のようですが、Denoのプラグインシステム(Deno v1.13.0にて削除される予定です)に依存せず、Canvas互換のAPIを介してRustで実装されたTCPサーバとやり取りしているようです。 https://github.com/littledivy/deno_sdl2

August 8, 2021

2021/07/26〜2021/08/01の最新情報

Deno v1.12.2がリリース Deno v1.12.2がリリースされました。 今回のリリースでは、主にバグ修正をメインに実施されています。 変更点: deno lspのdeno/virtualTextDocumentメソッドでdeno:/status.mdを表示する際に、Workspace Settingsセクションが表示されるようになりました --inspectオプションで表示されたデバッグ用URLに対してHTTPなどの非WebSocketリクエストを送信すると、Denoがクラッシュする問題が修正されました Deno.connectTls及びDeno.startTlsで--certオプションで指定した証明書が使用されるように修正されました deno infoコマンドでX-TypeScript-Typesヘッダなどで読み込まれたTypeScriptファイルの情報も表示されるようになりました deno testコマンドの引数に指定したモジュールが、メインモジュールとして読まれる問題が修正されました(import.meta.mainがtrueに設定されてしまう) GCのタイミングで不要になったResponseオブジェクトのボディに紐づくリソースが開放されるようになりました Deno.upgradeWebSocketで、リクエストのConnectionヘッダにカンマ区切りで複数の値が含まれていた場合も、適切に動作するように修正されました Deno.upgradeWebSocketがリクエストのConnectionヘッダの大文字・小文字を区別しなくなりました deno lspでX-TypeScript-Typesによって型定義が提供されるモジュールとimport typeやexport typeなどを併用していると、ホバーなどがうまく機能しなくなる問題が修正されました deno lspでImport mapsファイルが更新された際に、依存関係や診断内容が再計算されない問題などが修正されました https://github.com/denoland/deno/releases/tag/v1.12.2 deno_std v0.103.0がリリース deno_std v0.103.0がリリースされました 変更点: async/deferred: Deferredオブジェクトにstateプロパティが追加され、Promiseの現在の状態を問い合わせられるようになりました http/file_server: ETagとIf-None-Matchヘッダへのサポートが追加されました http/file_server: Rangeヘッダがサポートされました encoding/base64url: 不正な形式のbase64url文字列が渡された際に、TypeErrorを投げるように修正されました encoding/toml: TOMLパーサが書き直され、ネストされたテーブルなどが適切に取り扱われるように修正されました encoding/yaml: parseAll関数の型定義が改善されました testing/asserts: assertThrowsAsyncのエラーメッセージで実際に投げられたエラーではなく、常にErrorクラスが表示される問題が修正されました testing/asserts: assertEqualsがクラスの違いを考慮するように修正されました https://github.com/denoland/deno_std/releases/tag/0.103.0 deno-sqlite v2.5.0がリリース deno-sqliteのv2.5.0がリリースされました。 変更点: DBクラスのコンストラクタにoptionsパラメータが追加され、データベースを開く際の挙動を詳細に制御できるようになりました PreparedQueryタイプにcolumnsメソッドが定義されました Deno.fdatasyncSyncを使って、SQLiteがファイルのデータを適切にディスクに同期できるようになりました https://github.com/dyedgreen/deno-sqlite/releases/tag/v2.5.0 depcheck depcheckはソースコード中の未使用の依存関係を検出するためのDenoモジュールです https://github.com/ebebbington/depcheck deno-github-contributions-api deno-github-contributions-apiは、Deno Deployで動作するGitHub上でのコントリビューション数を取得するためのAPIです。...

August 1, 2021

2021/03/22〜2021/03/28の最新情報

Deno本体の最新情報 Deno v1.8.2がリリース Deno v1.8.2がリリースされました。 このリリースでは、バグ修正などを中心に実施されています。 変更点: Deno.createHttpClientを使用した際に、User-Agentヘッダが設定されない問題が修正された deno fmtでmarkdownファイルのスペースなどが適切にフォーマットされない問題が修正された deno lspでエディタ以外でファイルが編集されていると、“The current snapshot version is missing.“エラーが発生する問題が修正された deno lspでファイルの診断(diagnostics)が固有のスレッドで実行されるようになった https://github.com/denoland/deno/releases/tag/v1.8.2 deno_std v0.91.0がリリース deno_std v0.91.0がリリースされました。 主な変更点: encoding/yaml: EXTENDED_SCHEMAが追加され、Yamlファイル内でJSの関数や正規表現などを使用できるようになった io/streams: readerFromIterable()が追加された node/fs: utimes/utimesSyncが実装された など https://github.com/denoland/deno_std/releases/tag/0.91.0 status.deno.landが公開された status.deno.landが公開されました。 このサイトでは、Denoのモジュールレジストリなどの運用状況を確認することができます。 https://status.deno.land サードパーティモジュールなどの最新情報 swdev - Service WorkerベースのNo bundleビルドツール swdevという、Service WorkerベースのNo bundleビルドツールが公開されました。 以下のようが機能が提供されているようです: Service Workerを利用したTypeScriptやSvelteファイルの変換 Deno.watchFs()ベースのCache Busting Rollupベースのプロダクションビルド https://github.com/mizchi/swdev deno-sqlite v2.4.0がリリース deno-sqlite v2.4.0がリリースされました。 このリリースでは、以下のような変更が加わっています: SQLiteのv3.35.0への更新 DB....

March 28, 2021