Esta semana en Rust #27
¡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, por favor envíe un PR.
¿Quieres tener TWIR en tu bandeja de entrada? Suscríbete aquí.
Actualizaciones de la comunidad de Rust 🥰
Boletines informativos
Actualizaciones de proyectos/herramientas
- Zed: ¿Linux cuándo? Linux ahora.
- Publicado r3bl_terminal_async v0.5.4
- Publicado r3bl_test_fixtures v0.0.1
- 📦 Cratery, un registro de carga privado liviano con baterías incluidas, construido para organizaciones, ahora es de código abierto
Observaciones/Pensamientos
- Las piezas que faltan en la carga
- Cómo funciona HappyLock
- Implementación de un analizador de rango genérico en Rust
- [video] Mi patrón de diseño favorito de Rust
- [audio] Ingeniería de fusión con Jakub Valtar
- [audio] En el camino: RustNL y oxida
Tutoriales de Rust
- Registro Global
- Gray-Scott con Rust
- Cómo hacer la aplicación de escritorio Rust con Egui y ChatGPT
- Escribir el programa eBPF Tracepoint con Rust Aya: consejos y ejemplo
- Sorpresas con el 'as' de Rust (y la división de Python)
- Construir con Naz: Exploración de cajas y pines en Rust
- Cómo organizar grandes bases de código de Rust
- Tocando tablaturas de guitarra en Rust
Investigación
- Un estudio empírico de Rust-for-Linux: el éxito, la insatisfacción y el compromiso
- Llevando el Rust a los sistemas críticos para la seguridad en el espacio
Miscelánea
Crate de la semana
El crate de esta semana es cargo-wizard, un subcomando de carga que aplica plantillas de perfil y configuración a su proyecto Cargo para configurarlo para obtener el máximo rendimiento, tiempos de compilación rápidos o un tamaño binario mínimo.
¡Gracias a Jakub Beránek por la sugerencia!
[Por favor, envíe sus sugerencias y votos para la próxima semana] submit_crate!
Llamadas a la prueba
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 llamados para pruebas esta semana.
Rust
- No se emitieron llamados para pruebas esta semana.
Oxidación
- No se emitieron llamados 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 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 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 con X (anteriormente twitter) o Mastodon!
Actualizaciones del Proyecto Rust
Se [fusionaron 385 solicitudes de extracción en la última semana][fusionadas]
- añadir AMX target-features y bandera de características 'x86_amx_intrinsics'
- añadir 'constness' a 'TraitDef'
- Agregar clasificación y métodos relacionados para F16 y F128
- Agregue lint para etiquetas ASM en línea que parecen binarias
- añadir sugerencias para las posibles palabras clave 'fn', struct' o enum' que faltan
- añadida la función de destino 'XOP' y la puerta de la función 'xop_target_feature'
- permite que '#[diagnostic::d o_not_recommend]' suprima también las implicaciones de rasgos en las sugerencias
- se contamina automáticamente al informar errores de ItemCtxt
- evite el error "sin campo" e ICE en la variante ADT recuperada
- evite errores de seguimiento e ICEs después de errores de vida perdidos en las estructuras de datos
- marque 'is_ident' antes de 'parse_ident'
- borrar 'inner_attr_ranges' regularmente
- consolidar el informe de errores de la región en 'rustc_infer'
- cobertura: restringir la simplificación de 'ExpressionUsed' a las asignaciones de 'Código'
- asegúrese de que los flotantes sean devueltos sin pérdidas por la ABI de Rust en x86 de 32 bits
- dispara pelusa 'unsafe_code' en bloques externos inseguros
- arreglar 'DebugParser'
- arreglar sugerencia de importación hielo
- corregir el manejo incorrecto de NDEBUG en los enlaces LLVM
- Arreglar la salida intercalada en el gancho de pánico predeterminado cuando varios hilos entran en pánico simultáneamente
- corregida la regresión en la disminución del MIR de los patrones or
- puerta la verificación del límite de longitud de tipo detrás de una bandera nocturna
- generalizar 'asignador fn' para Rc/Arc
- generalizar el gráfico de búsqueda para habilitar el fuzzing
- protégete contra llamar a 'libc::exit' varias veces en Linux
- Implementa lint simple e inestable para sugerir convertir el cierre del bloque asíncrono en un cierre asíncrono
- Vuelva a instanciar los objetivos mejor clasificados en la selección de candidatos
- hacer que la impl de 'visit_clobber' sea segura
- hacer que las sugerencias de errores de análisis sean detalladas y corregir intervalos
- Asegúrese de que las etiquetas se definan después del intervalo principal en los diagnósticos
- marque 'builtin_syntax' como interno
- lint de migración para 'expr2024' para la edición 2024
- más sugerencia para convertir 'Opción<&Vec<T>>' a 'Opción<&[T]>'
- Más errores de rasgo reelaborando
- solo pista lugares mencionados para el enhebrado de salto
- sugerir tomar prestado el argumento fn que es 'impl AsRef'
- sugerir usar 'map_or' cuando 'Opción<&T>::unwrap_or donde falla T: Deref'
- sugerir el uso de una captura precisa para el tipo oculto que captura la región
- use el estilo detallado al sugerir cambiar 'const' por 'let'
- miri: TB: reservado + Protegido + IM + perezoso es una combinación horrible que no debería existir
- miri: implementar soporte para múltiples destructores TLS en macOS
- miri: implementar las funciones 'os_unfair_lock' en macOS
- arreglar 'Parser::look_ahead'
- estabilizar 'const_cstr_from_ptr (CStr::from_ptr, CStr::count_bytes)'
- estabilizar 'io_slice_advance'
- Estabilizar la conversión no controlada de Const de U32 a Char
- añadir 'f16' y 'f128' como tipos simd en LLVM
- añadir caché para 'allocate_str'
- 'offset_from': permitir siempre que los punteros apunten a la misma dirección
- std: '#! [deny(unsafe_op_in_unsafe_fn)]' en código independiente de la plataforma
- std: Elimina el manejo de casos extremos de la función de familia logaritmos para Solaris
- impl FusedIterator y una sugerencia de tamaño para el iter de fuentes de error
- use 'pidfd_spawn' para un desove de proceso más rápido cuando se solicita un PidFd
- Haga que OS/Windows y PAL/Windows estén predeterminados en '#! [denegar(unsafe_op_in_unsafe_fn)]'
- Windows: Agregue soporte experimental para vincular DLL del sistema requeridos por std usando raw-dylib
- Windows: eliminar algunos alias de tipo innecesarios
- exponiendo STARTUPINFOW.wShowWindow en el rasgo CommandExt
- cargo: 'docs(ref)': Nota MSRV para características en los docs
- cargo: añadir 'cargo_test' al preludio de soporte de prueba
- cargo: anulaciones: No advertir sobre paquetes duplicados por usar '..'
- cargo: fuente: No advierta sobre paquetes duplicados sin referencias
- cargo: prueba: Redactar el tiempo transcurrido en el marco de tiempo de minutos
- cargo: prueba: Reducir la prescripción excesiva a la persona que llama
- cargo: añadir flujo de trabajo para publicar Cargo automáticamente
- cargo: corrección: asegúrese de que dep/feature active la dependencia en 2024
- cargo: fix: renombrar a 'rustdoc::broken_intra_doc_links'
- cargo: refactorizar: mover 'get_source_id' fuera del registro
- clippy: 'unwrap_or_default': saltar advertencia al llamar dentro de la implementación del método sugerido
- clippy: añadir más doc-valid-idents
- clippy: arreglar 'manual_unwrap_or' falso positivo
- clippy: corrige el falso positivo de 'needless_option_as_deref' en los literales 'struct'
- clippy: arreglar y renombrar 'overflow_check_conditional'
- clippy: corrige la guía de 'float_cmp' y 'float_cmp_const' para no recomendar incorrectamente 'f__::EPSILON' como margen de error
- clippy: hacer 'or_fun_call' recursivo
- clippy: arreglar las pelusas 'doc_lazy_continuation'
- Rust-analyzer: agregue soporte para 'F16' y 'F128'
- rust-analyzer: codifica la crudeza ident y el tipo literal por separado en 'tt::Leaf'
- rust-analyzer: agregue diagnósticos de casos incorrectos para los campos de la variante 'enum' y todas las variables/parámetros
- rust-analyzer: añadir sugerencias de incrustación para parámetros genéricos
- rust-analyzer: no agregue una nueva 'enumeración' si ya existe
- rust-analyzer: Corregir la codificación incorrecta de literales en el proc-macro-api en la versión 4
- rust-analyzer: implementar la infraestructura de internado de símbolos
- rust-analyzer: desencadenar VSCode para renombrar después de que se aplique la asistencia de variable de extracción
- rustfmt: impl 'StyleEditionDefault' trait para todas las configuraciones
- rustfmt: devuelve RewriteResult para 'rewrite_block' y 'rewrite_closure'
Clasificación del rendimiento del compilador de Rust
Una semana bastante tranquila con las únicas regresiones puras que son pequeñas y provienen de correcciones de corrección. El mayor cambio provino de la desactivación de la verificación '-Zenforce-type-length-limit', que tuvo impactos positivos en muchos puntos de referencia diferentes, ya que el compilador está haciendo estrictamente menos trabajo.
Triaje realizado por @rylev. Rango de revisión: a2d58197.. 5572759B
Resumen:
| (instrucciones:u) | media | Gama | Recuento | |:----------------------------------:|:-----:|:---------------:|:-----:| | Regresiones ❌
(primaria) | 0.3% | [0.2%, 0.7%] | 12 | | Regresiones ❌
(secundaria) | 0.4% | [0.2%, 0.9%] | 45 | | Mejoras ✅
(primario) | -0,7% | [-1.5%, -0.2%] | 37 | | Mejoras ✅
(secundaria) | -3,3% | [-13.5%, -0.4%] | 21 | | Todos ❌✅ (primarios) | -0,4% | [-1,5%, 0,7%] | 49 |2 regresiones, 3 mejoras, 2 mixtas; 1 de ellos en rollups 56 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 de Comentarios Final esta semana.
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Corregir la falta de solidez del tipo asociado al superrasgo
- [disposición: fusionar] Manejar amablemente 'Drop' implica introducir parámetros más genéricos que el ADT
- [disposición: fusionar] Reordenar los modificadores ligados a rasgos después de el aglutinante 'para<...>' en los límites de rasgos
- [disposición: fusionar] size_of_val_raw: para la longitud 0 es seguro llamar
- [disposición: fusionar] Implementar lint contra literales negativos ambiguos
Carga
- No hay problemas de seguimiento de carga ni PR ingresaron al período de comentarios finales esta semana.
Equipo lingüístico
- No hubo problemas de seguimiento de equipos lingüísticos ni relaciones públicas en el período de comentarios finales esta semana.
Referencia lingüística
- Ninguna RFC de referencia lingüística entró en el período final de comentarios esta semana.
Directrices para códigos inseguros
- No hay problemas de seguimiento de pautas de código inseguro o PR ingresados al período de comentarios finales esta semana.
RFC nuevas y actualizadas
- [nuevo] RFC para objetivos del proyecto
Próximos eventos
Eventos de Rusty entre 2024-07-17 - 2024-08-14 🦀
Virtual
- 17/07/2024| Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- Rust for Rustaceans Book Club: Capítulo 10: Concurrencia (y paralelismo)
- 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
- 18/07/2024 | Virtual (IL) | Rust en Israel
- 18/07/2024 | Virtual (Róterdam, Países Bajos)| Desarrollo de juegos Bevy
- 23/07/2024 | Híbrido: virtual y presencial (Múnich/Múnich, DE) | Rust Múnich
- 24/07/2024 | Virtual | Mujeres en Rust
- 25/07/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Rust en Charlottesville
- 27/07/2024 | Híbrido - Virtual y Presencial (Kiev, UA) | Rust de UA
- 27/07/2024 | Virtual | Reunión mensual de Leptos
- 30/07/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 31/07/2024 | Virtual (Tel Aviv, Illinois) | Expertos en código
- 01/08/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 06/08/2024 | Virtual | Mujeres en Rust
- 06/08/2024 | Virtual (Buffalo, NY, EE. UU.) | Encuentro de Buffalo Rust
- 06/08/2024 | Virtual (Tel Aviv, Illinois) | Expertos en código
- 07/08/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 08/08/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Rust en Charlottesville
- 08/08/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 13/08/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
África
- 02/08/2024 | Kampala, UG | Círculo de Rust Kampala
Asia
- 20/07/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
Europa
- 17/07/2024 | Cambridge, Reino Unido | Encuentro de Cambridge Rust
- 18/07/2024 | Berna, CH | Rust Bern
- 23/07/2024 | Manchester, Reino Unido | Rust Manchester
- 23/07/2024 | Híbrido: virtual y presencial (Múnich/Múnich, DE) | Rust Múnich
- 25/07/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 25/07/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 27/07/2024 | Híbrido - Virtual y Presencial (Kiev, UA) | Rust de UA
- 30/07/2024 | Basilea, CH | Basilea Rust
- 14/08/2024 | Reading, Reino Unido | Taller de lectura de Rust
América del Norte
- 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
- 18/07/2024 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 21/07/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 24/07/2024 | Austin, TX, EE. UU. | Oxidar ATC
- 25/07/2024 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 29/07/2024 | Cambridge, MA, Estados Unidos| Encuentro de Boston Rust
- 01/08/2024 | St. Louis, MO, EE. UU. | STL Rust
- 08/08/2024 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
Oceanía
- 01/08/2024 | Brisbane, QLD, Australia | Rust Brisbane
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 obtener acceso.
Empleos
Por favor, consulte el último hilo de Who's Hiring en r/rust
Frase de la semana
tengo un sueño. Un sueño que Cargo tenga su propia cadencia de lanzamiento, por lo que está libre de la estricta maldición de la estabilidad y luego puede enviar lanzamientos de versiones principales.
¡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