Esta semana en Rust #37
¡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
Boletines
Actualizaciones de proyectos/herramientas
- Anunciando Nio: un tiempo de ejecución asíncrono para Rust
- Anunciando la consulta de Rust
- "pigg" (la GUI GPIO de Raspberry Pi) versión 0.5.0, ahora con soporte para Pi Pico W a través de rust y embassy
- ¡Hola florecer! - Señales intuitivas en Rust
- ¡Ferroceno 24.11.0 con calificación médica y QNX ahora disponible!
Observaciones/Pensamientos
- ¿Una idea novedosa sobre 'Functor' en Rust?
- Optimización de un kernel matmul de GPU Rust
- Claves de mapa y duraciones
- Rustlantis: Pruebas diferenciales aleatorias del compilador de Rust
- Tipos que no se pueden soltar
- Un grupo de hackers de 40 años prefiere Rust
- Tipos lineales malditos en Rust
- Inseguro para el trabajo
- Alineándome con el Principio Rector del Rust: mi camino para encontrar mi 'Por qué'
Tutoriales de Rust
- [video] Construir con Naz - TLS en Rust con tokio, rustls, CFSSL
- Aventuras de optimización: hacer una carga de trabajo paralela de Rust 10 veces más rápida con (o sin) Rayon
- Construcción de primitivas asíncronas seguras para subprocesos en 150 líneas de Rust
- Envío seguro de datos del sensor DHT22 desde una placa ESP32 a PostgreSQL
- Escribir un GC de trazado de marca y barrido en Rust
Miscelánea
Crate de la semana
El crate de esta semana es postcard, un serializador/deserializador compatible con '#[no_std]' probado en batalla, bien documentado, orientado a su uso en dispositivos integrados.
¡Gracias a Reto Trappitsch 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.
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.
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.
- Diesel - Agrega soporte para funciones postgres json/jsonb actualmente no compatibles
- Diesel - Agregar funciones y operadores sqlite json/jsonb que faltan
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.
- Rust en París 2025 | Fecha límite: 30 de noviembre de 2024 | París, FR | 15 marzo 2025
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!
- FOSDEM 2025 Rust devroom | Fecha límite: 1 de diciembre de 2024 | Bruselas, BE | 1 de febrero de 2025
Actualizaciones del Proyecto Rust
405 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- 'lints_that_dont_need_to_run': nunca te saltes las pelusas reportadas en el futuro
- aarch64 softfloat target: siempre pasa floats en registros int
- tenga en cuenta 'wasm32v1-none' al exportar símbolos TLS
- añadir métodos de 'visit' a los nodos AST que ya tienen 'walk's en los visitantes AST
- agregar diagnóstico específico para usar la macro 'macro_rules' como atributo/derivar
- añadir visitas a nodos que ya tienen 'flat_maps' en 'ast::MutVisitor'
- permitir deshabilitar la instrumentación de ASan para globales
- Efectos de rescate en el solucionador antiguo si el yo es ty var
- btree: no fugar valor si el destructor de llaves falla
- constifica también los rasgos 'Deref'/'DerefMut'
- continuar la transición de 'ParamEnv' a 'TypingEnv'
- corregir la lista de niveles de 'wasm32-wasip2'
- default-enable 'llvm_tools_enabled' cuando no hay 'config.toml' presente
- distinga el desbordamiento y el no implementado en 'Step::steps_between'
- no permitir que '-Zunstable-options' tome un valor
- elimine la información de depuración en lugar de entrar en pánico si excedemos la capacidad de LLVM para representarlo
- emscripten: enlace con '-sWASM_BIGINT'
- arreglar el triple objetivo de LLVM para 'x86_64-win7-windows-msvc'
- arreglar ASM goto con salidas y moverlo a una puerta de características separada
- arreglar la extracción de arg de cierre en 'extract_callable_info', generalizarlo a cierres asíncronos
- implementar el objetivo del efecto '~const Destruct' en el nuevo solucionador
- implementar el objetivo de rasgo '~const Fn' en el nuevo solucionador
- implementar los límites de elementos '~const' en RPIT
- implementar el RFC de campos inseguros
- hacer que 'PointerLike' sea opcional en lugar de incorporado
- Hacer que los bloques de etiquetas ASM sean un contexto seguro
- fusionar '-Zhir-stats' en '-Zinput-stats'
- señale la definición 'const' cuando se usa en lugar de un enlace en una declaración 'let'
- Bonito estampado asíncrono fn azúcar en opacos y límites de rasgos
- reducir los falsos positivos de tail-expr-drop-order de los valores consumidos (intento #2)
- refactorizar los predicados 'donde' y reservar para el soporte de atributos
- eliminar 'is_trivially_const_drop'
- eliminar código de bits heredado para iOS
- reportar la pelusa 'unexpected_cfgs' en macros externas
- rustc: falla rápido al compilar un archivo fuente de más de 4 GiB
- mostrar pelusa 'abi_unsupported_vector_types' en futuros informes de rotura
- Dejen de ser tan bailables en la asamblea de candidatos
- Resolución de almacenamiento para segmentos de módulo propio y de raíz de caja
- Métricas de uso de características inestables
- use 'ConstArgKind::P ath' para todas las rutas de un solo segmento, no solo los parámetros bajo 'min_generic_const_args'
- use 'confstr(_CS_DARWIN_USER_TEMP_DIR, ...)' como un 'TMPDIR' de retroceso a Darwin
- use arc4random de libc para el objetivo RTEMS
- usar atributos para 'dangling_pointers_from_temporaries' lint
- interpretar: no hacer ICE cuando un promocionado falla con OOM
- miri: añadido epoll y eventfd para Android
- Miri: eventfd: Ajustes de comentarios
- Miri: Llenar la tabla de mapeo de errores de E/S de Windows
- Miri: seguimiento de #4052, haciendo un contexto de evaluación de Miri fn para 'strerror_r'
- Miri: Implementa la raíz cuadrada sin depender de los flotantes del host
- miri: refactorizar 'AnonSocket::read/write' para bloquear socketpair
- Miri: Simplificar las pruebas de bloqueo de hilos
- Miri: sysconf añadiendo algunas constantes más
- Miri: Corrección de intercepción de sysconf para sistemas solarish
- miri: vitrina de trofeos: añadir 'RwLock::d owngrade' bug
- miri: usa las APIs de 'PathBuf' para hacer correctamente alguna manipulación de rutas multiplataforma
- Resolver ajustes
- finalizar la eliminación de 'Revelar'
- estabilizar la edición de 2024
- estabilizar 'Ipv6Addr::is_unique_local' e 'Ipv6Addr::is_unicast_link_local'
- estabilizar 'const_float_methods'
- estabilizar 'const_pin_2'
- constificar mínimamente 'Agregar'
- marque '<[T; N]>::as_mut_slice' con el especificador 'const'
- marque 'get_mut' y 'set_position' en 'std::io::Cursor' como const
- reducir el tamaño de implementación de la 'Pantalla' entera
- std: permitir el uso posterior a la principal de primitivas de sincronización
- implement 'OsString::truncate'
- añadir 'AsyncFn*' al preludio en todas las ediciones
- añadir los métodos 'BorrowedBuf::into_filled{,_mut}' para permitir el retorno del búfer con la vida útil original
- add 'std::thread::add_spawn_hook'
- añadir 'vec_deque::Iter::as_slices' y amigos
- soporte 'each_ref' y 'each_mut' en '[T; N]' en expresiones constantes
- Soporte de entrada/salida en registros vectoriales del ensamblaje en línea S390X (bajo la función 'asm_experimental_reg')
- soporte s390x z13 vector ABI
- UEFI: proceso: agregar soporte para args
- hashbrown: versión v0.15.2
- cargo: 'test(rustflags)': Verifica -Cmetadata directamente, no a través de -Cextra-filename
- cargo: permitir que los registros omitan campos vacíos/predeterminados en JSON
- cargo: verifique que el objetivo de compilación admita std cuando se compila con -Zbuild-std=std
- cargo: documentos para campos JSON de registro opcionales
- cargo: feat: estabilizar Edición 2024
- cargo: mejorar el manejo de errores cuando PathSource es relativo
- cargo: test: address test output nondeterminism
- Cargo: prueba: cambiar de ''exec_with_output'' a 'correr'
- rustdoc: no llames a 'to_string', ya es impl Display
- bindgen: añadir la función 'raw_ref_macros'
- clippy: añadir nueva pelusa 'doc_include_without_cfg'
- clippy: añadir nota sobre la advertencia para 'cfg(doc)'
- clippy: no considerar los tiempos de vida en los tipos acotados sin usar (arreglar 'extra_unused_lifetimes' FP)
- clippy: sincronización y automatización de lanzamientos
- clippy: usa un mejor mensaje para 'unnecessary_map_or' lint
- rust-analyzer: convertir 'add_braces' a la abstracción de SyntaxFactory SyntaxEditor
- Rust-analyzer: use marcadores de posición de fragmentos para los brazos de coincidencia generados
- Rust-analyzer: Arregla un desbordamiento de pila al calcular el tamaño de una 'estructura' que se incluye a sí misma como el campo de cola
- Rust-analyzer: Mejorar el manejo de selección para la asistencia 'merge_match_arms'
- rust-analyzer: migrar 'reorder_impl_items' Assist para usar 'SyntaxFactory'
Clasificación del rendimiento del compilador de Rust
Esta semana se observaron más regresiones que mejoras, principalmente debido a tres PR que realizaron resultados internos refactorizaciones que son necesarias para el desarrollo y la modificación posteriores del compilador.
Triaje realizado por @kobzol. Rango de revisión: 7d40450b.. 7db7489f
Resumen:
| (instrucciones:u) | media | Gama | Recuento |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regresiones ❌
(primario) | 0.6% | [0.1%, 3.6%] | 57 |
| Regresiones ❌
(secundaria) | 0.6% | [0.0%, 2.7%] | 100 |
| Mejoras ✅
(primario) | -0,5% | [-1.5%, -0.2%] | 11 |
| Mejoras ✅
(secundaria) | -0,4% | [-0.5%, -0.3%] | 7 |
| Todos ❌✅ (primarios) | 0.4% | [-1,5%, 3,6%] | 68 |
4 regresiones, 2 mejoras, 3 mixtas; 3 de ellos en rollups 40 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:
- 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
- [disposición: fusionar] [RFC] ABI explícito en extern
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Problema de seguimiento para 'sub_ptr' (característica 'ptr_sub_ptr')
- [disposición: fusionar] Estabilizar variantes sin signo y flotantes de la función 'num_midpoint'
- [disposición: fusionar] Problema de seguimiento para Vec::extract_if y LinkedList::extract_if
- [disposición: fusionar] Estabilizar noop_waker
- [disposición: fusionar] Estabilizar const_maybe_uninit_write
- [disposición: fusionar] Problema de seguimiento para la ruta::file_prefix
- [disposición: fusionar] Estabilizar '#[diagnóstico::d o_no_recomendar]'
- [disposición: fusionar] Hacer que missing_abi lint advierta por defecto.
- [disposición: fusionar] Problema de seguimiento para ptr::fn_addr_eq
- [disposición: fusionar] Arreglar y dejar de usar home_dir()
Carga
- No hay problemas de seguimiento de carga ni PR ingresaron 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 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
- [new] crates.io: Eliminar las eliminaciones de versiones del RFC de "eliminaciones de cajas"
- [nuevo] RFC: Agregar un nivel de lint semánticamente no bloqueante
Próximos eventos
Eventos oxidados entre 2024-11-27 - 2024-12-25 🦀
Virtual
- 28/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 28/11/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 29/11/2024 | Virtual (Jersey City, NJ, EE. UU.)| Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 02/12/2024 | Virtual (Londres, Reino Unido) | Mujeres en Rust
- 03/12/2024 | Virtual (Buffalo, NY, EE. UU.) | Encuentro de Buffalo Rust
- 03/12/2024 | Virtual (San Francisco, CA, EE. UU.) | Centro Blockchain SF
- 04/12/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 05/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 05/12/2024 | Virtual (Miami, FL) | Eventos del grupo de usuarios de Java en Miami
- 06/12/2024 | Virtual (Jersey City, NJ, EE. UU.)| Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 07/12/2024 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 08/12/2024 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 2024-12-10 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 11/12/2024 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 12/12/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 12/12/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 12/12/2024 | Híbrido: presencial y virtual (Seattle, WA, EE. UU.) | Reunión de Rust en Seattle
- 13/12/2024 | Virtual (Jersey City, NJ, EE. UU.)| Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 17/12/2024 | Virtual (San Francisco, CA, EE. UU.) | Centro Blockchain SF
- 17/12/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 19/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 19/12/2024 | Virtual (Ciudad de México, DF, MX) | Rust MX
- 20/12/2024 | Virtual (Jersey City, NJ, EE. UU.)| Jersey City, Elegante y Curiosa Cooperativa del Club de Codificadores
- 24/12/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
África
- 2024-12-10 | Johannesburgo, ZA | Reunión de Rust en Johannesburgo
Asia
- 28/11/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
- 30/11/2024 | Tokio, JP | Rust de Tokio
- 03/12/2024 | Ra'anana, IL | Reuniones de investigación y desarrollo de Abra
Europa
- 27/11/2024 | Dortmund, DE | Rust Dortmund
- 28/11/2024 | Aarhus, DK | Rust Aarhus
- 28/11/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 28/11/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 28/11/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 28/11/2024 | Gdansk, PL | Rust Gdansk
- 28/11/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 28/11/2024 | Manchester, Reino Unido | Rust de Manchester
- 28/11/2024 | Praga, CZ | Rust Praga
- 30/11/2024 | Estocolmo, SE | Estocolmo Rust
- 03/12/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 04/12/2024 | Girona, ES | Rust Girona
- 04/12/2024 | Köln, DE | Colonia Rust
- 04/12/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 04/12/2024 | París, FR | Rust Paris
- 05/12/2024 | Gdansk, PL | Rust Gdansk
- 05/12/2024 | Zlin, CZ | Rust Moravia
- 06/12/2024 | Moscú, RU | RustCon RU
- 11/12/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 12/12/2024 | Ámsterdam, Países Bajos | Grupo de desarrolladores de Rust en Ámsterdam
- 17/12/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
América del Norte
- 27/11/2024 | Austin, TX, Estados Unidos | Rust ATX
- 05/12/2024 | Montreal, QC, CA | Rust Montreal
- 05/12/2024 | San Luis, MO, EE. UU. | STL Rust
- 2024-12-10 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
- 12/12/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 12/12/2024 | Híbrido: presencial y virtual (Seattle, WA, EE. UU.) | Grupo de usuarios de Seattle Rust
- 16/12/2024 | Minneapolis, MN, Estados Unidos | Reunión de Rust en Minneapolis
- 17/12/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 23/12/2024 | Ferndale, Michigan, Estados Unidos | Rust de Detroit
Oceanía
- 04/12/2024 | Sídney, Australia | Rust de Sídney
- 08/12/2024 | Canberra, Australia | Grupo de usuarios de Canberra 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 Quién está contratando en r/rust
Frase de la semana
Nunca dejaré de sorprenderme positivamente por clippy
'''texto error: la hipotenusa se puede calcular con mayor precisión: --> src/main.rs:835:5 | 835 | (ancho * ancho + alto * alto).sqrt() / diag | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ayuda: considere usar 'width.hypot(height)' | ayuda: Para obtener más información, visite https://rust-lang.github.io/rust-clippy/master/index.html#imprecise_flops
llogiq se aprecia bastante a sí mismo con respecto a su 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