The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз ядра Linux 6.1"
Отправлено Аноним, 13-Дек-22 19:58 
> Как я понял, идея в том, чтобы переписать рантайм без libc

Мимо. Нет никакого рантайма. Про рантайм начали говорить опеннетовские сишники, и прекратили говорить примерно тогда, когда им объяснили что если _это_ рантайм, то в си _этого_ рантайма больше, чем в любом расте.

С тех пор, они если и поднимают разговор о рантайме, то как минимум втроём, и так чтобы у каждого из них было бы своё собственное уникальное мнение о том, что такое рантайм.

У раста есть огромный компайлтайм. Ооо, его уменьшили, когда добавили параметризовать типы числами, а до этого макросами генерили имплементации для всех размеров слайсов с 0 до 32. 33 имплементации. И это только слайсы. Уж не знаю, как они там с &str выкручивались, также наверное? А diesel, ты не пробовал его компилять под таблички с 64+ столбцами? Я имею в виду до того, как параметризация значениями стала доступной. Сейчас стало лучше, но я заверяю тебя, в компайл тайме там очень много чего есть. А вот в рантайме только то, что использовал.

> по максимуму абстрагировать там же весь unsafe

Уже теплее. Но недостаточно точно.

Демаркация safe/unsafe -- это не обязательно абстракция. Абстракции могут быть накладны. C'шные строки, например, могут выйти боком, если писать на расте и этих строк много, потому что раст прежде чем работать со строками хочет убедиться, что они utf8 строки, и он не парится насчёт терминирующего нуля. Преобразовывать туда-сюда строки то ещё удовольствие.

Safe-обёртки над C нужны не для того, чтобы создать новые абстракции, а чтобы записать C'шные абстракции на расте, включая сюда и всё то знание об этих абстракциях, которые в C'шном варианте существует только в документации к API или даже только в коллективном бессознательном. Все те гласные и негласные правила о том, как API можно или нельзя использовать, должны быть описаны в самом API, чтобы попытка использовать его неправильно кончалась бы ошибкой компиляции. Например, memcpy нельзя вызывать на двух пересекающихся областях памяти, так? Но это никак не отражено в заголовке memcpy, об этом только в документации к memcpy можно вычитать. В расте это недопустимо: неправильное использование memcpy может привести к повреждению памяти, значит memcpy должен иметь такой заголовок, чтобы его можно было бы использовать только правильно.

На этом бы всё может и кончилось бы, но ядро имеет довольно вычурные правила когда и что можно, а когда и что нельзя, и тут собственно и начинается самое интересное. С преогромным любопытством я наблюдаю, как растоманы выкручиваются, и сейчас я думаю, стоит ли начинать делать ставки на то, что в дополнение к safe/unsafe демаркации, они добавят что-нибудь типа environment's, с возможностью описывать правила, как функции объявленные в одном environment можно вызывать из другого environment'а. Наверное пока не стоит делать ставок, потому что я не додумал мысль до конца, и не уверен что она удачная.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру