Esta semana en Rust #5
¡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 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, envíe un PR.
Actualizaciones de la comunidad de Rust 🥰
Boletines informativos
Actualizaciones de proyectos/herramientas
- rust-libp2p v0.53 ha sido liberado
- Lanzamiento de Zellij 0.39.0
- Calificado oficialmente - Ferroceno
- Rocket ́s 4th v0.5 Release Candidate
Observaciones/Pensamientos
- Escribir enlaces de Rust para mi aplicación de Python
- Un plan de cuatro años para Rust asíncrono
- Cursed Rust: Printing Things The Wrong Way
- Rust para desarrolladores de JavaScript: una descripción general de las pruebas
- ¿Por qué Golang en lugar de Rust para desarrollar la aplicación de escritorio Krater
- Google reescribe la carpeta de Android en Rust con resultados prometedores
- volcar la estructura de Rust o la representación de memoria de enumeración como bytes
- Cómo los proyectos de código abierto están usando Kani para escribir mejor software en Rust
- Creación de backends asíncronos de alto rendimiento con Burn-Compute
- Adiós Python, Hola Rust: Construyendo una aplicación RAG CLI con Orca
- Genéricos variádicos, de nuevo
- Uso de Rust, Chrome y NixOS para tomar capturas de pantalla sin cabeza para compartir en redes sociales
- Primera auditoría de seguridad de Sudo-RS
- Destruir árboles de forma segura y barata
- Edge IoT con Rust en ESP: NTP
Tutoriales de Rust
Miscelánea
- Migración del backend PGP de SecureDrop de GnuPG a Sequoia
- [video] 10 veces más rápido - haciéndose cargo del backend del compilador
- [video] Extensión vectorial RISC-V en Rust
- Incrustación de un archivo CSV simple en la aplicación Rust
Crate de la semana
El crate de esta semana es floem, una biblioteca nativa de la interfaz de usuario de Rust con reactividad de grano fino.
A pesar de no recibir sugerencias, llogiq está razonablemente satisfecho con su elección.
[Por favor, envíen sus sugerencias y votos para la próxima semana] submit_crate!
Convocatoria a la participación
¿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 las 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.
- Ockam - Hacer que 'ockam identity delete' (sin args) sea interactivo pidiendo al usuario que elija de una lista de nombres de identidad para eliminar (tuify)
- Ockam - Hacer que 'ockam tcp-outlet delete' (sin args) sea interactivo pidiendo al usuario que elija de una lista de alias tcp-outlet para eliminar (tuify)
- Ockam - Hacer que 'ockam project show' (sin argumentos) sea interactivo pidiendo al usuario que elija de una lista de proyectos para mostrar (tuify)
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
366 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- 'dropck_outlives' compruebe si el testigo del generador 'needs_drop'
- tenga en cuenta 'ref' y 'mut' en el lugar incorrecto para el cambio de nombre de la identificación del patrón
- añadir un visitante MIR estable
- añadir todos los RPITITs al aumentar param-env con límites GAT en 'check_type_bounds'
- Agregar elementos de diagnóstico para algunas de las macros integradas de Core
- añadir soporte para fechas de archivo anteriores a la época de Unix en las plataformas de Apple
- añadir el 'Span' de la palabra clave 'move' al HIR
- también se considera que el TAIT no es computable si el cuerpo MIR está contaminado
- evite el recorte de la ruta de pelusa ICE en el informe de errores
- evite la comparación innecesaria en 'partition_equal'
- Compruebe las carpetas con variables enlazadas para los límites globales que no se cumplen
- consts: eliminar el código muerto alrededor de los valores constantes 'i1'
- cobertura: reemplazar imposible 'cobertura::Error' con aserciones
- derivar 'TyEncodable'/'TyDecodable' en 'rustc_type_ir'
- Detectar binop mal analizado causado por la falta de semi
- Detectar errores de seguridad de objetos cuando falta el tipo de asociación
- no hacer ICE en caso de fallo de evaluación constante en GVN
- no afirmar en 'op_to_const'
- No comprobar los límites de alias en Liveness cuando los alias tienen variables enlazadas de escape
- no emita errores de buena ruta retrasada en pánico
- no pases '-stdlib=libc++' al compilar archivos C en macOS
- habilitar la inserción entre cajas cuando la inserción MIR está habilitada
- Habilitar el front-end paralelo de Rustc en compilaciones nocturnas
- reserva para 'construct_generic_bound_failure'
- Se corrige la inicialización excesiva y las lecturas más allá de EOF en la especialización 'io::copy(_, Vec)<u8>'
- Corregir sugerencia incorrecta de restricción vinculada a rasgos
- Se corrigió el orden de las implementaciones en la sección "Implementaciones en tipos foráneos"
- garantizar la representación de Ninguno en la OSFL
- Garantizar que 'char' tiene el mismo tamaño y alineación que 'U32'
- optimizador de sugerencias sobre la capacidad reservada por prueba
- en línea y eliminar 'create_session'
- asegúrese de que los predicados con variables enlazadas no mencionadas todavía se consideren globales en el solucionador anterior
- hacer que la función de aleatorización del aditivo 'rustc_abi' sea aditiva
- Hacer coincidir usize/isize exhaustivamente con rangos semiabiertos
- Rellene previamente el almacenamiento opaco antes de usarlo
- bonitos rasgos 'Fn' en 'rustc_on_unimplemented'
- recuperarse de la lista de parámetros faltantes en las definiciones de funciones
- Refactorizar: mover funciones de sugerencia de demanda a sugerencias
- eliminar el soporte obsoleto para vincular el desenredado en Android
- eliminar el soporte para el alias '-Z symbol-mangling-version'
- eliminar el soporte para complementos de compilador
- reemplazar el cambio a inalcanzable por las declaraciones de asunción
- establezca 'max_atomic_width' para riscv32*-esp-espidf en 32
- convertir 'const_caller_location' de una consulta a un gancho
- use 'FxIndexSet' en el integrador de símbolos
- use el derivado para 'Clone'/'PartialOrd'/'Ord'/'Hash' en 'rustc_type_ir'
- Usar caché global al calcular árboles de prueba
- use el intervalo correcto al emitir el resultado 'env!'
- advertir a los usuarios que establecen un nivel de pelusa 'non_exhaustive_omitted_patterns' en un brazo de coincidencia
- Al encontrar delimitadores no cerrados durante el lexing, compruebe si hay marcadores de diferencia
- habilitar src/math para todos los objetivos UEFI
- Macro intrínseca: Arreglar la generación de aeabi no débil
- Esto habilita el módulo matemático para los objetivos RISCV32
- estabilizar 'const_maybe_uninit_zeroed' y 'const_mem_zeroed'
- estabilizar 'file_set_times'
- arreglar 'switch_stdout_to' en Windows7
- añadir 'track_caller' a 'transmute_copy'
- delegar '<Box>::p rovide'<E> a '<E>::p rovide'
- soporta variantes de 'enum' en 'offset_of!'
- enumeraciones de la puerta de características en 'offset_of'
- override 'Waker::clone_from' para evitar clonar 'Waker' innecesariamente
- CodeGen_gcc: Corregir error de compilación de vectores
- cargo: 'feat(trim-paths)': establece env 'CARGO_TRIM_PATHS' para scripts de compilación
- cargo toml: Saca el esquema
- Cargo: Arreglar un mensaje de pánico inútil
- cargo: implement '-Ztrim-paths' (RFC #3127)
- cargo: fusionar 'rutas de recorte' de diferentes perfiles
- rustdoc: aceptar Rust menos inválido
- rustfmt: corrige la coma añadida al comentario en la cláusula where
- clippy: 'unused_enumerate_index': no hacer hielo en tuplas vacías
- clippy: añadir pelusa 'unused_enumerate_index'
- clippy: arreglar el cálculo de semi span 'dbg_macro'
- clippy: arreglar 'enum_variant_names' dependiendo de la pelusa dependiendo del orden
- clippy: corrige el falso negativo 'get_first' para VecDeque
- clippy: nueva pelusa: 'unnecessary_fallible_conversions'
- Rust-analyzer: añadir asistencia 'generate_mut_trait_impl'
- rust-analyzer: importar rasgo con alias
- rust-analyzer: omitir la comprobación del recuento de árboles de tokens para la llamada a la macro include!
- rust-analyzer: arreglar la ruta de los documentos para derivar macros
- rust-analyzer: metadatos de vSCode. category:forformates
Clasificación del rendimiento del compilador de Rust
Una semana difícil para el triaje, debido a lo que parece ser una interrupción a nivel del sistema aparato de medición, produciendo ruido transitorio (y potencialmente enmascarando problemas). El principal cambio en el rendimiento sin ruido fue la enorme regresión a los mapas de bits introducida por PR 117131, y que ya tiene una corrección en vuelo (PR #117542). Lo otro Vale la pena señalar que el front-end paralelo de rustc se ha habilitado en las compilaciones nocturnas, lo que ha introducido cierta sobrecarga que era esperada por wg-parallel-rustc.
Triaje realizado por @pnkfelix. Rango de revisión: 650991d6.. 7b97a5ca
10 regresiones, 4 mejoras, 3 mixtas; 3 de ellos en rollups 68 comparaciones de artefactos realizadas en total
RFC aprobados
Los cambios en Rust siguen el proceso de Rust RFC (solicitud de comentarios). Estos son los RFC que se aprobaron para su implementación esta semana:
- Agregar RFC "Actualización de política crates.io"
- Fusionar RFC 3498: "Reglas de captura de por vida 2024"
Período final de comentarios
Cada semana, el equipo anuncia el 'período final de comentarios' para las RFC y las relaciones públicas clave que están llegando a una decisión. Expresa tus opiniones ahora.
RFC
- Ninguna RFC entró en el Período de Comentarios Final esta semana.
Seguimiento de problemas y solicitudes de incorporación de cambios
- [disposición: fusionar] Añadir T: ? Con el tamaño de 'RwLockReadGuard' y 'RwLockWriteGuard's Debug impls.
- [disposición: fusionar] Problema de seguimiento para 'file_create_new'
- [disposición: fusionar] feat: implementar 'DoubleEndedSearcher' para 'CharArray[Ref]Searcher'
- [disposición: fusionar] TAIT definiendo las opciones de alcance
- [disposición: fusionar] Añadir exportaciones 'std::hash::{DefaultHasher, RandomState}' (necesita FCP)
Referencia del idioma
- Ninguna RFC de referencia lingüística entró en el Período Final de Comentarios esta semana.
Directrices de código inseguro
RFCs nuevas y actualizadas
Convocatoria de pruebas
Un paso importante para la implementación de RFC es que las personas experimenten con el método 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 seguir adelante:
- Ninguna RFC emitió una convocatoria para pruebas esta semana.
Si usted 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.
Próximos eventos
Eventos oxidados entre 2023-11-08 - 2023-12-06 🦀
Virtual
- 08/11/2023 | Virtual(Boulder, CO, EE. UU.) | Depósito de Estado Sólido - El Espacio de Creación de Boulder
- 09/11/2023 | Virtual (Linz, AT) | Rust Linz
- 09/11/2023 | Virtual (Núremberg, DE) | Rust Nuremberg
- 10/11/2023 | Virtual (Bangalore, IN) | Aprende todo sobre programación
- 12/11/2023 | Virtual (Tel Aviv-Yafo, IL) | Expertos en código
- 14/11/2023 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 14/11/2023 | Virtual (Kiev, UA) | Yalantis Educación
- 15/11/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 15/11/2023 | Virtual (Richmond, VA, EE. UU.) | Conferencia de plomeros de Linux
- 15/11/2023 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 16/11/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 16/11/2023 | Virtual (Vilnius, LT) | Grupo de Meetup de Vilnius Rust and Go
- 21/11/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 21/11/2023 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 23/11/2023 | Virtual (Edmonton, AB, CA) | Grupo de usuarios de Edmonton R - Yegrug
- 28/11/2023 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 29/11/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 30/11/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 30/11/2023 | Virtual (Dublín, IE) | Rust Dublín
- 01/12/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 02/12/2023 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 05/12/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 05/12/2023 | Virtual (Búfalo, NY, EE. UU.) | Reunión de Buffalo Rust
Europa
- 09/11/2023 | Barcelona, ES | BcnRust
- 09/11/2023 | París, FR | Rustáceos de París
- 09/11/2023 | Reading, Reino Unido | Taller de lectura de Rust
- 21/11/2023 | Augsburgo, DE | Rust - Programación de sistemas modernos en Leipzig
- 23/11/2023 | Biel/Bienne, CH | Rust Bern
América del Norte
- 08/11/2023 | Boulder, CO, EE. UU. | Reunión de Boulder Rust
- 14/11/2023 | Nueva York, NY, EE. UU. | Rust de Nueva York
- 14/11/2023 | Seattle, WA, EE. UU. | Cap Hill Rust Codificación/Hackeo/Aprendizaje
- 15/11/2023 | Richmond, VA, EE. UU. + Virtual | Conferencia de plomeros de Linux
- 16/11/2023 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 16/11/2023 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 16/11/2023 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 21/11/2023 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 22/11/2023 | Austin, TX, EE. UU. | Rust ATX
- 28/11/2023 | Pasadena, CA, EE. UU. | Pasadena Thursday Go / Rust
Oceanía
- 21/11/2023 | Christchurch, Nueva Zelanda | Grupo de encuentro de Christchurch Rust
- 28/11/2023 | Canberra, ACT, AU | Rust Canberra
Si está ejecutando un evento de Rust, agréguelo al calendario para obtener que se menciona aquí. 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, vea el último hilo de Quién está contratando en r/rust
Frase de la semana
Para que Binder siga satisfaciendo las necesidades de Android, necesitamos mejores formas de gestionar (¡y reducir!) la complejidad sin aumentar el riesgo.
El mayor cambio es, obviamente, la elección del lenguaje de programación. Decidimos utilizar Rust porque aborda directamente una serie de desafíos dentro de Binder a los que nos hemos enfrentado durante los últimos años.
– Alice Ryhl en la lista de correo del kernel de Linux
¡Gracias a Vincent de Phily 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