Esta semana en Rust #8
¡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
- Anunciando axum 0.7.0
- Anuncio de la disponibilidad general del SDK de AWS para Rust
- ripgrep 14.0.0
- Multithreading mejorado en wgpu - La arcanización aterriza en el tronco
- Presentamos SALT: ¡Un tutor de errores de Rust, buscando participantes en un estudio de errores!
- Bionic GPT - Reemplazo de Chat GPT integrado en Rust
- cargo-run-bin: ¿Por qué todo el mundo instala cajas en todo el mundo?
- CXX-Qt: En el camino hacia la estabilidad, soporte de señales mejorado y más en la versión 0.6
- Oatmeal: Terminal UI para chatear con grandes modelos de lenguaje (LLM) utilizando diferentes backends de modelos, e integraciones con tus editores favoritos!
Observaciones/Pensamientos
- Objetivos del proyecto
- poll_next
- [video] Pero, ¿qué es 'toda una vida?'
- [audio] Reclutamiento en Rust con Cedric Sellmann
Tutoriales de Rust
- Diseño de un algoritmo SIMD desde cero
- Por qué las enumeraciones en Rust se sienten mucho mejor
- Cómo uso macros declarativas en Rust
- Embajada en ESP: Primeros pasos
- Introducción a LLVM y MLIR con Rust y Melior
- Investigando tiempos de compilación locos
- [video] Curso de Rust (Parte 2) (Bahasa Indonesia).
Investigación
- Pruebas de refinamiento en Rust usando cerraduras fantasmas
- Fuzzing semántico del compilador e intérprete de Rust
Miscelánea
Crate de la semana
El crate de esta semana es tokio-graceful, una biblioteca para el apagado correcto de servidores asíncronos basados en tokio.
¡Gracias a Glen De Cauwsemaecker 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 - [REFACTOR]: [Nuvei] Validación de metadatos MCA
- Hyperswitch - [Características]: [Mediodía] Sincronización con Hyperswitch Reference
- Hyperswitch - [Características]: [Payme] Sync with Hyperswitch Reference
- Hyperswitch - [BUG]: Los errores de deserialización de metadatos MCA deben ser 4xx
- Hyperswitch - [REFACTOR]: Mensaje de error [Stripe] para la implementación del conector
- Ockam - Biblioteca - Adelgazar el 'NodeManagerWorker' para 'nodo / estado del nodo'
- Ockam - Comando - refactorizar para usar interfaces con tipo para implementar comandos para 'servicios de kafka'
- Ockam - Biblioteca - Validar estructuras CBOR de acuerdo con el esquema cddl para 'nodos/models/transport' y 'nodes/models/workers'
- r3bl-open-core - [tuify] API cambia el tipo de retorno de 'select_from_list()' 3
- r3bl-open-core - Mejorar la plantilla de problema de "Informe de errores"
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
405 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- estabilizar la coerción de conversión de dyn (RFC #3324)
- añadir una puerta de características experimental para la delegación de funciones
- habilitar Rust para usar la función de seguridad EHCont de Windows
- Habilitar perfilador en dist-powerpc64-linux
- habilitar la mitigación de erratas de Arm Cortex-A53 en aarch64-unknown-none
- eliminar el objetivo ahora obsoleto 'x86_64-sun-solaris'
- 'EvalCtxt::commit_if_ok' no hereda objetivos anidados
- 'intercrate_ambiguity_causes': handle self ty infer + reservation impls
- añadir 'Span' a 'TraitBoundModifier'
- añadir 'debug_assert_nounwind' y convertir 'assert_unsafe_precondition'
- agregar lint de permiso por defecto para los enlaces de unidades
- permitir definir opacos en 'check_coroutine_obligations'
- llamar a 'FileEncoder::finish' en la codificación rmeta
- cobertura: simplificar las expresiones de cobertura de edificios basadas en sumas
- No borrar las regiones enlazadas en tiempo de ejecución al seleccionar tipos asociados inherentes
- no ice cuando se encuentre ambigüedad al seleccionar la implementación de 'Índice' en typeck
- no ice ICE cuando encuentre marcadores de posición en el cálculo de límites implícitos
- no consideres los argumentos genéricos de supertrait en 'deref_into_dyn_supertrait' lint
- no requiere el modo de caja para la coherencia negativa
- Cómputo ansiosamente 'output_filenames'
- arreglar la vida útil de los parámetros tempranos en 'generic_const_exprs'
- corrige que la visualización del recuento de errores es diferente cuando solo queda un error
- [Mejorar la ayuda de solo herramientas para múltiples variantes '#[predeterminado]']](https://github.com/rust-lang/rust/pull/118131)
- hacer que PlaceholderReplacer 'shallow_resolver' y se repita cuando se infieran vars
- Nota sobre los valores predeterminados de duración del objeto en el error no vive lo suficiente
- Imprimir mapa de consulta para el interbloqueo cuando se usa el front-end paralelo
- relacionar los tipos asociados inherentes usando la eq
- eliminar '--check-cfg' comprobación de la línea de comandos '--cfg' args
- eliminar 'HirId' de 'QPath::LangItem'
- separar los flotantes 'NaN'/'Inf' con '_'
- sugerir cambiar el orden de 'ref' y 'box'
- el ITB no ajustado necesita pasar agregados por valor
- Ajustar los atributos de enlace para los enlaces LLVM-wrapper
- typeck break expr incluso si break es ilegal
- use una ruta absoluta al dispositivo NUL
- cuando no se puede importar 'core', sugiera 'std'
- añadir 'VarDebugInfo' a la MIR estable
- Agregar soporte para la asignación global en SMIR
- arreglar la bonita impresión de 'Ty::Ref' de smir
- expandir el GC BorTag de Miri a un GC de procedencia
- validar que no hay bordes de llamada críticos en MIR optimizado
- miri: GC el 'dead_alloc_map' también
- miri: compruebe que las características de destino requeridas por los intrínsecos de LLVM están habilitadas
- Miri: refactorizar 'float_to_int_checked' para eliminar su parámetro genérico y reducir un poco la duplicación de código
- caché para 'ty::Const'
- indica que la multiplicación en 'Layout::array' no puede desbordarse
- reescribir la exhaustividad en una sola pasada
- 'AmbiguityCause' no debería formatear ansiosamente las cadenas
- especialice 'SpecFromElem' para '()'
- refactorizar 'binary_search_by' para usar movimientos condicionales
- estabilizar 'ptr::addr_eq'
- add 'BufRead::skip_until'
- kmc-solid: seguridad de E/S
- añadir 'Duración::abs_diff'
- operaciones de conveniencia no nulas
- hashbrown: Especializarse en la implementación de 'plegado' de iteradores
- Elevador de grúa: implemente otro lote de intrínsecos del proveedor
- cargo: 'refactor(toml)': Mejores detalles de herencia abstracta
- cargo: salió con un error grave cuando el archivo de compilación personalizado no existe o no está en el paquete
- carga: añadir 'CARGO_RUSTC_CURRENT_DIR' (inestable)
- cargo: use custom error en lugar de anyhow
- Cargo: Revisar y eliminar las pruebas ignoradas en RustFix
- cargo: intente ejecutarlo en Windows
- rustdoc-search: añadir soporte para rasgos y tipos asociados
- rustdoc-search: evitar la unboxing de la cláusula where infinita
- rustdoc-search: simplifica 'checkPath' y 'sortResults'
- rustdoc: ordenar los elementos inestables al final en lugar del primero
- rustfix: añadir aviso de que rustfix se ha movido
- clippy: 'TypeckResults::node_type()' se puede usar dentro de los cuerpos
- clippy: 'deprecated_semver': Permitir '#[deprecated(since = "TBD")]'
- clippy: 'manual_try_fold': comprueba que 'fold' es realmente 'Iterator::fold'
- clippy: 'missing_asserts_for_indexing': trabaja con cuerpos en lugar de bloques por separado
- clippy: 'needless_return_with_question_mark': no peluar si nunca se usa el tipo para coerción
- clippy: 'ptr_arg': reconoce métodos que también existen en los sectores
- clippy: añadir nueva configuración 'check_private_items'
- clippy: crear nueva pelusa 'option_map_or_err_ok'
- clippy: no sugiera 'a.mul_add(b, c)' si los parámetros no son float
- clippy: extiende 'result_map_or_into_option' lint para manejar 'Result::map_or_else(|_| Ninguno, algunos)'
- clippy: se corrige el comportamiento de 'box_default' con 'vec! []' proveniente de macro arg
- clippy: corrige la sugerencia de 'iter_kv_map' falsos positivos 'into_keys' y 'into_values'
- clippy: mejorar el formato de los mensajes de error
- clippy: eliminar la comprobación de guiones bajos para 'manual_non_exhaustive' lint
- clippy: sugerir alternativas para iterar una matriz de rangos
- clippy: usa la ruta absoluta para 'declare_tool_lint' en 'declare_clippy_lint'
- rust-analyzer: inicialización cancelable
- Rust-analyzer: editor/código: añadir opción para suprimir las notificaciones de error internas
- rust-analyzer: asegúrese de que los cambios de nombre ocurran después de la edición
- Rust-analyzer: Arreglar la resolución de variantes para el alias de tipo
- rust-analyzer: corrección: agregar respaldo para los detalles de la etiqueta de finalización
- Rust-analyzer: corrección: resolver mejor el elemento de asociación con el tipo vinculado
- rust-analyzer: corrección: cajas duplicadas desduplicadas con diferentes orígenes en la construcción de CrateGraph
- Rust-analyzer: corrección: eliminar el paréntesis debe garantizar el espacio
- Rust-Analyzer: Mejorar la visualización de los detalles de la etiqueta de finalización
- rust-analyzer: reemplace 'option.map(cond) == Some(true)' por 'option.is_some_and(cond)'
Clasificación del rendimiento del compilador de Rust
Una buena semana, a pesar de algunos PR que pnkfelix optó por no marcar como clasificados. En
en particular, un amplio conjunto de parámetros de referencia primarios mejoró, debido a las mejoras en la
resolución (PR #118188) y una reescritura de una sola pasada de exhaustividad (PR #117611).
Triaje realizado por @pnkfelix.
Rango de revisión:
4f3da903.. DF0295F0
1 regresiones, 5 mejoras, 5 mixtas; 2 de ellos en rollups
84 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:
- Esta semana no se aprobaron RFC.
Período final de comentarios
Cada semana, el equipo anuncia el 'período final de comentarios' para las RFC y los PR clave
que están llegando a una decisión. Expresa tus opiniones ahora.
RFC
- [disposición: fusionar] Política de edición de especificadores de fragmentos de macros
Seguimiento de problemas y solicitudes de incorporación de cambios
- [disposición: fusionar] [rustdoc] Añadir resaltado para comentarios en la declaración de elementos
- [Disposición: Fusionar] Generalizar: el identificador produce un error de comprobación en los alias
Referencia del idioma
- Ninguna RFC de referencia lingüística entró en el Período Final de Comentarios esta semana.
Directrices de código inseguro
- Ninguna RFC de la Guía de Código Inseguro entró en el Período Final de Comentarios esta semana.
RFC 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 características 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-29 - 2023-12-27 🦀
Virtual
- 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.) | Encuentro de Buffalo Rust
- 06/12/2023 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 10/12/2023 | Virtual (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 12/12/2023 | Virtual | Materia principal
- 12/12/2023 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 2023-12-14| Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 14/12/2023 | Virtual (Núremberg, DE) | Rust Nuremberg
- 17/12/2023 | Virtual (Tel Aviv, IL) | Expertos en código
- 18/12/2023 | Virtual (Múnich, DE) | Rust Múnich
- 19/12/2023 | Virtual (Berlín, DE) | OpenTechSchool Berlín
- 20/12/2023 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
Asia
- 16/12/2023 | Delhi, IN | Rust Delhi
Europa
- 30/11/2023 | Bruselas, BE | Lambda Bruselas
- 30/11/2023 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 30/11/2023 | Viena, AT | Rust Viena
- 30/11/2023 | Zúrich, CH | Rust Zúrich
- 06/12/2023 | Colonia, DE | Colonia Rust
- 07/12/2023 | Aarhus, Dinamarca | Rust Aarhus
- 07/12/2023 | Lille, FR | Rust Lille
- 14/12/2023 | Augsburgo, DE | Rust - Programación de sistemas modernos en Leipzig
- 18/12/2023 | Múnich, DE + Virtual | Rust Múnich
- 19/12/2023 | Heidelberg, DE | Elimina tus insectos y oxida tus motores
- 19/12/2023 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
América del Norte
- 29/11/2023 | Chicago, Illinois, Estados Unidos | Rust de plato profundo
- 30/11/2023 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 07/12/2023 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 12/12/2023 | Seattle, WA, EE. UU. | Cap Hill Rust Codificación/Hackeo/Aprendizaje
- 12/12/2023 | Nueva York, NY, EE. UU. | Rust de Nueva York
- 19/12/2023 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
Oceanía
- 28/11/2023 | Canberra, ACT, AU | Rust Canberra
- 05/12/2023 | Aukland, Nueva Zelanda | Rust AKL
- 11/12/2023 | Perth, WA, AU | Grupo de Meetup de Rust Perth
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 Who's Hiring en r/rust
Frase de la semana
Me gustaría informar que los tiempos de compilación de Rust estuvieron bien hoy, ayer y anteayer.
los mantendré informados.
– ZiCog sobre los lentos tiempos de compilación de Rust en los usuarios de Rust
¡Gracias a Michael Bryan 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