Por que? | Metas | Estado | Primeiros passos | Junte-se a nós
Veja nosso vídeo de anúncio da CppNorth. Observe que o Carbon não está pronto para uso.
corresponde a este código Carbono:
Você pode chamar Carbon de C++ sem sobrecarga e vice-versa. Isso significa que você migra uma única biblioteca C++ para Carbon dentro de um aplicativo ou escreve um novo Carbon além de seu investimento existente em C++. Por exemplo:
Leia mais sobre interoperabilidade C++ no Carbon.
Além da interoperabilidade entre Carbon e C++, também planejamos oferecer suporte a ferramentas de migração que traduzirão mecanicamente código C++ idiomático em código Carbon para ajudá-lo a migrar uma base de código C++ existente para Carbon.
Carbon fornece um sistema genérico moderno com definições verificadas, ao mesmo tempo em que oferece suporte a modelos opcionais para interoperabilidade C++ perfeita . Os genéricos verificados oferecem diversas vantagens em comparação aos modelos C++:
Sem sacrificar essas vantagens, os genéricos do Carbon oferecem suporte à especialização , garantindo que possam atender totalmente aos casos de uso de modelos C++ de desempenho crítico. Para obter mais detalhes sobre os genéricos do Carbon, consulte seu design.
Além da interoperabilidade fácil e poderosa com C++, os modelos Carbon podem ser restritos e migrados de forma incremental para genéricos verificados com granularidade fina e com um caminho evolutivo suave.
A segurança, e especialmente a segurança da memória, continua sendo um desafio importante para C++ e algo que uma linguagem sucessora precisa resolver. Nossa prioridade e foco iniciais são abordar imediatamente os frutos importantes e mais fáceis de alcançar no espaço de segurança:
Assim que pudermos migrar o código para o Carbon, teremos uma linguagem simplificada com espaço no espaço de design para adicionar quaisquer anotações ou recursos necessários, e infraestrutura como genéricos para suportar padrões de design mais seguros. A longo prazo, aproveitaremos isto para introduzir um subconjunto seguro de carbono . Este será um empreendimento grande e complexo e não estará no design 0.1. Enquanto isso, estamos observando de perto e aprendendo com os esforços para adicionar semântica segura de memória em C++, como anotações de vida útil inspiradas em Rust.
Para experimentar o Carbon imediatamente em seu navegador, você pode usar o interpretador de demonstração do Carbon em: carbon.compiler-explorer.com.
Estamos desenvolvendo um conjunto de ferramentas tradicional para Carbon que pode compilar e vincular programas. No entanto, o Carbon ainda é um projeto experimental inicial e, portanto, só temos lançamentos noturnos muito experimentais do conjunto de ferramentas do Carbon disponíveis para download e apenas em plataformas limitadas. Se você estiver usando um Ubuntu Linux recente ou similar (Debian, WSL, etc.), você pode experimentá-los acessando nossa página de lançamentos e baixando o arquivo tar do conjunto de ferramentas noturno mais recente: carbon_toolchain-0.0.0-0.nightly.YYYY.MM.DD.tar.gz
. Então você pode experimentar:
# 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
Como lembrete, o conjunto de ferramentas ainda é muito inicial e muitas coisas ainda não funcionam. Por favor, não registre muitos bugs: sabemos que muitas partes disso ainda não funcionam ou podem não funcionar em todos os sistemas. Esperamos ter lançamentos muito mais robustos e confiáveis que você possa experimentar quando atingirmos nosso marco de 0,1.
Se você deseja construir o conjunto de ferramentas do Carbon sozinho ou está pensando em contribuir com correções ou melhorias para o Carbon, você precisará instalar nossas dependências de construção (Clang, LLD, libc++) e verificar o repositório Carbon. Por exemplo, no 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
Então você pode experimentar nosso conjunto de ferramentas que possui um compilador em estágio inicial para Carbon:
# Build and run the toolchain's help to get documentation on the command line.
$ ./scripts/run_bazelisk.py run //toolchain -- help
Para obter instruções completas, incluindo a instalação de dependências em várias plataformas diferentes, consulte nossa documentação de ferramentas de contribuição.
Saiba mais sobre o projeto Carbono:
Palestras da comunidade focadas em carbono:
Adoraríamos que pessoas se juntassem a nós e contribuíssem para o projeto. A Carbon está comprometida com um ambiente acolhedor e inclusivo onde todos possam contribuir.
Você também pode diretamente:
Você pode conferir alguns "bons primeiros problemas" ou ingressar no canal #contributing-help
no Discord. Consulte nossa documentação CONTRIBUTING
completa para obter mais detalhes.