Esta semana en Rust #26
¡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 (anteriormente 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
- Reescritura de crujidos
- iroh 0.19.0 - Hazlo tuyo
- Anuncio de Polars 1.0
- registro de cambios de rust-analyzer #240
- Publicado r3bl_cmdr v0.0.14
- Publicado r3bl_tui v0.5.6
- Danubio - Corredor de mensajería Pub/Sub
- what-the-time 1.0.0
- Meilisearch versiones v1.9
- Derive-Deftly (la función de macro derivada basada en plantillas) se acerca a 1.x - Llamada para revisión/prueba
Observaciones/Pensamientos
- Tipos ergonómicos autorreferenciales para Rust
- Más reflexiones sobre la afirmación
- Cierres asíncronos
- ¡Rust tiene tres tipos de referencia!
- sans-IO: El secreto de un Rust efectivo para los servicios de red
- [audio] OxidOS con Alexandru Radovici
Tutoriales de Rust
- Resolviendo símbolos de Rust
- #! [doc = include_str! ()] con enlaces intra-doc
- La configuración mínima de Rust-wasm
- Build with Naz : Markdown parser en Rust y nom from r3bl_tui
- Adición de seguridad en tiempo de compilación al SDK de AWS con el rasgo Visit de syn
- Adición de soporte de GraphQL a Loco con Seaography
- Patrones de Rust: No ponga ningún código en mod.rs o lib.rs archivos
- [serie] Maestro de la arquitectura hexagonal en Rust (parte 3): 'Servicio', el corazón de la arquitectura hexagonal
Miscelánea
- FizzBuzz Multithreaded - sincronización con canales de encuentro
- [video] Zelda Hessler habla sobre el SDK de AWS para Rust
Crate de la semana
El crate de esta semana es asak, una TUI de grabación/reproducción de audio basada en terminal.
A pesar de la lamentable falta de sugerencias esta semana, llogiq está razonablemente satisfecho con su elección.
[Por favor, envíe sus sugerencias y votos para la próxima semana] submit_crate!
Llamadas a la prueba
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 llamados para pruebas esta semana.
Rust
- No se emitieron llamados para pruebas esta semana.
Oxidación
- No se emitieron llamados 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.
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 a TWiR o poniéndote en contacto con X (Anteriormente 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 con X (anteriormente twitter) o Mastodon!
Actualizaciones del Proyecto Rust
408 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- 'rustc_data_structures': Comprobar explícitamente la compatibilidad con atomics de 64 bits
- añadir '()' a la macro 'marker_impls' para 'ConstParamTy'
- añadir el archivo '.ignore' para hacer que 'config.toml' se pueda buscar en vscode
- añadir más constantes, funciones y pruebas para 'f16' y 'f128'
- AST: Estandarizar el orden de visita
- ast: estandarizar el orden de visita para atributos e ID de nodo
- contaminar automáticamente InferCtxt cuando se emiten errores
- evite la hinchazón MIR en línea
- evite clonar el estado de subproceso de salto cuando sea posible
- Cobertura: evitar obtener información adicional de desexpansión cuando no la necesitamos
- cobertura: hacer '#[cobertura(..)] ' aplicar recursivamente a funciones anidadas
- de-duplicar todas las bibliotecas nativas consecutivas independientemente de sus opciones
- Delegación: Refactorización de la reducción de AST
- denegar el 'uso<>' para los RPITITs
- detectar estructuras no utilizadas que derivaron de Default
- no hacer ICE cuando sugiera desreferenciar el argumento de cierre
- no ice durante el refinamiento de RPITIT la verificación de errores de resolución después de la normalización
- no sugiera esperar en patrones de cierre
- eliminar la distinción entre el nivel de precedencia 'PREC_POSTFIX' y 'PREC_PAREN'
- habilitar la transmisión const para 'f16' y 'f128'
- arreglar el código 'x86_64' que se producía para los objetivos LoongArch 'compiler_builtins'
- corrige una sugerencia de error para E0121 cuando se usa el marcador de posición '_' como tipos de retorno en la firma de la función
- Arreglar el mal reemplazo para la sugerencia de bloqueo externo inseguro
- prefiera '(*p).clone' a 'p.clone' si la 'p' es un puntero sin procesar
- ignorar 'llvm::Lld' si lld no está habilitado
- implementar nuevos efectos de desazucarado
- Mejorar los diagnósticos de bloqueos externos inseguros
- introducir un atributo 'rustc_' para volcar todos los padres 'DefId' de un 'DefId'
- menos 'maybe_whole_expr', toma 2
- vamos a '#[esperar]' algunas pelusas: Estabilizar 'lint_reasons' (RFC 2383)
- linker: refactorizar la interfaz para pasar argumentos al enlazador
- hacer que 'feature(effects)' require '-Znext-solver'
- hacer que el submódulo de carga sea opcional
- Mark assoc tys live solo si el rasgo correspondiente está activo
- mover el aglutinador y el análisis de polaridad a 'parse_generic_ty_bound'
- no usar desplazamiento cuando no hay terminaciones con llave
- patchable-function-entry: add unstable compiler flag and attribute
- imprime 'TypeId' como 'u128' para 'Debug'
- un-inseguro el rasgo 'StableOrd'
- eliminar (obsoletos e inestables) los métodos de puntero '{a,desde}_bits'
- eliminar las rutas ICE 'f16' y 'f128' de smir
- eliminar más lanzamientos de 'PtrToPtr' en GVN
- eliminar SeqCst innecesario en 'impl fmt::P ointer for AtomicPtr'
- Resolver: modificar algunos nombres en torno a las ambigüedades de importación
- muestra el tipo de atributo utilizado para el usuario cuando se encuentra que no se aplica a una variable 'estática'
- detener la instancia de computación para eliminar la corrección de compatibilidad hasta que no tenga parámetros const sin sustituir
- admite la obtención de 'Atributo' de elementos
- Volver a cambiar 'non_local_definitions' lint a permitir por defecto
- apretar 'fn_decl_span' para bloques asíncronos
- Comprobación de tamaño de transmutación: tenga en cuenta correctamente la alineación
- modificar 'FlatPat::new' para evitar un estado temporalmente inválido
- modificar un comentario confuso en 'create_match_candidates'
- unificar 'dylib' y 'bin_helpers' y crear 'shared_helpers::p arse_value_from_args'
- use 'clang-format' en 'tidy' para verificar el estilo de código C++ en 'llvm-wrapper'
- use full expr span para la sugerencia de devolución en error de tipo/ambigüedad
- varias limpiezas de 'rustc_codegen_ssa'
- varias refactorizaciones a 'rustc_interface'
- Miri: 'iter_exported_symbols': también camina con estática usada en la caja local
- miri: eliminar la comprobación 'frame_in_std' de GetCurrentProcessId
- estabilizar 'PanicInfo::message()' y 'PanicMessage'
- estabilizar 'duration_abs_diff'
- marque 'Hasher::finish' como '#[must_use]'
- std: creación de clave TLS separada del acceso TLS
- cargo: permitir pelusa 'unexpected_builtin_cfgs' en la prueba 'user_specific_cfgs'
- Cargo: Gix: Eliminar la función de 'revisión' de Cargo
- cargo: dejar claro que 'CARGO_CFG_TARGET_FAMILY' es multivalor
- cargo: prueba: arreglar varias aserciones
- cargo: test: omitir el nombre del directorio objetivo
- cargo: prueba: reemplazar glob con llamadas explícitas no ordenadas
- rustdoc: comprueba si el desambiguador coincide con su sufijo
- clippy: 'doc_lazy_continuation': línea de comentario en blanco para el espacio
- clippy: agregar mensaje de error a 'manual_inspect' lint
- clippy: no pelute 'assertions_on_constants' en ninguna afirmación const
- clippy: arreglar el falso positivo de DevOps 'doc_markdown'
- clippy: implementa una pelusa para reemplazar las rotaciones manuales de las brocas con 'rotate_left/rot...'
- rust-analyzer: no normalizar 'use foo::{self}' a 'use foo'
- Rust-analyzer: agregue asistencia 'bool_to_enum' para los parámetros
- rust-analyzer: finalizaciones después de kw asíncrono
- rust-analyzer: se corrige el cálculo del alcance de la expresión cuando se está dentro de las expansiones de macros
- rust-analyzer: pasar args extra de carga al depurar
- Analizador de Rust: Mejoras en la calidad de vida de la búsqueda de términos
- rust-analyzer: use los 'ImplTraits' adecuados en 'insert_inference_vars_for_impl_trait'
Clasificación del rendimiento del compilador de Rust
2024-07-02 Registro de triaje
Vimos una gran regresión de un gran conjunto de puntos de referencia primarios, principalmente debido a PR #120924 ('lint_reasons' y '#[expect]') y PR #120639 (nuevos efectos desazucarado). Aparte de esos, hay un par de PR acumulativos (#127076, #127096) con algunas regresiones que se limitaron a relativamente pocos puntos de referencia; pnkfelix no pudo aislar una inyección de PR que se puede identificar como una causa raíz (¡la asistencia externa es bienvenida!).
Triaje realizado por @pnkfelix. Rango de revisión: c3d7fb39.. CF2DF68D
4 regresiones, 3 mejoras, 11 mixtas; 7 de ellos en rollups 59 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: #[derivar(SmartPointer)]
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Problema de seguimiento para conversiones de caracteres const
- [disposición: fusionar] No hacer que la declaración nonterminals coincida con el patrón nonterminals
- [disposición: fusionar] Permitir '#[denegar]' dentro de '#[prohibir]' como no-op
- [disposición: fusionar] Problema de seguimiento para el atributo de función '#[cobertura]'
- [disposición: fusionar] Golpea 'elided_lifetimes_in_associated_constant' para denegar
- [disposición: fusionar] Problema de seguimiento para 'const_cstr_from_ptr'
- [disposición: fusionar] Denegar la vida útil de las palabras clave antes de la expansión
Carga
- No hay problemas de seguimiento de carga ni PR ingresaron al período de comentarios finales esta semana.
Equipo lingüístico
- No hubo problemas de seguimiento de equipos lingüísticos ni relaciones públicas en el período de comentarios finales esta semana.
Referencia lingüística
- No hay problemas de seguimiento de referencias lingüísticas ni PR ingresados al período de comentarios finales esta semana.
Directrices para códigos inseguros
- No hay problemas de seguimiento de pautas de código inseguro o PR ingresados al período de comentarios finales esta semana.
RFC nuevas y actualizadas
- [nuevo] Cierres asíncronos
Próximos eventos
Eventos de Rusty entre 2024-07-03 - 2024-07-31 🦀
Virtual
- 03/07/2024 | Virtual | Capacitación 4 Programadores LLC
- 03/07/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 04/07/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 06/07/2024 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 09/07/2024 | Virtual | Rust para el almuerzo
- 09/07/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 10/07/2024 | Virtual | Centro de Investigación Electrónica
- 11/07/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Rust en Charlottesville
- 11/07/2024 | Híbrido - Virtual y Presencial (Ciudad de México, DF, MX) | Rust MX
- 11/07/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 11/07/2024 | Virtual (Tel Aviv, Illinois) | Expertos en código
- 16/07/2024 | Virtual (Tel Aviv, Illinois) | Expertos en código
- 17/07/2024 | Híbrido - Virtual y Presencial (Vancouver, BC, CA) | Rust de Vancouver
- 18/07/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 23/07/2024| Híbrido: virtual y presencial (Múnich/Múnich, DE) | Rust Múnich
- 24/07/2024 | Virtual | Mujeres en Rust
- 25/07/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Rust en Charlottesville
- 27/07/2024 | Híbrido - Virtual y Presencial (Kiev, UA) | Rust de UA
- 30/07/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
Asia
- 03/07/2024 | Tokio, JP | Encuentro de Rust en Tokio
Europa
- 10/07/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 11/07/2024 | Praga, CZ | Rust de Praga
- 16/07/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
- 16/07/2024 | Mannheim, DE | Hackschool - Rhein-Neckar
- 23/07/2024 | Híbrido: virtual y presencial (Múnich/Múnich, DE) | Rust Múnich
- 25/07/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 27/07/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 30/07/2024 | Basilea, CH | Basilea Rust
América del Norte
- 05/07/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 11/07/2024 | Híbrido - Ciudad de México, DF, MX | Rust MX
- 11/07/2024 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 17/07/2024 | Híbrido - Vancouver, Columbia Británica, CA | Rust de Vancouver
- 18/07/2024 | Nashville, Tennessee, Estados Unidos | Desarrolladores de Music City Rust
- 18/07/2024 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 24/07/2024 | Austin, TX, EE. UU. | Oxidar ATC
- 27/07/2024 | Híbrido - Virtual y Presencial (Kiev, UA) | Rust de UA
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 obtener acceso.
Empleos
Por favor, consulte el último hilo de Who's Hiring en r/rust
Frase de la semana
el compilador generalmente no se queja de que [usted] tenga un comportamiento indefinido porque no sabe que está teniendo un comportamiento indefinido.
¡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