Подробный оригинальный changelog из svn : http://caml.inria.fr/svn/ocaml/trunk/Changes
Здесь же краткий обзор основных изменений.
4.00.0 (2012-07-26)
- GADT'ы (generalized abstract datatypes) (официальный мануал, страница разработчиков).
- Меньше аннотаций типов при создании и распаковке first-class модулей (компилятор выводит типы из контекста).
- Новый синтаксис
(module M)
и(module M : S)
в паттернах сопоставления, для распаковки first-class модулей на месте. - Начисто переписан бэкенд для ARM процессоров: поддержка архитектур armel (EABI) и armhf (EABI+VFPv3), Thumb-2 инструкции, PIC, natdynlink, профайлинг и бэктрейсы.
- Установка внутренних библиотек компилятора в
+compiler-libs
. - Новый инсталлятор на Windows (страница разработки).
- Больше оптимизаций:
- Больше отладочной информации для x86 и amd64: cfi аннотации (точные нативные бэктрейсы), имена файлов и номера строк (точки останова) (PR#5487).
- Новые предпреждения компилятора о бесполезных
open
и неиспользуемых именах (PR#5437, PR#5438). - Новая реализация модуля
Hashtbl
: статистически лучшая хэш-функция, опциональная рандомизация (PR#5222,PR#5225). - Маршаллинг функций из динамически-подгружаемого кода (PR#5215).
Random.self_init ()
теперь использует/dev/urandom
, если возможно- Более надёжное определение переполнения стека при вызове сишного кода (Linux) (PR#4746, PR#5064, PR#5485).
- Новые примитивы
%apply
и%revapply
(PR#5236). - Удалены неподдерживаемые нативные кодогенераторы для архитектур Alpha, HPPA, IA64, MIPS.
- Удалены из официального дистрибутива библиотека DBM и топлевел OcamlWin.