OCaml4.02.2の変更点

このページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

last mod. 2015-06-20 (土) 12:04:38

http://caml.inria.fr/pub/distrib/ocaml-4.02/notes/Changes を元にしています。

OCaml 4.02.2 の変更点

既存のプログラムを壊す可能性のある変更点には * をつけてある。

言語機能

  • PR#6583: メソッド呼び出しと同じ優先順位を持つ二項演算子の分類を追加。これらの演算子は # で始まり、演算子に使える記号を1つ以上続けたものである(例えば、 #+ や #!? 等)。さらに、(例えば ## や #+# のように) # を演算子の一部に使うこともできる。 # を含む演算子は型検査ではじかれるが、 ppx による書き換え等には使うことができる。
    (Alain Frisch, request by Gabriel Radanne)
  • * PR#6016: 型宣言に nonrec キーワードを追加
    (Jérémie Dimino)

コンパイラ

  • PR#6600: printing map をインクリメンタルに作成するようにして -short-paths を高速化
    (Jacques Garrigue)
  • PR#6642: -ccopt の引数内の $CAMLORIGIN を cma や cmxa のパスに置き換える。
    (Peter Zotov, Gabriel Scherer, review by Damien Doligez)
  • PR#6797: ランタイムや自動リンクされるオブジェクトファイルも出力する -output-complete-obj オプションを追加
    (Peter Zotov)
  • PR#6845: ocamlc にプリミティブの存在をチェックしない -no-check-prims オプションを追加
    (Alain Frisch)
  • GPR#149: Parsetree にドキュメンテーションコメントの情報を付与する。
    (Leo White)
  • GPR#159: structure/signature の位置情報を改善
    (Leo White)

トップレベルとデバッガ

  • PR#5958: #install_printer を汎化して多相的な表示関数を受け付けるように
    (Pierre Chambart and Grégoire Henry)

OCamlbuild

  • PR#6237: menhir の --infer の有効/無効を制御するための infer タグを追加
    (Hugo Heuzard)
  • PR#6625: -output-obj で作成したファイルに -linkpkg を渡す
    (Peter Zotov)
  • PR#6702: linkpkg, dontlink(foo) フラグを追加
    (Peter Zotov, Gabriel Scherer)
  • PR#6712: 一般的なVCSのディレクトリを無視する
    (Peter Zotov)
  • PR#6720: debug タグが設定されている場合は C コンパイラに -g フラグを渡す
    (Peter Zotov, Gabriel Scherer)
  • PR#6733: -output-obj -cclib -shared に .byte.so, .native.so ターゲットを追加
    (Peter Zotov)
  • PR#6733: -runtime-variant X オプションを渡すための "runtime_variant(X)" フラグを追加
    (Peter Zotov)
  • PR#6774: menhir 用に only_tokens, external_tokens(Foo) フラグを追加
    (François Pottier)

ライブラリ

  • PR#6285: Unix.stat() でナノ秒精度をサポート
    (Jérémie Dimino, report by user 'gfxmonk')
  • PR#6781: Unix.termios により大きなボーレートを追加
    (Damien Doligez, report by Berke Durak)
  • PR#6834: Obj.{first,last}_non_constant_constructor_tag を追加
    (Mark Shinwell, request by Gabriel Scherer)

ランタイム

  • PR#6078: caml_dlopen を呼ぶときにランタイムシステムを release する
    (Jérémie Dimino)
  • PR#6675: GC 関連の C コールバックを追加
    (Damien Doligez and Roshan James)

ビルドシステム

  • PR#5418 (comments): gcc ではなく $(CC) で依存関係を生成する
    (Damien Doligez and Michael Grünewald)
  • PR#6266: iOS, Android 等のクロスコンパイル
    (Peter Zotov, review by Damien Doligez and Mark Shinwell)

インストール方法

  • x86-64 PIC モードと POWER アーキテクチャのビルド方法の説明を更新
    (Mark Shinwell)

バグ修正

  • PR#5271: Location.prerr_warning が Format.err_formatter を使うようハードコードされている
    (Damien Doligez, report by Rolf Rolles)
  • PR#5395: OCamlbuild が相対シンボリックリンクと include パスの扱いを間違えている
    (Damien Doligez, report by Didier Le Botlan)
  • PR#5822: Windows 上で Options.ext_dll の値が間違っている
    (Damien Doligez and Daniel Weil)
  • PR#5836, PR#6684: ocamldebug 内で lazy な値を表示すると segfault することがある
    (Gabriel Scherer, request by the Coq team)
  • PR#5887: ヘッダファイルの名前の衝突を避けるため byterun/*.h を byterun/caml/*.h に移動
    (Jérôme Vouillon and Adrien Nader and Peter Zotov)
  • PR#6281: Windows 上の Graphics ライブラリがダブルクリックの2回目のクリックのイベントを無視する
    (Kyle Headley)
  • PR#6490: gdb で AArch64 と 32-bit ARM のバックトレースが正しくない
    (Mark Shinwell)
  • PR#6573: systhreads/threads.h に extern "C" を追加
    (Mickaël Delahaye)
  • PR#6575: Array.init が必要ないときに callback を呼ぶ
    (Alain Frisch, report by Gerd Stolpmann)
  • PR#6607: OCAMLRUNPARAM=v の 0x200 フラグのことがマニュアルに書かれていない
    (Alain Frisch)
  • PR#6616: -custom なしの -use-runtime を許す
  • PR#6617: pthread付きのAndroidビルドができるように(SDK r10c以降)
    (Peter Zotov)
  • PR#6626: cygwin 上の ocamlbuild が ocamlfind を見つけられない
    (Gergely Szilvasy)
  • PR#6628: configure スクリプトが合法な引数を受け付けない
    (Michael Grünewald, Damien Doligez)
  • PR#6630: tests/prim-bigstring/{big,}string.ml がビッグエンディアンアーキテクチャで失敗する
    (Pierre Chambart, testing by Mark Shinwell)
  • PR#6640: ocamlbuild がまちがって Warning: the tag "precious" is not used in any flag declaration と言う
    (report by user 'william')
  • PR#6652: ocamlbuild -clean slが出力のあとに改行しない
    (Damien Doligez, report by Andi McClure?)
  • PR#6658: クロスコンパイラ: バージョンチェックが OSX で動いていない
    (Gerd Stolpmann)
  • PR#6665: tests/asmcomp が sparc で失敗する
    (Stéphane Glondu)
  • PR#6667: ARM64 の %bswap16 の実装が間違っている
    (Xavier Leroy)
  • PR#6669: 4.02 でトップレベルの lazy な値の表示がリグレッションしていたのを修正
    (Leo White, review by Gabriel Scherer)
  • PR#6671: Windows: 環境変数 'TZ' が Unix.gettimeofday に影響を与えてしまう
    (Mickael Delahaye and Damien Doligez)
  • PR#6680: 多相バリアント値の警告に括弧が足りない
    (Jacques Garrigue and Gabriel Scherer, report by Philippe Veber)
  • PR#6686: subst_boxed_number のバグ
    (Jérémie Dimino, Mark Shinwell)
  • PR#6690: 局所抽象型を書くべきところに(間違った)ワイルドカードや型変数を書くとコンパイラが Fatal error: exception Not_found で落ちる
    (Jacques Garrigue, report by Mikhail Mandrykin)
  • PR#6693 (part two): x86-64 ランタイムで relocation type が不正
    (Peter Zotov, review by Jacques-Henri Jourdan, Xavier Leroy and Mark Shinwell)
  • PR#6717: Pprintast が let-pattern の属性を表示しない
    (Gabriel Scherer, report by Peter Zotov)
  • PR#6727: Printf.sprintf "%F" の挙動がまちがっている
    (Benoît Vaugon, report by Vassili Karpov)
  • PR#6747: ocamlobjinfo: OSX で caml_plugin_header を見付けられない
    (Damien Doligez, Maverick Woo)
  • PR#6749: ocamlopt で n mod 1 が0ではなく n を返す
    (Mark Shinwell and Jérémie Dimino)
  • PR#6753: Num.quo_num と Num.mod_num が負数に対して正しくない結果を返すことがある
    (Xavier Leroy)
  • PR#6758: Ocamldoc が "analyse_module: parsetree and typedtree don't match" で失敗する
    (Damien Doligez, report by user 'maro')
  • PR#6759: big_int_of_string が十六進数リテラルのパースを間違うことがある
    (Damien Doligez, report by Pierre-yves Strub)
  • PR#6763: -short-paths を付けたても #show が最短のパスを表示しない
    (Jacques Garrigue, report by David Sheets)
  • PR#6768: 循環的な型で型検査器がスタックオーバーフローする
    (Jacques Garrigue, report by user 'darktenaibre')
  • PR#6772: asmrun/signals_asm.c が NetBSD/i386 でコンパイルできない
    (Kenji Tokudome)
  • PR#6775: Digest.file がエラー時にファイルディスクリプタをリークする
  • PR#6779: クロスコンパイラが独自のプリミティブを使ったバイトコードをリンクできない
    (Damien Doligez, request by Peter Zotov)
  • PR#6787: 多相バリアントの健全性に関するバグ
    (Jacques Garrigue, with help from Leo White and Grégoire Henry, report by Michael O'Connor)
  • PR#6790: otherlibs を -g 付きでビルドする
    (Damien Doligez, report by Peter Zotov)
  • PR#6791: Scanf の "%s@[", "%s@{" にリグレッション
    (Benoît Vaugon)
  • PR#6793: ocamlbuild が menhir に滅茶苦茶な "-ocamlc ..." コマンドを渡す
  • PR#6799: unixsupport.h 等々にインクルードガードが抜けている
    (Andreas Hauptmann)
  • PR#6810: Bigarray.Genarray.map_file のドキュメントを改善
    (Mark Shinwell and Daniel Bünzli)
  • PR#6812: -short-paths と -no-alias-deps を組み合わせると inconsistent assumption エラーになることがある
    (Jacques Garrigue, report by Valentin Gatien-Baron)
  • PR#6817: モジュールと組み合わせると GADT の網羅性チェックが壊れる
    (Leo White, report by Pierre Chambart)
  • PR#6824: Format.asprintf を部分適用するとバッファの共有で不思議なことが起こる
    (Gabriel Scherer, report by Alain Frisch)
  • PR#6831: Solaris 系の OS で configure -aspp "gcc -c" なビルドが壊れている
    (John Tibble)
  • PR#6836: -short-paths を使うと assert に失敗する
    (Jacques Garrigue, report by David Sheets)
  • PR#6837: FreeBSD と NetBSD x86-64 でもライブラリにプロファイリング情報を付ける
    (Mark Shinwell, report by Michael Grünewald)
  • PR#6841: -o で翻訳単位の名前を変えると ocamldebug が壊れる
    (Jacques Garrigue, report by Jordan Walke)
  • PR#6843: .cmi がない場合でも弱い依存関係を記録する
    (Leo White, Gabriel Scherer)
  • PR#6849: パターンマッチのエラーメッセージが逆転している
    (Jacques Garrigue, report by Leo White)
  • PR#6857: -o を使うと __MODULE__ で現在のモジュール名が得られない
    (Jacques Garrigue, report by Valentin Gatien-Baron)
  • PR#6862: クラス構築子の引数部分で網羅性チェックが効かない
    (Jacques Garrigue)
  • PR#6869: Hashtbl.hash_param のコメントを改善
    (Mark Shinwell, report by Jun Furuse)
  • PR#6870: -rectypes が縮小的でない型を検出できず健全性が壊れる
    (Jacques Garrigue, report by Stephen Dolan)
  • PR#6872: 型によって区別ができる場合でも、バリアント構成子でも例外構成子でもあるような値に警告が出る
    (Jacques Garrigue, report by Romain Beauxis)
  • PR#6878: AArch64 バックエンドが不正なアセンブリを吐き、 conditional branch out of range エラーになる
    (Mark Shinwell, report by Richard Jones, testing by Richard Jones and Xavier Leroy, code review by Xavier Leroy and Thomas Refis)
  • PR#6879: 1 mod n に誤った最適化がされる
    (Mark Shinwell, report by Jean-Christophe Filliâtre)
  • PR#6884: __CYGWIN32__ の #define を __CYGWIN__ で置き換える
    (Adrien Nader)
  • PR#6886: -no-alias-deps を使うと自己参照的な翻訳単位がビルドできてしまう
    (Jacques Garrigue, report by Valentin Gatien-Baron)
  • PR#6889: ast_mapper でクラスの属性を書き換えることができない
    (Sébastien Briais)
  • PR#6893: ocamlbuild: (p)dep を使うと "tag not used" という警告が出る
    (Gabriel Scherer, report by Christiano Haesbaert)
  • GPR#143: ブール値のオプションに対する getsockopt の振舞いを修正
    (Anil Madhavapeddy and Andrew Ray)
  • GPR#190: pervasives に typo
    (Guillaume Bury)
  • major_gc.c 内の no-naked-pointers モードのときの assertion の位置が間違っている
    (Stephen Dolan, Mark Shinwell)

機能追加の要望

  • PR#6452, GPR#140: 独自の書式指定をサポートするための内部機能を追加
    (Jérémie Dimino)
  • PR#6641: ocamlmklib に -g, -ocamlcflags, -ocamloptflags オプションを追加
    (Peter Zotov)
  • PR#6693: libasmrun_shared.so と lib{asm,caml}run_pic.a もビルドする
    (Peter Zotov, review by Mark Shinwell)
  • PR#6842: Typemod.modtype_of_package を公開する
    (Jacques Garrigue, request by Jun Furuse)
  • GPR#139: Emacs の caml-types.el で .annot ファイルの場所をより細やかに指定できるように
    (Christophe Troestler, review by Damien Doligez)
  • GPR#157: リンク時に cmo のパスをデバッグセクションに保存する
    (Hugo Heuzard, review by Damien Doligez)
  • GPR#191: memory.h の一部と gc.h をパブリックに
    (Thomas Refis)

新規 編集 添付