Esta semana en Rust #35
¡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 🥰
Oficial
Fundación
Boletines
Actualizaciones de proyectos/herramientas
- Presentación de Hyperlight: Seguridad basada en máquinas virtuales para funciones a escala
- Presentamos Sled, una biblioteca de Rust para crear efectos de iluminación de tiras de LED espaciales
- Redis Shield: Un módulo limitador de velocidad de alto rendimiento en Rust que utiliza el algoritmo Token Bucket
- Cohen: gccrs: Un compilador alternativo para Rust
- Progreso en las características de seguridad de la cadena de herramientas
- Lanzamiento de macro de creación de próxima generación Bon 3.0
Observaciones/Pensamientos
- Quizás Rust necesita "aplazar"
- Rust necesita una especificación oficial
- ¿Por qué std::p in::P in es tan raro?
- Trayendo excepciones más rápidas a Rust
- Explorando el código ensamblador generado por Rust Recursive Tree Traversal
- ID mecanografiados con SeaORM
- Procesos de desove en Linux
- [video] Actualización de los objetivos del proyecto Rust 2024 y Rust 1.80.1
- [video] Río: Emulador de terminal de próxima generación escrito en Rust
Tutoriales de Rust
- Analizando argumentos en Rust sin dependencias
- Uso de SIMD portátil en Rust estable
- Tutorial de Rust Syn Crate: Automatice los patrones de creación con macros personalizadas
- Tutorial: Implementación del análisis sintáctico JSON
- Impl Snake For Micro:bit - Incrustado Rust asíncrono en BBC Micro:bit con Embassy
Miscelánea
Crate de la semana
El crate de esta semana es struct-split, una macro proc para implementar préstamos parciales.
¡Gracias a Felix por la sugerencia!
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.
- Rama — múltiples credenciales básicas/de portador para soporte de servidor de 'Autorización'
- Rama — implementar 'tomar' y 'reemplazar' para Contexto y Extensiones
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
403 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- eliminar el objetivo 'wasm32-wasi' de rustc
- añadir una nueva característica de 'aritmética amplia' para WebAssembly
- agregar soporte de salida del compilador de dibujo de bloques Unicode
- add '{ignore,needs}-{rustc,std}-debug-assertions' soporte de directiva
- añadir una implementación predeterminada para 'CodegenBackend::link'
- añadir discriminadores a DILocations cuando múltiples funciones están alineadas en un solo punto
- Agregue la función de destino V9, V8Plus y LeonCasa a SPARC y use V8Plus en 'create_object_file'
- Pruebas adicionales para asegurar que LET se rechaza durante el análisis
- tipos de sí mismo arbitrarios v2: (sin usar) rasgo de receptor
- soporte básico de ensamblaje en línea para SPARC y SPARC64
- cobertura: extraiga las funciones seguras del envoltorio FFI a 'llvm_cov'
- cobertura: restringir la expansión de intervalo vacío para cubrir solo '{' y '}'
- Cobertura: Simplificar partes de la creación de gráficos de cobertura
- no filtrar los pasos de pelusa vacíos y rehacer el paso de CTFE
- no reveles opacos en el param-env, en su lugar tenemos la norma perezosa
- no confíe en download-rustc=if-unchanged en CI por ahora
- no sugiera '.into_iter()' en los iteradores
- no use 'maybe_unwrap_block' al buscar llamadas de macro en un bloque expr
- no sugiera 'use<impl>' cuando tengamos un problema de borrowck relacionado con la edición de 2024
- elimine "gnu" en el entorno de destino para FreeBSD armv6/7
- emitir advertencia al llamar/declarar funciones con vectores no disponibles
- Imponer que las vidas sin procesar deben ser identificadores sin procesar válidos
- Asegúrese de que la expansión de cola reciba una extensión de vida útil
- arreglar paréntesis destrozados en la sugerencia de lint estática de mut compartido
- deshacerse de 'check_opaque_type_well_formed'
- hacer 'RustString' un tipo extern para evitar advertencias de 'improper_ctypes'
- hacer que 'Ty::p rimitive_symbol' reconozca 'str'
- hacer 'fn_abi_sanity_check' un poco más estricto
- asegúrese de que sugerimos la turbopesca del tipo correcto arg para nunca sugerencia
- marque algunas características de destino como 'prohibidas' para que no puedan ser (des)establecidas con -Ctarget-feature
- solo deshabilita la caché si el predicado tiene opacos dentro de él
- passWrapper: adaptar para nuevo parámetro en LLVM
- preferir 'pub(super)' en 'unreachable_pub' sugerencia de lint
- sugerir correctamente 'E::assoc' cuando nos encontramos con 'E::Variant::assoc'
- proporcionar marcadores de posición genéricos para rasgos en las sugerencias de "no se encontró ningún método para el parámetro de tipo"
- rechaza el tiempo de vida bruto seguido de ''', como lo hacen los tiempos de vida regulares
- eliminar los restos de ABI 'intrínsecos a la plataforma'
- eliminar 'rustc_session::config::rustc_short_optgroups'
- eliminar el soporte para el atributo 'rustc_safe_intrinsic'; usar las funciones 'rustc_intrinsic' en su lugar
- eliminar las importaciones innecesarias de glob-imports de pub 'enum' de 'rustc_middle::ty'
- requiere puerta 'const_impl_trait' para todas las llamadas const condicionales y de rasgo
- revertir usando la estática 'HEAP' en la asignación de Windows
- establecer el "nombre del símbolo" en las bibliotecas de importación raw-dylib con el nombre representativo
- simplificar las llamadas FFI para '-Ztime-llvm-passes' y '-Zprint-codegen-stats'
- simplificar algunos lugares que se ocupan de los parámetros genéricos predeterminados
- simplificar la API interna para declarar opciones de línea de comandos
- sugerir cambiar LHS y RHS cuando RHS implique 'PartialEq<lhs_ty>'
- modificar la redacción del error de desbordamiento E0320
- Se ha ajustado la detección de múltiples versiones de cajas para que sean más abarcadoras
- use 'download-rustc="if-unchanged"' como un valor predeterminado global
- use un directorio separado para compilaciones de R-A de manera consistente en Helix Config
- Usar detallado para la sugerencia de separador de rutas
- 'pointee_info_at': arreglar la lógica para recursar en enumeraciones
- 'rustc_codegen_llvm': Añadir una nueva opción 'pc' a branch-protection
- 'rustc_target': más correcciones de cadenas de destino para LLVM 20
- interpretar: 'get_alloc_info': también devuelve mutabilidad
- StableMIR: Algunas correcciones a la impresión bonita
- StableMIR: API para recuperar definiciones de cajas
- Miri: arreglar la prueba de linux-futex que se desactivaba accidentalmente
- Miri: get/set thread name shims return errors for invalid handles
- Miri: Preparándose para la fusión de rustc
- Miri: pthread-sync test: evita errores confusos al ejecutar con adelantamiento
- miri: eliminar la lista de MutexID
- Miri: renombró estos argumentos a ecx
- miri: pruebas de préstamos apilados: agregue las que fallan bajo TB
- miri: nombres de variables estandarizadas para InterpCx
- Miri: Almacene los futexes en datos por asignación en lugar de globalmente
- Miri: Soporte de sincronización: no clonar implícitamente dentro de la maquinaria de sincronización general
- estabilizar 'const_char_encode_utf16'
- estabilizar el ensamblaje en línea Arm64EC
- estabilizar las características de destino 'multivalor', tipos de referencia y llamadas de cola de WebAssembly
- estabilizar 'UnsafeCell::from_mut'
- Estabilizar ensamblaje en línea S390X
- añadir nueva característica inestable 'const_eq_ignore_ascii_case'
- hacer 'char::is_whitespace' de manera inestable const
- en línea 'str::repeat'
- core/fmt: Reemplace la indexación de segmentos marcada por no marcada para admitir código sin pánico
- agregar API de entrada de conjunto
- implementar 'div_ceil' por 'NonZero<unsigned>'
- implementar la función 'file_lock'
- inicializar el canal 'Block' directamente en el montón
- desactivar 'f16' en plataformas que tengan problemas de recursividad
- cargo: advertencias: añadir la opción build.warnings
- cargo: test: Hacer redacciones consistentes con snapbox
- cargo: git: no validar submódulos de nuevos checkouts
- cargo: normalizar las rutas 'objetivo'
- cargo: refactorizar: clonar en escritura cuando sea necesario para InternedString
- Cargo: Rustfix: Reemplaza el manejo de duplicados de casos especiales con error
- rustdoc-search: mostrar firma de tipo en SERP basado en tipos
- rustdoc-search: simplificar las reglas para genéricos y parámetros de tipo
- bindgen: arreglar 'field_visibility' no llamado para alias de nuevo tipo
- bindgen: arreglar 'unsafe_op_in_unsafe_fn' al usar bibliotecas dinámicas y 'wrap_unsafe_ops'
- manejar prefijos separados en las reglas de clippy
- clippy: 'no_mangle_with_rust_abi': coloque correctamente el ABI sugerido
- clippy: añadir intento manual basado en coincidencias a 'clippy::question_mark'
- clippy: Recopila intervalos de atributos temprano para macros no permitidas
- clippy: arreglar la pelusa 'large_include_file' que se activa todo el tiempo por los comentarios del documento
- clippy: corrección: Las sugerencias de 'identity_op' usan el paréntesis correcto
- rust-analyzer: editores/código: cambiar el código VS mínimo de 1.78 a 1.83
- Rust-analyzer: use índices de elementos de finalización en lugar de coincidencia de propiedades al buscar el elemento de finalización a resolver
Clasificación del rendimiento del compilador de Rust
Regresiones principalmente en compilaciones de documentos. No hay cambios significativos en el ciclo o max-rss Cuenta.
Triaje realizado por @simulacrum. Rango de revisión: 27e38f8f.. D4822C2D
1 Regresiones, 1 Mejoras, 4 Mixtas; 1 de ellos en rollups 47 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
- [disposición: fusionar] [RFC] Gancho de generación de hilos (heredando locales de hilos)
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Problema de seguimiento para 'const_size_of_val' y 'const_align_of_val'
- [disposición: fusionar] marcar is_val_statically_known intrínseco como establemente invocable
- [disposición: fusionar] Problema de seguimiento para 'const <*const T>::is_null'
- [disposición: fusionar] Problema de seguimiento para los métodos const 'Pin'
- [disposición: fusionar] Estabilizar 'const_atomic_from_ptr'
Carga
- [disposición: fusionar] feat(resolver): Estabilizar resolver v3
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
Próximos eventos
Eventos oxidados entre 2024-11-13 - 2024-12-11 🦀
Virtual
- 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 (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 20/11/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 21/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 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
- 25/11/2024 | Virtual (Bratislava, SK) | Grupo de encuentro de Bratislava Rust
- 26/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 28/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 28/11/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 03/12/2024 | Virtual (Buffalo, NY, EE. UU.) | Encuentro de Buffalo Rust
- 04/12/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 05/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 2024-12-10 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 11/12/2024 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
África
- 07/12/2024 | Virtual( Kampala, UG) | Círculo de Rust Kampala
Asia
- 28/11/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
- 30/11/2024 | Tokio, JP | Rust de Tokio
Europa
- 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
- 19/11/2024 | París, FR | Rust Paris
- 21/11/2024 | Edimburgo, Reino Unido | Rust y sus amigos
- 21/11/2024 | Madrid, ES | Rust loco
- 21/11/2024 | Oslo, NO | Rust Oslo
- 23/11/2024 | Basilea, CH | Basilea Rust
- 26/11/2024 | Varsovia, PL | Rust Varsovia
- 27/11/2024 | Dortmund, DE | Rust Dortmund
- 28/11/2024 | Aarhus, DK | Rust Aarhus
- 28/11/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 28/11/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 28/11/2024 | Gdansk, PL | Rust Gdansk
- 28/11/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 28/11/2024 | Praga, CZ | Rust Praga
- 03/12/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 04/12/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 05/12/2024 | Olomouc, CZ | Rust Moravia
- 06/12/2024 | Moscú, RU | RustCon RU
- 11/12/2024 | Reading, Reino Unido | Taller de lectura de Rust
América del Norte
- 14/11/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 14/11/2024 | Portland, Oregón, Estados Unidos | PDXRust
- 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
- 19/11/2024 | Spokane, WA, EE. UU. | Rust de Spokane
- 23/11/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 25/11/2024 | Ferndale, Michigan, Estados Unidos | Rust de Detroit
- 26/11/2024 | Minneapolis, MN, Estados Unidos | Reunión de Rust en Minneapolis
- 27/11/2024 | Austin, TX, Estados Unidos | Rust ATX
- 28/11/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 05/12/2024 | San Luis, MO, EE. UU. | STL Rust
- 2024-12-10 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
Oceanía
- 08/12/2024 | Canberra, Australia | Grupo de usuarios de Canberra 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
Netstack3 abarca 63 cajas y 60 años de desarrollo de código. Contiene más código que las diez cajas principales de crates.io combinadas. ... Durante los últimos once meses, han estado ejecutando la nueva pila de redes en 60 dispositivos, a tiempo completo. En ese tiempo, dijo Liebow-Feeser, se habría esperado que la mayoría del código mostrara "montañas de errores". Netstack3 solo tenía tres; Atribuyó ese bajo número al enfoque del equipo de codificar tantas invariantes importantes en el sistema de tipos como fuera posible.
– Joshua Liebow-Feeser en RustConf, según lo informado por Daroc Alden en Linux Weekly News
¡Gracias a Anton Fetisov 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