Disponible GNU Smalltalk 3.2
El día 2 de Mayo, Paolo, liberó la versión 3.2 de GNU Smalltalk
Según la definición de su web:
GNU Smalltalk, es una implementación libre del lenguaje Smalltalk-80. Funciona en la mayoría de los sistemas operativos compatibles POSIX (incluyendo Linux, por supuesto), al igual que bajo Windows. Smalltalk, es un lenguaje dinámico orientado a objetos.
La versión 3.2, podéis descargarla desde aquí:
- ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-3.2.tar.gz
SHA1 checksum: d951714c4fc7d91d06bdc33c20905885e5d2b25f - ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-3.2.tar.xz
SHA1 checksum: 1ff71bf0be7e238eba9485eb6a016bc4faa07cea
Aunque, debido a algunos problemillas de comunicación entre Paolo y el equipo de VisualGST, seguramente, en los próximos días, salga a la luz la versión 3.2.1 con más mejoras.
Según comenta, las principales características de la nueva versión, incluye descarga de paquetes remotos (para proyectos hospedados en smalltalk.gnu.org), un nuevo Browser basado en GTK+, un callgraph profiler e incremental garbage collection.
Los detalles tras el salto....
Os pongo la lista detallada de cambios traducida con mi inglés de CCC. Cambios desde la versión 3.1, es:
Cambios y soluciones a bugs con incompatibilidades hacia atrás.
- Collection>>#anyOne dá un error si el receptor está vacío.
- "aNumber raisedToInteger: 0" lanzará una excepción si, y sólo si, aNumber no es un valor de punto flotante.
- Interval>>#first and Interval>>#last dá un error si el intervalo se encuentra vacío. (ejemplo start > stop y el step es positivio, o start < stop y el step es negativo).
- SequenceableCollection>>#sortBy: se ha renombrado a #sort:. El antiguo mensaje no se proveé para compatbilidad hacia atrás.
- La semántica para directorios recursivos descendientes fué ajustada como sigue 1) Los directorios '.' y '..' no son pasados; 2) Para #do:, el archivos es pasado directamente 3) antes que la descendencia comience, el directorio mismo es pasado al bloque.
- El parser XML ignorará espacios en blanco si se encuentra en modo no validación.
- La manera sugerida para parsear un XML, ahora, es usando "SAXParser defaultParserClass", qué trabajará con cualquiera de los dos parsers disponibles (el parser existente de Smalltalk , y los bindings para Expat; mirar más abajo).
Nuevas características (clases base)
- El redondeo de punto flotante a entero es ahora corregido también para números muy grandes. fix contribuido por Nicolas Cellier.
- Métodos han sido añadidos a Integer para imprimir números con padding a un específico tamaño.
- Nuevos métodos para FilePath #owner:, #group:, #owner:group: permitiendo configurar el grupo y propietario de un archivo.
- Modo de envío, hora del fichero y owner setters a un decorador de directorios recursivo (como `Directory working all') configura el modo/hora/propietario en todos los archivos bajo el path.
- Mejoras de velocidad para hashed collections
- String>>#subStrings: acepta un carácter simple de separación o también,de acuerdo al ANSI, un String manteniendo una lista de separadores.
- El antiguo manejo de excepciones basado en instancias ha sido eliminado. Excepciones basadas en calases del Standard ANSI están disponibles desde GNU Smalltalk 1.8.2.
- El método #inspect ahora está disponible también como Object>>#examine y Object>>#examineOn:, por lo que también trabajará en streams arbitrarios y estará disopnible cuando un GUI es cargado. Contribuído por Stefan Schmiedl.
Nuevas características(utilidades)
- gst-convert puede crear fileouts de Squeak.
- Nueva interfaz gráfica VisualGST, cargada con gst-browser. El viejo Browser continúa disponible, pero obsoleto.
- Nuevo paquete ProfilerTools para callgraph profiling de aplicaciones Smalltalk. gst-profile tool will create profiles in callgrind-compatible format. Contributed by Derek Zhou.
- Proyectos hospedados en smalltalk.gnu.org pueden ser descargados y actualizados directamente a través de la red. El repositorio smalltalk.gnu.org guarda la locaholds the location of the package.xml files, which point to the svn or git URL of the code. In order to download a package with git, version 1.6.2 is required.
- SUnit admite fallos esperados.
Nuevas Características (VM)
- Arreglos en la heurística de garbage collection proveen rendimiento mejorado en programas que alogen muchos objetos de larga-vida. Contribuído por Derek Zhou.
- Los Números de punto flotante ahora son leídos correctamente.
- En reposo GNU Smalltalk realizará recolección de basura incremental. Cuando finalice, GNU Smalltalk consumirá cero CPU.
- Port para Windows reescrito en su mayor parte. Debería funcionar perfectamente a excepción de los sockets (el código concerniente a sockets, seguramente sea reescrito para todas las plataformas para la versión 3.3). Un instalador experimental estará disponible pronto.
- Soporte en un sentido para become (Object>>#becomeForward:).
- Los milisegundos del reloj, usan CLOCK_MONOTONIC donde esté disponible.
Nuevas Características(paquetes)
- Muchas mejoras en los bindings Gtk.
- NetClients soporta comandos ESMTP.
- Nuevo goodie, el framework de persistencia de objetos SandstoneDb.
- Swazoo actualizaco a la versión 2.2, además de arreglos locales.
- El paquete Complex usa algoritmos estables numéricos
- El paquete Continuations provee continuations delimitados por BlockClosure>>#shift and BlockClosure>>#reset. Ambos métodos aceptan un bloque (1-arg para shift, 0-arg para reset).
- Un XML pull parser es incluido en el paquete XML-PullParser. El paquete está basado en los pull parsers de VisualWorks y Squeak creados por Anthony Blakey and Ken Treis.
- En adición al parser de validación XML un parser de no validación basado en Expat está disponible en el paquete XML-Expat. El parser Expat es experimenta, pero es muy rápido y soporta tanto operaciones pull como push.
Solución de errores
- Code running as a Generator now honors exception handlers outside the Generator block.
- Arreglado copiado de Dictionary a asociaciones no compartidas subyacentes ¿?.
- Arreglado expresiones ##() que retornan un bloque.
- EPIPE es manejado correctamente.
- Ejecutar en kernels sin soporte SOCK_CLOEXEC no fallarán si la VM fué compilada para un kernel que lo soporte.
- El paquete Sockets falla al inicializar cuando la máquina no está conectada a la red..
- El Transcript ahora usa RecursionLock. This fixes crashes when an exception occurred while printing a backtrace.
Varios
- GNU Smalltalk ahora no confía más en versiones específicas (antiguas) de libtool..
- GNU Smalltalk intenta activar automáticamente el Emacs mode en sistema que soporten un sirectorio site-lisp/site-start.d
- Automcompletion REPL incluye todos los símbolos incluyendo mensajes unitarios(y nombres de variable).
- Variables de procesos locales, están ahora guardadas en un IdentityDictionary en vez de un LookupTable.