← All posts tagged ffi

Macil
Haskell ffi По идее, хаскельский FFI можно использовать для произвольного маршалинга/демаршалинга данных безотносительно этого самого FFI, вместо пакета binary, например. Из плюсов — 100% стандартность, даже неправославный base тянуть за собой не нужно.
Macil
Haskell ffi Хаскелисты! Не трахоёбтесь с низкоуровневыми биндингами к библиотекам. Пишите ЧАСТНЫЙ случай на C, и прибиндивайтесь к нему через FFI.
1. Это не усложняет сборку из исходников. Даже под неполноценными системами, бинарники GHC идут вместе с GCC. Кабал же, ваши нужды отлично понимает, и никаких сторонних сборочных средств не потребуется.
2. Это не усложняет разработку. GHCI позволяет подгружать как .so/.dll, так и .o и невозбранно ими пользоваться прямо из REPL.
3. Это не вносит дополнительных методологических трудностей. Низкоуровневые биндинги предполагают, что вы и так хорошо знакомы с искомой библиотекой. Да и из документации, в лучшем случае, отошлют к оригиналу.
4. Даже в низкоуровневых биндингах обычно полно всякой сишной враппер-дряни. Вам же в ней и разбираться, равно как и в хаскельской враппер-дряни.
5. В «частный случай» на C можно много чего запрятать, что негоже. А жесткие API/ABI интерфейсы обеспечат отличную изоляцию.
6. Это единственный годный способ прибиндиться к C++.
Macil
Haskell ffi С ужасом открыл для себя, что оказывается в GHC unicode версии Foreign.C.String locale-зависимы. Я может быть бы и не портив, но ByteString или хотя бы [Word8] версий просто нет. А если мне при любой локали нужен UTF8? Что же делать? Ну не грязные же хаки из utf8-string применять?