2 points par GN⁺ 2023-07-01 | 2 commentaires | Partager sur WhatsApp
  • Proposition de retirer les bibliothèques LLVM, Clang et LLD du projet Zig.
  • Zig prévoit d’avoir ses propres passes d’optimisation et d’attirer des projets de recherche ainsi que des contributions de fabricants de puces.
  • Suppression dans Zig des capacités de compilation C++, Objective-C et Objective-C++.
  • Le code machine généré par Zig pourrait être moins compétitif dans un avenir proche, mais à long terme il pourrait rattraper ou dépasser LLVM et GCC.
  • Les avantages du retrait de LLVM incluent l’appropriation des bugs, un build et un bootstrapping plus simples, des temps de compilation plus rapides et la capacité d’implémenter des passes d’optimisation personnalisées.
  • Des inquiétudes ont été soulevées concernant l’impact sur les projets qui dépendent de la compilation C++ et une possible baisse de l’adoption de Zig.
  • Il pourrait être difficile de supprimer les dépendances à DirectXShaderCompiler et au compilateur de shaders Metal d’Apple.
  • À long terme, l’objectif est de pousser une transition vers une solution 100 % Zig.
  • Certains utilisateurs s’inquiètent de l’impact sur l’expérience de développement de jeux et sur l’utilisation des bibliothèques et outils C++ existants.
  • La simplicité de Zig et ses capacités multiplateformes sont saluées.
  • Des propositions ont été faites pour conserver le backend LLVM par défaut, ou pour maintenir le support de la famille C tout en supprimant l’abaissement vers LLVM IR.
  • Les utilisateurs soulignent l’importance de la capacité de Zig à compiler sans friction du code C/C++ et à produire des binaires performants.
  • La perte potentielle de bibliothèques existantes et le besoin d’une alternative pour la compilation JIT ont aussi été discutés.
  • La proposition est perçue comme un impact purement négatif pour les utilisateurs et comme un appât potentiel.
  • L’importance de préserver les capacités de Zig pour la cross-compilation et l’intégration de bibliothèques existantes est mise en avant.
  • Une proposition a été faite pour supprimer les dépendances à LLVM et LLD tout en gardant clang comme dépendance optionnelle.
  • Des préoccupations ont été exprimées sur l’impact en matière de performances et sur la faisabilité d’un remplacement de LLVM.
  • L’importance du support de la compilation C++ pour le développement de jeux et d’autres projets est soulignée.
  • La possibilité que Zig remplace au fil du temps les fonctionnalités de LLVM est mentionnée.
  • Le besoin de garanties de performances raisonnables et la perte potentielle de marges d’optimisation ont été discutés.
  • L’impact sur certaines bibliothèques et certains outils, comme ImGui et Tracy, a été mentionné.
  • La proposition de retirer LLVM de la toolchain de Zig pourrait provoquer une fracture au sein de la communauté Zig.
  • Certains utilisateurs pourraient continuer à utiliser d’anciennes versions de Zig pour éviter une migration.
  • Le maintien de LLVM comporte aussi des défis et des limites.
  • Un système de plugins pour le compilateur Zig pourrait constituer une solution à long terme.
  • La compilation de programmes Zig vers d’autres plateformes et langages pourrait toujours être prise en charge.
  • zig cc, une fonctionnalité distinctive de Zig, pourrait continuer à évoluer comme projet indépendant.
  • Aucune décision finale n’a encore été prise concernant cette proposition.
  • Le débat sur le retrait de LLVM s’est propagé sur les réseaux sociaux.
  • zig cc est très apprécié dans la communauté et offre des avantages par rapport à d’autres toolchains.
  • Il serait possible de maintenir zig cc sans Clang.
  • Un projet séparé qui embarquerait Clang pourrait prendre en charge les cas d’usage existants où Zig sert à builder du code C++.
  • La séparation en outils distincts ou l’embauche de mainteneurs pour préserver zig cc sont évoquées comme solutions potentielles.
  • Des outils de migration pourraient être développés pour les bases de code qui dépendent des fonctionnalités supprimées.
  • Un ingénieur logiciel a récemment migré un projet vers une version récente de GHC, qui utilise un générateur de code natif pour offrir des temps de compilation plus rapides.
  • Le projet Silk.NET utilise zig cc et zig c++ pour fournir un environnement de build reproductible pour des bibliothèques natives, facilitant la cross-compilation et la configuration locale.
  • Des ingénieurs logiciels utilisent zig cc et zig c++ dans des projets personnels afin de simplifier la cross-compilation de bibliothèques et de centraliser la configuration dans un unique build.zig.
  • Le compilateur Intel C/C++ a achevé son adoption de LLVM, apportant des temps de compilation plus rapides, de meilleures optimisations et le support de l’offloading GPU et FPGA.
  • La proposition de déplacer la partie LLVM de Zig vers un projet distinct maintenu par la communauté a suscité des réactions mitigées.
  • Certains utilisateurs expriment leur inquiétude face à la suppression du support C++ dans Zig, tandis que d’autres estiment que ce support coûte cher et n’entre pas dans le budget.
  • L’équipe Zig suggère que les personnes pour qui le support C++ est important devraient envisager de contribuer financièrement ou en temps pour soutenir cette fonctionnalité.
  • Certains utilisateurs estiment que le retrait de LLVM pourrait apporter des bénéfices à long terme, tout en s’inquiétant de la suppression complète du support C++ et Obj-C(++).
  • Il est aussi proposé de réduire le compilateur Zig à un binaire plus petit et plus léger, avec les fonctionnalités LLVM ajoutées sous forme d’extensions.

2 commentaires

 
alstjr7375 2023-07-02

Peut-on vraiment atteindre le même niveau d’optimisation et de prise en charge des plateformes qu’avec LLVM…

 
GN⁺ 2023-07-01
Avis Hacker News
  • L’équipe de développement de Zig envisage de supprimer sa dépendance à LLVM
  • Certaines personnes craignent qu’une telle transition loin de LLVM ne détourne l’attention de l’équipe de Zig du langage Zig lui-même
  • D’autres pensent que réécrire une partie de LLVM dans Zig pourrait être un projet ambitieux et passionnant
  • Si Zig ne dépend plus de LLVM, des inquiétudes subsistent concernant la génération de code et le bootstrap
  • Certaines personnes estiment que supprimer LLVM est une décision précipitée et pourrait limiter la prise en charge des plateformes par Zig
  • Un commentateur critique la proposition, estimant qu’elle sous-évalue la charge de travail et ignore le travail déjà effectué autour de LLVM
  • Parmi les sacrifices liés à la suppression de LLVM figurent la perte de compatibilité C++ et une baisse potentielle des performances
  • Certains utilisateurs craignent que l’abandon de la prise en charge de certaines architectures n’affecte la popularité de Zig
  • Un commentateur mentionne que la popularité de Zig tient en partie à sa compatibilité avec C/C++ et à sa facilité d’installation
  • Il est proposé que Zig utilise un bytecode personnalisé pour les builds de debug tout en continuant à s’appuyer sur LLVM pour les builds de release
  • Le langage D dispose de plusieurs compilateurs avec différents backends, et les utilisateurs apprécient ce choix
  • La toolchain de Zig est très appréciée, et supprimer Zig cc et Zig c++ pourrait faire hésiter les utilisateurs du langage
  • Certains commentateurs estiment que la décision de supprimer les fonctionnalités C++ pourrait nuire au succès futur de Zig.