пятница, 13 августа 2010 г.

Charles Forsyth представит доклад о текущем состоянии Inferno на IWP9 2010

Charles Forsyth в качестве представителя компании Vita Nuova выступит на конференции IWP9 2010 с отчетом о текущем положении дел в компании и проектах, связанных с Inferno и языком Limbo. Источник.

7 комментариев:

  1. я раскажу за Чарли:

    дела хреновы.

    Основные проблемы на мой скромный взгляд:

    * уже нашел несколько путей как сделать crash в системе. начиная от использования мыши, заканчивайя исполнением лимбо-кода. Причем якобы типы проверяются как на этапе исполнения так и на компиляции. Не до конца проверяются. Я их специально не искал, сами получались.

    * очень дерьмовый memory allocator, в одном issue от 2008(?) года, Чарли говорит, что он делает новый. Текущий например не освобождает полностью отработанные куски. Ни когда не знаешь когда закончиться память.

    и отсюда в том числе вытекает:

    * невозможность использования массивов для динамичного выделения памяти. А это единственный способ выделения(?). Пока работает программа не будет выполнен free() отработанной памяти, что бы сделать free() надо завершить программу, потому что GC держит ссылки и т.д.

    * так же кастрированными указателями невозможно писать эффективные АДТ. (АДТ - в общем смысле, а не те которые в лимбо)

    В общем, для простых вещей подходит. Сложные же - язык С и модулями, тогда вопрос зачем нужен Лимбо и весь этот огород. Файловые сервера? Ну наверно, но опять же там есть подводные камни.

    ОтветитьУдалить
  2. Да, вы правы во всем, стабильность и работа с памятью это две огромные беды Inferno, которые обсуждались уже не один раз. Причем первая находится где-то на грани катастрофы.

    ОтветитьУдалить
  3. я сильно погоричился. "вызвать" free() можно.
    достаточно заново определить размер массива, например равным 0.

    +

    так же в "огород" я забыл включить одну из главных фич лимбо - каналы XD

    ОтветитьУдалить
  4. вообще-то в Limbo можно освободить память просто присвоив переменной значение nil (будь это хоть массив, хоть адт, хоть int)...

    ОтветитьУдалить
  5. На массивах видимо разницы нет между nil и присваиванием чего либо. Вот код http://codepad.org/2nBJkyWQ

    переопределаю 30 раз массив (#1) в том числе с nil (#3), по тому, что вылезает (#4) после нила ничего не удаляется.

    теперь переопределаю миллионы раз (#2) с закоментированными строками (##1,3,4). И тут вижу что уже ничего не сохранилось, ни в q[18100200], ни в q[8].

    Т.е. тут 2 вывода:
    * использовать переопределение массива как realloc() нельзя.
    * ну и то что разницы нет между переопределением и nil на практике.

    вроде так.

    ОтветитьУдалить
  6. Мои извинения, а все таки как "положение дел в компании и проектах, связанных с Inferno и языком Limbo"?

    ОтветитьУдалить
  7. Не сказал ничего Форсайт, видимо нечего говорить :)

    ОтветитьУдалить