Esta semana en Rust #14
¡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
- Planificación trimestral ESP-RS: 1T 2024
- Meilisearch 1.6 - Búsqueda con IA e indexación 2 veces más rápida
- Capnproto-rust: 0.19 - colocadores ergonómicos y reflexión más rápida
- Hyper - 2023 en revisión
Observaciones/Pensamientos
- Una estrategia de reducción universal para los efectos de control en Rust
- No aprobar nada es sorprendentemente difícil
- La memoria permanece: Memoria permanente con systemd y un asignador de Rust
- Lo más destacado de 2023 para los controles de carga
- La perdición de mi existencia: Soportar código asíncrono y sincronizado en Rust
- Una guía para los ORM de Rust en 2024
- Búsqueda semántica impulsada por WASM y WebGPU
- Embajada en ESP: UART Echo
Tutoriales de Rust
- Aventuras en la serialización binaria
- Creación de 2 asignadores 'simples'
- Macros de Rust y Lambda repetitivas
- Hagamos una pantalla de información en rust Part 2: The Frontend
Miscelánea
- Clap - subcomandos para aplicaciones de línea de comandos en Rust
- SurrealDB in-memory con demostración de SQL en Rust
- Contador múltiple con base de datos SurrealDB integrada
- Planes Xilem 2024
- Rustáceos, digan adiós a los errores de por vida: anunciando nolife 0.3
- Servicio API de generación automática usando Rust, a TypeScript y Dart
- De la comunidad de Rust en Reddit: Rust in Aviation
- [audio] Apollo - Rust in Production Podcast
- [audio] Prossimo con Josh Aas
Crate de la semana
El crate de esta semana es fish, una *jodidamente interactiva shell que solía estar escrita en C++, pero que fue reescrita recientemente en Rust (aunque hay que admitir que tendrán que hacer algo de trabajo hasta que llegue a los repositorios de tu distribución).
A pesar de la lamentable falta de sugerencias, llogiq está razonablemente satisfecho con su elección.
[Por favor, envíen sus sugerencias y votos para la próxima semana] submit_crate!
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 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.
- ZeroCopy - Use cargo-semver-checks para asegurarse de que la función 'derivar' no cambie la superficie de la API 2
- Ockam - La función 'remove_address_record' se llama dos veces por dirección durante el apagado del procesador
- 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/modelos/servicios'
- Hyperswitch - [CARACTERÍSTICA]: Hacer que la configuración de caché sea configurable en tiempo de ejecución
- Hyperswitch - [CARACTERÍSTICA]: Implementar Code cov para el sistema local usando makefile
- Hyperswitch - [CARACTERÍSTICA]: Cobertura de código de configuración para pruebas locales y CI
- Hyperswitch - [CARACTERÍSTICA]: Agregar tipo de dominio para el secreto de cliente
- Hyperswitch - [FEATURE]: Tener get_required_value usar ValidationError en OptionExt
- Fluvio - conector: fluvio-http-source, añadir una opción para leer datos de un websocket
- Fluvio - Conector MQTT: Prefijo ID de cliente generado automáticamente para evitar caídas de conexión
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
Actualizaciones del Proyecto Rust
418 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- GNU/Hurd: usar incondicionalmente sondas de pila en línea
- 'rustc_codegen_ssa': Forzar 'rustc::p otential_query_instability' lint
- '~const' rasgo y límites de proyección no implican sus contrapartes no const
- add assume into 'NonZeroIntX::get'
- añadir una variante de valor explícita 'none()' en check-cfg
- añadir más información a 'visit_projection_elem'
- permitir '~const' en los límites de tipo asociados de nuevo
- evite silenciar los errores de seguimiento relevantes
- Compruebe las pelusas oxidadas cuando se detecte una pelusa desconocida
- Cobertura: agregar enumeraciones para acomodar otros tipos de asignaciones de cobertura
- cobertura: simplifique la construcción del gráfico de cobertura con 'CoverageSuccessors'
- Implementación de la delegación: Paso 1
- no permitir la referencia a 'static mut' y agregar 'static_mut_ref' lint
- no haga ICE al anotar los límites de GAT en 'report_no_match_method_error'
- No reexportar 'atomic::ordering' a través de 'rustc_data_structures', usar STD Import
- excluir nombres conocidos de mostrar una sugerencia en check-cfg
- exhaustividad: abortar en caso de error de tipo
- exhaustividad: rastree los rangos superpuestos con precisión
- exhaustividad: use una 'Opción' en lugar de asignar patrones ficticios
- corregir ICE al sugerir la desreferenciación de operandos binop
- corrige los métodos 'all_trait*' para devolver todos los rasgos disponibles en StableMIR
- corregir 'allow_internal_unstable' para '(min_)especialización'
- arreglar el manejo de direcciones especiales 'is_global'
- soluciona el problema de 'unused_parens' cuando se sigue el lanzamiento LT
- arreglar un ICE que ocurre después de que ya se ha reportado un error
- nuevo indicador para emitir todos los errores retrasados como errores (añadir '-Zeagerly-emit-delayed-bugs')
- hacer que 'Usuario' <T>y 'Usuario<[T]> Enviar'
- Fusionar la poda de BB muerta y la deduplicación de BB inalcanzable
- nunca patrones: Comprobar las encuadernaciones con los patrones nunca
- devolver el mensaje de error de LLVM al contenedor de paso
- registrar incluso los impls erróneos
- remove '-Zdont-buffer-diagnostics'
- dejar de mencionar los elementos de idioma internos en los errores binarios 'no_std'
- almacenar el nombre del segmento cuando falla la resolución
- sugerir la actualización del compilador para las características cerradas
- sugerir que se citen las identificaciones sin comillas en los attrs
- Admite llamadas recursivas asíncronas (siempre que tengan direccionamiento indirecto)
- taint '_' tipos de marcador de posición en firmas de método de impl de rasgo
- unificar el modo de canonicalización de consultas
- eliminar una gran cantidad de enteros codificados LEB128
- varargs soporte para ABI del sistema
- Estabilizar la función 'mutex_unpoison'
- Una implementación de comparación de segmentos más eficiente para T: ! BytewiseEq
- ajustar la inlinabilidad de 'unwrap'
- metadatos de carga: Estabilizar el formato de identificación como PackageIDSpec
- Resolución de carga: no entres en pánico al clasificar resúmenes vacíos
- Cargo: Agregue orientación sobre la configuración de la página de inicio en el manifiesto
- cargo: añadir la opción inestable '--output-format' a 'cargo rustdoc'
- cargo: crates-io: set 'Content-Type: application/json' solo para solicitudes con una carga útil de cuerpo
- cargo: añadir errores de estilo 'rustc' para el análisis de manifiestos
- cargo: solo heredar la tabla de paquetes del espacio de trabajo si el nuevo paquete es miembro
- cargo: la implementación de libgit2 superficial se encuentra detrás de una bandera inestable
- cargo: introduce la bandera inestable '-Zprecise-pre-release'
- cargo: eliminar debuginfo cuando no se solicita debuginfo
- rustdoc-search: reutilizar tipos individuales en firmas de funciones
- clippy: 'from_over_into': sugiere una conversión correcta a ()
- clippy: 'useless_asref': comprueba que el receptor del clon es el parámetro
- clippy: sugerir correctamente la ruta 'std' o 'core' dependiendo de si se trata de una caja 'no_std'
- clippy: extender 'useless_asref' lint en 'map(clone)'
- clippy: corrige falso positivo en la verificación 'PartialEq' en 'unconditional_recursion' lint
- clippy: se corrige la sugerencia para 'map_clone' lint en los tipos que implementan 'Copy'
- clippy: hacer que 'HirEqInterExpr::eq_block' tenga en cuenta los comentarios mientras se comprueba si dos bloques son iguales
- rust-analyzer: añadir el predicado 'notable_trait' a 'CompletionRelevance'
- [rust-analyzer: ayuda a fusionar si] anidado si](https://github.com/rust-lang/rust-analyzer/pull/16209)
- rust-analyzer: reconoce las importaciones de 'pub(crate)' en las sugerencias de importación
- Rust-Analyzer: Diferenciar entre la carga de configuración de VFS y los eventos de cambio de archivo
- rust-analyzer: arreglar la implementación de 'ast::P ath::segments'
- rust-analyzer: corrige un error de análisis incorrecto en la llamada al método en el rango
- rust-analyzer: fix nested incluye resolver desde el archivo base incorrecto
- rust-analyzer: arreglar rust-analyzer-proc-macro-srv que no aparece en Windows
- rust-analyzer: conserva los comentarios para la expresión de bloque extraída en ''extract_function''
- rust-analyzer: eliminar el indicador de función sysroot-abi de proc-macro-test
- rust-analyzer: reemplace la salida del hashset SourceRootCrates con slice para un orden determinista
- rust-analyzer: resolver el pánico en 'generate_delegate_methods'
Clasificación del rendimiento del compilador de Rust
Esta semana hubo algunas pequeñas regresiones que no ameritaron una mayor investigación, varios de los cuales fueron descartados por ser ruido/blips en los datos. Había también una serie de ganancias. (No te entusiasmes con esa mejora del 20,6%, es una artefacto de medición de un parpadeo temporal en el PR que precedió inmediatamente el triaje de esta semana).
Triaje realizado por @pnkfelix. Rango de revisión: 76101eec.. F9C2421A
3 regresiones, 5 mejoras, 5 mixtas; 3 de ellos en rollups 55 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:
- RFC: Actualización precisa de la carga previa a la liberación
- Agregar RFC que combina los equipos de Infraestructura y Lanzamiento
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] Evitar definiciones no locales en funciones
Seguimiento de problemas y solicitudes de incorporación de cambios
- [disposición: fusionar] Estabilizar offset_of de un solo campo
- [disposición: fusionar] Dejar de usar lint 'unstable_features' y usarlo en el compilador
- [disposición: cerrar] Corregir 'non_camel_case_types' para gritar palabras sueltas
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 2024-01-17 - 2024-02-14 🦀
Virtual
- 17/01/2024 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 23/01/2024 | Virtual (Halifax, NS, CA) | Rust Halifax
- 24/01/2024 | Virtual (Berlín, DE) | Comunidad WeAreDevelopers
- 25/01/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 25/01/2024 | Virtual (Ciudad de México, DF, MX) | Rust MX
- 28/01/2024 | Virtual (Wrocław, PL) | Stacja IT Wrocław
- 30/01/2024 | Virtual | Desarrollo de juegos Bevy
- 30/01/2024 | Virtual (Búfalo, NY, EE. UU.) | Grupo de usuarios de Buffalo Rust
- 30/01/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 31/01/2024 | Virtual (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 01/02/2024 | Virtual + Presencial (Barcelona, ES) | BcnRust
- 01/02/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 03/02/2024 | Virtual + Presencial (Bruselas, Bélgica) | FOSDEM 2024
- 03/02/2024 | Virtual (Kampala, UG) | Círculo de Rust
- 04/02/2024 | Virtual | Especialista en Rust
- 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 (Wrocław, PL) | Stacja IT Wrocław
- 13/02/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
Europa
- 17/01/2024 | Girona, ES | Rust Girona
- 17/01/2024 | Praga / Praga, CZ | Rust Praga
- 17/01/2024 | Zúrich, CH | Rust Zúrich
- 23/01/2024 | Aarhus, Dinamarca | Rust Aarhus
- 23/01/2024 | París, FR | Rust Paris
- 24/01/2024 | Zagreb, RRHH | impl Zagreb para Rust
- 25/01/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 25/01/2024 | Viena, AT | Rust Viena
- 01/02/2024 | Híbrido (Barcelona, ES) | BcnRust
- 03/02/2024 | Bruselas, BE | FOSDEM '24
- 06/02/2024 | Bremen, DE | Encuentro de Rust Bremen
- 07/02/2024 | Londres, Reino Unido | Grupo de usuarios de Rust London
- 08/02/2024 | Berna, CH | Rust Bern
América del Norte
- 17/01/2024 | Chicago, Illinois, Estados Unidos | Rust de plato profundo
- 18/01/2024 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 2024-01-22 | Boston, MA, EE. UU. | Reunión de Boston Rust
- 24/01/2024 | Austin, TX, EE. UU. | Rust ATX
- 2024-01-27-28 | Calgary, AB, CA | Rust Calgary
- 30/01/2024 | Cambridge, MA, EE. UU. | Reunión de Boston Rust
- 07/02/2024 | Brookline, MA, EE. UU. | Reunión de Boston Rust
- 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
Oceanía
- 06/02/2024 | Perth, WA, AU | Grupo de reunión de Perth 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
Felicitaciones a la comunidad de #Rustlang y #Rust para #Linux: ¡el #LinuxKernel ahora contiene la primera cosa útil construida con Rust!
– Thorsten Leemhuis en FOSStodon
Al igual que con la caja de la semana, esta semana ha habido una falta total de sugerencias, por lo que llogiq quiere ofreceros esta buena noticia desde el punto de vista de Linux.
¡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