Microsoft-ui-xaml: Propuesta: compatibilidad con WinUI 3 rust

Creado en 20 may. 2020  ·  14Comentarios  ·  Fuente: microsoft/microsoft-ui-xaml

El óxido se está volviendo cada vez más popular. Ya puede controlar DirectX 12, pero solo en modo de pantalla completa o mediante bibliotecas de interfaz de usuario que parecen hechas por ingenieros para ingenieros. Tener compatibilidad con WinUI3 para rust permitiría crear aplicaciones de rust que se vean modernas y pulidas y, bajo el capó, disfruten de todas las ventajas de rust. Eso haría felices a los ingenieros y al departamento de marketing, es decir, haría viable esta combinación para aplicaciones comerciales.

feature proposal

Comentario más útil

winrt-rs tal vez pueda lograr la conexión, pero una caja winui3-rs explícita que extrae las dependencias necesarias y tiene un hola mundo funcional lo hará mucho más accesible.

Todos 14 comentarios

Parece que ya se ha trabajado en las asignaciones de idiomas: https://github.com/microsoft/winrt-rs

winrt-rs tal vez pueda lograr la conexión, pero una caja winui3-rs explícita que extrae las dependencias necesarias y tiene un hola mundo funcional lo hará mucho más accesible.

Esto está (probablemente) bloqueado porque winrt-rs es estable.

@kennykerr como FYI

La caja Rust winrt proporciona proyección de lenguaje y soporte de empaquetado, comparable a C++/WinRT con su extensión VS y soporte NuGet . Todo eso lo proporciona Rust/WinRT hoy. Está en mi lista para agregar algunas muestras de Xaml pronto. Todavía tenemos mucho camino por recorrer para admitir la creación de sus propios controles Xaml en Rust, pero ya puede crear aplicaciones Xaml básicas y estamos trabajando arduamente para obtener la compatibilidad completa del sistema de tipos.

Me encantaría saber qué más está buscando la gente. Me imagino que se trata más de proporcionar soporte para el tipo de cosas de las que tradicionalmente se ocupa el compilador Xaml, pero puede que me equivoque.

Realmente me encantaría ver que esto suceda también.
El óxido es cada vez más popular por una razón. Es un lenguaje realmente bueno, y Microsoft incluso ha dicho que está usando rust para construir una parte de Windows.
Tener un marco de aplicación creado alrededor de Rust significaría un rendimiento de nivel C ++ pero con un código mucho mejor legible y menos errores de memoria.

@kennykerr "Me encantaría saber qué más está buscando la gente".
la principal motivación era poder tener aplicaciones de aspecto profesional que estuvieran escritas de la forma más nativa posible en rust. De alguna manera, parece que las personas que tienen grandes habilidades de diseño de lenguajes no son las mismas que tienen grandes habilidades artísticas de diseño de widgets de interfaz de usuario. Por lo tanto, un envoltorio oxidado para WIN UI 3 cerraría la brecha. Pero la barrera de entrada es alta cuando hay bibliotecas que deberían hacer el truco pero no tienen un ejemplo de cómo hacerlo. Tener un ejemplo de hola mundo que vincule las tecnologías hará que mucha más gente quiera sumergirse y hacer sus propias derivaciones. Personalmente, me encantaría un ejemplo de óxido usando WIN UI 3 y DirectX12 en un panel dentro de la aplicación WIN UI. No comencé a trabajar en él porque parecía difícil cuando apenas comenzaba a aprender óxido.

Tenía muchas ganas de hacer más trabajo de GUI en Rust. WinUI suena como el lugar ideal para probarlo

@kennykerr "Tener un ejemplo de hola mundo que vincule las tecnologías hará que muchas más personas realmente quieran sumergirse y hacer sus propias derivaciones".

Hello world es suficiente para mostrar la interfaz de usuario. Una aplicación de tareas de ejemplo muestra algunas interacciones simples y cómo encajan las piezas.

Recuerdo el anuncio sobre .Net MAUI , y me pregunto cuánto de los fundamentos de eso están en WinUI.

Para mí, la inspiración proviene de un marco de GUI de Rust llamado vgtk.
https://bodil.lol/vgtk/

La sintaxis de este marco está fuertemente inspirada en la sintaxis jsx de React para construir una interfaz de usuario declarativa, y su modelo de programación es el modelo MVU popular en la actualidad.

Para declarar una aplicación, escribes

fn view(&self) -> VNode<Model> {
    gtk! {
        <Application::new_unwrap(None, ApplicationFlags::empty())>
            <Window border_width=20 on destroy=|_| Message::Exit>
                <HeaderBar title="inc!" show_close_button=true />
                <Box spacing=10 halign=Align::Center>
                    <Label label=self.counter.to_string() />
                    <Button label="inc!" image="add" always_show_image=true
                            on clicked=|_| Message::Inc />
                </Box>
            </Window>
        </Application>
    }
}

Esto está muy cerca de jsx, pero aún más cerca de XAML, que es perfecto para usar con WinUI. Esta sintaxis en rust está habilitada por la función de macros de procedimiento de rust.

Me parece que este tipo de marco de interfaz de usuario es la tendencia en estos días, y para que el óxido con WinUI tenga éxito, también debe viajar en este tren. Este tipo de trabajo se ha realizado innumerables veces, y probablemente sea muy fácil para Microsoft crear uno para WinUI. También podría ser una buena oportunidad para un marco de interfaz de usuario multiplataforma, ya que eso es lo que la comunidad de GUI oxidada espera ansiosamente, pero eso parece estar fuera del alcance de este problema.

Algo también a tener en cuenta es que XAML requiere soporte de 'clase parcial', ¿verdad? Para que pueda agregar controles a los elementos de la interfaz de usuario. ¿Rust admite esto? ¿Podrías imitarlo con macros de procedimiento?

¡Gracias por todos los comentarios! Sigue viniendo.

@suleyth : la API Xaml no requiere clases parciales. Esa es una característica del lenguaje C# que utiliza el compilador Xaml. Para C++ y ahora Rust estamos explorando un enfoque completamente diferente que es más natural para esos lenguajes. Y sí, las macros de procedimiento son una excelente manera de resolver esto en Rust. Los usamos ampliamente en winrt-rs .

¿Algún avance en esto?
Editar: Sería genial si hubiera una hoja de ruta para admitir rust con winui

No puedo hablar por el equipo de WinUI, pero gran parte del soporte para Rust provendrá de la proyección del lenguaje Rust/WinRT ( winrt-rs ). En particular, ahora estoy trabajando para agregar soporte para definir e implementar tipos COM y WinRT en Rust . Ese es un requisito previo importante para la integración completa de Xaml. Una vez que esté listo, podemos comenzar a ver cómo iluminar el soporte de enlace Xaml de forma más natural en Rust.

¿Fue útil esta página
0 / 5 - 0 calificaciones