Esta semana en Rust #47
¡Hola y bienvenido a otro número de esta semana en Rust! Rust en lenguaje de programación que permite todo el mundo crear software fiable y eficiente. Este es un resumen semanal de su progreso y comunidad. ¿Quieres que mencionemos algo? Etiquétanos en @ThisWeekInRust en X (antes Twitter) o @ThisWeekinRust en mastodon.social, o envíanos un solicitud extracción. ¿Quieres participar? Nos encantan la contribuciones.
Esta semana en 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 en esta semana, por favor envía un PR.
¿Quieres tener TWIR en tu bandeja e entrada? Suscríbet aquí.
Actualizaciones de la comunidad en Rust 🥰
Oficial
Fundación
Boletines
Actualizaciones de proyectos/herramientas
- Motor de juego Fyrox 0.36
- Refinado: tipos de refinamiento simples para Rust
- Opiniones de los mantenedores sobre Rust-for-Linux
- Reescribiendo paquetes esenciales de Linux en Rust
- Nutype 0.6.0 - newtype con garantías y soporte para funciones ahora
- Gluesql v0.6.0 – Aplicación para tomar notas tipo TUI con importante actualización de diseño
- Lanzamiento de Gladius 0.2 - editor de código GPLv3, línea de comandos, multicursor con soporte LSP
Observaciones/Pensamientos
- Un estudio de cada variante de iterador
- Actualización de una base de código grande a Rust 2024
- Cómo aprendí a dejar de preocuparme y amar el LLM
- Las Tres Reglas Básicas de Seguridad e Higiene
- [video] Bevy Meetup#1 - Alice - ¿Qué diablos es la reflexión?
- [video] Érase una vez el sans-io
Tutoriales de Rust
- Primeros pasos en el desarrollo de juegos con Rust y Bevy
- Aprovisionamiento de certificados TLS en Rust con ACME
- Consejo del día #4: Escribir notaciones en los patrones de coincidencia de Rust
- De horas a 360 ms: sobre-ingeniería en una solución de rompecabezas
- Escribir un controlador simple en Rust
- Resolviendo el problema ABA en Rust con punteros etiquetados
- Mezclar Rust con Java (¡o Kotlin!)
- Cómo escribir código DRY en Rust
FOSDEM
- Rust para Linux
- ¿Reescribiendo el futuro de los paquetes esenciales de Linux en Rust?
- Escribiendo un controlador de Kubernetes... Pero en Rust
- Uso de Rust integrado para construir un dispositivo no atendido que funciona con baterías
- Augures: un conjunto de herramientas de series temporales para Rust
- Construcción de un vatímetro y un backend de cohetes
- Enorme análisis de gráficos en tu propio servidor con WebGraph en Rust
- Llevando la estética de los terminales a la Web con Rust (y viceversa)
- Abusar de los préstamos para divertirse, obtener ganancias y un recolector de basura de punto seguro
- Lecciones de la reescritura de software de sistemas en Rust
- Oxidando el programador del kernel de Linux (en el espacio de usuario)
- Aventuras en la oxidación de la gestión de paquetes de Arch Linux
- Modelando la herencia en SeaORM
Miscelánea
Crate
de la semana
La crate
de esta semana es esp32-mender-client, un cliente para ESP32 para ejecutar actualizaciones de firmware y comandos remotos.
¡Gracias a Kelvin por sugerir su propia crate!
Por favor, envíen sus sugerencias y votos para la próxima semana!
Llamada a pruebas
Un paso importante en la implementación de una RFC es que las personas experimenten con la implementación y brinden retroalimentación, especialmente antes de su estabilización. Las siguientes RFCs se beneficiarían de pruebas por parte de los usuarios antes de continuar avanzando:
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 una nueva 'call-for-testing' 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 ser evaluados.
Convocatorio a la participación
CFP - Proyectos
¿Siempre quisiste contribuir a proyecto de código abierto pero no sabías por dónde empezar? ¡Cada semana destacamos algunas tarea en la comunida de Rust para que elijas y comiences!
Alguna de estas tareas también pueden tener mentores disponibles, visite la página de tareas para obtener más información.
Esta semana o se han presentado convocatorias para participar.
Si eres propietario de un proyect de Rust y estás buscando colaboradores, por favor envía tareas aquí a través de un PR to TWiR o poniéndote en contacto en X (antes Twitter) o Mastodon!
CFP - Eventos
¿Eres un orador nuevo experimentado que busca un lugar para compartir algo genial? Esta sección destaca los eventos que se están planificando y que está aceptando presentaciones par unirse a su evento como orador.
No se han presentado convocatoria ni presentaciones esta semana.
Si eres organizador de un evento y esperas ampliar su alcance, envía un enlace a la página web a través de un PR a TWiR o contactándonos en X (antes Twitter) o Mastodon.!
Actualizaciones del Proyecto Rust
462 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- agregar destino amdgpu
#[contratos::requiere(...)]
+#[contratos::asegura(...)]
rustc_middle
: paralelizar TyCtxt: eliminar "impl unsafe DynSend/DynSync"- añadir nota sobre el rasgo
FnPtr
que se expone como enlace público - permitir usar const en nombres de tipos de patrones
- Calcular siempre el diseño de corrutinas para emitir errores de diseño recursivo entusiastamente
- evitar llamar a la consulta
layout_of
enlit_to_const
- evitar usar
make_direct_deprecated()
en extern "ptx-kernel" - comprobar el tamaño del tipo de retorno en WF
- compilador: puerta
extern "{abi}"
enast_lowering
- Un par de cambios para ejecutar rustc en Miri
- Cobertura: aplazar parte de la contra-creación hasta CodeGen
- debuginfo para la función ZST debe tener una lineación de 8 bits, no de 1 bit
- detectar préstamos (no raw) de punteros ZST nulos en CheckNull
- no permitir
repr()
en elementos no válidos - visualización de números enteros sin punteros sin formato y sin
overflowing_literals
- no reiniciar el tipo de conversión si actualizar también el operando en
simplify_cast
en GVN - emitir un error si se solicita
-Zdwarf-version=1
- asegurarse de que no intentamos monomorfizar las llamadas a upcasting o vtable de tipo y posibles
- arreglar
rustc_hidden_type_of_opaques
para RPITITs con cuerpo predeterminado - arreglar la pelusa
unreachable_pub
para el objetivo hermitaño - arreglar accidentalmente que ya no emitía lints de literales desbordados en patrones
- Sugerencia de corrección para
dependency_on_unit_never_type_fallback
que involucra closures + expansiones de format args - arreglar las comprobaciones de llamada fría wrt
#[track_caller]
- Corregir error de desenvoltura en el literal desbordado
- fuchsia: permitir que Rust use números de llamada al sistema de archivos libc
- generar el bloque de terminación correcto bajo Wasm EH
- introducir
CoercePointeeValidated
para comprobaciones de coerción en la etapa de typeck - etiquetar parámetros coincidentes en el sitio de definición para funciones foráneas
- hacer
AsyncFnOnce
,AsyncFnMut
,AsyncFn
no-#[fundamental]
- hacer de
cenum_impl_drop_cast
un error grave - asegurarse de usar el rasgo
Receptor
al extraer candidatos de método objeto - solo resaltar los parámetros coincidentes en el sitio de definición
- el paso de barrera alrededor del nuevo solucionador
- patrón Migración 2024: intentar sugerir la eliminación de modificadores de enlace redundantes
- elegir la versión máxima de DWARF cuando se usan módulos LTO con diferentes versiones
- Escríbeme para cambios relacionados con atributos
- rechazar literales negativos para tipos sin signo/char en rangos de patrones y literales
- Se eliminó la dependencia del eje de desplazamiento de campo, enfoque alternativo
- Reportar desajustes genéricos al llamar a las funciones de rasgo con cuerpo
- resolver la ruta
llvm-config
correctamente en compilaciones cruzadas - mostrar el formato de sugerencia de diferencias en el reemplazo detallado
- algunas limpiezas de
rustc_middle
- algunos ajustes de biblioteca relacionados con la edición miscelánea
- transmutabilidad: arreglar IC al pasar ADT incorrecto para ASUMIR
- UEFI: Proceso: Agregar soporte para variables de entorno/argumentos
- Actualizar ELSA a la versión más reciente
- usar +secure-plt para powerpc-unknown-linux-gnu{,spe}
- usar
widening_mul
en lugar de una función separada - usar una
Opción
paraFindNextFileHandle
enReadDir
en lugar del valor centinelaINVALID_FILE_HANDLE
- usar una cadena Ty corta para errores de binop y unop
- visitar toda la información de depuración en MIR Visitor
- Bloque de asignación de particiones
- miri: permitir que el código llame a
geteuid()
- Miri: Lanzar error UB al invocar una corrección de compatibilidad que no sea vararg con la importación de vararg
- miri: usar el bloqueo fcntl en Solaris en lugar de flock que falta allí
- implementar
eat_until
aprovechando memchr en lexer - estabilizar
Cursor::{get_mut, set_position}
en escenariosconst
- estabilizar
característica(trait_upcasting)
- Estabilizar la función
map_many_mut
- estabilizar
vec_pop_if
- añadir
unchecked_disjoint_bitor
por ACP373 - añadir API de acceso directo a
UnsafeCell
- implementar la función inestable
new_range
- implementar constructores str inherentes
- añadir los métodos
cast_signed
ycast_unsigned
para los tiposNonZero
- marcar
std::fmt::from_fn
como#[must_use]
- std: mover código de red a
sys
std::fs
: simplificar aún más el manejo de dirent64- optimizar la implementación de
Rc<str>::default()
- cambiar el nombre de los métodos
slice::take...
asplit_off...
- Windows: Eliminar archivos de solo lectura
- cargo: no usar en Solaris
libc::LOCK_*
que se eliminaron de libc en la versión... - cargo: feat: añadir soporte
cargo pkgid
para cargo-script - Cargo: feat: emitir error si el paquete no se encuentra entre el espacio de trabajo
- cargo: arreglar enlace de registro cambiado
- Cargo: Arreglar la condición de carrera en
panic_abort_tests
- Cargo: corrección: alinear la primera línea de la lista desordenada con la siguiente
- cargo: corrección: no usar "quiso decir" en los errores
- Cargo: Hacer que el seguimiento de caché sea resistente a archivos inesperados
- Cargo: Simplificar retroceso
- Cargo: Limpieza de pequeños resolutores
- cargo: sugerir nombres de características similares en CLI
- rustdoc: usar ThinVec para piezas de generics
- Habilitar la función "Saltar a DEF" en Rustc Docs
- rustfmt: reescritura de la función
check_diff
- clippy: añade pelusa
single_option_map
- clippy:
path_buf_push_overwrite
: marcar sugerencia comoMaybeIncorrect
- clippy:
useless_asref
: no hacer pelusa si está en closure para cambiar la profundidad de la referencia - clippy: agregar verificación de MSRV para
lines_filter_map_ok
- clippy: agregar verificación de MSRV para
manual_flatten
- clippy: permitir
assign_op_pattern
en la prueba destring_add
- clippy: autofix para
range_zip_with_len
- clippy: cambiar la aplicabilidad de
if_then_some_else_none
aMachineApplicable
- clippy: corregir "Affected lints" para
allow-one-hash-in-raw-strings
- clippy: versión correcta de
doc_overindented_list_items
- clippy: desaprueba la pelusa redundante
option_map_or_err_ok
y sacamanual_ok_or
de pedante - clippy: no activar
[size_of_in_element_count]
parau8
- clippy: no emitir sugerencia entre macro en
manual_async_fn
- clippy: usar bloques etiquetados como bloques de nivel superior
- clippy: arreglar ICE en
unnecessary_mut_passed
- clippy: arregla
let_and_return
con variables temporales, y distingue entre las ediciones de Rust - clippy: arreglar la sugerencia de
obfuscated_if_else
en el lado izquierdo de expr binario - clippy: arreglar documentos para
#[clippy::format_args]
- clippy: corrección:
manual_unwrap_or_default
sugiere falsamente cuando el tipo de condición es incierto - clippy: manejar casos en
is_normalizable
- clippy: hacer línea vacía-después de una pelusa clippy temprana
- clippy: hacer que
manual_map
ignore los tipos que contienendyn
- clippy: mover
mutex_integer
a restricción y mejorarmutex_{integer, atomic}
docs - clippy: omitir
use_self
dentro de las expansiones de macro en bloqueimpl Self
- clippy: mejorar
disallowed_*
- clippy: usar el cuerpo MIR para identificar más llamadas "equivalentes predeterminadas" para
derivable_impls
- clippy: usar paréntesis cuando sea necesario en
nonminimal_bool
lint - rust-analyzer: corregir el error off-by-one en RangeFormatting
- rust-analyzer: no emitir scip vacío para los incorporados
- rust-analyzer: arreglar la resolución ID de
use
dentro del cuerpo - Rust-analyzer: si el elemento existe en el módulo, resolver como módulo en lugar de tipo
- Rust-analyzer: Resolver los tipos de proyección antes de verificar los lanzamientos
- Rust-analyzer: Rango de persistencia ascendente para
convert_tuple_struct_to_named_struct
- rust-analyzer: line-index: no intentar usar (no disponible) neo en big-endian arch64
- rust-analyzer: opción para desactivar las sugerencias de tipo en cascada para los parámetros de cierre
- Rust-analyzer: Organizar capítulos en la barra lateral de MDBoer
- Analizador de Rust: evitar que los pánicos derriben las roscas de los trabajadores
- Rust-Analyzer: Dividir la caché en distintas fases
- rust-analyzer: usar la mutabilidad interior para
ProcMacro::expanders
cargados
Clasificación del rendimiento del compilador de Rust
Una semana relativamente neutra, con pocos cambios reales, pero la mayoría pequeños en
magnitud. El cambio más significativo es el movimiento de rustdoc
de la unificación de JS/CSS
en tiempo de compilación, lo que redujo los tiempos de generación de documentos en la mayoría de los puntos
de referencia de manera bastante significativa.
Triaje realizado por @simulacrum. Rango de revisión: 01e4f19c.. C03C38D5
3 regresiones, 5 mejoras, 1 mixta; 2 de ellos en rollups 32 comparaciones artefactos realizadas en total
RFC aprobados
Los cambios en Rust siguen el proceso de Rust RFC (solicitud comentarios). Estos son las RFC que se probaron para su implementación esta semana:
- No se probaron 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
- Estabilizar función
num_midpoint_signed
- No duplicar la lista de tipos asociados proporcionada por
dyn
principal - Regresión: un valor de tipo
HashMap<Pulse, u64>
no se puede construir a partir de - Problema de seguimiento para
inherent_str_constructors
- Problema de seguimiento para
os_str_display
- No permitir atributos en los patrones de reposición de estructura
- feat(core): impl
Step
forNonZero<u*>
- Aviso de incompatibilidad futura
unsupported_fn_ptr_calling_conventions
: Advertir también en dependencias - Informe de Mir de las filtraciones de
Box
/Vec
/String
- Problema de seguimiento para
integer_sign_cast
Cargo
- No hay problema de seguimiento de Cargo o PR que ingresó 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 idiomática que ingresó al Período Final de Comentarios esta semana.
Directrices de código inseguro
- No hubo problema de seguimiento de pautas de código inseguro o PR que ingresó al período de comentarios finales esta semana.
RFC nuevas y actualizadas
Próximos eventos
Evento Rust entre 2025-02-12 - 2025-03-12 🦀
Virtual
- 2025-02-12 | Virtual (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 13/02/2025 | Virtual (Berlín, DE) | Rust Berlín
- 14/02/2025 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Club de Codificadores Elegante y Curioso Cooperativo
- 19/02/2025 | Virtual (Vancouver, Columbia Británica, CA) | Rust en Vancouver
- 2025-02-20 | Híbrido (Redmond, WA, EE. UU.) | Grupo de Usuarios de Seattle Rust
- 21/02/2025 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Club de Codificadores Elegante y Curioso Cooperativo
- 25/02/2025 | Virtual (Dallas, TX, EE. UU.) | Reunión de Usuarios de Dallas Rust
- 25/02/2025 | Virtual (Londres, Reino Unido) | Mujeres en Rust
- 25/02/2025 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 27/02/2025 | Virtual (EE. UU.) | Laboratorios Ardan
- 27/02/2025 | Virtual (Berlín, DE) | Rust Berlín
- 27/02/2025 | Virtual (Charlottesville, VA, EE. UU.) | Reunión de Rust en Charlottesville
- 01/03/2025 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 05/03/2025 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 06/03/2025 | Virtual (Nürnberg, DE) | Rust, Núremberg, DE
- 06/03/2025 | Virtual (Róterdam, Países Bajos) | Desarrollo de juegos con Bevy
- 11/03/2025 | Virtual (Dallas, TX, EE. UU.) | Reunión de Usuarios de Dallas Rust
- 11/03/2025 | Virtual (Londres, Reino Unido) | Mujeres en Rust
Asia
- 24/02/2025 | Tel Aviv-Yafo, IL | Rust 🦀 TLV
- 01/03/2025 | Bangalore/Bangalore, IN | Rust en Bangalore
Europa
- 2025-02-12 | Reading, Reino Unido | Taller de lectura de Rust
- 14/02/2025 | Edimburgo, Reino Unido | Rust y sus amigos
- 18/02/2025 | Leipzig, SN, DE | Rust - Programación de sistemas modernos en Leipzig
- 18/02/2025 | Londres, Reino Unido | Grupo de Usuarios de Rust London
- 2025-02-19 - 2025-02-20 | Londres, Reino Unido | Nación Rust Reino Unido
- 2025-02-20 | Berna, CH | Rust Bern
- 21/02/2025 | Londres, Reino Unido | Rust Global: Londres 2025
- 2025-02-22 | Estocolmo, SE | Estocolmo Rust
- 25/02/2025 | Madrid, ES | Rust loco
- 26/02/2025 | Darmstadt, DE | Rust Rhein Main
- 27/02/2025 | Oslo, NO | Rust Oslo
- 27/02/2025 | París, FR | Rust Paris
- 01/03/2025 | Nürnberg, DE | Rust en Núremberg
- 05/03/2025 | Barcelona, ES | BcnRust
- 12/03/2025 | Reading, Reino Unido | Taller de lectura de Rust
América del Norte
- 13/02/2025 | Portland, Oregón, Estados Unidos | PDXRust
- 14/02/2025 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 18/02/2025 | San Francisco, CA, EE. UU. | Grupo de Estudio de Rust en San Francisco
- 2025-02-20 | Chicago, Illinois, Estados Unidos | Encuentro de Rust en Chicago
- 2025-02-20 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 2025-02-20 | Redmond, WA, EE. UU. | Grupo de Usuarios de Seattle Rust
- 21/02/2025 | Ciudad de México, MX | Rust MX
- 2025-02-22 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 26/02/2025 | Austin, TX, Estados Unidos | Rust ATX
- 27/02/2025 | Atlanta, Georgia, Estados Unidos | Rust Atlanta
- 02/03/2025 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 06/03/2025 | Saint Louis, MO, EE. UU. | STL Rust
- 2025-03-10 | Boston, MA, EE. UU. | Encuentro de Boston Rust
Oceanía
- 24/02/2025 | Collingwood, VI, AU | Rust Melbourne
- 25/02/2025 | Barton, AC, AU | Grupo de Usuarios de Canberra Rust
- 04/03/2025 | Perth, WA, AU | Grupo de encuentro de Rust Perth
Si estás organizando un evento de Rust, agrégalo al calendario para que se mencione aquí. Por favor, recuerda agregar un enlace al evento también. Envía un correo electrónico para solicitar acceso.
Empleos
Por favor, consulte el último hilo en Quién está contratando en r/rust
Fras e la semana
El hecho de que la cosas sean útiles no significa que sea mágicamente sólidas.
¡Gracias a scottmcm por la sugerencia!
¡Por favor, envía tus citas y vote para la próxima semana!
This Week in Rust es editado por: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, U007D, joelmarcey, mariannegoldin, bennyvasquez, bdillo
El alojamiento de la lista correo electrónico está patrocinado por The Rust Foundation