ov v0.30.0

Posted on:

ov v0.30.0をリリースしました

Terminal PAGER releases ov v0.30.0

メモリ管理の変更

v0.15.0までのメモリ管理を変更して、ファイルのすべてをメモリにロードするのを止め、必要なChunkをメモリにロードするように変更しました。

ov v0.15.0までは、行数を数えるのにファイルをすべて読み込んでいましたが、この方法では、ファイルサイズが大きくなるとメモリを大量に消費してしまいます。 そこで、最初の起動時に最初のChunk分(1万行)はメモリにロードしますが、それ以降は行数を数えてreadの位置をChunk毎に記録しておくだけにしました。 Chunkの移動が発生した場合は、そのChunkをメモリにロードします。そしてメモリ制限を超えた場合は、メモリにロードされているChunkを解放します。 通常ファイルではseekを使っているので、Chunkの移動時にディスクアクセスが発生します。

seekできないファイルでは、Chunkを解放してしまうと再ロードできないため、デフォルトではすべてのChunkをメモリにロードします。 メモリ制限をした場合は、メモリ制限を超えないまでChunkをロードし、readを一時停止します。そしてChunkを移動したときに、現在のChunkより前のChunkを解放して、停止していたreadを再開します。

これにより、メモリを大量に消費することなく、大きなファイルを扱うことができるようになりました。 メモリの制限は--memory-limit--memory-limit-fileオプションで指定できます。

followの改善

新しく--follow-nameオプションを追加しました。今まではファイルディスクリプタを使っていたので、ファイル名が変わるとfollowができなくなっていました。 --follow-nameオプションを指定すると、ファイル名が変わってもfollowができるようになりました。

また、改行で終わらないファイルのfollowができない問題を修正しました。改行で終わっていないファイルに追加された場合は、新しい行ではなくすでに表示されている行の後ろに追加されるようになりました。 これまでは、改行で終わっていないファイルに追加された場合は、新しい行として表示されていたため、再度開き直すと表示が違っていました。

column-widthを追加

--column-widthオプションを追加しました。--column-widthオプションを指定すると、指定した幅で表示します。 guesswidthを使って、ヘッダーの文字幅を推測しています。 これによりps出力等をパイプで受けてそれぞれの列をわかりやすく表示できるようになりました。

ps ps

過去のバージョン

  • v0.30.0 すべてをメモリにロードしないように変更
  • v0.15.0 パフォーマンス、メモリ効率改善
  • v0.14.2 キーボード、マウスの改善
  • v0.14.1 column-delimiterに正規表現サポートを追加
  • v0.14.0 XDG_CONFIG_HOMEに対応
  • v0.13.0 view-modeの修正
  • v0.12.0 multicolor, jump-targetの追加
  • v0.11.1 設定名の微修正
  • v0.11.0 sectionの概念を追加
  • v0.10.0 reload,watchを追加
  • v0.9.6 リダイレクト出力、列モードの修正
  • v0.9.5 サスペンド/レジュームのサポート
  • v0.9.4 マーク機能の強化、インクリメンタルサーチを追加して検索強化。
  • v0.9.3 スキップ行オプションの追加
  • v0.9.2 主要モジュール更新版
  • v0.9.1 半画面下移動のバグ修正。goのバージョンを1.16以降へ変更。
  • v0.9.0 follow,follow-all,execの各モードを追加、改善。検索とカラム選択のスタイルカスタマイズを可能にしました。
  • v0.8.9 (pre)follow-mode,follow-all-modeの追加
  • v0.8.1 文字の単位をCode point から Grapheme clusterに変更しました。
  • v0.8.0 tcell v2にアップグレードしました。
  • v0.7.1 交互に行スタイル効果適用の行がズレていたので修正
  • v0.7.0 スタイルカスタマイズの改善
  • v0.6.2 検索の高速化とキャンセル処理の追加
  • v0.6.1 細かな修正バージョン
  • v0.6.0 マウスサポート
  • v0.5.0 複数のドキュメントを開く方法を変更
  • v0.4.0 ヘルプ画面を追加
  • v0.3.1 位置をマークする機能を追加
  • v0.3.0 入力の改善
  • v0.2.1 色をカスタマイズ可能にする
  • v0.2.0 検索の改善
  • v0.1.3 行番号モードを追加
  • v0.1.2 Homebrewパッケージの追加
  • v0.1.1 パッケージ自動更新の調整
  • v0.1.0 ovにレポジトリ名と構成を変更。deb/rpmパッケージの追加
  • v0.0.5 現在の基本機能を備えた最初のバージョン

参考

ovの紹介