Esta semana en Rust #18
¡Hola y bienvenidos a otro número de This Week in Rust!
Rust
¿Quieres que se mencione algo? Etiquétanos en @ThisWeekInRust en Twitter o @ThisWeekinRust en mastodon.social, o envíanos una solicitud de extracción
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
envíe un PR.
- Anuncio del lanzamiento de la versión beta de Tauri v2
- Polars — Por qué hemos reescrito el tipo de datos de cadena
- registro de cambios de rust-analyzer #219
- Ratatui 0.26.0 - una librería de Rust para cocinar interfaces de usuario de terminales
- ¿Se bloqueará?
- Rust incrustado en producción ..?
- Que los futuros sean futuros
- Compilar Rust es una prueba
- Los frameworks web de Rust tienen informes de errores deficientes
- [video] Probando el rendimiento - FOSDEM 2024 - Rust Dev Room
- [video] Stefan Baumgartner - Pruebas, rasgos y tribulaciones
- [video] Rainer Stropek - Gestión de memoria en Rust
- [video] Shachar Langbeheim - Async & FFI - no es exactamente una historia de amor
- [video] Massimiliano Mantione - Programación Orientada a Objetos, y Rust
- [audio] Desbloqueando el poder de Rust a través de la tutoría y la difusión del conocimiento, con Tim McNamara
- [audio] Asciinema con Marcin Kulik
- Tipos no afines, caídas manuales y tiempos de vida invariantes en Rust - Primera parte
- Nueve reglas para acceder a archivos en la nube desde su código Rust: lecciones prácticas de la actualización de Bed-Reader, una biblioteca de bioinformática
- AsyncWrite y una historia de cuatro implementaciones
- Recolección de basura sin código inseguro
- Especificadores de fragmentos en macros de Rust
- Escribir una API REST en Rust
- [video] Rasgos y operadores
- Escribir un cliente y un servidor netcat simples en Rust
- Anuncio de RustFest 2024
- Preprocesamiento de billones de tokens con Rust (estudio de caso)
- Todas las charlas de EuroRust 2023 ordenadas por el número de visualizaciones
El crate de esta semana es embedded-cli-rs, una biblioteca que facilita la creación de CLI en dispositivos integrados.
¡Gracias a Sviatoslav Kokurin por la autosugestión!
[Por favor, envíen sus sugerencias y votos para la próxima semana] submit_crate!
Algunas de estas tareas también pueden tener mentores disponibles, visite la página de tareas para obtener más información.
- Fluvio - Construir un nuevo envoltorio de python para la caja del cliente fluvio
- Fluvio - Conector MQTT: Prefijo ID de cliente generado automáticamente para evitar caídas de conexión
- Ockam - Implementar eventos en 'SqlxDatabase'
- Ockam - Se ha mejorado la salida tanto para 'ockam project ticket' como para 'ockam project enroll', con soporte para '--output json'
- Ockam - Se ha mejorado la salida del ticket del proyecto ockam y la información no es opaca
- Hyperswitch - [CARACTERÍSTICA]: Cobertura de código de configuración para pruebas locales y CI
- Hyperswitch - [FEATURE]: Tener get_required_value usar ValidationError en OptionExt
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
¿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 están aceptando presentaciones para unirse a su evento como orador.
- RustNL 2024 CFP cierra 2024-02-19 | Delft, Países Bajos | Fecha del evento: 2024-05-07 & 2024-05-08
- NDC Techtown CFP cierra 2024-04-14 | Kongsberg, Noruega | Fecha del evento: 2024-09-09 hasta 2024-09-12
Si usted es un organizador de eventos que espera ampliar el alcance de su evento, envíe un enlace al sitio web de envío a través de un PR a TWiR.
309 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- Agregar AVX512FP16 a las características de destino x86
- RISCV solo soporta 'split_debuginfo=off' por ahora
- target: por defecto al modelo de código medio en los objetivos LoongArch
- '#! [feature(inline_const_pat)]' ya no está incompleto
- en realidad abortar en -Zpanic-abort-tests
- añadir la falta de 'potential_query_instability' para las claves y los valores en el mapa hash
- evite ICE cuando 'is_val_statically_known' no sea de un tipo compatible
- Tenga más cuidado al interpretar una etiqueta/vida como un literal de caracteres mal escrito
- marque 'RUST_BOOTSTRAP_CONFIG' en la prueba 'profile_user_dist'
- Compruebe correctamente la compuerta de la función 'never_type'
- Cobertura: Mejorar el manejo de los intervalos de función/cierre
- Cobertura: usar 'edición' normal: encabezados en las pruebas de cobertura
- deduplicar errores de mayor tamaño en las exprs de llamadas
- 'pattern_analysis': Abortar correctamente en caso de incompatibilidad de tipos
- 'pattern_analysis': manual de limpieza impls
- 'pattern_analysis': limpiar los contextos
- arreglar la falta de solidez de BufReader añadiendo un check en 'default_read_buf'
- arreglar ICE en el acceso de campo en un tipo contaminado después de una falla const-eval
- hir: refactorizar getters para nodos propietarios
- hir: eliminar el parámetro de tipo genérico de 'MaybeOwned'
- Mejorar el diagnóstico de parámetros genéricos no utilizados
- introducir soporte para el modificador enlazado 'async' en los rasgos 'Fn*'
- hacer coincidir en NaN un error grave, y eliminar el resto de 'illegal_floating_point_literal_pattern'
- Hacer que el ID de definición de corrutina de un cierre asíncrono sea el elemento secundario del ID de definición de cierre
- Limpiezas de diagnósticos varios
- mover las pruebas de problemas de la interfaz de usuario a los subdirectorios
- mover cosas de predicado, región y const a sus propios módulos en el medio
- nunca patrones: Es correcto bajar '!' a '_'
- Normalizar la obligación de región en la resolución de regiones léxicas con el solucionador de próxima generación
- solo sugiere la eliminación de los métodos de conversión 'as_*' y 'to_' en E0308
- proporcionar más contexto sobre la etiqueta primaria de error de obligación derivada
- sugerir cambiar el tipo a los parámetros const si encontramos un tipo en la posición ligada al rasgo
- suprimir diagnósticos inútiles para atributos de nivel superior no resueltos
- miri: normalizar la cola de 'estructura' en la comprobación de compatibilidad de ABI
- Miri: Quitando la intercepción 'sched_getaffinity' de Linux'shim, FreeBSD su...
- Miri: Cambiar a la caja de 'rastreo' de Rustc en lugar de usar nuestra propia caja de 'troncos'
- revertir cambios de libcore poco sólidos
- arreglar algunas fugas del asignador 'Arc'
- use '<T, U>' para la igualdad de matriz/segmento 'impl's
- mejorar el caso de error 'io::Read::read_buf_exact'
- rechazar lecturas de tamaño infinito de 'io::Repeat'
- Propuesta de corrección 'thread_local::register_dtor' para FreeBSD
- añadir los tipos LocalWaker y ContextBuilder al núcleo, y el rasgo LocalWake a alllot
- codegen_gcc: mejora el iterador para la supresión de archivos
- cargo: No entres en pánico en los tramos vacíos
- cargo: Mejorar el mensaje de error de mapa/secuencia
- cargo: aplicar '-Zpanic-abort-tests' a doctests también
- Cargo: no imprimir las líneas de comando de Rustdoc en caso de fallo por defecto
- Cargo: Estabilizar Lockfile v4
- cargo: arreglar el salto de línea de rebaja en cargo-add
- cargo: use el ID de especificación en lugar del nombre para que coincida con el paquete
- rustdoc: corregir el manejo de notas al pie
- rustdoc: manejar correctamente la fusión de atributos si se trata de una reexportación global
- rustdoc: evitar la inyección de JS desde localStorage
- rustdoc: trait.impl, type.impl: ordena impls para que no dependa del orden de serialización
- clippy: 'redundant_locals': tener en cuenta las capturas de cierre por valor
- clippy: nueva pelusa: 'manual_c_str_literals'
- clippy: añadir pelusa 'lint_groups_priority'
- clippy: añadir nueva pelusa: 'ref_as_ptr'
- clippy: añadir configuración para que 'wildcard_imports' ignore ciertas importaciones
- clippy: evitar borrar bloques etiquetados
- clippy: se corrigió FP en 'unused_io_amount' para Ok(lit), unrachable! y unwrap de...
- rust-analyzer: Ayuda "Normalizar importación" y utilidades para normalizar árboles de uso
- rust-analyzer: habilitar la exclusión de resultados de búsqueda de referencias en la prueba
- rust-analyzer: soporte para GOTO def desde dentro de los archivos incluidos con la macro 'include!'
- rust-analyzer: emite un error de analizador sintáctico para la lista de argumentos que falta
- rust-analyzer: cambia 'Subtree::token_trees' de 'Vec' a box slice
Triaje realizado por @simulacrum
5c9c3c78.. 0984bec
Los cambios en Rust siguen el proceso de Rust RFC (solicitud de comentarios)
- Esta semana no se aprobaron RFC.
Cada semana, el equipo
- Ninguna RFC entró en el Período de Comentarios Final esta semana.
- [disposición: fusionar] Considerar los superrasgos auto-rasgos de la referencia del rasgo principal en la conversión de dyn
- [disposición: fusionar] eliminar 'sub_relations' de 'InferCtxt'
- [disposición: fusionar] Optimizar los protectores contra venenos cuando std se construye con panic=abort
- [disposición: fusionar] Comprobar la firma de llamada normalizada para WF en mir typeck
- Ninguna RFC de referencia lingüística entró en el Período Final de Comentarios esta semana.
- Ninguna RFC de la Guía de Código Inseguro entró en el Período Final de Comentarios esta semana.
Las RFC se beneficiarían de las pruebas de usuario antes de seguir adelante:
- Ninguna RFC emitió una convocatoria para pruebas esta semana.
necesitan pruebas.
Eventos oxidados entre 2024-02-07 - 2024-03-06 🦀
- 07/02/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 08/02/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 08/02/2024 | Virtual (Nürnberg, DE) | Rust Nüremberg
- 10/02/2024 | Virtual (Cracovia, PL) | Stacja IT Kraków
- 10/02/2024 | Virtual (Wrocław, PL) | Stacja IT Wrocław
- 13/02/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 15/02/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 15/02/2024 | Virtual + Presencial (Praga, CZ) | Rust República Checa
- 19/02/2024 | Virtual (Melbourne, VIC, AU) | Rust Melbourne
- 2024-02-20 | Virtual | Rust para el almuerzo
- 2024-02-21 | Virtual (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 2024-02-21 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 22/02/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 10/02/2024 | Hyderabad, IN | Idioma Rust Hyderabad
- 07/02/2024 | Colonia, DE | Colonia Rust
- 07/02/2024 | Londres, Reino Unido | Grupo de usuarios de Rust London
- 08/02/2024 | Berna, CH | Rust Bern
- 08/02/2024 | Oslo, NO | Rust Oslo
- 13/02/2024 | Trondheim, NO | Rust Trondheim
- 15/02/2024 | Praga, CZ - Virtual + Presencial | Rust República Checa
- 2024-02-21 | Lyon, FR | Rust Lyon
- 22/02/2024 | Aarhus, Dinamarca | Rust Aarhus
- 07/02/2024 | Brookline, MA, EE. UU. | Reunión de Boston Rust
- 08/02/2024 | Lehi, UT, EE. UU. | Rust de Utah
- 12/02/2024 | Minneapolis, MN, EE. UU. | Reunión de Rust en Minneapolis
- 13/02/2024 | Nueva York, NY, EE. UU. | Rust de Nueva York
- 13/02/2024 | Seattle, WA, EE. UU. | Cap Hill Rust Codificación/Hackeo/Aprendizaje
- 15/02/2024 | Boston, MA, EE. UU. | Reunión de Boston Rust
- 15/02/2024 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 2024-02-20 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 22/02/2024 | Mountain View, CA, EE. UU. | Reunión de Rust de Mountain View
- 28/02/2024 | Austin, TX, EE. UU. | Rust ATX
- 19/02/2024 | Melbourne, VIC, AU + Virtual | Rust Melbourne
- 27/02/2024 | Canberra, ACT, AU | Grupo de usuarios de Canberra Rust
- 27/02/2024 | Sídney, Nueva Gales del Sur, Australia | Rust Sydney
Si está ejecutando un evento de Rust, agréguelo al calendario
Envíe un correo electrónico al [Equipo de la comunidad de Rust] comunidad para acceder.
Por favor, vea el último hilo de Quién está contratando en r/rust
Mi opinión sobre esto es que no se puede usar Rust asíncrono de forma correcta y fluida sin entender Arc, Mutex, la mutabilidad de las variables/referencias, y cómo se compila la sintaxis asíncrona y await al final. Rust te obliga a entender cómo y por qué las cosas son como son. Te da una abstracción mínima para hacer cosas que podrían haber sido tediosas de hacer tú mismo.
tuve la oportunidad de trabajar en dos proyectos que me obligaron drásticamente a entender cómo funciona async/await. La primera es transformar una biblioteca que esté completamente sincronizada y solo requiera un rasgo de sincronización para comunicarse con el servicio externo. Todo esto suena bien, ¿verdad? Bueno, esto se convierte en un problema cuando intentamos portarlo a los navegadores. El navegador es de un solo hilo y no puede bloquear el tiempo de ejecución de JavaScript en absoluto. Podría decirse que es el entorno más extraño para los usuarios de Rust. Es simplemente imposible reescribir toda la biblioteca, ya que ya se ha enviado a producción en otras plataformas.
Lo que hicimos en su lugar fue reescribir la parte de red usando sintaxis asíncrona, pero usando nuestro propio generador. La idea es simple: el generador produce un futuro cuando se le llama, y el futuro producido puede ser esperado. ¡Pero! El futuro producido contiene un puntero de arco al generador. Eso significa que podemos alimentar el generador con el valor que estamos esperando, luego la persona que llama que tiene la referencia al generador puede devolver el resultado a la función y reanudarlo. Para el navegador, utilizamos la API nativa del navegador para derivar las comunicaciones de red; Para otras plataformas, solo usamos llamadas de red de bloqueo regulares. La interfaz externa permanece sin cambios para otras plataformas.
Honestamente, no creo que ningún otro lenguaje pueda hacer esto. Tal vez C o C++, pero que nunca tendrán la misma velocidad de desarrollo y experiencia de desarrollador.
creo que la gente ya lo ha mencionado, pero el modelo asíncrono actual de Rust es la opción más razonable. Crea problemas para los desarrolladores, pero, por otro lado, no hay un mejor modelo asincrónico para Embedded o WebAssembly.
– /u/Top_Outlandishness78 en /r/rust
¡Gracias a Brian Kung 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