Спустя почти год с выпуска предыдущей версии, вышла новая версия GHC 7.8.1 — одного из самых мощных и развитых на сегодняшний день компиляторов функционального языка программирования Haskell, который разрабатывается свободной рабочей группой из многочисленных разработчиков, собранных по всему миру и координируемых из лаборатории университета Глазго.
Основные изменения:
- добавлена поддержка OS X Mavericks и XCode 5. В связи с этим GHC использует Clang для препроцессорной обработки кода для билдов Mavericks;
- добавлено новое предупреждение по умолчанию -fwarn-typed-holes, подробнее в Typed Holes;
- возможность выполнять вычисления над натуральными числами на уровне типов при использовании расширения DataKinds;
- добавлены Closed Type Families;
- при использовании расширения GeneralizedNewtypeDeriving теперь проводится проверка ролей, подробнее в Roles;
- добавлены Overloaded Lists;
- добавлено расширение Pattern Synonyms;
- переработаны механизмы вывода типов, увеличена скорость, уменьшено потребление памяти;
- по умолчанию GHC проводит unboxing всех строгих полей «малых» типов для datatype'ов. «Малые» типы — это типы, размер которых меньше, либо равен машинному слову. Это означает что больше не нужно использовать прагму UNPACK для строгих полей с типом Int. Это также относится к типам с плавающей точкой;
- новый менеджер IO, который значительно лучше масштабируется по сравнению с предыдущим;
- LLVM-backend поддерживает 128-и и 256-битные SIMD операции;
- полностью переписан кодогенератор;
- улучшена поддержка кросскомпиляции;
- PrimOps для сравнения unboxed значений теперь возвращает Int# вместо Bool;
- новые PrimOps для атомарных операций;
- Typeable теперь poly-kinded, типы Typeable1, Typeable2 и т.д. объявлены устаревшими и перемещены в Data.OldTypeable;
- добавлена возможность параллельной компиляции;
- добавлена поддержка новой прагмы {-# MINIMAL #-}, разрешающей явную декларацию минимального полного определения класса;
- в версии 7.10 Applicative станет суперклассом Monad, что потенциально приведет к неработоспособности большого количества кода. Для облегчения миграции GHC теперь генерирует предупреждения о конфликтах Applicative-Monad Proposal (AMP);
- добавлено расширение InterruptibleFFI extension, подробнее Interruptible foreign calls;
- добавлен модуль Hooks в GHC API;
- кодогенератор LLVM теперь поддерживает динамическую линковку;
- добавлена поддержка Unicode left/right single quotation marks (i.e. U+2018 and U+2019) для сообщений компилятора, если текущая локаль поддерживает Юникод.
>>> Подробности