Microsoft facilita el camino a las API de Windows

0
25

Microsoft, con su proyecto Win32 Metadata, busca hacer que las API de Windows sean más accesibles a más lenguajes, mediante la producción de metadatos para las API. Los lenguajes como Rust, C# y C++ son los primeros beneficiarios de este proyecto.

El proyecto Win32 Metadata, con repositorios en GitHub, tiene como objetivo proporcionar una descripción completa de la WinAPI, permitiendo que se proyecte a cualquier lenguaje de forma automatizada, mejorando así la corrección y minimizando la sobrecarga del mantenimiento. El resultado del proyecto es un archivo de metadatos de Windows compatible con ECMA 335 publicado en Nuget.org. Sin embargo, la descripción precisa de todas las API de Windows llevará tiempo, por lo que los planes también requieren el desarrollo de herramientas para ayudar con el proyecto.

Uno de esos proyectos es C#/Win32, que analiza los metadatos y genera los wrappers P/Invoke necesarios para llamar a las API. Un ejemplo inicial de lo que se puede hacer con las proyecciones dinámicas de las API de Win32, C#/Win32 ofrece capacidades de IntelliSense, así como tipos sólidos para los parámetros. De manera similar, Rust para Windows es una proyección del lenguaje Rust que permite a los desarrolladores de Rust llamar a cualquier API de Windows utilizando código generado sobre la marcha a través de los metadatos. Se puede llamas a las API como si fueran simplemente otro módulo de Rust. También se encuentra en desarrollo una proyección de Modern C++. En una hoja de ruta para el proyecto Win32 Metadata se afirma que los proyectos de C#, C++ y Rust se publicarán en el 2022, después de una revisión este año.

Microsoft trabajará con la comunidad para ofrecer soporte a otros lenguajes según la demanda. El proyecto ha publicado un conjunto de principios y objetivos que incluyen la cobertura máxima de las API. Microsoft afirmó que, si bien las API de Win32 son fácilmente accesibles para C y C++ y otros lenguajes como C# y Rust, necesitan wrappers o enlaces para acceder a ellos. Los desarrolladores se han visto obligados a crear estos wrappers o enlaces, un proceso que es propenso a errores y disperso.

Si bien ha habido proyectos como Pinvoke para .NET y winapi-rs para Rust que ofrecen representaciones más idiomáticas y de tipo fuerte de estos enlaces y wrappers, la cobertura de API amplia y sostenida ha sido costosa y difícil. Con el proyecto Win32 Metadata, Microsoft espera brindar una cobertura de API amplia y sostenible en todos los lenguajes.

 Paul Krill InfoWorld.com