虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

Deno 1.41 へのアップデートと変更事項まとめ

皆さんこんにちは。おっくんです。

去る 2024 年 2 月 22 日に Deno 1.41 がリリースされました。
今回も、リリースノートを参考に変更事項の気になるところを紹介します。

Deno 1.41

Deno 1.41 での変更事項をDeno 1.41 リリースノートを元に確認します。

deno.com

deno compile により軽量なビルドが導入

Deno 1.41 から、deno compile にツール群を含まないスリムバージョンが使用されることで、ビルド結果のファイルサイズが最大で 50%小さくなるとされています。

github.com

これまで deno compile結果の容量削減を行う方法として、--lite オプションが登場しましたが、2021年4月に一度削除されていました。

github.com

このリリースは、完全に新たなものが導入されたというより、一度削除した容量削減オプションがデフォルト設定で復活という状況のようです。

Deno 1.7 での--lite オプション使用 ON/OFF、Deno 1.40、Deno 1.41 の 3 バージョンで比較してみます。

# Deno 1.7
$ deno -V
deno 1.7.0

# lite オプション ON
$ echo "console.log('Hello world');" > hello_world.ts
$ deno compile --unstable --lite hello_world.ts
$ ls -la| grep hello_world
-rwxr-xr-x 1 root root 34288021 Feb 23 11:47 hello_world
-rwxr-xr-x 1 root root       28 Feb 23 11:46 hello_world.ts

# lite オプション OFF
$ deno compile --unstable hello_world.ts
$ ls -la| grep hello_world
-rwxr-xr-x 1 root root 53964381 Feb 23 11:48 hello_world
-rwxr-xr-x 1 root root       28 Feb 23 11:46 hello_world.ts
# Deno 1.40
$ deno -V
deno 1.40.0

$ echo "console.log('Hello world');" > hello_world.ts
$ deno compile hello_world.ts

$ ls -la| grep hello_world
-rwxr-xr-x 1 root root 139298295 Feb 23 11:50 hello_world
-rwxr-xr-x 1 root root        28 Feb 23 11:49 hello_world.ts
# Deno 1.41
$ deno -V
deno 1.41.0

$ echo "console.log('Hello world');" > hello_world.ts
$ deno compile hello_world.ts

$ ls -la| grep hello_world
-rwxr-xr-x 1 root root 77172559 Feb 23 11:54 hello_world
-rwxr-xr-x 1 root root       28 Feb 23 11:53 hello_world.ts

1.7~1.41 の間に入ったほかの機能拡張もあるので一概に比較はできないのですが、 console.log('Hello world'); を行うソースのコンパイル結果は、次のようになります。

バージョン(オプション) コンパイル結果ファイルサイズ(byte)
1.7 53964381
1.7(--lite オプション有) 34288021
1.40 139298295
1.41 77172559

数字だけ見ると Deno 1.7 の方が容量自体は少ないですが、この差分が 1.7 から 1.41 のアップデートの結果とも思えますね。

Linux ARM64 サポートの追加

これまで、Deno コミュニティが提供していた Linux ARM64 ビルドが、Deno 1.41 から公式ビルドで公開されるようになりました。

これに合わせて、公式の Deno の Docker イメージも ARM64 をサポートするようになります。

https://hub.docker.com/r/denoland/deno/tags?page=1

AMD64 canary ビルド

Deno 1.41 から、canary ビルドを使うことができます。 canary ビルドは、main ブランチのコミット毎に毎日リリースされます。

使うには、--canary をつけてアップグレードします。 実行すると次のようになります。

$ deno upgrade --canary
Looking up latest canary version
Found latest version f49abcc1ac3de72bf894ccfc0102d83ec19f1d46
Downloading https://dl.deno.land/canary/f49abcc1ac3de72bf894ccfc0102d83ec19f1d46/deno-x86_64-unknown-linux-gnu.zip
Deno is upgrading to version f49abcc1ac3de72bf894ccfc0102d83ec19f1d46
Archive:  /tmp/.tmprrdInc/deno.zip
  inflating: deno

$ deno -V
deno 1.41.0+f49abcc

f49abccの部分が、コミットハッシュと一致します。

https://github.com/denoland/deno/commit/f49abcc1ac3de72bf894ccfc0102d83ec19f1d46

また、コミットハッシュで、インストールするバージョンの指定が可能でした。

$ deno upgrade --canary --version ae703041b1921affb7fa8a0aa865c6f302c72d6e
Downloading https://dl.deno.land/canary/ae703041b1921affb7fa8a0aa865c6f302c72d6e/deno-x86_64-unknown-linux-gnu.zip
Deno is upgrading to version ae703041b1921affb7fa8a0aa865c6f302c72d6e
Archive:  /tmp/.tmpncrMDA/deno.zip
  inflating: deno
Upgraded successfully

$ deno -V
deno 1.41.0+ae70304

使用目的は、最新の機能とバグのテストだそうです。

その他

  • Node.js の互換性の更新
    • crypto モジュールが、aes256 アルゴリズムをサポートを追加など
  • Deno API の更新
    • unstable な API Deno.FsFile.lock[Sync]()、Deno.FsFile.unlock[Sync]() の追加など
  • LSP(言語サーバー)が強化
    • npm: インポートするモジュールのバージョン提案など

まとめ

Deno 1.41 のリリースノートを見てきました。
これまでのリリースからすると少々少な目に見えますが、1.41 とは別に 2.0 向けに用意が進んでいるものも別途有ります。

Deno 1.40 のリリースノートでも書かれていた Deno API の整理は引き続き進んでいます。

リリースノートには取り扱われていないこと - deno publish と JSR について

現在、パッケージレジストリ JSR(jsr.io) の開発が進んでいます。
JSR は、2024 年 02 月 24 現在 waitlist への参加が必要です。
登録しないと見れないのですが、そこでは JSR の開発経緯やコンセプトが記されています。

JSR は、パッケージレジストリなのでパッケージの登録をするのですが、方法の一つとしてローカルマシンからパッケージの公開が可能です。 その際に使用するのが、deno publish です。 現在のところ、deno -h では出てきません。 この機能への改修が Deno 1.41 のマイルストーンに含まれています

https://github.com/denoland/deno/pull/22514

また、リリースを見ると deno publish に関するものがいくつか含まれています。

https://github.com/denoland/deno/releases/tag/v1.41.0

興味がある人は、waitlist へ参加してドキュメントを是非覗いてみてください。

採用情報

虎の穴では一緒に働く仲間を募集中です!

この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。

カジュアル面談やエンジニア向けイベントも随時開催中です。ぜひチェックしてみてください。 toranoana-lab.co.jp