Esta semana en Rust #6
¡Hola y bienvenidos a otro número de This Week in Rust! Rust es un lenguaje de programación que permite a todo el mundo crear software fiable y eficiente. Este es un resumen semanal de su progreso y comunidad. ¿Quieres que se mencione algo? Etiquétanos en @ThisWeekInRust en Twitter o @ThisWeekinRust en mastodon.social, o envíanos una solicitud de extracción. ¿Quieres participar? Nos encantan las contribuciones.
This Week in Rust se desarrolla abiertamente en GitHub y los archivos se pueden ver en this-week-in-rust.org. Si encuentra algún error en la edición de esta semana, envíe un PR.
Actualizaciones de la comunidad de Rust 🥰
Oficial
- Compilación más rápida con el front-end paralelo en nightly
- Actualización del Consejo de Liderazgo de noviembre de 2023
- Nuestra visión para la especificación de Rust
Fundación
Actualizaciones de proyectos/herramientas
- Slint 1.3 lanzado con estilos nativos renovados y API de JavaScript
- rustc_codegen_gcc: Informe de Progreso #27
- registro de cambios de rust-analyzer #207
- migas de pan 0.1.4
Observaciones/Pensamientos
- ¿Por qué Rust en la producción?
- Creación de una aplicación web en Rust
- Rust sin crates.io
- Cómo mejoré mis tiempos de compilación de Rust en un 75%
- Iterador como alias
- ¿Qué es un equipo?
Tutoriales de Rust
- Construcción e implementación de un generador de sitios estáticos
- Seguimiento del proceso activo actual en Windows con Rust
- Edge IoT con Rust en ESP: Suscriptor MQTT
- Construcción de un servidor de autenticación central con Rust, PostgreSQL, Kafka y gRPC
- Tengo un dúo de Milk-V (y está corriendo Rust)
- [video] Una introducción a Veilid, por Christien Rioux
- [video] Código en Rust con RustRover, por Vitaly Bragilevsky
- [video] ¡Crea una CLI ficticia de GitHub en Rust!
Miscelánea
Crate de la semana
El crate de esta semana es cargo-msrv, un subcomando de carga para averiguar la versión mínima admitida de Rust (MSRV) de tu caja.
Llogiq está un poco preocupado por no haber recibido sugerencias durante dos semanas seguidas, pero aún así te ofrece su elección.
[Por favor, envíen sus sugerencias y votos para la próxima semana] submit_crate!
Convocatoria a la participación
¿Siempre quisiste contribuir a proyectos de código abierto pero no sabías por dónde empezar? ¡Cada semana destacamos algunas tareas de la comunidad de Rust para que las elijas y comiences!
Algunas de estas tareas también pueden tener mentores disponibles, visite la página de tareas para obtener más información.
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
Se fusionaron 364 solicitudes de extracción en la última semana[fusionadas]
- acelerar 'x limpiar'
- llvm-wrapper: eliminar la inclusión de Vectorize.h
- 'rustc_llvm': Enlace a libkstat en Solaris/SPARC
- add -Zcross-crate-inline-threshold=yes
- add 'std::hash::{DefaultHasher, RandomState}' exports
- añadir una nueva opción 'download-ci-llvm = if-unchanged' y habilitarla por defecto para 'profile = codegen'
- permitir configurar el repositorio principal de GitHub
- construir un mejor cuerpo MIR cuando se encuentran errores
- Diseño de cómputo con intervalos para mejorar los errores de ciclo en corrutinas
- Calcular los ámbitos de los préstamos de Polonio sobre el gráfico de la región
- cobertura: evitar la creación de intervalos de nombres de macro mal formados
- Cobertura: Cambiar el nombre del modo de prueba 'Cobertura-Cobertura' a 'Cobertura-Ejecución'
- denegar más límites de rasgos '~const'
- extender los argumentos de rasgos incorporados/automáticos con error cuando tienen el argumento >1
- formatear literales de macro const con una impresora bonita
- Diseño del generador: ignorar préstamos falsos
- dar un mejor diagnóstico para los paréntesis faltantes en los límites de Fn*
- maneja el caso cuando no se encuentra el ID de cambio
- Mejorar el diagnóstico para const ctors en expresiones repetidas de matrices
- hacer que 'FatalErrorMarker' tenga una prioridad más baja que otros pánicos
- en caso de error en la expresión de la cadena de métodos, busque el método que falta en los segmentos anteriores de la cadena
- solo instanciar Binder durante el sondeo de candidato a rasgo integrado de Dyn una vez
- solo use 'normalize_param_env' cuando normalice el predicado en 'check_item_bounds'
- patrones: rechaza punteros sin procesar que no son solo números enteros
- Recuperación de palabras clave de función mal ordenadas/duplicadas
- reordenar las comprobaciones para asegurarse de que la posible expectativa faltante en la Opción/Resultado...
- Mensaje de error de restauración de la corrección de compatibilidad de rustc
- atrapar '{' en let-chains
- sugerir eliminar ';' por ';' dentro de let-chains
- correcciones de inseguridad
- advertir cuando se usa una característica inestable con -Ctarget-feature
- Cuando no encuentre assoc fn en el tipo, busque builder fn
- Miri: 'data_race': enlace a documentos para condiciones de carrera 'inusuales'
- Miri: FreeBSD añadiendo soporte para intercepción de getentropía
- miri: implementar round.ps y round.pd SSE4.1 intrínsecos
- Miri: Comparte la corrección de compatibilidad de getentropía en varios Unixes
- Miri: Tratar la estática local de la rosca en la rosca principal como raíces estáticas para el análisis de fugas
- emitit '#[inline]' on 'derive(Debug)'
- estabilizar 'result_option_inspect'
- mover 'BorrowedBuf' y 'BorrowedCursor' de 'std:io' a 'core::io'
- funciones auxiliares que consumen cierres para ayudantes 'fmt::D ebug'
- no entres en pánico en '<BorrowedCursor>::write'
- Futuros: proporcionan un mecanismo no destructivo para determinar si un sumidero y una corriente están emparejados
- codegen-cranelift: implementar los intrínsecos AArch64 necesarios para simd-json
- codegen-cranelift: implemente intrínsecos criptográficos AES-NI y SHA256 usando asm en línea
- codegen-cranelift: implementa una gran cantidad de intrínsecos SIMD
- codegen_gcc: no emita la sección '.eh_frame' si usa -Cpanic=abort
- cargo: 'query'{'_vec'} use 'IndexSummary'
- Cargo: Agrega un mejor mensaje de error cuando no puede encontrar la sección de búsqueda
- cargo: agregar recolección de basura en caché
- Credencial de carga: incluir archivos de licencia en todas las cajas publicadas
- cargo: no permitir nombre de característica vacío
- cargo: hacer enlaces de navegador a partir de rutas de archivos HTML
- cargo: filtrar las dependencias 'cargo-credential-*' por sistema operativo
- cargo: arreglar '--quiet' que se usa con subcomandos anidados
- Cargo: Corregir el comportamiento no determinista en la repoblación de último uso
- Cargo: no entres en pánico cuando no puedas analizar rustc commit-hash
- cargo: conservar los descriptores del archivo del servidor de trabajo en la invocación de rustc en 'fix_exec_rustc'
- Cargo: Reportar errores de semver más detallados
- rustdoc: elide correctamente los args del efecto anfitrión de cajas cruzadas
- clippy: 'arc_with_non_send_sync' Mejorar la resolución sugerida
- clippy: 'map_identity': respeta la ergonomía del partido
- clippy: 'mod_module_files' No emita pelusa para mod.rs en las pruebas
- clippy: añadir detalles de tipo a la nota 'unnecessary_fallible_conversions'
- clippy: desestructurar 'Conf' en 'register_lints'
- clippy: deshabilita 'vec_box' cuando se usan diferentes asignadores
- clippy: no compruebes si hay variables enlazadas en el último tiempo, comprueba si hay variables enlazadas que escapan
- clippy: corrige la comprobación de divergencia de 'manual_let_else'
- clippy: pelusa 'needless_borrow' y 'explicit_auto_deref' en la mayoría de los accesos al campo de la Unión
- clippy: mover 'suspicious_doc_comments' a doc pass
- clippy: reemplaza 'if_chain' con let chains
- rust-analyzer: add config para preferir/ignorar los módulos de preludio al insertar importaciones
- Rust-analyzer: Vista previa del campo ADT al pasar el mouse
- rust-analyzer: find 'Self' reference
- rust-analyzer: ignora el attr 'doc(hidden)' si no hay ningún cuerpo presente
- Rust-Analyzer: Lugar de captura de cierre truncado para puntero sin procesar
- Rust-analyzer: Mejorar la comprobación de la macro de inclusión
Clasificación del rendimiento del compilador de Rust
Una semana dominada por una mejora de rendimiento en particular que condujo a enormes ganancias de rendimiento: ¡un promedio de mejora del 5% en 121 casos de prueba! La mejora del rendimiento proviene de la adición de una sugerencia '#[inline]' a la salida de '#[derive(Debug)]', lo que presumiblemente permite al compilador eliminar más fácilmente el código muerto, reduciendo el tamaño binario y la cantidad de código que realmente necesita ser generado por código.
Triaje realizado por @rylev. Rango de revisión: 7b97a5ca.. 173b6e68
Resumen:
| (instrucciones:u) | media | Gama | Recuento | |:----------------------------------:|:-----:|:---------------:|:-----:| | Regresiones ❌
(primaria) | 0.4% | [0.2%, 0.9%] | 10 | | Regresiones ❌
(secundaria) | 1.9% | [0,2%, 3,6%] | 12 | | Mejoras ✅
(primaria) | -5,6% | [-49,2%, -0,1%] | 111 | | Mejoras ✅
(secundaria) | -3,5% | [-25,0%, -0,2%] | 155 | | Todos ❌✅ (primario) | -5,1% | [-49,2%, 0,9%] | 121 |2 regresiones, 2 mejoras, 3 mixtas; 3 de ellos en rollups 55 comparaciones de artefactos realizadas en total
RFC aprobados
Los cambios en Rust siguen el proceso de Rust RFC (solicitud de comentarios). Estos son los RFC que se aprobaron para su implementación esta semana:
- Esta semana no se aprobaron RFC.
Período final de comentarios
Cada semana, el equipo anuncia el 'período final de comentarios' para las RFC y las relaciones públicas clave que están llegando a una decisión. Expresa tus opiniones ahora.
RFC
- [disposición: fusionar] RFC: Sustitución de dependencias públicas/privadas
Seguimiento de problemas y solicitudes de incorporación de cambios
- [disposición: fusionar] Problema de seguimiento para mutex_unpoison
- [disposición: fusionar] Problema de seguimiento para la coerción de conversión de dyn
- [disposición: fusionar] rustdoc-search: añadir soporte para rasgos y tipos asociados
Referencia del idioma
- Ninguna RFC de referencia lingüística entró en el Período Final de Comentarios esta semana.
Directrices de código inseguro
- No hay pautas de código inseguro que ingresaron al período final de comentarios esta semana.
RFCs nuevas y actualizadas
- [nuevo] Añadir bases de ruta con nombre a la carga (v2)
- [nuevo] RFC: Subrayado const asociado
- [nuevo] Añadir función prohibida convierte RFC
- [nuevo] Características de destino de estructura RFC
- [nuevo] Crear 0000-cargo-dns.md
Convocatoria de pruebas
Un paso importante para la implementación de RFC es que las personas experimenten con el método implementación y dar retroalimentación, especialmente antes de la estabilización. Lo siguiente Las RFC se beneficiarían de las pruebas de usuario antes de seguir adelante:
- Ninguna RFC emitió una convocatoria para pruebas esta semana.
Si usted es un implementador de funciones y desea que su RFC aparezca en la lista anterior, agregue la nueva 'llamada para pruebas' a su RFC junto con un comentario que proporcione instrucciones de prueba y/o orientación sobre qué aspecto (s) de la función necesitan pruebas.
Próximos eventos
Eventos oxidados entre 2023-11-15 - 2023-12-13 🦀
Virtual
- 15/11/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 15/11/2023 | Virtual (Richmond, VA, EE. UU.) | Conferencia de plomeros de Linux
- 15/11/2023 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 16/11/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 16/11/2023 | Virtual (San Diego, CA, EE. UU.) | Rust de San Diego
- 16/11/2023 | Virtual (Vilnius, LT) | Grupo de Meetup de Vilnius Rust and Go
- 21/11/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 21/11/2023 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 23/11/2023 | Virtual (Edmonton, AB, CA) | Grupo de usuarios de Edmonton R - Yegrug
- 28/11/2023 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 29/11/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 30/11/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 30/11/2023 | Virtual (Dublín, IE) | Rust Dublín
- 01/12/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 02/12/2023 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 05/12/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 05/12/2023 | Virtual (Búfalo, NY, EE. UU.) | Reunión de Buffalo Rust
Europa
- 21/11/2023 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 23/11/2023 | Biel/Bienne, CH | Rust Bern
- 07/12/2023 | Aarhus, Dinamarca | Rust Aarhus
- 30/11/2023 | Bruselas, BE | Lambda Bruselas
América del Norte
- 15/11/2023 | Richmond, VA, EE. UU. + Virtual | Conferencia de plomeros de Linux
- 16/11/2023 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 16/11/2023 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 16/11/2023 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 21/11/2023 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 22/11/2023 | Austin, TX, EE. UU. | Rust ATX
- 28/11/2023 | Pasadena, CA, EE. UU. | Pasadena Thursday Go / Rust
- 12/12/2023 | Seattle, WA, EE. UU. | Cap Hill Rust Codificación/Hackeo/Aprendizaje
Oceanía
- 21/11/2023 | Christchurch, Nueva Zelanda | Grupo de encuentro de Christchurch Rust
- 28/11/2023 | Canberra, ACT, AU | Rust Canberra
- 11/12/2023 | Perth, WA, AU | Grupo de Meetup de Rust Perth
Si está ejecutando un evento de Rust, agréguelo al calendario para obtener que se menciona aquí. Recuerde agregar un enlace al evento también. Envíe un correo electrónico al [Equipo de la comunidad de Rust] comunidad para acceder.
Empleos
Por favor, vea el último hilo de Quién está contratando en r/rust
Frase de la semana
decidí seguir aprendiendo Rust porque me gustaba la sintaxis. Me gustó la velocidad. Me gustó la comunidad. Me gustó todo. Se sintió como un soplo de aire fresco: una sintaxis más intuitiva que Python, JavaScript o C, pero aún más rápida.
¡Gracias a Goren Barak por la autosugestión!
¡Por favor, envíe sus cotizaciones y vote para la próxima semana!
This Week in Rust es editado por: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin, bennyvasquez.
El alojamiento de la lista de correo electrónico está patrocinado por The Rust Foundation