-
Notifications
You must be signed in to change notification settings - Fork 3
Building_History
Un poco de historia sobre los cambios de compilador y librerías usadas.
Emuteca está principalmente desarrollado en Object Pascal. Aunque a lo largo del tiempo se han ido usando distintos compiladores. E incluso se han hecho pruebas en otros lenguajes.
Inicialmente en su versión 0.1pre se hizo con Lazarus pero el componente estrella, VirtualTreeView, no estaba totalmente portado a Lazarus y tenía algunos errores... así que acabé pasando el código a Delphi 2006.
A partir de la versión 0.5, ya no es tan estrella puesto que pasó de ser la "estructura organizadora" a ser solo un componente para visualizar los datos.
Una vez, ya con Delphi 2006, al ver que no funcionaba en Win9X/Me entonces di marcha atrás hasta Delphi 7 (En otras palabras, había desinstalado WinXP, para instalar WinME y no podía ni ejecutar mi propio programa ni seguir desarrollándolo).
Con la versión 0.5, hubo un intento de volver a Delphi 2006... (vuelvo a tener XP, por la necesidad de usar un programa) aunque me retracté, y quise mantener la compatibilidad con Win9X.
Continué con Delphi 7 hasta la versión 0.6, y para la versión 0.7 tenía pensado darle otra oportunidad a Lazarus. Pero el problema del Win32Induc aceleró y ratificó de forma definitiva que usaría este último compilador a partir de ese momento
La verdad, es que inicialmente como el VirtualTreeView había dejado de ser la parte más importante, decidí sustituirlo por dos TListView (una para grupos y otra para las versiones), aunque finalmente se volvió a poner el VirtualTreeView que ya era bastante funcional en Lazarus.
Sorprendentemente además conseguí "solucionar" el otro detalle importante que preocupaba: las librerías JCL y JVCL puesto que las usaba para descomprimir archivos.
Las otras soluciones no me terminaban de convencer y se me ocurrió probar a ver si eran compatibles con Lazarus... en un principio añadí todas las dependencias de JclCompression (¡Una burrada de código!), corregí los errores de compilación (más bien la puse entre comentarios, y resultó que no se usaba esa parte de código), recompile los .o necesarios porque FPC usa otro formato (vaya, esto no tiraba, bueno los 7z sí, pero zip no), cambié los .inc para que usaran zlib1.dll y ¡Tachán! como la seda.
Aunque es una pena la necesidad de 300.000 líneas para manejar ficheros comprimidos con un montón de estructuras y cosas repetidas...
Posteriormente, de casualidad, conocí el Lazarus con esteroides CodeTyphon y que además incluía básicamente todos los componentes añadidos, excepto el JclCompression (y bueno, versiones más antiguas de VirtualTreeView y Pascal Script que usaba). Me gustó y me quedé con él.
Ya solo quedada una espina clavada del cambio desde Delphi a Lazarus... las ¡300.000 líneas! Con Delphi las daba algo más de uso, pero es que con Lazarus era un derroche... Pero seguía sin encontrar algo que me convenciera para sustituirlo. Así que un día me levanté y me puse a hacer una interfaz simple y cutre que realice llamadas a 7z.exe y 7zG.exe para quitar todo ese código desaprovechado.
Durante unos años dejé el proyecto un poco de lado, aunque estuviera incompleto, era bastante funcional y continúaba usando Emuteca; tan sólo corregía algún que otro errorcillo. Cuando lo quise retomar otra vez un poco más en serio para añadirle una serie de cosas (por ejemplo listar juegos independientemente del sistema del que fueran), ví que tenía que reestructurar toda estructura interna y comenzar como quien dice desde cero. Y sin haber mostrado al menos una beta de la versión 0.7 pasé a la 0.8.
Al comienzo de dicha estructuración estuve probando otra serie de puntos de vista en la forma de gestionar la estructura, separar datos de sus vistas y demás. Aunque en el fondo al final no es que haya cambiado demasiado...
Todo esto, usando CodeTyphon para compilar. Hasta que llegó una versión en la que en su manía de querer ocultar sus raices de Lazarus decidieron cambiar las extensiones de los archivos usadas por Lazarus y otras cosas. Que fue cuando decidí volver a usar Lázarus oficial otra vez para la versión 0.8 junto a un par de componentes externos: PascalScript y VirtualTreeView.
A partir de Lazarus 2.0.10, se comenzaron a usar las versiones de dichos componentes incluidas en el Administrador de Paquetes en Línea.
Con el paso del tiempo tan sólo se ha ido actualizando Lazarus y FPC.