2021/11/29〜2021/12/05の最新情報

Deno v1.16.4 Deno v1.16.4がリリースされました。 このリリースはバグ修正がメインです。 変更点: SubtleCrypto.encryptで指定されたキーとアルゴリズムが一致しない場合、例外が投げられるようになりました deno testのOpサニタイザーの安定性が向上しました WebSocketStreamの作成後にAbortControllerで中断すると、AbortErrorではなくDeno.errors.BadResourceエラーが発生する問題が修正されました Worker#terminateを呼ぶと、プロセスがまれにパニックする問題が修正されました WorkerのメインモジュールでTop-Level Awaitが使われておりなおかつWorkerが作成後即座にterminateされると発生した模様 https://github.com/denoland/deno/releases/tag/v1.16.4 deno_std v0.117.0 deno_std v0.117.0がリリースされました。 httpモジュールでの新機能の追加やnodeモジュールのNode.jsとの互換性の向上が実施されています。 httpモジュール serveなどの関数でonErrorオプションがサポートされ、handlerで発生したエラーを補足できるようになりました const handler = (request: Request) => { throw new Error("Hello"); }; const servePromise = serve(handler, { addr: "localhost:3000", onError(_error) { return new Response("Internal Server Error", { status: 500 }); }, }); nodeモジュール readline: createInterface()が実装されました process: process.stdin.read()で読み込みが非同期に行われるようになりました buffer: Bufferでbase64エンコーディングがサポートされました....

December 5, 2021

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

Denoのこれまでとこれから JSConf JPでのkt3kさんのDenoに関する発表資料が公開されました。 Denoの概要や作られた背景、今後のロードマップなどについて解説されています。 Denoのこれまでとこれから Deno v1.16.3 Deno v1.16.3がリリースされました。 このリリースはバグ修正がメインです。 ランタイム Deno.watchFsで発火されるイベントに"other"という新しいイベントタイプがサポートされました。 (#12097) 設定ファイル(--config)に記載されたパスが、その設定ファイルからの相対パスによって解決されるようになりました (今まではカレントディレクトリに基づいて解決されていました) --reloadオプションが指定された際は、.tsbuildinfoファイルを読み込まないように修正されました Deno.readFileで/procディレクトリのファイルが読めない問題が修正されました。 すでに停止されたワーカーなどでコードを評価しようとすると、プロセスがパニックする問題が修正されました。 deno lsp initializationOptions.configで指定された設定ファイルのinclude/excludeの設定が考慮されるようになりました。例えば、lint.files.excludeで指定されたファイルはエディタ上で診断結果が表示されなくなります。 @deprecatedコメントを付けた関数などで適切に警告が表示されるようになりました。 設定ファイルやImport mapsが配置されているパスによっては、LSPによる再読込がうまく行われない問題が修正されました。 deno fmt Markdownファイルをフォーマットした際に、 などの文字が削除される問題が修正されました。 deno compile 引数としてimportを含まない.jsファイルを指定した場合、ソースコードのバンドルがスキップされるようになりました。 Web Crypto API crypto.subtle.decryptでの復号に失敗した際に、プロセスがパニックする問題が修正されました https://github.com/denoland/deno/releases/tag/v1.16.3 deno_std v0.116.0 deno_std v0.116.0がリリースされました。 node os.hostname()が実装されました util.inspect()の互換性が向上しました httpパッケージで立てたサーバが不正な形式のリクエストを受信した際に、プロセスがパニックする問題が修正されました fmt printfで少数を表示する際に適切に丸めが行われない問題が修正されました https://github.com/denoland/deno_std/releases/tag/0.116.0 Drash v2.2.0 Drashのv2.2.0がリリースされました。 GraphQLやETag、レート制限などのサポートが追加されています。 https://github.com/drashland/drash/releases/tag/v2.2.0 NOVAS DenoでSvelteアプリケーションを開発するためのツール https://github.com/NOVASland/NOVAS

November 28, 2021

2021/11/15〜2021/11/21の最新情報

Slackの次世代開発プラットフォームについて Slackの次世代開発プラットフォームが発表されました。 CLIやSDKなどでDenoが採用されるようです。 https://deno.com/blog/slack https://api.slack.com/future Deno v1.16.2 Deno v1.16.2がリリースされました。 このリリースはバグ修正などがメインです。 deno testのsub-steps APIを使った際に、テストレポートに実行されたステップ数が表示されるようになりました。 deno test --docでコードブロックにCRLFが含まれていると、適切にタイプチェックが行われない問題が修正されました リモートモジュールのdynamic importに時間がかかる問題が改善されました。 https://github.com/denoland/deno/releases/tag/v1.16.2 deno_std v0.115.0 deno_std v0.115.0がリリースされました。 std/fsでの破壊的変更やstd/nodeのNode.jsとの互換性向上などが実施されています。 std/fs fs/mod.tsからcopy()やcopySync()がexportされなくなりました (これらのAPIは--unstableに依存するためです) std/node wasiパッケージが実装されました。 process 下記APIが追加されました process.config process.exitCode process.stdin.setRawMode process.hrtime.bigint process.nextTickのNode.jsとの互換性が向上しました fs 下記APIが追加されました fs.readSync fs.read fs.rm fs.rmSync http Node.jsとの互換性が向上しました。(Server#listen()の引数なしの形式のサポート、ServerResponse#end()で空のレスポンスのサポートなど) util util.isBuffer/util._extend/util.stripVTControlCharactersが追加されました util.isRegExpのNode.jsとの互換性が向上しました events EventEmitterがES6のクラス形式からES5形式の実装に変更されました。(これによりNode....

November 21, 2021

2021/11/08〜2021/11/14の最新情報

Deno v1.16.0 Deno v1.16.0がリリースされました。 React 17 JSX Transformのサポート React 17で導入された新しいJSX Transformのサポートが追加されました。 https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/#jsx-factories .jsxまたは.tsxファイル中で@jsxImportSourceを使うことで有効化されます。 /** @jsxImportSource https://esm.sh/preact@10.5.15 */ export function Hello(props) { return ( <div>Hello, {props.name}</div> ) } また、--configオプションで指定する設定ファイルで有効化することも可能です。 { "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "https://esm.sh/react@17.0.2" } } ※Denoの特性上、"jsx": "react-jsx"を指定した際は、jsxImportSourceの指定も必要です。 Deno API 新しいシグナルAPI Deno.addSignalListenerとDeno.removeSignalListenerが実装されました (unstable) const signalListener = () => { // ... }; Deno.addSignalListener("SIGTERM", signalListener); Deno.removeSignalListener("SIGTERM", signalListener); この変更に合わせて、既存のDeno.signalは削除されています。...

November 14, 2021

2021/10/25〜2021/10/31の最新情報

Deno v1.15.3 Deno v1.15.3がリリースされました。 このリリースはバグ修正がメインです。 変更点: TLS接続関連のAPIで発生することのあるプロセスのハングや大きなデータの書き込みがうまくいかない問題などが修正されました Deno.emitでalready borrowed: BorrowMutErrorが発生する問題が修正されました globalThis経由でFormDataなどのWeb APIを参照しようとすると型エラーが発生する問題が修正されました など https://github.com/denoland/deno/releases/tag/v1.15.3 deno_std v0.113.0 deno_std v0.113.0がリリースされました。 変更点: collections: runningReduceに渡すreducer関数にcurrentIndexが渡されるようになりました testing/asserts: assertIsErrorが追加されました node/module: require()でnode:プレフィックスがサポートされました const EventEmitter = require("node:events"); node/module: Common JSモジュールの中でimport/exportを使用した際の警告メッセージが親切になりました node/url: url.urlToHttpOptionsが実装されました node/os: os.archの返却値がNode.jsに一致するように修正されました node/events: onとemitメソッドを非EventEmitterオブジェクトに束縛して実行できるようになりました http/file_server: ファイル一覧ページでパンくずリストが表示されるようになりました http/file_server: ファイル名に%記号などが含まれている場合、そのファイルに適切にアクセスできない問題が修正されました http/file_server: 200や206以外のレスポンスを返却する際に生じるリソースリークが修正されました http/file_server: エラーログに色がつくようになりました...

October 31, 2021

2021/10/18〜2021/10/24の最新情報

Deno v1.15.2 Deno v1.15.2がリリースされました。 主な変更点: Node.js互換モード(--compat)でCommon JS形式のモジュールの実行などがサポートされました。 deno runコマンドの引数としてCommon JS形式のファイルを直接指定できます const EventEmitter = require("events"); const emitter = new EventEmitter(); emitter.on("foo", console.log); emitter.emit("foo", 1); $ deno run --unstable --compat --allow-read main.js TypeScriptのallowSyntheticDefaultImportsオプションがデフォルトで有効化されるようになりました https://github.com/denoland/deno/releases/tag/v1.15.2 deno_std v0.112.0 deno_std v0.112.0がリリースされました。 大きな変更点として、deno_std/nodeでexpressのHello Worldコードを動かすための対応やpackage.jsonのimportsやexportsのサポートなどが実施されています。 変更点: collections: joinToStringが追加されました node/module: package.jsonのimportsやexportsフィールドのサポートが追加されました node/buffer: Bufferをnewなしで呼べるようになりました node/events: setMaxListenersが実装されました node/process: process.mainModuleが実装されました node/process: process.versionの値がDenoのバージョンからNode.jsのstableバージョンに変更されました node/http: ServerResponseとIncomingMessageでストリーミングがサポートされました node/url: formatが実装されました node/os: devNull定数が追加されました node/global: node/global....

October 24, 2021

2021/10/11〜2021/10/17の最新情報

Deno v1.15.0 Deno v1.15.0がリリースされました。 Node.jsの互換モードやサブテストの実験的な実装や、URLPatternやDeno.killの安定化、deno uninstallコマンドの実装などが行われています。 新機能: CLI Node.js互換モードの実装 (--compat を付与してDenoを実行すると、Node.jsの組み込みモジュールの読み込みが有効化されます) deno uninstallコマンドが実装されました (deno installでインストールされたスクリプトをアンインストールできます) deno lintコマンドで--watchオプションがサポートされました テスト Deno.testでテストケースの入れ子が実験的にサポートされました Deno.testで定義したテストケースがリソースリークによって失敗した際に、より詳細なエラーメッセージが表示されるようになりました (unstableをつけたときのみ) Deno API 下記のAPIが安定化されました Deno.kill Deno.Process.kill Deno.resolveDns URLPattern Deno.startTLS/Deno.connectTLS/Deno.createHttpClientでcaCertsオプションがサポートされ、複数のルート証明書を指定できるようになりました 合わせてDeno.startTLSとDeno.connectTLSのcertFileオプションが非推奨化されています また、Deno.createHttpClientのcertFileオプションが削除されています Deno.resolveDnsの内部でエラーが発生した際に返却されるエラーが改善されました Web Crypto API SubtleCrypto.deriveKeyが実装されました SubtleCrypto.wrapKeyが実装されました SubtleCrypto.exportKeyでRSAキーをspkiフォーマットでエクスポートできるようになりました SubtleCryptoのencryptとdecryptメソッドでAES-CBCによる暗号化と復号がサポートされました SubtleCrypto.deriveBitsでECDH (p256)がサポートされました SubtleCrypto.importKeyでraw形式のECDSAキーをインポートできるようになりました SubtleCryptoでAESキーのインポートとエクスポートがサポートされました FFI関連 (Deno.dlopen) バッファ引数(ArrayBuffer)のサポート 非同期呼び出しのサポート WASM スタックトレースにおけるWebAssembly....

October 17, 2021

2021/10/04〜2021/10/10の最新情報

Deno v1.14.3 Deno v1.14.3がリリースされました。 このリリースでは、バグ修正やパフォーマンスチューニングを中心に実施されています。 変更点: fetchで不正な形式のヘッダを指定するとプロセスがパニックする問題が修正されました Deno.listenで抽象ソケットアドレスを指定するとプロセスがパニックする問題が修正されました REPLでglobalThisに代入するとプロセスがパニックする問題が修正されました Workerのmessageハンドラで投げられたエラーが報告されない問題が修正されました Workerのdeno.permissions.envオプションに配列を渡せるようになりました Deno.testでAggregateErrorが投げられた際の出力が改善されました Opの実行、RequestやResponseの作成、Headers.prototype.appendなどが最適化されました https://github.com/denoland/deno/releases/tag/v1.14.3 deno_std v0.110.0 deno_std v0.110.0がリリースされました。 std/nodeへの機能追加が実施されています。 変更点: node/buffer: BufferでreadUIntLE及びreadUIntBEが実装されました node/crypto: scrypt, scryptSync, timingSafeEqual, 及びrandomUUIDが実装されました。 node/stream/web: 下記クラスが追加されました。 ReadableByteStreamController TransformStreamDefaultController ByteLengthQueuingStrategy CountQueuingStrategy TextEncoderStream TextDecoderStream node/os: tmpdirが実装されました https://github.com/denoland/deno_std/releases/tag/0.110.0 Freshのアップデート DenoのWebフレームワークであるFreshがアップデートされました。 <Head>コンポーネントがサポートされ、<head>配下に要素を追加できるようになっています。 /** @jsx h */ import { h, Head } from "../deps.ts"; export default function Home() { return ( <div> <Head> <title>Hello</title> </Head> <h2>Home</h2> </div> ); } https://github....

October 10, 2021

2021/09/27〜2021/10/03の最新情報

DenoのNode.js互換モードについて denoland/deno#12295のissueで、DenoにNode.jsの互換モードを提供することが提案されています。 Denoを実行する際に--compatオプションを指定すると、Node.jsの組み込みモジュールの読み込みが有効化されるように提案されています。 $ deno run --compat main.mjs こちらの機能の実装はdenoland/deno#12293のPRにて進行中です。 今のところ、Import mapsとdeno_std/nodeを併用することで、Node.jsの組み込みモジュールを読み込めるように実装されているようです。 https://github.com/denoland/deno/issues/12295 https://github.com/denoland/deno/pull/12293 Deno v1.14.2 Deno v1.14.2がリリースされました。 このリリースはバグ修正やパフォーマンスの最適化などがメインです。 主な変更点: deno fmtやdeno testで.mkd, .mkdn, .mdwn, .mdown, 及び.markdownの拡張子のファイルがサポートされました 一度取り消しされたパーミッションが再び許可されないように修正されました Deno.HttpConnがすでに閉じられている場合にrespondWithを呼ぶと、プロセスがパニックする問題が修正されました 祖先のワーカーが閉じられたときまたは終了したときに、合わせて子孫のワーカーも閉じるまたは終了するように修正されました 祖先のワーカーが終了したもののその子孫に生きているワーカーが存在する場合、プロセスがパニックする問題が修正されました WindowsでDeno.killがサポートされました Request/Response/Eventオブジェクトの生成、Headersオブジェクトの内部実装、パーミッションチェックなどが最適化されました https://github.com/denoland/deno/releases/tag/v1.14.2 deno_std v0.109.0 deno_std v0.109.0がリリースされました 変更点: node: stream/webの部分的なサポートが追加されました node/events: EventEmitter.callを呼べない問題が修正されました node/module: .mjsファイルをrequireできないように修正されました https://github.com/denoland/deno_std/releases/tag/0.109.0 lint.deno.landがDeno Deployへ移行 deno_lintの公式サイトであるlint.deno.landがDeno Deployへ移行されました。 それに合わせて、内部実装がdext.ts+Tailwind CSSからFresh+Twindへ移行されています。 DenoやDeno Deployなどでフロントエンド開発を行う際に参考になるかもしれないため、興味のある方はソースコードも見てみるとよいかもしれません。 https://github.com/denoland/deno_lint/pull/905

October 3, 2021

2021/09/20〜2021/09/26の最新情報

Deno v1.14.1 Deno v1.14.1がリリースされました。 このリリースはバグ修正がメインです。 変更点: 非async関数でfor-awaitを使用したときのエラーメッセージが改善されました v1.14.0で追加されたファイルロックAPIの型定義がlib.deno.ns.d.tsからlib.deno.unstable.d.tsに移動しました deno docでドキュメントを表示する際に、—unstableが必要になるなどの影響があります. (例: deno doc --builtin --unstable Deno.flock) スタックトレース中のData URLの表示が改善されました HMACキーをJSON Web Key形式でエクスポートできない問題が修正されました Deno.readFileの最適化 https://github.com/denoland/deno/releases/tag/v1.14.1 deno_std v0.108.0 deno_stdのv0.108.0がリリースされました。 変更点: collections: maxWithとminWithに渡した配列にundefinedが含まれていた場合、要素の並び順によって結果が異なってしまう問題が修正されました collections: maxBy, minBy, 及びsortByのselector引数でbigintやDateを返却できるように型定義が修正されました testing/asserts: assertThrowsやassertRejectsでコールバックがサポートされました import { assertEquals, assertRejects } from "https://deno.land/std@0.108.0/testing/asserts.ts"; await assertRejects(() => { return Promise.reject(new Error('foo')); }, (error: Error) => { assertEquals(error.message, 'foo'); }); https://github....

September 26, 2021