Esta semana en Rust #40
¡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
- Actualización de los objetivos del proyecto en noviembre
- Este ciclo de desarrollo en carga: 1.84
- Actualización del Director del Proyecto de diciembre de 2024
Boletines
Actualizaciones de proyectos/herramientas
- Hoja de ruta hiper 2025
- Sistemas falibles Bevy, componentes sin ataduras e inmutables
- Sequoia PGP: Un retoño madura: Conoce sq 1.0
- Versión 0.30.0 - egui_kittest y modales
- fish-shell 4.0b1, ahora en Rust
- Presentando Limbo: Una reescritura completa de SQLite en Rust
- Análisis de datos de streaming, versión 0.14.0 de Fluvio
- Anunciando la pantalla hexadecimal: una alternativa moderna 'xxd'
- Diesel: Funciones de ventana
- Repetición 0.21.0 - Vista de gráfico, cuadrícula 3D y mejoras en la interfaz de usuario / UX
- Presentamos Fjädra — un port de Rust de 'd3-force' para diseños de gráficos
Observaciones/Pensamientos
- ¿Qué es la seguridad de la memoria temporal y espacial?
- Reducción del tamaño binario de WASM
- Recuperación de fallos en 256 bytes
- Depuración de características de caja de Rust
- [audio] Building Rust: Una entrevista con Nell Shamrell-Harrington
Tutoriales de Rust
- Lee el código: Usar Drop Safely en Rust
- Pensamientos sobre el hashing de Rust
- Esquema de la Especificación Parte I: Colección de Ciclos Simultáneos
- Resolviendo el advenimiento del código en tiempo de compilación con macros de Rust
- [video] Lectura del código de Rust: La caja de los miles
- [video] Construyendo un administrador de paquetes Lua en Rust (árabe)
Miscelánea
- ¿Qué es la programación shift-left ⬅️?
- Actualización del estado social de Rust 2024.12
- Tantos tokens, tan poco tiempo: Presentamos un tokenizador de pares de bytes más rápido y flexible
Crate de la semana
El crate de esta semana es cmd_lib, una biblioteca de macros de línea de comandos y utilidades para escribir fácilmente tareas similares a shell-script en Rust.
¡Gracias a Remo Senekowitsch 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
Rust
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 a TWiR!
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.
No se han presentado convocatorias ni presentaciones esta semana.
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!
Actualizaciones del Proyecto Rust
Se [fusionaron 437 solicitudes de extracción en la última semana][fusionadas]
- (Re)Implementar 'impl_trait_in_bindings'
- 'rustc_borrowck': Deja de sugerir la sintaxis inválida '&mut raw const'
- Limpiezas de 'rustc_mir_dataflow', incluyendo algunos cambios de nombre
- 'rustc_target': correcciones de cadena de destino ppc64 para LLVM 20
- agregar soporte AST para carpetas inseguras
- añadir soporte experimental sin pulir para AFIDT (fn asíncrono en el rasgo dyn)
- permitir 'symbol_intern_string_literal' lint en los módulos de prueba
- Tipos propios arbitrarios v2: cambios en el compilador principal
- cambie 'GetManyMutError' para que coincida con la decisión de T-libs-api
- comprobar si hay longitudes de matriz que no sean realmente 'usize'
- codegen '#[naked]' funciones usando ASM global
- Manejar correctamente los comentarios en los atributos en el código fuente de DocTests
- no ICE cuando se encuentre nunca en el patrón de rango
- no hagas un def id para 'impl_trait_in_bindings'
- no muestra los argumentos completos del enlazador a menos que se pase '--verbose'
- no use los límites de 'AsyncFnOnce::CallOnceFuture' para la deducción de firmas
- codificar cierres de corrutinas en SMIR
- Ejercicio de la interacción del rasgo const con los campos predeterminados
- arreglar ICE en el error de tipo en promovido
- arreglar ICE cuando se necesitan varias sustituciones de superrasgos pero solo se proporciona una
- arreglar 'trimmed_def_paths' ICE en la función ptr comparison lint
- arreglar nuestra definición de tipo 'llvm::Bool' para que esté firmada, para que coincida con 'LLVMBool'
- interpretar: reducir el uso de 'TypingEnv::fully_monomorphized'
- jsondocck: analizar, no validar comandos
- Realice un seguimiento de los errores de análisis en los 'mods' y no emita errores de resolución para las rutas que los involucran
- lint al combinar '#[no_mangle]' y '#[export_name]'
- hace que 'Copiar' sea inseguro de implementar para ADTs con campos 'inseguros'
- asegúrese de usar ty normalizado para const no evaluado en el valor predeterminado de 'struct'
- modifica la instrucción del índice de 'gep [0 x %Type]' a 'gep %Type'
- considere correctamente los APIT para la corrección de la adscripción de reserva de nunca tipos
- eliminar la dependencia de 'Lexer' en 'Parser'
- Eliminar consultas de la interfaz del controlador
- heurística rudimentaria para insertar paréntesis cuando sea necesario para RPIT sobrecaptura lint
- ¡Algunos ajustes de diagnóstico de ASM! y una corrección de PaperCut
- Limpiezas diagnósticas de diferencias entre el método de rasgo y el método IMPL
- sugerir el uso de deref en patrones
- suprimir el campo expr con un mensaje de error genérico si es un método
- intente evaluar las constantes en la manipulación heredada
- Ajustar el renderizado multispan para reducir la longitud de salida
- use SourceMap para cargar los archivos del visualizador del depurador
- use un intervalo más preciso en 'placeholder_type_error_diag'
- Usar excepciones recién agregadas a la advertencia de rama no predeterminada
- validar las rutas '--skip' y '--exclude'
- validarse a sí mismo en predicados de host correctamente
- comprobación de límites con PtrMetadata en lugar de Len en MIR
- miri: Optimización de TB: Omitir subárboles en función de los permisos del nodo raíz del subárbol
- miri: 'localtime_r': deduplicar la asignación de nombres de zona horaria
- miri: usar clap en miri-script
- estabilizar 'const_nonnull_new'
- estabilizar cierres asíncronos (RFC #3668)
- estabilizar el preludio de Rust 2024
- Implica el rasgo 'UniqueRc'
- 'std::net': Solaris también soporta 'SOCK_CLOEXEC' desde 11.4
- agregar métodos de descriptor de acceso de valor a 'Mutex' y 'RwLock'
- desduplicar y mejorar la definición de 'core::ffi::c_char'
- ejecutar destructores TLS para subprocesos wasm32-wasip1
- wasi/fs: mejora la condición de parada para '<ReadDir' como 'Iterator>::next'
- codegen_gcc: estabilizar la lógica de análisis de configuración 'lang_tests_common'
- CodeGen_gcc: use conversiones en lugar de transmisión de bits entre punteros y enteros para solucionar problemas al usar el enlazador LLD
- cargo: build-script: Pass 'CARGO_CFG_FEATURE'
- cargo: SourceId: use hash estable de rustc-stable-hash
- cargo: base: Bases de soporte en parches en manifiestos virtuales
- cargo: build-rs: Informar implícitamente de rerun-if-env-changed para la entrada
- cargo: resolver: No reportar todas las versiones como rechazadas
- cargo: resolver: En errores, mostrar versiones rechazadas sobre versiones alternativas
- cargo: resolver: Reportar entradas de índice no válidas
- cargo: resolver: Reportar versiones no coincidentes, en lugar de decir que no hay paquete
- cargo: script: No anular el perfil de lanzamiento
- cargo: un hash más rápido para ActivationsKey
- cargo: implemente '--depth workspace' para el comando 'árbol de carga'
- cargo: 'emit_serialized_unit_graph' usa el shell configurado
- rustdoc-search: arreglar la ruta no coincidente cuando el padre se reexporta dos veces
- rustdoc-search: manejar 'impl Into<X>' mejor
- rustdoc: arreglarse a sí mismo cmp
- clippy: permitir que 'needless_option_take' informe sobre más casos
- clippy: mejor mensaje de ayuda para 'comparison_chain' lint
- clippy: corregir la sugerencia de pelusa 'single_match'
- clippy: sugerencia correcta para 'unnecessary_sort_by' en 'no_std'
- clippy: manejar correctamente los índices de cadena en 'literal_string_with_formatting_arg'
- clippy: detectar sombreado en el campo de patrón
- clippy: no sugiero usar 'Error' en 'no_std' antes de Rust 1.81
- clippy: arreglar la sugerencia de 'must_use_unit' cuando hay varios atributos
- clippy: arreglar la pelusa 'single_match' que se emite cuando no debería
- clippy: impl inicial de 'repr_packed_without_abi'
- rust-analyzer: añadir una ayuda para extraer una expresión en una constante
- Rust-analyzer: agregue una corrección de diagnóstico para eliminar el envoltorio innecesario en la discrepancia de tipos
- rust-analyzer: conserva el orden de los parámetros en 'extract_functions'
- [rust-analyzer: reportar identificaciones no resueltas para capturas implícitas en 'format_args! ()»(https://github.com/rust-lang/rust-analyzer/pull/18696)
- Rust-analyzer: arreglar el enlace de publicación del flujo de trabajo en el manual
- rust-analyzer: las macros proc copiadas no se limpian al salir
- rust-analyzer: soluciona un pánico con una solución de diagnóstico cuando se usa una palabra clave como campo
- Rust-analyzer: arreglar las finalizaciones de importación automática calificadas de ruta que no funcionan con las reexportaciones
- rust-analyzer: arreglar los nombres de proc-macro dylib en Windows
- rust-analyzer: arreglar la construcción de sourceroot para manifiestos virtuales
- rust-analyzer: generar implementación con elementos incluso si la edición de texto de fragmentos está deshabilitada
- rust-analyzer: Sugerencia de nombre mejorado para 'destructure_tuple_binding'
- rust-analyzer: pánico al mostrar parámetros genéricos con valores predeterminados, de nuevo
- Rust-analyzer: Swallow rustfmt parsing panics
- rust-analyzer: use el contenido literal de la cadena como nombre al extraer en la variable
- rust-analyzer: elementos de finalización de hash para que coincidan correctamente durante /resolve
- Rust-analyzer: Maneja adecuadamente diferentes valores predeterminados para la gravedad de las pelusas
- Rust-analyzer: muestra errores de expansión en la función 'expand_macro'
Clasificación del rendimiento del compilador de Rust
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
Seguimiento de problemas y relaciones públicas
Rust
Carga
Equipo lingüístico
Referencia lingüística
Directrices de códigos inseguros
RFC nuevas y actualizadas
Próximos eventos
Eventos oxidados entre 2024-12-18 - 2025-01-15 🦀
Virtual
- 19/12/2024 | Virtual | Scandio GmBH
- 19/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 19/12/2024 | Virtual (Buenos Aires, AR) | Rust en Español
- 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
- 22/12/2024 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 24/12/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 26/12/2024 | Virtual (Charlottesville, VA, EE. UU.) | Reunión de Rust en Charlottesville
- 2025-01-02| Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 04/01/2025 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 06/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 07/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 08/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 09/01/2025 | Virtual (Charlottesville, VA, EE. UU.) | Reunión de Rust en Charlottesville
- 14/01/2025 | Virtual (Dallas, TX, EE. UU.) | Reunión de usuarios de Dallas Rust
- 14/01/2025 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código 🦀 - 🐍 - 🐪
- 15/01/2025 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
Asia
- 2025-01-12 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
Europa
- 18/12/2024 | Gante, BE | Programación de Sistemas Gante
- 08/01/2025 | Reading, Reino Unido | Taller de lectura de Rust
- 09/01/2025 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 09/01/2025 | Oslo, NO | Rust Oslo
América del Norte
- 22/12/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 26/12/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 2025-01-10 | Boston, MA, EE. UU. | Encuentro de Boston 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 Who's Hiring en r/rust
Frase de la semana
¡¡Ella dijo que sí!! (¡Y yo también!)
– Amos on Mastodon demostrando que los rustáceos sí tienen una vida fuera de Rust. ¡Felicidades, Amos!
¡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