LINUX.ORG.RU

GHC 8.8.1

 , ,


5

9

Тихо и незаметно, вышла новая версия известного компилятора языка программирования Haskell.

Среди изменений:

  • Поддержка профилирования на 64-битных системах с Windows.
  • GHC теперь требует LLVM версии 7.
  • Метод fail окончательно вынесен из класса Monad, теперь он находится в классе MonadFail (финальная часть MonadFail Proposal).
  • Явное применение типа (type application) теперь работает и для самих типов, а не только для значений.
  • forall теперь является ключевым словом вне зависимости от контекста, что позволяет использовать его в type families и rewrite rules.
  • Улучшен алгоритм компоновки кода для x86.
  • Множество других изменений.

>>> Полный список изменений

>>> Гайд по миграции кода на новую версию

>>> Скачать

★★★★★

Проверено: jollheef ()
Последнее исправление: Virtuos86 (всего исправлений: 4)
Ответ на: комментарий от turtle_bazon

На десктопе все равно WebView. И если я использую Parcel, то оно прямо в бразуере будет обновлять внешний вид при каждом сохранении. Другое дело что вообще могу приложение не запускать, я просто могу допускать что на 90% оно работает просто если собралось

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

на 90% оно работает просто если собралось

Остаются коварные 10% :)

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

Очень полезная информация для ЛОРа

Да. Тут половина на венде и маках сидит.

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

Увлекаюсь имитационным моделированием в свободное время. Хобби такое у меня. Образование позволяет.

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

Clojure показал себя с нехорошей стороны, так что я даже не смотрел туда. Пробовал вот kotlin-js, но там реализация хромает. Но может быть допилят, ребята в жетбрейнсе умные.

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

Но где ПО здорового человека? ;)

Проигрыватель Windows Media?

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

Clojure показал себя с нехорошей стороны

А что именно? Я собираю оправдания, чтобы продолжать его не использовать. Пока что одного (JVM) хватает, но вдруг ещё понадобятся.

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

Кложа пытается изображать из себя динамический лисп, но при этом компилится в JVM, что приводит к неожиданным для лиспера областям видимости символов. Ну и на андроиде тупит нереально при старте. Хотя это было много лет назад, может починили уже. Да и вообще кому нужно путаться в скобках, если нету ни гибкости и фичастости лиспа, ни забавных гигиенических макросов ракета. Не бывает хороших эмуляторов функциональных VM поверх процедурных. Ну по крайней мере среди статически типизированных, так как в динамике можно наворотить всё, что угодно.

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

Создавать кучу гребаных мелких объектов - fail.

ECS + SOA.

Каждый компонент лежит в своей contiguous memory area.

Каждая система лопатит данные в cash-friendly манере.

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

Каждая система лопатит данные в cash-friendly манере.

Это типа когда система любит бабло и просит апгрейд чаще? Или как?

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

Clojure показал себя с нехорошей стороны

С какой именно? У меня к Clojure только претензии, что он тормознутый. В остальном норм так.

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

Учил хаскель по конфигам на xmonad.

Ну да, почти так.

какие преимущества xmonad перед i3 или bspwm?

Больше гибкости, расширения, самому можно писать расширения (кстати, этим я сейчас и занимаюсь, но пока очень сыро). Это конструктор. Каким построишь, таким он и будет (Xmonad). А bspwm мне не нравится.

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

Он не лисп. И не схема. Он жалкий подражатель. Лучше возьми котлин-жс. Реально меньше букв набирать, куча плюшек, однажды его доведут до ума.

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

Clojure не CommonLisp, оно же не Scheme и не прочие лиспы, но оно тоже лисп. Хотя, конечно, любимая шутка: курица не птица, clojure - не лисп. :)

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

Больше гибкости, расширения, самому можно писать расширения

Это еще в Sawfish было, если память не подводит. Только не на хаскеле, хе-хе.

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

Или достигший совершенства? ;) Впрочем, какая разница - с точки зрения написания расширений?

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

Подтверждаю. Гонял байт-код верблюда под uClinux.

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

Это еще в Sawfish было, если память не подводит. Только не на хаскеле, хе-хе.

А конструктор своего WM StumpWM (который тоже на «не хаскелле, хе-хе») и сейчас жив, последняя версия полгода назад релизнулась.

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

Ага. Мааааленькая конторка под названием facebook, например фильтрует спам. Или например никому не известная газетка NYT делится опытом. А с неполной переписью любителей нафигачить на коленке аудиоплеер можно ознакомится тут.

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

на нем написан самый мощный архиватор всех repack-еров!

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

Интерпритировать можно и С++. Основная беда настоящих VM - коннект к существующему байткоду, например стандартной либе. Хаскелю пофик на коннект, он FFI другим путём делает

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

Ну когда ты пишешь на jvm языке, по хорошему ты должен использовать джавовские коллекции и генерить класс файлы, которые можно вызвать из джавы. Когда ты пишешь на хаскеле, ты не используешь stl коллекции и не генерируешь таблицы виртуальных функций С++ классов, потому что можно смело послать тех, кто такое хочет.

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

когда ты пишешь на jvm языке, по хорошему ты должен использовать джавовские коллекции

Я не специалист, но вроде как в Scala своя библиотека.

генерить класс файлы, которые можно вызвать из джавы

А это тут каким боком?

Когда ты пишешь на хаскеле, ты не используешь stl коллекции и не генерируешь таблицы виртуальных функций С++ классов

Как связаны Haskell и C++ в твоей логике? Я не понимаю. К слову, DLL/.so для C из хацкелла можно собирать стандартными средствами без каких-либо проблем.

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

Вывод типов, (шаблонные) лямбды, новые объявления функций, optional, variant. В C++20 - шаблонные функции с auto, концепты. Паттерн-матчинг обсуждают, и structured bindings им навеяны.

Всё это развитие фич C++98 и того навоза, который был ещё раньше, с оригинальной системой типов, SFINAE, non-deduced contexts и проч. идиосинкразией. Поэтому «шаблонные» в скобочках, и только «обсуждения» новых подвигов.

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

для оффтопика сегодня рурит aimp, написанный на pascal

Ну вот, компилируемый ЯП с простым ABI, подходящим для прямого вызова низкоуровневого API.

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

Он про полезное, ты про нишевые продукты. Лучше бы shellcheck упомянул. Вот уж действительно крутой продукт.

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

*-* где работаешь?)

В одной не слишком интересной компании с жирными амбициями.

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

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

Всё это развитие фич C++98 и того навоза, который был ещё раньше, с оригинальной системой типов, SFINAE, non-deduced contexts и проч. идиосинкразией. Поэтому «шаблонные» в скобочках, и только «обсуждения» новых подвигов.

Ничего не понял, но кажется ты со мной не споришь.

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

Ну и на андроиде тупит нереально при старте.

Сильно, не пробовали под микропроцессоры на кложе писать? Если уж и хочется что-то писать под смартфоны, то нужно брать ClojureScript + React Native https://cljsrn.org

Да и вообще кому нужно путаться в скобках, если нету ни гибкости и фичастости лиспа, ни забавных гигиенических макросов ракета.

Тем у кого нет цели защитить курсовую или стряхнул пыль с антиквариата https://stackshare.io/clojure vs https://stackshare.io/common-lisp

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

Часто путают) А так, давать советы, неразобравшись в задаче - это, конечно, круто!

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

У Scala своя реализация

Ну да, коллекции настолько убогие с точки зрения FP, что приходится враппить их в свои классы. Но всеравно редко кто изобретает велосипед с 0, враппят VM-ные примитивы.

Ну коллекции то ладно, но есть же например стек вызовов, который будучи реализован средствами VM (а внутри наверняка основан на процессорном стеке) мешает реализовывать континуейшены и прочие рестарты. Короче несмотря на то, что в теории на любой VM можно реализовать любой язык путем компиляции исходника в пару исходник + его интерпритатор, на практике никто так не делает, что вносит забавные ограничения в языки, которые выглядят как грабли. Вот с LLVM как раз получается лучше, поскольку он достаточно низкоуровневый, чтоб эффективно реализовать любой необходимый языку рантайм

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

Выглядит как какой-то файл конфигурации для неофита. Судя по тому что это хмонада это он и есть в какой-то степени. Но вообще сам хаскель выглядит как маркап, есть ли какой-то более вменяемый код?

abcq ★★
()

Падишах уже забегал сказать насколько гхц вор из-за LLVM?

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

JVM даёт: GC, threads, type system, Bytecode + JIT compilation, libraries. Ваш же вариант с реализацией и поддержкой своего runtime требует колоссального количество затраченных ресурсов. И тут возникает вопрос, стоит ли это того что бы потратить пару лет на свой runtime, а на выходе получить никому не нужный язык, но зато с call/cc?

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