Home
Objective Caml
ocaml@conference.jabber.ru
Суббота, 17 октября 2009< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap
Конфигурация комнаты

GMT+4
[02:33:09] john вышел(а) из комнаты
[02:34:32] john вошёл(а) в комнату
[02:35:37] aloner2k вошёл(а) в комнату
[02:48:16] ygrek вышел(а) из комнаты
[05:25:01] aloner2k вышел(а) из комнаты
[10:29:33] ygrek вошёл(а) в комнату
[12:04:30] sevenov вышел(а) из комнаты
[12:04:47] sevenov вошёл(а) в комнату
[12:38:05] sevenov вышел(а) из комнаты: Replaced by new connection
[12:38:07] sevenov вошёл(а) в комнату
[12:48:53] animist вошёл(а) в комнату
[13:03:28] sevenov вышел(а) из комнаты
[13:23:18] animist вышел(а) из комнаты
[13:42:49] sevenov вошёл(а) в комнату
[15:02:36] <ygrek> я правильно понимаю ведь что в сишных биндингах отдавать адрес на камлевский хип (даже для чтения) в сишный код и отпускать при этом лок - нельзя?
[15:03:09] <ygrek> т.е. надо либо копировать, либо держать лок, либо как-то гарантировать что камль не передвинет этот кусок памяти?
[15:03:23] <gds> правильно.
[15:03:58] <ygrek> значит ocaml-mysql напичкан багами чуть менее чем полностью
[15:03:59] <ygrek> эх
[15:04:30] <gds> compaction отрубить можно. но надо гарантировать, что значения останутся живыми, пока их читают.
[15:04:39] <gds> а в ocaml-mysql отпускают лок?
[15:05:07] <ygrek> ну живость гарантирует параметр value из которого этот адрес добывается
[15:06:10] <ygrek> да, в целях "улучшения" исопльзования тредов в последнем релизе натыканы enter/leave'ы не обращая внимания на параметры к обёрнутым функциям
[15:06:27] <gds> параметр -- нормальная гарантия живости. просто бывает так, что асинхронно пускают сишный код читать, сами выходят из сишной функции, и превед.
[15:06:42] <gds> гыгы, крутое улучшение :)
[15:06:45] <ygrek> - if (mysql_real_query(mysql, String_val(sql), string_length(sql)))
+ caml_enter_blocking_section();
+ if (mysql_real_query(mysql, String_val(sql), string_length(sql))) {
+ caml_leave_blocking_section();
[15:07:05] <gds> уроды.
[15:07:16] <ygrek> и вот так всё (c) ---^
[15:07:23] <ermine> все уроды
[15:07:38] <ygrek> правда в README есть
Note: The library can now be used in multithreaded ocaml programs without
blocking threads during i/o with the database server. However, only one
thread should use mysql functions. Better support for multi-threaded servers
using libmysqlclient_r coming someday.
[15:08:01] <ygrek> а, это не про то
[15:08:14] <ermine> [ermine@ermine /usr/home/ermine/devel/ocaml/sulci]$ ocamlbuild -classic-display sulci.byte
fatal: cannot describe '5f2d7d5223c6772be6f54e6a28976e24976b6e3b'
Fatal error: exception End_of_file
[15:08:26] <ermine> спрашивается - куда смотреть?
[15:08:26] <ygrek> юзай -f
[15:08:59] <ygrek> $ git-describe HEAD
fatal: cannot describe 'b5e558cd38b6d89feeb1c7010c93c0982cf656a5'
$ git-describe --always HEAD
b5e558c
[15:09:05] <ygrek> т.е. --always
[15:09:31] <ermine> а, это гит
[15:09:35] <ermine> хехе
[15:09:39] <gds> не, даже использование функций в одном треде им уже не поможет.
[15:09:48] <ygrek> gds: угу
[15:10:25] <ygrek> gds: но "уроды" это некорректно всё-таки.. пофиксим и будет жить
[15:10:32] <ygrek> вот только автор на почту не отвечает
[15:10:43] <ermine> а там и стоит --always
[15:11:20] <ygrek> ermine: значит из другого места где-то вызывается
[15:11:36] <ygrek> у тебя ведь там сто пятьсот либ?
[15:12:07] <gds> ygrek: как фиксить будешь -- копировать строки?
[15:12:09] <ermine> это гит самого сульци
[15:12:22] <ermine> странно
[15:12:29] <ermine> always перестал работать
[15:12:42] <ygrek> ermine: а руками?
[15:12:58] <ygrek> gds: наверное, compaction отрубать это слишком злобно
[15:13:35] <ermine> ну руками тоже cannot describe
[15:13:36] <gds> конечно злобно.
[15:14:35] <ermine> :)
[15:15:03] <ygrek> ygrek@lemon:~/work/contrib/ermine/sulci$ git describe --always
5f2d7d5
[15:15:13] <ermine> и спеца по гиту в онлайне нет
[15:15:16] <ygrek> git --version?
[15:15:46] <ermine> $ git --version
git version 1.6.5
[15:16:40] <ygrek> слишком новый :)
[15:17:24] <ygrek> gds: обнаружил такю же багу и в своём коде! :)
[15:18:17] <gds> полезно вышло.
[15:19:28] <ermine> ну это ладно
[15:19:48] <ermine> непонятно только пчу камлобилд не скажет строчку, которая вот это выдает
[15:19:57] <ermine> а то сразу фатал и фсио
[15:20:02] <gds> в случаях, когда от асинхронной сишной штуки хочу получить данные (кучу байтов), давать ей строку -- делать лишнее копирование. думаю, как там у bigarray of char дела с доступом.
[15:22:09] <ygrek> ermine: при сборке плагина?
[15:24:24] <ermine> ygrek: видимо после сборки плагина, ибо первой строчкой идет finished, если вычистить _build
[15:24:49] <ermine> ладно, я какнить поколдую
[15:25:06] <ygrek> у меня git descrive вызывается при сборке плагина
[15:25:43] <ermine> а смысл?
[15:26:24] <ermine> ygrek: посмотри в плагин сульци в гит-репе
[15:26:45] <ermine> там гит пишет аббревиатуру коммита в файлик REVISION
[15:29:49] <ermine> пока закомментарила, чтобы не мешался
[15:30:03] <ygrek> мы это уже обсуждали. я не вижу смысла в промежуточных файликах - сразу создаю version.ml и всё.
[15:30:53] <ermine> а в релизе? если у юзера нет гита?
[15:31:03] <ermine> отдельный вариант плагина?
[15:31:31] <ermine> надо дописать плагин на этот случай
[15:31:33] <ygrek> а он сначала проверяет отдельный файл
[15:31:38] sevenov вышел(а) из комнаты
[15:54:34] <ermine> блин, как неудобно скрещивать плагин камлобилда с камлофинда
[15:55:04] <ermine> вот щас возьму да напишу читалку мета-файлов, чтобы без помощи камлофинда брать депендсы
[15:55:51] <ermine> уроды
[16:12:39] <gds> писать читалку мета (фактически, не только читалку мета, а чуть больше) вместо использования ocamlfind -- тут нужны либо весомые причины, либо куча свободного времени и шило кое-где. первого не вижу, второму даже как-то завидую слегка.
[16:20:28] <ermine> ты забыл еще про антипатию к автору камлофинда :)
[16:20:46] sevenov вошёл(а) в комнату
[16:31:55] <gds> она подводит импульсы к шилу :)
[16:33:38] <gds> кстати, не проще ли будет выдрать код из ocamlfind, если уж берёшься?
[16:38:17] <ermine> может и выдрать
[16:38:33] <ermine> а еще лучше было бы, если бы была возможность прилинковаться сразу к нему
[16:38:49] <ermine> но плагин камлобилда вроде ни с кем не линкуется
[16:39:46] <gds> сначала начали с парсинга мета, затем с выдирания парсилки, затем с линковки. Высокоуровневость кодо-реюза растёт, заметь. Следующий шаг подсказать? :)
[16:41:55] <ermine> реюза не будет, придется ведь использовать апи камлобилда
[16:42:04] <ermine> там есть свой парсер
[16:44:29] <gds> будет реюз камлобилдовского кода.
в парсинге мета -- реюзился формат.
в выдиралке -- статический (не подверженный апгрейдам камлофайнда) кусок кода.
в линковке -- код, который вполне можно апгрейдить с новыми версиями камлофайнда, если апи не поменяется.
в вызове ocamlfind реюзается весь ocamlfind сразу. там апи не поменяется несовместимым образом, иначе гердушку отымеют.
[16:53:58] john вышел(а) из комнаты
[17:08:24] <gds> а не собрать ли нам в вики модуль вида "полезные операторы"? всякие там
value ( & ) f x = f x;
(ну, допустим, на original syntax я вполне мог бы пойти в этом вопросе)
и прочую инфиксятину. А заодно модули вида Int_as_Float (целочисленные ("+") рассматривать как float-сложение ("+.")), которые можно open при нужде (что я иногда делаю таки).
[17:20:09] <ermine> собирай
[17:20:15] <ermine> еще про catch не забудь
[17:20:30] <ermine> и maybe :)
[17:21:15] <gds> catch -- это finally? maybe -- ?
[17:22:05] <ermine> ну скорее возвращает option
[17:22:49] <gds> не понимаю.
[17:22:56] <ermine> val maube : 'a option -> ('a -> 'b) -> 'b option
[17:23:23] <ermine> let catch f x = try Some (f x) with Not_found -> None
[17:23:25] <gds> так это же map из монады option!
[17:23:59] <ermine> но не назовешь его мапом в камле
[17:25:36] <gds> у меня везде проходит как opt_map. синтаксис для вызова тоже культурный.
[17:28:20] <ermine> еще есть >>= в lwt
[17:28:30] <ermine> там еще какие-то синтаксисы есть
[17:29:22] <gds> в lwt? там около-монадное должно быть, ибо известен их источник вдохновения. а это и я представляю.
[17:29:27] <gds> lwt 2 пробовала?
[17:33:30] <ermine> ну на новом сервере ocsigen весь новый с весь новым lwt собран
[17:33:36] <ermine> не запускала еще
[17:34:13] <gds> новый lwt был слишком недавно, чтобы я знал, 2.x там или 1.x.
[17:36:11] <ermine> релиз кандидат
[17:36:12] DimitryKakadu вошёл(а) в комнату
[17:37:04] ermine собрала многострадательную сульцю с json, который ломает весь смысл с неиспользованием камлофинда
[17:38:11] <ermine> теперь новый вопрос про камлобилд: как накапливать список библиотек, нужные для линковки окончательного продукта?
[17:38:37] <ermine> для статической линковки
[17:38:59] ermine утерла сопли и пошла пробовать новый продукт
[17:48:53] <ermine> http://aei.pitt.edu/967/01/enlargement_spain_29_80.pdf
[17:48:59] <gds> ocamlfind -- в среднем случае можно просто указывать все библиотеки.
[17:49:38] <ermine> gds: чтобы юзать камлофинд, надо им заменять все компиляторы
[17:50:06] <gds> и чочо?
[17:50:09] <ermine> тут будет конфликт с ocamlducefind
[17:51:18] <ermine> там где делается сайт для ocsigen - пишешь свой myocamlfind, которым заменяешь компиляторы, а он смотрит на тэг в _tags и вызывает то камлофинд, то камлодусефинд :)
[17:51:54] <ermine> в общем, хочется стройный камлобилд
[17:53:27] <gds> стройного не будет. в среднем случае имеем хитрую логику опций командной строки, и стыковать вопросы "с ocamlfind или без", "с ocamlseduce или без" всё равно придётся.
[17:55:54] <ermine> это не получится
[17:56:30] <ermine> я не поняла как на лёту подсовывать нужный утиль
[17:56:39] <ermine> это видимо можно только в rule
[17:57:17] <ermine> myocamlfind - это утиль, который в качестве аргумента получает duce или noduce и сам дальше вызывает соответствующий find
[18:35:29] john вошёл(а) в комнату
[19:01:45] <ermine> блин, в который раз хочу нормальный парсер хтмля
[19:16:24] DimitryKakadu вышел(а) из комнаты
[19:17:29] DimitryKakadu вошёл(а) в комнату
[21:08:45] ygrek вышел(а) из комнаты
[21:19:49] DimitryKakadu вышел(а) из комнаты
[21:34:03] sceptic вышел(а) из комнаты
[21:37:39] sceptic вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!