URL: https://linuxfr.org/users/rewind/journaux/google-forke-c Title: Google forke C++ Authors: rewind Date: 2022年07月21日T11:20:53+02:00 License: CC By-SA Tags: c++ Score: 66 Bon, allez, après ce titre totalement faux mais qui permet d'attirer le chalant, reprenons l'historique et voyons ce qu'il en est vraiment. Google utilise C++ en interne pour obtenir le maximum de performance de ses algorithmes et donc pour maximiser ses profits. Donc, toute amélioration de performance dans C++ est un gain en argent pour Google. Or, Google a été mis en échec dans sa tentative pour mettre en priorité de C++ la performance, au profit de la stabilité de l'ABI. Quoi qu'est-ce ? En effet, l'ABI de C++ ne fait pas partie du standard mais il y a un consensus mou pour essayer de ne pas casser l'ABI de la bibliothèque standard. Microsoft cassait l'ABI de son implémentation à chaque version dans les années 2000 et ça passait relativement bien (modulo les 5 ou 6 versions compilées qu'il fallait fournir). On peut aussi citer le changement d'ABI de `std::string` dans la libstdc++ après C++11 qui a eu des remous pendant assez longtemps dans les distributions Linux. Seulement, la stabilité de l'ABI a un coût : les mauvaises décisions d'implémentation restent. Raison pour laquelle `std::regex` par exemple est trèèèèès lent parce que ceux qui l'ont implémenté au départ ne savaient pas bien s'y prendre et ont gravé dans le marbre ces erreurs. On pourrait aussi citer `std::vector` qui est très ancien et qui, contrairement à ce que son nom pourrait laisser croire, n'est pas un `std::vector` et ne contient pas de `bool` ! En effet, le standard force à une implémentation à base de bits pour représenter `true`/`false` et donc crée une exception dans `std::vector` qui provoque plein de désagréments. Bref, Google pas content, et donc Google s'est retiré du comité de normalisation C++ et même de l'implémentation de clang, l'alternative à g++. Ça s'est vu, le développement de clang a pris un bon coup dans les dents. Et donc Google a décidé de sortir son propre langage : [Carbon](https://github.com/carbon-language/carbon-lang). Carbon est à C++ ce que TypeScript est à JavaScript et Kotlin à Java : c'est largement compatible, ça peut utiliser l'autre, mais ça vit à côté. Il est difficile pour l'heure de savoir les conséquences que cette nouvelle va avoir. Google n'en est pas à son premier langage maison (Go, Dart, etc). Mais c'est en tout cas un sacré coup de froid au milieu de cette chaleur estival dans le petit monde C++. Pour aller plus loin, le [thread Reddit](https://www.reddit.com/r/cpp/comments/w2t2zn/carbon_an_experimental_successor_to_c/) sur le sujet.

AltStyle によって変換されたページ (->オリジナル) /