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 🥰
Fundación
Boletines
Actualizaciones de proyectos/herramientas
- Sobre Rust en los kernels empresariales
- Discrepancias de tipo FFI en Rust para Linux
- Lanzando punteros de la nada
- Uso de la energía atómica LKMM en Rust
- "pigg" (la GUI GPIO de Raspberry Pi) 0.4.0 lanzado
Observaciones/Pensamientos
- Por qué 'Pin' es parte de las firmas de rasgos (y por qué eso es un problema)
- El rasgo 'Sobrescribir' y 'Pin'
- Mejorar el rendimiento de un algoritmo paso a paso
- Reemplazando nginx por axum
- Un experimento en Rust asíncrono
- Diseño de una tabla hash concurrente rápida
- Repensar a los constructores... con Genéricos Perezosos
- CIP en Rust
- Rasgo de Serde - Parte 3: Deserialización
- Memoria para nada: Por qué Vec<ussize> es (probablemente) una mala idea
- Actualice el registro en sus pruebas de Rust
- Nueve reglas para ejecutar Rust en sistemas integrados
- Por qué Rust está arrasando en el mundo de la ingeniería de datos
Tutoriales de Rust
- Lectura de un archivo remoto usando Rust
- [video] Construir con Naz : Dirección y tamaño de memoria de Rust
Crate de la semana
El crate de esta semana es bacon, una aplicación de terminal para ejecutar sus tareas de carga en segundo plano.
¡Gracias a Denys Séguret 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.
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.
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 468 solicitudes de extracción en la última semana][fusionadas]
- literales de cadena protegidos de reserva (RFC #3593)
- ABI: pasar agregados por valor en AIX
- 'codegen_ssa': consolidar cheques de objetivos vinculados
- 'rustc_target': Añadir sme-b16b16 como una característica de destino explícita de aarch64
- añadir '&pin (mut|const) T' posición de tipo azúcar
- añadir sugerencia para eliminar la ruta inválida sep ':': en fn def
- también use const-anon más externo para elementos impl en 'non_local_defs' lint
- comprobar la compatibilidad del objetivo ABI para punteros de función
- No asumas que los rasgos utilizados como tipo son objetos de rasgo en la edición de 2021
- no haga ICE cuando encuentre un error de ciclo de diseño post-mono
- emitir un error para atributos inestables que hacen referencia a características ya estables
- corregir 'clobber_abi' y no permitir registros relacionados con SVE en el ensamblaje en línea Arm64EC
- mejorar los mensajes de error para las funciones 'C-cmse-nonsecure-entry'
- introducir la relación de tipo SolverRelating con el nuevo solucionador
- hacer la sugerencia de 'unused_parens' considerando los atributos de expr
- mover la lógica de confirmación ficticia a 'x86_64-gnu-llvm-18'
- mover la polaridad a 'PolyTraitRef' en lugar de almacenarla en un lado
- Captura precisa en rasgos
- coincidir superficialmente con la clave opaca en el almacenamiento
- soporte 'clobber_abi' en el ensamblaje en línea MSP430
- suprimir errores de importación para rasgos que podrían haberse aplicado para el error de búsqueda de métodos
- use throw intrinsic from stdarch en wasm libunwind
- miri: no almacenar los identificadores primitivos de sincronización en la memoria direccionable
- miri: asegúrese de que un 'os_unfair_lock' de macOS que se mueve mientras se sostiene no se desbloquea implícitamente
- Miri: Evento de epoll agregando: No hay necesidad de unirse, no hay reloj viejo aquí
- miri: arreglar el comportamiento de 'release_clock()'
- Miri: Arreglar la sincronización de epoll
- Miri: Se corrigió el impl 'pthread_getname_np' para glibc
- miri: se corrigieron las implementaciones de nombres de hilos get/set para macOS y FreeBSD
- Miri: usa el nuevo ayudante 'check_min_arg_count' en más lugares
- Obligaciones imposibles vía rápida
- eliminar ordenaciones innecesarias en 'rustc_hir_analysis'
- estabilizar 'const_char_encode_utf8'
- estabilizar 'const_make_ascii'
- estabilizar 'Pin::as_deref_mut()'
- Estabilizar la prueba 'ci_rustc_if_unchanged_logic'
- estabilizar 'const_option'
- estabilizar 'const_result'
- estabilizar 'debug_more_non_exhaustive'
- estabilizar 'duration_consts_float'
- estabilizar const 'ptr::write*' y 'mem::replace'
- estabilizar const '{slice,array}::from_mut'
- optimizar 'escape_ascii' usando una tabla de búsqueda
- migrar '&Option' de lib<T>' a 'Option<&T>'
- intrínsecos fmuladdf{32,64}: exponer llvm.fmuladd.* semántica
- añadir '#[track_caller]' a la asignación de métodos de 'Vec' y 'VecDeque'
- core/net: add 'Ipv[46]Addr::from_octets, Ipv6Addr::from_segments'
- desacoplar los zócalos WASIp2 de WasiFd
- se corrige el error donde 'option_env!' devolvería 'None' cuando env var está presente pero no es Unicode válido
- implementado 'FromStr' para 'CString' y 'TryFrom<CString>' para 'String'
- biblioteca: const-stabilize 'MaybeUninit::assume_init_mut'
- std: arreglar stdout-before-main
- hashbrown: ci: prueba el MSRV con versiones de dependencia mínimas
- hashbrown: revertir "feat: borsh serde"
- cargo: complete: No completes archivos por ningún valor
- cargo: git: don't fetch tags by default
- cargo: resolver: compartir caché de conflictos entre reintentos de activación
- cargo: agregar más pruebas de resolución SAT
- cargo: docs: las herramientas solo deben interpretar una línea que comience con '{' como JSON
- Cargo: feat: agregar completador personalizado para completar el nombre del registro
- Cargo: Arreglar el pánico al ejecutar el árbol de carga en un paquete con un bindep compilado cruzado
- cargo: fix: evite insertar 'dylib_path_envvar' duplicado al llamar a 'cargo run' recursivamente
- Carga: mejorar la velocidad del resolutor
- cargo: versión inicial de frescura basada en suma de comprobación
- cargo: eliminar el soporte para 'Cargo.toml' del script-cargo
- cargo: admite opciones de selección de paquetes como '--exclude' en 'cargo publish'
- rustdoc-json: cambiar el repr del ID del artículo de una cadena a un int
- rustdoc: añadir espacio entre los campos 'struct' y sus descripciones
- rustfmt: sugerencia de qué 'style_edition' usar en lugar de versión
- clippy: 'implicit_saturating_sub': sugerencia de corrección con un enfoque menos volátil
- clippy: 'module_name_repetitions': no avisa si el artículo está en un módulo privado
- clippy: añade pelusa 'manual_ignore_cast_cmp'
- clippy: marque el recuento de argumentos 'MethodCall'/'Call' antes o en absoluto
- Clippy: ¡Comprueba si hay cadenas sin procesar innecesarias en 'format_args! ()' también
- clippy: no advertir sobre el código generado por la macro proc en 'needless_return'
- clippy: arreglar la activación de 'large_stack_arrays' al anidar elementos const
- clippy: arreglar la pelusa 'manual_slice_size_calculation' cuando un corte es referenciado más de una vez
- clippy: arreglar el problema del lapso en 'implicit_saturating_sub'
- clippy: marque 'unnecessary_first_then_check' y 'byte_char_slices' como 'Aplicable'
- clippy: mover 'clippy::module_name_repetitions' a 'restricción' (de 'pedante')
- clippy: mover 'too_long_first_doc_paragraph' a 'guardería'
- clippy: solo emitir 'manual_c_str_literals' en ≥ Edición 2021
- clippy: use el prefijo std/core correcto en la salida de lint
- rust-analyzer: añadir soporte para LLDB-DAP
- rust-analyzer: analizar correctamente 'use' en parámetros genéricos
- rust-analyzer: no considere match/let/ref of place that evaluate to ! para divergir, no permita coerciones de ellos también
- rust-analyzer: manejar el auto-parámetro fuera de los métodos al cambiar el nombre
- Rust-analyzer: resaltar los puntos de salida de los bloques asíncronos
- rust-analyzer: respeta 'references.exclude_tests' en la jerarquía de llamadas
- Rust-analyzer: Soluciona el pánico cuando el proyecto JSON tiene rutas de archivo de compilación relativas
- Rust-analyzer: Comentar las comprobaciones de lanzamiento para un tipo de RPP desconocido
- rust-analyzer: no consideres el uso mutable de deref a '*mut T' como 'deref_mut'
- rust-analyzer: arreglar 'prettify_macro_expansion()' cuando el nodo no es el archivo completo
- Rust-analyzer: incluya la descripción en los detalles de la etiqueta cuando el campo de detalle esté marcado para ...
- rust-analyzer: autofix incorrecto para la unidad envuelta faltante en la devolución expr
- rust-analyzer: unir rustfmt overrideCommand con la raíz del proyecto
- rust-analyzer: hir-ty: cambiar el formato del constructor de variantes 'struct' + 'enum'
- rust-analyzer: lsp: arreglar 'completion_item something_to_resolve' que no es un pestillo para verdadero
- rust-analyzer: ejecutar subprocesos asíncronos en la extensión vscode
- [rust-analyzer: omitir la expansión '#[test_case]']](https://github.com/rust-lang/rust-analyzer/pull/18275)
Clasificación del rendimiento del compilador de Rust
No hay grandes cambios esta semana.
Triaje realizado por @simulacrum. Rango de revisión: e6c46db4.. 5ceb623a
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] estabilizar las API de procedencia estricta y procedencia expuesta
- [disposición: fusionar] hacer unsupported_calling_conventions un error grave
- [disposición: fusionar] Decidir el nombre de 'derivar(SmartPtr)'
- [disposición: fusionar] Estabilizar 'shorter_tail_lifetime'
- [disposición: fusionar] Estabilización de fin de 'result_ffi_guarantees'
- [disposición: fusionar] Implementar restricciones ergonómicas para partidos de edición 2024
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
- 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] RFC: No (opsem) Cajas Mágicas
- [nuevo] '#[en línea(obligatorio)]'
- [nuevo] RFC: introducir el patrón de diseño sintáctico de sabor
Próximos eventos
Eventos oxidados entre 2024-10-16 - 2024-11-13 🦀
Virtual
- 16/10/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 17/10/2024 | Virtual | Mujeres en Rust
- 17/10/2024| Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 17/10/2024 | Mountain View, CA, EE. UU. | Encuentro de Rust en Mountain View
- 22/10/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 24/10/2024 | Virtual | Mujeres en Rust
- 24/10/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 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/2022 | Virtual (Nürnberg, DE) | Rust, Núremberg, DE
- 07/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 12/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
África
- 02/11/2024 | Kampala, UG | Círculo de Rust Kampala
Asia
- 17/10/2024 - 18/10/2024 | Pekín, CN | Encuentro Mundial de Innovación de Código Abierto (GOSIM)
- 19/10/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
Europa
- 16/10/2024 | Manchester, Reino Unido | Rust de Manchester
- 17/10/2024 | Barcelona, ES | BcnRust
- 17/10/2024 | Berna, CH | Rust Bern
- 17/10/2024 | Gdańsk, PL | Rust Gdansk
- 22/10/2024 | Londres, Reino Unido | Grupo de usuarios de Rust London
- 22/10/2024 | Varsovia, PL | Rust Varsovia
- 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
América del Norte
- 16/10/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 17/10/2024 | Chicago, Illinois, Estados Unidos | Rust de plato profundo
- 17/10/2024 | Virtual y presencial (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 19/10/2024 | Cambridge, MA, EE. UU. | Encuentro de Boston Rust
- 23/10/2024 | Austin, TX, Estados Unidos | Rust ATX
- 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
- 04/11/2024 | Brookline, MA, EE. UU. | Encuentro de Boston Rust
- 06/11/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 07/11/2024 | San Luis, MO, EE. UU. | STL Rust
- 12/11/2024 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
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
Tendríamos botones en la pantalla para controlar los ventiladores del coche. Tuve que escribir un montón de código antes de poder compilarlo todo, una gran torre de jenga. Pero una vez que se compiló, ¡los fanáticos comenzaron a trabajar! Muy impresionado.
– Julius Gustavsson en el blog de Tweedegolf
¡Gracias a scottmcm 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