Español
¿Por qué? | Goles | Estado | Empezando | Únase a nosotros
Vea nuestro vídeo de anuncio de CppNorth. Tenga en cuenta que Carbon no está listo para su uso.
Corresponde a este código de carbono:
Puedes llamar a Carbon desde C++ sin gastos generales y al revés. Esto significa que puede migrar una única biblioteca de C++ a Carbon dentro de una aplicación o escribir un nuevo Carbon además de su inversión existente en C++. Por ejemplo:
Lea más sobre la interoperabilidad de C++ en Carbon.
Más allá de la interoperabilidad entre Carbon y C++, también planeamos admitir herramientas de migración que traducirán mecánicamente código idiomático de C++ a código Carbon para ayudarlo a cambiar una base de código C++ existente a Carbon.
Carbon proporciona un sistema genérico moderno con definiciones comprobadas y, al mismo tiempo, admite plantillas de inclusión voluntaria para una interoperabilidad perfecta con C++ . Los genéricos marcados ofrecen varias ventajas en comparación con las plantillas de C++:
Sin sacrificar estas ventajas, los genéricos de Carbon admiten la especialización , lo que garantiza que puedan abordar completamente los casos de uso de plantillas C++ críticos para el rendimiento. Para obtener más detalles sobre los genéricos de Carbon, consulte su diseño.
Además de una interoperabilidad sencilla y potente con C++, las plantillas de Carbon se pueden restringir y migrar incrementalmente a genéricos comprobados con una granularidad fina y con un camino evolutivo fluido.
La seguridad, y especialmente la seguridad de la memoria, sigue siendo un desafío clave para C++ y algo que un lenguaje sucesor debe abordar. Nuestra prioridad inicial y nuestro enfoque es abordar de inmediato aspectos importantes y fáciles de alcanzar en el ámbito de la seguridad:
Una vez que podamos migrar el código a Carbon, tendremos un lenguaje simplificado con espacio en el espacio de diseño para agregar las anotaciones o características necesarias, e infraestructura como genéricos para admitir patrones de diseño más seguros. A más largo plazo, aprovecharemos esto para introducir un subconjunto de carbono seguro . Esta será una tarea grande y compleja y no estará en el diseño 0.1. Mientras tanto, estamos observando de cerca y aprendiendo de los esfuerzos para agregar semántica segura para la memoria en C++, como las anotaciones de por vida inspiradas en Rust.
Para probar Carbon inmediatamente en su navegador, puede utilizar el intérprete de demostración de Carbon en: carbon.compiler-explorer.com.
Estamos desarrollando una cadena de herramientas tradicional para Carbon que puede compilar y vincular programas. Sin embargo, Carbon es todavía un proyecto experimental en sus inicios, por lo que solo tenemos versiones nocturnas muy experimentales de la cadena de herramientas de Carbon disponibles para descargar, y solo en plataformas limitadas. Si está utilizando un Ubuntu Linux reciente o similar (Debian, WSL, etc.), puede probarlos yendo a nuestra página de lanzamientos y descargando el último archivo tar de la cadena de herramientas nocturna: carbon_toolchain-0.0.0-0.nightly.YYYY.MM.DD.tar.gz . Entonces puedes probarlo:
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
Como recordatorio, la cadena de herramientas aún es muy temprana y muchas cosas aún no funcionan. Por favor, no publique muchos errores: sabemos que muchas partes de esto aún no funcionan o es posible que no funcionen en todos los sistemas. Esperamos tener versiones mucho más sólidas y confiables que pueda probar cuando alcancemos nuestro hito 0.1.
Si desea crear la cadena de herramientas de Carbon usted mismo o está pensando en aportar correcciones o mejoras a Carbon, deberá instalar nuestras dependencias de compilación (Clang, LLD, libc++) y consultar el repositorio de Carbon. Por ejemplo, en Debian o 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
Luego puedes probar nuestra cadena de herramientas, que tiene un compilador en etapa 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 obtener instrucciones completas, incluida la instalación de dependencias en varias plataformas diferentes, consulte nuestra documentación de herramientas de contribución.
Conozca más sobre el proyecto Carbono:
Charlas centradas en el carbono desde la comunidad:
Nos encantaría que la gente se uniera a nosotros y contribuyera al proyecto. Carbon está comprometido con un entorno acogedor e inclusivo donde todos puedan contribuir.
También puedes directamente:
Puede consultar algunos "buenos primeros números" o unirse al canal #contributing-help en Discord. Consulte nuestra documentación CONTRIBUTING completa para obtener más detalles.
#contributing-help
CONTRIBUTING