Esta semana en Rust #33
¡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 🥰
Actualizaciones de proyectos/herramientas
- Una actualización sobre los controladores de GPU Apple M1/M2
- Anunciando Toasty, un ORM asíncrono para Rust
- gitoxide - octubre de 2024
- Glues v0.4 - Soporte para MongoDB y funciones de edición de Vim
- Meilisearch 1.11 - Mejoras en la búsqueda impulsada por IA y la búsqueda federada
Observaciones/Pensamientos
- Hacia una transmutación segura en Rust
- El rendimiento del compilador de Rust
- Un nuevo enfoque para validar conjuntos de pruebas
- Por qué no deberías arquear un HashMap en Rust
- Implementación del rasgo de servicio de la torre
- Mejores prácticas para derivar atributos de macro en Rust
- Recortando un binario de Rust a la mitad
- Una mirada profunda a nuestra nueva arquitectura masiva de múltiples inquilinos
- El Rust inseguro es más duro que C
- Generadores con UnpinCell
- ¿Qué modelo de LLM es mejor para generar código Rust?
- Aprendizajes de la contribución al Proyecto Rust
- Dyn Box Vs. Genéricos: ¿Cuál es el mejor enfoque para lograr genéricos condicionales en Rust?
Tutoriales de Rust
Miscelánea
- Prisma de Rust
- [audio] Rust vs. C++ con Steve Klabnik y Herb Sutter
- [audio] Novedades de Rust 1.76, 1.77 y 1.78
- [video] Charla sobre la nueva pila de fuentes Rust de Chrome, fuentes
- [video] Arquitectura de un motor de juego Rust (con Alice Cecile)
- [video] Gitoxide: Lo que es y lo que no es - Sebastian Thiel
Crate de la semana
El crate de esta semana es tower-http-client, una biblioteca de middlewares y varias utilidades para clientes HTTP.
¡Gracias a Aleksey Sidorov por la autosugestión!
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
- No se emitieron convocatorias 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 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 447 solicitudes de extracción en la última semana][fusionadas]
- añadir objetivo wasm32v1-none
- AIX: use /dev/urandom para la implementación aleatoria
- 'rustc_target': Añadir la característica de destino pauth-lr aarch64
- añadir una nota para '?' en un 'impl Future<Output = Result<..>>' en la función de sincronización
- agregar soporte para los límites de elementos '~const'
- considerar a los candidatos param-env incluso si tienen errores
- Comprobaciones de estabilidad const v2
- Cobertura: Consolidar la creación de registros de Covmap/Covfun
- Cobertura: no confíe en el recorrido personalizado para encontrar bucles envolventes
- cobertura: emitir intrínsecos LLVM usando el método auxiliar normal
- coverage: pasar las asignaciones de cobertura a LLVM como estructuras separadas
- normalizar profundamente 'TypeTrace' al informar de un error de tipo en el nuevo solucionador
- denegar llamadas a métodos que no sean '#[const_trait]' en MIR constck
- no eliminar el directorio '.cargo'
- no se desconecte al compilador anterior cuando CI rustc esté disponible
- emitir lint de incompatibilidad futura al llamar/declarar funciones con vectores que requieren la característica de destino faltante
- habilitar la función LSX para objetivos LoongArch Linux
- error en alineaciones mayores que 'isize::MAX'
- expandir: dejar de usar artificial 'ast::Item' para macros cargadas desde metadatos
- arreglar las rutas textuales de Windows cuando se usa con la macro 'include!'
- hashStable for 'rustc_feature::Features': detener el hash de la constante en tiempo de compilación
- lint contra obtener punteros de temporarios eliminados inmediatamente
- mover 'cmp_in_dominator_order' fuera del cálculo del dominador de grafos
- pasar constness con span en 'lower_poly_trait_ref'
- evitar el desbordamiento de la caída de 'enumeración' del hielo
- Refactorizar la detección de cambios para rustdoc y download-rustc
- reemplace un enlace FTP en los comentarios con un enlace HTTPS equivalente
- reemplace algunos envoltorios de LLVMRust con llamadas a la API de LLVM C
- representan 'hir::TraitBoundModifiers' como partes distintas en HIR
- representar la constancia del rasgo como un predicado distinto
- redondea el número entero con signo negativo hacia cero en 'iN::midpoint'
- simplificar la lógica de recompilación forzada para la "biblioteca"
- simplificar el manejo de parámetros en 'resolve_bound_vars'
- tomar una referencia sin procesar ('&raw (const|mut)') de una referencia deref de puntero ('*ptr') siempre es seguro
- use 'Enabled{Lang,Lib}Feature' en lugar de n-tuplas
- validar que los argumentos son correctos para 'UnevaluatedConst', 'ExistentialTraitRef'/'ExistentialProjection'
- Características del objetivo x86: hacer que pclmulqdq implique SSE2
- Retorno de flotador x86-32 para ABI 'Rust': trate todos los tipos de flotador de manera consistente
- Miri: Añadir opción para generar informes de cobertura
- Miri: Android: Añadido soporte para llamadas al sistema
- Miri: Borra los errores 'eval_libc' de las cuñas de Unix
- Miri: usar consistentemente manejadores de errores de E/S
- Miri: Corrige el error devuelto por 'readdir_r' cuando el aislamiento está habilitado, y los usos de 'raw_os_error'
- miri: implementar LLVM x86 vpclmulqdq intrínsecos
- miri: indicar más explícitamente dónde cerramos los manejadores de archivos de host/dir
- (Gran cambio en el rendimiento) No ejecutar lints que no puedan emitir
- optimizar 'Rc<T>::d efault'
- especialice 'read_exact' y 'read_buf_exact' para 'VecDeque'
- Estabilizar la función 'isqrt'
- estabilizar la vida útil de la cola más corta
- soporte 'char::is_digit' en contextos const
- eliminar la asignación 'Arc rt::init' para la información del hilo
- proporciona una impl predeterminada para 'Pattern::as_utf8_pattern'
- vectorizado 'SliceContains'
- evite usar importaciones en 'thread_local_inner!' en estático
- mejor capacidad predeterminada para 'str::replace'
- musl: use 'posix_spawn' si se solicitó un cambio de directorio
- resolución de carga: Hacer espacio para la resolución v3
- cargo completo: Incluir descripciones en zsh
- cargo env: eliminar clones innecesarios
- Cargo: huella dactilar: evite llamadas innecesarias
- cargo: añadida generación de esquemas inestables para Cargo.toml
- cargo: deprecate 'cargo verify-project'
- Corrección de carga: agregar información de reemplazo de fuente cuando no se encuentra ningún paquete que coincida
- Cargo fix: Trace 'config [env]' tabla en dep-info
- Prueba de carga: agregar correcciones en el resolución de satélites
- rustdoc: No considerar las funciones anidadas como función principal incluso si se llaman 'main' en doctests
- rustdoc: extender 'fake_variadic' a tuplas "envueltas"
- rustdoc: activos hash en tiempo de compilación de rustdoc
- permitir búsqueda basada en tipos en funciones extranjeras
- clippy: 'borrow_deref_ref': no activar en referencias '&raw'
- clippy: no activar 'const_is_empty' para aserciones const en línea
- clippy: dispara 'large_const_arrays' para longitudes de matriz calculadas
- clippy: arreglar sugerencia incorrecta para '! (a >= b) como i32 == c'
- clippy: arreglar el anclaje de pelusa que no funciona (generación y filtrado)
- clippy: eliminar los usos innecesarios de 'filter_map'
- clippy: dejar de linting 'unused_io_amount' en los rasgos de IO
- Rust-analyzer: añadir ediciones de texto a más sugerencias de incrustación
- Rust-Analyzer: Implementar modelo de extracción de diagnóstico
- rust-analyzer: renderizar documentos de tipo aliasado cuando el tipo no tiene documentos
- Rust-analyzer: resuelven patrones de rango a sus estructuras
- Rust-analyzer: Divida el diagnóstico de 'macro-error' para que los usuarios puedan ignorar solo partes de él
- rust-analyzer: soporte 'cfg(true)' y 'cfg(false)'
- rust-analyzer: arreglar la configuración de habilitación de diagnóstico que se ignora
- rust-analyzer: arreglar el mensaje de sugerencia incompatible con DYN
- rust-analyzer: arreglar el formato en la página de bienvenida, ejemplo de configuración de rutas de solo lectura
- rust-analyzer: añadir las banderas CFG que faltan para la caja 'core'
- Rust-analyzer: permitir la reexportación pública de la importación de 'cajas externas'
- rust-analyzer: maneje correctamente '#""' en la edición '<2024'
- Rust-analyzer: No compute diagnósticos para archivos no locales
- rust-analyzer: arreglar la comprobación del valor 'false labelDetailsSupport'
- rust-analyzer: arreglar el análisis incorrecto de los límites de uso
- rust-analyzer: maneja las compensaciones de tiempo faltantes con gracia
- Analizador de Rust: Implemente la higiene mixta del sitio
- Rust-Analyzer: Tarea de desestructuración de clavos de una vez por todas
- Analizador de Rust: Evitar la reexportación pública de un artículo privado
- Rust-analyzer: resuelva correctamente las rutas de preludio dentro de los módulos dentro de los bloques
- rust-analyzer: pon '|' inicial en patrones debajo de 'OrPat'
- rust-analyzer: convierte "Eliminar 'dbg!'" en una solución rápida para una mejor priorización
- Rust-analyzer: mover text-edit a ide-db
- Rust-analyzer: solo construya un resolver en macro descensión cuando sea necesario
- rust-analyzer: orden de llamada de consulta de intercambio en 'file_item_tree_query'
Clasificación del rendimiento del compilador de Rust
Esta semana ha habido mucha actividad, tanto en el lado de las regresiones como en el de las mejoras. Había una gran regresión, que se revirtió de inmediato. En general, la semana terminó siendo positiva, gracias a un PR acumulativo que provocó una pequeña mejora en casi todos los puntos de referencia.
Triaje realizado por @kobzol. Rango de revisión: 3e33bda0.. c8a8c820
Resumen:
| (instrucciones:u) | media | Gama | Recuento | |:----------------------------------:|:-----:|:--------------:|:-----:| | Regresiones ❌
(primario) | 0.7% | [0.2%, 2.7%] | 15 | | Regresiones ❌
(secundaria) | 0.8% | [0.1%, 1.6%] | 22 | | Mejoras ✅
(primario) | -0,6% | [-1.5%, -0.2%] | 153 | | Mejoras ✅
(secundaria) | -0,7% | [-1.9%, -0.1%] | 80 | | Todos ❌✅ (primarios) | -0,5% | [-1.5%, 2.7%] | 168 |6 regresiones, 6 mejoras, 4 mixtas; 6 de ellos en rollups 58 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:
- No se aprobaron RFC 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] Decidir si los bloques dentro de 'asm' goto deben ser seguros por defecto
- [disposición: fusionar] #[inline(never)] no funciona para funciones asíncronas
- [disposición: no especificada] Agregar implementaciones de LowerExp y UpperExp a NonZero
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: Coincidencia etiquetada
- [nuevo] RFC: Nunca patrones
- [nuevo] [RFC] Permitir que los tipos empaquetados contengan transitivamente tipos alineados
- [nuevo] [RFC] Modificadores de objetivo
Próximos eventos
Eventos oxidados entre 2024-10-30 - 2024-11-27 🦀
Virtual
- 31/10/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 31/10/2024 | Virtual (Nürnberg, DE) | Rust, Núremberg, DE
- 01/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 02/11/2024 | Virtual( Kampala, UG) | Círculo de Rust Kampala
- 06/11/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 07/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 08/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 12/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 14/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 14/11/2024 | Virtual y presencial (Lehi, UT, EE. UU.) | Rust de Utah
- 14/11/2024 | Virtual y presencial (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 15/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 19/11/2024 | Virtual (Los Ángeles, CA, EE. UU.) | DevTalk LA
- 19/11/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 20/11/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 21/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 21/11/2024 | Virtual (Róterdam, Países Bajos) | Desarrollo de juegos de Bevy
- 26/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
Europa
- 30/10/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 31/10/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 31/10/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 05/11/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 06/11/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 06/11/2024 | París, FR | Rustáceos de París
- 12/11/2024 | Zúrich, CH | Rust de Zúrich
- 13/11/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 14/11/2024 | Estocolmo, SE | Estocolmo Rust
- 19/11/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 21/11/2024 | Edimburgo, Reino Unido | Rust y sus amigos
- 21/11/2024 | Oslo, NO | Rust Oslo
- 23/11/2024 | Basilea, CH | Basilea Rust
América del Norte
- 30/10/2024 | Chicago, Illinois, Estados Unidos | Rust de plato profundo
- 31/10/2024 | Mountain View, CA, EE. UU. | Encuentro de Rust en Mountain View
- 04/11/2024 | Brookline, MA, EE. UU. | Encuentro de Boston Rust
- 07/11/2024 | Montreal, QC, CA | Rust Montreal
- 07/11/2024 | San Luis, MO, EE. UU. | STL Rust
- 12/11/2024 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
- 14/11/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 15/11/2024 | Ciudad de México, DF, MX | Rust MX
- 15/11/2024 | Somerville, MA, EE. UU. | Encuentro de Boston Rust
- 19/11/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 23/11/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 25/11/2024 | Ferndale, Michigan, Estados Unidos | Rust de Detroit
- 27/11/2024 | Austin, TX, Estados Unidos | Rust ATX
Oceanía
- 31/10/2024 | Auckland, Nueva Zelanda | Rust AKL
- 12/11/2024 | Christchurch, Nueva Zelanda | Grupo de encuentro de Christchurch Rust
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 Quién está contratando en r/rust
Frase de la semana
Un esfuerzo serio para perseguir [P1179R1] como un TS de por vida[P3465R0] comprometerá los principios básicos obsoletos e inviables de C++ y adoptará mecanismos más parecidos a los de Rust. En el negocio de los compiladores, esto se llama "carcinización": una tendencia de los organismos que no son cangrejos a desarrollar características similares a las de los cangrejos. – Sean Baxter en circle-lang.org
¡Gracias a Collin Richards 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