miércoles, 30 de marzo de 2016

Herramientas mágicas: Gcov

Hoy retomo la serie de "herramientas mágicas" para presentarles GCov. Es una herramienta que yo al principio ni conocía, ni tampoco conocía ninguna de su tipo. Alguien alguna vez en el foro me sugirió que la integre en ZinjaI, y lo hice (de una forma bastante básica) solo porque me costaba poco tomando la integración previa de GProf como base. Pero luego de eso, con el tiempo le fui encontrando usos, empezando por uno no tan obvio y, recientemente, para lo que usualmente se supone que es.

miércoles, 23 de marzo de 2016

La compilación según ZinjaI (parte I)

Para que al presionar F9 en ZinjaI podamos ver nuestro programa ejecutándose tienen que ocurrir unas cuantas cosas. La más importante de ellas, es la compilación de ese programa. ¿Cómo construye ZinjaI las llamadas a GCC necesarias para compilar un programa? La respuesta varía según el modo de trabajo. Para programas simple (cpp único sin proyecto) pasa una cosa, para un proyecto pasa otra. En ambos casos la respuesta es compleja e involucra información de muchas fuentes diferentes. En esta serie de posts voy a documentar qué ocurre exactamente al presionar F9 para entender de dónde sale cada partecita de cada paso, y especialmente cómo se llega a la llamada final a GCC.

miércoles, 16 de marzo de 2016

Describiendo los cuadros de diálogo de ZinjaI

Tengo en ZinjaI muchísimos pequeños y no tan pequeños cuadros de configuración. Estos cuadros suelen representar un conjunto bastante lineal de "valores" configurables. En general estos "valores" se pueden reducir a tres o cuatro tipos básicos, y entonces todos los cuadros y paneles se pueden reducir a una lista ordenada de valores con sus tipos, más unas pocas indicaciones adicionales y opcionales sobre el estilo visual o pequeños agregados. Estuve rediseñando todo el código alrededor de la confección de estos cuadros de diálogo para que reorganizarlos, cambiar los estilos, o agregar y quitar elementos sea mucho más simple, rápido, y a prueba de errores.

domingo, 13 de marzo de 2016

ZinjaI en Windows: ¿Qué compilador elegir?

Existen muchos ports a Windows de GCC y de las demás herramientas/bibliotecas afines. En ZinjaI siempre usé MinGW. En su momento, hace unos años, era la opción por defecto casi sin pensarlo, pero la situación ha cambiado. Para empezar, MinGW ha quedado atado por definición a los 32 bits, mientras que la mayoría de las PCs modernas y sus sistemas operativos son de 64. Para seguir, el ritmo de actualización de MinGW se ha ralentizado bastante, o al menos eso parece en comparación con la velocidad a la que han avanzado las demás versiones. El problema es que las alternativas son muchas, hay nuevas decisiones que hacer para elegir una, y desde mi punto de vista no emerge una opción claramente ganadora de todo esto.

miércoles, 2 de marzo de 2016

El paso a wxWidgets 3.x

Como comenté hace poco, la actualización de la biblioteca wxWidgets (wx) es un cambio interno en ZinjaI y PSeInt que vengo esquivando hace rato. wx es conocida principalmente por permitir generar interfaces (GUIs) de forma portable (entre plataformas). Pero en realidad es un framework completo, que ofrece muchísimas otras abstracciones de distinta índole. Por ejemplo, gestiona el lanzamiento de procesos hijos y las tuberías de entrada/salida para controlarlos, ofrece una interfaz para conexiones TCP/IP, tiene sus propios threads, su propio manejo de cadenas, etc. En ZinjaI y PSeInt uso casi todo eso, lo que es de interfaz, y también lo que no.