Se lanza Rust 1.0, el lenguaje de programación detrás del nuevo motor web Servo de Mozilla

Como muchos programadores saben, llegar al1.0 hito es un día importante para cualquier idioma. Señala el primer punto estable donde los desarrolladores pueden usar sus funciones sin temor a que su código se rompa con los cambios entrantes. Pero lo que separa el Rust 1.0 de código abierto y el desarrollado abiertamente es que Mozilla lo eligió y respaldó para construir el nuevo motor de navegación web increíblemente rápido de la empresa.Servo. Aquí, desde el punto de vista de un desarrollador en activo, explicaré las características en las que Mozilla se ha centrado al crearOxidoy cómo la compañía planea usar Rust para reemplazar a Gecko (el motor Firefox existente) con Servo.

Las necesidades de Servo definieron cómo debe mejorar Rust con respecto a los lenguajes actuales, especialmente C ++, que Rust reemplazará en los futuros navegadores de Mozilla. Si tuviera que destacar una mejora en Rust, es su seguridad inherente. Elimina la posibilidad de la mayoría de los errores que ocurren en aplicaciones escritas en C / C ++. Al mismo tiempo, Rust también está diseñado teniendo en cuenta la concurrencia, facilitando el desarrollo de aplicaciones con un alto nivel de paralelismo. Además, Rust logra estas mejoras siendo un lenguaje de bajo nivel con el mismo alto rendimiento que todos esperan de C ++.Mozilla logo óxido

La mayoría de los errores en las aplicaciones C / C ++ provienen de un mal manejo de la memoria, como permitir accesos inválidos a la memoria de datos ya liberados y reutilizados, y desbordes de búfer en la memoria más allá de la estructura de datos que intenta leer y escribir. Para resolver estos problemas, Rust tiene una nueva administración de memoria con tipos estáticos, sin conversiones implícitas, verificaciones vinculadas, direccionamiento de variables que el compilador verifica estáticamente, variables no mutables por defecto y un modelo de propiedad que permite que la aplicación se libere automáticamente la memoria cuando su alcance finaliza y, lo que es más importante, garantizar la validez de cada puntero.



Muchos, si no todos, de estos conceptos ya se encuentran en lenguajes administrados como Java y C #. Pero Rust los permite en aplicaciones compiladas como código nativo, sin necesidad de ejecutarse dentro de un tiempo de ejecución y sin sufrir la gran penalización de rendimiento de un recolector de basura.

Aunque lejos de ser tan malo como un lenguaje administrado, todas esas comprobaciones vinculadas vienen con una pequeña penalización de rendimiento sobre los lenguajes inseguros. Así que Rust también permite la ejecución de código inseguro, para permitir el máximo rendimiento posible para los bits críticos ocasionales de código.

El modelo de modelo de propiedad de Rust también proporciona una solución para desarrollo indoloro de aplicaciones altamente paralelas, Para evitar las temidas condiciones de carrera. Cada hilo está aislado en Rust, pero los datos aún se pueden compartir a través de canales, lo que también transfiere la propiedad de los mensajes enviados, lo que evita que el remitente vuelva a esos datos. Se pueden definir bloqueos y se puede permitir que varios subprocesos compartan algunos tipos de datos.

Ejemplos de codificación

Ese es un breve resumen de los beneficios de Rust. Veamos todo esto en varios fragmentos de código. Primero tenemos “Hello World”, que muestra que el lenguaje se ha basado en C y facilita el aprendizaje y uso de Rust a los programadores de C / C ++.

Descanso código 1

En el siguiente ejemplo, tres implementaciones diferentes de la función factorial nos muestran varios aspectos del lenguaje.

Resto código 2

Ahora veamos el modelo de 'propiedad'. Este código muestra la creación de un vector y su uso mientras existe el propietario.

Descanso código 3

Ahora transferiremos ese vector, para que ya no sea destruido al final de make_vec's alcance, pero se transferirá al alcance de la persona que llama. Estas transferencias también ocurren cuando se envían, a través de un canal, datos de un hilo aislado a otro, evitando condiciones de carrera.

Descanso código 4

Resumamos las mejoras de Rust porcitando las palabras de Graydon Hoare, su creador, hablando con InfoQ:

InfoQ: ¿Qué hace que (Rust) sea mejor que C?

GH: En primer lugar, es mucho más seguro y tiene menos probabilidades de fallar. Su código realmente tiene que decirlo en serio, si va a hacer algo que no sea seguro para la memoria. Y no le cobramos demasiado por la seguridad de la memoria, a diferencia de los sistemas de recolección de basura. También vale la pena señalar varias otras comodidades: el modelo de memoria se traduce en un modelo de concurrencia seguro, y hay un buen soporte para las comodidades modernas habituales como cierres, rasgos, espacios de nombres, destructores, Unicode, inferencia de tipos, memoria inmutable, uniones disjuntas, etc.

El motor web Servo

Mozilla ha aprovechado todo el potencial de este lenguaje con su nuevo motor web: Servo.

Gecko, el motor web actual de Firefox, es un verdadero dinosaurio. Es difícil de mantener, difícil de ampliar y está mal adaptado a las computadoras y dispositivos móviles modernos. Es por eso que Mozilla está construyendo un nuevo motor revolucionario desde cero para reemplazarlo y corregir todos esos defectos. Elegir Rust facilita que Servo divida cada tarea de renderizado de HTML en tantas subtareas paralelas como sea posible. De esta manera, el navegador podrá aprovechar los procesadores modernos. Incluso los teléfonos vienen hoy en día con múltiples núcleos y MediaTek pronto lanzará un SoC con 10 núcleos de CPU. El hecho de que Rust sea intrínsecamente mucho más seguro que C ++ tampoco hace daño.

Mozilla y Samsung han compartido algunas comparaciones de rendimiento entre los motores Servo y Gecko. Al comparar la carga del sitio web de CNN, podemos ver que con un solo procesador, Servo es mucho más rápido que el motor existente de Firefox, y cuando se ejecuta con un procesador de cuatro núcleos, el tiempo de carga disminuye significativamente.

Mozilla Rust Servo Gecko

Al observar los resultados del sitio web de Reddit, vemos que se mantiene el gran rendimiento de un solo núcleo, pero tenemos que señalar cuán maravillosamente escala Servo aquí en un procesador de cuatro núcleos, dejando a Gecko en el polvo.

Mozilla Rust Servo Gecko
Para facilitar la adopción de Servo fuera de sus propios navegadores, Mozilla ha abandonado la complicada y problemática API Gecko, y ha adoptado la API Chromium Embedded Framework, en lugar de crear otra nueva API web propia. A pesar de estar basada en Blink (el nuevo motor web de Chrome), esta API tiene como objetivo aislar completamente a los usuarios de los motores web subyacentes en constante cambio, y ya ha sido elegida por Adobe y Valve para su cliente Steam.

Hoja de ruta de Servonos dice que esperemos un navegador alfa a finales de este año, pero Mozilla se está enfocando en espacios móviles e integrados. Entonces, durante los próximos dos años, solo deberíamos esperar navegadores Servo móviles, y tal vez el motor integrado en el software de terceros. Teniendo en cuenta los espectaculares resultados de esas pruebas iniciales, nos costará tanto esperar.

Probablemente sea demasiado pronto para empezar a aprender Rust para muchos desarrolladores. Pero si el motor web Servo se vuelve tan exitoso como parece, entonces Rust tendrá suficiente validación para permanecer con nosotros durante mucho tiempo.

Copyright © Todos Los Derechos Reservados | 2007es.com