Registro de cambios

Versión 3.01.0948

Parámetros por referencia - Pauscal ahora permite pasar expresiones en los parámetros por referencia. Anteriormente sólo era posible pasar variables.

Mejoras en las DLLs - Se mejoró el sistema de inicio y fin de las DLLs. Ahora el código de inicio de las bibliotecas importadas se ejecuta cuando se carga la DLL, y luego cuando se descarga la misma se destruyen las variables y los objetos creados.

Versión 3.01.0939

Herencia de clases - Se corrigieron múltiples errores al trabajar con casos complejos de herencia de clases, particularmente al hacer uso intensivo de referencias a clases definidas más adelante en el código fuente o en otros archivos.

Bibliotecas precompiladas - Se optimizó el formato de los archivos .prp. Ahora son más pequeños y se procesan más rápido. Pero son incompatibles con versiones anteriores, por lo que los .prp existentes que no sean de la biblioteca estándar deben ser recompilados.

Versión 3.01.0922

Corrección de bugs - Se corrigieron algunos bugs en el editor y en el compilador.

Versión 3.01.0919

Editor mejorado - Se corrigieron múltiples errores en el editor. Además se agregaron estas características:

Archivos grandes - Se corrigieron algunos problemas en el compilador a la hora de procesar archivos muy grandes.

Formato COFF - Las bibliotecas precompiladas están ahora en formato COFF, lo cual abre las puertas para que Pauscal pueda interactuar con código hecho en lenguajes de Microsoft (por ejemplo, Visual C++) sin la necesidad de utilizar DLLs. Lamentablemente esto implica que las bibliotecas precompiladas anteriores son incompatibles con esta versión y deben ser recompiladas.

Cadenas mejoradas - Al trabajar con cadenas de texto, ahora se minimizaron la cantidad de copias internas que se deben mantener, lo cual debería mejorar la performance al trabajar con cadenas largas.

Depurador mejorado - La ventana del depurador ahora puede variar su tamaño, lo que permite trabajar más comodamente.

Versión 3.01.0874

Inspecciones - Se mejoró la forma en que se visualizan las inspecciones en el depurador. También se corrigieron algunos errores que hacían que, en algunos casos, las cadenas no se mostraran correctamente en la ventana de inspecciones.

Versión 3.01.0494

Concatenación de matrices - El operador de concatenación + ahora funciona sobre matrices. Permite unir dos matrices del mismo tipo.

Ayuda - Se agregó la segunda parte de la ayuda de Pauscal.

Versión 3.01.0483

DLLs - Se corrigió un bug en el compilador que hacía que las .dll generadas por Pauscal no puedan cargarse.

Depurador - Ahora no se pueden editar, borrar ni agregar inspecciones mientras el programa se está ejecutando.

Versión 3.01.0476

Devolución de matrices - Los procedimientos ahora pueden devolver matrices dinámicas. Ver la documentación para más información.

Interrupción - Se implementó la instrucción Interrumpir, que produce una pausa en el depurador al ser ejecutada. Esta instrucción puede incluir una condición, en cuyo caso sólo se pausa el programa en caso de que la condición sea verdadera. Si el programa no está siendo depurado, esta instrucción se ignora.

Depurador - Ahora el depurador se ejecuta en subproceso diferente al del programa siendo depurado. Esto evita que el depurador se "cuelgue" cuando el programa ejecuta código que no posee código fuente.

Temporizador - Visual Pauscal incluye un nuevo control: el temporizador. Este control produce un evento cada cierto intervalo de tiempo.

Multimedia - Pauscal ahora posee capacidades multimediales. Ver el reproductor de MP3 incluido con Visual Pauscal para más información.

Operador Es - Se implementó el operador Es, que permite verificar si dos referencias a objetos apuntan al mismo objeto. En tal caso devuelve verdadero.

Versión 3.01.0440

Referencia - Se implementó la palabra clave Referencia que permite pasar parámetros por referencia. Ahora es posible pasar por referencia matrices y estructuras.

Nuevo - Se implementó el operador Nuevo que permite crear instancias de una clase directamente en una expresión. Por ejemplo:

Var Obj:Clase

Obj = Nuevo Clase

Constructor de matrices - Ahora las matrices se pueden construir con el constructor de matrices:

Var Matriz[]:Entero

Matriz = [4, 6, 79]

Constructor de estructuras - Se implementó el constructor de estructuras, que funciona y se utiliza de forma análoga al constructor de matrices.

Ayuda - Se agregó la primera parte de la ayuda de Pauscal.

Error al asociar extensión - Se solucionó un error en Pauscal y Visual Pauscal al asociar la extensión de los archivos al programa.

Operador # - El nuevo operador # permite generar un carácter ASCII del valor especificado:

Var Texto:Cadena

Texto = #32

Constructor/Destructor - Se reemplazó la palabra clave Inicio con Constructor, y la palabra clave Final con Destructor.

Propiedades - Se modificó la forma de declarar las propiedades de variables.

Parámetros opcionales - Los parámetros opcionales ahora pueden especificar el valor predeterminado a emplear cuando se omiten en la llamada.

Constantes de cadena - Ahora las constantes pueden ser de tipo Cadena.

Inspecciones - En el depurador ahora se pueden agregar inspecciones.

Versión 3.01.0384

Bugs - Se repararon algunos errores en el compilador y en el editor de Pauscal.

Versión 3.01.0381

Dibujo - Ahora los formularios y controles poseen un objeto llamado ZonaDibujo, que permite dibujar sobre el control.

Versión 3.01.0378

Referencias cruzadas - Pauscal ahora puede administrar las referencias cruzadas entre objetos, es decir objetos que se referencias mutuamente. En versiones anteriores, Pauscal no destruía ningún objeto que tuviera una referencia cruzada.

Menús - Ahora es posible crear menús utilizando Visual Pauscal.

Versión 3.01.0366

Bibliotecas precompiladas - Ahora se pueden precompilar las bibliotecas. Esto hace que compilar programas sea mucho más rápido. También permite distribuir bibliotecas sin su código fuente.

Referencias adelantadas - El compilador de Pauscal ahora resuelve automáticamente referencias adelantadas. Es decir que ya no son necesarias las clases y procedimientos adelantados.

Procedimientos de inicio - Las bibliotecas pueden poseer uno o más procedimientos de inicio, es decir procedimientos que son llamados al iniciar el programa.

Objetos referenciados - Los objetos (es decir, las instancias de una clase) mantienen ahora una cuenta de las referencia internas. Esto permite que un objeto no sea liberado hasta que no haya más referencias a él.

Versión 3.01.0356

Mejor performance - El compilador trabaja a una velocidad aprox. 35% mayor que la versión anterior. Esto hace que el archivo Pauscal.bdp, que antes muchas personas no lo incluían en sus programas porque lentificaba demasiado la compilación, es procesado en menos de 0,5 segundos en una computadora estándar.

Depurador mejorado - Se hicieron mejoras técnicas en el depurador. Ahora visualiza correctamente las variables locales y el resultado de los procedimientos.

Versión 3.01.0352

Forwarding - Ahora se puede declarar un procedimiento o método, y luego definirlo más adelante.

Liberación de variables - Se reparó un bug que hacía que las variables complejas (estructuras, matrices, etc.) no sean liberadas correctamente al salir de su alcance.

Versión 3.01.0345

Overloading - Se implementó la capacidad de sobrecargar procedimientos y métodos, técnica conocida como overloading en inglés. Ver la documentación adjunta para más información.

Identificadores duplicados - Se mejoró el sistema interno de detección de identificadores duplicados.

Precompilación - Ahora se pueden crear archivos precompilados (con extensión .dec). El uso de estos archivos incrementa considerablemente el tiempo de compilación. Sólo pueden contener declaraciones, es decir variables, estructuras, constantes, funciones externas (APIs) y prototipos.

Versión 3.01.0334

Íconos - El compilador ahora puede agregarle un icono definido por el usuario a los programas compilados.

Versión 3.01.0333

Herencia - Ahora las clases pueden "heredar" las variables, propiedades y métodos de otra clase. Esto permite que una clase posea código reutilizable que puede ser compartido con otras clases.

Puertos - Se renombró la instrucción Enviar como PuertoEnviar y la función Recibir como PuertoRecibir.

Retoques - Se hicieron pequeñas modificaciones al compilador y al editor para que sean más rápidos y estables.

Versión 3.01.0332

Copia de estructuras y matrices - Pauscal ha implementado una característica muy solicitada: el operador de asignación "=" ahora funciona con estructuras y matrices.

Valor de retorno - Ahora las funciones de Pauscal pueden devolver una estructura. Ésta puede ser asignada a una variable compatible o ser pasada como parámetro.

Estructuras por valor - Las funciones y procedimientos aceptan pasar estructuras por valor, es decir pasar una copia de la estructura en lugar de un puntero a ella.

Bug reparado - Al compilar la siguiente porción de código:

Prototipo Prueba(P1:Entero)

Var Variable:Prueba

Variable.P1=7 '<- Esto es un error

ocurría un fallo de protección general en lugar de mostrar correctamente el error.

Liberación de variables - Se mejoró el sistema de liberación de variables. En versiones anteriores ocurría un error al liberar ciertos tipos de matrices y estructuras.

Optimización de EVAL - El código que el compilador genera en un bloque Eval ha sido optimizado. Ahora se utilizan los registros EDI o ESI (siempre que sea posible) para evaluar el objeto o la estructura.

Versión 3.01.0325

Funciones matemáticas - El compilador de Pauscal ahora soporta:

Nota: estas nuevas funciones matemáticas son muy complejas internamente. Deben usarse con cuidado ya que todavía están a prueba, y no han sido testeadas completamente.

Versión 3.01.0314

Callbacks - Ahora Pauscal soporta variables de procedimientos. Estas variables son punteros a la entrada de un procedimiento. Con ellas es posible realizar programas o DLLs que soporten la técnica conocida como callback o "devolución de llamada". Para más información vea el archivo de ejemplo Varproc.pdp.

Versión 3.01.0309

Nuevo bloque - Se implementó una nueva estructura de código llamada Bloque. Permite definir un bloque de código que posee sus propias variables. Estas variables solamente existen dentro del bloque y se destruyen al salir del mismo. Para más información vea el archivo de ejemplo Bloque.pdp.

Precedencia - Ahora los operadores Or/O y Xor poseen mayor prioridad que el operador And/Y en la precedencia de operadores.

Mejor performance - El compilador de Pauscal compila ahora un 30-50% más rápido que la versión anterior.

Versión 3.01.0305

Operador nuevo - Se implementó el operador >?:, que devuelve uno de dos valores posibles dependiendo del estado de una condición. Para más información ver el archivo de ejemplo ExprCond.pdp.

Uniones - Se implementó soporte nativo para las uniones. Una unión es una estructura cuyos miembros comparten la misma zona de memoria. Una unión se declara con la instrucción Union, y posee la misma sintaxis que Estruc.

Estructuras recursivas - Ahora Pauscal permite que una estructura o unión tenga un miembro cuyo tipo sea la misma estructura o unión. Este miembro recursivo debe ser un puntero o una matriz dinámica; de lo contrario ocurre un error de compilación.

Mejor performance - El compilador de Pauscal compila ahora un 10-20% más rápido que las versiones anteriores.

Versión 3.01.0302

Cadenas - El compilador implementó soporte nativo para el tipo de dato Cadena, el cual permite almacenar y manipular cadenas de caracteres fácilmente.

DLLs - Pauscal permite crear bibliotecas DLLs, las cuales pueden usarse desde otro programa de Pauscal o desde otro lenguaje de programación compatible con la convención de llamadas stdcall.

Declaración de variables - Se modificó la forma de declarar variables: ahora es muy similar a la forma de declarar parámetros para procedimientos.

Nuevos modificadores del compilador - Se implementaron dos nuevos modificadores del compilador:

Nuevo operador - Se implementó el operador @@, el cual devuelve la dirección de un puntero. Se utiliza después del nombre de la variable puntero y devuelve un valor de tipo entero con su dirección.

Bugs reparados - Cientos de bugs (errores de programación) han sido reparados. Ahora el lenguaje es más estable.

Versión 3.01.0283

Depurador - Ahora el compilador de Pauscal permite generar información de depuración compatible con el depurador incluido.

Versión 3.01.0280

Mejoramiento del Control Estructurado de Errores - Ahora no queda pendiente la llamada de Windows cuando ocurre un error. Esto permite que el programa ocupe menos memoria y funcione más eficientemente.

Versión 3.01.0279

Llamadas Externas Mejoradas - Se mejoró el sistema de llamadas externas (es decir funciones en DLLs). Ahora el código para cargar las funciones se genera una vez para cada función; antes se generaba una vez por cada llamada. De esta forma se reduce el tamaño del ejecutable.

Nueva Instrucción GenerarError - Esta instrucción permite generar un error definido por el usuario. Salta al controlador de errores más cercano si existiera, o de lo contrario se termina la ejecución inmediatamente mostrando el clásico mensaje "El programa ha efectuado una operación no admitida y se cerrará...". Ver el archivo de ejemplo GenErr.pdp para más información.

Versión 3.01.0275

Controlador Estructurado de Errores - Se implementó el tan esperado Controlador Estructurado de Errores (o SEH en inglés). Tiene forma de una estructura de control común, pero en realidad permite administrar los errores de una forma muy flexible (ver los archivos de ejemplo para más información).

Error con los parámetros opcionales - Se solucionó un extraño error con respecto al paso de parámetros opcionales a los procedimientos. Si se omitían más de dos parámetros, el compilador generaba un error. Se podía solucionar incluyendo comas por cada parámetro omitido, para marcar explícitamente la omisión.

Versión 3.01.0264

Mejora en los procedimientos - Se implementó la variable especial Resultado. En ella se almacena el resultado de un procedimiento (o sea, el valor que devolverá). Antes, se debía utilizar la instrucción Devolver , pero al utilizarla se salía del procedimiento automáticamente. En cambio, la variable Resultado funciona como cualquier otra (excepto que no se puede obtener su dirección).

Versión 3.01.0261

Nuevos tipos - Se implementaron dos nuevos tipos de datos: EnteroSig y ByteSig. Permiten almacenar números enteros con signo. Ahora el carácter '!', que permitía la comparación lógica con signo, fue eliminado.

Iniciación de variables locales - Se mejoró el sistema de inicialización de variables locales. Antes se realizaba una llamada a las APIs de Windows, ahora se inicializan utilizando código propio.

Versión 3.01.0243

Modificadores del compilador - Se implementaron dos modificadores para el compilador:

Si (num<20) y (num<(60+matriz[num*5]\(num*3))) ...

Si num no es menor a 20, el ciclo Si no será ejecutado. Por lo tanto, la expresión no se sigue evaluando. Esto permite acelerar algunas expresiones complejas.

Comillas - Ahora se permiten las comillas dobles dentro de las constantes de cadena. Para incluir una comilla doble, la misma debe aparecer dos veces dentro de la constante de cadena. Así:

Mensaje("Hay una comilla "" dentro del texto")

Versión 3.01.0237

Salida de bucles - Se implementaron las salidas de los bucles Contar, Mientras, Repetir, etc. Antes, la única forma de salir de un bucle, por ejemplo, Contar era utilizando la instrucción IrHacia. Esto hacía que la ejecución saltara directamente a la etiqueta de línea indicada. Al hacer esto, el programa funcionaba de una forma impredecible, ya que dicho bucle utiliza la pila para almacenar valores temporales y, si el bucle no es terminado correctamente, la pila no apunta a la dirección correcta.

Por medio de la instrucción Salir, se puede salir de cualquier estructura de control o bucle. Su sintaxis es así:

Salir <nombre_estructura>

Por ejemplo:

Salir Contar

Puntero a objetos - Ahora se pueden crear punteros a objetos. Esto permite tener dos o más variables de objeto haciendo referencia al mismo objeto.

Versión 3.01.0230

Evaluador de expresiones constantes - El compilador de Pauscal ahora evalúa todas las expresiones que puede antes de compilar. Por ejemplo, si en una línea de algún programa dijera:

Num = 9 * 3 + Num

El compilador lo traduciría en:

Num = 27 + Num

Versión 3.01.0225

Clases y Objetos - Ahora Pauscal permite el uso de clases y, por lo tanto, de objetos. Esto permite crear programas muy flexibles y subrutinas reutilizables.

Versión 3.01.0220

Constantes - Ahora en Pauscal se pueden definir constantes numéricas que luego se pueden referenciar con un identificador.

La información sobre versiones anteriores a la 3.01.0220 no está disponible.