El trabajo en el estándar C++ 23 se ha completado y esta nueva versión se llama Pandemic Edition,
Herb Sutter, secretario del comité de estandarización del lenguaje C++ de ISO, anunció el lunes que el trabajo sobre el nuevo estándar C++ 23 finalizó en la última reunión del comité en Issaquah, Washington, EE. UU. Unido. Ha llegado el momento de producir el documento final que se enviará al voto de aprobación internacional (Draft International Standard, o DIS) y el trabajo editorial final, que se publicará más adelante en 2023. Esta versión presenta muchas características nuevas, pero algunas de 'entre ellos hay cosas que no usarás tan a menudo. También hubo varias correcciones de errores.
En una publicación en su sitio personal el lunes, Sutter dijo que el tema principal de C++23 es "Completar C++20", y algunos de los aspectos destacados incluyen el módulo "std", "if consteval", parámetros explícitos "esto", simplificación del movimiento implícito, mejoras para la compatibilidad con Unicode, etc., y duración fija de los temporales en bucles "rango para". Sutter anunció que además de trabajar en C++23, el comité también tuvo tiempo para avanzar en una serie de propuestas posteriores a C++23, incluido el trabajo continuo en contratos, el tiempo de ejecución de SIMD y más.
Según Sutter, la primera reunión en persona cancelada por la pandemia habría sido la primera reunión del ciclo de tres años de C++23. Esto significa que casi todo el ciclo de lanzamiento de C++23 y toda la fase de "desarrollo" del ciclo se llevó a cabo a través de Zoom con varios cientos de teleconsultas desde 2020 hasta 2022. De ahí el nombre del código "Pandemic Edition". Varios compiladores ya admiten algunas funciones nuevas introducidas por C++23. La nueva versión del lenguaje de programación creado por Bjarne Stroustrup admite un módulo de biblioteca estándar que acelera la compilación.
“Los módulos no solo mejoran la velocidad de compilación y la higiene del código, sino que también unifican la organización del código fuente de las funciones y plantillas habituales. Eventualmente, los módulos serán la mejora más significativa en la forma en que organizamos nuestro código”, dijo Stroustrup. La distinción .h/.cpp desaparece y el código fuente de C++ se simplifica fundamentalmente. Con el módulo de biblioteca estándar, "Hello World" se convierte en lo siguiente:
import std;
int main()
{
Std::cout<< "Hola Mundo!\n";
}
Stroustrup estima que este código debería compilarse 10 veces más rápido que la versión anterior usando #include . Siente que C++23 tiene muchas mejoras menores, pero algunas no parecerán menores. Stroustrup señaló que esta no es una actualización importante de C++ como lo han sido C++11 y C++20. para complementar C ++ 20 y, con suerte, agregar algunas características importantes. Sin embargo, la pandemia ha puesto un límite a las ambiciones, incluida la dificultad de reunirse en persona.
Como resultado, funciones como filtrado, contratos y un modelo general de concurrencia (ejecutores) tendrán que esperar a C++26. Además, C ++ 23 no incluirá una función central que facilite la escritura de código destinado a ejecutarse en entornos informáticos paralelos. El nuevo estándar no vendrá con una función de algoritmo asíncrono llamada "emisores y receptores", que permitirá que el código se ejecute simultáneamente en un sistema con múltiples chips, como CPU y GPU. Esta es una característica largamente esperada.
Además, C ++ 23 llega en un momento en que el debate sobre la eliminación de C / C ++ a favor de lenguajes modernos y seguros para la memoria como Rust. Rust ha ganado popularidad en los últimos años debido a su gestión segura de la memoria, y partes de la industria, incluidas grandes empresas como Microsoft, Meta y Amazon, ahora recomiendan iniciar nuevos proyectos en Rust y no en C++. De acuerdo con los comentarios sobre el anuncio del final del trabajo en el estándar C++ 23, el comité debe presentar nuevas características interesantes en el futuro para mantener a C++ en la posición más alta de la industria.
Este lugar de elección está actualmente seriamente amenazado por C++ e incluso organizaciones independientes y estatales están participando en el debate. El mes pasado, Consumer Reports, una organización sin fines de lucro que se especializa en pruebas de productos, abogó por que las empresas abandonaran lenguajes como C y C++ en favor de lenguajes seguros para la memoria como Rust. Consumer Reports cree que la seguridad de la memoria siempre ha sido una fuente persistente de fallas en la industria del software, pero los nuevos lenguajes ahora permiten protegerse contra estas fallas en la fase de diseño.
Según Consumer Reports, aproximadamente el 60-70 % de las vulnerabilidades del kernel y del navegador, así como los errores de seguridad que se encuentran en las bases de código C/C++, se deben a la falta de seguridad de la memoria, muchas de las cuales se pueden solucionar mediante el uso de lenguajes seguros para la memoria. Además, en noviembre de 2022, la Agencia de Seguridad Nacional (NSA) de EE. UU. recomendó que los desarrolladores se alejaran estratégicamente de los lenguajes C y C++. Ante los informes que critican los problemas de C++, Stroustrup dijo que "asegurar el software a través del lenguaje Rust no es mejor que el que ofrece C++".
“No existe una definición única de seguridad, y podemos lograr una variedad de tipos de seguridad a través de una combinación de estilos de programación, bibliotecas de soporte y análisis de aprovechamiento. estática”, dijo Stroustrup. Sugiere así que lo que se puede obtener de C++ en términos de seguridad del software depende, entre otras cosas, del desarrollador y en particular del conocimiento de las herramientas que ofrece el lenguaje, su dominio del compilador, etc. Aunque muchos creen que Rust está desechando C/C++, está claro que existirán durante mucho tiempo.