日本語
なぜ? |目標 |ステータス |はじめに |参加しませんか
CppNorth からの発表ビデオをご覧ください。 Carbon は使用できる状態ではないことに注意してください。
この Carbon コードに対応します。
オーバーヘッドなしで C++ から Carbon を呼び出すことも、その逆も行うことができます。これは、アプリケーション内で単一の C++ ライブラリを Carbon に移行するか、既存の C++ 投資の上に新しい Carbon を作成することを意味します。例えば:
Carbon での C++ 相互運用性について詳しくは、こちらをご覧ください。
Carbon と C++ 間の相互運用性を超えて、既存の C++ コードベースを Carbon に切り替えるのに役立つ、慣用的な C++ コードを Carbon コードに機械的に変換する移行ツールもサポートする予定です。
Carbon は、シームレスな C++ 相互運用のためのオプトイン テンプレートをサポートしながら、チェックされた定義を備えた最新のジェネリックス システムを提供します。チェックされたジェネリックには、C++ テンプレートと比較していくつかの利点があります。
これらの利点を犠牲にすることなく、 Carbon ジェネリックは特殊化をサポートし、C++ テンプレートのパフォーマンスが重要なユースケースに完全に対応できるようにします。 Carbon のジェネリック医薬品の詳細については、その設計を参照してください。
C++ との簡単かつ強力な相互運用に加えて、Carbon テンプレートは制約され、細かい粒度でスムーズな進化パスでチェックされたジェネリックに段階的に移行できます。
安全性、特にメモリの安全性は依然として C++ にとって重要な課題であり、後継言語が対処する必要があるものです。私たちの最初の優先事項と焦点は、安全領域における重要で簡単に解決できる問題に即座に対処することです。
コードを Carbon に移行できれば、設計空間に必要な注釈や機能を追加する余地のある簡略化された言語と、より安全な設計パターンをサポートするジェネリックなどのインフラストラクチャが手に入ります。長期的には、これに基づいて安全な Carbon サブセットを導入する予定です。これは大規模で複雑な作業となるため、0.1 の設計には含まれません。一方、私たちは、Rust からインスピレーションを得たライフタイムアノテーションなど、メモリセーフなセマンティクスを C++ に追加する取り組みを注意深く観察し、そこから学んでいます。
ブラウザで Carbon をすぐに試すには、carbon.compiler-explorer.com で Carbon のデモ インタープリタを使用できます。
私たちは、プログラムをコンパイルしてリンクできる Carbon 用の従来のツールチェーンを開発しています。ただし、Carbon はまだ初期の実験的なプロジェクトであるため、ダウンロードできる Carbon ツールチェーンの非常に実験的な夜間リリースのみが、限られたプラットフォームでのみ提供されます。最近の Ubuntu Linux または同様のバージョン (Debian、WSL など) を使用している場合は、リリース ページに移動し、最新のナイトリー ツールチェーン tar ファイルをダウンロードしてこれらを試すことができます: carbon_toolchain-0.0.0-0.nightly.YYYY.MM.DD.tar.gz 。次に、それを試してみることができます。
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
念のために言っておきますが、ツールチェーンはまだ初期段階にあり、多くの機能がまだ機能していません。多くのバグの報告は控えてください。この機能の多くの部分がまだ機能しないか、すべてのシステムで機能しない可能性があることがわかっています。 0.1 マイルストーンに到達した時点で、より堅牢で信頼性の高いリリースを試用できるようになる予定です。
Carbon のツールチェーンを自分で構築したい場合、または Carbon への修正や改善に貢献することを考えている場合は、ビルドの依存関係 (Clang、LLD、libc++) をインストールし、Carbon リポジトリをチェックアウトする必要があります。たとえば、Debian または 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
次に、Carbon の非常に初期段階のコンパイラを備えたツールチェーンを試してみることができます。
# Build and run the toolchain's help to get documentation on the command line. $ ./scripts/run_bazelisk.py run //toolchain -- help
さまざまなプラットフォームへの依存関係のインストールなどの完全な手順については、コントリビューション ツールのドキュメントを参照してください。
Carbon プロジェクトについて詳しくは、以下をご覧ください。
コミュニティからの炭素に焦点を当てた講演:
ぜひ皆さんに参加していただき、プロジェクトに貢献していただきたいと思っています。 Carbon は、誰もが貢献できる、歓迎的で包括的な環境に取り組んでいます。
直接次のこともできます。
いくつかの「優れた最初の問題」をチェックしたり、Discord の#contributing-helpチャンネルに参加したりできます。詳細については、完全なCONTRIBUTINGドキュメントを参照してください。
#contributing-help
CONTRIBUTING