Esta semana en Rust #10
¡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
Boletines informativos
Actualizaciones de proyectos/herramientas
- registro de cambios de rust-analyzer #211
- Generador de música para PC
- Anuncio de mfio - E/S de finalización para todos
- Watchexec Library 3.0 y CLI 1.24
- [serie] Inspirado en Spotify: Elevando Meilisearch con Hybrid Search y Rust
Observaciones/Pensamientos
- Rust Is Beyond Object-Oriented, Part 3: Inheritance
- Ser Rusty: Descubriendo los axiomas de diseño de Rust
- ¿Cuándo no se envían futuros?
- 'por esperar' y la batalla de los arroyos amortiguados
- poll_progress
- Rust y ThreadX - experimentos con un RTOS escrito en C, un antiguo componente de software certificado
- Nueve reglas para la aceleración SIMD de su código Rust (Parte 1): Lecciones generales de aumentar la ingesta de datos en la caja range-set-fire en 7x
- Contribuyendo a Rust como novato
- [audio] Explorando el impacto de Rust en la eficiencia y el ahorro de costes, con Stefan Baumgartner
Tutoriales de Rust
- Errores comunes con Rust Async
- Embajada en ESP: Transmisor UART
- Escribir una herramienta CLI en Rust con Clap
- Memoria e iteración
- Primeros pasos con Axum - El framework web más popular de Rust
- Exploración del SDK de AWS Lambda en Rust
- Práctico Rust del lado del cliente para Android, iOS y Web
- [video] Advenimiento del Código 2023
Miscelánea
- Turbofish ::<>
- Rust Meetup y grupos de usuarios
- Adoptando Rust: el libro de jugadas que faltaba para gerentes y CTO
- SemanticDiff 0.8.8 añade soporte para Rust
Crate de la semana
El crate de esta semana es io-adapters, una caja que te permite convertir entre diferentes API grabables ('io' vs. 'fmt').
¡Gracias a Alex Saveau 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.
- greptimedb - Mejora de la API para el resultado de la consulta sql de impresión bonita en la salida http 1
- greptimedb - Unificar patrones de constructores
- tokio - Ejecutar pruebas de telar en oss-fuzz 4
- Ockam - Biblioteca - Validar estructuras CBOR de acuerdo con el esquema cddl para 'kafka/protocol_aware' y 'nodes/services'
- Ockam - Comando - refactorizar para usar interfaces tipadas para implementar comandos para 'relés'
- Ockam - Haz que install.sh no falle cuando la última versión ya está instalada
- zerocopy - Use cargo-semver-checks para asegurarse de que la función 'derivar' no cambie la superficie de la API
- zerocopy - Verifique que el trabajo de CI 'all-jobs-succeeded' dependa de todos los demás trabajos
- Hyperswitch - [REFACTOR]: [Nuvei] Validación de metadatos MCA
- Hyperswitch - [Característica]: [Mediodía] Sincronización con Referencia de Hyperswitch
- Hyperswitch - [BUG] : Los errores de deserialización de metadatos MCA deben ser 4xx
- Hyperswitch - [Característica]: [Zen] Sincronización con Hyperswitch Reference
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
391 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- introducir soporte para bloques 'async gen'
- implementar RFC de reglas de captura de por vida de la edición 2024
- Soporte de plataforma 'RISCV32'
- añadir teeos std impl
- 'never_patterns': Analizar los brazos sin cuerpo
- 'rustc_symbol_mangling,rustc_interface,rustc_driver_impl': Aplicar 'rustc::p otential_query_instability' lint
- añadir información de la variante ADT a StableMIR y terminar de implementar 'TyKind::internal()'
- añadir 'deeply_normalize_for_diagnostics', usarlo en coherencia
- añadir comentario sobre mantener las banderas sincronizadas entre bootstrap.py y bootstrap.rs
- añadir compatibilidad con TLS emulado
- agregar evaluación de instancia y métodos para leer una asignación en StableMIR
- añadir lint contra comparaciones ambiguas de puntero ancho
- agregar método para obtener el tipo de un valor R en StableMIR
- añadir más intrínsecos a la plataforma SIMD
- añadir opciones de compilación segura
- añadir soporte para 'gen fn'
- Agregar soporte para hacer que las características de la biblioteca sean internas
- Se ha añadido una sugerencia sombreada para la superposición de tipos asociados
- evitar añadir funciones internas a 'symbols.o'
- evite instanciar infer vars con infer
- cambiar la captura previa para evitar el interbloqueo
- Evaluación en tiempo de compilación: detectar escrituras a través de punteros inmutables
- Cobertura: Sé más estricto con lo que cuenta como una "macro visible"
- Cobertura: Fusionar intervalos refinados en una pasada final separada
- Cobertura: Simplificar la heurística para ignorar los intervalos de retorno 'async Fn'
- cobertura: use 'SpanMarker' para mejorar los intervalos de cobertura para las expresiones 'if!
- desduplicado para sugerencias duplicadas
- descartar intervalos no válidos en bloques externos
- No poner entre paréntesis la 'estructura' exterior iluminada dentro de los protectores de partido
- no incluir alcances de destrucción en THIR
- no imprima el parámetro del efecto anfitrión en pretty 'path_generic_args'
- no advertir que un patrón vacío es inalcanzable si no estamos seguros de que los datos sean válidos
- forzar 'must_use' en los tipos asociados y RPITIT que tienen un rasgo de uso obligatorio en los límites
- implementar explícitamente 'DynSync' y 'DynSend' para 'TyCtxt'
- corregir 'is_foreign_item' para la instancia StableMIR
- arreglar la comprobación de caída de const
- arreglar la recopilación in situ que no se reasigna cuando es necesario
- arreglar el ICE del analizador sintáctico al recuperar 'dyn'/'impl' después de 'for<...>'
- corrección: corrija el arg para el diagnóstico 'sugerir usar sintaxis de función asociada'
- generalizar el uso de LLD en bootstrap
- Generalizar: el identificador produce un error de verificación en los alias
- implementar el indicador del compilador '--env' (sin soporte para 'tracked_env')
- implementar 'repr(packed)' para 'repr(simd)'
- mejorar 'print_tts'
- interpretar: hacer accesible 'numeric_intrinsic' desde Miri
- Hacer que los generadores asíncronos se fusionen de forma predeterminada
- asegúrese de que 'panic_nounwind_fmt' aún se pueda insertar completamente (por ejemplo, para 'panic_immediate_abort)'
- solo verifique la referencia del rasgo principal para la seguridad del objeto
- bonitas referencias de rasgos 'Fn<(..., ...)>' con paréntesis (casi) siempre
- Privacidad: Visitar rasgo def id de proyecciones
- proporcionar contexto cuando no se puede llamar a '?' debido a 'Result<_, E>'
- reorganizar 'default_configuration' y 'CheckCfg::fill_well_known'
- Recurre a las referencias cuando se comparan los TYS para el diagnóstico
- eliminar 'PolyGenSig' ya que siempre es una carpeta ficticia
- eliminar la puerta de características 'precise_pointer_size_matching'
- Resolver enlaces de elementos asociados por espacio de nombres
- optimizar los cursores de flujo de datos MIR
- sugerencia estructurada de 'uso' sobre error de privacidad
- decirle a MirUsedCollector que las comprobaciones de alineación del puntero llaman a su símbolo de pánico
- sugerencia para definir el nombre de la macro después de 'macro_rules!'
- modificar la sugerencia '.clone()' para que funcione en más casos
- Modificar errores genéricos no cerrados
- limpiezas sin escape
- eleva el canonicalizador (nuevo solucionador) a 'rustc_next_trait_solver'
- use 'immediate_backend_type' cuando lea de una asignación const
- use los parámetros predeterminados hasta que los efectos se desazucaren
- Miri: arreglar prometiendo una alineación muy grande
- miri: fix x86 SSE4.1 ptestnzc
- Miri: mover algo de código intrínseco x86 a funciones auxiliares en 'shims::x86'
- miri: devuelve 'MAP_FAILED' cuando falla mmap
- stablize 'arc_unwrap_or_clone'
- add 'LinkedList::{retain,retain_mut}'
- simplificar por defecto para tuplas
- restore 'const PartialEq'
- dividir 'Vec::d edup_by' en 2 ciclos
- futuros: fillBuf: no igualar 'poll_fill_buf' dos veces
- futuros: 'FuturesOrdered': usa un índice de 64 bits
- futures: 'FuturesUnordered': corrige una implementación clara
- futuros: use 'cfg(target_has_atomic)' en objetivos sin ETS
- cargo: spec: Extend PackageIdSpec with source kind + git ref for unambigys specs
- cargo toml: no permitir la herencia de la condición de público de dependencia
- cargo toml: no permitir '[lints]' en espacios de trabajo virtuales
- cargo: schema: Eliminar la dependencia de los tipos de carga
- cargo: schemas: Pull out mod for proposed schemas package
- cargo: trim-paths: assert 'OSO' y 'SO' no pueden ser recortados
- cargo: evite escribir CACHEDIR. TAG si ya existe
- cargo: arreglar la finalización de bash en el directorio con espacios
- cargo: reasignar explícitamente el directorio actual usando '.'
- Cargo: Imprimir mensajes de RUSTC coloreados en Wincon
- cargo: limitar los lints de dependencias privadas exportadas a bibliotecas
- rustdoc-search: no tratar los nombres de tipos asociados como tipos
- rustdoc: No generar el encabezado "Campos" si no se muestra ningún campo
- rustdoc: Arreglar la visualización de características
- rustdoc: no escapar de las comillas en el cuerpo del texto
- rustdoc: eliminar el parámetro no utilizado 'reversed' de 'onEach(Lazy)'
- bindgen: support float16
- rustfmt: añadir el rasgo 'StyleEdition enum' y 'StyleEditionDefault'
- clippy: 'fix(ptr_as_ptr)': maneja 'std::p tr::null{_mut}'
- clippy: 'needless_borrows_for_generic_args': Maneja cuando el operando de campo impl Drop
- clippy: 'uninhabited_reference': nueva pelusa
- clippy: añadir una función para comprobar si los oprandos binarios no son triviales
- clippy: arreglar patrones 'is_from_proc_macro'
- Rust-analyzer: Compruebe si LHS también es un binexpr y use su RHS en Flip binexpr assist
- rust-analyzer: Recurso a la resolución del método en el acceso a campos no resueltos con el nombre del método coincidente
- rust-analyzer: añadir el diagnóstico 'trait_impl_reduntant_assoc_item'
- rust-analyzer: permite que los objetivos de navegación se dupliquen cuando el rango de enfoque se encuentra en el sitio de definición de macros
- rust-analyzer: soporte de args de formato implícito (¡hurra!)
- rust-analyzer: priorizar las sugerencias de importación basadas en el tipo esperado
- rust-analyzer: arreglar el cálculo de desplazamientos de WideChar en 'line-index'
- Rust-Analyzer: Arreglar el pánico con el cierre dentro de la matriz Len
- rust-analyzer: error en 'extract_function.rs'
- Rust-analyzer: no emita el diagnóstico de "elementos faltantes" para impls negativos
- rust-analyzer: no imprima trazas de retroceso de pánico proc-macro en los registros
- rust-analyzer: corrige la expansión 'concat_bytes!' que emite un identificador
- rust-analyzer: se corrige el error de finalización en 'format_args!' con plantilla no válida
- Rust-analyzer: Soluciona el pánico de diagnóstico al resolver en diferentes archivos debido a macros
- rust-analyzer: Se corrigió el árbol de elementos que bajaba 'pub(self)' a 'pub()'
- rust-analyzer: arreglar cwd ejecutable en Windows
- rust-analyzer: se corrige el mapeo descendente de tokens que es cuadrático
- Rust-analyzer: arreglar la función MIR, HIR y Eval de la vista que no funciona cuando el cursor está dentro de las macros
- rust-analyzer: inserte paréntesis de llamada fn solo si los paréntesis se insertan alrededor del nombre del campo
- Rust-analyzer: Hacer que la sugerencia de incrustación de gotas sea más legible
- rust-analyzer: resolver las referencias de tipo propio en la asistencia del método delegado
- Rust-Analyzer: Intervalos más pequeños para diagnósticos de campos y métodos no resueltos
- rust-analyzer: hacer accesible ParamLoweringMode
- rust-analyzer: consulta del bloque padre más cercano alrededor de la sugerencia a resolver
- rust-analyzer: reemplace 'doc_comments_and_attrs' por 'collect_attrs'
- rust-analyzer: show placeholder while run command gets runnables from server
- rustc-perf: agregar soporte para la evaluación comparativa del backend de código de Cranelift
Clasificación del rendimiento del compilador de Rust
Una semana tranquila en general. Algunos puntos de referencia de cajas más pequeñas (por ejemplo, helloworld) vieron
mejoras significativas en la
#118568, sino que esto simplemente
Restaura el rendimiento que se había registrado anteriormente.
Triaje realizado por @simulacrum.
Rango de revisión:
9358642..5701093
5 regresiones, 2 mejoras, 3 mixtas; 2 de ellos en rollups
69 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:
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
- Ninguna RFC entró en el Período de Comentarios Final esta semana.
Seguimiento de problemas y solicitudes de incorporación de cambios
- [disposición: fusionar] Problema de seguimiento para 'Bound::map'
- [disposición: fusionar] Estabilizar THIR unsafeck
- [disposición: fusionar] Exhaustividad: revelar correctamente los tipos opacos
- [disposición: fusionar] Rechazar correctamente 'default' en elementos const libres
- [disposición: fusionar] Hacer que los ciclos inductivos en coherencia sean siempre ambiguos
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:
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-13 - 2024-01-10 🦀
Virtual
- 14/12/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 14/12/2023 | Virtual (Núremberg, DE) | Rust Nuremberg
- 17/12/2023 | Virtual (Tel Aviv, IL) | Expertos en código
- 18/12/2023 | Virtual (Múnich, DE) | Rust Munich
- 19/12/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 19/12/2023 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 19/12/2023 | Virtual (Linz, AT) Rust Linz
- 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
Asia
- 16/12/2023 | Delhi, IN | Rust Delhi
Europa
- 14/12/2023 | Augsburgo, DE | Rust - Programación de sistemas modernos en Leipzig
- 14/12/2023 | Basilea, CH | Rust Basel
- 18/12/2023 | Múnich, DE + Virtual | Rust Munich
- 19/12/2023 | Heidelberg, DE | Elimina tus insectos y oxida tus motores
- 19/12/2023 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 27/12/2023 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
América del Norte
- 13/12/2023 | Chicago, IL, EE. UU. | Rust de plato profundo
- 14/12/2023 | Lehi, UT, EE. UU. | Rust de Utah
- 14/12/2023 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 15/12/2023 | Somerville, MA, EE. UU. | Reunión de Boston Rust
- 19/12/2023 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 27/12/2023 | Austin, TX, EE. UU. | Rust ATX
- 09/01/2024 | Minneapolis, MN, EE. UU. | Reunión de Rust en Minneapolis
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
Lamentablemente, la semana pasó sin una cita nominada.
¡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