
Mejor con un retraso de una semana que nunca, así que les traigo una selección subjetiva de noticias oxidadas para octubre.
En esta colección: Rust 1.30, Rust 2018, conferencia RustRush, Amethyst 0.9, squatting crates.io, recolector de basura, controversia sobre gráficos 2D, vidas no léxicas, GUI funcional.
Pruebas de Rust 1.30 y Rust2018
Rust 1.30 salió ( discusión ). Las principales innovaciones son la estabilización parcial de las macros de procedimiento, la importación de macros mediante el use
regular, la mejora del sistema de módulos, los identificadores "en bruto" y el soporte para aplicaciones no_std
(para más detalles, consulte la traducción del concentrador ).
Rust 1.31 será el primer lanzamiento de la edición "Rust2018" ( ¿qué es la "edición"? ). Por lo tanto, todos están invitados a unirse a la versión beta de prueba 1.31 y al arreglo de carga .
RustRush 2018 : conferencia del 15 al 16 de diciembre en Moscú
RustRush 2018 es una conferencia para desarrolladores en Rust dedicada a la web, blockchain, alto rendimiento y programación de sistemas.
Se actualizó el sitio ( rustrush.ru ): se publicó una lista casi completa de oradores y un programa , se inició la venta del lote principal de boletos .
Habrá cuatro participantes en el proyecto Rust Language: Steve Klabnik, Ashley Williams, Pascal Hertlif, Katarina Fey. De las otras estrellas locales y no tantas: Maxim Lapshin con firmware de cámara IP, Kostya Stepanov y Pierre Krieger, también conocido como tomaka. Programa .
Si alguien quiere enviar un informe, Call for Papers está abierto hasta el 19 de noviembre.

Montaje web
Programación de WebAssembly con Rust - The Book ( discusión ): se programa un libro sobre WASM / Rust;
El futuro posterior a MVP de WebAssembly: un árbol de habilidades de dibujos animados ( traducción habro: "El futuro de WebAssembly en forma de un" árbol de habilidades "" ): dónde y cómo se desarrollará WASM aún más y qué papel jugarán idiomas como Rust en su ecosistema;
Ruukh ( código , discusión ): marco web front-end experimental (utiliza características inestables), inspirado en VueJS y ReactJS;
Draco ( discusión ): una biblioteca para crear aplicaciones cliente, inspirada en Redux y Elm ;
Twiggy 0.3.0 ( código ): entre otras actualizaciones, el .wasm
usuario apareció en el .wasm
tamaño de archivo .wasm
;
Para parcel (un sistema de construcción joven y rápido para proyectos JS, que es amigable con el rastreo y no requiere configuración) , se ha lanzado un complemento que lo integra con el paquete wasm_bindgen : parcel-plugin-wasm.rs .
Aquí hay una plantilla que muestra cómo funciona el complemento: rustwasm / rust-parcel-template .
Gracias mvlabat por las noticias.
Actualización del progreso de la herrería: cómo reduje el tamaño del paquete WebAssembly en un 90% : el nombre es un poco engañoso, porque sobre la reducción de peso allí, en esencia, solo una pequeña pieza en el espíritu de "modificó la configuración de LLVM y usé wasm-opt", pero en el artículo Encuentra otras pequeñas cosas útiles.
Aquí, al mismo tiempo, hay un capítulo del libro wasm sobre la reducción del tamaño de los artefactos .
Las llamadas entre JavaScript y WebAssembly son finalmente rápidas ( discusión ): no hay Rust en el artículo en sí, pero para el ecosistema Rust / WASM el evento sigue siendo muy importante;
Multithreading Rust and Wasm ( discusión ): un análisis detallado de la situación de múltiples subprocesos en Rust y una demostración de trazado de rayos:

Incrustado
rust-industrial-io : el uso de libiio proporciona acceso a sensores y unidades industriales;
Ha comenzado el desarrollo de cortex-r-rt : paquete de tiempo de ejecución para procesadores Cortex-R;
teclado - controlador para esquemas de matriz de teclado;

Bluetooth de baja energía con óxido ( discusión );
Con la estabilización de #[panic_handler]
en 1.30, se hizo posible desarrollar aplicaciones Cortex-M que se ejecutan sin un sistema operativo utilizando un compilador estable.
shared-bus ( código ): le permite compartir de forma segura periféricos entre dispositivos utilizando mutexes;
Embedded WG (grupo de trabajo) está creciendo: ya hay 27 desarrolladores en 11 equipos;
Igrostroy oxidado
La biblioteca de álgebra lineal "cgmath" está muriendo lentamente a favor de "nalgebra" ;
Motor de juego Amethyst 0.9 lanzado ( discusión ):
- Se
SpriteRender
componente SpriteRender
, que simplifica la creación de juegos 2D y agrega soporte para el procesamiento por lotes; - Existe la posibilidad de cargar cómodamente hojas de sprites (hojas de sprites) desde archivos RON ;
- randomPoison / amethyst-editor es un editor / visualizador / depurador experimental basado en electrones. Para el trabajo, requiere la integración del paquete amethyst-editor-sync en el código de su proyecto con una descripción de los componentes.

Además, se está trabajando en:
Nuevas notas sobre el desarrollo del rompecabezas RoboInstruct :

Pyro: un sistema de componentes de entidad rápido, pequeño y documentado ( discusión ): un nuevo ECS rápido, en algunos lugares más rápido que las especificaciones al cargar datos en SoA, no en AoS . Demostración GIF . El autor advierte que por el momento el proyecto es crudo y para emprendimientos serios es mejor usar especificaciones por ahora;
Tutorial de Gfx-hal, parte 2: búferes de vértices : la segunda lección sobre cómo trabajar con gfx-hal ;
Los últimos dos meses en rustsim # 1 : lo que sucedió con la física , ncollide , nalgebra y alga en los últimos meses;
GLSL cuasiquoting en óxido! ( discusión ): la cuasificación del código de sombreador le permite usar GLSL directamente desde el código Rust con controles a través de rustc en la etapa de construcción (la versión actual es muy cruda y solo formatea los controles, pero las versiones futuras deberían aprender a hacer controles semánticos más útiles);
Encrusted ( discusión ): intérprete WASM de aventuras de texto similares a Zork ;
Eventos en sistemas de componentes de la entidad ( discusión ): enfoques para organizar un sistema de eventos basado en ECS con specs
saludos separadas;
En cuclillas en cajones.
El debate sobre si crates.io debería comenzar a admitir espacios de nombres / organizaciones ha estado sucediendo casi desde la llegada de la carga. Solo arroje aquí una lista de varios en los últimos años:
La pregunta es compleja, no tiene fin para el srach. Alguien se asustó hace un par de semanas y decidió reprochar o enviar spam al repositorio:
Durante varias horas, los usuarios del servicio experimentaron problemas de acceso. Como resultado, nada ha cambiado mucho: se introdujeron varias reglas adicionales contra el spam directo, las discusiones se reanudaron con venganza, creando varios Pre-RFC más en el proceso. Veamos de dónde viene todo al final.
Shifgrethor gc
Sin botes , en el proceso de investigación de lo que es capaz una API API nueva pero inestable , escribió una biblioteca experimental para la recolección de basura, Shifgrethor , y publicó una serie de artículos sobre cómo y por qué se organiza:
Este no es el primer intento de implementar una biblioteca GC oxidada (una vez que hubo @
punteros en el lenguaje para este propósito), pero esto difiere de los intentos anteriores que utilizan el nuevo mecanismo Pin
.
Como la biblioteca depende de la API de Pin, aún no puede funcionar en Rust estable. El barquero repite varias veces que el proyecto todavía es puramente de investigación y ni siquiera está seguro de dónde tendrá sentido usar esta biblioteca, probablemente para integrar otros idiomas con GC o implementar estructuras de datos complejas.
Shifgrethor habla sobre IRLO .
Serie de notas 2D
¿Por qué no funciona tomar y crear una biblioteca universal para gráficos 2D para todas las ocasiones? Muy entretenido, recomiendo mirar los artículos y comentar sobre ellos.

Nico publicó varias notas sobre cómo NLL ( ¿qué es? ) Se integrará inmediatamente en la próxima versión de Rust (hasta ahora debe incluirse explícitamente a través de la feature(nll)
), su implementación y los problemas que se resolverán en futuras iteraciones del analizador endeudamiento:
Para aquellos que quieran profundizar un poco más, todavía hay un tema de URLO .

Incluso los comentarios en el último mes muestran que la GUI es un punto doloroso en Rust. Otro intento de tapar este agujero en el ecosistema: Azul es una biblioteca IMGUI funcional con almacenamiento en caché de estado, que usa WebRender para la representación ( discusión ).
Vea el sitio web del proyecto para más detalles: azul.rs.

En una linea
- La próxima actualización de Intellij-rust IDE trae, entre otras cosas, un análisis de la semántica del movimiento y nuevas "soluciones rápidas" ( demos de gif );
- El asignador de memoria jemalloc se ha eliminado de la biblioteca estándar en favor de un asignador de "sistema" . El atributo
#[global_allocator]
se ha estabilizado recientemente, por lo que aquellos que desean devolver el antiguo asignador pueden habilitar el paquete jemallocator ; - TravisCI implementó el soporte para compilaciones de Windows, Rust ingresó a los tres principales idiomas nativos ;
- Escribir un sistema operativo en Rust: interrupciones de hardware ( discusión ): un excelente artículo sobre cómo trabajar con interrupciones para los amantes del bajo nivel;
- ¿Debería aprender C para "aprender cómo funciona la computadora"? ( discusión en / r / programación ) - El aficionado intenta lidiar con los estereotipos estereotipados;
- Python oxidante: Acelerar el presupuesto de URL en 10x usando Rust ( discusión ): un ejemplo práctico de acelerar el código de Python reescribiendo la parte computacionalmente pesada en Rust;
- Mi lista de verificación de lanzamiento para los programas de Rust ( discusión ): una lista explicativa de las cosas que deben verificarse dos veces antes de la publicación de una nueva versión del proyecto;
- Hacia SIMD sin miedo ( discusión ) - Ralph está pensando en cómo mejorar el soporte SIMD en Rust;
- Notas sobre diseños de tipo y ABI en Rust ( discusión ): cómo está estructurada la versión actual de Rust ABI + es un poco de interés aleatorio de bajo nivel;
- Rust, Battlecode y Halite: una experiencia para principiantes con concursos de programación de IA : informe sobre la participación en competencias de programación de IA ;
- Rust tiene un recolector de basura estático ( discusión ): un aficionado discute la administración automática de memoria en Rust, a diferencia de los recolectores de basura clásicos;
- Direcciones futuras para cbindgen (rust-ffi) ( discusión ) - planes para un mayor desarrollo del generador de enlace de caster basado en las bibliotecas oxidadas de cbindgen ;
- Aplicaciones Qt con Cargo : cómo simplificar el proceso de creación de una aplicación Qt oxidada tanto como sea posible;
- Más espacio para carga : @llogiq analiza cómo
target
directorios de target
consumen espacio en disco como si no lo fueran; - Un estudio de caso en Heaptrack ( discusión ) - un pequeño informe sobre la optimización del consumo de memoria - usando un asignador del sistema , heaptrack, flamegraph , etc.
- Documentación que aloja docs.rs reubicada en rust-lang-nursery . Esto requirió mejoras significativas al rustdoc oficial, porque los docs.rs anteriores tenían que usar el tenedor parcheado de la cadena de herramientas;
- Problemas para escalar un gran proyecto de óxido de múltiples cajas ( discusión ) - discusión de los problemas de escalar un proyecto creciente de "múltiples cajas " (principalmente sobre el tamaño de los archivos binarios);
- ¿Qué cosas interesantes has aprendido sobre Rust recientemente? - Un tema entretenido de reddit con todo tipo de pequeñas cosas útiles;
Paquetes nuevos y actualizados
- reforma ( discusión ): un marco de alto rendimiento para la computación simbólica (análogo de FORM );
- Noria ( discusión , código ): backend rápido para aplicaciones web;
- bible.rs ( discusión , código ) - un ejemplo de un sitio con actix + diesel para, de repente, una búsqueda conveniente en la biblia;
- sugar-rs ( discusión ) - una colección de macro-azúcar en el espíritu de
hashmap!{ 1 => 2, 2 => 3 }
; - reflow ( discusión ): un conmutador proxy de nivel de sistema, utiliza Tokio;
- hashbrown ( discusión ): un HashMap muy rápido, puerto Rust de Google SwissTable ;
- Formalidad ( discusión ): un lenguaje funcional sin recolección de basura y con evidencia formal (hola, ¿ Coq / Idris ?), Que se puede compilar en contratos inteligentes de Ethereum o CUDA / OpenCL;
- hex ( discusión ): una colección de paquetes para administrar una biblioteca de música;
- soup ( discusión ) es una biblioteca para analizar y manipular HTML, inspirada en la bella mascota de Little Soup. En la implementación usa html5ever ;
- plaga 2.0 ( discusión , código ): el analizador rápido se ha vuelto aún más rápido;
- El emulador de terminal Alacritty ahora puede funcionar en Windows - imagen ;
- slotmap 0.3 ( discusión de qué Mapa de Slot? ): se agregaron tipos de clave personalizados y SecondaryMap (le permite almacenar de manera efectiva información adicional para elementos);
- Gotham 0.3 ( sitio web , discusión ) es un marco web rápido y flexible que se ejecuta en Rust estable. Se actualizaron las dependencias de
tokio
, hyper
y http
, se mejoró el rendimiento, apareció una distribución asincrónica de archivos estáticos y la capacidad de configurar el tiempo de ejecución tokio utilizado; - libdiffuzz (una alternativa orientada a la seguridad al desinfectante de memoria ) fue ( reescrito en Rust );
Nueva RFC
Es bastante conveniente para el RFC ver hacia dónde se dirige el idioma, así que aquí hay algunos interesantes. Hay un enlace "Representado" en el encabezado de los RP, por el cual el RFC está disponible en forma legible.
Y aquí hay algunas discusiones previas a RFC:
Eso es todo, ¡gracias por mirar!
Si no he agregado ningún enlace o evento importante, no dude en dejarlo en los comentarios. :)
KDPV tomado de aquí , las imágenes restantes de los sitios de los respectivos proyectos.