Entry tags:
CheriBSD
Вам надоели указатели в Си/Си++? Тогда CHERI идёт к вам!
CHERI расшифровывается как "Capability Hardware Enhanced RISC Instructions". Это исследовательский проект в Кембридже по замене указателей на более безопасные capabilities. Не знаю как это по русски. В отличие от указателей capabilities содержат также границы и уровень доступа. ARM сделал экспериментальный процессор Morello с поддержкой capabilities.
Архитектура хардвера описана в статье: "CheriABI: Enforcing Valid Pointer Provenance and Minimizing Pointer Privilege in the POSIX C Run-time Environment" (PDF).
Особенности языка Си/Си++ на такой архитектуре приведены в статье: "CHERI C/C++ Programming Guide" (PDF).
Развивается проект CheriBSD: перенос операционной системы FreeBSD на платформу CHERI.
На видео показана работа графического сервера Wayland и демо OpenGL на процессоре Morello под операционной системой CheriBSD.
Подобных проектов в истории было много. Кто помнит, советская ЭВМ Эльбрус разрабатывалась с аналогичной целью, защититься от программных ошибок адресации памяти. Но во всех таких проектах софт приходилось писать с нуля из-за полной несовместимости с существующими методами программирования. А здесь 99% софта переносится без проблем.
CHERI расшифровывается как "Capability Hardware Enhanced RISC Instructions". Это исследовательский проект в Кембридже по замене указателей на более безопасные capabilities. Не знаю как это по русски. В отличие от указателей capabilities содержат также границы и уровень доступа. ARM сделал экспериментальный процессор Morello с поддержкой capabilities.
Архитектура хардвера описана в статье: "CheriABI: Enforcing Valid Pointer Provenance and Minimizing Pointer Privilege in the POSIX C Run-time Environment" (PDF).
Особенности языка Си/Си++ на такой архитектуре приведены в статье: "CHERI C/C++ Programming Guide" (PDF).
Развивается проект CheriBSD: перенос операционной системы FreeBSD на платформу CHERI.
На видео показана работа графического сервера Wayland и демо OpenGL на процессоре Morello под операционной системой CheriBSD.
Подобных проектов в истории было много. Кто помнит, советская ЭВМ Эльбрус разрабатывалась с аналогичной целью, защититься от программных ошибок адресации памяти. Но во всех таких проектах софт приходилось писать с нуля из-за полной несовместимости с существующими методами программирования. А здесь 99% софта переносится без проблем.
no subject
no subject
Пробую зрозуміти, як би воно все виглядало, якби уже тоді замість poiner'ів існували оті вашіі capabilities.
no subject
no subject
no subject
В смысле приложил руку к Морелло, не CheriBSD.
no subject
no subject
no subject
Надо же. А Раст туда не лучше сядет? Если сядет.
no subject
no subject
Но все-таки немного разноплановые вещи.
no subject
Ох тяжелая там работа...
no subject
На мой взгляд, проблема как раз в методах программирования. Ошибки всё равно придётся обрабатывать.
no subject
Эта штуковина будет предсказуемо крашиться при обращении не в ту память что полезно для безопасности и ошибка доступа будет видна сразу, а не как попезет.
no subject
no subject
nz
Звучит интересно, но не совсем понятна целевая аудитория проекта.
Это борьба с запихиванием указателей в int/long c потерей старших бит? Полезно, наверное, но этими детскими болезнями вроде бы все уже переболели при переходе с 32 на 64 бита лет 15 назад.
Bounds checking из-под палки? Вой на болотах будет оглушительным.
Пока указатель не обнулишь, память не освободится? Вой на болотах будет оглушительным, переписывать придется много. Забавно, что это уже почти GC, но не GC, т.к. дереференсить тоже нельзя.
Наверное, все это помогло бы заткнуть основные дырки в C-коде, но там же публика привыкла экономить на спичках, а тут 100% оверхеда в каждом указателе, bounds checking, карантинная память и обработка всей этой роскоши в рантайме. Добрый вечер, мы вам принесли неотключаемый ASAN. У меня есть сомнения, что это зайдет.
В C++ голые указатели и манипуляции с ними - вообще фу-фу-фу уже давно. Постоянный оверхед в качестве платы за решение не слишком насущных проблем тоже вряд ли будет принят с ликованием.