haskellru | Unsorted

Telegram-канал haskellru - Haskell

1756

https://combot.org/chat/-1001043143583 Ссылки на полезные ресурсы: https://ruhaskell.org/links.html ; Информация о мероприятиях: https://gist.github.com/qnikst/a96cac661be80d126d0829f2ced1916e

Subscribe to a channel

Haskell

(Такой выдал никспкгс)

Читать полностью…

Haskell

в итоге помогло вернуться в nix shell, всякие pcre.h перестали быть проблемами

теперь надо понять, почему cabal test сегфолтит

Читать полностью…

Haskell

Даже передача данных в рамках протокола страдает из-за реаллокаций при конвертации: колонки -> строчки -> колонки. Если ты загружаешь стримом длинный вектор/матрицу, то может быть удобно кусочками писать в предварительно аллоцированный (и возможно даже используемый) вектор/матрицу. В рекламе, например, это могут быть какие-нибудь битовые маски с таргетингами. В условном питоне в датафреймы запись идет таким образом (правда там интеграция бесшовная - передаешь датафрейм и он заполняется)

Читать полностью…

Haskell

Сложно я поступил проще и взял сабмодуль и ещё раз extra-...

Читать полностью…

Haskell

Вот с сурсами всегда хорошо по моим наблюдениям

Читать полностью…

Haskell

Если учитывать что пару версий назад оно научилось линковаться...

Читать полностью…

Haskell

короче пока кабал не готов к продакшну

есть пакет
- в нем библиотека,
- Custom setup,
- в библиотеке полная солянка из extra-libraries, c-sources, cc-options, cxx-options, include-dirs помимо хаскельного кода
- среди прочего в нем есть test-suite и пара executable

он идет зависимостью к другому пакету и т.д.

его можно самого собрать, установить и протестировать стеком

- stack build
- stack install
- stack test

стэком также можно собрать проект с этим пакетом как зависимостью

с cabal не все так однозначно

- cabal build
- cabal test

успешно проходят как из самого пакета, так и с зависимостью

- cabal install

же завершается с ошибкой во время билда первого же модуля, т.к. не может найти x.h файл из директории, обозначенной как include-dirs

в длинной портянке среди инклюдов есть эта директория, однако …/bin/cc ее не видит т.к. она далеко не на первом месте

(cabal-install 3.14.2.0)

кто-нибудь имел удовольствие сталкиваться с подобными проблемами? и если да - как решали?

Читать полностью…

Haskell

На маленьких размерах файлов так же значительной разницы показано не было

Читать полностью…

Haskell

Если кому-то было интересно, что быстрее компилируется: множество отдельных вызовов TH или один склеенный моноидом, то ответ - разницы между ними нет.

$ time ghc A.hs 
[1 of 1] Compiling A ( A.hs, A.o ) [Source file changed]
ghc A.hs 61,19s user 0,92s system 99% cpu 1:02,27 total
$ time ghc B.hs
[1 of 1] Compiling B ( B.hs, B.o ) [Source file changed]
ghc B.hs 60,93s user 0,90s system 99% cpu 1:02,06 total

Читать полностью…

Haskell

В прочем у меня вопрос был не о качестве тестов, а о метриках, которые в существующих тестах имеются и принимаются на CI как аргумент

Читать полностью…

Haskell

У нас нормально реального кода мало. А тот что есть нужно сейчас переписывать, поскольку язык нужно ломать

Читать полностью…

Haskell

даже для списков тесты на игрушечном коде такие хорошие, что я сам ловил и репортил регрессию на игрушечном примере со списками

Читать полностью…

Haskell

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

Читать полностью…

Haskell

простой код с дженериками, списками и разными кейсами под фьюжен есть в перфтестах

Читать полностью…

Haskell

этот код примерно настолько же представителен как какой-нибудь прувер веритас из нофиба или другой код из 90-х годов который тогда был реальным и на котором производительность гхц реально проверяют сегодня, но который ничего не говорит о том, что будет тормозить в 2025

Читать полностью…

Haskell

а раньше сильно помогало в один слайс всё сувать

Читать полностью…

Haskell

В целом я пока текущий интерфейс вижу строго низкоуровневым с удобным API для построения эффективных интеграций, а поверх него уже:
1) виртуализация построчного потока
2) "векторные" очереди под запись, возможно с локами для гарантии доставки поверх мультиплексирования (не был доставлен сформированный батч операций - массового отдаем ошибку юзерам, иначе возвращаем всем 200 NoContent)

Пока у меня не будет юзеров или real world проекта под либу в текущем состоянии - я нахожу разумным только доводить до ума low level биндинги с полным покрытием фичами. Сейчас не хватает сложных типов данных, реализации пары фичей протокола и пула соединений (есть только single connection с thread safety блокировками и зачаточным self healing)

Читать полностью…

Haskell

Надо будет глянуть есть ли вообще такая функциональность)) а то порой кажется что нет не только доков, но и мелких фич 😁

Читать полностью…

Haskell

в локальной либе - помогло 🙏

теперь вопрос, этот же трюк провернуть с pcre.h для pcre-light можно через cabal.project.local провернуть?

Читать полностью…

Haskell

Если что с *.h файлами все ещё есть мелкие проблемы которые недофикшены, но там тяжко, нужно над каждым камнем думать

Читать полностью…

Haskell

Добавь в extra-source-files:

Читать полностью…

Haskell

По крайней мере генерация через foldMap - самая компактная и читаемая

Читать полностью…

Haskell

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

 $ time ghc C.hs                                         
[1 of 1] Compiling C ( C.hs, C.o )
ghc C.hs 61,17s user 0,68s system 99% cpu 1:01,91 total

Во всех файлах у нас декларации типов вида:
data AA = MkAA { aaFoo :: Int, aaBar :: Either Bool Float, aaBaz :: (), aaQuux :: Maybe [Either Bool Float], aaWombat :: Double, aaBlah :: Integer }
data AB = MkAB { abFoo :: Int, abBar :: Either Bool Float, abBaz :: (), abQuux :: Maybe [Either Bool Float], abWombat :: Double, abBlah :: Integer }
...
data ZZ = ...


В случае A.hs у нас индивидуальные вызовы TH:
deriveJSON defaultOptions ''AA
deriveJSON defaultOptions ''AB
....


В случае B.hs у нас они наивно склеены через <>:
deriveJSON defaultOptions ''AA <>
deriveJSON defaultOptions ''AB <>
....


В случае C.hs идёт свёртка через foldMap:
foldMap (deriveJSON defaultOptions) [ ''AA, ''AB, ''AC, ..., ''ZZ ]

Читать полностью…

Haskell

@onarainydayillwinanyway а в подходе с колонками, когда мы и в Haskell обрабатываем поколоночно, то какие это операции например? (Чисто интересно как мог бы интерфейс выглядеть)

Читать полностью…

Haskell

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

Читать полностью…

Haskell

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

Читать полностью…

Haskell

Я в целом согласен, что перфтесты community либ непрактично вводить. Под сложные кейсы скорее хотел бы видеть документированные инварианты в оптимизаторе и фазеры под них с трекингом всех перф метрик

Читать полностью…

Haskell

у меня в библиотеке это буквально все что используется

Читать полностью…

Haskell

проблема эта осознана и периодически обсуждается, но ответ от разработчиков гхц примерно такой: "проверять произмодительность на реальных бенчмарках реальных пакетов непрактично, так что не повезло вам, программисты на хаскеле, проверите сами и потом нам репорты зашлете"

Читать полностью…

Haskell

так на хаскеле никто больше не пишет и он использует полторы реальные библиотеки которыми пользуются

Читать полностью…
Subscribe to a channel