Одной из основные проблемы, возникшие при разработке ядра Linux в течение длительного времени, это идея найти идеального кандидата для смены языка программирования «C» для более современного, и до недавнего времени с появлением Rust эта идея не прекращалась.
С первым предварительным просмотром Rust на линукс 6.1, Поднимаю настроение большой части разработчиков из ядра, и Джонатан Корбет отмечает, что «в ядре по-прежнему будет недостаточно Rust, чтобы делать что-то интересное», включение этого языка вновь разожгло дебаты о необходимости отказа от языка C в пользу Rust с точки зрения системного программирования. Этот вопрос разделяет сообщество разработчиков.
Асахи Линья взял на себя задачу разработки драйвера графического процессора (GPU) для Mac M1 на Rust.
О вашем сравнении языков Rust и C упоминает, что:
«Нет абсолютно никаких шансов, что вам не придется иметь дело с управлением одновременным доступом, попытками доступа к областям памяти после выпуска и многими другими проблемами, если вы напишете это на C. Все проблемы параллелизма исчезнут с Rust! Память освобождается при необходимости! Как только вы узнаете, как заставить Rust работать на вас, я думаю, это поможет вам писать достойный код, даже если язык не обещает безопасности. Это действительно волшебно! »
«Есть много споров о том, полезен ли Rust в ядре… по моему опыту, он гораздо полезнее, чем я мог себе представить!» «, добавляет она.
Ваши комментарии повторяются из компиляции технических причин, которые, вероятно, оправдать отказ от языка C в пользу Rust. На самом деле 15,9% из 2288 уязвимостей, затронувших ядро Linux за 20 лет (цифры из словаря Common Vulnerabilities and Exposure (CVE)) связаны с недостатками языка C, проблемами, связанными с управлением памятью: переполнением буфера , не освобожденные выделения, доступ к недопустимым или освобожденным областям памяти и т.д.
Кроме того, основные мейнтейнеры ядра Linux знакомы с языком Си, возраст которого уже считается 3-м веком. Подрастает новое поколение сопровождающих, возрастная группа которых находится в тридцатилетнем возрасте, и, таким образом, сложность поиска сопровождающих для ядра Linux, вероятно, возрастет, если его разработка продолжится на языке C. Причины, по которым Линус Торвальдс открыл дверь в ядро разработка на Русте.
К вопросу о возможности отказа от языка Си, создатель языка C перечисляет ряд причин, по которым инициативы могут потерпеть неудачу которые идут в этом направлении:
Цепочка инструментов языка VS
Язык C — это не только сам язык, но и все средства разработки, разработанные для этого языка.
Хотите провести статический анализ исходного кода? — Много людей работает над этим для C. Инструменты для обнаружения утечек памяти, гонок данных и других ошибок? Их много, даже если ваш язык лучше оснащен.
Если вы хотите ориентироваться на малоизвестную платформу, скорее всего, вы используете C. Статус C как лингва-франка вычислительной техники сегодня делает его достойным написания инструментов, и многие инструменты написаны.
Если у кого-то есть рабочий набор инструментов:
зачем рисковать менять язык? «Лучший C» должен генерировать большую дополнительную производительность, чтобы мотивировать время, потраченное на настройку новой цепочки инструментов. Возможно ли это, еще предстоит выяснить.
Неопределенность нового языка
Прежде чем язык достигнет зрелости, он, вероятно, содержит ошибки. и значительно изменен для решения семантических проблем языка. И соответствует ли язык рекламе? Он может предложить что-то вроде «исключительного времени компиляции» или «быстрее, чем C», но эти цели становятся труднодостижимыми, когда язык добавляет
А ремонтники? Конечно, вы можете разветвить язык с открытым исходным кодом, но я сомневаюсь, что многие компании будут заинтересованы в использовании языка, который им придется оставить позже. Ставка на новый язык — большой риск.
Тот факт, что язык может быть недостаточно хорош
Устраняет ли язык настоящие болевые точки C?
Оказывается, что Люди не всегда согласны с тем, в чем заключаются слабые стороны C. Выделение памяти, обработка массивов и строк часто сложны, но с правильными библиотеками и хорошей стратегией использования памяти их можно свести к минимуму.
Разве язык не решает проблемы, которые на самом деле не волнуют продвинутых пользователей? Если это так, его фактическая стоимость может быть намного меньше, чем ожидалось.
И что еще хуже, что, если в языке отсутствуют важные функции, присутствующие в C? Функции, на которые полагаются продвинутые программисты C? Этот риск возрастает, если разработчик языка мало использовал C, а исходил из C++, Java и т. д.
Нехватка опытных разработчиков для нового языка
Новый язык, естественно, будет иметь гораздо меньший пул опытных разработчиков. Для любой средней или крупной компании это большая проблема. Чем больше разработчиков доступно для компании, тем лучше для нее.
Кроме того, если у компании есть опыт найма разработчиков на C, они не знают, как набирать для этого нового языка.
Наконец, если вам интересно узнать об этом больше, вы можете проконсультироваться с подробности по следующей ссылке.