Esta semana en Rust #32
¡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
Actualizaciones de proyectos/herramientas
- Ratatui 0.29.0
- Vida de una extensión Zed: Rust, Ingenio, Wasm
- La nueva plataforma de Shuttle: redefiniendo el desarrollo de backend
- Hifitime versión 4.0.0: Un salto adelante en la gestión del tiempo
- Fjall 2.2 - ahora soporta el aislamiento de instantáneas serializables (transacciones multi-escritor)
- pg-extras-rs - Información sobre el rendimiento de la base de datos PostgreSQL
Observaciones/Pensamientos
- Los objetivos de diseño de Rust deberían ser sobre el código
- Desanclar
- El código de bloqueo es una abstracción con fugas
- Colaborador del proyecto Life as Rust
- Rustls supera a OpenSSL y BoringSSL
- Usando los atlas de texturas de libgdx en Bevy
- [audio] Rust en producción - Zed con Conrad Irwin
- [audio] Asignadores asíncronos
- [audio] PubNub con Stephen Blum
Tutoriales de Rust
- Desmitificando la alineación y el diseño de la memoria en Rust
- Uso de Rust en servidores que no son Rust para mejorar el rendimiento
- Rust asíncrono en tres partes
- ¿Cuándo debo usar String vs &str?
- Uso de Web Workers en Rust Webapps
Miscelánea
Crate de la semana
El crate de esta semana es trait-gen, una macro de atributos para generar las implementaciones de rasgos para varios tipos sin necesidad de macros declarativas personalizadas, repetición de código o implementaciones generales.
¡Gracias a Luke Peterson 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.
Ecosistema de cajas
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.
- Rama — añadir "Denegar todo" Dns Resolver
- Rama — ampliar el soporte para secuestrar basado en datos de contexto
- Rama — soporte vec/array impl para DnsResolver
- Rama — Admite modos IP en conector y resolució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.
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 o comunicándose en X (anteriormente Twitter) o Mastodon!
Actualizaciones del Proyecto Rust
Se fusionaron 464 solicitudes de extracción en la última semana[fusionadas]
- hacer que 'rustc_abi' se compile en estable de nuevo
- atributo 'optimize' aplicado a cosas distintas de métodos/funciones/c...
- 'rust_for_linux: -Zregparm=<N>' bandera de línea de comandos para X86
- 'rustc_llvm': Arreglar argumentos CLI aplanados
- añadir '&pin (mut|const) T' posición de tipo azúcar
- añadir getentropía para RTEMS
- Se agregaron más escenarios donde se debe eliminar la coma en la función arg
- permitir '#[denegar]' dentro de '#[prohibir]' como un no-op
- permitir la eliminación del principal de dyn
- especifique siempre 'llvm_abiname' para los objetivos RISC-V
- autodiff Upstream - enzyme frontend
- Cambia la sugerencia huérfana de "sólo" a "cualquier tipo descubierto dentro..."
- comprobar si hay directivas filecheck en los archivos marcados como 'skip-filecheck'
- compilador: adopta las implicaciones del analizador de Rust para 'LayoutCalculatorError'
- compilador: error en el diseño de enumeraciones con reprs no válidos
- compilador: use el soporte Comdat de LLVM
- continúa deshazte de 'ty::Const::{try_}eval*'
- Cobertura: hacer que la creación de contadores maneje los contadores de nodo/borde de manera más uniforme
- por defecto al modelo de código medio en el destino LoongArch de OpenHarmony
- retrasar la resolución ambigua del enlace intra-doc después de que se haya llenado la 'Caché'
- No ejecutar la prueba donde no se puede ejecutar
- no marcar el objetivo de destamaño en la validación MIR cuando permanecen opacos
- no reportar el mensaje de 'on_unimplemented' por rasgos negativos
- No informe de error de bivarianza al anidar una 'estructura' con errores de campo en otra 'estructura'
- no ice cuando calcule la cobertura del cuerpo de cierre asíncrono sintético
- no consideres predicados que pueden ser imposibles en 'is_impossible_associated_item'
- habilitar la instrumentación XRay para objetivos LoongArch Linux
- corregir error de coherencia para tuplas™ muy grandes
- Arreglar el acceso de campo engañoso al rango
- manejar con gracia verdadero/falso en 'cfg(objetivo(..))' compacto
- Implementar restricciones ergonómicas de la edición 2024 para partidos
- hacer de 'unsupported_calling_conventions' un error grave
- hacer que se ejecuten destructores en tramas 'extern "C"'
- hacer que algunos métodos flotantes sean inestables 'const fn'
- asegúrese de que los opacos exteriores capturen la vida útil de los opacos internos incluso con una sintaxis de captura precisa
- nunca emitas 'vptr' para las características empty/auto
- registrar 'src/tools/unicode-table-generator' como una herramienta ejecutable
- Eliminar diagnósticos de ayuda no válidos para el puntero const
- devuelve valores mayores que 2 registros usando un puntero de área de retorno
- Configurando el acceso indirecto a datos externos para Loongarch64-linux-{musl,ohos}
- intente mejorar los mensajes de error que involucran alias en el solucionador
- Advertir menos sobre lo no exhaustivo en FFI
- miri: 'epoll_ctl': arroja error no soportado en código de operación no soportado
- Miri: Android: Añadido soporte para el manejo de nombres de hilos PRCTL
- Miri: Mejorar el soporte para 'F16' y 'F128'
- agregar ruta rápida al calcular la visibilidad predeterminada
- use 'ThinVec' para el almacenamiento de PredicateDuty
- Finalización de la estabilización de 'result_ffi_guarantees'
- estabilizar las API de procedencia estricta y procedencia expuesta
- estabilizar '-Znext-solver=coherence' de nuevo
- añadir constructores 'from_ref' y 'from_mut' a 'core::p tr::NonNull'
- añadir 'must_use' a 'CommandExt::exec'
- evite usar importaciones en 'thread_local_inner!'
- marcar la const inestable 'LazyCell::into_inner'
- optimizar 'Box::d efault' y 'Arc::d efault' para construir más tipos en su lugar
- optimizar str.reemplazar
- estabilizar parcialmente 'const_pin'
- refactorizar algunas macros 'core::fmt'
- evite las comprobaciones superfluas de UB en 'IndexRange'
- relaja un orden de memoria en 'once_box'
- Acelerar el recorrido del directorio en Windows
- std: uefi: añadir variables básicas de Env
- UEFI: implementa getcwd y chdir
- cargo: registry: HttpRegistry 'block_until_ready' regresa temprano cuando el trabajo aún está pendiente
- cargo: resolver: evite clonar al iterar usando RcVecIter
- cargo: estabilizar la configuración de resolución compatible con MSRV
- rustdoc-json-types: introducen la función rustc-hash
- rustdoc-json-types: marcar enumeraciones simples como copia
- rustdoc: cambiar de FxHash a sha256 para hash de archivos estáticos
- rustfmt 'for<'a> async' correctamente
- rustfmt: 'compile_rustfmt' reescritura
- rustfmt: aplicar el algoritmo de clasificación de la versión 2024 a los mods
- rustfmt: aplazar cambios para funciones de argumento cero hasta 'style_edition=2027'
- clippy: agregue lint para el retorno '&str' limitado de por vida innecesario
- clippy: permitir pasar a través de la página clippy lints sin javascript
- clippy: cambia la categoría de 'manual_is_power_of_two' a 'pedante'
- clippy: deja de linting 'manual_bits' en cualquier invocación de macro
- rust-analyzer: añadir el tipo de retorno wrap/unwrap en la opción
- analizador de Rust: sujete 'Posición::carácter' a la longitud de la línea
- rust-analyzer: no considere match/let/ref of place that evaluate to ! para divergir, no permita coerciones de ellos también
- Rust-analyzer: Mejores terminaciones para bloques externos
- rust-analyzer: goto definición en operadores de rango
- rust-analyzer: soporte inicial para 'safe_kw' en bloques externos
- rust-analyzer: soporte para la configuración initializeStopped
- Rust-analyzer: arreglar el mensaje de la barra de estado que no se marca como Markdown
- rust-analyzer: clasificar 'seguro' como una palabra clave contextual
- rust-analyzer: arreglar el error de asignación descendente de tokens para las entradas include!
- Rust-analyzer: los elementos privados se muestran en las terminaciones de los módulos en el cuerpo de FN
Clasificación del rendimiento del compilador de Rust
Algunas mejoras ordenadas al cambiar al solucionador de rasgos de próxima generación (únicamente para verificar la coherencia) y al simplificar nuestro marco de análisis de flujo de datos. Hubo algunas regresiones de tamaño binario asociadas con 126557 PR (agregando '#[track_caller]' a los métodos de asignación de 'Vec' y 'VecDeque'), que he entregado a T-libs para que elijan si investigar más a fondo.
Triaje realizado por @pnkfelix. Rango de revisión: 5ceb623a.. 3e33bda0
0 Regresiones, 3 Mejoras, 6 Mixtas; 3 de ellos en rollups 47 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] RFC: Dar a los usuarios control sobre la unificación de características
- [disposición: fusionar] [RFC] Valores de campo predeterminados
- [disposición: fusionar] Restricciones de impl del método de rasgos
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Agregar lint contra comparaciones de punteros de función
- [disposición: fusionar] Implementar 'From<&mut {slice}>'1 para 'Box/Rc/Arc<{slice}>'
- [disposición: fusionar] Problema de seguimiento para 'const_arguments_as_str'
- [disposición: no especificada] Agregar implementaciones de LowerExp y UpperExp a NonZero
- [disposición: fusionar] Estabilizar 'Ipv6Addr::is_unique_local' y 'Ipv6Addr::is_unicast_link_local'
- [disposición: fusionar] Hacer público 'std::os::d arwin'
- [disposición: fusionar] Problema de seguimiento para 'const_char_encode_utf16'
- [disposición: fusionar] tipos flotantes: mover copysign, abs, signum a libcore
- [disposición: fusionar] Problema de seguimiento para '{u8,i8,...}::isqrt'
- [disposición: fusionar] Añadir '--print host-triple' para imprimir el triple del objetivo del host
- [disposición: fusionar] Lint contra '&T' a '&mut T' y '&T' a '&UnsafeCell<T>' transmuta
- [disposición: fusionar] Pelusa contra la obtención de punteros de temporales eliminados inmediatamente
- [disposición: cerrar] Considerar la desaprobación de UB-happy 'static mut'
Carga
Equipo lingüístico
- No hay problemas de seguimiento de carga ni PR ingresaron al período de comentarios finales esta semana.
Referencia lingüística
- [disposición: no especificada] los elementos 'estáticos' distintos nunca se superponen
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] Derivaciones y atributos no seguros
- [nuevo] Campos de macrofragmentos
- [nuevo] Ordenación de campo DST relajada
Próximos eventos
Eventos oxidados entre 2024-10-23 - 2024-11-20 🦀
Virtual
- 24/10/2024 | Virtual | Mujeres en Rust
- 24/10/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 25/10/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 26/10/2024 | Virtual (Gdansk, PL) | Stacja IT trójmiasto
- 29/10/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 31/10/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 31/10/2024 | Virtual (Nürnberg, DE) | Rust, Núremberg, DE
- 01/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 02/11/2024 | Virtual( Kampala, UG) | Círculo de Rust Kampala
- 06/11/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 07/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 08/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 12/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 14/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 14/11/2024 | Virtual y presencial (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 15/11/2024 | Virtual (Jersey City, Nueva Jersey, EE. UU.) | Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 19/11/2024 | Virtual (Los Ángeles, CA, EE. UU.) | DevTalk LA
- 19/11/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 20/11/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
Asia
- 29/10/2024 | Tokio, JP | Encuentro de Rust en Tokio
Europa
- 26/10/2024 | Estocolmo, SE | Estocolmo Rust
- 28/10/2024 | París, FR | Rust Paris
- 29/10/2024 | Aarhus, DK | Rust Aarhus
- 30/10/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 31/10/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 06/11/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 06/11/2024 | París, FR | Rustáceos de París
- 14/11/2024 | Estocolmo, SE | Estocolmo Rust
- 19/11/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
América del Norte
- 23/10/2024 | Austin, TX, Estados Unidos | Rust ATX
- 26/10/2024 | Newark, Nueva Jersey, Estados Unidos | Código de NJ y café
- 27/10/2024 | Cambridge, MA, EE. UU. | Encuentro de Boston Rust
- 28/10/2024 | Boulder, CO, EE. UU. | Encuentro de Boulder Rust
- 28/10/2024 | Ferndale, Michigan, Estados Unidos | Rust de Detroit
- 28/10/2024 | Minneapolis, MN Estados Unidos | Reunión de Rust en Minneapolis
- 29/10/2024 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 30/10/2024 | Chicago, Illinois, Estados Unidos | Rust de plato profundo
- 04/11/2024 | Brookline, MA, EE. UU. | Encuentro de Boston Rust
- 07/11/2024 | San Luis, MO, EE. UU. | STL Rust
- 12/11/2024 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
- 15/11/2024 | Ciudad de México, DF, MX | Rust MX
- 15/11/2024 | Somerville, MA, EE. UU. | Encuentro de Boston Rust
Oceanía
- 28/10/2024 | Melbourne, VIC, Australia | Rust Melbourne
- 29/10/2024 | Canberra, ACT, AU | Grupo de usuarios de Canberra Rust (CRUG)
- 31/10/2024 | Auckland, Nueva Zelanda | Rust AKL
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
Tu problema es que estás tratando de pedir prestado a los muertos.
¡Gracias a Maciej Dziardziel 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