Size: a a a

Конференция C++ Russia

2020 June 14

AV

Alexey Veselovsky in Конференция C++ Russia
Alexey Solomin
собственно потому спасением в 11 плюсах стали аллокаторы, которые потом подчистили от мусора в API в последующем
выкинуть malloc из Си - ничего не стоит. это библиотечная функция. выкинуть new (то есть чтобы была ошибка компиляции при попытке использовать не placement new) - сильно сложнее.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
то есть можно, но выкидывается он довольно криво
источник

AS

Alexey Solomin in Конференция C++ Russia
на счёт времени компиляции это конечно может стать проблемой, а может и не стать ибо там пусть и текстовые но адские шаблоны в ядре
источник

AV

Alexey Veselovsky in Конференция C++ Russia
как и исключения собственно
источник

AS

Alexey Solomin in Конференция C++ Russia
это да, в плюсах оно частично гвоздями прибито
источник

AV

Alexey Veselovsky in Конференция C++ Russia
я вот не знаю, является ли валидным языком, по стандарту, С++ у которого отпилили new, delete и исключения?
источник

AV

Alexey Veselovsky in Конференция C++ Russia
например в той же Аде - это решено на уровне стандарта. В С++ - нет
источник

AS

Alexey Solomin in Конференция C++ Russia
там кстати начинает выглядывать страшная MISRA которая может обругать за кучу)
источник

AS

Alexey Solomin in Конференция C++ Russia
Alexey Veselovsky
я вот не знаю, является ли валидным языком, по стандарту, С++ у которого отпилили new, delete и исключения?
new уже есть без исключений
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alexey Solomin
new уже есть без исключений
а есть не placement new но без кучи? 🙂
источник

AS

Alexey Solomin in Конференция C++ Russia
Alexey Veselovsky
а есть не placement new но без кучи? 🙂
вроде бы до сих пор нет :)
источник

AV

Alexey Veselovsky in Конференция C++ Russia
ну вот поэтому С++ в ядро втащить не так просто
источник

AV

Alexey Veselovsky in Конференция C++ Russia
источник

AV

Alexey Veselovsky in Конференция C++ Russia
источник

AV

Alexey Veselovsky in Конференция C++ Russia
втыкаешь прагму стандартную и всё. у тебя будет ошибкой компиляции попытка использовать то, что в этом профиле отсутствует. например аллокацию на куче
источник

AV

Alexey Veselovsky in Конференция C++ Russia
а еще можно использовать pragma Restrictions если стандартные профили тебя не устраивают и тебе нужен свой.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
другое дело, что начинать писать ядро линукса на Аде будет еще больнее чем на плюсах, она ж не надмножество Си (С++ тоже не надмножество, но пересечения довольно велики и мигрироват на плюсы можно сильно плавнее чем на любой другой язык, кроме, разве что ObjC)
источник

AS

Alexey Solomin in Конференция C++ Russia
это да конечно
источник

AV

Alexey Veselovsky in Конференция C++ Russia
те же проблемы что и с Адой будут и с каким-нибудь растом. точнее с растом проблем будет больше так как он llvm only language
источник

AS

Alexey Solomin in Конференция C++ Russia
вообще с кучей проблема не фатальная, ибо только в прерываниях её нельзя использовать, а то что в обычном режиме работает спокойно может
источник