Esta semana en Rust #36
¡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 (antes 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
Fundación
- Anunciando a la nueva directora de proyectos de la Fundación Rust: Carol Nichols
- Rust Foundation colabora con la iniciativa de AWS para verificar las bibliotecas estándar de Rust
EuroRust 2024
- A través del fuego y las llamas - Jon Gjengset
- Construir más grande en menos tiempo: pruebas de código más allá de lo básico - Predrag Gruevski
- Una suave introducción a las macros procedimentales - Sam Van Overmeire
- Rust práctico para audio web - Attila Haraszti
- Documentos aumentados: una carta de amor a rustdoc y docs.rs - Francois Mockers
- El Impacto de los Asignadores de Memoria en el Rendimiento: Una Inmersión Profunda - Arthur Pastel
- Demostrando la expansión macro con expandible - Sasha Pourcelot
- Runtime Scripting for Rust Applications - Niklas Korz
- Desatando 🦀 la fortuna interior - Víctor Ciura
- Los primeros seis años en el desarrollo de Polonio - Amanda Stjerna
- Rust no binario: entre lo seguro y lo inseguro - Boxy Uwu
- Escribir un controlador de tarjeta SD en Rust - Johnathan Pallant
- Mi Viaje De WebDev a la Visualización Médica Rustacean - David Peherstorfer
- Código para contratar a código: haciendo APIs blindadas - Adam Chalmers
- Rust Irgendwie, Irgendwo, Irgendwann - Henk Oordt
- Linting with Dylint - Samuel Moelius
RustConf 2024
- Dra. Rebecca Rumbul (Directora Ejecutiva de la Fundación Rust): "Palabras de bienvenida"
- Aeva Black: "Hacer que el código abierto sea seguro por diseño" | CONFERENCIA MAGISTRAL
- Marc-André Moreau (CTO, Devolutions): Charla del Patrocinador Diamante
- Nick Cameron: "El eterno resplandor de la mente oxidada"
- Jack Wrenn: "Gafas de seguridad para alquimistas"
- Rohit Dandamundi: "Ensanchando la red de la fortuna"
- Isabel Atkinson: "Rustifique su API: Un viaje desde la especificación hasta la implementación"
- Sparrow Li: "El estado actual y el futuro del rendimiento del compilador de Rust"
- Nathan Stocks: "¡Estrellas fugaces! Codifica en vivo un juego en menos de 30 minutos" Pedro Rittner y Sean Lawlor: "Actores y fábricas en Rust"
- David Koloski: "Los (muchos) errores que cometí en rkyv"
- Kyler Chin: "Cómo construimos un mapa de transporte público en tiempo real oxidado"
- Adam Chalmers: "Creación de un lenguaje de programación para el diseño 3D"
- Martin Pool: "Encontrando bichos con mutantes de carga"
- 1Password, Adobe, Woven by Toyota: Patrocinador de Oro Lightning Talks
- Miguel Ojeda (Rust para Linux): KEYNOTE
- JetBrains, K2 Space, Zed: Patrocinador de Oro Lightning Talks
- Jonathan Pallant: "Ciclo de seis relojes por píxel - Gráficos en el Neotrol Pico"
- Joannah Nanjekye: "Interoperabilidad de Rust: Seguridad de la memoria a través de los límites de funciones extranjeras"
- Jacob Pratt: "Desarrollo impulsado por compiladores: haciendo que Rust funcione para ti"
- Angus Morrison: "Cómo Rust está impulsando los simuladores de misiones espaciales de próxima generación"
- Michael Gattozzi: "¿Qué pasa cuando se ejecuta la construcción de carga?"
- Pallavi Thukral: "Rust en movimiento: construcción de sistemas robóticos confiables y de alto rendimiento"
- Marc-André Giroux: "Observabilidad de baja sobrecarga en servidores de alto RPS"
- Predrag Gruevski: "Poner fin a los cambios accidentales que rompen el semVer"
- Chris Biscardi: "Sitios Web, Aplicaciones Web y Ensamblaje Web"
- Nicholas Matsakis (Co-Líder, Equipo de Diseño de Rust): "Hoja de ruta de Rust 2.0" | CONFERENCIA MAGISTRAL
- Frédéric Ameye: "El Rust en las industrias reguladas heredadas"
- Walter Pearce: "Amigo, ¿dónde está mi C?"
- Ed Jones: "Refactorización intrépida y el arte de la oxidación sin argumentos"
- Dra. Rebecca Rambul: Palabras de apertura
- Charla patrocinada por OxidOS
- Martin Geisler: "Entrenamiento de Rust a escala"
- Quanyi Ma: "Abrazando la evolución de Monorepo y LLM"
- Joshua Liebow-Feeser: "Seguridad en un mundo inseguro" Jack Huey y James Munns: "An Outsider's Guide to the Rust Project"
Boletines
Actualizaciones de proyectos/herramientas
- hiper en rizo necesita un campeón
- godot-rust actualización de desarrollo de noviembre de 2024
- Seguridad en hickory-dns
- Geometría virtual en Bevy 0.15
- Pegamento v0.5 - Pestañas del editor y comandos Vim mejorados
- Análisis de datos de streaming, versión 0.13.0 de Fluvio
- Repetición 0.20 - Datos geoespaciales y soporte completo para H.264
- ¡Lanzamiento de Git-Cliff 2.7.0! (un generador de registro de cambios altamente personalizable)
Observaciones/Pensamientos
- No necesitas (siempre) async
- El WASM zlib más rápido
- Un bicho de solidez de rustc en la naturaleza
- [audio] Compile Time Crimes
- [audio] Oxide con Steve Klabnik
Tutoriales de Rust
- Optimizaciones de Zed Rope, Parte 1
- Futexes en casa
- Construya su propio SQLite, Parte 3: Análisis sintáctico SQL 101
- dtype_dispatch: un truco muy hermoso
- Envío de eventos a Bevy desde cualquier lugar
- Construyendo un analizador de direcciones de correo electrónico en Rust con nom
- Explorando los tiempos de ejecución asíncronos mediante la creación de los nuestros
- Rasgos para unificar todos los vectores
- Conceptos básicos de fijación en Rust
- Construyendo un coche controlado por WiFi con Rust y ESP32
- [video] Construir con Naz: Diesel ORM, SQLite y Rust
Crate de la semana
El crate de esta semana es fixed-slice-vec, un Vec de longitud dinámica sin estándar con capacidad máxima determinada por el tiempo de ejecución respaldada por un segmento.
¡Gracias a Jay Oster por la sugerencia!
Por favor, envíen sus sugerencias y votos para la próxima semana!
Llamadas a la realización de pruebas
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 convocatorias para pruebas esta semana.
Rust
- No se emitieron convocatorias para pruebas esta semana.
Rustup
- No se emitieron convocatorias 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 to TWiR o poniéndote en contacto con X (antes 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.
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 en X (anteriormente Twitter) o Mastodon!
Actualizaciones del Proyecto Rust
480 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- Comprobaciones ABI: añadir soporte para algunos arcos de nivel 3, advertir sobre otros
- Comprobaciones de ABI: añadir soporte para arcos de nivel 2
- CFI: anexar la ubicación de depuración a los bloques CFI
- AIX: Añadir caja "desenredar" al enlace con libunwind
- illumos: use pipe2 para crear tuberías anónimas
- 'check_consts': se corrige el error al solicitar la puerta de funciones cuando esa puerta no es realmente necesaria
- 'const_panic': en línea en las compilaciones de arranque para evitar bloqueos de f16/f128
- 'rustc_metadata': Rutas de búsqueda previas para un mejor rendimiento
- 'suggest_borrow_generic_arg': instanciar cláusulas correctamente
- añadir 'visit_coroutine_kind' a 'ast::Visitor'
- añadir paréntesis cuando se necesita la sugerencia de desempaquetar
- agregar anotaciones de referencia para atributos de diagnóstico
- permitir CFGuard en windows-gnullvm
- siempre en línea: funciones que contienen 'f16' o 'f128'
- Diagnóstico de Borrowck: sugerir tomar prestadas entradas de función en posiciones genéricas
- cambie 'Visitor::visit_precise_capturing_arg' para que devuelva un 'Visitor::Result'
- cambiar las declaraciones intrínsecas a un nuevo estilo
- marque 'use<..>' en RPITIT para refinamiento
- consolidar la evaluación del sistema de tipos const en 'rasgos::evaluate_const'
- borrar el compilador en serie 'cfg(not(parallel))'
- denegar la captura de parámetros ty/const enlazados en tiempo de ejecución en opacos anidados
- diagnóstico para dejar mutar en el contexto del artículo
- extender la lógica "if-unchanged" para compilaciones de compiladores
- las expresiones de rendimiento de la puerta de características no están en 2024
- arreglar ICE al pasar argumentos que crean DefId a 'legacy_const_generics'
- Arreglar 'REGISTRY_USERNAME' para reutilizar la caché entre trabajos automáticos y de relaciones públicas
- soluciona un problema de copiar y pegar en la definición de tipo sin procesar de NuttX
- corregir error de compilación en Solaris debido al uso de flock
- corrección de la edición de intervalo para RPIT 2024 proveniente de una macro externa
- para expr 'return (_ = 42); unused_paren' lint no debe activarse
- manejar inferir vars en anon consts en estable
- mejorar VecCache en frontend paralelo
- aumentar la precisión de la sugerencia de dispersión incorrecta de la condición 'si'
- libera 'aarch64-gnu-debug' de los grilletes de '--test-args=clang'
- probable solución poco probable
- hacer que la máquina de sugerencias de captura precisa sea aplicable solo si no tiene APITs
- asegúrese de ignorar las vidas eliminadas cuando apunte a args para errores de cumplimiento
- Mencione tanto la versión * como la rotura de la edición para nunca escribir pelusas
- mover todas las comprobaciones de tiempo único a su propia carpeta, y su propia consulta
- Soporte adecuado para comprobaciones de estabilidad const recursivas entre cajas
- querify MonoItem collection
- se recursa en APITs en 'impl_trait_overcaptures'
- refactorizar 'configure_annotatable'
- eliminar atributos de genéricos en macros de derivación integradas
- cambiar el nombre de 'rustc_const_stable_intrinsic' → 'rustc_intrinsic_const_stable_indirect'
- omitir el intervalo de bloqueo para algunas comprobaciones de contexto de sintaxis
- recorte el espacio adicional cuando sugiera eliminar los 'lets' incorrectos
- recortar espacio en blanco en el intervalo primario de RemoveLet
- Ajustar atributos para la macro de pánico constante
- unificar FnKind entre los visitantes de AST y hacer que WalkItemKind sea más sencillo
- use 'TypingMode' en todo el compilador en lugar de 'ParamEnv'
- advertir sobre nombres de pase 'mir-enable-passes' no válidos
- Miri: implementar el bloqueo eventfd
- Miri: Refactor: Refinar variante de hilo para Windows
- Miri: renombrado 'this' a 'ecx' en 'extern_static'
- miri: use -Zroot-dir en lugar de --remap-path-prefix para el manejo de dir de diagnóstico
- estabilizar 'const_atomic_from_ptr'
- estabilizar 'const_option_ext'
- estabilizar 'const_ptr_is_null'
- estabilizar 'const_unicode_case_lookup'
- vectorizar 'slice::is_sorted'
- '#[inline]' funciones de análisis de enteros
- agregar 'as_slice/into_slice' para IoSlice/IoSliceMut
- generalizar 'NonNull::from_raw_parts' por ACP362
- rwlock downgrade
- implementar 'mixed_integer_ops_unsigned_sub'
- mejorar el código de 'fmt_num' para eliminar el pánico inalcanzable
- Tipos de float: mover copysign, abs, signum a libcore
- hacer que 'CloneToUninit' sea compatible con dyn
- marque 'is_val_statically_known' intrínseco como establemente invocable
- optimizar 'char::to_digit' y afirmar que radix es al menos 2
- hashbrown: secuestrar aún más el código 'Grupo'/'Etiqueta'
- hashbrown: marque los constructores const fn como 'rustc_const_stable_indirect'
- codegen_gcc: arreglar cargas y almacenes volátiles
- resolución de carga: Estabilizar resolución v3
- cargo rustdoc: diplay env vars en modo extra detallado
- Cargo fix: contexto de error para la especificación de referencia 'git_fetch' no encontrada
- cargo: incluir siempre Cargo.lock en las cajas publicadas
- cargo: migrate build-rs to the Cargo repo
- cargo: simplificar el inglés utilizado en la guía
- Rustdoc Search: Permitir que las consultas terminen en un segmento de ruta vacío
- rustdoc-search: distingue entre mayúsculas y minúsculas solo cuando se usan mayúsculas
- rustdoc-search: use smart binary search in bitmaps
- rustdoc: tratar las macros declarativas más como otros tipos de elementos
- rustdoc: use un trie para la búsqueda basada en nombres
- rustdoc: Arreglar identificaciones de notas al pie duplicadas
- rustdoc: Arreglado el manejo de la referencia de nota al pie en la definición de nota al pie
- rustdoc: Arreglar elementos con genéricos que no tienen su enlace de salto a def generado
- rustdoc: Realiza menos trabajo al limpiar los argumentos genéricos entre paréntesis 'middle::ty'
- clippy: 'missing_safety_doc' acepta "SEGURIDAD" mayúscula
- clippy: permitir futuros condicionales 'Enviar' en 'future_not_send'
- clippy: no activar 'if_let_mutex' a partir de la Edición 2024
- clippy: no pelar literales de CStr, hacer literales de flotación de lint en 'redundant_guards'
- clippy: handle 'Option::map_or(true, ...)' en 'unnecessary_map_or' lint
- clippy: nueva pelusa: 'unnecessary_map_or'
- clippy: soporta macros similares al formato de usuario
- rust-analyzer: migrar la asistencia 'reorder_fields' para usar 'SyntaxFactory'
Clasificación del rendimiento del compilador de Rust
Vimos mejoras en una gran variedad de puntos de referencia con la consulta de Colección MonoItem (PR #132566). También hubo algunas relaciones públicas en las que estamos dispuestos a para pagar un costo en tiempo de compilación para el beneficio de tiempo de ejecución esperado (PR #132870, PR #120370), o pagar un pequeño costo en la caja de un solo hilo a cambio de un gran paralelo (PR #124780).
Triaje realizado por @pnkfelix. Rango de revisión: d4822c2d.. 7D40450B
2 regresiones, 4 mejoras, 10 mixtas; 6 de ellos en rollups 47 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
- No se aprobaron RFC esta semana.
Seguimiento de problemas y relaciones públicas
Rust
- [disposición: fusionar] Mostrar siempre la primera línea de los bloques impl incluso cuando están colapsados
- [disposición: fusionar] Estabilizar cierres asíncronos (RFC 3668)
- [disposición: fusionar] Problema de seguimiento para fn const BuildHasherDefault::new()
- [disposición: fusionar] Añadir 'AsyncFn*' al preludio en todas las ediciones
- [disposición: fusionar] Problema de seguimiento para #![ característica(const_float_methods)]
Carga
- [disposición: fusionar] Agregar advertencia de incompatibilidad futura contra palabras clave en cfgs y agregar identificadores sin procesar
Equipo lingüístico
- [disposición: fusionar] Comprobación de consenso: las cadenas de permisos y es no son mutuamente excluyentes
Referencia lingüística
- No hay RFC de referencia de idioma ingresó al Período Final de Comentarios esta semana.
Directrices de códigos inseguros
- No hubo problemas de seguimiento de pautas de código inseguro o PR ingresaron al período de comentarios finales esta semana.
RFC nuevas y actualizadas
- [nuevo] Jerarquía de rasgos de tamaño
Próximos eventos
Eventos oxidados entre 2024-11-20 - 2024-12-18 🦀
Virtual
- 20/11/2024 | Virtual (Cardiff, Reino Unido) | Rust y C++ Cardiff
- 20/11/2024 | Virtual y presencial (Vancouver, BC, CA) | Rust de Vancouver
- 21/11/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 21/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 21/11/2024 | Virtual (Róterdam, Países Bajos) | Desarrollo de juegos de Bevy
- 25/11/2024 | Virtual (Bratislava, SK) | Grupo de encuentro de Bratislava Rust
- 26/11/2024 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 28/11/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 28/11/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 03/12/2024 | Virtual (Buffalo, NY, EE. UU.) | Encuentro de Buffalo Rust
- 04/12/2024 | Virtual (Indianápolis, IN, EE. UU.) | Indy Rust
- 05/12/2024 | Virtual (Berlín, DE) | OpenTechSchool Berlín + Rust Berlin
- 07/12/2024 | Virtual (Kampala, UG) | Círculo de Rust Kampala
- 2024-12-10 | Virtual (Dallas, TX, EE. UU.) | Rust de Dallas
- 11/12/2024 | Virtual (Vancouver, Columbia Británica, CA) | Rust de Vancouver
- 12/12/2024 | Virtual (Charlottesville, Carolina del Norte, Estados Unidos) | Reunión de Rust en Charlottesville
- 12/12/2024 | Virtual (Nürnberg, DE) | Rust de Núremberg
- 17/12/2024 | Virtual (Washington, DC, EE. UU.) | Rust DC
África
- 2024-12-10 | Johannesburgo, ZA | Reunión de Rust en Johannesburgo
- 07/12/2024 | Virtual( Kampala, UG) | Círculo de Rust Kampala
Asia
- 21/11/2024 | Seúl, KR | Encuentro de programación de Rust en Seúl
- 28/11/2024 | Bangalore/Bangalore, IN | Rust de Bangalore
- 30/11/2024 | Tokio, JP | Rust de Tokio
Europa
- 20/11/2024 | París, FR | Rust Paris
- 21/11/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 21/11/2024 | Edimburgo, Reino Unido | Rust y sus amigos
- 21/11/2024 | Madrid, ES | Rust loco
- 21/11/2024 | Oslo, NO | Rust Oslo
- 23/11/2024 | Basilea, CH | Basilea Rust
- 25/11/2024 | Zagreb, RRHH | impl Zagreb para Rust
- 26/11/2024 | Varsovia, PL | Rust Varsovia
- 27/11/2024 | Dortmund, DE | Rust Dortmund
- 28/11/2024 | Aarhus, DK | Rust Aarhus
- 28/11/2024 | Augsburgo, DE | Encuentro de Rust Augsburgo
- 28/11/2024 | Berlín, DE | OpenTechSchool Berlín + Rust Berlin
- 28/11/2024 | Gdansk, PL | Rust Gdansk
- 28/11/2024 | Hamburgo, DE | Encuentro de Rust Hamburgo
- 28/11/2024 | Manchester, Reino Unido | Rust de Manchester
- 28/11/2024 | Praga, CZ | Rust Praga
- 03/12/2024 | Copenhague, Dinamarca | Comunidad de Rust de Copenhague
- 04/12/2024 | Oxford, Reino Unido | Grupo de Meetup de Oxford Rust
- 05/12/2024 | Olomouc, CZ | Rust Moravia
- 06/12/2024 | Moscú, RU | RustCon RU
- 11/12/2024 | Reading, Reino Unido | Taller de lectura de Rust
- 12/12/2024 | Ámsterdam, Países Bajos | Grupo de desarrolladores de Rust en Ámsterdam
- 17/12/2024 | Leipzig, DE | Rust - Programación de sistemas modernos en Leipzig
América del Norte
- 21/11/2024 | Chicago, Illinois, Estados Unidos | Encuentro de Rust en Chicago
- 23/11/2024 | Boston, MA, EE. UU. | Encuentro de Boston Rust
- 25/11/2024 | Ferndale, Michigan, Estados Unidos | Rust de Detroit
- 26/11/2024 | Minneapolis, MN, Estados Unidos | Reunión de Rust en Minneapolis
- 27/11/2024 | Austin, TX, Estados Unidos | Rust ATX
- 28/11/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 05/12/2024 | San Luis, MO, EE. UU. | STL Rust
- 2024-12-10 | Ann Arbor, Michigan, Estados Unidos | Rust de Detroit
- 12/12/2024 | Mountain View, CA, EE. UU. | Dojo Hacker
- 16/12/2024 | Minneapolis, MN, Estados Unidos | Reunión de Rust en Minneapolis
- 17/12/2024 | San Francisco, CA, EE. UU. | Grupo de Estudio de la Roya de San Francisco
Oceanía
- 04/12/2024 | Sídney, Australia | Rust de Sídney
- 08/12/2024 | Canberra, Australia | Grupo de usuarios de Canberra Rust
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 acceder.
Empleos
Por favor, consulte el último hilo de Quién está contratando en r/rust
Frase de la semana
El punto de Rust es que antes había dos mundos:
- Idiomas ineficientes, recolectados y confiables
- Idiomas eficientes, asignados manualmente y peligrosos
Y la marca de ser un buen desarrollador en el primero fue mitigar bien la ineficiencia, y para el segundo fue que no se bloqueó, corrompió la memoria ni estuvo plagado de problemas de seguridad. En cambio, Rust hace la compensación de que ser bueno significa entender cómo evitar que el compilador te grite.
– Simon Buchan sobre los usuarios de Rust
¡Gracias a binarycat 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