Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 11 июля 2011< ^ >
gds установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Портер прошлое -- http://gdsfh.dyndns.org/kamlo/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:11:43] komar вышел(а) из комнаты: Replaced by new connection
[00:11:45] Typhon вошёл(а) в комнату
[00:11:50] komar вошёл(а) в комнату
[01:03:58] ftrvxmtrx вышел(а) из комнаты
[01:43:01] ygrek вышел(а) из комнаты
[02:08:44] zert вышел(а) из комнаты
[02:11:56] shaggie вышел(а) из комнаты
[02:21:54] ermine вышел(а) из комнаты
[02:39:18] Typhon вышел(а) из комнаты
[02:39:43] Typhon вошёл(а) в комнату
[02:40:14] Typhon вышел(а) из комнаты
[02:40:58] Typhon вошёл(а) в комнату
[02:54:07] Typhon вышел(а) из комнаты: Replaced by new connection
[02:54:09] Typhon вошёл(а) в комнату
[02:54:30] Typhon вышел(а) из комнаты
[02:55:11] Typhon вошёл(а) в комнату
[03:07:59] Typhon вышел(а) из комнаты
[03:08:32] Typhon вошёл(а) в комнату
[03:13:43] Typhon вышел(а) из комнаты
[03:15:35] Typhon вошёл(а) в комнату
[03:16:59] Typhon вышел(а) из комнаты: Replaced by new connection
[03:17:01] Typhon вошёл(а) в комнату
[03:18:02] Typhon вышел(а) из комнаты
[06:14:59] ftrvxmtrx вошёл(а) в комнату
[08:28:52] iNode вышел(а) из комнаты
[09:49:50] mrm вошёл(а) в комнату
[09:50:55] mrm вышел(а) из комнаты
[10:35:03] Typhon вошёл(а) в комнату
[10:38:51] iNode вошёл(а) в комнату
[10:42:30] ygrek вошёл(а) в комнату
[10:52:53] ygrek вышел(а) из комнаты
[10:55:28] ermine вошёл(а) в комнату
[11:03:34] bobry- вошёл(а) в комнату
[11:37:27] shaggie вошёл(а) в комнату
[12:26:34] zert вошёл(а) в комнату
[12:56:24] <gds> кто-нибудь пробовал проектировать софтину с нуля, описывая, понятное дело, начиная с документации, и потом мягко переводя эту документацию в том числе в комментарии к коду, но оставляя возможность видеть документацию на всю софтину целиком?  Вот сейчас есть техзадание на той стадии, где его надо углублять до описания архитектуры/дизайна программы.  Один из следующих шагов -- помодульная разбивка, прописывание интерфейсов, и, если делать её через окамловские средства, этот шаг превратится в создание .ml/.mli-файлов с ocamldoc-описанием.  Но где-то изначально, до этого шага, был просто структурированный текстовый файл.  И вот, работа перейдёт уже в .ml*-файлы, будет что-то меняться, дополняться.  Надо будет отражать эти изменения в том текстовом файле.  Или как-то заменить текстовый файл целиком на ocamldoc-генерируемую документацию...
В общем, не могу представить пока.  Есть идеи?
[13:48:41] abiogenesis вошёл(а) в комнату
[13:51:25] <abiogenesis> gds: а что у тебя за коммерческая разработка на *ml?
[13:53:35] <gds> могу только в общем рассказать.  лёгкая вебня, околосистемное погроммирование, лёгкая работа с субд, кое-какие дсл.  итог для людишек -- веб-сервисы.
[13:56:25] <abiogenesis> а ФП применяется?
[13:58:50] <gds> да, всё делается в основном на окамле, но и на других языках, где уместно, используется функциональное программирование.
[14:29:24] zert вышел(а) из комнаты
[14:35:00] zert вошёл(а) в комнату
[14:43:04] ftrvxmtrx вышел(а) из комнаты
[15:21:34] ftrvxmtrx вошёл(а) в комнату
[15:26:51] abiogenesis вышел(а) из комнаты
[15:30:31] komar вышел(а) из комнаты: Replaced by new connection
[15:30:33] komar вошёл(а) в комнату
[15:57:32] komar вышел(а) из комнаты: Replaced by new connection
[15:57:33] komar вошёл(а) в комнату
[16:11:42] komar вышел(а) из комнаты
[16:34:54] <gds> реально, menhir не ок: http://paste.in.ua/2725/
по идее, вместо "\"ocamldep -modules\"" должно идти Filename.quote "ocamldep -modules"?
[16:39:34] <f[x]> по моему это шелл не ок, а не menhir
[16:45:01] ftrvxmtrx вышел(а) из комнаты
[16:45:15] ftrvxmtrx вошёл(а) в комнату
[16:50:26] <gds> f[x]: в каком смысле "шелл"?  не учитывает двойные кавычки?
[16:51:12] <f[x]> получается да
[16:52:21] <gds> в какую сторону посоветуешь разбираться?
[16:53:10] bobry- вышел(а) из комнаты
[16:53:16] bobry- вошёл(а) в комнату
[17:06:26] iNode вышел(а) из комнаты
[17:59:22] digimmortal вошёл(а) в комнату
[18:00:06] <f[x]> gds: я ж не знаю вообще
[18:00:09] <f[x]> strace
[18:00:59] <f[x]> под винду, да, посоветовал :)
[18:01:59] <gds> ага :)
[18:02:37] <gds> буду смотреть, как камлобилд запускает менхира.
[18:02:40] <f[x]> сделай classic-display
[18:03:28] <f[x]> дай код потестить
[18:07:58] <gds> так-с, вот какой код запускает кривую команду: http://paste.in.ua/2726/
[18:08:08] <gds> формирует, точнее.
[18:10:07] <gds> -classic-display ничего не поменяло, разве что почище стал вывод.
[18:11:22] <bobry-> товарищи, а из уже скомпиленого модуля можно как нить интерфейс вытащить?
[18:11:25] <gds> f[x]: а вот -- тестить: http://paste.in.ua/2727/
[18:12:11] <f[x]> bobry-: ну по идее он в cmi замаршален
[18:12:39] <bobry-> хммм, т.е. только если ручками читать да?
[18:15:48] <f[x]> bobry-: опиши исходную задачу
[18:16:10] <bobry-> у меня есть cmi файл модуля, нужно посмотреть какие функции там есть
[18:18:29] <f[x]> в топлевеле include ему сделай
[18:26:22] <bobry-> хм, кстати идея, спасибо :)
[18:27:14] <bobry-> сработало, nice
[19:07:58] <gds> всё опирается в  бучий cmd, который http://paste.in.ua/2728/
[19:11:09] <f[x]> т.е. он не понимамет эскейпинг \" ?
[19:12:51] <f[x]> что в принципе ожидаемо
[19:13:00] <f[x]> подожди, а при чём тут cmd?
[19:13:10] <f[x]> ты же из bash'а пускаешь
[19:13:17] <f[x]> ocamlbuild тоже bash дёргает
[19:21:44] <gds> ocamlbuild формирует строку с башем, даёт её в system("bash -c ....")
[19:22:51] <f[x]> пыщ
[19:22:57] <f[x]> ну пусть create_process делает
[19:27:04] <gds> Sys.command такой, что "понимает директивы шелла", как же он " > NUL" будет кушать?  Кстати вот, уже вторая проблема, что в стдлибе запуск команд только через sh / cmd.
[19:27:21] <gds> вторая из недавно встреченных проблем связана с этим, имею ввиду.
[19:28:00] mrm вошёл(а) в комнату
[19:30:10] <gds> mrm: про ocamlbuild+menhir уже разбираюсь -- предполагал, что тесткейса не будет, и решил соорудить его сам.
[19:30:36] <mrm> gds: Привет. "решил" себе проблему с Menhir путём модификации правил в myocamlbuild и жёсткой прописки нужных команд
[19:31:00] <gds> точнее, "разбираюсь" это слишком единолично/самонадеянно.  f[x] содействует.
[19:31:32] <mrm> Извини, раньше с тесткейсом не успел
[19:31:47] <gds> да, там вроде только depend прописать надо.  Но, всё равно, дебилизм тут, с этой вендой...
[19:32:35] <gds> зато, как осилю это (или как пойму, что осилить трудно/нереально), будет оверблд с 3.12.
[19:33:06] <mrm> Пофиксить там надо и menhir_ocamldep_command и просто menhir_command
[19:33:21] <gds> а хотя нет, наврал, будет 3.13.0+dev3.
[19:34:20] <mrm> Сейчас вот так сделал -
[19:34:23] <mrm> let menhir_ocamldep_command arg out env _build =
  Cmd(Sh"menhir --raw-depend --ocamldep \"ocamlfind ocamldep -syntax camlp4o -modules\" parser.mly > parser.mly.depends")
[19:34:39] <mrm> Сей костыль пока спасает
[19:36:20] Typhon вышел(а) из комнаты
[19:36:23] <mrm> Раньше в билдлоге было видно одинарные кавычки
[19:36:31] <mrm> Теперь видно двойные и всё работает
[19:37:59] <gds> а у меня в билдлогах, например тут http://paste.in.ua/2725/ или http://paste.in.ua/2728/ , таки двойные, и не работает.
[19:40:03] <mrm> http://slexy.org/view/s20fOzG5Rh
[19:40:06] <mrm> Вот так попробуй
[19:40:20] <mrm> У меня, кстати, windows7 (если это имеет значение)
[19:41:13] <mrm> Ты, наверное, пытаешься заюзать Filename.Quote из OcamlBuild?
[19:45:35] <gds> пока смотрел только на код ocamlsources/ocamlbuild/ocaml_tools.ml.  про myocamlbuild.ml не думал.  да и цель ведь -- сделать так, чтобы оно по умолчанию нормально работало.
[19:46:26] <mrm> Понимаю. Ну вот я тебе дал пример строки, которую нужно выдать в шелл
[19:46:46] <mrm> Сам долго мучился с Filename.quote и плюнул на это дело
[19:48:49] <mrm> Есть подозрение, что он как-то неправильно работает
[19:51:18] <mrm> let sys_command =
  match Sys.os_type with
  | "Win32" -> fun cmd ->
      if cmd = "" then 0 else
      let cmd = "bash -c "^Filename.quote cmd in
      (* FIXME fix Filename.quote for windows *)
      let cmd = String.subst "\"&\"\"&\"" "&&" cmd in
      Sys.command cmd
  | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd
[19:51:29] <mrm> Какой подозрительный FIXME комментарий
[19:51:47] <mrm> Это в my_std.ml
[19:52:21] <mrm> А дальше какой-то ужасающий костыль :-D
[19:57:43] <mrm> gds: Подозреваю, что в этом месте надо воткнуть какой-то регексп, который все кавычки поправит
[19:58:27] <gds> mrm: возможно, но надо подумать.  Пока втыкаю в Filename.quote толково.
[20:02:27] shaggie вышел(а) из комнаты
[20:04:11] shaggie вошёл(а) в комнату
[20:06:52] shaggie вышел(а) из комнаты
[20:18:57] digimmortal вышел(а) из комнаты
[20:47:49] <gds> читаю, думаю.  по-моему, есть офигенно-большой смысл поломать виндовый Sys.command так, чтобы он сам рубил командную строку по пробелам и работал бы как system() в остальном.  очень многое исправилось бы.
[20:58:37] ftrvxmtrx вышел(а) из комнаты
[21:05:14] bobry- вышел(а) из комнаты
[21:10:21] <mrm> А как это связано с кавычками?
[21:10:27] <mrm> gds:
[21:12:41] <gds> mrm: а вот так: в примере http://paste.in.ua/2728/ результат выполнения явно отличается от результата выполнения команды, unquoted по классическим правилам, если её запустить башем: C:/OVerbld/ocaml/bin/menhir --raw-depend --ocamldep "ocamldep -modules" a.mly > a.mly.depends
[21:13:05] <mrm> Сейчас трахался с другой проблемой -- пытался научить OcamlBuild собирать so/dll с использованием сишных стабов. В итоге опять сделал костыль с полным прописыванием нужных команд
[21:14:36] <mrm> Я заметил :-) И жалобы на листе рассылок уже давно есть
[21:14:37] <gds> именно камлокод с сишным кодом в "standalone dll"?  Ну так да, редкое дело.
[21:14:39] <mrm> http://www.nntpnews.info/threads/18662340-Caml-list-menhir-ocamlbuild-trouble-under-Windows-7
[21:15:13] <mrm> Да, мне нужно завернуть камловский рантайм и свою прогу в DLL + ко всему предоставить сишный апи
[21:15:35] <mrm> Вручную всё завернул, с FFI разобрался. Работает отлично (только dll нормально не выгружается ;-)))
[21:15:45] <mrm> Теперь мучаюсь с ocamlbuild
[21:15:55] <mrm> От него пока больше проблем, чем пользы
[21:16:41] <gds> для вещей со сложной сборкой, но простыми зависимостями -- проще руками, видимо.
[21:16:42] shaggie вошёл(а) в комнату
[21:17:08] <mrm> Перед выгрузкой DLL пытаюсь делать так --
[21:17:16] <mrm> // Сборка мусора и выгрузка рантайма OCaml
void unload_caml()
{
    value *at_exit = NULL;    
    at_exit = caml_named_value("Pervasives.do_at_exit");
    if (at_exit != NULL) caml_callback_exn(*at_exit, Val_unit);
        value *compact = NULL;
    compact = caml_named_value("Gc.compact");
    if (compact != NULL) caml_callback_exn(*compact, Val_unit);
}
[21:17:49] <mrm> Всё равно на FreeLibrary процесс падает с "access violation 0000000"
[21:19:30] <mrm> Теперь думаю, что проще будет не в DLL всё заворачивать, а запускать отдельный процесс и делать какое-нибудь RPC
[21:22:25] <mrm> Ещё такое странное дело -- камловский рантайм при инициализации триггерит ошибочные сигналы FPU
[21:22:45] <gds> предполагаю, что всё делается проще.  Подсмотреть, как окамл сам выгружается и задействовать/заимствовать его процедуру.  По моей интуиции это будет проще, чем процесс+RPC.
[21:22:50] <mrm> Приходится временно (для инициализации) менять флаги FPU
[21:23:44] <gds> про FPU -- лучше в мантис отписать хлопцам, что-то тут нечисто.
[21:23:49] <mrm> Ну вот я сейчас и ковыряюсь дизассембере :-) Нужно ещё на сишный камловский рантайм посмотреть
[21:25:26] <gds> конечно, лучше аргументировать им, типа "вот конкретно тут у вас фигня описана, что за дела ваще?".
[21:25:45] <mrm> Лерой расставил всё по своим местам -
[21:26:03] <mrm> > I have an Ocaml module packed into DLL that is dynamically loaded by
> the main C program. What should I do to free all memory taken by Ocaml
> runtime when the DLL is unloaded?

This si not possible currently.  I agree the OCaml runtime system
should one day provide a cleanup function to do this.
Regards,
- Xavier Leroy
[21:26:29] <mrm> Пля.
[21:30:36] <mrm> Похоже, заворачивание камла в длл - действительно очень редкий случай
[21:32:35] <gds> ну, вроде, как-то делают.  Но и билдить через камлобилд, и выгружать -- это редко.  Камло же делают практически-ориентированные люди, и если им конкретно данная штука не нужна, значит и не делают её.
[21:33:36] <mrm> На самом деле, я уже начал сомневаться, что OCaml делают практически ориентированные люди
[21:33:50] <gds> у них другая практика, видимо.
[21:33:55] <mrm> Пока кажется, что его делают только в качестве движка для Coq и Compcert
[21:35:14] <mrm> OcamlBuild -- это что, редкая в использовании штука? А почему она идёт в стандартной поставке?
[21:35:25] <mrm> Недокументированная, сложная в использовании штука
[21:35:58] <mrm> В 10 раз бы меньше времени потратил, если бы ручками makefile написал
[21:36:03] <gds> а, ну это очевидно, только coq.
ocamlbuild -- делалось для "общих случаев", когда надо автоматизировать 95% билдов.
[21:36:12] <mrm> Или заюзал какой-нибудь OCamlMake, который явно проще
[21:36:39] <gds> у любого средства есть свои области применимости, это факт.  у ocamlbuild тоже.
[21:36:46] <mrm> Эх
[21:37:34] <gds> а может стоило рассылку мучить, может они поняли бы, какие вещи стоят перед реальными пользователями.
[21:37:35] <mrm> Camlp4 тоже производит впечатление недопиленного Буратины
[21:37:52] <mrm> Автору лень выходной потратить и портировать старый туториал
[21:38:24] <mrm> Уже запарили невинные предложения RTFS
[21:38:35] <gds> кстати да, насчёт camlp4 беда.
[21:38:51] <mrm> Пришлось самому потратить несколько дней на изучение сорцов
[21:39:20] <mrm> И до сих пор не могу решить миллион проблем :-)
[21:39:33] <gds> если больше половины дня -- надо однозначно обращаться к авторам.
[21:40:22] <mrm> По субъективным ощущениям, экосистемой Хаскелла сейчас занимается на порядок больше народу
[21:42:34] <mrm> Почему даже актуальных виндовых бинарников окамла нет уже несколько лет? :-(
[21:43:17] <mrm> Нужно, наверное, not to be whining, but contributing
[21:44:19] <gds> виндовые бинарники есть, где-то не там смотришь.
[21:44:32] <gds> f[x]: или ты спрятал свои???
[21:44:50] <mrm> 3.12 и чтобы там работали всякие ocamlfind?
[21:45:07] <gds> мои вон -- 1 год давности, это не "несколько лет".
[21:45:18] <gds> 3.12 сейчас закатываю в инсталляшки.
[21:45:30] <mrm> Ну ладно, соглашусь. Хотя на твои совершенно случайно наткнулся
[21:45:50] <mrm> Очень долго искал и в самый последний момент нашёл
[21:45:52] <gds> я пробовал найти ocaml mingw и "в десятке" был раньше, точно.
[21:46:15] <gds> и сейчас 2ая и 3ая ссылки на меня ведут, пусть и на жыжыцу.
[21:46:54] <mrm> искал "ocaml windows binary"
[21:47:25] <gds> если оно сегодня успеет, то сегодня выдам торренты.
[21:47:41] <gds> о да, по такому запросу меня не видно.  проапдейчу описание на сорсфорже однозначно.
[21:47:54] <mrm> и "ocaml 3.11.2 windows binary"
[21:48:46] <gds> а вот это -- не знаю, как сделать, чтобы гуглилось нормально.
[21:49:35] <mrm> А нельзя Лерою и ко впарить твои бинарники (без доп. пакетов)?
[21:49:57] <mrm> Чтобы в комплекте было ровно то, что идёт с 3.12.1 от INRIA
[21:50:31] <gds> проапдейтил описание на "Distribution containing OCaml sources, binaries and many OCaml  libraries, with patches and build scripts for Windows (MinGW / Win32)"
[21:51:08] <mrm> btw, спасибо за сборку. Действительно почти всё (кроме menhir) заработало из коробки
[21:51:09] <gds> у него свои бинарники есть/будут.  Тем более, я патчу компилятор, а он этого не любит.
[21:51:19] <mrm> И все нужные мне пакеты там есть
[21:51:59] <gds> был рад помочь.  Ну и с 3.12 в ближайшие часы (если не засну раньше) всё будет ок.  Опять торренты таки.
[21:52:09] <mrm> Хороший апдейт после официальных бинарников 3.11.0 и сигвина
[21:52:22] <mrm> А как будешь апдейты распространять?
[21:52:30] <mrm> Делать новый торрент?
[21:53:38] <mrm> А у тебя 3.12.1 будет или 3.12.0 или вообще какой-нибудь транк? :-)
[21:53:39] <gds> апдейты -- проблема только с бинарными апдейтами есть.  например, постгресовские биндинги добавил -- добавил и постгресовский клиент, а это новые бинарники.  А так -- даже при инсталляции "sources"-инсталлера сделали так, что оно пытается hg pull -u сделать, и соответственно, забилдить новое.
[21:53:56] <mrm> Исходники на win7 соберутся?
[21:54:02] <mrm> Если что, могу завтра потестить на работе
[21:54:13] <gds> у меня будет "3.13.0+dev3".  Адски, знаю.
[21:54:37] <mrm> Правда, у меня тут очень интернет тормозной (качаться будет полдня)
[21:54:51] <mrm> А почему не стабильный?
[21:55:06] <mrm> В продакшн боязно
[21:55:10] <gds> на win7 -- по идее да.  Были некоторые проблемы с win7, но вроде решили.  Буду рад, если поможешь со сборкой-тестированием (хотя бы базовым).
[21:55:45] <mrm> Я даже на 3.12 до сих пор не рискнул перейти.
[21:55:56] <gds> не стабильный, потому что стабильный был крив чем-то, что-то не работало.  Брал какой есть.  И брал в марте, до того, как в конце мая сделали какой-то rc-релиз.
[21:56:18] <mrm> Ясно. Посмотрим
[21:56:23] <gds> про оверблд у меня пока одна цель -- сделать >=3.12 _хоть как-то_.  Остальное -- мелочи/фиксится.
[21:57:01] <mrm> Ясно. Ну спасибо на этом -- вещь в хозяйстве полезная
[21:57:05] <gds> более старую версию камла, если она будет реально стабильная (хотя бы по словам инрии) -- вкачу без проблем, пусть и формально даунгрейд.
[21:57:43] <mrm> Уж больно туго у OCaml с поддержкой винды (по сравнению с GHC)
[21:57:58] <mrm> Побежал домой. Пока.
[21:57:59] <gds> лучшая благодарность -- багрепорты и пеар (грубо говоря).
[21:58:07] mrm вышел(а) из комнаты
[22:19:53] ftrvxmtrx вошёл(а) в комнату
[22:57:56] shaggie вышел(а) из комнаты
[23:23:38] komar вошёл(а) в комнату
[23:24:37] bobry вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!