Esta semana en Rust #11
¡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
- Blog: Lanzamiento de la Encuesta sobre el estado de la roya 2023 | Enlace directo a la encuesta
- Convocatoria de propuestas para la edición de Rust 2024
Actualizaciones de proyectos/herramientas
- ratatui: una librería de Rust para cocinar interfaces de usuario de terminal - v0.25.0
- Presentamos a Gooey: Mi opinión sobre un marco de interfaz gráfica de usuario oxidado
- Dos nuevas cajas de Rust de código abierto facilitan la gestión de políticas de cedro
- Presentación de FireDBG - un depurador visual de viajes en el tiempo para Rust
- Fornjot 0.48.0 - kernel CAD b-rep de código abierto escrito en Rust
- Comprometerse con Rust para el código del kernel
- Una implementación de Rust de Binder de Android
- Prevención de violaciones del contexto atómico en el código de Rust con klint
- Rust para Linux — en el espacio
Observaciones/Pensamientos
- La roya está creciendo
- Un problema de por vida curiosamente recurrente
- La madriguera del conejo de los inseguros insectos de Rust
- Cadenas de herramientas de Rust más rápidas para Android
- Los errores más comunes del compilador de Rust que se encuentran en RustRover: Parte 1
- Nueve reglas para la aceleración SIMD de su código Rust (Parte 2): Lecciones generales de aumentar la ingesta de datos en la caja range-set-fire en 7x
- Lo que aprendí haciendo un controlador de hal incrustado en Rust (para el digitalizador de termopar MAX6675)
Tutoriales de Rust
- Rust: Rasgos
- Escribir una VPN de juguete en Rust
- Primeros pasos con Actix Web en Rust
- Primeros pasos con Rocket en Rust
- Tipos genéricos para parámetros de función en Rust 🦀
- Benchmarking Rust Compiler Settings with Criterion: Controlling Criterion with Scripts and Environment Variables
- [series] Multithreading and Memory-Mapping: Refining ANN Performance with Arroy
- [series] Introducción a la creación de una aplicación web en Rust por parte de Tiny HTTP
Miscelánea
- Educación sobre el Rust incrustado: reflexiones y visiones de 2023
- Argumentos predeterminados para funciones en Rust usando macros
- [audio] Rust in Production Ep 1 - InfluxData's Paul Dix
- [audio] Episodio 160: Rust y seguridad en Adobe con Sean Parent
Crate de la semana
El crate de esta semana es constcat, un reemplazo de 'std::concat!', con soporte para variables y expresiones const.
¡Gracias a Ross MacArthur por la autosugestió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.
- Ockam - Corregir advertencias de documentación
- Ockam - Biblioteca - Validar estructuras CBOR de acuerdo con el esquema cddl para 'nodos/models/secure_channel'
- Ockam - Implementar eventos en 'SqlxDatabase'
- Hyperswitch - [REFACTOR]: [Nuvei] Validación de metadatos MCA
- Hyperswitch - [CARACTERÍSTICA] : [Mediodía] Sincronización con Hyperswitch Reference
- Hyperswitch - [CARACTERÍSTICA]: [Zen] Sincronización con Hyperswitch Reference
- Hyperswitch - [REFACTOR] : [Authorizedotnet] Sync with Hyperswitch Reference
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
386 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- habilitar sondas de pila en aarch64 para LLVM 18
- Se ha añadido un nuevo objetivo aarch64-apple-watchos de nivel 3
- añadir soporte hexagonal
- añadir el intervalo del cuerpo de la función a StableMIR
- permitir rasgos 'async_fn_in_trait' con la variante de envío
- cherry-pick "M68k: Fix ODR violation in GISel code (#72797)"
- AIX: corregir metadatos XCOFF
- '-Ztrait-solver=next' a '-Znext-solver'
- analizar correctamente los bloques de generación asíncronos
- añadir un método a StableMIR para comprobar si un tipo es un CStr
- añadir más sugerencias a nombres y valores inesperados de cfg
- añadir soporte para '--env' en 'tracked_env::var'
- add unstable '-Zdefault-hidden-visibility' cmdline flag for 'rustc'
- anotar razones de pánico durante el diseño de enumeración
- intento de resolver problemas de bloqueo (RFC #3086)
- evitar el desbordamiento en la indexación de constantes GVN
- cache param env canonicalization
- marque correctamente los rasgos fn incorporados 'FnPtr'/'FnDef' con efectos
- comprobar los parámetros genéricos después de la Sigatura para main-fn-ty
- recolectar elementos de idioma de AST, deshacerse de 'GenericBound::LangItemTrait'
- los campos de variantes de corrutina se pueden desinicializar
- cobertura: omitir la instrumentación de una función si no se extrajeron intervalos de MIR
- denegar los límites del rasgo '~const' en los encabezados impl inherentes
- desazucarar 'yield' en 'async gen' correctamente, asegurarse de que 'gen' siempre devuelva la unidad
- No fusionar los atributos cfg y doc(cfg) para reexportaciones
- borrar las regiones enlazadas en tiempo de ejecución de 'Instance::fn_sig()' y añadir algunos detalles más a las API de StableMIR
- arreglar ICE 'ProjectionTypes Deref y Field no coincidían'
- arreglar las banderas de subprocesos LLD en el arranque en Windows
- Corregir el número de problema de seguimiento 'waker_getters'
- arreglar la alineación pasada a LLVM para 'simd_masked_load'
- Se corrigió el tamaño dinámico/alinear la lógica de cálculo para tipos empaquetados con cola de rasgo Dyn
- Se corrigen los intervalos superpuestos en las meta-vars delimitadas
- ICE 110453: corregido con errores
- llvm-wrapper: adaptarse a los cambios de la API de LLVM
- convertir 'IMPLIED_BOUNDS_ENTAILMENT' en un error grave de una pelusa
- hacer que la exhaustividad sea utilizable fuera de rustc
- Reducción de partidos: Eliminar el truco 'make_target_blocks'
- Más expresiones correctamente están marcadas para terminar con llaves
- empujar al usuario a matar programas usando CPU excesiva
- resolver de forma oportunista la variable de la región en canonicalizer (en lugar de resolver la variable raíz)
- rechazar correctamente 'default' en elementos const libres
- eliminar la constancia innecesaria de ProjectionCandidate
- reemplace algunas instancias de 'FxHashMap'/'FxHashSet' con alternativas estables (principalmente en 'rustc_hir' y 'rustc_ast_lowering')
- Resolver: reemplazar la tabla de visibilidad en las salidas de resolución con alimentación de consultas
- omitir el comprobador de restricciones de RPIT si se produce un error de tipo de retorno de Borrowck
- Alguna limpieza y mejora para la impl de conversión de referencias no válidas
- Ajustar 'short_ty_string' para reducir el número de archivos
- registrar incondicionalmente alias-relate en el objetivo de la proyección
- actualizar la imagen CI de FreeBSD
- aumentar 'TypeAndMut' y 'ClosureKind' a 'rustc_type_ir'
- use 'if cfg!' en lugar de '#[cfg]'
- use la opción LLVM NoTrapAfterNoreturn
- miri: visita los AllocIds y BorTags en estado de préstamo FrameExtra
- Miri Run: por defecto a la edición 2021
- Miri: Hacer que mmap no use exponer semántica
- ruta rápida para 'declared_generic_bounds_from_env'
- estabilizar 'type_name_of_val'
- estabilizar 'ptr::{from_ref, from_mut}'
- añadir 'core::intrinsics::simd'
- [Agregue un número de columna a 'dbg! ()»(https://github.com/rust-lang/rust/pull/114962)
- añadir más nichos a 'rawvec'
- añadir funciones de recorte de espacios en blanco ASCII a '&str'
- Se corrigieron los casos en los que STD se basaba accidentalmente en Inline(Never)
- Windows: permitir que 'File::create' funcione en archivos ocultos
- std: añadir xcoff en la lista de características del objeto
- codegen: pánico al intentar calcular el tamaño/alineación del tipo externo
- codegen_gcc: simd: implementa los intrínsecos faltantes de simd/generic-arithmetic-pass.rs
- codegen_llvm: establece 'DW_AT_accessibility'
- Cargo: Limpiar los metadatos del paquete
- cargo: no permitir nombre vacío en la especificación de identificación del paquete
- cargo: rellena más huecos de nombre vacíos
- Carga: mantén el bloqueo exclusivo de mutar al vender
- rustdoc: use Map en lugar de Object para los archivos fuente y el índice de búsqueda
- rustdoc: permite cambiar el tamaño de la barra lateral / ocultar la barra superior
- rustdoc-search: se corrige una condición de carrera en la carga del índice de búsqueda
- rustdoc-search: use set ops para clasificar y filtrar
- bindgen: use '\r\n' en Windows
- bindgen: destructores que funcionan mejor en Windows
- clippy: añadir nueva pelusa 'unconditional_recursion'
- clippy: new Lint: 'result_filter_map' / Mirror of 'option_filter_map'
- clippy: no visites cuerpos anidados en 'is_const_evaluatable'
- clippy: 'redundant_pattern_matching': lint 'if let true', 'while let true', 'matches! (.., verdadero)'
- clippy: no peluar 'assertions_on_constants' por 'const _: () = assert! (expr)»
- clippy: 'doc_markdown' Reconoce palabras seguidas de paréntesis vacíos '()' para citar
- clippy: arreglar el manejo de la carpeta en 'unnecessary_to_owned'
- rust-analyzer: deduplicar anotaciones
- rust-analyzer: optimizando el rendimiento con 'Promise.all' 🏎
- Rust-Analyzer: Desugar Doc correctamente para MBE
- rust-analyzer: no asumas ASCII en 'remove_markdown'
- rust-analyzer: resolver alias antes de resolver la variante de enumeración
- Rust-Analyzer: Agregue soporte mínimo para la edición 2024
- rust-analyzer: mover 'WithFixture' a la caja solo dev-dep
- Rust-analyzer: Corregir la discordancia de tipo falso positivo en los patrones de referencia const
- rust-analyzer: la corrección de sintaxis ahora elimina los subárboles con intervalos falsos
- Rust-analyzer: Actualizar los attrs incorporados de rustc
- rust-analyzer: arreglar el analizador de fragmentos que reemplaza las coincidencias con dummies en análisis incompletos
- rust-analyzer: se corrige el reemplazo incorrecto de referencias en la invocación de macros en la asistencia "Convertir a estructura con nombre"
Clasificación del rendimiento del compilador de Rust
Mucho ruido en los resultados de esta semana; Hubo una pausa en el ruido
recientemente, por lo que nuestro umbral de ruido autoinferido bajó y, por lo tanto, cinco PR
fueron marcados artificialmente esta semana (y tres supuestas mejoras fueron
volver a la media). Más allá de eso, tuvimos tres buenas mejoras: la primera
para depurar compilaciones en #117962 (dejando de emitir costosos + no utilizados
'.debug_pubnames' y '.debug_pubtypes'), un segundo después de diesel y serde
en #119048 (evitando algún trabajo innecesario), y un tercero a varios puntos de referencia
en #117749 (agregando algo de almacenamiento en caché de una estructura interna del compilador).
Triaje realizado por @pnkfelix.
Rango de revisión:
57010939..bf9229a2
6 regresiones, 9 mejoras, 3 mixtas; 5 de ellos en rollups
67 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: posponer] RFC: Precise Pre-release Deps
Seguimiento de problemas y solicitudes de incorporación de cambios
- [disposición: fusionar] Admite llamadas recursivas asíncronas (siempre que tengan direccionamiento indirecto)
- [Disposición: Fusionar] Hacer que soft_unstable aparezcan en futuros informes de roturas
- [disposición: fusionar] Problema de seguimiento para ip_in_core
Referencia del idioma
- Ninguna RFC de referencia lingüística entró en el Período Final de Comentarios esta semana.
Directrices de código inseguro
- Ninguna RFC de la Guía de Código Inseguro entró en el Período Final de Comentarios esta semana.
RFCs nuevas y actualizadas
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-12-20 - 2024-01-17 🦀
Virtual
- 20/12/2023 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 26/12/2023 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 28/12/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 03/01/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 09/01/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 11/01/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 16/01/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
Europa
- 27/12/2023 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 28/12/2023 | Viena, AT | Rust Viena
- 11/01/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 11/01/2024 | Wrocław, PL | Rust de Breslavia
- 13/01/2024 | Helsinki, FI | Grupo Rust-lang de Finlandia
América del Norte
- 20/12/2023 | Austin, TX, EE. UU. | Rust ATX
- 27/12/2023 | Austin, TX, EE. UU. | Rust ATX
- 06/01/2024 | Boston, MA, EE. UU. | Reunión de Boston Rust
- 08/01/2024 | Chicago, IL, EE. UU. | Rust de plato profundo
- 09/01/2024 | Seattle, WA, EE. UU. | Cap Hill Rust Codificación/Hackeo/Aprendizaje
- 09/01/2024 | Minneapolis, MN, EE. UU. | Reunión de Rust en Minneapolis
- 14/01/2024 | Cambridge, MA, EE. UU. | Reunión de Boston Rust
- 16/01/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 17/01/2024 | Chicago, IL, EE. UU. | Rust de plato profundo
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
El satélite Tianyi-33 es un satélite experimental de ciencia espacial de 50 kg equipado con un sistema operativo desarrollado de forma independiente por la Universidad de Correos y Telecomunicaciones de Pekín: el sistema operativo en tiempo real de doble kernel basado en Rust RROS. RROS llevará a cabo tareas generales representadas por tensorflow/k8s y tareas en tiempo real representadas por sistemas de archivos en tiempo real y transmisión de red en tiempo real en el satélite. Garantizará la ejecución normal de las aplicaciones de capa superior y las tareas de investigación científica, como la medición del retardo de tiempo entre el satélite y la tierra, la transmisión de vídeo en directo, los servicios de chat web a bordo, los experimentos pseudo-SSH, etc. Esto marca la primera aplicación oficial del mundo de un sistema operativo de doble kernel escrito por Rust en un escenario satelital.
– Qichen en la página web de RROS
¡Gracias a Brian Kung 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