Mercurial 4.0 is released !

58 views
Skip to first unread message

FUJIWARA Katsunori

unread,
Nov 10, 2016, 5:09:35 AM11/10/16
to mercurial-ja
藤原です。

アナウンスが遅くなってしまい、申し訳ありません。

定例のメジャーバージョンアップである 4.0 版がリリースされました。


他のソフトウェアでは、3.9 ⇒ 4.0 みたいなアップデートは、色々根本的な部
分が違っていたりするケースも多々ありますが、Mercurial の場合は、単なる
「バージョン番号の 0.1 増加」扱いになります。大幅に何かが違うわけではあ
りませんので、更新される方はご安心を (笑)

日本語メッセージファイルが同梱されていないパッケージや、GNU gettext が
無い環境でビルドした人向けに、日本語メッセージファイルを以下から入手で
きるようにしてあります。


ダウンロードページから hg-4_0.ja.mo を入手し、適切な場所に hg.mo として
配置してください。詳細に関しては以下のページを参照してください。


後方互換性に影響する修整に関しては、以下を参照してください。


あるいは、Mercurial のリポジトリ上での以下のコマンド実行により、当該変
更を抽出するという手も:

    $ hg log -r "3.9::4.0 and desc('(BC)')"

今回のリリースでも、コミットログから抽出した「修正項目一覧」の他に、
「主だった新規機能/改善点一覧」が別途公開されています。


以下、上記ページの各項目について、簡単に説明します + 例によって適宜西
原さんに丸投げします(笑)。

========================
Features:
========================

- The following commands now also have experimental formatter support:
  'hg version', 'hg grep' and 'hg config'

  version/grep/config の出力で formatter 機能がサポートされるようになり
  ました。

  json や pickle といった、machine readable な形式で出力を得るような、
  処理自動化系のニーズがある場合を除けば、無視してもよい項目かと。

- New template keywords and functions: termwidth, mod(a, b), relpath(path)
- Basic arithmetic operations in template such as termwidth - 10

  共にテンプレート機能の拡張に関する修整で、幾つかの追加関数と、算術演
  算機能が導入されています。

  剰余の算出に関しては、テンプレート機能では % が特別扱い (リストに対す
  るマッピング処理) になっているため、一般的なプログラミング言語のよう
  な % 演算子ではなく、独立した関数になっています (ですよね? > 西原さん)

- follow() revset takes new startrev parameter

  revset の follow() 述語に、startrev 引数が追加されました。

  従来は「現行親リビジョン」固定だった起点リビジョンが、指定できるよう
  になります。

- Bash completion now allows skipping potentially expensive status
  call for completing 'hg status' arguments, using
  $HGCOMPLETE_NOSTATUS environment variable

  HGCOMPLETE_NOSTATUS 環境変数が非空値の場合、bash 補完の際に、実行コス
  トの高い "hg status" の実行を回避するようになりました。

  現行ソースを見る限りでは、add/commit/diff/shelve での補完で有効な模様。

========================
Improvements:
========================

- A number of changes were made to move and copy tracking, to make
  sure move and copy information is not lost during commands like 'hg
  graft'

  "hg graft" 等において、改名/複製に関するメタデータを正しく維持/補正
  する修整が取り込まれました。

- Compound revset expression is now properly ordered

  "or" で連結するようなケースで、明示的な整列指定 (= order() 適用) が無
  い場合でも、revset 結果が「ユーザが想定するであろう」順序で出力される
  ようになりました。

  この辺の経緯の詳細は西原さんが詳しい筈なのでお任せします(笑)

- Performance of client-side application of bundle data for
  generaldelta repos has been significantly improved. This makes 'hg
  clone', 'hg pull', and 'hg unbundle' operations faster. Cloning the
  Firefox repository now consumes 70+s less CPU time and completes
  over a minute faster (when not network or I/O bound).

  内部キャッシュの改善により、「履歴データ追加」に関する処理の性能が大
  きく向上しました。

  実装/性能比較の詳細に関しては、以下のリビジョンを参照してみてくださ
  い。


- The storage and transfer of changeset data has been optimized to
  improve read performance

  履歴メタデータ格納の際に「差分記録」を抑止することで、履歴メタデータ
  の読み書き性能が大きく向上しました。

  実装/性能比較の詳細に関しては、以下のリビジョンを参照してみてくださ
  い。


- Python 3 support has received a lot of improvements (but will take a
  lot of additional work)

  Python3 対応向けの修整が多数取り込まれました。が、Python3 対応が公式
  にアナウンスされるまでは、まだまだ道半ばというところでしょうか……

- zlib performance in hgweb is improved, and it's now possible to
  control zlib compression level using server.zliblevel option

  hgweb 経由での履歴情報転送に関して、以下の修整が取り込まれています。

  - 圧縮元データ取得に関する I/O サイズの拡大
  - 空データに対する処理の抑止
  - zlib 圧縮率に関する設定機能の追加 ([server] zliblevel 項目)

- Various improvements for largefiles extension related to executable
  bit tracking and removing files, better recovery from an interrupted
  state

  largefiles 拡張有効時の、実行ビット回りの扱いが改善されました。

Yuya Nishihara

unread,
Nov 10, 2016, 9:42:33 AM11/10/16
to mercur...@googlegroups.com, FUJIWARA Katsunori
On Thu, 10 Nov 2016 02:09:35 -0800 (PST), FUJIWARA Katsunori wrote:
> - New template keywords and functions: termwidth, mod(a, b), relpath(path)
> - Basic arithmetic operations in template such as termwidth - 10
>
> 共にテンプレート機能の拡張に関する修整で、幾つかの追加関数と、算術演
> 算機能が導入されています。
>
> 剰余の算出に関しては、テンプレート機能では % が特別扱い (リストに対す
> るマッピング処理) になっているため、一般的なプログラミング言語のよう
> な % 演算子ではなく、独立した関数になっています (ですよね? > 西原さん)

mod() 関数です。いずれも整数のみ対応しています。

> - Compound revset expression is now properly ordered
>
> "or" で連結するようなケースで、明示的な整列指定 (= order() 適用) が無
> い場合でも、revset 結果が「ユーザが想定するであろう」順序で出力される
> ようになりました。

常に、最も外側(& の左側)の式で順序が決まるようになりました。これまでは sort(),
or, x:y range 等が絡むと、適用される順序がバラバラでした。

x & (y | z) # x 順
=

(x | y) & z # x 順、続いて y 順
=======

sort(x) & y # sort(x) 順
=======

x & sort(y) # x 順 (sort() は noop)
=
Reply all
Reply to author
Forward
0 new messages