Esta semana en Rust #30
¡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 🥰
Fundación
Boletines informativos
Actualizaciones de proyectos/herramientas
- ¡Anunciando zerocopy 0.8!
- Introducción a la ejecución duradera
- Búsqueda del rendimiento en la construcción de un compilador de JavaScript
- gitoxide septiembre de 2024
- Tauri 2.0 Versión Estable
- Una nueva versión de modversions
- Punteros inteligentes para el kernel
- Puntos de seguimiento de Rust eficientes
- Mejorando el enlace para el kernel
- términoscp 0.15.0
Observaciones/Pensamientos
- regalloc III
- Sobre la dicotomía de Ousterhout
- El Rust está saliendo de la línea de montaje de Volvo
- Tres tipos de desenvoltura
- 5 impresionantes (y menos conocidos) proyectos de Rust
- Nueve reglas para ejecutar Rust en el navegador: Lecciones prácticas de portar range-set-blaze a WASM
- [video] Renace un Framework Web Legendario... En Rust
- [audio] Arreglando los tiempos de construcción con rubicon
Tutoriales de Rust
- Construcción de E/S asíncronas en Rust: cómo funcionan juntos los futuros, los despertadores y los grupos de subprocesos
- Rasgo de índice, elementos anclados y vector de empuje inmutable
- [serie] Serde para el objeto rasgo 2: serialización
- [video] Build with Naz : Create an async shell in Rust
Miscelánea
Crate de la semana
El crate de esta semana es float8, una implementación float de 8 bits.
Llogiq sigue satisfecho con su elección, pero cada vez está más descontento por la falta de sugerencias.
Por favor, envíen sus sugerencias y votos para la próxima semana!
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é aspectos(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 (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 a TWiR o comunicándose en X (anteriormente Twitter) o Mastodon!
Actualizaciones del Proyecto Rust
Se [fusionaron 437 solicitudes de extracción en la última semana][fusionadas]
- añadir 'x86_64-desconocido-confiable' como objetivo de nivel 3
- soporte inicial para 'riscv32{e|em|emc}_unknown_none_elf'
- aumentar el tamaño de la pila para AIX
- permitir literales booleanos como predicados cfg (RFC #3695)
- cuenta para 'impl Trait {' cuando 'impl Trait for Type {' era intencionado
- [añadir la macro 'naked_asm!' para usar en las funciones '#[naked]']](https://github.com/rust-lang/rust/pull/128651)
- agregar un lint para que el puntero se transmute en los números enteros en consts
- Agregar almacenamiento en caché a la mayoría de las carpetas de tipos, uniquificación de la región RM
- añadir los indicadores de módulo que faltan para '-Zfunction-return=thunk-extern'
- Agregar soporte para volver a tomar prestados receptores de métodos anclados
- Agregar soporte inestable para la salida de sumas de comprobación de archivos para su uso en Cargo
- evite ICE en construcciones de cobertura con mal '#[coverage(..)]' atributos
- consulte las proyecciones elaboradas de dyn no mencionan las vidas tardías sin restricciones
- Calcular la longitud de la matriz a partir del tipo para unconditional panic lint
- Un par de cambios para facilitar la compilación de rustc para wasm
- Cobertura: Múltiples pequeños ajustes para contrarrestar la creación
- deshabilitar el subproceso de salto 'UnOp::Not' para no bool
- no consideres match/let/ref de un lugar que se evalúe como '!' para divergir, no permitas coerciones de ellos también
- no permitir el atributo '#[pointee]' donde no pertenece
- no dar sugerencias de métodos cuando la sonda de método falla debido a una mala implementación de 'Deref'
- Mejorar el diagnóstico de los rasgos constantes para el nuevo desazucarado
- instanciar carpetas en 'supertrait_vtable_slot'
- hacer de 'deprecated_cfg_attr_crate_type_name' un error grave
- hacer que la prueba 'test_lots_of_insertions' tome menos tiempo en Miri
- hacer que los tipos opacos sean nodos HIR regulares
- solo consulta 'params_in_repr' si el tipo def es adt
- pánico cuando un error de intérprete se descarta involuntariamente
- parser: mejores mensajes de error para '@' en patrones 'struct'
- reemplace -Z default-hidden-visibility por -Z default-visibility
- restringir las directivas 'ignore-mode-*'
- Admite 'clobber_abi' y registros vectoriales/de acceso (solo clobber) en el ensamblaje en línea S390X
- interpretar: habilitar siempre las comprobaciones de cordura 'write_immediate'
- Miri: Añadir reloj vectorial a las listas de epoll ready
- miri: añadidas instrucciones del analizador de Rust para Helix
- Miri: Evita 'pthread_attr_t' en los exámenes
- miri: implementar intrínsecos LLVM x86 gfni
- Miri: Prefiero los patrones de corte refutables sobre la verificación de len + la operación de índice
- miri: pthread mutex: mejor error en reentrant-locking-UB
- Limpiezas 'rustc_infer'
- estabilizar 5 API dependientes de 'const_mut_refs'
- estabilizar 'BufRead::skip_until'
- estabilizar 'const_float_classify'
- estabilizar 'const_slice_from_raw_parts_mut'
- estabilizar 'const_slice_split_at_mut' y 'const_slice_first_last_chunk'
- estabilizar el especificador de fragmento 'expr_2021' en todas las ediciones
- estabilizar los métodos 'map'/'value' en 'ControlFlow'
- liballoc: introduce String, Vec const-slicing
- hacer que la celda conste de manera inestable
- Habilitar F16 y F128 en destinos Windows-gnullVM
- transmuteFrom: maneja con gracia los tipos no normalizados y los errores de normalización
- pequeña optimización para la implementación de la pantalla de números enteros
- añadir '[Opción<T>; N]::transponer'
- añadir comprobaciones de condiciones previas a 'ptr::offset, ptr::add, ptr::sub'
- evitar la comprobación de vacío en 'PeekMut::p op'
- no uses 'Immediate::offset' para transmutar punteros a números enteros
- Agregar canal multiproductor, multiconsumidor (MPMC)
- impl 'Default' para los iteradores 'HashMap'/'HashSet' que aún no lo tienen
- std: hacer que 'thread::current' esté disponible en todos los destructores de 'thread_local!
- std: reemplaza 'LazyBox' por 'OnceBox'
- futuros: arreglar el uso después de liberar de tarea en FuturesUnordered cuando se caen pánicos futuros
- hashbrown: añade 'Tag(u8)' newtype en un intento de dejar de usar punteros de bytes para todo
- hashbrown: cambiar el hasher predeterminado a foldhash
- cargo: fix 'cargo:version_number' - tiene solo un ':'
- cargo: corrección: eliminar la eliminación de características implícitas
- cargo: mejorar el reporte de errores cuando la función no se encuentra en 'activated_features'
- rustdoc: Errores de limpieza en desambiguadores/discrepancias de espacios de nombres
- rustdoc: mejorar
la ''-inserción para 'SCREAMING_CAMEL_CASE' - rustdoc: las listas de elementos que contienen varios párrafos son más claras
- rustdoc: evitar que los ctors resuelvan
- clippy: 'infinite_loop': continuando un bucle exterior se deja el bucle interior
- clippy: 'rustc_tools_util': volver a ejecutar cuando cambia la confirmación de git
- clippy: 'zombie_processes': considera las llamadas 'wait()' en cuerpos anidados
- clippy: compara correctamente las referencias de rasgos en 'trait_duplication_in_bounds'
- clippy: corrige 'mut_mutex_lock' cuando la referencia no es mutable en última instancia
- clippy: implementa lint para la compilación 'regex::Regex' dentro de un bucle
- clippy: reducir el umbral predeterminado de 'matriz grande'
- clippy: muestra la cadena de mutabilidad interior en 'mutable_key_type'
- clippy: simplificar negativo 'Opción::{is_some_and,is_none_or}'
- clippy: estilo: no usar defensivamente 'saturating_sub()'
- Rust-analyzer: corrección: arreglar el mensaje de error de arranque que es incorrecto
- rust-analyzer: use external stack in borrowck DFS
Clasificación del rendimiento del compilador de Rust
Una regresión dominó esta semana (lidiando con una corrección de corrección en torno al almacenamiento en caché del sistema de tipos que se consideró necesaria), pero afortunadamente no produjo grandes regresiones en ningún punto de referencia. En general, el rendimiento terminó relativamente en el mismo lugar que al comienzo de la semana.
Triaje realizado por @rylev. Rango de revisión: c87004a1.. E6C46DB4
Resumen:
| (instrucciones:u) | media | Gama | Recuento | |:----------------------------------:|:-----:|:--------------:|:-----:| | Regresiones ❌
(primaria) | 0.3% | [0.1%, 1.0%] | 63 | | Regresiones ❌
(secundaria) | 1.1% | [0.1%, 3.4%] | 81 | | Mejoras ✅
(primario) | -0,5% | [-3,0%, -0,1%] | 19 | | Mejoras ✅
(secundaria) | -0,5% | [-1,5%, -0,1%] | 46 | | Todos ❌✅ (primarios) | 0.1% | [-3.0%, 1.0%] | 82 |2 regresiones, 3 mejoras, 7 mixtas; 3 de ellos en rollups 57 comparaciones de artefactos realizadas en total
RFCs 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:
- RFC: Permitir literales booleanos como predicados 'cfg'
- Mover la caja 'rustdoc-types' a la propiedad de T-Rustdoc.
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] Estabilizar const 'ptr::write*' y 'mem::replace'
- [disposición: fusionar] Comprobar la compatibilidad del objetivo ABI para punteros de función
- [disposición: fusionar] Propuesta: estabilizar 'if_let_rescope' para la edición 2024
- [disposición: fusionar] Arreglar las rutas literales de Windows cuando se usa con la macro 'include!'
- [disposición: fusionar] Implementado 'FromStr' para 'CString' y 'TryFrom<CString>' para 'String'
- [disposición: fusionar] Problema de seguimiento para 'debug_more_non_exhaustive'
- [disposición: fusionar] Problema de seguimiento para 'const_make_ascii'
- [disposición: fusionar] Problema de seguimiento para 'const_char_encode_utf8'
Carga
- [disposición: fusionar] hazaña: Estabilizar la configuración de resolución compatible con MSRV
- [disposición: fusionar] API oficial para scripts de compilación
Equipo lingüístico
- [disposición: fusionar] Propuesta de reunión: cambiar el nombre de "seguridad de objetos" a "compatibilidad con dyn"
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: Promover riscv64gc-unknown-linux-gnu a Tier-1 (sin herramientas de host)
- [new] [RFC] Add Option::todo y Result::todo
Próximos eventos
Eventos oxidados entre 2024-10-09 - 2024-11-06 🦀
Virtual
- 10/10/2024 | Virtual | Mujeres en Rust
- 10/10/2024 | Virtual (Barcelona, ES) | BcnRust + Duración + Constructores de servicio pesado
- 10/10/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 10/10/2024 | Virtual (Girona, ES) | Rust Girona
- 2024-10-10 - 2024-10-11 | Virtual y presencial (Viena, AT) | Rust del euro
- 14/10/2024 | Virtual | Mujeres en Rust
- 14/10/2024 | Virtual | Rust para el almuerzo
- 15/10/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 16/10/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 17/10/2024 | Virtual | Mujeres en Rust
- 17/10/2024| Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Rust en Charlottesville
- 22/10/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 24/10/2024 | Virtual | Mujeres en Rust
- 24/10/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 26/10/2024 | Virtual (Gdansk, PL) | Stacja IT trójmiasto
- 29/10/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 31/10/2022 | Virtual (Nürnberg, DE) | Rust, Núremberg, DE
África
- 02/11/2024 | Kampala, UG | Círculo de Rust Kampala
Asia
- 09/10/2024 | Subang Jaya / Kuala Lumpur, Selangor, MY | Rust Malasia
- 17/10/2024 - 18/10/2024 | Pekín, CN | Encuentro Global de Innovación de Código Abierto (GOSIM)
- 19/10/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
Europa
- 09/10/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 2024-10-10 - 2024-10-11 | Virtual y presencial (Viena, AT) | Rust del euro
- 15/10/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 17/10/2024 | Darmstadr, DE | Rust Rhein-Main
- 15/10/2024 | Cambridge, Reino Unido | Encuentro de Cambridge Rust
- 15/10/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 15/10/2024 | Múnich, DE | Rust Múnich
- 16/10/2024 | Manchester, Reino Unido | Rust Manchester
- 17/10/2024 | Barcelona, ES | BcnRust
- 17/10/2024 | Berna, CH | Rust Bern
- 22/10/2024 | Varsovia, PL | Rust Varsovia
- 26/10/2024 | Estocolmo, SE | Estocolmo Rust
- 28/10/2024 | París, FR | Rust París
- 29/10/2024 | Aarhus, Dinamarca | Rust Aarhus
- 30/10/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 31/10/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 06/11/2024 | París, FR | Rústicos de París
América del Norte
- 15/10/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 16/10/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 17/10/2024 | Virtual y presencial (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 19/10/2024 | Cambridge, MA, EE. UU. | Reunión de Boston Rust
- 23/10/2024 | Austin, TX, Estados Unidos | Rust ATX
- 27/10/2024 | Cambridge, MA, EE. UU. | Reunión de Boston Rust
- 04/11/2024 | Brookline, MA, EE. UU. | Reunión de Boston Rust
Oceanía
- 29/10/2024 | Canberra, ACT, AU | Grupo de Usuarios de Rust de Canberra (CRUG)
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
estoy en el lado equivocado de los 45. No tengo ningún interés en perder el tiempo que podría haber dejado escribiendo C desde cero. Escribir Rust es pura alegría. Puedo pasar de una idea a una implementación funcional, probada, robusta, publicada y empaquetada en el tiempo que me llevaría incluso comenzar las primeras líneas de una versión en C. Las herramientas son hermosas, hacen que la programación sea divertida y el resultado final generalmente supera al C equivalente. Una vez que se construye, sé que funcionará perfectamente en todas las plataformas que me importan, y no tengo que ir por ahí probándolas manualmente para encontrar todas las peculiaridades de la plataforma y el compilador que lo romperán.
– Jonathan Perkins en la lista de correo de NetBSD
¡Gracias a blonk 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