Denis
Кто-нибудь пробовал ghc собирать с помощью clang? Без тулчейна gcc.
Evgeniy
Denis
Зачем....?
Потому что шлангом можно пересобрать большинство библиотек, которые под виндой или макосью существуют. А gcc - он к своему несчастному линуксу слишком крепко привязан и вслед за собой ограничивает использование ghc. Здорово, конечно, писать велосипеды, используя одну только стандартную библиотеку хаскеля, но не разумнее ли получить доступ к огромному количеству уже написанных библиотек?
Vladimir
Всем привет!
Vladislav
Привет.
Alexander
Какая разница чем собирать ghc? И при чем здесь доступ к огромному числу библиотек
Denis
Хм. И правда. Надо же просто прикрутить шланг к ghc для сборки проектов
Alexander
cabal.config cc-path: clang
Denis
Во, супер :)
Denis
Сегодня попробую
Alexander
Я по памяти писал, если не сработает напиши, я перепроверю
Alexander
Может опция по другому зовётся
Denis
Да я вроде умею справку читать, спасибо :-)
Alexander
Мне кстати интересно что шланг реально даст из конкретных примеров
Alexander
Даже на Эльбрус не скомпиляешь :) /* режим троллинга*/
Denis
Да есть у меня маленькая проблема.
Denis
Не хочу я линковаться с qt, скомпиленным gcc
Quet
а какая разница чем собрано? gcc там или clang?
Alexander
Но ведь сборка qt совсем отдельно от сборки программы
Alexander
Оно ж слинкуется если разные компиляторы?
Denis
В том и дело, что не линкуется
Denis
Во всяком случае с qt, собранным msvc не линкуется
Denis
Теоретически, можно решить проблему. Но что-то мне не хочется таким путем идти
Ilyas
А ghc вообще умеет в C++ ABI? 😯
Ilyas
В плане, подгружать крестовые классы/объекты/шаблоны напрямую через FFI без обёрток
Denis
Я кухню толком не знаю, но вроде как через голый ffi грузит. Точнее, обертку сама библиотека ffi делает и компилирует при сборке.
Denis
Вчера, кстати, не взлетел у меня вариант с clang. Ругается на непонятные директивы в ассемблерном коде.
Denis
Что-то я не так настроил, короче
Denis
Склоняюсь к мысли, что нужно сменить backend (как это будет по-русски?) на llvm, но в справке об этом мутно написано. Вроде как это для формирования байткода под виртуалку llvm, и неясно, это то, что нужно или нет
Ilyas
Алдар
у плюсов же name mangling
Ilyas
а обёртку она может собирать компилером отличным от того, с использованием какого сам ghc был собран?
Denis
Именно с name mangling и связана проблема с выбором компилятора
Denis
Точнее с выбором лмнкера, но линкер от компилятора же зависит
Ilyas
Я про ffi-либу спрашиваю, которая обёртки для плюсовых интерфейсов генерит и компилит, если что
Ilyas
То бишь, допустима ли в принципе ситуация, когда ghc был собран с помощью gcc, а обёртки собираются clang'ом?
Denis
Конечно
Denis
Если поддержка clang доведена до ума. На MacOS ghc использует clang, судя по всяким stackoverflow, но в переписках разработчиков по этому поводу немало обсуждений необходимых патчей
Ilyas
Поддержка clang в генерируемых обёртках?
Denis
https://wiki.haskell.org/Cxx_foreign_function_interface
Denis
Если резюмировать то, что там написано (а информация там, насколько я понял, на пару лет устарела). то чистым FFI тут не обойдешься
Denis
Сейчас гляну, как это вообще делается с C++
Denis
Обертки пишутся с директивой extern "C"
Denis
То если у тебя есть потребность прикрутить чужую либу с кучей классов и перегрузкой методов, то я даже не представляю, как это все прикрутить без боли. Я почти горжусь тем, что с++ обошел стороной в свое время.
Denis
С другой стороны, на экспорт ведь обычно выпускают только один класс, интерфейсный. Ну или несколько, не пересекающихся.
Evgeniy
Скажу тут - хаск опять не прижился - на голанге за 2 часа всё сделал) Будем ждать когда после стэка ещё один шаг сделает на встречу(не холивар)
Dmitry
Anatolii
А что конкретно не пошло?
Anatolii
@corpix я тоже на гоу пишу и на хаск просматриваю😀
Evgeniy
Да проект детский - консольная утила дла перевода - я 2 дня потратил как ошибки (но когда прочитал про 8 способов обработки в хаске я в ступор впал
Evgeniy
Например теоретически приходят 8 прогов на хаскеи ии каждый любит свой подход к обработке - и что нам людям делать?
Evgeniy
Один ушёл - и как нам переработать его материал?
Vladimir
Ну конвеншн нужен наверно
Vladimir
Ну так с любым языком и любой командой может быть)
Anatolii
Either тебе не дает похожего в хаскеле?
Anatolii
Только ифы писать не надо
Vladimir
А какие еще невелосипедные варианты?
Vladimir
Я просто не работал в команде по хаску, поэтому и спрашиваю, что нынче модно
Vladimir
Кроме either, как очевидного варианта
Anatolii
Ну так в команде должен быть лид который пул реквесты ревьюит
Evgeniy
А какие еще невелосипедные варианты?
Незнаю - мне хаск нравится что уже вроде всё предусмотрено - но шараханье доставляет ( если пер проект можно терпеть) но если например у Вас есть люди с деньгами как то это шокирует) (Джаву выбирают)
Anatolii
Помойму это не так сложно
Anatolii
В го можно паники начать бросать
Anatolii
Вместо ошибок
Evgeniy
Хоть ИДЕ нет(хотя она нафиг ненужна ) и много способов написать то же самое не доставляют - путь голанг один путь меня радует
Vladimir
То ли еще будет)
Evgeniy
Я просто думаю может язык новый сделдать - декларативный умный и как конструктор( как в эрланг протестированный продакшн код) - тебе только логику писать)
Anatolii
А сколько времени мы провел с хаскеле?
Evgeniy
В голанге берёшь либу уже всё сделано пишешь обвяку и делай деньги)
Anatolii
Мне кажется ты мало времени с ним провел
Anatolii
Это совершенно другой язык
Evgeniy