Esta semana en Rust #25
¡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 (anteriormente 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.
¿Quieres tener TWIR en tu bandeja de entrada? Suscríbete aquí.
Actualizaciones de la comunidad de Rust 🥰
Actualizaciones de proyectos/herramientas
- ratatui - v0.27.0
- Introducción - ChoRus
- uuid ahora soporta correctamente los contadores de la versión 7
- Godot-Rust - Actualización de junio de 2024
- piggui v0.2.0
- ¡Lanzamiento de Git-Cliff 2.4.0!
Observaciones/Pensamientos
- Reclamación, automática y de otro tipo
- Propiedad
- Puzzle: Compartir argumentos declarativos entre el nivel superior y el subcomando usando Clap
- ¿Estará vivo Rust en 10 años?
- Por qué WebAssembly llegó al Backend (Wasm in the wild part 3)
- ¿La construcción in situ parece sorprendentemente simple?
- Linealizador ígneo
- La vida en los carriles rápidos
- Modelo de simultaneidad de Rust vs modelo de simultaneidad de Go: corrutinas stackless vs stackfull
Tutoriales de Rust
- ¡Domina el Rust jugando videojuegos!
- Instrumentación Tokio Waker
- Build with Naz : Guía completa para el análisis sintáctico de nombres
- Ejecución de un TLC5940 con un ESP32 utilizando el periférico RMT
- Rust Data-Structures: ¿Qué es un trie CIDR y cómo puede ayudarte?
- Patrones de Rust: Micro SDK
- [serie] La guía definitiva para el manejo de errores en Rust (parte 1): Errores dinámicos
Investigación
Miscelánea
Crate de la semana
El crate de esta semana es cargo-binstall, un subcomando de carga para instalar cajas de binarios fuera de sus versiones de github.
¡Gracias a Jiahao XU por la autosugerencia!
[Por favor, envíen sus sugerencias y votos para la próxima semana] submit_crate!
Convocatorias 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:
RFC
- 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 usted es un implementador de características 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 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í] directrices o a través de un PR a TWiR o poniéndote en contacto con X (anteriormente 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 están aceptando presentaciones para unirse a su evento como orador.
- Rust Ukraine 2024 | Cierra el 06/07/2024 | Online + Ucrania, Kiev | Fecha del evento: 2024-07-27
- Conf42 Rustlang 2024 | Cierra 2024-07-22 | En línea | Fecha del evento: 2024-08-22
Si usted es un organizador de eventos que espera ampliar el alcance de su evento, envíe un enlace al sitio web a través de un PR to TWiR o comunicándose con X (anteriormente twitter) o Mastodon!
Actualizaciones del Proyecto Rust
428 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- 'hir_typeck': ser más conservador al hacer que la persona que llama a la nota elija ty param" nota
- 'rustc_type_ir': Omitir algunos campos 'struct' de la salida de depuración
- tener en cuenta las cosas que optimizan los costos de inserción
- en realidad contamina 'InferCtxt' cuando se emite un error de cumplimiento
- add '#[rustc_dump_{predicates,item_bounds}]'
- Agregue error duro y lint de migración para attrs inseguros
- permitir que "C-unwind" fn tenga variádicas C
- permitir restringir los tipos opacos durante la subtipificación en el sistema de rasgos
- permitir restringir los tipos opacos durante varios cambios de tamaño
- permitir el rastreo a través de invocaciones de consulta 'item_bounds' en opacos
- prohibir 'ArrayToPointer' y 'MutToConstPointer' de MIR en tiempo de ejecución
- cambie 'DefineOpaqueTypes::No' a 'Sí' en el código de diagnóstico
- Recopilar attrs en const block expr
- cobertura: añadir el indicador de depuración '-Zcoverage-options=no-mir-spans'
- cobertura: validación de revisión de la '#[cobertura(..)] ' atributo
- No permitir seguro/inseguro en elementos estáticos y FN
- no haga ICE cuando encuentre un campo de tipo externo durante la validación
- Corrección: la ruptura dentro del cierre asíncrono tiene un intervalo incorrecto para encerrar el cierre
- E0308: tipos no coincidentes, cuando expr está en el cuerpo de un brazo, no agregue punto y coma ';' al final
- Mejorar la recuperación de marcadores de conflicto
- Mejorar la propina para rasgos inaccesibles
- interpretar: mejor error cuando nos quedamos sin memoria
- Hacer que el código de colocación asíncrono sea más coherente con el código de colocación normal
- hacer que el fragmento de macro ':expr' dependiente de la edición actúe como lo hace el fragmento ':p at' dependiente de la edición
- Hacer que la impresión bonita para 'F16' y 'F128' sea consistente
- Reducción de coincidencias: expande los candidatos OR mezclados con los candidatos anteriores
- mostrar aviso sobre "nunca usado" de Depurar para 'enumeración'
- deja de ordenar el 'SyntaxContext' de 'Span's, ya que es incompatible con incremental
- sugerir bloques const en línea para la inicialización de matrices
- sugerir eliminar los campos de tupla no utilizados si son los últimos campos
- Eleva el siguiente solucionador de rasgos a 'rustc_next_trait_solver'
- añadir 'F16' y 'F128'
- miri: /miri: error más agradable cuando falla la construcción de miri-script
- Miri: 'UNIX/foreign_items': mover getpid a la parte derecha del archivo
- miri: no confíes en libc existente en Windows
- miri: arreglar el ICE causado por buscar más allá de 'i64::MAX'
- miri: implementar intrínsecos LLVM x86 adx
- miri: implementar intrínsecos de IMC x86 de LLVM
- Miri: Error de archivo por lotes más agradable cuando falla la construcción de Miri-script
- Miri: usa operaciones estrictas en lugar de operaciones comprobadas
- guardar 2 punteros en 'TerminatorKind' (96 → 80 bytes)
- agregue 'SliceLike' a 'rustc_type_ir', úselo en el código genérico del solucionador (+ algunos otros cambios)
- 'std::unix::fs': simplificación de copia para Apple
- 'std::unix::os::home_dir': optimización de reserva
- reemplace los códigos auxiliares de coincidencia de patrones 'F16' y 'F128' con implementaciones reales
- add 'PidFd::'{'kill', 'wait', 'try_wait'}
- también obtener 'add nuw' de 'uN::checked_add'
- generalizar {'Rc', 'Arc'}'::make_mut()' a tipos sin tamaño
- implementar 'array::repeat'
- make 'Option::as_[mut_]slice' 'const'
- cambiar el nombre de 'std::fs::try_exists' a 'std::fs::exists' y estabilizar 'fs_try_exists'
- reemplazar implementaciones de ordenación
- retorna el tipo opaco de 'PanicInfo::message()'
- estabilizar 'c_unwind'
- std: Refactorizar la implementación de almacenamiento local de subprocesos
- hashbrown: implementar operaciones XxxAssign en HashSets
- hashbrown: reemplace "ahash" por "default-hasher" en las características de Cargo
- cargo toml: avisar cuando la edición no está configurada, incluso cuando MSRV no está configurado
- cargo: add 'CodeFix::apply_solution' e impl 'Clone'
- cargo: hacer que '-Cmetadata' sea consistente en todas las plataformas
- cargo: simplificar la sintaxis de las funciones de comprobación
- cargo: simplificar la comprobación de los ciclos de dependencia
- Prueba de carga: agregar redacción automática para el error no encontrado
- Prueba de carga: Número de archivo de redacción automática
- Rustdoc: Agrega soporte para la función 'missing_unsafe_on_extern'
- implementar el formato 'use<>' en rustfmt
- rustfmt: palabras clave de seguridad de formato en elementos estáticos
- eliminar la impresión perdida de 'rewrite_static' de rustfmt
- resuelva clippy 'f16' y 'f128 unimplemented!'/'FIXME's
- clippy: 'missing_const_for_fn': añadir sugerencia aplicable a la máquina
- clippy: agregar filtro de aplicabilidad a la página de lista de lint
- clippy: añadir más tipos a 'is_from_proc_macro'
- clippy: no peluques 'implicit_return' en las macros proc
- clippy: corrige sugerencia incorrecta para 'manual_unwrap_or_default'
- clippy: resuelve 'clippy::invalid_paths' en 'bool::then'
- clippy: llamada innecesaria al método min/max
- rust-analyzer: palabra clave asíncrona completa
- rust-analyzer: comprueba que Expr no es ninguno antes de añadir la corrección
- rust-analyzer: add 'toggleLSPLogs' command
- rust-analyzer: añadir espacio después de palabras clave específicas en la finalización
- Rust-Analyzer: Filtro de expansión de macros incorporada
- rust-analyzer: no elimine los paréntesis para las llamadas de punteros similares a funciones que son miembros de una 'estructura' o unión
- rust-analyzer: asegúrese de que no haya ciclos en el 'source_root_parent_map'
- rust-analyzer: arreglar las características del IDE que se rompen en algunas macros de atr
- Rust-analyzer: arreglar el pánico de flycheck cuando se cancela
- rust-analyzer: maneja los límites de caracteres para caracteres anchos en 'extend_selection'
- Rust-analyzer: Mejorar el texto flotante en el diagnóstico de archivos desvinculados
- Rust-analyzer: solo muestra el diagnóstico de archivos no vinculados en la primera línea durante el inicio
- rust-analyzer: finalizaciones de patrones en let-stmt
- rust-analyzer: use 'ItemInNs::Macros' para convertir ModuleItem en ItemInNs
- Rust-analyzer: Eliminar la advertencia de extensión panicbit.cargo
- Rust-analyzer: simplifica algunas tácticas de búsqueda de términos
- Rust-Analyzer: Búsqueda de términos: nueva táctica para las constantes de elementos asociadas
Clasificación del rendimiento del compilador de Rust
En su mayoría, una serie de mejoras impulsadas por mejoras en el revestimiento MIR, con un pequeño número índices de referencia que tengan una regresión significativa debido a las mejoras en la algoritmos de ordenación, que son mejoras en el tiempo de ejecución a costa de Regresiones neutrales en tiempo de compilación, con valores atípicos en algunos casos.
Triaje realizado por @simulacrum. Rango de revisión: c2932aaf.. C3D7FB39
Ver informe completo para más detalles.
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:
- Cambiar crates.io política para no ofrecer mediación de transferencia de cajas
- UnsafePinned: permitir alias de referencias mutables ancladas
Período final de comentarios
Cada semana, el equipo anuncia el 'período final de comentarios' para las RFC y los PR clave que están llegando a una decisión. Expresa tus opiniones ahora.
RFC
- [disposición: fusionar] RFC: Notación de tipo de retorno
- [disposición: fusionar] Agregar un mecanismo general para configurar RUSTFLAGS en Cargo solo para la caja raíz
- [disposición: cerrar] Permitir especificar dependencias para artefactos individuales
Seguimiento de problemas y solicitudes de incorporación de cambios
Rust
- [disposición: fusionar] '#![ crate_name = EXPR]' semánticamente permite que 'EXPR' sea una llamada a macro, pero por lo demás la ignora en su mayoría
- [disposición: fusionar] Añadir sección de guía de estilo nocturno para la sintaxis 'precise_capturing' 'use<>'
- [disposición: fusionar] Problema de seguimiento para PanicInfo::message
- [disposición: fusionar] Problema de seguimiento para Cell::update
- [disposición: <sin especificar>] Problema de seguimiento para core::arch::{x86, x86_64}::has_cpuid
- [disposition: merge] Sintaxis para capturas precisas: 'impl Trait + use<..>'
- [disposición: fusionar] Eliminar la pelusa 'box_pointers'.
- [disposición: fusionar] Volver a implementar un límite basado en el tamaño de tipo
- [disposición: fusionar] Problema de seguimiento para 'duration_abs_diff'
- [disposición: fusionar] Comprobar los argumentos de alias para WF incluso si tienen variables enlazadas de escape
Carga
- No hay problemas de seguimiento de carga ni PR en el período de comentarios finales de esta semana.
Equipo lingüístico
- Ningún problema de seguimiento del equipo lingüístico o PR entró en el período de comentarios finales esta semana.
Referencia lingüística
- No hay problemas de seguimiento de referencias lingüísticas ni solicitudes de incorporación de cambios en el período final de comentarios de esta semana.
Directrices sobre códigos inseguros
- No hay problemas de seguimiento de pautas de código inseguro ni PR que hayan entrado en el período de comentarios finales esta semana.
RFCs nuevos y actualizados
- [nuevo] Sintaxis estructurada de carga para dependencias de características en cajas
- [nuevo] Información de caja cruzada de rustdoc fusionable
- [nuevo] Añadir RFC "crates.io: Eliminación de cajas"
Próximos eventos
Eventos oxidados entre 2024-06-26 - 2024-07-24 🦀
Virtual
- 27/06/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 02/07/2024 | Virtual (Búfalo, NY) | Encuentro de Buffalo Rust
- 02/07/2024 | Híbrido - Virtual y Presencial (Los Ángeles, CA, EE. UU.) | Rust Los Ángeles
- 03/07/2024 | Virtual | Capacitación 4 Programadores LLC
- 03/07/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 04/07/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 06/07/2024 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 09/07/2024 | Virtual | Rust para el almuerzo
- 09/07/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 10/07/2024 | Virtual | Centro de Investigación Electrónica
- 11/07/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 11/07/2024 | Híbrido - Virtual y Presencial (Ciudad de México, DF, MX) | Rust MX
- 11/07/2024 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 11/07/2024 | Virtual (Tel Aviv, IL) | Expertos en código
- 16/07/2024 | Virtual (Tel Aviv, IL) | Expertos en código
- 17/07/2024 | Híbrido - Virtual y Presencial (Vancouver, BC, CA) | Rust de Vancouver
- 18/07/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 2024-07-23| Híbrido - Virtual y Presencial (Múnich/Múnich, DE) | Rust Múnich
- 24/07/2024 | Virtual | Mujeres en Rust
Asia
- 30/06/2024 | Kioto, JP | Rust de Kioto
- 03/07/2024 | Tokio, JP | Reunión de Rust en Tokio
Europa
- 27/06/2024 | Berlín, DE | Rust Berlin
- 27/06/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 10/07/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 11/07/2024 | Praga, República Checa | Rust Praga
- 16/07/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 16/07/2024 | Mannheim, DE | Hackschool - Rhein-Neckar
- 2024-07-23| Híbrido - Virtual y Presencial (Múnich/Múnich, DE) | Rust Múnich
América del Norte
- 26/06/2024 | Austin, TX, EE. UU. | ATC de Rust
- 27/06/2024 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 27/06/2024 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 27/06/2024 | St. Louis, MO, EE. UU. | STl Rust
- 02/07/2024 | Híbrido - Los Ángeles, CA, EE. UU. | Rust Los Ángeles
- 05/07/2024 | Boston, MA, EE. UU. | Reunión de Boston Rust
- 11/07/2024 | Híbrido - Ciudad de México, DF, MX | Rust MX
- 11/07/2024 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 17/07/2024 | Híbrido - Vancouver, Columbia Británica, CA | Rust de Vancouver
- 18/07/2024 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 24/07/2024 | Austin, TX, EE. UU. | ATC de Rust
Oceanía
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 Who's Hiring en r/rust
Frase de la semana
Rust no tiene inconsistencias teóricas... Un logro notable...
– Simon Peyton-Jones en YouTube
¡Gracias a ZiCog por la sugerencia y a Simon Farnsworth por el enlace mejorado!
¡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