![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вам надоели указатели в Си/Си++? Тогда 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
Date: 2022-06-17 19:20 (UTC)no subject
Date: 2022-06-17 19:22 (UTC)Пробую зрозуміти, як би воно все виглядало, якби уже тоді замість poiner'ів існували оті вашіі capabilities.
no subject
Date: 2022-06-17 19:32 (UTC)no subject
Date: 2022-06-17 19:39 (UTC)no subject
Date: 2022-06-17 22:00 (UTC)В смысле приложил руку к Морелло, не CheriBSD.
no subject
Date: 2022-06-17 20:01 (UTC)no subject
Date: 2022-06-17 20:14 (UTC)no subject
Date: 2022-06-17 20:08 (UTC)Надо же. А Раст туда не лучше сядет? Если сядет.
no subject
Date: 2022-06-17 20:12 (UTC)no subject
Date: 2022-06-21 20:52 (UTC)Но все-таки немного разноплановые вещи.
no subject
Date: 2022-06-21 21:44 (UTC)Ох тяжелая там работа...
no subject
Date: 2022-06-17 21:19 (UTC)На мой взгляд, проблема как раз в методах программирования. Ошибки всё равно придётся обрабатывать.
no subject
Date: 2022-06-17 22:02 (UTC)Эта штуковина будет предсказуемо крашиться при обращении не в ту память что полезно для безопасности и ошибка доступа будет видна сразу, а не как попезет.
no subject
Date: 2022-06-18 05:06 (UTC)no subject
Date: 2022-06-21 20:54 (UTC)nz
Date: 2022-06-28 12:34 (UTC)Звучит интересно, но не совсем понятна целевая аудитория проекта.
Это борьба с запихиванием указателей в int/long c потерей старших бит? Полезно, наверное, но этими детскими болезнями вроде бы все уже переболели при переходе с 32 на 64 бита лет 15 назад.
Bounds checking из-под палки? Вой на болотах будет оглушительным.
Пока указатель не обнулишь, память не освободится? Вой на болотах будет оглушительным, переписывать придется много. Забавно, что это уже почти GC, но не GC, т.к. дереференсить тоже нельзя.
Наверное, все это помогло бы заткнуть основные дырки в C-коде, но там же публика привыкла экономить на спичках, а тут 100% оверхеда в каждом указателе, bounds checking, карантинная память и обработка всей этой роскоши в рантайме. Добрый вечер, мы вам принесли неотключаемый ASAN. У меня есть сомнения, что это зайдет.
В C++ голые указатели и манипуляции с ними - вообще фу-фу-фу уже давно. Постоянный оверхед в качестве платы за решение не слишком насущных проблем тоже вряд ли будет принят с ликованием.