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

GMT+4
[00:02:14] gds вышел(а) из комнаты
[00:03:41] shaggie вышел(а) из комнаты
[00:18:34] ftrvxmtrx вышел(а) из комнаты
[01:15:18] ftrvxmtrx вошёл(а) в комнату
[01:23:56] ermine вышел(а) из комнаты
[01:26:15] ygrek вышел(а) из комнаты
[01:38:22] komar вышел(а) из комнаты: Replaced by new connection
[01:38:22] komar вошёл(а) в комнату
[03:14:36] zert вышел(а) из комнаты
[03:46:58] Typhon вышел(а) из комнаты
[05:29:28] ftrvxmtrx вышел(а) из комнаты
[05:30:41] ftrvxmtrx вошёл(а) в комнату
[06:04:08] delete_ вошёл(а) в комнату
[06:06:21] delete_ вышел(а) из комнаты
[06:18:55] zinid вошёл(а) в комнату
[07:00:48] delete_ вошёл(а) в комнату
[07:03:59] delete_ вышел(а) из комнаты
[07:09:01] delete_ вошёл(а) в комнату
[07:09:33] delete_ вышел(а) из комнаты
[08:15:22] gds вошёл(а) в комнату
[08:31:00] <gds> http://ocaml.janestreet.com/?q=node/95 "I've been thinking about universal types again because I've been working on a project lately that uses a universal type as a central architectural piece." -- лол я тоже.  И пришёл к примерно такой же сигнатуре (только ещё с возможностью "вбрасывать" полутипизированное внутрь).  Вообще, статейка интересная.
[08:45:50] <komar> КОСТЫЛИ какие-то.
[08:50:15] <gds> альтернатива -- camlp4, кодогенерация, магея.
[09:09:39] ermine вошёл(а) в комнату
[09:39:36] delete_ вошёл(а) в комнату
[09:44:36] delete_ вышел(а) из комнаты
[09:56:08] komar вышел(а) из комнаты
[10:15:35] ftrvxmtrx вышел(а) из комнаты
[10:17:50] ftrvxmtrx вошёл(а) в комнату
[10:19:37] komar вошёл(а) в комнату
[10:35:54] Typhon вошёл(а) в комнату
[10:36:25] komar вышел(а) из комнаты
[10:38:52] komar вошёл(а) в комнату
[11:25:58] arhibot вошёл(а) в комнату
[11:28:50] f[x] вошёл(а) в комнату
[11:35:25] arhibot вышел(а) из комнаты
[11:50:19] komar вышел(а) из комнаты
[11:52:51] <Typhon> а что с сайтом стало ? http://caml.inria.fr/ — тут active dvi какой-то, http://caml.inria.fr/ocaml/ — тут ничего
[11:54:15] komar вошёл(а) в комнату
[11:56:16] <zinid> гг
[11:56:20] <zinid> ocaml таки умер?
[11:58:08] <Typhon> может я что-то пропустил и вместе с переименованием французы сайт замутили новый
[11:58:44] <zinid> та сломали что-то наверное
[11:58:45] <Typhon> хотя все ссылки на доки подохли, походу >_<
[12:00:14] <gds> если верить рассылке, сегодня починят.
[12:47:35] ftrvxmtrx вышел(а) из комнаты
[13:18:33] f[x] вышел(а) из комнаты
[13:27:21] shaggie вошёл(а) в комнату
[13:32:49] f[x] вошёл(а) в комнату
[13:44:17] ftrvxmtrx вошёл(а) в комнату
[15:13:05] zert вошёл(а) в комнату
[15:42:29] komar вышел(а) из комнаты: Replaced by new connection
[15:42:30] komar вошёл(а) в комнату
[16:01:17] komar вышел(а) из комнаты: Replaced by new connection
[16:01:18] komar вошёл(а) в комнату
[16:31:46] komar вышел(а) из комнаты
[17:04:52] komar вошёл(а) в комнату
[17:06:57] <f[x]> охщи, вы видели какой код генерит ocamlopt для пачки локальных rec функции?
[17:07:46] <f[x]> http://paste.in.ua/2835/
[17:08:19] <zert> нехиленько
[17:08:38] <f[x]> что именно? ;)
[17:08:49] <zert> по памяти
[17:09:05] <zert> ragel
[17:09:11] <f[x]> задача - проверить что префикс строки принадлежит множеству
[17:09:26] <f[x]> ну это всё minor heap поэтому быстро
[17:09:47] <f[x]> но как раз вопрос - откуда оно столько аллокейтит - в самом коде сгенеренном рагелем явных аллокаций нету!
[17:09:52] <f[x]> кто угадает?
[17:10:15] <gds> делает блок, заполняет его хернёй, потом вычисляет каждую из функций, делает set_field (или как там), и только потом вычисляет то выражение, для которого требовался этот блок.  видимо.
[17:10:46] <f[x]> вот ragel-сгенеренный код - http://paste.in.ua/2836/
[17:11:44] <f[x]> gds: почти - делает блок под все локальные функции и записывает туда адреса функций
[17:11:56] <f[x]> при том функции эти вызываются явно, а не через этот блок
[17:12:10] <gds> ага, понял.  странное дело.  в мантис?
[17:12:15] <f[x]> а заполнение этого блока у меня в топе профайлера
[17:12:25] <f[x]> и делается на каждый вызов функции матчинга!
[17:12:33] <f[x]> хотя этот блок по идее константный вообще
[17:12:54] <f[x]> ну я пока покручу ragel чтобы он не вызывал такого поведения
[17:13:15] <f[x]> кстати - пока-что получается самый быстрый способ заматчить набор фиксированныз строк - ocamllex
[17:14:55] f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Светлое будущее -- http://camlunity.ru/ | Нефильтрованное настоящее -- https://github.com/camlunity/kamlo_wiki | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | **ocaml мёртв и тормозит, move on**
[17:16:36] <f[x]> кстати что странно - pcre медленнее чем ручная проверка - String.starts_with s "xx" || String.starts_with s "yy"
[17:17:43] komar вышел(а) из комнаты: Replaced by new connection
[17:17:43] komar вошёл(а) в комнату
[17:32:36] <ermine> а что в топике поменялось?
[17:33:34] <gds> четырёхзвездочный дохлый верблюд
[17:34:18] <ermine> а было три?
[17:35:53] <gds> был 0.
[17:37:13] komar вышел(а) из комнаты: Replaced by new connection
[17:37:14] komar вошёл(а) в комнату
[17:37:23] <zinid> http://caml.inria.fr/ocaml/name.en.html
[17:37:25] <zinid> ы?
[17:37:26] <zinid> боян
[17:38:42] <zert> ирландцев разлюбил
[17:40:21] ftrvxmtrx вышел(а) из комнаты
[17:40:49] <ermine> а мы тут будем говорить камло
[17:40:57] ftrvxmtrx вошёл(а) в комнату
[17:41:03] <f[x]> ха, блок то хоть и константа но он же для gc нужен поэтому его шарить нельзя наверное
[17:41:04] <ermine> только вот что делать с доменом camlunity
[17:41:07] <f[x]> безблагодатность
[17:41:18] <ermine> f[x]: как ты мог прозевать такую ситуацию!!!
[17:42:05] <f[x]> ermine: я тебе поручал!
[17:43:58] <zert> окомло
[17:44:12] <zert> сделать поддомен o.camlunity
[17:44:27] <komar> Хватит херней страдать.
[17:45:12] ermine призлопнула рукой комара
[17:46:38] <ermine> надо на хаскиль всё же сворачивать
[17:47:09] <ermine> там название языка вроде не менялось с caml light на все вариации камла
[17:47:37] <zert> да
[17:47:38] <zert> давно пора
[17:48:52] <ermine> zert: а на хваскиле уже есть компилятор asn.1?
[17:50:13] <zert> вроде есть
[17:50:43] <zinid> а у камла есть?
[17:52:05] <ermine> zinid: вон zert песал и забил, у него на гитхубе есть
[17:52:13] <zert> там парсинг только
[17:52:14] <zinid> а
[17:52:17] <zinid> это видел
[17:52:24] <zinid> канпелятора нету?
[17:52:24] <zert> и всё равно, если я за него опять возьмусь, переделаю на хвашкиле
[17:52:31] <zert> ибо
[17:52:49] <zinid> ибо что?
[18:01:06] <ermine> ибо камло мёртво и только для лузеров-неудачников, не осиливших хаскиль и лисп
[18:01:31] <komar> А то.
[18:01:36] komar помахал всем ручкой.
[18:19:35] ftrvxmtrx вышел(а) из комнаты
[18:20:06] ftrvxmtrx вошёл(а) в комнату
[18:21:19] ftrvxmtrx вышел(а) из комнаты
[18:21:25] ftrvxmtrx вошёл(а) в комнату
[19:13:14] <zinid> + ocamlfind ocamlc -c -g -syntax camlp4o -linkpkg -package js_of_ocaml -o test.cmo test.ml
ocamlfind: When using -syntax, the META variable 'preprocessor' must be set
Command exited with code 2.
[19:13:28] <zinid> не подскажете где прописать этот preprocessor и что там писать?
[19:13:40] <f[x]> покажи META js_of_ocaml
[19:14:01] <zinid> хде бы её ещё взять ;)
[19:14:24] <zinid> ой, она большая
[19:14:36] <zinid> version = "1.0.2"
description = "Js_of_ocaml library"
archive(byte) = "js_of_ocaml.cma"
requires = "lwt"
package "syntax" (
description = "Js_of_ocaml syntax extension"
version = "[distributed with js_of_ocaml]"
requires(syntax) = "camlp4"
archive(preprocessor,syntax) = "pa_js.cmo"
)
package "deriving" (
exists_if = "deriving_json.cma deriving_json.cmxa"
description = "Runtime library for the class Json."
version = "[distributed with js_of_ocaml]"
archive(byte) = "deriving_json.cma"
archive(native) = "deriving_json.cmxa"
package "syntax" (
description = "Safe \"IO in JSON\" class for deriving-ocsigen."
version = "[distributed with js_of_ocaml]"
requires(syntax) = "deriving-ocsigen.syntax"
archive(preprocessor,syntax) = "pa_deriving_Json.cmo"
archive(syntax,toploop) = "pa_deriving_Json.cmo"
[19:14:37] <f[x]> в paste.in.ua
[19:14:43] <zinid> поздно ;)
[19:15:03] mrm вошёл(а) в комнату
[19:15:19] <f[x]> -package js_of_ocaml.syntax
[19:17:03] <zinid> прососало, спасибо
[19:17:27] <mrm> gds: Привет! Пытаюсь скачать бинарики нового overbld, а сидов нет.
[19:20:17] <komar> Бида.
[19:22:08] <f[x]> для 07-13 должны быть сиды
[19:22:10] <mrm> Сид появился. Спасибо!
[19:22:46] <mrm> Попробую один проект перетащить на 3.12
[19:23:39] <gds> видимо, в ближайшее время в оверблд фичи добавлять не буду, хоть и хотел (сирани форсфорж не поддерживает букмарки меркуриала), поэтому вскоре выложу на статический хттп, f[x] дал возможность вот.
[19:24:33] <mrm> Я пока побаиваюсь его юзать, т.к. это какой-то лютый транк 3.13 :-)
[19:25:53] <mrm> Да и не нужен мне особо новый окамл. Просто сейчас есть либы, которым нужен 3.12
[19:26:03] <mrm> Bolt, Mascot, Bisect, Kaputt кто-нибудь щупал?
[19:34:59] Typhon вышел(а) из комнаты
[19:40:50] zinid вышел(а) из комнаты
[19:48:46] <mrm> gds: Windows 7. При запуске setup получаю "Error 193: %s не является приложением Win32"
[19:48:52] <mrm> Торрент не битый
[19:49:16] <mrm> Старый setup запускается
[19:49:38] <mrm> поправка: "%1 не является ..."
[19:52:48] <mrm> А вот что я скачал: "OVerbld-setup-binary-2011-07-13.exe"
[20:40:54] <gds> mrm: буду смотреть.  Сходу не понял.
[20:43:48] <mrm> Я сам ничего не понял :-) Может завтра поковыряюсь
[20:44:09] <mrm> Попробовал ещё на двух компах в офисе (тоже вин7)
[20:44:12] <mrm> Проблема воспроизводится
[20:45:06] <mrm> Установщик старого overbld везде работает
[20:45:19] <mrm> Ещё source-версию попробую
[20:45:20] <gds> я под вайном запустил тот .exe, та же фигня, только по-английски, "Bad EXE format for %1".
[20:45:40] <gds> но вайн это не аргумент, поэтому решил где-нибудь найти реальную венду или хотя бы эмуляторную.
[20:45:41] <mrm> Может в торрентах висят битые бинарники?
[20:46:44] <mrm> Судя по статистике, их давно никто не качал
[20:49:10] <mrm> Вру. 17 человек за всё время (все русские окамльщики?) :-)
[20:49:57] <mrm>                                                                         Top Country                                  
                                 China
                41% of downloaders                                        <http://sourceforge.net/projects/overbld/files/OVerbld-setup-binary-2011-07-13.exe.torrent/stats/map?dates=2011-06-25%20to%202011-08-01>    
[20:50:06] <mrm> wtf :-)
[20:50:11] <gds> в рот мне ноги.
[20:52:08] <mrm> 7 человек из Китая скачало
[20:52:33] <gds> про битый .exe тоже подумаю.  Но оно его распаковывает как-то, а там какие-нибудь контрольные суммы наверняка.
Но не прямо сейчас, ибо моск не на месте.  А вот что я сейчас сделаю -- так это перегенерю инсталлеры, оба, и, как закончу, выложу на хттп.  (ориентировочно к завтра перекомпиляется.)  Тем более, есть изменения и после 13 июля -- батарейки починил судя по hg log, ну и всё такое.
А моск забит тем, что я одну древнюю проблему мучил, с сериализацией, внешними процессами ОС и безопасностью по типам, тоже камло.  Добился "копромисса", с позволения сказать.
[20:52:34] <mrm> 5 из России :-)
[20:54:02] <mrm> Спасибо. Потестирую на реальном проекте
[20:54:14] <gds> но там 3.13.  бида?
[20:54:27] <mrm> Безопасная сериализация? Нечто шустрее sexplib, но безопаснее marshal?
[20:54:54] <mrm> Не знаю. Соберу софтину и прогоню тесты (их много -- тысячи)
[21:01:52] <gds> про сериализацию -- думаю над тем, чтобы было удобно гонять в пределах процесса (без сериализации вообще можно), чтобы можно было подключить любую требуемую сериализацию (marshal и json пока), чтобы были "гарантии по обещаниям" (т.е. такой код, который пишут нормальные люди, не поломается -- то же самое, как нормальные люди не используют Obj в основной работе), и чтобы можно было всовывать полу-типизированные значения (например, Json_type.t) для дальнейшей типизации.
[21:02:31] <gds> про оверблд -- займусь обязательно.  У меня личный интерес, как минимум в том, чтобы потестить это дело на нормальных людях и их задачах.
[21:04:39] <gds> ну вот, про сериализацию, безопаснее marshal точно будет, так как его смогу обвешать именем типа и его версией, чтобы можно было как завести себе разные имена типов, так и по-разному реагировать на версии сериализованных значений.
[21:05:13] <mrm> Если решу все вопросы с виндой, то смогу пропихнуть OCaml в большую коробочную софтину, используемую на куче предприятий нефтегазовой отрасли. Это будет маленький success story
[21:05:25] <mrm> Если не решу, то имя моё будет покрыто несмываемым позором :-)
[21:05:58] <gds> вот это серьёзно.  У меня есть плюс к мотивации.
[21:07:02] <mrm> с Marshal беда -- с ним только из OCaml можно работать :-(
[21:08:05] <gds> да, но он быстрый.  А ещё именно поэтому кроме "имени типа" будет возможность использовать разные форматы сериализации для одного и того же типа данных.  Мне для parvel надо и по json, и s-выражениями общаться уметь.
[21:08:11] <mrm> У меня не только с виндой проблемы, а ещё и с заворачиванием камла в DLL и подрубании всего этого дела к Дельфе
[21:08:26] <mrm> Да так, чтобы можно было эту DLL много раз подрубать-вырубать без всяких утечек
[21:08:31] <gds> ну это тоже к "проблемам с виндой" относится..
[21:08:58] <mrm> Пока без мультипоточности, но скоро и это понадобится
[21:09:19] komar вышел(а) из комнаты: Replaced by new connection
[21:09:19] komar вошёл(а) в комнату
[21:09:24] <mrm> Предчувствую баттхерт и необходимость ковыряться в рантайме OCaml :-)
[21:10:18] <mrm> parvel?
[21:10:20] <gds> может проще сразу подумать про "вынести окамл в отдельный процесс"?  парвел пишу в том числе для этих целей: иметь, например, json-сервис (или json over http, например), умеющий несложный протокол.
[21:10:33] <mrm> Сейчас читал про приключения Валкина с thrift
[21:10:34] <gds> "параллельный велосипед".  пока там тупка, чисто локальные сообщения.
[21:10:36] <mrm> http://lionet.livejournal.com/66899.html?thread=1834067
[21:10:56] <mrm> Это не на твою тему?
[21:12:07] <gds> thrift -- точно не на мою.  лионет суров, он другими делами занимается.
[21:12:23] <mrm> Нет, с отдельным процессом скорее всего не получится. По нетехническим причинам, увы.
[21:12:33] <mrm> Мне поставили жёсткое условие -- никакого RPC
[21:13:24] <gds> тогда пичаль.
[21:14:41] <mrm> Сейчас при выгрузке рантайма OCaml иногда (один раз из 10) случаются разрушительные сбои и пока времени нет с этим разбираться
[21:15:20] <gds> а может не выгружать его?  типа, пусть он себе висит в фоне, жрать не просит, всё такое.
[21:15:25] <mrm> Судя по тому, что я прочитал в интернете, OCaml и DLL -- это не очень проторенная тропа.
[21:15:44] <mrm> А вот надо. В софтине есть механизм плагинов, который позволяет их динамически подгружать и выгружать
[21:16:41] <mrm> Плагин -- это DLL
[21:17:16] <gds> не обязательно это сразу честно делать.  ну или ввести зависимость типа "плагины такие-то -- требуют загруженной подсистемы такой-то".
[21:18:04] <mrm> Есть модуль на Хаскелле, который отлично загружается, выгружается и никак не течёт, а вот с Окамлом пока сплошная нервотрёпка
[21:18:23] <mrm> Ну и FFI заставляет работать ручками
[21:18:50] <mrm> Я там запросто мог накосячить
[21:18:51] <gds> есть генераторы FFI.  camlidl хоть и не очень, но в целом работает.  какой-то cowboy есть, что ли.  надо поискать.
[21:19:06] <gds> там накосячить очень просто, факт.  Это плохо.
[21:19:39] <mrm> Особенно напрягают всякие штуки, которые нужно использовать, чтобы не портить отношения с GC
[21:21:19] <mrm> Без плагинов можно так -- встроить эту прогу на OCaml прямо в ядро софтины (ей там, кстати, и место)
[21:21:39] <mrm> Это был бы лютый вин, но мне так вряд ли позволят :-)
[21:21:40] <gds> да хотя бы рантайм встроить, уже подспорье.
[21:22:27] <gds> или, может, загружать рантайм один раз, но не выгружать.  При попытке повторной загрузки использовать загруженный уже.
[21:22:48] <gds> хотя вот как с нативным кодом будет это вести себя -- не знаю.  С байткодом проканало бы точно.
[21:23:45] <mrm> Сам рантайм жрёт ничтожно мало (особенно если вручную сборку мусора запускать в нужный момент)
[21:25:26] <mrm> Если рантайм окамла вместе с моей прогой встроить прямо в софтину, то какой-нибудь программист через много лет прослезится от счастья, увидев это посреди джунглей из goto на Delphi7 :-)
[21:25:35] <mrm> Если OCaml к тому времени не будет окончательно забыт
[21:25:56] <gds> да.  дельфи забыть сложнее.  как и кобол, как и фокспро.
[21:26:13] <mrm> Наткнулся сегодня --
[21:26:16] <mrm> http://slexy.org/view/s20jwzNrFP
[21:26:42] <mrm> Искал там утечку :-)
[21:27:56] <mrm> Это не говнокод, но просто пример того, как на Делфи приходится делать очень простые вещи
[21:28:03] ftrvxmtrx вышел(а) из комнаты
[21:28:54] <mrm> В стандартной библиотеке почти никаких структур нет
[21:29:32] <gds> представляю себе ковыряние в этом коде.  аж не по себе становится.  отвык от ужасов.
[21:29:33] <mrm> Повсеместно используется TStringList, который является золотым граалем, заменяющим все возможные структуры
[21:29:37] <mrm> Это не ужас
[21:31:19] <gds> по мне так ужас.  В последнее время слабонервным стал.
[21:31:40] <mrm> Это вообще образцовый код :-)
[21:37:57] abiogenesis вошёл(а) в комнату
[21:42:50] shaggie вышел(а) из комнаты
[21:43:09] abiogenesis вышел(а) из комнаты
[22:24:17] <gds> komar: ты как-то грозился описать, почему оазис/кабал не ок.  Не свершилось, случаем?
[22:25:39] ftrvxmtrx вошёл(а) в комнату
[22:30:07] komar вышел(а) из комнаты: Replaced by new connection
[22:30:10] komar вошёл(а) в комнату
[22:30:25] komar вышел(а) из комнаты
[22:30:48] komar вошёл(а) в комнату
[22:34:34] mrm вышел(а) из комнаты
[22:34:50] mrm вошёл(а) в комнату
[22:37:20] ftrvxmtrx вышел(а) из комнаты
[22:37:31] ftrvxmtrx вошёл(а) в комнату
[22:43:15] ftrvxmtrx вышел(а) из комнаты
[22:44:45] ftrvxmtrx вошёл(а) в комнату
[22:49:30] ftrvxmtrx вышел(а) из комнаты
[23:03:02] ygrek вошёл(а) в комнату
[23:03:17] ygrek вышел(а) из комнаты
[23:03:44] ygrek вошёл(а) в комнату
[23:04:21] <ermine> а почему нет модулей Int и Float?
[23:04:43] <gds> у меня -- есть.
[23:04:58] <ermine> откуда?
[23:05:15] <ygrek> ниспослали голубями из инриа?
[23:05:17] <gds> из своих рук.
[23:05:39] <ermine> не стандартизованные, значит
[23:06:23] <ermine> .... остальное дописать по настроению
[23:08:47] <ermine> нучтож, придется потупить по уже потупленной дорожке
[23:09:16] ermine дочитала про хаскиль и теперь тупит в камле
[23:15:58] gds вышел(а) из комнаты
[23:18:36] mrm вышел(а) из комнаты
[23:34:17] shaggie вошёл(а) в комнату
[23:48:37] ftrvxmtrx вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!