Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 17 мая 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:22:18] komar вошёл(а) в комнату
[00:48:27] ftrvxmtrx вышел(а) из комнаты
[00:53:30] ftrvxmtrx вошёл(а) в комнату
[01:02:58] <Typhon> gds, http://hackage.haskell.org/trac/ghc/wiki/ErlangInHaskell
[01:05:42] <ermine> ырланк никому не дает спать спокойно
[01:06:03] <ermine> особенно в час ночи (по москве)
[01:08:20] ermine вышел(а) из комнаты
[01:16:00] Kakadu вышел(а) из комнаты
[02:41:04] Typhon вышел(а) из комнаты
[04:26:15] komar вышел(а) из комнаты
[08:52:58] gds вошёл(а) в комнату
[09:17:09] <gds> Typhon: посмотрел, интересно.  Хотя бы в том, чтобы проанализировать их интерфейс.  Вот, например, функция
spawnRemote :: NodeId -> Closure (ProcessM ()) -> ProcessM ProcessId
Интересно, как у них получается это?  Учитывая, что функция, в теории, может быть по другому адресу, если скатиться до низкого уровня а-ля closure marshalling в окамле.  Вспоминается йожыннайа мудыдрасць: "Меня всегда удивляла фамилия Кислодрищенко.  Откуда они, собственно, знают?"
[09:50:05] <gds> отрепортил вчерашнее, http://caml.inria.fr/mantis/view.php?id=5267 , но, чую, скажут "не хотим фиксить" или как-нибудь ещё отмажутся.  Уж я бы на их месте постарался бы.
[10:56:25] Digimmortal вошёл(а) в комнату
[11:07:05] <Digimmortal> я как-то нарываля на pdf в которой описывался какой-то довольно крупный проект на OCaml, типа подробно аннотированные исходники с объяснением зачем что было сделано, типа Zinc'а Xavier Lerua
[11:07:19] <Digimmortal> никто не знает о чём речь?
[11:07:42] <Digimmortal> а то документ куда-то продинамился и непонятно как это гуглить
[11:09:11] <f[x]> * Leroy
[11:09:16] <Digimmortal> ага
[11:09:34] <Digimmortal> с русского переводил :)
[11:09:49] <f[x]> найдёшь - кинь ссылку :)
[11:13:01] <Digimmortal> http://www.eecs.harvard.edu/~govereau/tigerc/ может оно, но не уверен
[11:13:52] <Digimmortal> а Modern Compiler Implementation in ML by Andrew W. Appel в цифре не существует? я сколько не искал так и не нашёл
[11:16:32] <Digimmortal> Харроповский журнал тоже не удалось найти
[11:16:47] <Digimmortal> dmz говорил, что он качественный
[11:22:15] ftrvxmtrx вышел(а) из комнаты
[11:58:14] Typhon вошёл(а) в комнату
[12:06:50] ftrvxmtrx вошёл(а) в комнату
[12:24:53] <gds> вот мне говорят -- "нафига ты, нехороший человек, патчи делаешь в оверблд, когда нужно писать в апстрим и жаловаться на проблемы, и ждать от них благословения?".  На что редакция отвечает патчем вида http://paste.in.ua/2394/ и вопросом -- "а сколько сил нужно вложить, чтобы скомпилировать lwt без libev штатным образом, или хотя бы относительно культурно?".
[12:28:55] <Typhon> насчёт лвт — не вижу у них сейчас в _oasis флага libev или select — а такое должно быть, кмк! о таком точно надо писать им в мылолист, я думаю
[12:29:15] <gds> писать надо, но пока записал в todo.
[12:29:36] <gds> но патч ещё не закончен.  http://paste.in.ua/2395/ -- тут не ясно, как/откуда должен взяться этот "дефайн".
[12:31:16] Kakadu вошёл(а) в комнату
[12:34:25] <Typhon> Kakadu: ты вроде пробовал без либева собирать лвт, чем закончилось?
[12:35:14] <gds> пожелай я сделать всё ещё грязнее, поставил бы либев, оно в рантайме всё равно селект выбирает.
[12:37:02] <gds> но это делать ссыкотно, потому что могу чего-то не заметить случайно.  мне же надо полностью выбросить либев из вендового lwt.
[12:51:14] <Kakadu> Typhon: тем что конфигря прошла, но потом потерялись какие-то хэдэри юниксовые и я забил
[13:08:13] Kakadu вышел(а) из комнаты: Replaced by new connection
[13:08:13] Kakadu вошёл(а) в комнату
[13:43:26] ermine вошёл(а) в комнату
[14:10:52] <gds> конечный вариант "lwt без libev": http://overbld.hg.sourceforge.net/hgweb/overbld/overbld/file/tip/src/lwt/patch/102_mingw__no_libev
[14:13:34] <ermine> а чо выкинул libev?
[14:17:02] <gds> для венды -- потому что та реализация libev весьма крива.  А в юниксах оно с libev у меня собирается, ясное дело.  libev -- хорошее.
[14:19:13] <ermine> gds: я тут одного виндузятника охмуряю камлом, боюсь, что ему сказать после того, как он прочтёт начальные мануалы и решит водрузить себе на винду чонить :)
[14:22:07] <gds> ermine: скажи ему такие простые слова: http://sourceforge.net/projects/overbld/files/OVerbld-setup-binary-20100426.torrent/download либо http://sourceforge.net/projects/overbld/files/OVerbld-setup-sources-20100426.torrent/download
[14:22:22] <gds> тьфуты.  пока я там -sources (вторую ссылку) зламал.
[14:24:09] <gds> и вот думаю сделать какие-то бранчи, что ли.  чтобы то, что требует определённый бинарный релиз, было в бранче, чьё имя зашито куда-то в этот релиз, чтобы, например, на старом бинарном дистре с tcl/tk 8.4 даже не пробовало билдить камло 3.12, требующее tcl/tk 8.5.
[14:31:55] <ermine> gds: а оно всё работает в седьмой винде?
[14:32:32] Digimmortal вышел(а) из комнаты
[14:34:11] <gds> ermine: билдится, сэмплы запускаются.  тестил на 2008, но это почти один хрен.  в любом случае, буду допиливать при нужде.
[14:36:16] <ermine> gds: то есть у тебя у самого до сих пор стоит хрюшка? :)
[14:38:30] <gds> дома в дуалбуте -- да, для игрушек это идеально.  на оф.работе на рабочем месте -- да, потому что наш сисадмин не мазохист, да и я не прочь хрю.  а вот на некоторых неважных серверах он поставил вин2008, там и тестил билденье, кстати.
[15:14:52] <ermine> чота замолчали в мейллисте оксигена
[15:15:06] <ermine> надо оживить глупым вопросом
[15:16:23] <gds> о, у меня есть их.
[15:16:27] <gds> про libev можно :)
[15:25:28] <ermine> ну напиши там
[15:26:27] <ermine> а то даже в дарксе нет изменений
[15:28:18] <ermine> хм, пошла перепроверять предмет своего глупого вопроса... чота не воспроизводится
[15:28:44] <ermine> ладно
[15:29:05] <gds> пока не подписан туда.  в todo написал, потом как-нибудь займусь.
[15:30:45] <gds> о, весь оверблд с новым камлом собрался падвендой!  следующие мои дела -- бинарное окружение обновлю (кое-что добавилось, поменялось), и -- бинарные билды!1111
[15:31:08] <Typhon> и пеар!
[15:31:24] <gds> утром -- билды, вечером -- пеар.
[15:32:37] <gds> Typhon: кстати, про бранчи выше почитал?  Твоё мнение особенно интересно, так как ты примерно представляешь (представлял уж точно), как в оверблд с бинарной и исходниковой частью устроено.
[15:33:52] <gds> пример с tcl/tk привёл, ну и ещё есть примеры -- postgresql-ocaml добавил, но в те старые бинарные билды, где нет \postgresql\{bin,lib,include}, не нужно добавлять этот пакет.
[15:35:54] <Typhon> это похоже на тэги (гитовые, в хг не помню/не знаю как зовутся). то есть был тэг — окамл 3.11 с соотв. пакетами, стал тэг 3.12 с новыми пакетами. либо я не так понял, и надо попозже перечитать про брэнчи :-)
[15:36:18] <ermine> не, предмет таки репродуцируется, щас понапишу
[15:38:53] <gds> Typhon: всё правильно, похоже на тэги, но желательно: 1. сделать так, чтобы обновлялось всё, пока где-нибудь в репке не скажем, что "всё, дальше уже с постгресом идём", 2. сделать, чтобы критические изменения шли во все нужные ветки.
А может гламурнее сделать -- в пакетах прописать "exists_if" типа findlib'овского, и по условию "postgres\bin\pg_config.exe" определять, билдить ли postgresql-ocaml.  Но какой-то нифига не общий механизм получается, так как критериев, в общем-то, дофига, не только "файл существует".
[15:40:42] <gds> может к бинарному дистру привязать какие-то теги типа tcltk84, postgres, ocaml312, и в зависимости от них как-то решать, что билдить?
[15:44:01] <gds> перебазируюсь-ка я домой.
[15:44:08] gds вышел(а) из комнаты
[15:46:54] <f[x]> gds: в godi это называется overlay или как-то так :)
[15:47:08] <Typhon> а мы там в инсталяторе делали какие-то чекбоксы, "что билдить/ставить", может что-то типа такого накрутить?
[17:26:03] gds вошёл(а) в комнату
[17:28:36] <gds> f[x]: фигассе, а godi бинарниками тоже занимается?
[17:28:51] <f[x]> не
[17:29:10] <f[x]> это ж source-based - набор патчей
[17:29:24] <gds> а там какой в этом смысл, в overlay'ях?
[17:29:55] <gds> типа, наложили такие-то оверлеи -- имеем такие-то пакеты?
[17:29:55] <f[x]> разные камли емнип
[17:30:09] <f[x]> я не пользуюсь, так вспомнилось
[17:31:50] <gds> понял.
[17:35:09] <gds> Typhon: чекбоксы -- это одно (в дистре уже известно, что есть, но ставить можем не всё), а тут чуть другое получается -- оверблд прогрессирует, новые пакеты появляются ("то, чего нет" на момент установки), и не всегда бинарные зависимости удовлетворяются -- сейчас только около 5 внешних сущностей поменяется (из бинарных).  Поэтому если пользователь старого оверблд обновит исходники и попробует сбилдить, у него будет удивление на летсэ -- "как это tcl85.dll не найдена, вать машу???", ну и подобное.
[17:37:26] Digimmortal вошёл(а) в комнату
[17:40:13] <Typhon> хм, так tcl84.dll в оверблд идёт в комплекте ж? он обновит значит не исходники, пользователь то, а весь оверблд, и ему придёт новая длл. или не айс так?
[17:41:00] <gds> в бинарном -- в комплекте, но бинарное в репку не кладём, поэтому из репки обновится только ocaml 3.13, требующий tcl/tk 8.5.
[17:44:16] <gds> (кстати, заметил, что tcl в русской раскладке будет "есд" (есть такая аббревиатурка), ну а tcltk -- "есдел".  Так и хочется -- "так и запишем: gtcltk на Князя Тьмы".)
[17:48:45] <gds> в общем, идея с тегами базово нравится.  в корень бинарного дистра припихиваем файлик типа "what_overbld_provides" со списком того, что предоставляем бинарно (логика -- "OR" того, что есть), а в пакетах класть файлики типа "what_package_requires" со списком того, что пакету необходимо для работы (логика -- "AND" того, что нужно пакету).
Более кошерное решение -- набивать формулы типа "postgres<9 && ocaml<3.12 || postgres>=9 && ocaml>=3.12", но для баша как-то мрачновато, а куда-либо переписывать это дело смысла нет, ибо oasis-db нас ждёт в светлом будущем.
[18:00:48] <Digimmortal> куча вкуснятины для задротов http://www.cs.uoregon.edu/research/summerschool/summer10/curriculum.html
[18:00:59] <Digimmortal> Proving a Compiler: Mechanized Verification of Program Transformations and Static Analyses — Xavier Leroy
[18:01:03] <Digimmortal> одно из
[18:05:43] <f[x]> йоу
[18:08:47] ftrvxmtrx вышел(а) из комнаты
[18:41:14] Digimmortal вышел(а) из комнаты
[18:49:45] <gds> в общем, про оверблд и бинарные зависимости выдумалось такое.  Сейчас есть взаимные зависимости между пакетами -- типа, findlib требует ocaml, а какая-нибудь либа требует уже findlib, и все живы-здоровы.  (конечно, реализовано это не очень удобно, в одном файле "пакет_кто_зависит : пакет_от_кого_зависит*", но это можно отрефакторить -- вынести в /src/<pkg>/requires, например.)  Далее -- чуть расширить синтаксис: то, что было как раньше, так и оставить, а то, что будет с префиксом "bin:" (например, "bin:tcltk85" считать "бинарными зависимостями".  А в самом оверблд, в бинарной его части, понатыкивать файлы-флаги: для tcl/tk 8.5 это будут: "tcltk", "tcltk-8", "tcltk-8.5".  Ну, спёрто с линупсовых .so.  И прописывать эти файлы в качестве пререквизитов, когда встречается префикс "bin:".  Т.е. "bin:xxx" транслировать в зависимость от файла-флага "../../provides/xxx".  Ещё хорошо, что можно в самой процедуре билда явным образом форсировать наличие определённого флага путём touch или более хитрой логикой, если вдруг ошиблись где-то и надо пофиксить быстро.
[18:54:48] <gds> а, ещё плюс: можно элементарно "набилдить" этот флаг путём запуска какого-нибудь простого скрипта.  например, явно можно прописать в Makefile:
$root/provides/tcltk85 : $root/tcl/bin/tcl85.dll $root/tcl/bin/tk85.dll
  touch "$@"
[19:01:33] <gds> кстати, кто-нибудь встречал полное и чёткое описание алгоритма, которым dvcs исполняет merge двух веток?  Желательно для mercurial, но git тоже пойдёт.
[19:01:47] <gds> гуглил, не мог найти.  Или подскажите ключевые слова.
[19:10:46] Kakadu вышел(а) из комнаты
[19:21:41] <Typhon> http://hgbook.red-bean.com/read/a-tour-of-mercurial-merging-work.html
[19:21:59] <Typhon> piranha
Typhon: simplemerge, не знаю, есть ли описание
7:19
piranha
недавно мэтт писал в рассылку
[19:22:19] <Typhon> рассылка — www.selenic.com/pipermail/mercurial-devel/ <http://www.selenic.com/pipermail/mercurial-devel/> , но я не нашёл :-(
[19:22:56] <gds> ага, буду искать.
[19:31:31] <gds> тоже не смог найти.
[19:55:49] <Typhon> piranha
[17/05 17:53] <piranha> but still, do you know if there is any description of internal:merge? :)
[17/05 17:54] <cyanite> no, not apart from it being a pretty naive 3-way merger.  maybe it uses python's diffutil (or whatever it's called)?  I don't remember.
оно не юзает diffutil, но всë равно
да, оно реально наивный 3-way merger
[19:56:52] <Typhon> gds: + кодэ на питоне http://selenic.com/hg/file/tip/mercurial/simplemerge.py#l60
[19:57:15] <Typhon> http://selenic.com/hg/file/tip/mercurial/simplemerge.py#l403
[19:58:29] <gds> рад вникнуть в петоний код.  впервые в жизни.  событие :)
[20:06:46] <gds> теперь я понял всё.  :]
[20:09:50] <gds> уже который раз помогает для "отладки по типам" фокус "заменить 'a, 'b на a, b, где a, b объявлены абстрактно, type a; type b;".  Вроде в 3.12 можно вводить типы наподобие (type a) или как-то так?  Тут это не поможет?
[20:11:59] Kakadu вошёл(а) в комнату
[21:26:40] <ermine> Kakadu: сдал?
[21:26:48] <Kakadu> ermine: да
[21:27:16] <Kakadu> ermine: спасиба, тебе виртуальная конфетка)
[21:27:50] ermine виртуально ее пожевала
[21:28:02] <ermine> Kakadu: а что поставили-то?
[21:28:05] <ermine> троечку?
[21:28:10] <Kakadu> ermine: отлично
[21:28:37] <ermine> разумный препод :)
[21:28:48] <gds> такого жопой не напугаешь.
[21:29:10] <ermine> Kakadu: теперь давай пили эту поделку до маркдауна и всего остального
[21:31:43] <Kakadu> ermine: угу
[22:11:29] Typhon вышел(а) из комнаты
[22:54:40] gds вышел(а) из комнаты
[23:14:56] Typhon вошёл(а) в комнату
[23:17:57] Typhon вышел(а) из комнаты
[23:18:24] Typhon вошёл(а) в комнату
[23:24:42] ermine вышел(а) из комнаты
[23:39:54] ftrvxmtrx вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!