M
MercyNews
Home
Back
Chromium запретил определенные функции C++ в кодовой базе
Технологии

Chromium запретил определенные функции C++ в кодовой базе

Hacker News7h ago
3 мин чтения
📋

Ключевые факты

  • Проект Chromium официально запретил определенные функции C++ для поддержания стабильности и безопасности кодовой базы в рамках своей огромной браузерной экосистемы.
  • Эти ограничения подробно описаны в официальном стилевом руководстве проекта, которое служит окончательной ссылкой для всех участников.
  • Среди запрещенных функций — std::make_unique, std::make_shared и std::regex из-за проблем с совместимостью и производительностью.
  • Проект предоставляет альтернативы, специфичные для Chromium, такие как base::MakeUnique, чтобы обеспечить согласованное поведение на всех поддерживаемых платформах.
  • Процессы ревью кода теперь включают автоматические проверки, которые помечают запрещенные функции до того, как код будет объединен с основной веткой.
  • Стилевое руководство — это живой документ, который регулярно обновляется по мере развития стандартов C++ и улучшения поддержки компиляторов.

Эволюция кодовой базы

Проект Chromium установил всеобъемлющие руководящие принципы, запрещающие определенные функции C++ для поддержания стабильности в рамках своей огромной кодовой базы. Эти ограничения отражают приверженность проекта долгосрочной сопровождаемости и безопасности.

Будучи одним из крупнейших мировых проектов с открытым исходным кодом, решения Chromium влияют на миллионы разработчиков и пользователей по всему миру. Стилевое руководство проекта теперь явно запрещает определенные современные дополнения C++, которые могут привести к нестабильности или уязвимостям безопасности.

К запрещенным функциям относятся несколько современных дополнений C++, которые могут скомпрометировать стандарты стабильности и безопасности проекта. Это решение подчеркивает фокус проекта на качестве кода и кроссплатформенной совместимости.

Список запрещенных функций

Проект Chromium определил несколько функций C++, которые теперь запрещены в кодовой базе. Эти ограничения подробно описаны в официальном стилевом руководстве проекта, которое служит окончательной ссылкой для участников.

Среди запрещенных функций:

  • std::make_unique — запрещена из-за проблем с совместимостью
  • std::make_shared — ограничена по аналогичным причинам совместимости
  • std::shared_ptr с массивами — не разрешена из-за несогласованности реализации
  • std::atomic с определенными типами — ограничена для предотвращения неопределенного поведения
  • std::regex — запрещена из-за проблем с производительностью и совместимостью

Проект также ограничивает использование std::filesystem и std::optional в определенных контекстах. Эти функции, хотя и являются частью современных стандартов C++, признаны неподходящими для конкретных требований Chromium.

Стилевое руководство подчеркивает, что эти ограничения распространяются на всю кодовую базу, включая все подпроекты и зависимости. Участники должны соблюдать эти руководящие принципы при отправке кода на ревью.

Обоснование ограничений

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

Соображения безопасности также играют решающую роль в этих ограничениях. Некоторые современные функции C++ могут привести к появлению незаметных ошибок или неопределенного поведения, которыми можно воспользоваться. Сопровождающие проекта отдают приоритет безопасности и надежности перед удобством.

Производительность — еще один критический фактор. Хотя некоторые современные функции C++ предлагают удобство, они могут не соответствовать требованиям Chromium к производительности. Масштаб проекта означает, что даже незначительные регрессии производительности могут иметь значительное влияние.

Команда Chromium обнаружила, что определенные функции, несмотря на то, что являются частью стандарта C++, имеют несогласованные реализации на разных платформах. Эта несогласованность может привести к неожиданному поведению и усложнить отладку.

Влияние на разработку

Эти ограничения значительно влияют на то, как разработчики пишут код для Chromium. Участники должны использовать альтернативные подходы, соответствующие руководящим принципам проекта, при этом достигая той же функциональности.

Например, вместо использования std::make_unique разработчики должны использовать base::MakeUnique или аналогичные альтернативы, специфичные для Chromium. Эти альтернативы тщательно разработаны для согласованной работы на всех поддерживаемых платформах.

Проект предоставляет подробную документацию и примеры для каждой ограниченной функции, помогая разработчикам понять одобренные альтернативы. Эта документация регулярно обновляется по мере развития проекта.

Процессы ревью кода были улучшены для автоматического выявления нарушений этих ограничений. Система сборки Chromium включает проверки, которые помечают запрещенные функции до того, как код будет объединен с основной веткой.

Будущие соображения

Проект Chromium непрерывно оценивает свои стандарты кодирования по мере развития C++. Хотя определенные функции в настоящее время запрещены, проект остается открытым для пересмотра этих решений по мере улучшения поддержки компиляторов и созревания стандартов.

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

По мере роста проекта и появления новых стандартов C++ в список запрещенных функций могут быть добавлены дополнительные функции, в то время как другие могут стать допустимыми при определенных условиях. Этот динамический подход гарантирует, что Chromium остается на переднем крае лучших практик программной инженерии.

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

Ключевые выводы

Решение проекта Chromium запретить определенные функции C++ представляет собой взвешенный подход к управлению огромной, сложной кодовой базой. Эти ограничения отдают приоритет стабильности, безопасности и сопровождаемости перед удобством.

Разработчики, работающие с Chromium, должны адаптироваться к этим руководящим принципам, используя одобренные альтернативы, обеспечивающие согласованное поведение на платформах. Хотя это может потребовать дополнительных усилий, преимущества в качестве кода и надежности значительны.

Эволюционирующие стандарты проекта отражают динамичный характер разработки программного обеспечения, где лучшие практики постоянно улучшаются, чтобы соответствовать новым вызовам и возможностям.

Часто задаваемые вопросы

Какие функции C++ запретил Chromium?

Chromium запретил несколько современных функций C++, включая std::make_unique, std::make_shared, std::shared_ptr с массивами, std::atomic с определенными типами, std::regex, std::filesystem и std::optional в определенных контекстах. Эти ограничения подробно описаны в официальном стилевом руководстве проекта.

Почему Chromium запретил эти функции?

Ограничения проистекают из проблем совместимости, соображений безопасности и требований к производительности. Некоторые функции имеют несогласованные реализации на разных платформах, в то время как другие могут привести к появлению незаметных ошибок или неопределенного поведения, которыми можно воспользоваться.

Какие альтернативы используют разработчики?

Chromium предоставляет специфичные альтернативы, такие как base::MakeUnique вместо std::make_unique. Эти альтернативы тщательно разработаны для согласованной работы на всех поддерживаемых платформах и соответствуют требованиям проекта к производительности.

Как эти ограничения обеспечиваются?

Система сборки Chromium включает автоматические проверки, которые помечают запрещенные функции во время ревью кода. Это гарантирует, что нарушения будут выявлены до того, как код будет объединен с основной веткой, поддерживая целостность кодовой базы.

Continue scrolling for more

ИИ преобразует математические исследования и доказательства
Technology

ИИ преобразует математические исследования и доказательства

Искусственный интеллект перешел из статуса непостоянного обещания в реальность, преобразуя математические исследования. Модели машинного обучения теперь генерируют оригинальные теоремы.

Just now
4 min
367
Read Article
Crime

Caroline Ellison Former Alameda CEO Released from Prison After 440 Days

Article URL: https://www.sec.gov/enforcement-litigation/litigation-releases/lr-26450 Comments URL: https://news.ycombinator.com/item?id=46740644 Points: 11 # Comments: 0

42m
3 min
0
Read Article
Стратегия Google в школах: формирование лояльности к бренду на всю жизнь
Technology

Стратегия Google в школах: формирование лояльности к бренду на всю жизнь

Внутренние документы Google из иска по защите прав детей раскрывают стратегию по вовлечению школьников в свою экосистему для формирования лояльности к бренду на всю жизнь.

2h
5 min
3
Read Article
Лидеры Великобритании осудили заявления Трампа о НАТО в Афганистане
Politics

Лидеры Великобритании осудили заявления Трампа о НАТО в Афганистане

Лидеры Великобритании осудили заявления Дональда Трампа о роли НАТО в Афганистане, назвав их исторически неточными. Принц Гарри и премьер-министр подчеркнули жертвы союзников.

2h
7 min
1
Read Article
Ноутбуки Nvidia на Arm бросают вызов Intel Inside
Technology

Ноутбуки Nvidia на Arm бросают вызов Intel Inside

Утечка информации показала, что Lenovo разработала шесть ноутбуков на базе будущих процессоров Nvidia N1 и N1X, что знаменует собой крупный сдвиг на рынке Windows-ноутбуков.

2h
5 min
3
Read Article
Открытый исходный код для автономного вождения расширяется до 325 моделей автомобилей
Technology

Открытый исходный код для автономного вождения расширяется до 325 моделей автомобилей

Платформа с открытым исходным кодом для автономного вождения расширила совместимость до 325 моделей автомобилей от 27 брендов, демократизируя доступ к передовым технологиям помощи водителю.

2h
5 min
2
Read Article
Ford выходит на рынок электрических полуприцепов с моделью F-Line E 2026 года
Automotive

Ford выходит на рынок электрических полуприцепов с моделью F-Line E 2026 года

Ford представит электрический полуприцеп F-Line E на рынке Западной Европы этим летом. Новая модель будет доступна в конфигурациях 4x2 и 6x2 с грузоподъемностью 26 тонн и крутящим моментом до 1820 фунт-футов.

2h
5 min
2
Read Article
ChargePoint расширяет зарядку электромобилей на парковках аренды автомобилей
Technology

ChargePoint расширяет зарядку электромобилей на парковках аренды автомобилей

ChargePoint устанавливает публичные зарядные станции для электромобилей на парковках аренды автомобилей в Висконсине, расширяя доступность зарядки в Эпплтоне и Мэдисоне.

3h
5 min
4
Read Article
Активист из Миннесоты опубликовал видео задержания после манипуляций Белого дома
Politics

Активист из Миннесоты опубликовал видео задержания после манипуляций Белого дома

Активист из Миннесоты опубликовал полное видео задержания в церкви, опровергая манипулированную версию, ранее показанную Белым домом.

3h
5 min
6
Read Article
Янн Лекун запускает AMI Labs: внутренняя история нового стартапа в области ИИ
Technology

Янн Лекун запускает AMI Labs: внутренняя история нового стартапа в области ИИ

Янн Лекун, пионер в области ИИ, покинул Meta для основания нового стартапа AMI Labs. Проект сосредоточен на разработке передовых мировых моделей для систем искусственного интеллекта.

3h
5 min
5
Read Article
🎉

You're all caught up!

Check back later for more stories

На главную