Français
Pourquoi? | Objectifs | Statut | Commencer | Rejoignez-nous
Regardez notre vidéo d'annonce de CppNorth. Notez que Carbon n’est pas prêt à l’emploi.
correspond à ce code Carbone :
Vous pouvez appeler Carbon depuis C++ sans surcharge et inversement. Cela signifie que vous migrez une seule bibliothèque C++ vers Carbon au sein d'une application, ou que vous écrivez un nouveau Carbon en plus de votre investissement C++ existant. Par exemple:
En savoir plus sur l’interopérabilité C++ dans Carbon.
Au-delà de l'interopérabilité entre Carbon et C++, nous prévoyons également de prendre en charge des outils de migration qui traduiront mécaniquement le code C++ idiomatique en code Carbon pour vous aider à migrer une base de code C++ existante vers Carbon.
Carbon fournit un système générique moderne avec des définitions vérifiées, tout en prenant en charge les modèles opt-in pour une interopérabilité C++ transparente . Les génériques vérifiés offrent plusieurs avantages par rapport aux modèles C++ :
Sans sacrifier ces avantages, les génériques Carbon prennent en charge la spécialisation , garantissant ainsi qu'ils peuvent répondre pleinement aux cas d'utilisation critiques en termes de performances des modèles C++. Pour plus de détails sur les génériques de Carbon, consultez leur conception.
En plus d'une interopérabilité simple et puissante avec C++, les modèles Carbon peuvent être contraints et migrés progressivement vers des génériques vérifiés avec une granularité fine et avec un chemin d'évolution fluide.
La sécurité, et en particulier la sécurité de la mémoire, reste un défi majeur pour le C++ et un langage qui lui succédera devra répondre. Notre priorité initiale et notre objectif sont de s’attaquer immédiatement aux fruits importants et faciles à trouver dans le domaine de la sécurité :
Une fois que nous pourrons migrer le code vers Carbon, nous disposerons d'un langage simplifié avec de la place dans l'espace de conception pour ajouter toutes les annotations ou fonctionnalités nécessaires, et d'une infrastructure telle que des génériques pour prendre en charge des modèles de conception plus sûrs. À plus long terme, nous nous appuierons sur cela pour introduire un sous-ensemble de carbone sûr . Ce sera une entreprise vaste et complexe, et ne fera pas partie de la conception 0.1. Pendant ce temps, nous surveillons de près et apprenons des efforts visant à ajouter une sémantique sécurisée pour la mémoire au C++, comme les annotations à vie inspirées de Rust.
Pour essayer Carbon immédiatement dans votre navigateur, vous pouvez utiliser l'interpréteur de démonstration pour Carbon sur : carbon.compiler-explorer.com.
Nous développons une chaîne d'outils traditionnelle pour Carbon qui peut compiler et relier des programmes. Cependant, Carbon est encore un projet expérimental précoce, et nous ne disposons donc que de versions nocturnes très expérimentales de la chaîne d'outils Carbon disponibles au téléchargement, et uniquement sur des plates-formes limitées. Si vous utilisez un Linux Ubuntu récent ou similaire (Debian, WSL, etc.), vous pouvez les essayer en accédant à notre page de versions et en téléchargeant le dernier fichier tar de la chaîne d'outils nocturne : carbon_toolchain-0.0.0-0.nightly.YYYY.MM.DD.tar.gz . Ensuite, vous pouvez l'essayer :
carbon_toolchain-0.0.0-0.nightly.YYYY.MM.DD.tar.gz
# A variable with the nightly version from yesterday: VERSION= " $( date -d yesterday +0.0.0-0.nightly.%Y.%m.%d ) " # Get the release wget https://github.com/carbon-language/carbon-lang/releases/download/v ${VERSION} /carbon_toolchain- ${VERSION} .tar.gz # Unpack the toolchain: tar -xvf carbon_toolchain- ${VERSION} .tar.gz # Create a simple Carbon source file: echo " fn Run() { Core.Print(42); } " > forty_two.carbon # Compile to an object file: ./carbon_toolchain- ${VERSION} /bin/carbon compile --output=forty_two.o forty_two.carbon # Install minimal system libraries used for linking. Note that installing `gcc` # or `g++` for compiling C/C++ code with GCC will also be sufficient, these are # just the specific system libraries Carbon linking still uses. sudo apt install libgcc-11-dev # Link to an executable: ./carbon_toolchain- ${VERSION} /bin/carbon link --output=forty_two forty_two.o # Run it: ./forty_two
Pour rappel, la chaîne d'outils est encore très jeune et beaucoup de choses ne fonctionnent pas encore. Veuillez ne pas signaler de nombreux bugs : nous savons que de nombreuses parties de cela ne fonctionnent pas encore ou pourraient ne pas fonctionner sur tous les systèmes. Nous espérons avoir des versions beaucoup plus robustes et fiables que vous pourrez essayer lorsque nous aurons atteint notre objectif 0,1.
Si vous souhaitez créer vous-même la chaîne d'outils de Carbon ou envisagez d'apporter des correctifs ou des améliorations à Carbon, vous devrez installer nos dépendances de construction (Clang, LLD, libc++) et consulter le référentiel Carbon. Par exemple, sur Debian ou Ubuntu :
# Update apt. sudo apt update # Install tools. sudo apt install clang libc++-dev libc++abi-dev lld # Download Carbon's code. $ git clone https://github.com/carbon-language/carbon-lang $ cd carbon-lang
Ensuite, vous pouvez essayer notre chaîne d'outils qui dispose d'un compilateur très précoce pour Carbon :
# Build and run the toolchain's help to get documentation on the command line. $ ./scripts/run_bazelisk.py run //toolchain -- help
Pour des instructions complètes, y compris l'installation des dépendances sur différentes plates-formes différentes, consultez la documentation de nos outils de contribution.
En savoir plus sur le projet Carbone :
Discussions de la communauté axées sur le carbone :
Nous serions ravis que des gens nous rejoignent et contribuent au projet. Carbon s'engage en faveur d'un environnement accueillant et inclusif où chacun peut contribuer.
Vous pouvez également directement :
Vous pouvez consulter quelques « bons premiers numéros » ou rejoindre le canal #contributing-help sur Discord. Consultez notre documentation complète CONTRIBUTING pour plus de détails.
#contributing-help
CONTRIBUTING