Esta semana en Rust #44
Hola y bienvenidos a otra edición de Esta Semana en Rust! Rust es un lenguaje de programación que permite a todos construir software confiable y eficiente. Este es un resumen semanal de su progreso y comunidad.
¿Quieres que mencionemos algo? Etiquétanos en @ThisWeekInRust en X (anteriormente Twitter), en @ThisWeekinRust en mastodon.social, o envíanos un pull request.
¿Quieres involucrarte? Nos encantan las contribuciones.
Esta Semana en Rust se desarrolla de manera abierta en GitHub y los archivos están disponibles en this-week-in-rust.org. Si encuentras algún error en esta edición, envía un PR.
¿Quieres recibir Esta Semana en Rust en tu correo? Suscríbete aquí.
Actualizaciones de la comunidad de Rust
Oficial
Fundación
Boletines
Actualizaciones de proyectos/herramientas
- cargo.nvim - Un plugin de Neovim para comandos de Cargo en Rust
- Actualizaciones en Programación Genérica por Contexto: Lanzamiento de la versión v0.3.0 y nuevos capítulos
- El runtime de aprendizaje automático RTen - Una retrospectiva del 2024
Observaciones/Reflexiones
- El problema de los auto-traits en gen
- Rust Async trata sobre concurrencia, no (solo) rendimiento
- El atractivo emocional de Rust
- [audio] Brave con Anton Lazarev
- [audio] Lychee con Matthias Endler
Tutoriales de Rust
- Creando un controlador de dispositivos embebidos en Rust
- Evaluación constante en Rust para validación de cadenas hexadecimales
- Ejecución concurrente y paralela de futuros en Rust
- [video] Introducción a Embassy: desarrollo embebido con Rust async
- [video] Comprendiendo Macros Procedurales
- [video] CppCon - Interoperabilidad C++/Rust: Uso práctico de puentes
Misceláneo
- Informe de empleos de Rust - Diciembre 2024
- Trazando grandes asignaciones de memoria en Rust con BPFtrace
- Sobre los LLMs y la optimización de código
- Nand2Tetris - Proyecto 7 (Traductor de Máquina Virtual, Parte 1)
Crate de la Semana
El crate de esta semana es vidyut, un kit de herramientas en sánscrito con funcionalidades sobre métrica, segmentación, inflexiones, etc.
Gracias a Arun Prasad por la auto-sugerencia.
¡Envía tus sugerencias y votos para la próxima semana aquí!
Convocatorias de Participación (CFPs)
- rama - revisar si se pueden/deben realizar mejoras en el soporte de la capa HTTP Open Telemetry de rama
- rama – agregar rama al FrameworkBenchmark de TechEmpower
- rama – agregar el benchmark del servidor rama a sharkbench
Si eres el propietario de un proyecto en Rust y estás buscando colaboradores, envía tus tareas aquí, a través de un PR a TWiR, o contactándonos en X (anteriormente Twitter) o Mastodon!
Convocatorias de Ponencias - Eventos
¿Eres un ponente nuevo o experimentado buscando un lugar para compartir algo interesante? Esta sección resalta eventos que están siendo planeados y que están aceptando propuestas para participar como orador.
- Rust Week (Rust NL) | Cierra el 2025-01-19 | Utrecht, NL | Evento los días 2025-05-13 y 2025-05-14
- Rust Summit | Fecha límite continua | Belgrado, RS | Evento el 2025-06-07
Si eres un organizador de eventos y deseas ampliar el alcance de tu evento, envía un enlace al sitio web a través de un PR a TWiR o contáctanos en X (anteriormente Twitter) o Mastodon!
Actualizaciones del Proyecto Rust
469 solicitudes de extracción (pull requests) fueron fusionadas la semana pasada.
- agregar nuevos objetivos
{x86_64,i686}-win7-windows-gnu
- arm: añadir característica de objetivo de punto flotante suave inestable
-Zrandomize-layout
más estricto.Foo<T> != Foo<U>
best_blame_constraint
: Mejorar la atribución de mejores restricciones cuando el gráfico de regiones tiene ciclos por invariancia o'static
mir_transform
: implementar#[rustc_force_inline]
run_make_support
: añadir#![warn(unreachable_pub)]
- tener en cuenta elementos sustituidos por identidad en el mangling de símbolos
- añadir
-Zmin-function-alignment
- agregar entrada
default_field_values
al libro inestable - añadir una lista de símbolos para crates de biblioteca estándar estables
- implementar
const Destruct
en el antiguo solucionador - reducir el alcance del error de ciclo solo con
-Zdump-mir
- reservar el registro x18 para el objetivo aarch64 wrs vxworks
- sugerir reemplazo de coma por punto y coma en expresiones repetidas incorrectas
- soporte para target específico en
optimized-compiler-builtins
- unificar los errores de
conditional-const
con los errores de no constantes - usar un entorno de tipado post-monomorfización al generar nombres para componentes provenientes de
impls
- usar
llvm.memset.p0i8.*
para inicializar arreglos de bytes iguales - usado el nombre de funciones de
pthread
que devuelven un resultado para FreeBSD y DragonFly - advertir sobre SIMD roto no solo en structs sino también en enums y unions si no se optó por ello
- implementar subida de traits
- optimización MIR: más casos de
transmute
en GVN - Miri: agregar mantenedor para FreeBSD; probar todo en sistemas Solarish
- Miri: añadido Android a los objetivos de prueba para
epoll
yeventfd
- Miri: ajustar cómo se compila
miri-script
en RA para arreglar proc-macros - Miri: añadido soporte para
epoll
yeventfd
en illumos - Miri: soportado
fioclex
paraioctl
en macOS - Miri: cambiado FreeBSD a usar
pthread_setname_np
- Miri: usar
deref_pointer_as
en lugar dederef_pointer
proc_macro
: usar el traitToTokens
en la macroquote
- añadir
#[inline]
acopy_from_slice
- implementar
String::into_chars
- módulo inicial de sistema de archivos para UEFI
- HashBrown: añadido argumento de plantilla Allocator para
rustc_iter
- considerar niveles de optimización diferentes de números
- Cargo: arreglar esquema JSON de 'metadata'
- Cargo: corregir esquema JSON de
[lints]
- Cargo: rendimiento,
cargo-package
: coincidir ciertos prefijos de ruta conpathspec
- Cargo: corregir emisión de advertencias al aprender información sobre objetivos de Rust
- Cargo: hacer explícito
"C"
enextern "C"
- Cargo: configurar entorno de cargo para
cargo rustc --print
- Cargo: simplificar
SourceID
Ord/Eq - Rustdoc JSON: incluir elementos en módulos marcados como eliminados en
Crate::paths
- Rustdoc: usar el marcador de estabilidad de importación en la visualización
- Rustdoc: usar rutas estables como rutas canónicas preferidas
- Rustfmt: eliminar el bloqueo nocturno de la bandera
--style-edition
- rust-analyzer: agregar vista de árbol de sintaxis nueva y mejorada
- rust-analyzer: agregar configuración para incluir rutas adicionales al VFS
- rust-analyzer: reimplementar el resaltado de cadenas de Rust con atributos de herramientas
- rust-analyzer: corregir inclusión de archivos de construcción en
PackageRoot
del proyecto JSON - rust-analyzer: no calcular
prettify_macro_expansion()
a menos que se invoque la asistencia "Expandir macro en línea" - rust-analyzer: no ofrecer completados dentro de cadenas en macros
- rust-analyzer: corregir chequeo de macros
env
/option_env
que ignoraba definiciones demacro_rules
- rust-analyzer: corregir edición de texto para pistas de modo de enlace
ref
- rust-analyzer: corregir un error con enlaces faltantes en MBE
- rust-analyzer: corregir búsqueda de tokens reales en la expansión de completado
- rust-analyzer: solucionar otro problema con reversión de ajustes
- rust-analyzer: corregir diagnósticos que no se limpiaban entre verificaciones incrementales
- rust-analyzer: hacer que la edición sea por token, no por archivo
- rust-analyzer: implementar
#[rust_analyzer::skip]
para cuerpos - rust-analyzer: implementar sugerencias en línea para límites implícitos de tamaño
- rust-analyzer: mejorar el renderizado del hover para rutas de módulos
Evaluación de Rendimiento del Compilador de Rust
Una semana tranquila con pocos cambios en el rendimiento del compilador. La mayor regresión fue rápidamente identificada y revertida.
Evaluación realizada por @rylev. Rango de revisiones: 0f1e965f..1ab85fbd
Resumen:
| (instructions:u) | Media | Rango | Cantidad |
|:----------------------------------:|:-------:|:----------------:|:--------:|
| Regresiones ❌
(primarias) | 0.4% | [0.1%, 1.8%] | 21 |
| Regresiones ❌
(secundarias)| 0.5% | [0.0%, 2.0%] | 35 |
| Mejoras ✅
(primarias) | -0.8% | [-2.7%, -0.3%] | 6 |
| Mejoras ✅
(secundarias) | -10.2% | [-27.8%, -0.1%] | 13 |
| Total ❌✅ (primarias) | 0.2% | [-2.7%, 1.8%] | 27 |
4 regresiones, 3 mejoras, 3 resultados mixtos; 3 de ellos en rollups. Se realizaron 44 comparaciones de artefactos en total.
RFCs Aprobados
Los cambios en Rust siguen el proceso de RFC (Request for Comments). Estos son los RFCs aprobados para implementación esta semana:
- No se aprobaron RFCs esta semana.
Periodo de Comentarios Finales
Cada semana, el equipo anuncia el 'Periodo de Comentarios Finales' para RFCs y PRs clave que están llegando a una decisión. Expresa tus opiniones ahora.
RFCs
Issues y PRs en Seguimiento
Rust
- Eliminar soporte para el atributo (inestable)
#[start]
- Desestabilizar completamente todos los atributos internos personalizados
- Elevar el lint
clippy::double_neg
comodouble_negations
- Optimizar implementación de
Seek::stream_len
para File - [rustdoc] Agregar configuración de fuente sans-serif
- Issue de seguimiento para
PathBuf::add_extension
yPath::with_added_extension
- Convertir la advertencia futura de compatibilidad
wasm_c_abi
en un error crítico - const-eval: detectar más punteros como definitivamente no nulos
- Considerar campos como habitables si son inestables
- Prohibir
repr()
en elementos inválidos
Cargo
- No hay Issues o PRs de Cargo en el Periodo de Comentarios Finales esta semana.
Equipo de Lenguaje
- No hay propuestas del Equipo de Lenguaje en el Periodo de Comentarios Finales esta semana.
Referencia del Lenguaje
Pautas de Código Inseguro
- No hay Issues o PRs en el Periodo de Comentarios Finales esta semana.
Nuevos y Actualizados RFCs
- Permitir métodos de traza en contextos constantes
- RFC: Permitir a los paquetes especificar un conjunto de objetivos compatibles
Próximos Eventos
Eventos relacionados con Rust entre el 15 de enero de 2025 y el 12 de febrero de 2025 🦀
Virtual
- 2025-01-15 | Virtual (London, UK) | London Rust Project Group
- 2025-01-15 | Virtual (Tel Aviv-Yafo, IL) | Code Mavens 🦀 - 🐍 - 🐪
- 2025-01-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2025-01-16 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
- 2025-01-16 | Virtual (San Diego, CA, US) | San Diego Rust
- 2025-01-16 | Virtual and In-Person (Redmond, WA, US) | Seattle Rust User Group
- 2025-01-17 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-01-21 | Virtual (London, UK) | Women in Rust
- 2025-01-21 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 2025-01-21 | Virtual (Washington, DC, US) | Rust DC
- 2025-01-22 | Virtual (Rotterdam, NL) | Bevy Game Development
- 2025-01-23 & 2025-01-24 | Virtual | Mainmatter Rust Workshop
- 2025-01-24 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-01-26 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 2025-01-27 | Virtual (London, UK) | London Rust Project Group
- 2025-01-28 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-01-30 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
- 2025-01-30 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2025-01-30 | Virtual (Tel Aviv-Yafo, IL) | Code Mavens 🦀 - 🐍 - 🐪
- 2025-01-31 | Virtual (Delhi, IN) | Hackathon Raptors Association
- 2025-01-31 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-02-01 | Virtual (Kampala, UG) | Rust Circle Kampala
- 2025-02-04 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2025-02-04 | Virtual (London, UK) | Women in Rust
- 2025-02-05 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2025-02-07 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-02-11 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-02-11 | Virtual (Tel Aviv-Yafo, IL) | Code Mavens 🦀 - 🐍 - 🐪
Europe
- 2025-01-16 | Amsterdam, NL | Rust Developers Amsterdam Group
- 2025-01-16 | Karlsruhe, DE | Rust Hack & Learn Karlsruhe
- 2025-01-18 | Stockholm, SE | Stockholm Rust
- 2025-01-21 | Edinburgh, GB | Rust and Friends
- 2025-01-21 | Ghent, BE | Systems Programming Ghent
- 2025-01-21 | Leipzig, SN, DE | Rust - Modern Systems Programming in Leipzig
- 2025-01-22 | London, GB | Rust London User Group
- 2025-01-22 | Oberursel, DE | Rust Rhein Main
- 2025-01-23 | Barcelona, ES | Barcelona Free Software
- 2025-01-23 | Paris, FR | Rust Paris
- 2025-01-24 | Edinburgh, GB | Rust and Friends
- 2025-01-27 | Prague, CZ | Rust Prague
- 2025-01-28 | Aarhus, DK | Rust Aarhus
- 2025-01-28 | Manchester, GB | Rust Manchester
- 2025-01-30 | Augsburg, DE | Rust Meetup Augsburg
- 2025-01-30 | Berlin, DE | Rust Berlin
- 2025-02-01 | Brussels, BE | FOSDEM 2025
- 2025-02-01 | Nürnberg, DE | Rust Nuremberg
- 2025-02-05 | Oxford, GB | Oxford Rust Meetup Group
- 2025-02-12 | Reading, GB | Reading Rust Workshop
North America
- 2025-01-16 | Nashville, TN, US | Music City Rust Developers
- 2025-01-16 | Redmond, WA, US | Seattle Rust User Group
- 2025-01-16 | Spokane, WA, US | Spokane Rust
- 2025-01-17 | México City, MX | Rust MX
- 2025-01-18 | Boston, MA, US | Boston Rust Meetup
- 2025-01-21 | New York, NY, US | Rust NYC
- 2025-01-21 | San Francisco, CA, US | San Francisco Rust Study Group
- 2025-01-22 | Austin, TX, US | Rust ATX
- 2025-01-23 | Mountain View, CA, US | Hacker Dojo
- 2025-01-28 | Boulder, CO, US | Boulder Rust Meetup
- 2025-02-06 | Saint Louis, MO, US | STL Rust
Oceania:
- 2025-02-04 | Auckland, NZ | Rust AKL
Si estás organizando un evento relacionado con Rust, agrégalo al [calendario] para que sea mencionado aquí. Recuerda también incluir un enlace al evento. Puedes escribir al Equipo de la Comunidad de Rust para solicitar acceso.
Empleos
Consulta el último hilo de "Who's Hiring" en r/rust
Frase de la Semana
Esta es una maravillosa falta de solidez y estoy increíblemente emocionado por ella :3
Gracias a Christoph Grenz por la sugerencia.
¡Envía tus frases y vota por la próxima semana!
Esta Semana en Rust fue editado por: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, U007D, joelmarcey, mariannegoldin, bennyvasquez, bdillo
El hospedaje de la lista de correos es patrocinado por The Rust Foundation