Charles Forsyth представит доклад о текущем состоянии Inferno на IWP9 2010
Charles Forsyth в качестве представителя компании Vita Nuova выступит на конференции IWP9 2010 с отчетом о текущем положении дел в компании и проектах, связанных с Inferno и языком Limbo. Источник.
* уже нашел несколько путей как сделать crash в системе. начиная от использования мыши, заканчивайя исполнением лимбо-кода. Причем якобы типы проверяются как на этапе исполнения так и на компиляции. Не до конца проверяются. Я их специально не искал, сами получались.
* очень дерьмовый memory allocator, в одном issue от 2008(?) года, Чарли говорит, что он делает новый. Текущий например не освобождает полностью отработанные куски. Ни когда не знаешь когда закончиться память.
и отсюда в том числе вытекает:
* невозможность использования массивов для динамичного выделения памяти. А это единственный способ выделения(?). Пока работает программа не будет выполнен free() отработанной памяти, что бы сделать free() надо завершить программу, потому что GC держит ссылки и т.д.
* так же кастрированными указателями невозможно писать эффективные АДТ. (АДТ - в общем смысле, а не те которые в лимбо)
В общем, для простых вещей подходит. Сложные же - язык С и модулями, тогда вопрос зачем нужен Лимбо и весь этот огород. Файловые сервера? Ну наверно, но опять же там есть подводные камни.
Да, вы правы во всем, стабильность и работа с памятью это две огромные беды Inferno, которые обсуждались уже не один раз. Причем первая находится где-то на грани катастрофы.
я раскажу за Чарли:
ОтветитьУдалитьдела хреновы.
Основные проблемы на мой скромный взгляд:
* уже нашел несколько путей как сделать crash в системе. начиная от использования мыши, заканчивайя исполнением лимбо-кода. Причем якобы типы проверяются как на этапе исполнения так и на компиляции. Не до конца проверяются. Я их специально не искал, сами получались.
* очень дерьмовый memory allocator, в одном issue от 2008(?) года, Чарли говорит, что он делает новый. Текущий например не освобождает полностью отработанные куски. Ни когда не знаешь когда закончиться память.
и отсюда в том числе вытекает:
* невозможность использования массивов для динамичного выделения памяти. А это единственный способ выделения(?). Пока работает программа не будет выполнен free() отработанной памяти, что бы сделать free() надо завершить программу, потому что GC держит ссылки и т.д.
* так же кастрированными указателями невозможно писать эффективные АДТ. (АДТ - в общем смысле, а не те которые в лимбо)
В общем, для простых вещей подходит. Сложные же - язык С и модулями, тогда вопрос зачем нужен Лимбо и весь этот огород. Файловые сервера? Ну наверно, но опять же там есть подводные камни.
Да, вы правы во всем, стабильность и работа с памятью это две огромные беды Inferno, которые обсуждались уже не один раз. Причем первая находится где-то на грани катастрофы.
ОтветитьУдалитья сильно погоричился. "вызвать" free() можно.
ОтветитьУдалитьдостаточно заново определить размер массива, например равным 0.
+
так же в "огород" я забыл включить одну из главных фич лимбо - каналы XD
вообще-то в Limbo можно освободить память просто присвоив переменной значение nil (будь это хоть массив, хоть адт, хоть int)...
ОтветитьУдалитьНа массивах видимо разницы нет между nil и присваиванием чего либо. Вот код http://codepad.org/2nBJkyWQ
ОтветитьУдалитьпереопределаю 30 раз массив (#1) в том числе с nil (#3), по тому, что вылезает (#4) после нила ничего не удаляется.
теперь переопределаю миллионы раз (#2) с закоментированными строками (##1,3,4). И тут вижу что уже ничего не сохранилось, ни в q[18100200], ни в q[8].
Т.е. тут 2 вывода:
* использовать переопределение массива как realloc() нельзя.
* ну и то что разницы нет между переопределением и nil на практике.
вроде так.
Мои извинения, а все таки как "положение дел в компании и проектах, связанных с Inferno и языком Limbo"?
ОтветитьУдалитьНе сказал ничего Форсайт, видимо нечего говорить :)
ОтветитьУдалить