Esta semana en Rust #4
¡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.
- Una historia de insignias rotas y 23.000 características
- crates.io: Abandono del soporte para descargas no canónicas
- Los generadores están muertos, larga vida a las corrutinas, los generadores están de vuelta
- ¡Ratatui 0.24.0 está disponible! (Biblioteca de Rust que se trata de cocinar interfaces de usuario de terminales)
- ¡Lanzamiento de Git-Cliff 1.4.0! (generador de registro de cambios altamente personalizable)
- registro de cambios de rust-analyzer #205
- Informe de situación sobre rustc_codegen_cranelift (octubre de 2023)
- Las dependencias del sistema son difíciles (así que las hicimos más fáciles)
- ¿Valió la pena Rust?
- ¿Puede Rust evitar errores lógicos?
- Serialización de Rust más rápida
- Lidiando con dependencias en Rust
- Cómo aprendí a dejar de preocuparme y amar el orden de bytes
- Cómo moverse rápido con Rust
- Iniciar una reunión virtual de Rust
- [video] Impl Trait aka Look ma', no generics! por Jon Gjengset
- Lanzamientos totalmente automatizados para proyectos de Rust
- La belleza de un procesador de mensajes Rust
- interrumpe es hilos
- htmx, Rust & Shuttle: A New Rapid Prototyping Stack
- [video] No se requiere 🦀 asíncrono
- Propiedad funcional a través de la unicidad fraccionaria
- Grading on a Curve: How Rust Can Facilitate New Contributors While Reducing Vulnerabilities
El crate de esta semana es silkenweb, una biblioteca para crear aplicaciones web con una reactividad de grano fino y una separación clara de la lógica y la interfaz de usuario.
¡Gracias a henrik por la sugerencia!
[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.
- pubgrub - Pasar a la edición 2021
- pubgrub - Arreglar CI para commits convencionales
- pubgrub - Cambiar el nombre del rango v0.3 a BoundedRange
- pubgrub - 'OfflineDependencyProvider' debería tener su propio módulo
- Ockam - Biblioteca - Adelgazar el 'NodeManagerWorker' para 'node / tcp'
- Ockam - Hacer que 'ockam vault delete' (sin args) sea interactivo pidiendo al usuario que elija de una lista de bóvedas para eliminar (tuify)
- Ockam - Comando - refactorizar para usar interfaces con tipo para implementar comandos para 'servicios'
Si eres propietario de un proyecto de Rust y estás buscando colaboradores, envía tareas aquí.
408 solicitudes de extracción fueron [fusionadas en la última semana][fusionadas]
- -Zunpretty help: añadir los valores posibles que faltan
- NVPTX: permitir 'PassMode::D irect' para kernels ptx por ahora
- 'OptWithInfcx' nomenclatura de nits, simplificaciones ligadas a rasgos
- 'deduce_param_attrs': explica un caso de solo lectura
- 'rustc_interface' limpiezas
- 'stack_overflow: get_stackp' usando la bandera 'MAP_STACK' en dragonflybsd también
- add bootstrap flag '--skip-stage0-validation'
- añadir método para convertir construcciones internas en estables
- añadir soporte para i586-unknown-netbsd como destino
- añadir soporte para mipsel-unknown-netbsd, mips LE de 32 bits
- agregar características de destino para LoongArch
- añadir una forma de diferenciar los locales de argumento de otros locales en MIR estable
- permitir valores parcialmente movidos en la coincidencia
- permitir que las especificaciones de destino usen un tipo de LLD y componentes de enlace autónomos
- permite que los atributos '#[diagnostic::on_unimplemented]' tengan múltiples
- ¡Evite el internamiento repetido de 'env! ("CFG_RELEASE")'
- evite 'O(n^2)' ilimitado al analizar args de tipo anidado
- evitar construcciones/reconstrucciones innecesarias de 'rust-demangler'
- evitar la renumeración innecesaria durante el préstamo
- Mejoras en el error c-variádico
- considere los límites de alias al calcular la vida en NLL (pero esta vez suena con suerte)
- const stabilize 'mem::d iscriminant'
- Manejar correctamente los patrones OR anidados en exhaustividad
- cobertura: eliminar consistentemente los ID de contador no utilizados de las expresiones/asignaciones
- Cobertura: Reemplace las sangrías de depuración manual con intervalos de seguimiento anidados en 'contadores'
- crear 'windows/api.rs' para una FFI más segura
- crear una nueva variante de ConstantKind (ZeroSized) para StableMIR
- declarar la dependencia de 'rustc_target' de objeto/macho
- denegar el suministro de parámetros de efecto explícitos
- derivar 'Ord', 'PartialOrd' y 'Hash' para 'SocketAddr*'
- Detectar cuándo se implementa el rasgo para el tipo y sugerir importarlo
- no sugiera ''Trait<Assoc=arg>'' cuando está en trait impl
- no normalizar a un opaco no revelado cuando alcanzamos el límite de recursividad
- no tratar los tipos de cierres/corrutinas como parte de la API pública
- no use símbolos LFS64 en el idioma
- coma paren cerrado si 'capture_cfg' para evitar parenes desequilibrados
- Habilitar pruebas 'cg_clif' para RISCV64GC
- error tipock por ruptura ilegal con valor
- arreglar ICE: Restringir sugerencia de restricción de parámetros
- Se corrigió la falla al detectar un tipo demasiado grande después de agregar relleno
- corregir la comprobación de inseguridad del patrón const en línea en THIR
- Se corrige el espacio inicial que falta en la sugerencia
- Soluciona el problema de lint de variables no utilizadas para args en macro
- Corregir sugerencia de desenvoltura para fn asíncrono
- generar constantes agregadas en DataflowConstProp
- manejar 'ReErased' en las respuestas en el nuevo solucionador
- ignorar las duraciones duplicadas de RPIT en 'opaque_types_defined_by'
- implementar la reducción del ITB C para CSKY
- implementar bloques 'gen' en la edición de 2024
- Mejorar la interfaz de propiedades de Android-NDK
- mejorar algunos diagnósticos en torno a '? Límites de rasgos
- mejorar los mensajes de advertencia para el '#[diagnostic::on_unimplemented]'
- aumentar el alcance de 'panic_immediate_abort'
- intern 'LocalDefId' lista de la consulta 'opaque_types_defined_by'
- introducir '-C instrument-coverage=branch' a la cobertura de la rama de la puerta
- sugerencia '' no válida en 'Ok(T)'
- lint superponiendo rangos como una pasada separada
- marcar los archivos '.rmeta' como '/SAFESEH' en Windows x86
- marcar el constructor de 'BinaryHeap' como const fn
- Nunca consideres que los lanzamientos de puntero en bruto sean trivales
- Sobre el error de seguridad del objeto, mencione una nueva 'enumeración' como alternativa
- en importaciones no resueltas, sugiera una ruta de desambiguación si es necesario para evitar colisiones con elementos locales
- solo llame a 'mir_const_qualif' si es absolutamente necesario
- solo emite un error por enlace sin tamaño, en lugar de uno por uso
- envenenar 'check_well_formed' si los receptores del método no son válidos para evitar que typeck se ejecute en él
- imprimir patrón de argumento variádico en impresora HIR bonita
- restaurar correctamente la instantánea cuando no se puede recuperar el análisis ternario
- falla silenciosamente si ya se ha producido un error
- rand use getrandom para freeBSD (disponible desde 12.x)
- Refactorizar el tipo de visitante caminando
- reasignar las dependencias de carga a /rust/deps
- remove -Zdep-tasks
- eliminar los respaldos RNG de Apple y simplificar la implementación
- eliminar el código de plegado y agregar 'Const::internal()' a StableMIR
- eliminar el soporte para el alias '-Z instrument-coverage'
- Requerir que las entidades de destino coincidan exactamente durante la inserción
- devuelve múltiples errores de violación de la seguridad de los objetos y mejoras de código en la comprobación de la seguridad de los objetos
- devuelve LEN no fijado si Pat ha informado de un error
- reelaborar la coherencia negativa para considerar adecuadamente los implicamientos que solo se superponen parcialmente
- rustdoc: elide cross-crate default arguments generive
- rustdoc: use 'ThinVec' en 'GenericParamDefKind'
- ver a través de agregados en GVN
- Seguimiento de la ruta de movimiento separada entre Borrowck y Drop Elaboration
- comparte algo de lógica 'track_caller' entre interpret y codegen
- pequeñas limpiezas 'ty::p rint'
- algunas mejoras de diagnóstico de los bloques 'gen'
- Ocultar y cancelar errores de ciclo para la fuga de rasgos automáticos en opacos
- deja de decirle a la gente que envíe errores para los ICEs de características internas
- almacenar el valor 'desde' del atributo '#[estable]' en forma estructurada
- sugerir assoc fn 'new' cuando se intenta construir la tupla 'struct' con campos privados
- sugerir unwrap/expect for let binding type mismatch
- Soporte de simulador de tvOS en Apple Silicon para rustc
- Ajustar el intervalo de sugerencia para el atributo externo y apuntar al elemento que sigue al atributo interno no válido
- eleva 'Canónico' a 'rustc_type_ir'
- eleva 'ClauseKind' y 'PredicateKind' a 'rustc_type_ir'
- use ImageDataType para el tipo de asignación
- valida los valores 'feature' y 'since' dentro de '#[stable(...)] «
- cuando se encuentran rasgos sellados, tipos de puntos que lo implementan
- cuando se espera el argumento de cierre pero se encuentra el bloqueo proporcionar una sugerencia
- solucione el hecho de que 'check_mod_type_wf' puede devolver falsamente 'ErrorGuaranteed'
- Hora: use 'clock_gettime' en macOS
- Windows: admite suspensión de menos de milisegundos
- refactorizar algunas funciones ASCII 'char', 'u8' para que no tengan ramas
- añadir '#[inline]' a algunos métodos recalcitrantes 'ops::range'
- estabilizar las características del objetivo RISC-V ratificadas
- estabilizar '[const_]pointer_byte_offsets'
- Estabilizar el uso de ASM en línea con 'rustc_codegen_cranelift'
- futuros: añadir adaptadores 'TryAll' y 'TryAny'
- futuros: arreglar la implicación de 'Sincronizar' de 'FuturosDesordenados'
- futuros: proporcionar AtomicWaker si la función de atómico portátil está habilitada, incluso si el CAS atómico no está disponible
- codegen_gcc: agregar conceptos básicos para el comando 'test' en el sistema de compilación
- codegen_gcc: arreglar 'volatile_load'
- cargo toml: Permitir manifiestos sin versión
- cargo toml: Desacoplar el análisis sintáctico del sistema de internado
- cargo: shell: Escribe de una vez en lugar de en fragmentos
- cargo: añadir nuevos paquetes a '[workspace.members]' automáticamente
- cargo: subir mirando el resumen del índice 'enum'
- cargo: eliminar binarios duplicados durante la instalación
- cargo: eliminar la opción obsoleta de las advertencias '-Zcheck-cfg'
- rustfmt: error corregido causado por la combinación de 'match_arm_blocks' y 'control_brace_style'
- clippy: 'ignored_unit_patterns': comprobar &(), &&(),
- clippy: 'iter_without_into_iter': corrige los recortes de papel en la sugerencia y restringe el linting a los tipos exportados
- clippy: 'let_and_return': Envolver con paréntesis si es necesario
- clippy: agregue la pelusa 'waker_clone_and_wake' para verificar clones innecesarios de 'Waker'
- clippy: se corrige el paréntesis que falta en la ayuda de coma flotante subóptima
- clippy: ignora las palabras en minúsculas en 'doc_markdown'
- clippy: mover 'read_zero_byte_vec' a la guardería
- clippy: eliminar la función interna de 'clippy_utils'
- clippy: eliminar la categoría de pelusa 'internal_warn'
- Rust-Analyzer: hacer que 'extract_variable' ayude en su lugar
Esta semana tenemos dos conjuntos de resultados, ya que los de la semana pasada llegaron más tarde de la fecha de publicación:
Triaje realizado por @rylev y @simulacrum.
Rango de revisión: b9832e72.. 650991d
En ambos informes:
Los cambios en Rust siguen el proceso de Rust RFC (solicitud de comentarios)
Cada semana, el equipo
- [disposición: fusionar] Reglas de captura de por vida 2024
- [disposición: fusionar] Agregar RFC "Actualización de política crates.io"
- [disposición: fusionar] Anular 'Waker::clone'_from para evitar clonar Wakers innecesariamente
- [Disposición: Fusionar] dropck_outlives comprobar si el testigo generador needs_drop
- [disposición: fusionar] tipo oculto más estricto wf-check
- [disposición: fusionar] Problema de seguimiento de los iteradores GroupBy y GroupByMut
- [disposition: merge] No entres en pánico en '