LINUX.ORG.RU

В ядро принесли RAII

 ,


0

2

Теперь, мальчики и девочки, в ядре можно писать вот такое вот:

scoped_guard(raw_spinlock_irqsave, &foo->lock) {
  [...]
}

и вот такое:

struct device *dev __free(put_device) = kzalloc(sizeof(*dev), GFP_KERNEL);

И никаких больше протекших ресурсов!

Ссылка на merge: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04f2933d375e3f90d4435b7b518d3065afd1fa25



Последнее исправление: cumvillain (всего исправлений: 1)

static inline class_##_name##t class##_name##_constructor(_type *l)

Любая большая программа на си содержит в себе кривую и ухудшенную версию ООП из c++. Почему бы им просто не перейти на кресты и не страдать ерундой?

ox55ff ★★★★★
()
Ответ на: комментарий от alex1101

Мне не нужны аргументы в ядре, мне нужно, чтобы ты принёс их сюда.

А мне не нужно :D

cumvillain
() автор топика
Ответ на: комментарий от alex1101

Линус писал:

In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C.

Оставим огрехи в английском, в конце концов, и так всё понятно. Но можно же отключить RTTI/исключения, а RAII останется на месте. И вот, в 2023г. прилетает патч с костылями к сишке, которые похожи на RTTI…

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от seiken

Перевести все ядро на плюсцы это долго и больно. Проще перевести его на Rust, потихоньку точечно улучшая сишные части.

cumvillain
() автор топика

И никаких больше протекших ресурсов!

Надеюсь, это ирония. Хотя небольшую часть утечек должно предотвратить, да и код чище станет.

unsigned ★★★★
()
Ответ на: комментарий от cumvillain

Перевести все ядро на плюсцы это долго и больно. Проще перевести его на Rust

А чем, кстати, проще? В русте нет перегрузки функций?

Bad_ptr ★★★★★
()
Ответ на: комментарий от dictator2000

Какая может быть культура, если стиль разработки там «базар»?

Там есть стиль кодирования, общепринятые концепции и мейнтейнеры.

cumvillain
() автор топика
Ответ на: комментарий от Bad_ptr

А чем, кстати, проще? В русте нет перегрузки функций?

С плюсов все равно придется на Rust переводить, так что проще это все один раз сделать.

cumvillain
() автор топика
Ответ на: комментарий от seiken

Это троллинг.

Нет, это вполне себе понизит количество дурацких историй «добавили goto и забыли про лок». Это частая проблема.

cumvillain
() автор топика
Ответ на: комментарий от seiken

Пока что мы видим, что сишку обвешивают костылями.

Ты видишь. Я вижу как с каждым релизом приносят все больше и больше растовой инфраструктуры.

cumvillain
() автор топика
Ответ на: комментарий от seiken

Патчи в ядро - не троллинг, и таки да, понизит. Форма твоего поста троллинг.

Просто ты окончательно двинулся и тебе везде мерещится троллинг.

cumvillain
() автор топика

И никаких больше протекших ресурсов!

Ну вообще в драйверах устройств и раньше уже были счётчики ссылок и всякие devm_ функции для автоматического освобождения.

Но более общий способ, а не завязанный только на устройства, конечно полезен.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Не, всякие kref_get() и kref_put() тебе нужно писать руками в четко обозначенных местах. Тут цомпилятор плюс-минус делает это за тебя.

cumvillain
() автор топика

Тем временем 6.5 вышло чуть ли не сутки назад, а даже мини-новости до сих пор нет.

alegz ★★★★★
()
Ответ на: комментарий от hateyoufeel

Вариант люнекса поверх микроядра L4. Прикинь, можно запустить 10 люнексов в юзерспейсе на одной системе.

Кроме авторов кто этим пользуется?

cumvillain
() автор топика
Ответ на: комментарий от alegz

Лор это юмористический сайт, за новостями лучше идти в другие места.

cumvillain
() автор топика
Ответ на: комментарий от seiken

сишку обвешивают костылями.

Учитывая, что исходно в сишкие нифига нет, чтобы на ней писать нужно её немного обвесить. Можно это обвес и костылями назвать.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Учитывая, что исходно в сишкие нифига нет, чтобы на ней писать нужно её немного обвесить. Можно это обвес и костылями назвать.

Как это ничего нет? В сишке есть UB.

cumvillain
() автор топика
Ответ на: комментарий от cumvillain

Вариант люнекса поверх микроядра L4. Прикинь, можно запустить 10 люнексов в юзерспейсе на одной системе.

Кроме авторов кто этим пользуется?

Ага. Сходу, чтобы под тот же seL4 дрова не писать. Запускаешь seL4, внутри пачку лялексов, каждый только с одним драйвером и интерфейсом наружу, и всё ок. Если лялекс протечёт, то всё ограничится тащемта только этим экземпляром. Офигенно? Офигенно!

hateyoufeel ★★★★★
()
Ответ на: комментарий от cumvillain

Учитывая, что исходно в сишкие нифига нет, чтобы на ней писать нужно её немного обвесить. Можно это обвес и костылями назвать.

Как это ничего нет? В сишке есть UB.

Не. Изначально в сишке и его не было. Его только в ANSI C добавили, вроде как, т.е. спустя почти 20 лет.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Не. Изначально в сишке и его не было. Его только в ANSI C добавили, вроде как, т.е. спустя почти 20 лет.

Так это первый стандарт :D

cumvillain
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.