CrossBind es un transpilador que tiene como entrada código fuente del lenguaje llamado Haibt el cual es un DSL (Domain Specific Language) bautizado así en honor a Louis Haibt, lenguaje cuyo diseño se basa en la creacion de componentes para UI que luego se traducen a alguno de los distintos frameworks de Javascript que se soporten a travez de los plugins.
CrossBind se distribuye bajo licencia Apache 2.0, es un proyecto de código abierto, toda la información relacionada al desarrollo del proyecto se encuentra en Azure Devops. Repositorios de código fuente de todos los proyectos, lista de tareas, los miembros del equipo y sus responsabilidades, calendarios de entrega y features planeadas, bugs declarados, reportes detallados de testing y coverage, descarga artefactos de la compilación usando el CI/CD y la wiki. CrossBind está desarrollado enteramente en lenguaje C# versión 10 usando la versión .NET 6.0 LTS por lo que este proyecto es multiplataforma. Actualmente las dos plataformas soportadas son Windows en su versión 64 bits y sistemas linux ( principalmente las basadas en ubuntu) en 64bits únicamente.
CrossBind en sí no solo es el transpilador sino toda la infraestructura que soporta al lenguaje Haibt esto incluye el transpilador que genera los códigos, la CLI que se encarga de cargar dinámicamente los plugins, el Lenguaje Service Provider (LSP) que realiza diagnósticos y autocompletado del lenguaje, la extensión de Visual studio code y los paquetes distribuidos en Nuget para la creación de plugins. En otras palabras CrossBind son un conjunto de herramientas y utilidades que ayudan a que el desarrollo en lenguaje Haibt sea lo más ameno posible.
Proyecto que contiene las definiciones del CMU y de la interfaz que tanto la CLI como los plugins implementan para poder interoperar. Además posee algunas clases de utilidad como procesamiento de CSS y extracción de metadata para que el plugin pueda generar el código más preciso posible. Este Assembly (DLL) se distribuye como un paquete en Nuget.org
Este proyecto no funciona por sí solo, únicamente provee todas las herramientas para convertir de código fuente a las estructuras CMU y manejo de errores, este Assembly también se distribuye por Nuget.org y está ahí para aquellas personas que deseen escribir su propia versión del resto del compilador pero sin tener que lidiar con los aspectos de la primera etapa de compilación ni estar pendiente de los estándares del lenguaje.
Este de aquí es el típico ejecutable. posee comandos relacionados a la transpiración y manejo de plugins, esta es la parte que carga dichos plugins de manera dinámica y luego de la primera etapa del proceso se encarga de pasar los CMUs al plugin correspondiente con las opciones especificadas por el usuario. Este proyecto está más orientado a aquellos desarrolladores que prefieran usar la línea de comandos para compilar las cosas manual o sistemas de CI/CD que necesiten compilar sus códigos en la nube.
Este es un proyecto fuera del repositorio principal y está hecho en Typescript, este es un tipo de proyecto especial que atiende al formato VSIX es decir una extensión para visual studio code y su función principal es la de unir el editor con el LSP del proyecto CrossBind Lang que es un ejecutable y añadir UI al editor para que el desarrollador pueda dar click en los iconos y compilar su código sin necesidad de utilizar la CLI de manera directa.