Unos días atrás compilé Gforth 0.7.9 (http://gnu.org/software/gforth),
que aún está en desarrollo, para sustituir la última versión estable,
0.7.3, que he estado usando los últimos años.
Hay muchas novedades interesantes. La que primero llama la atención es
el uso del color: las advertencias se muestran en azul y los errores en
rojo. Esto es configurable, aunque aún no está documentado. En mi
librería personal (llamada Galope, todavía inédita), uso un sistema
alternativo, basado en un módulo de Forth Foundation Library, para
controlar el color en la terminal, y que por tanto, probablemente,
dentro de algún tiempo ya no necesite.
Como cabía esperar, Gforth 0.7.9 ya está más cerca de Forth-2012. Por
ejemplo, incluye `{:` para crear variables locales (aunque lógicamente
la antigua palabra `{` no se ha eliminado). También incluye `synonym`,
`[:` y `;]`, así como el polémico sistema de reconocedores, que aún está
en discusión y por tanto no forma parte del estándar, pero que una idea
muy prometedora, pues permite a las aplicaciones ampliar y reescribir el
intérprete de una forma imposible hasta ahora, con la misma sencillez
con que se configura el orden de búsqueda de las listas de palabras, por
ejemplo...
Pero el cambio de Gforth 0.7.3 a 0.7.9 hizo que la mayoría de mis
programas dejara de funcionar. Por suerte fue fácil de arreglar.
Por ejemplo, muchos de mis programas usaban el operador de cadenas `s+`,
que estaba sin documentar pero que en su día descubrí por casualidad. He
visto que fue eliminado del repositorio hace años... Lo he añadido a
Galope:
----
: s+ {: ca1 len1 ca2 len2 -- ca3 len3 :}
len1 len2 + allocate throw {: ca3 :}
ca1 ca3 len1 move
ca2 ca3 len1 + len2 move
ca3 len1 len2 + ;
\ Create a new string _ca3 len3_ in the heap, containing the
\ concatenation of string _ca1 len1_ (first) and string _ca2 len2_
\ (second).
----
Además, en Gforth 0.7.3 `basename`, `dirname`, y `scan-back` estaban
definidas en la lista de palabras `forth-wordlist`, pero en Gforth 0.7.9
están definidas en el vocabulario `c-lib`. Simplemente, he añadido a mi
librería Galope módulos con sinónimos de estas palabras creados en
`forth-wordlist`, para que vuelvan a estar accesibles como antes para
las aplicaciones.
Nada grave pues.
--
Marcos Cruz
http://programandala.net