皆さんこんにちは。おっくんです。
去る 2024 年 2 月 22 日に Deno 1.41 がリリースされました。
今回も、リリースノートを参考に変更事項の気になるところを紹介します。
Deno 1.41
Deno 1.41 での変更事項をDeno 1.41 リリースノートを元に確認します。
deno compile により軽量なビルドが導入
Deno 1.41 から、deno compile
にツール群を含まないスリムバージョンが使用されることで、ビルド結果のファイルサイズが最大で 50%小さくなるとされています。
これまで deno compile結果の容量削減を行う方法として、--lite
オプションが登場しましたが、2021年4月に一度削除されていました。
このリリースは、完全に新たなものが導入されたというより、一度削除した容量削減オプションがデフォルト設定で復活という状況のようです。
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