Zero

Zero
Zero

23 noviembre 2006

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.

13 diciembre 2005

Persistencia (y ¡fin!)

Persistencia transparente

El mecanismo de persistencia funciona ya al 100%. Es posible que tenga algún bug, pero el trabajo en sí está hecho.

Trabajar con persistencia es muy, muy sencillo en Zero. Se trata de almacenar los objetos que se desee en un contenedor, y ya está.


reference disney = Container.createChild( "Disney" )
reference donald = Persona.createChild( "donald" )
reference daisy  = Persona.createChild( "daisy" )

donald.ponNombre( "Donald" )
daisy.ponNombre( "Daisy" )

disney.add( donald )
disney.add( daisy )
psRoot.add( disney )


Ésto hará que el contenedor disney, que cuelga del contenedor raiz del almacenamiento persistente (psRoot) se guarde con los objetos que contenga. Una vez éste proceso termina, y el contenedor está por tanto guardado en el almacenamiento persistente, es posible recuperarlo mediante la referencia simple, en otro proceso:


System.console.write( psRoot.Disney.donald.toString() )


... ¡y ya está! ... persistencia cuasi-ortogonal, es decir casi 100% transparente, si no fuese porque hay que elegir el contenedor donde guardar los objetos, pero eso no se considera un problema, sino de hecho, una ventaja sobre el modelo ortogonal puro.

En cuanto a interioridades técnicas, el almacenamiento de contenedores se hace en directorios. Así, el directorio del almacenamiento persistente es ZeroPS y contiene siempre al contenedor raíz.


$ cd ZeroPS
$ dir
Root
Root.zbj

$ cd Root
$ dir
Disney
Disney.zbj
IntStdLib.zbj


Los archivos *.zbj son los archivos de objetos Zero, que pueden lógicamente desensamblarse con la herramienta zd.

Este esquema de funcionamiento tiene varias ventajas: el almacenamiento persistente es manipulable, si se compila un objeto y se coloca en uno de los directorios, automáticamente ese objeto será encontrado por la máquina virtual si es referenciado como si siempre hubiera estado allí. Así, el almacenamiento persistente es manejable y no hay por qué tener miedo a una corrupción masiva ni nada por el estilo.