Esta semana en Rust #38
¡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
- Anunciando Rust 1.83.0
- Actualización de la Iniciativa de Refactorización del Sistema de Rasgos de Rustc: Estabilizando '-Znext-solver=coherence'
- El objetivo wasm32-wasip2 ha alcanzado el soporte de nivel 2
- Encuesta Anual sobre el Estado de la Roya 2024
Actualizaciones de proyectos/herramientas
- Medición y mejora del rendimiento multihilo de los susurros
- Grupo: 0.15
- Leptos 0.7.0
- Advenimiento de Rust 2024
- Presentación de Uniffi para React Native: módulos turbo impulsados por Rust
- Revisando las configuraciones de aplicaciones de Hubris
- Enlaces RVKMS y Rust KMS
- Discusión ininterrumpida sobre la adición de Rust a Git
- Arquitectura del compilador incremental de Rust
- Novedades de SeaStreamer 0.5
Observaciones/Pensamientos
- ¡Rotura! en el Cargo.toml — Cómo funcionan (y se rompen) las características del paquete Rust
- API de transmisión de audio en Rust pt. 4: El modelo
- [audio] GitButler con Scott Chacon y Kiril Videlov
- [audio] A different serde
Tutoriales de Rust
- Desarrollo de un complemento de Zellij Rust
- Aventuras de optimización: hacer que una carga de trabajo paralela de Rust sea aún más rápida con diseño orientado a datos (y otros trucos)
- Diseñando un const 'array::from_fn' en Rust estable
- Implementación de APIs asíncronas para periféricos de microcontroladores
- Rust 🦀 en el RP2040
- Creación de un chat en tiempo real usando WebSockets a través de flujos HTTP/2
- ¡Ejecutando Bevy en un Web Worker con Renderizado y Física!
- Empaquetando una biblioteca de Rust como XCFramework para iOS
Crate de la semana
El crate de esta semana es augurs, un kit de herramientas de series temporales para Rust con enlaces a JS y Python.
¡Gracias a Ben Sully 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.
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.
- Semana del Rust 2025 | Cierra 12/01/2025 | Utrecht, Países Bajos | Fecha del evento: 2025-05-13
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 488 solicitudes de extracción en la última semana][fusionadas]
- 'rust_analyzer_settings': uso forzado de la cadena de herramientas 'nocturna'
- añadir la directiva 'needs-target-has-atomic'
- permitir inyectar un tiempo de ejecución del generador de perfiles en '#! [no_core]' cajas
- Rescate de más errores en la reducción de la dinámica
- Mejor diagnóstico para los ítems FN en funciones variádicas
- cambia la antigua declaración intrínseca por una nueva declaración
- marque 'xform_ret_ty' para WF en el nuevo solucionador para mejorar el aventado del método
- verifique la fuente antes de sugerir una anotación
- Comprobar la caché local incluso si se puede usar global
- limpieza: eliminar la directiva '//@ bastante expandida'
- constificar 'Soltar' y 'Destruir'
- coverage: almacena las regiones de origen de cobertura como 'Span' hasta codegen
- cobertura: use una consulta para identificar qué ID de contador/expresión se utilizan
- retrasar un error al encontrar un impl con genéricos sin restricciones en 'codegen_select'
- deshabilitar 'avr-rjmp-offset' en Windows por ahora
- no llamar 'extern_crate' en el rasgo actual en errores de discordancia de caja
- no restringir inferir vars en 'find_best_leaf_obligation'
- No crear un tipo de objeto de rasgo si faltan tipos asociados
- no unificar las desreferencias de préstamos compartidos en GVN
- no escriba error si no logramos forzar 'Pin<T>' porque no contiene una referencia
- eliminar los números mágicos de la precedencia de las expresiones
- enable '-Zshare-generics' para funciones 'inline(never)'
- asegúrese de que los objetivos definidos por JSON sean coherentes
- Rechazo rápido: agregar verificación de profundidad
- arreglar ICE cuando promocionado tiene un desbordamiento de tamaño de diseño
- fix '-Zdump-mir-dataflow'
- arreglar 'clobber_abi' en el ensamblaje en línea RV32E y RV64E
- arreglar diagnóstico confuso para reservado '##'
- arreglar el manejo de x18 en el ensamblaje en línea AArch64 en ohos/trusty o con -Zfixed-x18
- GCE: arreglar el desajuste de 'typing_mode'
- deshacerse del verificador de const de HIR
- mejorar el manejo del tramo en 'parse_expr_bottom'
- Mejoras en las lógicas iniciales de búsqueda de sysroot y libdir
- hacer que 'adjust_fulfillment_errors' funcione con 'HostEffectPredicate' y 'const_conditions'
- convertir 'compare_impl_item' en una consulta
- solo error raw lifetime seguido de ''' en la edición 2021+
- solo ignorar windows-gnu en avr-jmp-offset
- Imprimir rutas de documentos generadas
- pasar correctamente los argumentos del enlazador que contienen comas
- Respetar la opción verify-llvm-ir en el backend
- robustificar y generar la resolución de notación de tipo de retorno en 'resolve_bound_vars'
- mostrar 'forbidden_lint_groups' en informes de futuras comparaciones
- soporte 'clobber_abi' en el ensamblaje en línea AVR
- soporte de entrada/salida en registros vectoriales del ensamblaje en línea de PowerPC
- admite registros de predicados (solo clobber) en el ensamblado en línea de Hexagon
- apoyo que revela la definición de un post opaco prestado
- target 'check_consistency': asegúrese de que la cadena de características de destino tenga algún sentido básico
- el sistema operativo emscripten ya no existe en objetivos que no sean wasm
- use la edición de 'macro_rules' al compilar la macro
- use almacenes del tamaño correcto para establecer discriminantes
- miri: implement 'TlsFree'
- Miri: Soporte del sistema de archivos para Solarish: stat
- miri: mover FdTable a una ubicación común y separar el comportamiento de Unix
- Miri: eliminar ctrlc, sin usar
- deja de clonar tanto 'Context'
- recuperar algo de rendimiento perdido
- estabilizar 'const_maybe_uninit_write'
- estabilizar 'extended_varargs_abi_support'
- estabilizar 'ptr::fn_addr_eq'
- estabilizar las variantes sin signo y flotantes de la función 'num_midpoint'
- 'thread::available_parallelism' para wasm32-wasip1-threads
- agregar API de entrada 'BTreeSet' para que coincidan con 'HashSet'
- btree: add '{Entry,VacantEntry}::insert_entry'
- arreglar el encadenamiento de 'carrying_add's
- marque 'slice::copy_from_slice' de manera inestable const
- std: exponer 'const_io_error!' como 'const_error!'
- std: Refactorizar la sincronización basada en 'pthread'
- arreglar y dejar de usar 'home_dir()'
- rangos de soporte en '<[T]>::get_many_mut()'
- cargo: toml: Permitir agregar/eliminar de los scripts de carga
- cargo: build-std: siempre enlazar a std al probar proc-macros
- cargo: fix: Migrar manifiestos de script de carga a través de ediciones
- cargo: build-std: descargar deps primero
- cargo: pgo: determinar la capacidad de ejecución de la prueba en tiempo de compilación
- cargo: pgo: asegúrese de que PGO funcione
- Cargo: PGO: solo se ejecuta todas las noches
- cargo: add future-incompat warning against keywords in cfgs and add raw-idens
- cargo: corrección: eliminar la referencia de registro predeterminada en los documentos cmd 'info'
- cargo: git-fetch-with-cli: set 'GIT_DIR' para compatibilidad con repositorios desnudos
- cargo: test: el atributo 'requires' acepta literales de cadena para cmds
- rustdoc-json: incluir la seguridad de 'estático's
- rustdoc: Cambiar sangría de elementos impl
- bindgen: añadir soporte para bloques externos inseguros
- bindgen: consolidar la gestión de versiones de dependencias
- bindgen: extender las devoluciones de llamada de análisis para exponer los tipos compuestos y alias descubiertos
- bindgen: generate C-String literals 'c"example"' en lugar de código inseguro
- bindgen: mejorar el generador de str de depuración
- bindgen: introduce '--rust-edition'
- Bindgen: Usar resolución de carga v2
- [bindgen: envuelve la representación de la matriz de tipos opacos en una estructura '#[repr(C)]]](https://github.com/rust-lang/rust-bindgen/pull/2880)
- rustfmt: use el símbolo de 'ruta' preinternado
- clippy: 'bad_bit_mask' Arreglar falsos positivos en macros proc
- clippy: 'doc_nested_refdefs': nuevo lint para sintaxis de lista sospechosa
- clippy: añadir más casos a la pelusa 'useless_conversion'
- clippy: añadir nueva pelusa 'literal_string_with_formatting_args'
- clippy: arreglar 'needless_match' FP en if-lets
- clippy: arreglar el comportamiento de 'shadow_unrelated' con los cierres
- clippy: arreglar la sugerencia de elisión de vidas en las cláusulas where
- clippy: corrección: use 'multipart_suggestion' para 'derivable_impls'
- clippy: maneja la repetición de la restricción constante asociada también
- Rust-analyzer: Anunciar finalizaciones e inserciones Sugerencias resuelve las capacidades del servidor en función de las capacidades del cliente
- rust-analyzer: arreglar la consulta de configuración de depuración que no hereda el entorno
- rust-analyzer: arreglar la corrección de sintaxis insertando puntos y comas innecesarios
- rust-analyzer: re-add 'rust-analyzer.cargo.sysrootQueryMetadata'
- rust-analyzer: eliminar los límites de tipo asociados redundantes de 'dyn TypeFolder'
Clasificación del rendimiento del compilador de Rust
Semana ajetreada con más PR que afectan al rendimiento de lo habitual. Afortunadamente, las mejoras de rendimiento superaron las regresiones en los puntos de referencia del mundo real, y la mayor ganancia de rendimiento individual provino de un cambio para dejar de realizar incondicionalmente la verificación de LLVM IR en las compilaciones de depuración, lo que fue solo un trabajo desperdiciado.
Triaje realizado por @rylev. Rango de revisión: 7db7489f.. 490b2cc0
Resumen:
| (instrucciones:u) | media | Gama | Recuento | |:----------------------------------:|:-----:|:--------------:|:-----:| | Regresiones ❌
(primario) | 0.5% | [0.2%, 1.9%] | 58 | | Regresiones ❌
(secundaria) | 1.1% | [0.2%, 5.1%] | 85 | | Mejoras ✅
(primario) | -2,3% | [-8.2%, -0.2%] | Artículo 116 | | Mejoras ✅
(secundaria) | -2,5% | [-8.9%, -0.1%] | 55 | | Todos ❌✅ (primarios) | -1,4% | [-8,2%, 1,9%] | 174 |6 regresiones, 6 mejoras, 5 mixtas; 5 de ellos en rollups 49 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
- [disposición: fusionar] crates.io: Trusted Publishing Support
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Arreglar ICE cuando se necesitan varias sustituciones de superrasgos pero solo se proporciona una
- [disposición: fusionar] reelaborar el aventamiento para manejar con sensatez los límites globales de dónde
- [disposición: fusionar] Mostrar siempre la primera línea de los bloques impl incluso cuando están colapsados
- [disposición: fusionar] Problema de seguimiento para 'const_nonnull_new'
- [disposición: fusionar] Lint al combinar '#[no_mangle]' y '#[export_name]'
- [disposición: fusionar] Agregar implicaciones de extensión para tuplas de aridad 1 a 12
- [disposición: fusionar] [discusión] 'ErrorKind::FilesystemQuotaExceeded' de 'io_error_more'
- [disposición: fusionar] [discusión] 'ErrorKind::CrossesDevices' de 'io_error_more'
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] proyecciones de campo v2
Próximos eventos
Eventos oxidados entre 2024-12-04 - 2025-01-01 🦀
Virtual
- 05/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 05/12/2024 | Virtual (Miami, FL) | Eventos del grupo de usuarios de Java en Miami
- 06/12/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 07/12/2024 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 08/12/2024 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 2024-12-10 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 11/12/2024 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 12/12/2024 | Híbrido: presencial y virtual (Seattle, WA, EE. UU.) | Reunión de Rust en Seattle
- 12/12/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 12/12/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 13/12/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 17/12/2024 | Virtual (San Francisco, CA, EE. UU.) | Centro Blockchain SF
- 17/12/2024 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 17/12/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 17/12/2024 | Virtual (Tel Aviv, Illinois) | Expertos en códigos
- 19/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 19/12/2024 | Virtual (Ciudad de México, DF, MX) | Rust MX
- 20/12/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 24/12/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 26/12/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
África
- 2024-12-10 | Johannesburgo, ZA | Reunión de Rust en Johannesburgo
Asia
- 14/12/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
Europa
- 04/12/2024 | Girona, ES | Rust Girona
- 04/12/2024 | Köln, DE | Colonia Rust
- 04/12/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 04/12/2024 | París, FR | Rust Paris
- 05/12/2024 | Gdansk, PL | Rust Gdansk
- 05/12/2024 | Zlin, CZ | Rust Moravia
- 06/12/2024 | Moscú, RU | RustCon RU
- 11/12/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 12/12/2024 | Ámsterdam, Países Bajos | Grupo de desarrolladores de Rust en Ámsterdam
- 12/12/2024 | München, DE | Rust Múnich
- 12/12/2024 | Viena, AT | Rust Viena
- 17/12/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
América del Norte
- 05/12/2024 | Montreal, QC, CA | Rust Montreal
- 05/12/2024 | San Luis, MO, EE. UU. | STL Rust
- 2024-12-10 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
- 12/12/2024 | Híbrido: presencial y virtual (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 12/12/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 16/12/2024 | Minneapolis, MN, Estados Unidos | Reunión de Rust en Minneapolis
- 17/12/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 26/12/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
Oceanía
- 04/12/2024 | Sídney, Australia | Rust de Sídney
- 08/12/2024 | Canberra, Australia | Grupo de usuarios de Canberra Rust
- 16/12/2024 | Collingwood, Australia | Rust Melbourne
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
"uno mismo" suena como una cosa de Rust
¡Gracias a Jacob Pratt 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