LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Типобезопасность для типизированных массивов есть. Для нетипизированных - нет. Для максимальной эффективности пишешь (safety 0)(speed 3) и получаешь при ошибке типа undefined consequences. Компилятор НЕ сможет тебя предупредить о многих проблемах, т.е. это где-то как Си с массивными void *. Мы с Монком работаем над патчем компилятора, чтобы улучшить ситуацию, но вряд ли этот патч будет кому-то интересен, поэтому он будет в Яре и может быть в виде библиотечки.

Если пишешь safety > 0, то SBCL выкинет те проверки типов, которые он сможет доказать статически, а остальные оставит в рантайме. В рамках одной функции можно смешивать разные уровни safety, так что можно управлять компромиссами.

В целом SBCL медленнее Си раза в три согласно computer benchmark game, что на мой взгляд весьма недурно. Если использовать генерацию кода в рантайме, которая в computer benchmark game не приветствуется, результаты лиспа будут лучше.

Исправление den73, :

Типобезопасность для типизированных массивов есть. Для нетипизированных - нет. Для максимальной эффективности пишешь (safety 0)(speed 3) и получаешь при ошибке типа undefined consequences. Если пишешь большее safety, то умный SBCL выкинет те проверки типов, которые он сможет доказать статически, а остальные оставит в рантайме. В рамках одной функции можно смешивать разные уровни safety.

Исходная версия den73, :

Типобезопасность для типизированных массивов есть. Для нетипизированных - нет. Для максимальной эффективности пишешь (safety 0)(speed 3) и получаешь при ошибке типа undefined consequences. Если пишешь большее safety, то умный SBCL выкинет те проверки типов, которые он сможет доказать статически, а остальные оставит в рантайме.