Esta semana en Rust #3
¡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 🥰
Actualizaciones de proyectos/herramientas
Observaciones/Pensamientos
- [Tratando de inventar un mejor algoritmo de búsqueda de subcadenas](https://marcos.unsafe.rs/trying-para-inventar-un-mejor-algoritmo de búsqueda de subcadenas/)
- Mejorando Node.js con la biblioteca Rust-Wasm
- Mezcla de C# y Rust - Interoperabilidad
- Una nueva mirada a la serialización incremental de cero copias
- Haz que el compilador de Rust sea un 5% más rápido con este extraño truco
- Parte 3: Remo de botes de tipo de datos a flote
- Recreación de combinadores de futuros concurrentes en smol
- Desempaquetando algunas ergonomías de Rust: obteniendo un solo resultado de un iterador de ellas
- Idea: "Usando Rust", un documento vivo
- La sopa de objetos está hecha de índices
- Análisis de datos 180.000 veces más rápido con Rust
- Issue #10: Serving HTML
- Rust vs C en un ATTiny85; una historia de guerra incrustada
Tutoriales de Rust
- Análisis de datos /,000 veces más rápido con Rust
- Lanzamientos totalmente automatizados para proyectos de Rust
- Haga que su unidad de código de Rust sea comprobable con inversión de dependencias
- Nueve reglas para validar formalmente los algoritmos de Rust con Dafny (Parte 2): Lecciones de la verificación de la caja range-set-fire
- [video] Vamos a escribir un corredor de mensajes usando QUIC - Broke But Quick Episode 1
- [video] Publicación de mensajes a través de QUIC Streams! - Broke But Quick episodio 2
Miscelánea
- [video] Tipos asociados en los límites del iterador
- [video] Rust y la era de las lenguas de alta integridad
- [video] Implementando (parte de) un cliente BitTorrent en Rust
Crate de la semana
El crate de esta semana es cargo-show-asm, un subcomando de carga para mostrar el ensamblaje optimizado de cualquier función.
¡Gracias a Kornel por la sugerencia!
[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.
- Hyperswitch (Hacktoberfest)- [CARACTERÍSTICA] separar payments_session del núcleo de pagos
- Hyperswitch (Hacktoberfest)- [NMI] Usar connector_response_reference_id como referencia al comerciante
- Hyperswitch (Hacktoberfest)- [Airwallex] Usar connector_response_reference_id como referencia al comerciante
- Hyperswitch (Hacktoberfest)- [Worldline] Usar connector_response_reference_id como referencia al comerciante
- Ockam - Hacer que 'ockam project delete' (sin argumentos) sea interactivo pidiendo al usuario que elija de una lista de nombres de espacios y proyectos para eliminar (tuify)
- Ockam - Validar estructuras CBOR de acuerdo con el esquema cddl para 'authenticator/direct/types'
- Ockam - Adelgazar el 'NodeManagerWorker' para 'nodo / estado del nodo'
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
397 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- Reescribir el registro de la impresora bonita de GDB
- añadir anotaciones de FileCheck a las pruebas mir-opt
- añadir MonoItems e Instancia a 'stable_mir'
- añadir un objetivo 'csky-unknown-linux-gnuabiv2hf'
- Agregue una prueba que muestre la inferencia de firma de cierre fallida en el nuevo solucionador
- añadir una nueva sintaxis más simple y explícita para check-cfg
- añadir estable 'Instance::body()' y RustcInternal trait
- Habilitar automáticamente la inserción de cajas cruzadas para funciones pequeñas
- evite un 'track_errors' burbujeando la mayoría de los errores de 'check_well_formed'
- evite que 'rustc_smir' dependa de 'rustc_interface' o 'rustc_driver'
- Cobertura: Emitir asignaciones para funciones no utilizadas sin generar stubs
- Cobertura: Emitir la sección de nombres de archivo antes de codificar las asignaciones por función
- Cobertura: Corregir el manejo inconsistente de los intervalos de firma de la función
- cobertura: mover la mayor parte de la información de cobertura por función a 'mir::Body'
- Cobertura: simplificar la inyección de declaraciones de cobertura
- deshabilitar la pelusa 'missing_copy_implementations' en los tipos 'non_exhaustive'
- no poner en negrita el mensaje principal en '--error-format=short'
- no haga hielo cuando encuentre regiones no resueltas en 'fully_resolve'
- no comparar el parámetro de host por nombre
- no se bloquee en una coincidencia vacía en la pelusa 'nonexhaustive_omitted_patterns'
- duplicar los límites '~const' con uno que no sea const en el desazúcar de efectos
- eliminar 'rustc_attrs::builtin::handle_errors' a favor de emitir errores directamente
- Se corrigió una regresión de rendimiento en la deduplicación de obligaciones
- corregir la comprobación de vidas superactivas implícitas para GAT en RPITIT
- Se corrigieron los intervalos para eliminar '.await' en las expresiones 'for'
- Sugerencia de corrección para la función de corrutinas renombrada
- implementar una pelusa interna que fomente el uso de 'Span::eq_ctxt'
- implementar roscado de salto MIR opt
- implementar la parte rustc de las rutas de recorte RFC 3127
- Mejorar la visualización de trabajos paralelos en el script de prueba rustdoc-gui
- iniciar el uso interno de 'cfg_match' (Compilador)
- lint 'non_exhaustive_omitted_patterns' por columnas
- polonio insensible a la ubicación: considere que un préstamo se escapa si una SCC solo tiene restricciones de miembros aplicadas
- hacer que '#[repr(Rust)]' sea incompatible con otras sugerencias de representación (no modificadoras) como 'C' y 'simd'
- hacer que la ruta de exportación 'rustc_onunimplemented' sea agnóstica
- mencione 'into_iter' en las sugerencias de errores de préstamo cuando corresponda
- mencione la sintaxis de 'use' en 'mod foo;' si 'foo' no existe
- pánico cuando el asignador global intenta registrar un destructor TLS
- punto en la definición de assoc fn sobre la divergencia de parámetros de tipo
- conserva los escapes Unicode en literales de cadena de formato cuando se imprime AST
- Tener en cuenta adecuadamente la autoambiguación en la sugerencia de desambiguación de métodos
- informe 'unused_import' para reexportaciones vacías incluso si es pub
- Caso especial de la cadena de iteradores comprueba si hay sugerencias
- Procedencia estricta desenrollar
- sugerir ';' después de la expresión 'match' E0308
- sugerir restringir los tipos de asociación en más casos
- sugerir relajar el implícito 'type Assoc: Sized;' bound
- [sugiero eliminar los argumentos redundantes en 'format! ()»(https://github.com/rust-lang/rust/pull/115324)
- Eleva la movilidad y la mutabilidad, de la manera más sencilla
- miri: evite un escaneo lineal sobre todo el 'int_to_ptr_map' en cada deallocation
- [miri: se corrigió la verificación del modo de redondeo en las funciones de ronda SSE4.1](https://github.com/rust-lang / miri / pull / 3124)
- Miri: Intptrcast: Eliminar información sobre asignaciones muertas
- deshabilitar efectos en libcore de nuevo
- añadir '#[track_caller]' a 'Opción::unwrap_or_else'
- especialice 'Bytes:<R>:next' cuando 'R' es un 'BufReader'
- hacer que TCP conecte la manija EINTR correctamente
- en Windows hacer un error 'read_dir' en la ruta vacía
- hashbrown: agregar API 'HashTable' de bajo nivel
- codegen_gcc: agrega soporte para el atributo de función NonNull
- codegen_gcc: corrige el atributo '#[inline(always)]' y admite la comparación sin signo para enteros con signo
- codegen_gcc: arreglar endianness
- codegen_gcc: arreglar la alineación de los tipos int
- codegen_gcc: optimizar la implementación de popcount
- CodeGen_gcc: Optimizar aún más los recuentos de pop de U128/i128
- cargo add: Conservar más comentarios
- cargo remove: Conservar comentarios de características
- reemplazo de carga: soporte de especificaciones de versión parcial
- [cargo: Proporcione los siguientes pasos para la bandera -Z incorrecta](https://github.com/rust-lang / cargo / pull / 12857)
- cargo: Sugerir búsqueda de carga en comandos incorrectos
- cargo: ajuste '-Zcheck-cfg' para la nueva sintaxis y comportamiento de rustc
- cargo: si hay una versión en el archivo de bloqueo, use solo esa versión exacta
- cargo: hacer que el campo preciso de una fuente sea una enumeración
- cargo: imprime variables de entorno para ejecuciones de scripts de compilación con '-vv'
- cargo: advertir sobre el formato del nombre de la caja al crear una nueva caja
- rustdoc: alinear la insignia de estabilidad con la línea de base en lugar de con la parte inferior
- rustdoc: evitar la asignación de cadenas de impresión de enlaces primitivos
- clippy: 'map_identity': permitir el cierre con anotaciones de tipo
- clippy: 'map_identity': reconocer la función de identidad de la tupla
- clippy: agregar lint para los nombres de los campos 'struct'
- clippy: no emita 'needless_pass_by_ref_mut' si la variable se usa en un bloque o función insegura
- clippy: hacer que 'multiple_unsafe_ops_per_block' ignore await desugaring
- clippy: paso innecesario por ref mut closure non async fn
- clippy: ahora 'declare_interior_mutable_const' y 'borrow_interior_mutable_const' respetan la entrada de configuración 'ignore-interior-mutability'
- clippy: omite la pelusa 'if_not_else' para las comprobaciones de estilo '!= 0'
- clippy: sugiere pasar la función en lugar de llamarla en el cierre de 'option_if_let_else'
- clippy: advertir 'missing_enforced_import_renames' por defecto
- rust-analyzer: generar descriptores para todas las características inestables
- rust-analyzer: agregue un comando solo para abrir documentos externos e intentar solucionar el problema de vscode-remote
- rust-analyzer: agregar diagnósticos de casos incorrectos para los nombres de los módulos
- rust-analyzer: corregir la detección de VS Code para la versión de Insiders
- rust-analyzer: importar rasgo si es necesario para la asistencia 'unqualify_method_call'
- rust-analyzer: elija un nombre mejor para las variables introducidas por 'replace_is_some_with_if_let_some'
- rust-analyzer: almacena el modo de enlace para cada instancia de un enlace de forma independiente
- perf: agregar punto de referencia de tiempo de ejecución de emulación de NES
Clasificación del rendimiento del compilador de Rust
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:
Período final de comentarios
Cada semana, el equipo anuncia el 'período final de comentarios' para las RFC y los RP 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.
Tracking Issues & PRs
- [disposición: fusionar] Considere los límites de alias al calcular la vida en NLL (pero esta vez suena con suerte)
- [disposición: cerrar] regresión: el tipo de parámetro puede no vivir lo suficiente
- [disposición: fusionar] Eliminar el soporte para complementos del compilador.
- [disposición: fusionar] rustdoc: Documentar la falta de seguridad de los objetos en los rasgos afectados
- [disposición: fusionar] Estabilizar características de destino RISC-V ratificadas
- [disposición: fusionar] Problema de seguimiento para const mem::d iscriminant
RFC nuevas y actualizadas
- [nuevo] eRFC: #[should_move] atributo para la exclusión voluntaria por función de la semántica de copia
Llamada para 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-10-25 - 2023-11-22 🦀
Virtual
- 30/10/2023 | Virtual (Melbourne, VIC, AU) | Rust Melbourne
- 31/10/2023 | Virtual (Europa / África) | Rust para el almuerzo
- 01/11/2023 | Virtual (Cardiff, Reino Unido)| Rust y C++ Cardiff
- 01/11/2023 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 02/11/2023 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 07/11/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 07/11/2023 | Virtual (Búfalo, NY, EE. UU.) | Reunión de Buffalo Rust
- 09/11/2023 | Virtual (Núremberg, DE) | Rust Nuremberg
- 14/11/2023 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 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
- 07/11/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 21/11/2023 | Virtual (Washington, DC, EE. UU.) | Rust DC
Europa
- 25/10/2023 | Dublín, IE | Rust Dublín
- 25/10/2023 | París, FR | Rust Paris
- 25/10/2023 | Zagreb, RRHH | impl Zagreb para Rust
- 26/10/2023 | Augsburgo, DE | Rust - Programación de sistemas modernos en Leipzig
- 26/10/2023 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 26/10/2023 | Delft, NL | Rust Nederland
- 26/10/2023 | Lille, FR | Rust Lille
- 30/10/2022 | Estocolmo, SE | Estocolmo Rust
- 01/11/2023 | Colonia, DE | Colonia Rust
- 07/11/2023 | Bratislava, SK | Grupo de encuentro de Bratislava Rust
- 07/11/2023 | Bruselas, BE | Rust Aarhus
- 07/11/2023 | Lyon, FR | Rust Lyon
- 09/11/2023 | Barcelona, ES | BcnRust
- 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
- 25/10/2023 | Austin, TX, EE. UU. | Rust ATX
- 25/10/2023 | Chicago, IL, EE. UU. | Rust de plato profundo
- 01/11/2023 | Brookline, MA, EE. UU. | Reunión de Boston Rust
- 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 | 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
Oceanía
- 26/10/2023 | Brisbane, QLD, AU | Rust Brisbane
- 30/10/2023 | Melbourne, VIC, AU + Virtual | Rust Melbourne
- 21/11/2023 | Christchurch, Nueva Zelanda | Grupo de encuentro de Christchurch Rust
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
Cuando los tiempos de compilación de Rust se vuelven más lentos después de agregar algunas macros de procedimiento:
A eso lo llamamos syn tax :ferris:
¡Gracias a Jacob Pratt 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