Esta semana en Rust #20
¡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 🥰
Boletines informativos
Actualizaciones de proyectos/herramientas
- Publicado r3bl_trerminal_async v0.5.1
- minbpe-rs v0.1.0: Puerto de 'minbpe' de Andrej Karpathy a Rust
- Retención de mensajes y reproducción con Selium
Observaciones/Pensamientos
- Dejar el desarrollo de juegos de Rust después de 3 años
- Las tareas son una abstracción incorrecta
- ¿Go o Rust? Solo escucha a los bots
- Descifrando el Críptico (con Z3 y Rust)
- Entonces, quieres escribir una caja insegura
- Diseño de un diseño de memoria eficiente en Rust con uniones y unsafes, o una guía demasiado larga para evitar el envío dinámico
- Microservicios basados en eventos usando Kafka y Rust
- Escribir aserciones asíncronas ergonómicas en Rust
- Hacer un script de análisis HTML cien veces más rápido con Rayon
- Estabilidad de binarios de Rust
- [audio] Ratatui con Orhun Parmaksiz :: Estación Rustácea
- La guía del programador mediocre de Rust
Tutoriales de Rust
- Mejorar la experiencia de desarrollo con Serverless Rust en RustRover
- developerlife.com - Polimorfismo de Rust, dyn, impl, uso de rasgos existentes, objetos de rasgos para pruebas y extensibilidad
- Optimización del rendimiento con flamegraph y Divan
Investigación
Miscelánea
- Escribir un tiempo de ejecución de Wasm en Rust
- Patrocinador de GitHub: desarrollador de Rust, Andrew Gallant (BurntSushi)
- Dando a Rust una oportunidad para códecs en el kernel
- Zed Decodificado: Cuerda y SumTree
- Un Iterador de Fibonacci casi infinito
- [video] De C a Rust: Trayendo abstracciones de Rust a Linux embebido
Crate de la semana
El crate de esta semana es efs, una implementación del sistema de archivos ext2 sin estándar con planes para agregar otros sistemas de archivos en el futuro.
Otra semana completamente desprovista de sugerencias, pero Llogiq mantiene la esperanza de no tener que buscar la caja de la próxima semana por sí mismo.
[Por favor, envíen sus sugerencias y votos para la próxima semana] submit_crate!
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:
- No se emitieron convocatorias 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.
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.
- Esta semana no se han presentado convocatorias ni presentaciones.
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
CFP - Ponentes
¿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.
- EuroRust 2024| Cierra el 03/06/2024 | Viena, Austria y en línea | Fecha del evento: 2024-10-10
- Computación científica en Rust 2024| Cierra 14/06/2024 | En línea | Fecha del evento: 2024-07-17 - 2024-07-19
- Conf42 Rustlang 2024 | Cierra 2024-07-22 | En línea | Fecha del evento: 2024-08-22
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.
Actualizaciones del Proyecto Rust
Se presentaron 409 solicitudes de incorporación de cambios [fusionadas en la última semana][fusionadas]
- abortar un proceso cuando se viola la propiedad de FD
- Se ha añadido soporte para que las pruebas unitarias run-make-support se ejecuten con bootstrap
- ast: generalizar el tipo de visita de artículos
- Cobertura: Evite los valores codificados de forma rígida al visitar operaciones lógicas
- cobertura: reemplace las opciones booleanas con una enumeración 'CoverageLevel'
- debuginfo: estabilizar '-Z debug-macros', '-Z collapse-macro-debuginfo' y '#[collapse_debuginfo]'
- delegación: admite el cambio de nombre, y funciones asíncronas, const, extern "ABI" y C-variádicas
- denigrar palabra clave en 'edition_2024_compat' lints
- deref patterns: lower deref patterns to MIR
- detectar un error de préstamo que involucre sub-rebanadas y sugerir 'split_at_mut'
- no permitir atributos ambiguos en expresiones
- no ICE en consts no válidas al caminar bloques mono-alcanzables
- no ice cuando 'codegen_select_candidate' devuelva ambigüedad en el nuevo solucionador
- no es fatal al llamar a 'expect_one_of' al recuperar arg en 'parse_seq'
- forzar el cierre de los argumentos + el tipo de retorno son WF
- arreglar ICE en tipos de parámetros const no válidos
- arreglar ICE cuando la cola ADT tiene un error de tipo
- corregir un error de memoria débil en TLS en Windows
- Mejorar el diagnóstico para la solicitud desconocida '--print'
- mejorar el manejo de errores expr→field
- marcar uniones no propagables por const en 'KnownPanicsLint' sin llamar a layout
- paréntesis de letra bonita alrededor del binario en la coincidencia de sufijo
- proporcionar más contexto y sugerencias en los errores de Borrowck que involucran cierres
- Registrar la certeza de la llamada 'evaluate_added_goals_and_make_canonical_response' en el candidato
- eliminar mayúsculas y minúsculas especiales para 'SimplifiedType' para el siguiente solucionador
- cambiar el nombre de 'inhibit_union_abi_opt()' a 'inhibits_union_abi_opt()'
- renombrado 'DerivedObligation' a 'WellFormedDeriveObligation'
- Requerir que se marquen explícitamente los cierres como corrutinas
- restringir la promoción de las llamadas 'const fn'
- establecer los atributos escribibles y 'dead_on_unwind' para los argumentos sret
- Fortalecer la política de seguimiento de problemas con consecuencias
- sugerir ref mut para la asignación de coincidencia de patrones
- sugerir el uso de argumentos de tipo directamente en lugar de la restricción de igualdad
- use el cumplimiento en la sonda del método, no en la evaluación
- Usar sondas de forma más agresiva en el nuevo solucionador
- no se permite que los elementos de idioma débil sean '#[track_caller]'
- miri: detectar vtables incorrectos en punteros anchos
- miri: 'unix_sigpipe': no inserte DEFAULT, solo úselo desde rustc
- miri: añadir '-Zmiri-env-set' para establecer variables de entorno sin modificar el entorno host
- miri env: dividir el manejo de variables de entorno de Windows y Unix
- miri: Descriptores de archivo: make write take &mut self
- miri: implementar intrínsecos LLVM x86 AVX2
- miri: Hacer que Miri-Script sea una raíz del espacio de trabajo
- miri: usa la variable TZ del programa interpretado en 'localtime_r'
- miri: windows: soporte básico para GetUserProfileDirectoryW
- estabilizar 'inline_const'
- estabilizar 'Utf8Chunks'
- estabilizar 'non_null_convenience'
- estabilizar 'std::p ath::absolute'
- estabilizar 'io_error_downcast'
- deLLVMize some intrínsecos (use 'u32' en lugar de 'Self' en algunos intrínsecos enteros)
- dejar de usar los tipos 'struct' de LLVM para alloca
- 'thread_local': ser insoportablemente explícito en el código dtor
- arreglar 'offset_of!' devolviendo un temporal
- relax 'A: Clone' con destino a 'rc::Weak::into_raw_and_alloc'
- 'PathBuf': reemplaza la transmutación por funciones de acceso
- codegen_gcc: algunas correcciones para aarch64
- codegen_gcc: algunas correcciones y soluciones más para Aarch64
- cargo: alias: Los alias sin subcomandos no deben entrar en pánico
- cargo: pelusas: no siempre heredan pelusas del espacio de trabajo
- instalación de cargo: No respetar MSRV para instalaciones no locales
- cargo toml: Sé más contundente con la redundancia de guión bajo/guión
- cargo toml: No advertir dos veces cuando se usa un guión bajo en el espacio de trabajo dep
- cargo toml: Eliminar el soporte de campo de subrayado en 2024
- cargo toml: Advertir, en lugar de fallar la publicación, si se excluye un objetivo
- cargo toml: Eliminar el soporte para heredar insignias
- cargo: tenga en cuenta dónde se colocó la pelusa
- cargo: Sistema de limpieza de revestimientos
- cargo: arreglar la entrada de destino en .gitignore
- cargo: Corregir la supresión de advertencias para config.toml vs enlaces simbólicos de compatibilidad con configuración
- bindgen: añadir carga dinámica de variable
- bindgen: eliminar qué dependencia
- bindgen: simplificar la conversión de objetivos de Rust a Clang
- clippy: 'single_match'('_else') puede ser aplicable a la máquina
- clippy: 'non_canonical_partial_ord_impl': Se corrigen las advertencias que entran en conflicto con 'needless_return'
- clippy: 'type_complexity': Corregir errores duplicados
- clippy: comprobar si el cierre como método arg tiene acceso de lectura en 'collection_is_never_read'
- clippy: permite de forma configurable 'useless_vec' en las pruebas
- clippy: arreglar el linaje 'large_stack_arrays' en la macro 'vec'
- clippy: corregir falso positivo en 'cast_possible_truncation'
- clippy: suprimir 'readonly_write_lock' para los enlaces con el prefijo de guión bajo
- rust-analyzer: código de error diferente de error "No such field" basado en el tipo de variante
- rust-analyzer: No reintentar las solicitudes de posición y los datos de resolución de versiones
- rust-analyzer: corrige atributos en parámetros genéricos que colisionan en el árbol de elementos
- rust-analyzer: arreglar el desazúcar de los comentarios de doc para proc-macros
- rust-analyzer: se corrigen los ámbitos de expresión que no se calculan para las consts en línea
- rust-analyzer: arreglar las raíces de origen que no siempre se crean cuando es necesario
- rust-analyzer: hacer que 'Cargo Run' esté siempre disponible para binarios
- rust-analyzer: manual: eliminar sugerencia de rust-project.json ejemplo
- rust-analyzer: Soporta límites flotantes para ADTs
- rustfmt: corregir sangría incorrecta en el atributo interno
Clasificación del rendimiento del compilador de Rust
Varios cambios sin ruido esta semana, con mejoras y regresiones
como resultado. El rendimiento general del compilador es más o menos neutro en todo el
semana.
Triaje realizado por @simulacrum.
Rango de revisión:
a77f76e2.. C65b2DC9
2 regresiones, 2 mejoras, 3 mixtas; 1 de ellos en rollups
51 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 los PR clave
que están llegando a una decisión. Expresa tus opiniones ahora.
RFC
- [disposición: fusionar] Captura precisa
- [disposición: fusionar] Bloqueos externos inseguros
- [disposición: fusionar] MaybeDangling
Seguimiento de problemas y solicitudes de incorporación de cambios
Rust
- [disposición: fusionar] Añadir 'Opción::take_if'
- [disposición: fusionar] elaborar obligaciones en coherencia
- [disposición: fusionar] Permitir la coerción de funciones cuya firma difiere en tipos opacos en su ámbito de definición en un tipo de puntero de función compartida
- [disposición: fusionar] Vamos a '#[esperar]' algunas pelusas: 'Estabilizar lint_reasons' (RFC 2383)
- [disposición: fusionar] Problema de seguimiento de las funciones de recorte ASCII en segmentos de bytes
- [disposición: fusionar] Agregar 'IntoIterator' para 'Box<[T]>' + pelusas específicas de la edición 2024
- [disposición: fusionar] Añadir 'Box<[T; N]>: IntoIterator' sin ningún método dispatch hacks
- [disposición: fusionar] rustdoc-search: buscar referencias
- [disposición: cerrar] Un rasgo adicional limitado hace que el cuerpo de la función no pueda realizar la comprobación de tipos
- [disposición: fusionar] Hacer que las conversiones de punteros a objetos de rasgo sean más estrictas
- [disposición: fusionar] Problema de seguimiento para split_at_checked
RFCs nuevos y actualizados
- [nuevo] Captura precisa
Próximos eventos
Eventos Rusticos entre 2024-05-01 - 2024-05-29 🦀
Virtual
- 01/05/2024 | Virtual (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 01/05/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 02/05/2024 | Virtual (Aarhus, DK) | Organizadores de Rust Aarhus
- 02/05/2024 | Virtual (Charlottesville, Carolina del Norte, EE. UU.) | Reunión de Charlottesville Rust
- 02/05/2024 | Virtual (Londres, Reino Unido) | Mujeres en Rust
- 07/05/2024 | Virtual (Búfalo, NY) | Encuentro de Buffalo Rust
- 09/05/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 09/05/2024 | Virtual (Israel) | Rust en Israel
- 09/05/2024 | Virtual (Núremberg/Núremberg, DE) | Rust Nuremberg
- 14/05/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 14/05/2024 | Virtual (Halifax, NS, CA) | Rust Halifax
- 14/05/2024 | Virtual + presencial (Múnich/Múnich, DE) | Rust Múnich
- 15/05/2024 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 16/05/2024 | Virtual (Charlottesville, VA, EE. UU.) | Reunión de Charlottesville Rust
- 2024-05-21 | Virtual (Washington, DC, EE. UU.) | Rust DC
- 23/05/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 28/05/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
África
- 04/05/2024 | Kampala, UG | Círculo de Rust Kampala
Asia
- 11/05/2024 | Bangalore, IN | Rust Bangalore
Europa
- 01/05/2024 | Köln/Colonia, DE | Colonia Rust
- 01/05/2024 | Utrecht, Países Bajos | Comunidad NL-RSE
- 06/05/2024 | Delft, NL | GOSIM
- 07/05/2024 y 08/05/2024 | Delft, NL | RustNL
- 07/05/2024 | Oxford, Reino Unido | Grupo de Encuentro de Oxfrod Rust
- 08/05/2024 | Cambridge, Reino Unido | Reunión de Cambridge Rust
- 09/05/2024 | Gdańsk, PL | Rust Gdansk
- 14/05/2024 | Londres, Reino Unido | Grupo de usuarios de Rust London
- 14/05/2024 | Virtual + presencial (Múnich/Múnich, DE) | Rust Múnich
- 14/05/2024 | Praga, República Checa | Rust Praga
- 14/05/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 16/05/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 16/05/2024 | París, FR | Rust Paris
- 2024-05-21 | Aarhus, Dinamarca | Rust Aarhus
- 2024-05-21 | Zúrich, CH | Rust Zúrich
- 2024-05-22 | Leiden, NL | Desarrollo de software preparado para el futuro por FreshMinds
- 23/05/2024 | Berna, CH | Rust Bern
- 24/05/2024 | Burdeos, FR | Rust Burdeos
- 2024-05-28 - 2024-05-30 | Berlín, DE | Oxidize
América del Norte
- 04/05/2024 | Cambridge, MA, EE. UU. | Reunión de Boston Rust
- 08/05/2024 | Detroit, MI, EE. UU. | Rust de Detroit
- 09/05/2024 | Spokane, WA, EE. UU. | Rust de Spokane
- 12/05/2024 | Brookline, MA, EE. UU. | Reunión de Boston Rust
- 14/05/2024 | Minneapolis, MN, EE. UU. | Reunión de Rust en Minneapolis
- 16/05/2024 | Seattle, WA, EE. UU. | Grupo de usuarios de Seattle Rust
- 20/05/2024 | Somerville, MA, EE. UU. | Reunión de Boston Rust
- 2024-05-21 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
- 2024-05-22 | Austin, TX, EE. UU. | Rust ATX
- 2024-05-25 | Chicago, Illinois, Estados Unidos | Rust de plato profundo
Oceanía
- 02/05/2024 | Ciudad de Brisbane, QL, AU | Rust Brisbane
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
"¡Nunca lo haré!" "No, nunca está en la edición de 2024".
"¡Pero nunca puede ser este año, nunca es nunca!" "¡Bueno, estamos tratando de hacer que suceda ahora!"
"¿Pero nunca es no ahora?" "Quiero decir, técnicamente, ahora nunca es la unidad". "Pero, ¿cómo tienes una unidad entera si nunca sucede?"
¡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