M
MercyNews
Home
Back
Chromium proíbe recursos específicos do C++ no código
Tecnologia

Chromium proíbe recursos específicos do C++ no código

Hacker News7h ago
3 min de leitura
📋

Fatos Principais

  • O projeto Chromium proibiu oficialmente recursos específicos do C++ para manter a estabilidade e segurança do código em seu vasto ecossistema de navegador.
  • Essas restrições estão detalhadas no guia de estilo oficial do projeto, que serve como referência definitiva para todos os contribuidores.
  • Entre os recursos proibidos estão std::make_unique, std::make_shared e std::regex devido a preocupações de compatibilidade e desempenho.
  • O projeto fornece alternativas específicas do Chromium, como base::MakeUnique, para garantir comportamento consistente em todas as plataformas suportadas.
  • Os processos de revisão de código agora incluem verificações automatizadas que sinalizam recursos proibidos antes que o código seja mesclado na branch principal.
  • O guia de estilo é um documento vivo que recebe atualizações regulares à medida que os padrões C++ evoluem e o suporte do compilador melhora.

Evolução do Código

O projeto Chromium estabeleceu diretrizes abrangentes que proíbem recursos específicos do C++ para manter a estabilidade em seu vasto código. Essas restrições refletem o compromisso do projeto com a manutenibilidade a longo prazo e a segurança.

Como um dos maiores projetos de software de código aberto do mundo, as decisões do Chromium impactam milhões de desenvolvedores e usuários globalmente. O guia de estilo do projeto agora proíbe explicitamente certas adições modernas do C++ que poderiam introduzir instabilidade ou vulnerabilidades de segurança.

Os recursos proibidos incluem várias adições modernas do C++ que poderiam comprometer os padrões de estabilidade e segurança do projeto. Essa decisão sublinha o foco do projeto em qualidade de código e compatibilidade entre plataformas.

Lista de Recursos Proibidos

O projeto Chromium identificou vários recursos do C++ que agora são proibidos dentro do código. Essas restrições estão detalhadas no guia de estilo oficial do projeto, que serve como referência definitiva para os contribuidores.

Entre os recursos proibidos estão:

  • std::make_unique - Proibido devido a preocupações de compatibilidade
  • std::make_shared - Restrito por motivos semelhantes de compatibilidade
  • std::shared_ptr com arrays - Não permitido devido a inconsistências de implementação
  • std::atomic com certos tipos - Limitado para prevenir comportamento indefinido
  • std::regex - Banido devido a problemas de desempenho e compatibilidade

O projeto também restringe o uso de std::filesystem e std::optional em certos contextos. Esses recursos, embora parte dos padrões modernos do C++, são considerados inadequados para os requisitos específicos do Chromium.

O guia de estilo enfatiza que essas restrições se aplicam a todo o código, incluindo todos os subprojetos e dependências. Os contribuidores devem aderir a essas diretrizes ao enviar código para revisão.

Razão por Trás das Restrições

A decisão de proibir esses recursos decorre da posição única do Chromium como um projeto multiplataforma que suporta múltiplos sistemas operacionais e arquiteturas. O projeto deve manter compatibilidade com compiladores e bibliotecas mais antigos, garantindo ao mesmo tempo comportamento consistente entre plataformas.

Considerações de segurança também desempenham um papel crucial nessas restrições. Alguns recursos modernos do C++ podem introduzir bugs sutis ou comportamento indefinido que poderiam ser explorados. Os mantenedores do projeto priorizam segurança e confiabilidade sobre conveniência.

O desempenho é outro fator crítico. Embora alguns recursos modernos do C++ ofereçam conveniência, eles podem não atender aos requisitos de desempenho do Chromium. A escala massiva do projeto significa que até mesmo pequenas regressões de desempenho podem ter impacto significativo.

A equipe do Chromium descobriu que certos recursos, apesar de fazerem parte do padrão C++, têm implementações inconsistentes entre diferentes plataformas. Essa inconsistência pode levar a comportamentos inesperados e tornar a depuração mais difícil.

Impacto no Desenvolvimento

Essas restrições influenciam significativamente como os desenvolvedores escrevem código para o Chromium. Os contribuidores devem usar abordagens alternativas que estejam de acordo com as diretrizes do projeto, alcançando ao mesmo tempo a mesma funcionalidade.

Por exemplo, em vez de usar std::make_unique, os desenvolvedores devem usar base::MakeUnique ou alternativas semelhantes específicas do Chromium. Essas alternativas são cuidadosamente projetadas para funcionar de forma consistente em todas as plataformas suportadas.

O projeto fornece documentação detalhada e exemplos para cada recurso restrito, ajudando os desenvolvedores a entender as alternativas aprovadas. Essa documentação é atualizada regularmente à medida que o projeto evolui.

Os processos de revisão de código foram aprimorados para detectar violações dessas restrições automaticamente. O sistema de compilação do Chromium inclui verificações que sinalizam recursos proibidos antes que o código seja mesclado na branch principal.

Considerações Futuras

O projeto Chromium continua a avaliar seus padrões de codificação à medida que o C++ evolui. Embora certos recursos estejam atualmente banidos, o projeto permanece aberto a reconsiderar essas decisões à medida que o suporte do compilador melhora e os padrões amadurecem.

O guia de estilo é um documento vivo que recebe atualizações regulares. Os contribuidores são encorajados a fornecer feedback e sugerir modificações com base em experiência prática e requisitos em mudança.

À medida que o projeto cresce e novos padrões C++ surgem, recursos adicionais podem ser adicionados à lista de proibidos, enquanto outros podem se tornar permitidos sob condições específicas. Essa abordagem dinâmica garante que o Chromium permaneça na vanguarda das melhores práticas de engenharia de software.

O compromisso do projeto com esses padrões demonstra sua dedicação em produzir software de alta qualidade, seguro e mantível que atende a milhões de usuários em todo o mundo.

Principais Conclusões

A decisão do projeto Chromium de proibir recursos específicos do C++ representa uma abordagem ponderada para gerenciar um código massivo e complexo. Essas restrições priorizam estabilidade, segurança e manutenibilidade sobre conveniência.

Os desenvolvedores que trabalham com o Chromium devem se adaptar a essas diretrizes, usando alternativas aprovadas que garantam comportamento consistente entre plataformas. Embora isso possa exigir esforço adicional, os benefícios em qualidade de código e confiabilidade são substanciais.

Os padrões em evolução do projeto refletem a natureza dinâmica do desenvolvimento de software, onde as melhores práticas continuam a melhorar para atender a novos desafios e oportunidades.

Perguntas Frequentes

Quais recursos do C++ o Chromium proibiu?

O Chromium proibiu vários recursos modernos do C++ incluindo std::make_unique, std::make_shared, std::shared_ptr com arrays, std::atomic com certos tipos, std::regex, std::filesystem e std::optional em certos contextos. Essas restrições estão detalhadas no guia de estilo oficial do projeto.

Por que o Chromium proibiu esses recursos?

As restrições decorrem de preocupações de compatibilidade, considerações de segurança e requisitos de desempenho. Alguns recursos têm implementações inconsistentes entre plataformas, enquanto outros poderiam introduzir bugs sutis ou comportamento indefinido que poderiam ser explorados.

Quais alternativas os desenvolvedores usam?

O Chromium fornece alternativas específicas como base::MakeUnique em vez de std::make_unique. Essas alternativas são cuidadosamente projetadas para funcionar de forma consistente em todas as plataformas suportadas e atender aos requisitos de desempenho do projeto.

Como essas restrições são aplicadas?

O sistema de compilação do Chromium inclui verificações automatizadas que sinalizam recursos proibidos durante a revisão de código. Isso garante que as violações sejam detectadas antes que o código seja mesclado na branch principal, mantendo a integridade do código.

Continue scrolling for more

IA transforma a pesquisa e as provas matemáticas
Technology

IA transforma a pesquisa e as provas matemáticas

A inteligência artificial está se tornando uma realidade na matemática. Modelos de aprendizado de máquina agora geram teoremas originais, forçando uma reavaliação da pesquisa e do ensino.

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
Estratégia Escolar da Google: Construindo Lealdade Vitalícia à Marca
Technology

Estratégia Escolar da Google: Construindo Lealdade Vitalícia à Marca

Documentos internos de uma ação judicial por segurança infantil revelam estratégia da Google para construir lealdade vitalícia à marca investindo em escolas e integrando crianças ao seu ecossistema digital.

2h
5 min
3
Read Article
Líderes britânicos condenam comentários de Trump sobre NATO no Afeganistão
Politics

Líderes britânicos condenam comentários de Trump sobre NATO no Afeganistão

Líderes britânicos condenam comentários de Trump sobre a OTAN no Afeganistão, defendendo o papel da aliança e os sacrifícios sofridos pelas forças aliadas durante o conflito.

2h
7 min
1
Read Article
Laptops com Arm da Nvidia desafiam a Intel Inside
Technology

Laptops com Arm da Nvidia desafiam a Intel Inside

Um vazamento revela que a Lenovo construiu seis laptops alimentados pelos próximos processadores N1 e N1X da Nvidia, marcando uma mudança significativa no cenário de laptops com Windows.

2h
5 min
3
Read Article
Código-aberto para carros autônomos se expande para 325 modelos
Technology

Código-aberto para carros autônomos se expande para 325 modelos

Uma plataforma de código-aberto para carros autônomos expandiu a compatibilidade para 325 modelos de 27 marcas, democratizando a tecnologia de assistência ao motorista.

2h
5 min
2
Read Article
Ford entra no mercado de caminhões elétricos com o F-Line E 2026
Automotive

Ford entra no mercado de caminhões elétricos com o F-Line E 2026

Ford entra no mercado de caminhões elétricos com o F-Line E, um semi-caminhão de 26 toneladas com até 1.820 libras-pé de torque, lançado na Europa Ocidental este verão.

2h
5 min
2
Read Article
ChargePoint expande recarga de veículos elétricos para locadoras de carros
Technology

ChargePoint expande recarga de veículos elétricos para locadoras de carros

ChargePoint está instalando novos carregadores públicos para veículos elétricos em locações de locadoras de carros em Wisconsin, expandindo o acesso em aeroportos e filiais de bairros em Appleton e Madison.

3h
5 min
4
Read Article
Ativista de Minnesota libera vídeo da prisão após manipulação da Casa Branca
Politics

Ativista de Minnesota libera vídeo da prisão após manipulação da Casa Branca

Ativista de Minnesota libera vídeo completo e não editado de sua prisão em igreja, contrapondo versão manipulada previamente compartilhada pela Casa Branca. O vídeo bruto oferece uma narrativa radicalmente diferente do confronto.

3h
5 min
6
Read Article
Yann LeCun Lança AMI Labs: Dentro da Nova Startup de IA
Technology

Yann LeCun Lança AMI Labs: Dentro da Nova Startup de IA

O pioneiro da IA deixou a Meta para fundar a AMI Labs, uma nova empreendimento focada no desenvolvimento de sistemas avançados de inteligência artificial. A startup já capturou interesse significativo do setor.

3h
5 min
5
Read Article
🎉

You're all caught up!

Check back later for more stories

Voltar ao inicio