LINUX.ORG.RU

GHC 7.8.1

 ,


3

4

Спустя почти год с выпуска предыдущей версии, вышла новая версия 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) для сообщений компилятора, если текущая локаль поддерживает Юникод.

Страница загрузки

>>> Подробности

★★★★★

Проверено: leave ()

который разрабатывается свободной рабочей группой из многочисленных разработчиков, собранных по всему миру и координируемых из лаборатории университета Глазго.

прочитал «собранных по всему миру и клонируемых в лаборатории университета Глазго.»

долго думал...

Kompilainenn ★★★★★ ()

по умолчанию GHC проводит unboxing всех строгих полей «малых» типов для datatype'ов

Блин, это просто праздник какой-то! Только почему в генте он замаскирован?

hateyoufeel ★★★★★ ()

Просьба в новость добавить, чтоб все игнорировали 7.8.1 и ждали 7.8.2, который скоро выпустят чтоб исправить один досадный баг.

kost-bebix ★★ ()
Ответ на: комментарий от hateyoufeel

Только почему в генте он замаскирован?

согласно политике portage (пакет должен находиться в репозитарии 30 дней, прежде чем)

madjestic ()
Ответ на: комментарий от madjestic

согласно политике portage (пакет должен находиться в репозитарии 30 дней, прежде чем)

Это только на какие-то особые пакеты распространяется? Потому что всякие systemd и прочие гномы сразу в ~ попадают.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

use overlay.

В дерево скорее всего только 7.8.2 пойдет.

qnikst ★★★★★ ()

Кстати посоветуйте годную книжку по хаскелю для контуженных явой...а то как-то в вики обошли.

anonymous ()
Ответ на: комментарий от anonymous

Если на русском, то «Изучай хаскель во имя добра» и разные книжки Дужкина. На днях еще вышла «О Хаскель по-челевечески».

Aswed ★★★★★ ()

- Что сложнее освоить C++ или Haskell? - Насколько тяжело знающему C++ освоить Haskell? - Haskell нужен и если нужен то зачем?

botan2014 ()
Ответ на: комментарий от botan2014

- Насколько тяжело знающему C++ освоить Haskell?

Тебе - хрен знает. Страуструп вон как-то освоил.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от botan2014

- Что сложнее освоить C++ или Haskell?

C++, у него, как и у любого настоящего языка, много темных углов. У академических примитивных поделок такого нет, но они потому и не годятся на практике.

Насколько тяжело знающему C++ освоить Haskell?

Часа два максимум.

Haskell нужен и если нужен то зачем?

Не нужен.

Еще вопросы есть?

anonymous ()
Ответ на: комментарий от anonymous

Еще вопросы есть?

Есть, где обычно применяется Haskell?

Ему есть место там где пишут на C++?

Для каких задач он идеально подходит?

botan2014 ()
Ответ на: комментарий от botan2014

Для каких задач он идеально подходит?

моск размять и посмотреть на некоторые вещи с другой стороны.

У нас, например, сервер событий (типа планировщик проектов) написан. Собссно это единственное место, где я его вижу. Интересной штукой кажется.

anonymous ()
Ответ на: комментарий от botan2014

Есть, где обычно применяется Haskell?

В программировании факториалов и чисел Фибоначчи.

Ему есть место там где пишут на C++?

Нет.

Для каких задач он идеально подходит?

Для вычисления факториалов идиотскими методами, когда совершенно не на что потратить время: http://www.willamette.edu/~fruehr/haskell/evolution.html

anonymous ()
Ответ на: комментарий от botan2014

Есть, где обычно применяется Haskell?

Ему есть место там где пишут на C++?

Для каких задач он идеально подходит?

Хаскель почти идеален для применения там, где идеально применение теории на практике, такой как: ламбда вычисления, гомотомпическая теория типов, борщ... Если эти слова для вас не пустой звук, то попробовать стоит. Там, где используется С++, не нужен не только хаскель, но и С++ не нужен - ведь есть COBOL и C. Зачем плодить ненужные ненужности, ведь так?

madjestic ()
Ответ на: комментарий от Aswed

Где бы ему денег заплатить - хорошая книжка. Я на хаскеле не программирую, но для расширения кругозора прочитал - годно.

zloelamo ★★★★ ()
Ответ на: комментарий от botan2014

Что сложнее освоить C++ или Haskell?

Сложнее С++ только malbolge.

Насколько тяжело знающему C++ освоить Haskell?

Легко, если помнить про то, что хаскель-аутисты всё время пытаются представить простые вещи сложными.

Haskell нужен и если нужен то зачем?

Ну, у него есть библиотеки, ввод/вывод и он не без тьюринг-толстоты — можно писать программки. Pandoc, например, написан на нём.

quantum-troll ★★★★★ ()
Ответ на: комментарий от botan2014

Для каких задач он идеально подходит?

Можно от противного: ghc пока не очень хорошо переносим и для интерпретации плохо подходит, сложно оценивать используемые ресурсы (цпу / память), непросто с «нефункциональными» структурами данных.

Удобные ниши: edsl / даже свои небольшие языки, парсеры, валидаторы, распараллеливание (на ядра), исследования в cs где можно «за-абьюзить» систему типов.

Релевантный тред: http://www.reddit.com/r/haskell/comments/1k3fq7/what_are_some_killer_librarie...

anonymous ()

Даёшь стартапы для управления атомными электростанциями и ракетными шахтами с функциями без побочных эффектов и без присваивания!

tp_for_my_bunghole ()
Последнее исправление: tp_for_my_bunghole (всего исправлений: 1)

Начну писать на Haskell только при условии что его компилятор будет переписан на Malbolge

anonymous ()
Ответ на: комментарий от botan2014

Haskell нужен и если нужен то зачем?

Чтобы стать немножко лучше. Хотя «программисту с 9 до 18» не понять, наверное.

anonymous ()
Ответ на: комментарий от botan2014

- Что сложнее освоить C++ или Haskell? Насколько тяжело знающему C++ освоить Haskell?

Есть ващето 2 вида хаскеля: стандарт 98 о котором есть книги на русском и которому учат нубов. Он прост, но жутко неудобен в реальной жизни, когда тянет решать в ООП стиле, а тут перечислите сразу все возможные типы, с которыми оно будет работать (классы конечно помогают но в рамках стандарта решают только часть практических проблем). Такая вот вешь как динамик каст (в джаве он вообще неявно в любом контейнере используется) тут невозможен в принципе.

И есть ghc екстеншены, большая часть которых стала новым стандартом. Тут уже неплохо выучить кучу матана и реализующих его либ, чтоб понять, что вообще творится, но зато в итоге многие задачи, доставляющие головную боль на С++ будут легко и элегантно решаться. Тут учить будет крайне сложно, но зато есть ощутимая польза в виде тренировки систематического подхода к решению многих программистких задач.

Haskell нужен и если нужен то зачем?

Сам хаскель не уверен, но языки, многое из него почерпнувшие, возможно будут рулить в будущем. Впрочем если б он был производительнее, я б его наверно б юзал для обработки звука, поскольку на нём есть dataflow надстройка, которая в отличии от полностью dataflow-ориентированных языков более абстрактна, а значит и легко подстраивается под практические нужды без костылей на уровне описания алгоритма. Но хотелось бы dependent types (кстати указанная в новости возможность выполнять вычисления над натуральными числами на уровне типов - львиная доля того что реально пригодится из DT)

q0tw4 ★★★ ()

Не смог до конца дочитать эту телегу (типа «новость»).

Поскольку Петросян после набора букв в этой «новости» отдыхает.

Пруф -

Как раз после того как это существо выперли из библиотеки занюханного провинциального НИИЧАВО, откуда он на весь LOR тявкал, он отчаянно пытался найти работу программистом. К нам вот приходил на собеседование, претендовал на роль Java-программиста. Junior, конечно же. Это был цирк! Попросил его написать метод, разворачивающий строку, классическая такая проверка на вшивость. Мелкое тощее горбатое существо с рожей и голосом профессионального алкаша бубнило и булькало чтото с полчаса, ничего родить не смогло, потом начало втирать, что вот зато в мегаязыке Хаскель строки сделаны односвязными списками и что это типа тру, а все остальное ламеризм. Еще чтото втирал что кулькакеры на Вакс использовали мегаформат для строк ASCIID, а ламеры не поняли и теперь везде позорный ASCIIZ (внимание: собеседование вообще про Java было). Угадайте - мы его взяли?

(C) [ЖЖ] Луговский

Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Aswed

«О Хаскель по-челевечески».

Что такое «челЕвеческий языка» (С)(TM)?

Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от tp_for_my_bunghole

первое пилили WellTyped, про второе мы врятли узнаем.

qnikst ★★★★★ ()
Ответ на: комментарий от Bioreactor

Я полагаю, модераторы так троллят. Иначе ничем не объяснить, что вопреки всем правилам пропустили «новость» про минорщину.

anonymous ()
Ответ на: комментарий от Bioreactor

Кстати, там кто-то выше по треду спрашивал, стоит ли учить Какашкель? Вот вам пример того, чем заканчивают учившие эту дрянь.

anonymous ()
Ответ на: комментарий от q0tw4

И есть ghc екстеншены, большая часть которых стала новым стандартом.

Основная проблема, что при этом в качестве доков выступает пара десятков разрозненных статей без примеров, best practices и прочих напутствий. Что ещё более печально, так IRL язык практически неюзабелен, т.к. списки, строки, IO etc. из коробки нереально тормозят, а как сделать нормально нигде толком не написано. Вот и остаётся лишь фолдить/анфолдить списки с числами Фибоначчи.

mix_mix ★★★★★ ()
Ответ на: комментарий от deterok

The LLVM backend

David Terei wrote a new code generator for GHC which targets the LLVM compiler infrastructure. Most of the work was done as part of an honours thesis at the University of New South Wales under the supervision of Manuel Chakravarty. It was merged into GHC Head around May of 2010 and has been included in GHC since the 7.0 release.

https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM

aedeph_ ★★ ()
Ответ на: комментарий от mix_mix

Основная проблема, что при этом в качестве доков выступает пара десятков разрозненных статей без примеров, best practices и прочих напутствий. Что ещё более печально, так IRL язык практически неюзабелен, т.к. списки, строки, IO etc. из коробки нереально тормозят, а как сделать нормально нигде толком не написано.

Абсолютно согласен. Только на счет списков: во-первых есть вектора (quicksort так и не осилил с O(NlogN) по ресурсам, да и теряется весь смысл хаскеля), во-вторых есть библиотечные streamы всякие, которые рекомендуются вместо списков для практических нужд (опять же читай сорцы лучших пакетов, чтоб подобрать себе сборку либ и подходов, которые потом пихаешь почти в каждый свой проект)

q0tw4 ★★★ ()
Ответ на: комментарий от mix_mix

в качестве доков выступает пара десятков разрозненных статей

Чувак, ты документацию в комплекте, которую Haddock генерирует, читать пробовал? Там есть и примеры, и всё остальное.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от mix_mix

Что ещё более печально, так IRL язык практически неюзабелен, т.к. списки, строки, IO etc. из коробки нереально тормозят

О какой коробке речь? haskell98? ghc? haskell-platform?

Стандарта ровно 2: haskell98 и haskell2010.
У ghc один из лучших user guide, которые я видел.
Чтобы попасть в platform необходимым требованием является наличие приличной документации.

а как сделать нормально нигде толком не написано.

Что вообще читали?

http://book.realworldhaskell.org/read/efficient-file-processing-regular-expre...

sf ★★ ()
Ответ на: комментарий от botan2014

Насколько тяжело знающему C++ освоить Haskell?

Однохренственно. Идиоматика хаскеля настолько инопланетная, что все придется изучать с нуля. И да, если в уютной СиПлюсПлюшечке есть много весьма годных проектов с весьма годным гайдлайнами, прежде всего стилевыми и идиоматическими... То в хаскеле... Нда...

Кроме того, залезешь куда-нибудь в потроха, типа того же Байтстринга, а там каждый вызов — не просто ансейф, а совершенно оголтелый ансейф... Залезешь в потроха того же Текста, а там сплошные квирки рантайма. Залезешь в творения Эдавардушки Кметта, дык сплошной, непроходимый матан. Короче говоря, учиться толком негде...

Haskell нужен и если нужен то зачем?

Хаскель — не нужен.

Macil ★★★★★ ()

Typed Holes

Почитал про них... Ну что сказать? Редкий костыль.

d_Artagnan ★★ ()
Ответ на: комментарий от Bioreactor

Попросил его написать метод, разворачивающий строку, классическая такая проверка на вшивость.

а что такое «метод, разворачивающий строку»? это видмо, какой-то жабовый слэнг. нет мне определенно, не свтит почетная должность джуниора в жабо-гетто.

anonymous ()
Ответ на: комментарий от anonymous

«Точно определяйте значение слов и вы избавите мир от половины его заблуждений»

anonymous ()
Ответ на: комментарий от d_Artagnan

Редкий костыль.

Слушай, дорогой, зачем так врать? Это не костыль, а инструмент.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.