Zero

Zero
Zero

21 diciembre 2006

Valores primitivos numéricos

Hasta ahora, un código como el siguiente:


reference num1 = 1.0;
reference num2 = 5;

reference resultado = num1 * num2;


Hubiera provocado una excepción de tipo, ya que el código de manejo de las operaciones entre valores numéricos es realmente simple.

La razón es que uno de los valores es de un "tipo" (flotante) y el otro de otro tipo (entero).

Ésto provocaba una paradoja: en una máquina virtual sin tipos, resulta que había que convertir un número a flotante antes de realizar cualquier operación entre un flotante y un entero.

Ahora este código funciona correctamente, habiendo además eliminado mucho código "duplicado", es decir, que sólo servía para un tipo u otro.

23 noviembre 2006

Nueva versión de Zero y Prowl

Pronto publicaré una nueva versión tanto de Zero como de Prowl.

Prowl ha sufrido varias mejoras relacionadas con la estabilidad de la aplicación y la calidad del código generado.

Macroensamblador

Ahora el macroensamblador genera sólo código fuente ensamblador, de la misma manera que lo hace Prowl.

Así, ha sido rebautizado como zma, y para compilar sería necesario:


$ zma HolaMundo.zm

$ za HolaMundo


Si bien ya hay disponible un lanzador llamado zm que automatiza la tarea en un solo paso:

$ zm HolaMundo

Exactamente igual que antes.

De esta forma, za es definitivamente el único que proporciona un backend de compilación, de manera que no es necesario duplicar esfuerzos innecesariamente.

Pulido de persistencia

Gracias a Ricardo Linero Torres, he comprobado el sistema de persistencia solucionando un par de molestos bugs.

Uno de ellos hacía que no todos los objetos de grabaran en un vector (a no ser que uno de ellos fuera un primitivo).

El segundo hacía que la máquina reventara en ciertas situaciones en las que tenía que recuperarse de errores en el almacenamiento persistente (como en Windows 2000 o XP, donde los directorios pueden tener permisos distintos del que ejecuta el proceso).

Ahora la máquina es mucho más estable.

11 octubre 2006

Prowl

El último trabajo desde Abril ha consistido en mejorar el compilador Prowl. El propósito inicial era mejorar la persistencia en la máquina virtual, si bien al querer compilar varios ejemplos me he dado cuenta de que el compilador estaba generando código incorrecto en situaciones muy comunes.

Por ejemplo, para la siguiente instrucción (un mensaje):


miVector.process( DisplayByConsoleProcessor );


debía generar:


SET DisplayByConsoleProcessor
MSG miVector process __acc


y estaba generando:


MSG miVector process DisplayByConsoleProcessor


O, peor todavía:


System.console.write( psRoot.Exe.A );


generaba:


MSG psRoot.Exe A
MSG System.console write __acc


cuando debía generar:


SET psRoot.Exe.A
MSG System.console write __acc


Ahora, sí, empieza el trabajo de pulido del soporte de persistencia en la máquina virtual.

17 abril 2006

Screencasts, demostraciones animadas

He subido un par de demostraciones (screencasts) a la web de Zero, con el uso de Prowl, a la vez que he puesto algunos ejemplos también hechos con Prowl.

Web de Zero

28 marzo 2006

Nuevo tutorial

He subido a la web un nuevo tutorial sobre la utilización de Visual Zero, en este caso sobre cómo utilizar persistencia con él.

27 marzo 2006

Documentación sobre el lenguaje Prowl

La página web ha sido actualizada con documentación sobre el lenguaje de alto nivel Prowl.

Este lenguaje es muy parecido en cuanto a sintaxis de definición de objetos al macroensamlabdor, si bien el cuerpo de los métodos soporta una sintaxis más parecida a C, en cuanto a bucles, if's ... etc.

http://trevinca.ei.uvigo.es/~jgarcia/TO/zero

22 marzo 2006

Nueva documentación

Hay nueva documentación en la página web sobre Zero, esta vez explicando los mecanismos de persistencia de esta máquina virtual.


http://trevinca.ei.uvigo.es/~jgarcia/TO/zero/

20 marzo 2006

Zero v3.0 publicado

La versión 3.0 de la máquina virtual ha sido publicada, finalmente, incorporando varias características comentadas aquí:
- soporte de reflexión estructural
- persistencia transparente
- Visual Zero mejorado ampliamente; también traducido al inglés
- Lenguaje de programación prowl liberado para el uso con Zero MV ... ¡por fin un lenguaje de alto nivel para la Zero!

Muchas de estas características han sido publicadas en el blog, si bien, poco a poco, empezaré a incluir documentación más adecuada en la página web.

http://trevinca.ei.uvigo.es/~jgarcia/TO/zero

13 marzo 2006

Visual Zero

La liberación de la nueva versión de Zero se está demorando debido a la mejora y pulido de Visual Zero. Ahora, la aplicación soporta los idiomas inglés y castellano,

Se están preparando diversas publicaciones.

19 enero 2006

Puliendo el mecanismo de persistencia

Charla en Oviedo

En diciembre impartí una pequeña charla en Oviedo. Las transparencias las he puesto en la web de Zero, en la sección de publicaciones.

Comencé la charla sobre los mecanismos de persistencia disponibles en los lenguajes de programación, desde una perspectiva histórica (¡incluso el PL/I!), hasta centrarme en .net y C# 3.0 (especialmente con LINQ), para, tras repasar los servicios de XML, hablar finalmente de librerías que proporcionan servicios cuasi persistentes, como nHibernate, y especialmente db4Objects(de las que hice sendas demostraciones). Finalmente, hice una demostración de persistencia con la versión de desarrollo de Zero, comparando el coste en esfuerzo por parte del programador con las otras posibilidades.

Puliendo el soporte de persistencia

El trabajo continúa y ahora el mecanismo de persistencia está siendo pulido, en detalles como que contenedores que no han sido modificados no sean guardados por la máquina virtual. Para ello, sólo ha sido necesario extender ligeramente la implementación del patrón observador presente en la arquitectura de la máquina virtual.

Pronto será liberada una nueva versión, que comparada con la anterior, supondrá un salto cualitativo.