Esta semana en Rust #34
¡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 X (antes 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, por favor envíe un PR.
¿Quieres tener TWIR en tu bandeja de entrada? Suscríbete aquí.
Actualizaciones de la comunidad de Rust 🥰
Oficial
- Actualización de los objetivos del proyecto en octubre
- Próximos pasos en la política de marcas registradas de Rust
- Este ciclo de desarrollo en carga: 1.83
- Reorganizar el equipo compilador y reconocer a los miembros de nuestro equipo
- Este mes en nuestra infra de pruebas: octubre de 2024
- Convocatoria de propuestas: Objetivos del proyecto Rust 2025h1
Fundación
- Resumen del tercer trimestre de 2024 de Rebecca Rumbul
- Anuncio de los miembros de la Fundación Rust: CodeDay, OpenSource Science (OS-Sci) y PROMOTIC
Boletines
Actualizaciones de proyectos/herramientas
- Anunciando Intentrace, un strace alternativo para todos
- Inicio rápido de Ractor
- Anunciando Sycamore v0.9.0
- Versión CXX-Qt 0.7
- Un juego de plataformas 'educativo' para que los niños aprendan matemáticas y lectura, y un montón para los desarrolladores
- [ZH][ES] Seleccionar componentes HTML en Rust declarativo
Observaciones/Pensamientos
- Seguridad en un mundo inseguro
- MinPin: otra propuesta de pin
- Alcanzado el límite de recursividad... en tiempo de construcción?
- Construyendo software confiable: el poder de las pruebas en Rust
- Async Rust no es seguro con io_uring
- Macros, seguridad y SOA
- ¿Qué tan grande es tu futuro?
- Una comparación del verificador de préstamos de Rust con el de C#
- API de transmisión de audio en Rust pt. 3: Decodificación de audio
- [audio] InfinyOn con Deb Roy Chowdhury
Tutoriales de Rust
- Diferencia entre iter() y into_iter() en Rust
- Punto muerto furtivo de Rust con bloques 'if let'
- Por qué me encanta Rust para tokenizar y analizar
- Optimizaciones de "cadena alemana" en Spellbook
- Sintaxis más sutil de Rust
- Analizando argumentos en Rust sin dependencias
- Forma sencilla de hacer soporte para i18n en Rust con ejemplos y pruebas
- Cómo clonar una vaca a poca profundidad
- Desarrollo principiante de Rust ESP32 - Snake
- [video] Colecciones e iteradores de Rust desmitificados 🪄
Investigación
Miscelánea
- Federales: El software crítico debe abandonar C/C++ para 2026 o enfrentar riesgos
- [audio] Hablemos de Rust con John Arundel
- [audio] Explorando Rust para Sistemas Embebidos con Philip Markgraf
Crate de la semana
El crate de esta semana es wtransport, una implementación de la especificación WebTransport, un sucesor de WebSockets con muchas características adicionales.
¡Gracias a Josh Triplett por la sugerencia!
Por favor, envíen sus sugerencias y votos para la próxima semana!
Llamadas a la realización de pruebas
Un paso importante para la implementación de RFC es que las personas experimenten con el 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 avanzar:
RFCs
- No se emitieron convocatorias para pruebas esta semana.
Rust
- No se emitieron convocatorias para pruebas esta semana.
Rustup
- No se emitieron convocatorias para pruebas esta semana.
Si 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.
Llamado a la participación; Proyectos y ponentes
CFP - Proyectos
¿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 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, por favor envía tareas aquí o a través de un PR to TWiR o poniéndote en contacto con X (antes Twitter) o Mastodon!
CFP - Eventos
¿Eres un orador nuevo o experimentado que busca un lugar para compartir algo genial? Esta sección destaca los eventos que se están planificando y que están aceptando presentaciones para unirse a su evento como orador.
Si usted es un organizador de eventos que espera expandir el alcance de su evento, envíe un enlace al sitio web a través de un PR to TWiR o comunicándose en X (anteriormente Twitter) o Mastodon!
Actualizaciones del Proyecto Rust
Se [fusionaron 473 solicitudes de extracción en la última semana][fusionadas]
- tenga en cuenta la profundidad de límite tardío al capturar todas las duraciones opacas
- añadir '--print host-tuple' para imprimir la tupla de destino del host
- añadir 'F16' y 'F128' a 'invalid_nan_comparison'
- añadir 'LP64E' RISC-V ABI
- también tratar la definición principal 'impl' como transparente con respecto a los módulos
- Atributos de limpieza alrededor de turnos no marcados y negación no marcada en const
- limpieza op lookup in HIR typeck
- recopila los límites de los elementos para los RPITIT a partir de las cláusulas de rasgo donde son similares a los tipos asociados
- no forzar los efectos de constancia '~const' en typeck si 'rustc_do_not_const_check'
- no peluques 'irrefutable_let_patterns' en los patrones iniciales si 'else if' deja cadenas
- doble verificación de la constancia condicional en MIR
- asegúrese de que Resume arg sobreviva a la región vinculada a corrutinas
- encuentre el contenedor genérico en lugar de simplemente buscar el asociado con const arg
- arreglar el pánico del compilador con un gran número de hilos
- sugerencia de corrección para el error de diagnóstico E0027
- Se corrige la validación al reducir los límites del rasgo '?"
- Sugerencia de implementación para nunca escribir lints de reserva
- mejorar la pelusa 'missing_abi'
- mejorar los diagnósticos de copia/clonación de derivación duplicada
- llvm: coincide con la nueva alineación de enteros de 128 bits de LLVM en sparc
- Hacer que la salida de ayuda de Codegen sea más consistente
- asegúrese de que 'type_param_predicates' se resuelva correctamente para RPITIT
- pase 'RUSTC_HOST_FLAGS' de una vez sin el bucle for
- portar la mayor parte de '--print=target-cpus' a Rust
- registrar '~const' preds para ajustes 'Deref' en HIR typeck
- rechazar autotipos genéricos
- remapear la vida útil de impl-trait en HIR en lugar de reducir AST
- eliminar el caso '""' de la declaración de coincidencia 'llvm_abiname' de RISC-V
- eliminar 'do_not_const_check' de los métodos 'Iterator'
- Eliminar región de los ajustes
- eliminar el soporte para '-Zprofile' (instrumentación de cobertura estilo gcov)
- Reemplace las conversiones de tiempo manuales por las estándar, análisis de formato de tiempo Comptime
- sugerir la creación de tuplas unarias cuando los tipos no coinciden con un rasgo
- soporte 'clobber_abi' y registros vectoriales (solo clobber) en el ensamblaje en línea de PowerPC
- Intente señalar cuándo las reglas de captura de por vida de la edición 2024 causan problemas de Borrowck
- typingMode: fusionar intercrate, reveal y 'defining_opaque_types'
- miri: cambiar 'futex_wait' errno de Scalar a IoError
- estabilizar 'const_arguments_as_str'
- estabilizar 'if_let_rescope'
- marque 'str::is_char_boundary' y 'str::split_at*' de manera inestable 'const'
- eliminar el soporte const para 'align_offset' y 'is_aligned'
- añadir de manera inestable 'ptr::byte_sub_ptr'
- implement 'From<&mut {slice}>' para 'Box/Rc/Arc<{slice}>'
- rc/Arc: no filtre la asignación si la caída entra en pánico
- agregar implementaciones de LowerExp y UpperExp a NonZero
- use la impl de Hacker's Delight en 'i64::midpoint' en lugar de la impl ancha 'i128'
- xous: sync: eliminar el atributo 'rustc_const_stable' en Condvar y Mutex 'new()'
- añadir macro 'const_panic' para que sea más fácil volver al pánico sin formato en const
- Cargo: Downgrade Version-exists Error a warning on dry-run
- cargo: añadir más metadatos a 'rustc_fingerprint'
- cargo: añadir semántica transaccional a 'rustfix'
- cargo: añadir el inestable flag '-Zroot-dir' para configurar la ruta desde la que se debe invocar rustc
- cargo: permitir que los scripts de compilación informen mensajes de error a través de 'cargo::error'
- cargo: cambiar las rutas de configuración para marcar solo 'CARGO_HOME' para cargo-script
- Cargo: Descargar DEP transitivos dirigidos de con la plataforma de destino de DEPS de artefacto
- Corrección de carga: Seguimiento de la versión en los archivos de información de huellas dactilares
- cargo: eliminar el requisito para --target al invocar Cargo con -Zbuild-std
- rustdoc: Arreglar '--show-coverage' cuando se usa el formato de salida JSON
- rustdoc: Unificar los márgenes de los campos 'struct' variantes con los campos 'struct'
- Rustdoc: Hacer que DocTest Span modifique un cambio en la edición 2024
- rustdoc: omitir la herencia de estabilidad para algunos tipos de artículos
- mdbook: mejorar el soporte de temas cuando JS está deshabilitado
- mdbook: cargar el toc de la barra lateral desde un archivo JS compartido o iframe
- clippy: 'infinite_loops': arreglar sugerencias incorrectas sobre funciones/cierres asíncronos
- clippy: 'needless_continue': verifique la consistencia de las etiquetas antes de la advertencia
- clippy: el atributo 'no_mangle' requiere unsafe in Rust 2024
- clippy: añadir nueva pelusa 'trivial_map_over_range'
- clippy: sugerencia de código de limpieza para 'into_iter_without_iter'
- clippy: no use 'gen' como nombre de variable
- clippy: no elimines consts sin nombre y elementos anidados dentro de las funciones en 'missing_docs_in_private_items'
- clippy: extiende 'large_include_file' lint para trabajar también en los atributos
- clippy: arreglar 'allow_attributes' cuando se expande desde algunas macros
- clippy: mejora la visualización de la página clippy lints cuando JS está deshabilitado
- clippy: nueva pelusa 'map_all_any_identity'
- clippy: nueva pelusa 'needless_as_bytes'
- clippy: nueva pelusa 'source_item_ordering'
- clippy: el iterador de retorno no debe capturar vidas en Rust 2024
- Clippy: use Match Ergonomics compatible con las ediciones 2021 y 2024
- rust-analyzer: permitir la interpretación de consts y estáticas con el comando de función interpreta
- rust-analyzer: evitar la mutabilidad interior en 'TyLoweringContext'
- rust-analyzer: no renderizar metainformación al pasar el cursor sobre los usos
- rust-analyzer: add assist para generar un alias de tipo para una función
- rust-analyzer: renderizar bloques externos en 'file_structure'
- rust-analyzer: muestra los valores 'estáticos' al pasar el mouse
- Rust-analyzer: Importación de autocompletar para la función y el módulo con alias
- rust-analyzer: arreglar el servidor que no cumple con el soporte de actualización de diagnóstico
- rust-analyzer: solo analiza 'seguro' como kw contextual en bloques externos
- Analizador de Rust: Analice correctamente los patrones con la tubería principal en todos los lugares
- rust-analyzer: soporta el nuevo atributo '#[rustc_intrinsic]' y cuerpos alternativos
Clasificación del rendimiento del compilador de Rust
Una semana dominada por una gran mejora y una gran regresión donde, afortunadamente, la mejora tuvo un mayor impacto. La regresión parece haber sido causada por una pelusa recién introducida que podría tener problemas de rendimiento. La mejora se produjo en la construcción de rustc con visibilidad protegida, lo que reduce el número de reubicaciones dinámicas necesarias, lo que conduce a algunas buenas ganancias de rendimiento. En una gran parte del conjunto de intérpretes, el compilador es, en promedio, un 1 % más rápido después de esta semana en comparación con la semana pasada.
Triaje realizado por @rylev. Rango de revisión: c8a8c820.. 27e38f8f
Resumen:
| (instrucciones:u) | media | Gama | Recuento |
|:----------------------------------:|:-----:|:---------------:|:-----:|
| Regresiones ❌
(primario) | 0.8% | [0.1%, 2.0%] | 80 |
| Regresiones ❌
(secundaria) | 1.9% | [0.2%, 3.4%] | 45 |
| Mejoras ✅
(primario) | -1,9% | [-31.6%, -0.1%] | 148 |
| Mejoras ✅
(secundaria) | -5,1% | [-27.8%, -0.1%] | 180 |
| Todos ❌✅ (primarios) | -1.0% | [-31.6%, 2.0%] | 228 |
1 regresión, 1 mejora, 5 mixta; 3 de ellos en rollups 46 comparaciones de artefactos realizadas en total
RFC aprobados
Los cambios en Rust siguen el proceso de Rust RFC (solicitud de comentarios). Estos son las RFC que se aprobaron para su implementación esta semana:
- [RFC] Valores de campo predeterminados
- RFC: Dar a los usuarios el control sobre la unificación de funciones
Período final de comentarios
Cada semana, el equipo anuncia el 'período final de comentarios' para las RFC y las RP clave que están llegando a una decisión. Expresa tus opiniones ahora.
RFCs
- [disposición: fusionar] Agregar soporte para 'usar Trait::func'
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Estabilizar ensamblaje en línea Arm64EC
- [disposición: fusionar] Estabilizar ensamblaje en línea s390x
- [disposición: fusionar] rustdoc-search: simplificar las reglas para genéricos y parámetros de tipo
- [disposición: fusionar] Arreglar ICE al pasar argumentos que crean DefId a legacy_const_generics.
- [disposición: fusionar] Problema de seguimiento para 'const_option_ext'
- [disposición: fusionar] Problema de seguimiento para const_unicode_case_lookup
- [disposición: fusionar] Rechazar el tiempo de vida bruto seguido de ''', como lo hacen los tiempos de vida regulares
- [disposición: fusionar] Imponer que las vidas en bruto deben ser identificadores sin procesar válidos
- [disposición: fusionar] Estabilizar las características de destino 'multivalor', 'tipos de referencia' y 'llamada de cola' de WebAssembly
Carga
- No hay problemas de seguimiento de carga ni PR ingresaron al período de comentarios finales esta semana.
Equipo lingüístico
- Ninguna propuesta de equipo lingüístico entró en el Período Final de Comentarios esta semana.
Referencia lingüística
- No hay RFC de referencia de idioma ingresó al Período Final de Comentarios esta semana.
Directrices de códigos inseguros
- No hubo problemas de seguimiento de pautas de código inseguro o PR ingresaron al período de comentarios finales esta semana.
RFC nuevas y actualizadas
- [nuevo] Implementar el marco de actualización para la firma de proyectos
- [new] [RFC] Desempaquetado de argumentos de función estática
- [nuevo] [RFC] ABI explícito en extern
- [nuevo] Añadir RFC de homogeneous_'try_blocks'
Próximos eventos
Eventos oxidados entre 2024-11-06 - 2024-12-04 🦀
Virtual
- 06/11/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 07/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 08/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 12/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 14/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 14/11/2024 | Virtual y presencial (Lehi, UT, EE. UU.) | Rust de Utah
- 14/11/2024 | Virtual y presencial (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 15/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 19/11/2024 | Virtual (Los Ángeles, CA, EE. UU.) | DevTalk LA
- 19/11/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 20/11/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 21/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 21/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 21/11/2024 | Virtual (Róterdam, Países Bajos) | Desarrollo de juegos de Bevy
- 25/11/2024 | Bratislava, SK | Grupo de encuentro de Bratislava Rust
- 26/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 28/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 28/11/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 03/12/2024 | Virtual (Buffalo, NY, EE. UU.) | Encuentro de Buffalo Rust
Asia
- 28/11/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
- 30/11/2024 | Tokio, JP | Rust de Tokio
Europa
- 06/11/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 06/11/2024 | París, FR | Rustáceos de París
- 09/11/2024 - 11/11/2024 | Florencia, IT | Laboratorio de Rust
- 12/11/2024 | Londres, Reino Unido | Grupo de usuarios de Rust London
- 12/11/2024 | Zúrich, CH | Rust de Zúrich
- 13/11/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 14/11/2024 | Estocolmo, SE | Estocolmo Rust
- 19/11/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 19/11/2024 | París, FR | Rust Paris
- 21/11/2024 | Edimburgo, Reino Unido | Rust y sus amigos
- 21/11/2024 | Oslo, NO | Rust Oslo
- 23/11/2024 | Basilea, CH | Basilea Rust
- 26/11/2024 | Varsovia, PL | Rust Varsovia
- 27/11/2024 | Dortmund, DE | Rust Dortmund
- 28/11/2024 | Aarhus, DK | Rust Aarhus
- 28/11/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 28/11/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 28/11/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 28/11/2024 | Praga, CZ | Rust Praga
- 04/12/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
América del Norte
- 07/11/2024 | Chicago, Illinois, Estados Unidos | Encuentro de Rust en Chicago
- 07/11/2024 | Montreal, QC, CA | Rust Montreal
- 07/11/2024 | San Luis, MO, EE. UU. | STL Rust
- 12/11/2024 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
- 12/11/2024 | Nueva York, NY, EE. UU. | Rust Nueva York
- 14/11/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 15/11/2024 | Ciudad de México, DF, MX | Rust MX
- 15/11/2024 | Somerville, MA, EE. UU. | Encuentro de Boston Rust
- 19/11/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 23/11/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 25/11/2024 | Ferndale, Michigan, Estados Unidos | Rust de Detroit
- 27/11/2024 | Austin, TX, Estados Unidos | Rust ATX
Oceanía
- 12/11/2024 | Christchurch, Nueva Zelanda | Grupo de encuentro de Christchurch Rust
Si está ejecutando un evento de Rust, agréguelo al calendario para obtener que se menciona aquí. Por favor, 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, consulte el último hilo de Quién está contratando en r/rust
Frase de la semana
Cualquier proyecto de C suficientemente complicado contiene una implementación adhoc, informalmente especificada, plagada de errores y lenta de la mitad de la carga.
– Folkert de Vries en RustNL 2024 (grabación en youtube)
¡Gracias a Collin Richards por la sugerencia!
¡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