https://combot.org/chat/-1001043143583 Ссылки на полезные ресурсы: https://ruhaskell.org/links.html ; Информация о мероприятиях: https://gist.github.com/qnikst/a96cac661be80d126d0829f2ced1916e
в итоге помогло вернуться в nix shell, всякие pcre.h перестали быть проблемами
теперь надо понять, почему cabal test сегфолтит
Даже передача данных в рамках протокола страдает из-за реаллокаций при конвертации: колонки -> строчки -> колонки. Если ты загружаешь стримом длинный вектор/матрицу, то может быть удобно кусочками писать в предварительно аллоцированный (и возможно даже используемый) вектор/матрицу. В рекламе, например, это могут быть какие-нибудь битовые маски с таргетингами. В условном питоне в датафреймы запись идет таким образом (правда там интеграция бесшовная - передаешь датафрейм и он заполняется)
Читать полностью…Сложно я поступил проще и взял сабмодуль и ещё раз extra-...
Читать полностью…Если учитывать что пару версий назад оно научилось линковаться...
Читать полностью…короче пока кабал не готов к продакшну
есть пакет
- в нем библиотека,
- 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)
кто-нибудь имел удовольствие сталкиваться с подобными проблемами? и если да - как решали?
На маленьких размерах файлов так же значительной разницы показано не было
Читать полностью…Если кому-то было интересно, что быстрее компилируется: множество отдельных вызовов 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
В прочем у меня вопрос был не о качестве тестов, а о метриках, которые в существующих тестах имеются и принимаются на CI как аргумент
Читать полностью…У нас нормально реального кода мало. А тот что есть нужно сейчас переписывать, поскольку язык нужно ломать
Читать полностью…даже для списков тесты на игрушечном коде такие хорошие, что я сам ловил и репортил регрессию на игрушечном примере со списками
Читать полностью…ну, багрепоры становятся перфтестами, но они сильно упрощенные и патологические
Читать полностью…простой код с дженериками, списками и разными кейсами под фьюжен есть в перфтестах
Читать полностью…этот код примерно настолько же представителен как какой-нибудь прувер веритас из нофиба или другой код из 90-х годов который тогда был реальным и на котором производительность гхц реально проверяют сегодня, но который ничего не говорит о том, что будет тормозить в 2025
Читать полностью…В целом я пока текущий интерфейс вижу строго низкоуровневым с удобным API для построения эффективных интеграций, а поверх него уже:
1) виртуализация построчного потока
2) "векторные" очереди под запись, возможно с локами для гарантии доставки поверх мультиплексирования (не был доставлен сформированный батч операций - массового отдаем ошибку юзерам, иначе возвращаем всем 200 NoContent)
Пока у меня не будет юзеров или real world проекта под либу в текущем состоянии - я нахожу разумным только доводить до ума low level биндинги с полным покрытием фичами. Сейчас не хватает сложных типов данных, реализации пары фичей протокола и пула соединений (есть только single connection с thread safety блокировками и зачаточным self healing)
Надо будет глянуть есть ли вообще такая функциональность)) а то порой кажется что нет не только доков, но и мелких фич 😁
Читать полностью…в локальной либе - помогло 🙏
теперь вопрос, этот же трюк провернуть с pcre.h для pcre-light можно через cabal.project.local провернуть?
Если что с *.h файлами все ещё есть мелкие проблемы которые недофикшены, но там тяжко, нужно над каждым камнем думать
Читать полностью…По крайней мере генерация через foldMap - самая компактная и читаемая
Читать полностью…И если сворачивать через фолдмап, то тоже никакой разницы
$ 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 = ...
deriveJSON defaultOptions ''AA
deriveJSON defaultOptions ''AB
....
deriveJSON defaultOptions ''AA <>
deriveJSON defaultOptions ''AB <>
....
foldMap (deriveJSON defaultOptions) [ ''AA, ''AB, ''AC, ..., ''ZZ ]Читать полностью…
@onarainydayillwinanyway а в подходе с колонками, когда мы и в Haskell обрабатываем поколоночно, то какие это операции например? (Чисто интересно как мог бы интерфейс выглядеть)
Читать полностью…также производительность самого компилятора-то тоже плохо проверяется, по той же причине, компилируется не тот код на котором в реальной жизни можно поймать регрессию скорости компиляции в разы
Читать полностью…проверять на свежем хекедже не практично, сделать очередной срез реального кода через тридцать лет вполне можно было бы. который конечно тоже протухнет, но не завтра
Читать полностью…Я в целом согласен, что перфтесты community либ непрактично вводить. Под сложные кейсы скорее хотел бы видеть документированные инварианты в оптимизаторе и фазеры под них с трекингом всех перф метрик
Читать полностью…проблема эта осознана и периодически обсуждается, но ответ от разработчиков гхц примерно такой: "проверять произмодительность на реальных бенчмарках реальных пакетов непрактично, так что не повезло вам, программисты на хаскеле, проверите сами и потом нам репорты зашлете"
Читать полностью…так на хаскеле никто больше не пишет и он использует полторы реальные библиотеки которыми пользуются
Читать полностью…