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

GMT+4
[00:06:33] <gds> who cares
[00:30:46] Элемир вышел(а) из комнаты
[01:20:47] Typhon вышел(а) из комнаты
[02:24:07] john вышел(а) из комнаты
[02:25:05] john вошёл(а) в комнату
[03:12:18] sevenov вышел(а) из комнаты
[03:22:45] sevenov вошёл(а) в комнату
[05:37:21] john вышел(а) из комнаты
[06:21:41] john вошёл(а) в комнату
[07:59:15] <sceptic> SML-фаги
[08:29:05] gds вышел(а) из комнаты
[08:55:58] gds вошёл(а) в комнату
[09:50:00] ygrek вошёл(а) в комнату
[10:14:46] Typhon вошёл(а) в комнату
[10:27:30] f[x] вошёл(а) в комнату
[10:50:54] Mon вышел(а) из комнаты
[10:51:32] Mon вошёл(а) в комнату
[10:54:35] <f[x]> btw ermine: http://sourceforge.net/tracker/index.php?func=detail&aid=2433039&group_id=72276&atid=533973
[11:11:41] Typhon вышел(а) из комнаты
[11:14:05] Typhon вошёл(а) в комнату
[11:24:17] gds вышел(а) из комнаты
[11:29:35] Typhon вышел(а) из комнаты
[11:30:34] Typhon вошёл(а) в комнату
[11:41:50] animist вошёл(а) в комнату
[11:56:50] <f[x]> может ли сишный биндинг падать из-за Field(b,n) = v вместо Store_field(b,n,v) ?
[11:57:23] <f[x]> во втором случае вместо присваивания получается caml_modify
[11:57:57] Mon вышел(а) из комнаты
[11:58:06] Mon вошёл(а) в комнату
[11:59:28] <f[x]> в callback'ах из си всё ли равно в каком порядке делать leave_blocking_section и CAMLlocal ?
[12:01:37] <f[x]> хм, судя по тому что модифицируется глобальная цепочка caml_local_roots то надо сначала локать runtime
[12:03:33] gds вошёл(а) в комнату
[12:04:10] <f[x]> хм, а как же тогда return делать? отдельно заворачивать ещё придётся что-ли?
[12:07:36] <gds> f[x]: надо Store_field в основном. Про leave_blocking_section лучше посмотреть у процедур, которые аллоцируют и блокируются -- сходу select вспоминается.
[12:09:06] <f[x]> я гений
[12:09:11] <f[x]> пофиксил :)
[12:09:18] <gds> а что хоть фиксил?
[12:09:22] <f[x]> leave_blocking_section надо до CAMLlocal иначе бяка
[12:09:31] <f[x]> ocurl
[12:10:11] <f[x]> и enter_blocking_section после CAMLreturn
[12:10:14] <f[x]> в callback'ах
[12:11:32] <f[x]> такое впечатление что на камле с потоками пишут полтора человека
[12:11:41] <gds> интересно было бы знать, почему так надо.
[12:11:46] <f[x]> эта конкретная бага репродьюсится с полпинка
[12:11:54] <gds> какие потоки, такое и количество программистов...
[12:11:57] <f[x]> gds: модифицируется глобальная цепочка caml_local_roots
[12:12:00] <f[x]> :)
[12:12:25] <f[x]> ну для быстрого dirty мультплексинга - годятся
[12:12:32] <gds> годятся.
[12:12:50] <f[x]> CAMLlocal() изменяет глобальную переменную - т.е. должно быть атомарно
[12:12:58] <f[x]> т.е. внутри runtime lock'а
[12:14:27] <gds> enter -- им отпускают мутекс, leave -- им зохавывают мутекс, и нужно его зохавать до изменения caml_local_roots, верно?
[12:14:59] <f[x]> угу
[12:16:10] <f[x]> неудобство в том что CAMLreturn изменяет caml_local_roots и сразу делает return
[12:16:22] <f[x]> поэтому приходится выносить локинг отдельно
[12:18:01] <f[x]> и ещё подумалось - потенциальная трабла - если в многопоточной программе из колбэка вызвать ещё раз какую-то сишную функцию - local_roots может случится будут восстанавливаться в другом порядке чем изменялись..
[12:18:28] Mon вышел(а) из комнаты
[12:19:20] <ermine> f[x]: это ты поругать ocurl?
[12:20:18] <f[x]> типа того
[12:20:36] <ermine> да вот еще вникать в код лениво
[12:20:49] <f[x]> о, в cvs версии там уже store_field вместо field() =
[12:22:00] Mon вошёл(а) в комнату
[12:22:04] Mon вышел(а) из комнаты
[12:22:14] <ermine> у меня щас застой в камлокодинге - тяжко идет освоение camlp4 вглубь
[12:25:31] Mon вошёл(а) в комнату
[12:26:12] Mon вышел(а) из комнаты
[12:27:27] Mon вошёл(а) в комнату
[12:28:15] Mon вышел(а) из комнаты
[13:08:41] john вышел(а) из комнаты
[15:14:04] Typhon вышел(а) из комнаты
[15:19:59] Typhon вошёл(а) в комнату
[15:57:43] animist вышел(а) из комнаты
[15:58:01] animist вошёл(а) в комнату
[16:31:52] ygrek вышел(а) из комнаты
[16:33:53] sceptic вышел(а) из комнаты
[16:36:09] sceptic вошёл(а) в комнату
[16:37:01] sceptic вышел(а) из комнаты
[16:37:18] sceptic вошёл(а) в комнату
[16:49:13] <f[x]> ну пускай в камле треды есть и все понимают что они кривые и не используют, а в ghc никто даже и не понимает как там эти треды работают :) в haskell@ сейчас идёт жаркое расковыривание правды
[16:50:13] <gds> странное дело. forkIO, forkOS, все дела.
[16:50:43] <f[x]> хаскеллист детектед
[16:51:36] <gds> ненене, я наслышан.
единственный код на хаскеле, который писал, это был ответ на вопрос в haskell@ -- Just 5 какое-то.
[16:52:00] <gds> но врага нужно знать в летсо. пришлось кое-что посмотреть про него.
[16:52:45] <f[x]> вот и я тоже сижу в конфе врага :)
[16:54:01] <gds> шпион!
[16:55:20] <f[x]> yup
[17:21:39] Typhon вышел(а) из комнаты
[17:24:18] Typhon вошёл(а) в комнату
[17:27:20] <gds> кстати, неожиданный момент выяснился недавно. чем окамл лучше хаскеля для надёжного софта -- тем, что хаскелевая система типов слишком сложна для точной проверки полноты паттерн-матчинга. в простых случаях есть эвристики, но не в общем случае. и вроде бы это даже неразрешимая задача. то есть, в любой момент работы программы, скомпилированной без ошибок и предупреждений, мы можем увидеть гламурное Match_failure :)
[17:29:34] <f[x]> не знал что это из-за системы типов..
[17:31:51] Typhon вышел(а) из комнаты: Replaced by new connection
[17:32:05] Typhon вошёл(а) в комнату
[17:33:09] john вошёл(а) в комнату
[17:37:55] <gds> вспомнил, где я это читал -- вот тут: http://janestcapital.com/?q=node/64
[18:52:21] aloner2k вышел(а) из комнаты
[19:01:05] john вышел(а) из комнаты
[19:54:16] f[x] вышел(а) из комнаты
[21:23:23] animist вышел(а) из комнаты: Replaced by new connection
[21:26:25] ygrek вошёл(а) в комнату
[21:26:29] ygrek вышел(а) из комнаты
[21:26:44] ygrek вошёл(а) в комнату
[22:11:50] Typhon вышел(а) из комнаты
[22:31:03] sevenov вышел(а) из комнаты
[22:49:22] sevenov вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!