Esta semana en Rust #39
¡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
- Este mes en nuestra infra de pruebas: noviembre de 2024
- Actualización del Consejo de Liderazgo de diciembre de 2024
Boletines
Actualizaciones de proyectos/herramientas
- Dioxus 0.6
- Repetición impecable
- Actualización de Rust9x: Rust 1.84.0-beta
- Novedades de SeaQuery 0.32.x
Observaciones/Pensamientos
- Rust Macros: Un cuento con moraleja
- Ejecutar bots de telRust a bajo costo en Fly.io
- Acelerando Ruby reescribiendo C... en Rubí
- Los decodificadores PNG seguros para memoria ahora superan ampliamente a las bibliotecas PNG de C
- Estado de las cajas 2025
- Comparación de cajas de base de datos de Rust
Tutoriales de Rust
- Análisis de mensajes MIDI en Rust
- Arrastrar y soltar imágenes en Bevy 0.15 en la web
- Faltan rasgos iterables y cómo introducirlos sin esfuerzo
- EuroRust: Introducción al Diesel: conceptos básicos y avanzados en la práctica
Miscelánea
- Mi historia de Rust
- Informe de empleos de Rust de noviembre de 2024
- [video] Cómo integrar C++ y Rust
- [video] Reunión de desarrolladores de LLVM 2024 - Rust ❤️ LLVM
Crate de la semana
El crate de esta semana es include-utils, un reemplazo más potente para la macro 'include_str' de la biblioteca estándar.
¡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.
Rustup
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.
Esta semana no se han presentado convocatorias para participar.
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.
*Esta semana no se han presentado convocatorias ni presentaciones.*x
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 462 solicitudes de extracción en la última semana][fusionadas]
- 'dataflow_const_prop': no evalúe una dirección ptr en SwitchInt
- 'fn_sig_for_fn_abi' debería devolver un 'ty::FnSig', sin necesidad de un encuadernador
- 'rust_for_linux': -Zreg-struct-return bandera de línea de comandos para X86
- en realidad camina hacia vidas y attrs en 'EarlyContextAndPass'
- agregue 'allocate_bytes' y refactorice 'allocate_str' en InterpCx para byte sin procesar...
- añadir contexto a los errores de "const in pattern"
- agregar lint contra comparaciones de punteros de función
- añadir más información sobre las discrepancias de tipo/rasgo para diferentes versiones de cajas
- evitar errores de 'tipo opaco no restringido' en presencia de otros errores
- evite obtener el nodo anon const hir que ya está disponible
- Normalizar profundamente cuando se calculan los límites implícitos de vida superada
- No implementar características automáticas no seguras para tipos con campos no seguros
- No sugiera restringir el límite con rasgos inestables en estable y mencione que es inestable en Nightly
- no use un SyntheticProvider para literalmente todos los tipos
- arreglar las implementaciones predeterminadas de MutVisitor para visitar los tramos de Stmt y BinOp
- Sugerencia de corrección cuando la abreviatura 'self' tiene un tipo erróneo
- Modificador de enlace de rasgo fn asincrónico en 'async_trait_bounds'
- manejar '--json-output' correctamente
- ocultar errores cuyas sugerencias contendrían constantes o tipos de error
- implementar comprobaciones para llamadas de cola
- mejorar los documentos de 'TagEncoding::Niche', la verificación de cordura y las verificaciones de UB
- incluir visualizadores LLDB y GDB en la distribución MSVC
- introducir la función 'default_field_values'
- lint contra 'Symbol::intern' en un literal de cadena
- lint: cambiar la ayuda para punteros a tipos dyn en FFI
- hacer traducibles los errores de CoercePointee
- Asegúrese de registrar las descripciones de la tarea almacenada en caché en el nuevo solucionador en la primera ejecución
- mover la mayoría de las pruebas para '-l' y '#[link(..)]' en 'tests/ui/link-native-libs'
- no es necesario crear marcadores de posición para los argumentos de GAT en 'confirm_object_candidate'
- solo permite 'PassMode::D irect' para agregados en wasm cuando se usa el C ABI
- analizar patrones de protección
- reducir los falsos positivos en algunos casos comunes de if-let-rescope lint
- reimplementar la especialización de rasgos '~const'
- resolver estructuralmente en 'adjust_for_branches'
- resuelve estructuralmente en 'probe_adt'
- unificar el manejo de 'sysroot_target_{bin,lib}dir'
- use el 'hir_id' correcto para la matriz const arg infers
- Miri: Limpieza: Evite pasar el corte de bytes a 'anonsocket_read'
- miri: arreglar la lógica de la valla SC
- miri: corrige la emulación de memoria débil para evitar generar comportamientos que están prohibidos bajo C++ 20
- miri: implementar 'simd_relaxed_fma'
- extender Miri para pasar correctamente punteros mutables a través de FFI
- eliminar polimorfización
- introduce 'MixedBitSet'
- estabilizar 'const_collections_with_hasher' y 'build_hasher_default_const_new'
- estabilizar 'const_{tamaño,alinear}_of_val'
- estabilizar 'noop_waker'
- estabilizar 'std::io::ErrorKind::CrossesDevices'
- estabilizar 'std::io::ErrorKind::QuotaExceeded'
- añadir 'core::arch::breakpoint' y test
- implementación de 'fmt::FormattingOptions'
- agregar Extender implicaciones para tuplas de aridad 1 a 12
- cargo: 'docs(fingerprint)': las banderas adicionales de cargo-rustc no afectan a los metadatos
- cargo: 'feat(build-rs)': Añade la directiva 'error'
- cargo: 'fix(add)': No seleccionar versiones extraídas al normalizar nombres
- cargo: 'fix(build-rs)': Refiérase correctamente al elemento en assert
- cargo: 'fix(build-std)': determine las cajas raíz por la especificación objetivo 'std:bool'
- cargo: 'fix(fingerprint)': No tirar el caché en los cambios de RUSTFLAGS
- cargo: 'fix(fix)': Migrar dependencias del espacio de trabajo
- cargo: 'test(build-std)': hacer mock-std más cerca del mundo real
- cargo: fix(build-rs)!: eliminar ''cargo_cfg_debug_assertions''
- cargo: refactor: use 'Path::p ush' para construir remap-path-prefix
- cargo: semVer: añadir sección sobre captura RPIT
- rustdoc: eliminar el ecualizador para 'clean::Attributes'
- rustdoc: renombrar las pruebas 'issue-\d+.rs' para que tengan nombres significativos (parte 10)
- rustdoc: cambiar el nombre de 'set_back_info' a 'restore_module_data'
- rustdoc: siempre muestra la primera línea de los bloques impl incluso cuando están colapsados
- mejorar el código para la recuperación de nombres de archivo en rustdoc
- clippy: 'doc_lazy_continuation': Contar correctamente la sangría con barras invertidas
- clippy: extender la 'precedencia' para el enmascaramiento de bits y el desplazamiento
- clippy: nueva pelusa para los lanzamientos de puntero 'as *const _' y 'as *mut _'
- rust-analyzer: agregar una opción configurable para excluir caracteres de activación para asistentes de escritura
- Rust-analyzer: añadir sugerencias implícitas de inserción de inseguridad para bloques externos
- rust-analyzer: agregar controlador de escritura para la tubería de lista de parámetros
- rust-analyzer: atributos completos del ayudante de derivación
- Analizador de Rust: diagnóstico completo en el trabajo preliminar de reducción de ty y sirve para un primer diagnóstico 🎉
- Rust-analyzer: Extender las operaciones inseguras reportadas
- rust-analyzer: soporta rasgos 'AsyncFnX'
- rust-analyzer: arreglar el análisis de los argumentos de tipo entre paréntesis y RTN
- Rust-analyzer: Mejor recuperación del analizador para rutas
- rust-analyzer: forzar dos 'FnDef' a fn punteros incluso si son iguales, si son subtipos
- rust-analyzer: deshabilite el controlador de escritura '<' nuevamente
- rust-analyzer: no reportar advertencias de macros proc, nunca
- rust-analyzer: corrige un error cuando se buscaban nodos AST sintéticos en el mapa de ID de AST y causaba pánicos
- rust-analyzer: arreglar el analizador que se atasca por malas expresiones de ASM
- rust-analyzer: arreglado el análisis de dyn T en arg genérico en la edición 2015
- rust-analyzer: arreglar el análisis de referencias de nombres enteros/palabras clave en varios lugares
- Rust-analyzer: Arreglar el sombreado de la variante de registro 'enum' en patrones
- rust-analyzer: corregido otro error con las importaciones de globos
- rust-analyzer: mapear nuevos nodos de reemplazo a sus equivalentes mutables en 'SyntaxEditor'
- Rust-analyzer: las estructuras no exhaustivas pueden estar vacías
- rust-analyzer: pánico al mostrar parámetros genéricos con valores predeterminados
- rust-analyzer: analizar los límites de vida útil en el parámetro de vida en TypeBoundList
- Rust-analyzer: Resolver parámetros genéricos dentro de las capturas de uso
- Rust-analyzer: Deshabilita temporalmente el soporte de resolución de finalización para Helix y Neovim
- Rust-analyzer: Mejorar la heurística para la inserción de punto y coma al escribir
- Rust-analyzer: hacer que el controlador de escritura de corchetes funcione en más cosas
- rust-analyzer: migrar 'add_turbo_fish' a 'SyntaxEditor'
- rust-analyzer: migrar 'introduce_named_generic' Assist para usar 'SyntaxFactory'
- rust-analyzer: migrar 'sort_items' Assist para usar 'SyntaxFactory'
- Rust-analyzer: VSCod: solo muestra el elemento de la barra de estado en los archivos relevantes
Clasificación del rendimiento del compilador de Rust
Una semana bastante tranquila, con pocos récords personales y sin grandes cambios en el rendimiento.
Triaje realizado por @simulacrum. Rango de revisión: 490b2cc0.. 1b3fb316
0 Regresiones, 0 Mejoras, 7 Mixtas; 4 de ellos en rollups 25 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] Agregar la opción '--doctest-compilation-args' para agregar banderas de compilación a la compilación doctest
Carga
- [disposición: fusionar] fix(cargo-rustc): estabilizar las banderas finales de mayor precedencia
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] Desestructuración de tipo de gota
- [nuevo] #[must_use = falso]
- [nuevo] RFC: Tipos parciales (v3)
Próximos eventos
Eventos oxidados entre 2024-12-11 - 2025-01-08 🦀
Virtual
- 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
- 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
- 2024-01-02| Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 04/01/2025 | Virtual (Kampala, UG) | Círculo de Rust Kampala
Asia
- 14/12/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
Europa
- 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
- 18/12/2024 | Gante, BE | Programación de Sistemas Gante
América del Norte
- 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
- 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
Las implementaciones seguras para la memoria de PNG (png, zune-png, wuffs) ahora superan drásticamente a las que no son seguras para la memoria (libpng, spng, stb_image) al decodificar imágenes.
caja Rust png que encabeza nuestro benchmark muestra una mejora de 1,8x sobre 'libpng' en x86 y de 1,5x en ARM.
¡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