Esta semana en Rust #41
¡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 🥰
Boletines
Actualizaciones de proyectos/herramientas
- Lanzamiento de Musi Lili Retro Game Engine 0.1
- Nutype 0.5.1: mejor soporte no_std y corrección de errores
- Ibis 0.2.0 - Wiki federado con rediseño brillante, basado en Diesel, Actix y Leptos
- dagrs 0.4.2 - Programación basada en flujo en Rust
- Física Aviar 0.2
- Slint 1.9
- Gitoxide - Diciembre 2024
Observaciones/Pensamientos
- Caída de Hiper
- Incrustación de Lua en sqleibniz con Rust
- ¿Qué se necesitaría para agregar tipos de refinamiento a Rust?
- Programación genérica contextual
- Construcción de un sistema seguro de derivación de claves jerárquicas en Rust
- Código de análisis de flujo de datos simplificado en rustc
- Cuatro limitaciones del verificador de préstamos de Rust
- Una revisión de Rust en 2024: ¿qué sigue?
- Mi acción actions-rust-cross ahora tiene almacenamiento en caché incorporado
- Transformando el desarrollo de Rust: Cómo la IA del windsurf triplicó la productividad
Tutoriales de Rust
- Cómo construir y publicar binarios de Rust multiplataforma a través de acciones de Github
- Compilando C para Safe Rust, formalizado
- Optimización innecesaria en Rust: distancias de Hamming, SIMD y autovectorización
Miscelánea
Crate de la semana
El crate de esta semana es OmniLED, un ayudante para mostrar cosas como la hora o el volumen de audio en una matriz de LED que tienen algunos periféricos (como los teclados de juegos).
¡Gracias a llogiq 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
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.
- Rama — proporciona constantes para hosts comunes (de red) al host de rama-net
- Rama — soporte vec/array impl para DnsResolver
- Rama — soporta la capa del exportador HAR (http) en rama
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 398 solicitudes de extracción en la última semana][fusionadas]
- -Znext-solver: modificar las reglas de preferencia del candidato
- 'Variants::Single': no use VariantIdx no válido para enumeraciones deshabitadas
- 'rustc_borrowck': Sugerir cambiar '&raw const' por '&raw mut' si corresponde
- abstraer 'ProcThreadAttributeList' en su propia 'struct'
- añadir la opción '--doctest-compilation-args' para añadir banderas de compilación a la compilación doctest
- add 'ignore-rustc-debug-assertions' a 'tests/ui/associated-consts/issue-93775.rs'
- alinear '{i686,x86_64}-win7-windows-msvc' a sus objetivos principales
- también lint en la opción de comparaciones de punteros de función
- siempre ejecute 'tail_expr_drop_order' lint en la consulta MIR promocionada
- comenzar a implementar la capa del sistema de tipos de aglutinantes inseguros
- limpieza 'TypeVerifier'
- manejo de regiones de limpieza: agregue 'LateParamRegionKind'
- anotar correctamente el tipo de elemento en el mensaje de error 'NonConstFunctionCall'
- Cobertura: desmantelar 'map_data.rs' trasladando sus responsabilidades a otro lugar
- coverage: almacena las regiones de origen de cobertura como 'Span' hasta codegen (toma 2)
- Detectar exprs no válidos en el analizador utilizado por las pruebas de pretty-printer
- detectar '.' faltante en la cadena de métodos en enlaces y sentencias 'let'
- no hagas hielo en lances ilegales de 'dyn*'
- explique por qué un tipo no es elegible para 'impl PointerLike'
- arreglar el orden de '-Z input-stats'
- arreglar las condiciones de const para RPITITs
- arreglar predicados de efecto de los límites de los elementos en el solucionador antiguo
- Corregir error lógico con qué texto se considera espacio en blanco
- corregido el paréntesis de las comparaciones encadenadas por pretty-printer
- prohibir sobrescribir tipos en typeck
- Fundamentos de Polonio sensible a la ubicación
- maneja 'DropKind::ForLint' en corrutinas correctamente
- manejar el renderizado fndef junto con el renderizado de firma
- manejar las restricciones de los miembros directamente en el verificador de tipos mir
- ocultar '= _' como valor constante asociado dentro de los bloques impl
- asegúrese de que no perdemos el valor predeterminado de 'struct' al formatear 'struct'
- asegúrese de que manejamos las gotas 'backwards_incompatible_lint' apropiadamente en la elaboración de gotas
- asegúrese de anotar las causas de ambigüedad en los conflictos de implicaciones positivas/negativas
- mover 'lint_unused_mut' a sub-fn
- next-solver: deshabilitar hack innecesario
- pasa FnAbi a 'find_mir_or_eval_fn'
- señale el nombre de la pelusa en lugar de la letra entera para las pelusas cerradas
- Mejoras de precedencia: cierres y saltos
- Promover powerpc64le-unknown-linux-musl al nivel 2 con herramientas de host
- reexportar más cosas de 'rustc_span::symbol' de 'rustc_span'
- reducir la cantidad de explícito 'FatalError.raise()'
- restringir '#[non_exaustive]' en estructuras con valores de campo predeterminados
- simplificar el manejo de 'SwitchInt'
- Admite objetos de rasgo 'dyn*' de impresión bonita
- use 'PtrMetadata' en lugar de 'Len' en las cuñas de caída de corte
- usar enlaces a la guía de edición para migraciones de edición
- win: use la semántica de cambio de nombre POSIX para 'std::fs::rename' si está disponible
- mir-opt: un sub-BB de un BB de limpieza también debe ser un BB de limpieza en 'EarlyOtherwiseBranch'
- Miri: añade 'track_caller' a los métodos de desove de hilos para mejorar los backtraces
- Miri: añadir advertencia explicando las limitaciones del modo de código nativo
- miri: implementar el bloqueo 'unnamed_socket'
- Miri: implementa el modo de muchas semillas directamente en el controlador
- Miri: proporcionar una forma de comparar los resultados de referencia con la línea de base
- acelerar 'Parser::expected_tokens'
- mejorar un poco 'dependency_format'
- Revisar cursores de token
- Arreglar la regresión de rendimiento en Rustdoc después de los atributos hir
- estabilizar '#[diagnóstico::d o_no_recomendar]'
- core: fix const 'ptr::swap_nonoverlapping' cuando hay punteros en desplazamientos impares
- añadir un argumento de rango a 'vec.extract_if'
- optimizar 'is_ascii' para 'str' y '[u8]' aún más
- implemente 'PointerLike' para 'isize', 'NonNull', 'Cell', 'UnsafeCell' y 'SyncUnsafeCell'
- desimplementar 'PointerLike' para objetos de rasgo
- hashbrown: agregar implementación de SIMD de 128 bits para LoongArch
- compiler-builtins: arregla un error en 'abs_diff'
- cargo: build-std: hacer que Resolve se alinee con lo que se va a construir
- cargo: cargo-package: añadir más rastros
- cargo: cargo-rustc: estabilizar las banderas de arrastre de mayor precedencia
- cargo: paquete: mostrar rutas de archivo sucias relativas a git workdir
- Cargo: Paquete: use RelPath para CWD para el informe de suciedad de VCS
- cargo: añadir el cfg 'test' como un cfg bien conocido antes del cambio de compilador
- cargo: no hash de la ruta absoluta del sysroot en los metadatos de las cajas stdlib
- Cargo: Se corrigió el mensaje de error para que un usuario abriera la caja
- rustfmt: arreglar el prefijo r# de tira incorrecto de las etiquetas
- clippy: add allow-indexing-slicing-in-testsoption
- clippy: no marcar atributos con espacio de nombres desconocido como inútiles
- clippy: no dispares 'filter_map_identity' con un iterador de un array vacío
- clippy: usa la sugerencia de varias partes en 'unnecessary_to_owned'
- Rust-Analyzer: Borrar los diagnósticos de flycheck de forma más granular
- rust-analyzer: arreglar la regla AsmOption en rust.ungram
- rust-analyzer: considere ambos campos de detalle de finalización en 'to_proto'
- rust-analyzer: retrasar la comprobación inicial hasta después de los scripts de compilación
- Rust-analyzer: no le pida al cliente que resuelva por detalles de etiqueta no existentes
- rust-analyzer: no activar el controlador de escritura de envoltura de paréntesis después de las identificaciones
- rust-analyzer: arreglar un caso en el que la finalización no podía expandir una macro
- Rust-analyzer: arreglar los diagnósticos de verificación vacíos que no marcan los archivos como cambiados
- Rust-analyzer: arreglar el espacio de trabajo de flycheck cuando se solicitó pero se encontró el paquete
- Rust-analyzer: arreglar la impresión bonita de los patrones '@'
- Rust-analyzer: Compruebe correctamente si se permite el flychecking del espacio de trabajo
- Rust-Analyzer: reducir la aplicabilidad de la asistencia 'unnecessary_async'
- Rust-analyzer: eliminar la comprobación de 'siempre!' por 'file_id' en 'Runnables'
- rust-analyzer: eliminar salsa del árbol dep del servidor proc-macro
- Rust-analyzer: tomar una referencia en bruto de un deref siempre es seguro
Clasificación del rendimiento del compilador de Rust
La semana pasada nos perdimos la clasificación debido a algunos problemas del proceso, por lo que esta clasificación incluye dos semanas de datos. El resultado general es positivo, debido a las optimizaciones del analizador (#133793), las optimizaciones de resolución de rasgos (#134501, #132325) y el aumento de la caja cc (#134505), que mejoró el rendimiento de las dependencias de C/C++ del compilador.
Triaje realizado por @kobzol. Rango de revisión: 1b3fb316.. 0eca4dd3
Resumen:
| (instrucciones:u) | media | Gama | Recuento |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regresiones ❌
(primario) | 0.5% | [0.3%, 0.8%] | 3 |
| Regresiones ❌
(secundaria) | 1.0% | [1.0%, 1.0%] | 1 |
| Mejoras ✅
(primario) | -1,8% | [-7.5%, -0.3%] | 254 |
| Mejoras ✅
(secundaria) | -1,3% | [-5,4%, -0,3%] | 224 |
| Todos ❌✅ (primarios) | -1,8% | [-7,5%, 0,8%] | 257 |
4 regresiones, 10 mejoras, 12 mixtas; 9 de ellos en rollups 90 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:
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
- Ninguna RFC entró en el Período Final de Comentarios esta semana.
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Especificar el comportamiento de 'archivo!'
- [disposición: fusionar] Estabilizar 'característica(trait_upcasting)'
- [disposición: fusionar] Estabilizar 'derivar(CoercePointee)'
- [disposición: fusionar] Estabilizar 'asm_goto puerta de características'
- [disposición: fusionar] Problema de seguimiento para get_many_mut
- [disposition: merge] '--nocapture' no sigue las convenciones comunes de CLI, lo que lo convierte en un obstáculo para las personas que depuran fallas
- [disposición: fusionar] Problema de seguimiento para 'sub_ptr' (característica 'ptr_sub_ptr')
- [disposición: fusionar] Del iterador para más tuplas
- [disposición: fusionar] Problema de seguimiento para const_swap
- [disposición: fusionar] Problema de seguimiento para const 'alloc::Layout'
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] RFC: Establecer CARGO_CHECK variable de entorno al verificar el tipo
- [nuevo] parámetros sin tamaño en rasgos
- [nuevo] Convertir "reasignación de local inmutable" y "préstamo mutable de local inmutable" de un error grave a un lint denegado por defecto
Próximos eventos
Eventos oxidados entre 2024-12-25 - 2025-01-22 🦀
Virtual
- 26/12/2024 | Virtual (Charlottesville, VA, EE. UU.) | Reunión de Rust en Charlottesville
- 2025-01-02| Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 04/01/2025 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 06/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 07/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 08/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 09/01/2025 | Virtual (Charlottesville, VA, EE. UU.) | Reunión de Rust en Charlottesville
- 09/01/2025 | Miami, FL, EE. UU. | Rust Miami
- 09/01/2025 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 14/01/2025 | Virtual (Dallas, TX, EE. UU.) | Reunión de usuarios de Dallas Rust
- 14/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 15/01/2025 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 16/01/2025 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 21/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 21/01/2025 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 2025-01-22 | Virtual (Róterdam, Países Bajos) | Desarrollo de juegos de Bevy
Asia
- 2025-01-12 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
Europa
- 08/01/2025 | Reading, Reino Unido | Taller de lectura de Rust
- 09/01/2025 | Oslo, NO | Rust Oslo
- 16/01/2025 | Karlsruhe, DE | Rust Hack & Learn Karlsruhe
- 21/01/2025 | Gante, BE | Programación de Sistemas Gante
- 21/01/2025 | Leipzig, SN, DE | Rust - Programación de sistemas modernos en Leipzig
América del Norte
- 26/12/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 2025-01-10 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 16/01/2025 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 18/01/2025 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 21/01/2025 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 2025-01-22 | Austin, TX, Estados Unidos | Rust ATX
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 Who's Hiring en r/rust
Frase de la semana
Solo es una transmutación si es de la región transmutada de std; de lo contrario, es solo una inseguridad brillante.
¡Gracias a Josh por la autosugerencia!
¡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