2 pontos por GN⁺ 2023-07-01 | 2 comentários | Compartilhar no WhatsApp
  • O projeto Zig propõe remover as bibliotecas LLVM, Clang e LLD.
  • O Zig planeja ter seus próprios passes de otimização e atrair projetos de pesquisa e contribuições de fabricantes de chips.
  • Remoção da capacidade de compilar C++, Objective-C e Objective-C++ no Zig.
  • O código de máquina gerado pelo Zig pode se tornar menos competitivo no futuro próximo, mas no longo prazo pode alcançar ou superar LLVM e GCC.
  • Os benefícios de remover o LLVM incluem propriedade de bugs, build e bootstrapping mais fáceis, velocidades de compilação mais rápidas e a capacidade de implementar passes de otimização personalizados.
  • Foram levantadas preocupações sobre o impacto em projetos que dependem da compilação de C++ e sobre a redução da adoção do Zig.
  • Remover dependências do DirectXShaderCompiler e do compilador de shaders Metal da Apple pode ser difícil.
  • No longo prazo, a meta é avançar para uma solução totalmente em Zig.
  • Alguns usuários estão preocupados com o impacto na experiência de desenvolvimento de jogos e no uso de bibliotecas e ferramentas C++ existentes.
  • A simplicidade do Zig e sua capacidade multiplataforma estão sendo elogiadas.
  • Foi proposta a manutenção do backend LLVM como padrão ou a remoção do lowering para LLVM IR enquanto se mantém o suporte à família C.
  • Os usuários destacam a importância da capacidade do Zig de compilar código C/C++ sem atritos e gerar binários com bom desempenho.
  • Discutiu-se a possível perda de bibliotecas existentes e a necessidade de alternativas para compilação JIT.
  • A proposta é percebida como um impacto puramente negativo e um possível chamariz para alguns usuários.
  • Destaca-se a importância de manter os recursos do Zig para compilação cruzada e integração com bibliotecas existentes.
  • Foi proposta a remoção das dependências de LLVM e LLD, mantendo o clang como dependência opcional.
  • Foram levantadas preocupações sobre o impacto no desempenho e a viabilidade de substituir o LLVM.
  • É enfatizada a importância do suporte à compilação de C++ para desenvolvimento de jogos e outros projetos.
  • Foi mencionada a possibilidade de o Zig substituir gradualmente as funcionalidades do LLVM ao longo do tempo.
  • Discutiu-se a necessidade de garantias de desempenho razoáveis e a possível perda de oportunidades de otimização.
  • Foi mencionado o impacto em bibliotecas e ferramentas específicas, como ImGui e Tracy.
  • A proposta de remover o LLVM da toolchain do Zig pode causar divisão na comunidade Zig.
  • Alguns usuários podem passar a usar versões anteriores do Zig para evitar a migração.
  • Há desafios e limitações para manter o LLVM.
  • Um sistema de plugins para o compilador Zig pode ser uma solução de longo prazo.
  • Continuaria sendo possível compilar programas Zig para outras plataformas e linguagens.
  • O Zig cc, um recurso distintivo do Zig, pode continuar evoluindo como um projeto próprio.
  • Ainda não foi tomada uma decisão final sobre a proposta.
  • A discussão sobre a remoção do LLVM está se espalhando pelas redes sociais.
  • O Zig cc é muito valorizado pela comunidade e oferece vantagens em comparação com outras toolchains.
  • É possível manter o Zig cc sem o Clang.
  • Um projeto separado que empacote o Clang poderia atender casos de uso existentes de construção de código C++ com Zig.
  • Separar as ferramentas ou contratar mantenedores para preservar o Zig cc são soluções potenciais.
  • Podem ser desenvolvidas ferramentas de migração para codebases que dependem dos recursos a serem removidos.
  • Recentemente, um engenheiro de software migrou um projeto para uma versão mais nova do GHC, que usa um gerador de código nativo e oferece tempos de compilação mais rápidos.
  • O projeto Silk.NET usa zig cc e zig c++ para fornecer um ambiente de build reprodutível para bibliotecas nativas, permitindo compilação cruzada fácil e configuração local.
  • Engenheiros de software usam zig cc e zig c++ em projetos pessoais para facilitar a compilação cruzada de bibliotecas e permitir uma única configuração build.zig.
  • O compilador Intel C/C++ concluiu a adoção do LLVM, oferecendo tempos de compilação mais rápidos, melhor otimização e suporte a offloading para GPU e FPGA.
  • A proposta de mover a parte LLVM do Zig para um projeto separado mantido pela comunidade recebeu reações mistas.
  • Alguns usuários expressam preocupação com a remoção do suporte a C++ no Zig, enquanto outros argumentam que manter esse suporte é caro e não está coberto pelo orçamento.
  • A equipe do Zig sugere que quem considera o suporte a C++ importante deveria pensar em contribuir financeiramente ou com tempo para sustentar o recurso.
  • Alguns usuários dizem que remover o LLVM pode trazer benefícios no longo prazo, mas demonstram preocupação com a remoção completa do suporte a C++ e Obj-C(++).
  • Há uma proposta para reduzir o compilador Zig a um binário menor e mais leve, adicionando os recursos do LLVM como extensões.

2 comentários

 
alstjr7375 2023-07-02

Será que vai conseguir oferecer otimização e suporte a plataformas no nível do LLVM...

 
GN⁺ 2023-07-01
Comentários do Hacker News
  • A equipe de desenvolvimento do Zig está considerando remover a dependência do LLVM
  • Algumas pessoas estão preocupadas que essa transição em relação ao LLVM desvie o foco da equipe do Zig do próprio Zig
  • Outras acreditam que reescrever partes do LLVM no Zig poderia ser um projeto interessante e ambicioso
  • Há preocupações sobre geração de código e bootstrap caso o Zig deixe de depender do LLVM
  • Algumas pessoas acham que eliminar o LLVM é uma decisão precipitada e pode limitar o suporte de plataformas do Zig
  • Um comentarista criticou a proposta por subestimar a carga de trabalho e ignorar o trabalho já feito em torno do LLVM
  • Os custos de remover o LLVM incluem a perda de compatibilidade com C++ e uma possível perda de desempenho
  • Alguns usuários estão preocupados que encerrar o suporte a certas arquiteturas possa afetar a popularidade do Zig
  • Um comentarista mencionou que parte da popularidade do Zig vem da compatibilidade com C/C++ e da facilidade de instalação
  • Foi sugerido que o Zig use bytecode personalizado em builds de depuração e continue dependendo do LLVM em builds de release
  • A linguagem D tem vários compiladores com diferentes backends, e os usuários valorizam essa possibilidade de escolha
  • O toolchain do Zig é bem avaliado, e remover o Zig cc e o Zig c++ pode fazer usuários da linguagem hesitarem
  • Alguns comentaristas acreditam que a decisão de remover recursos de C++ pode prejudicar o sucesso futuro do Zig.