Lots of changes:
Core
- New module system. (Eduardo Cavazos)
- Tuple constructors are defined differently now.
- Mixin classes implemented; these are essentially extensible unions.
- New float-array data type implements a space-efficient sequence of floats.
- Moved <file-appender>, delete-file, make-directory, delete-directory words from libs/io into the core, and fixed them to work on more platforms.
- New host-name word.
- The directory word now outputs an array of pairs, with the second element of each pair indicating if that entry is a subdirectory. This saves an unnecessary stat call when traversing directory hierarchies, which speeds things up.
- IPv6 is now supported, along with Unix domain sockets (the latter on Unix systems only). The stack effects of <client> and <server> have changed, since they now take generic address specifiers; see Networking.
- The stage 2 bootstrap process is more flexible, and various subsystems such as help, tools and the UI can be omitted by supplying command line switches; see Command line switches for bootstrap.
- The -shell command line switch has been replaced by a -run command line switch; see Command line switches for general usage.
- Variable usage inference has been removed; the infer word no longer reports this information.
- Stand-alone image deployment in tools.deploy vocabulary .
- Stand-alone application bundle deployment on Mac OS X in tools.deploy.app vocabulary.
- New vocabulary browser tool in the UI.
- New profiler tool in the UI.
- Most existing libraries were improved when ported to the new module system; the most notable changes include:
- asn1: ASN1 parser and writer. (Elie Chaftari)
- benchmarks: new set of benchmarks.
- cfdg: Context-free design grammar implementation; see http://www.chriscoyne.com/cfdg/. (Eduardo Cavazos)
- cryptlib: Cryptlib library binding. (Elie Chaftari)
- cryptlib.streams: Streams which perform SSL encryption and decryption. (Matthew Willis)
- hints: Give type specialization hints to the compiler.
- inverse: Invertible computation and concatenative pattern matching. (Daniel Ehrenberg)
- ldap: OpenLDAP library binding. (Elie Chaftari)
- locals: Efficient lexically scoped locals, closures, and local words.
- mortar: Experimental message-passing object system. (Eduardo Cavazos)
- openssl: OpenSSL library binding. (Elie Chaftari)
- pack: Utility for reading and writing binary data. (Doug Coleman)
- pdf: Haru PDF library binding. (Elie Chaftari)
- qualified: Refer to words from another vocabulary without adding the entire vocabulary to the search path. (Daniel Ehrenberg)
- roman: Reading and writing Roman numerals. (Doug Coleman)
- scite: SciTE editor integration. (Clemens Hofreither)
- smtp: SMTP client with support for CRAM-MD5 authentication. (Elie Chaftari, Dirk Vleugels)
- tuple-arrays: Space-efficient packed tuple arrays. (Daniel Ehrenberg)
- unicode: major new functionality added. (Daniel Ehrenberg)
Performance
- The curry word now runs in constant time, and curried quotations can be called from compiled code; this allows for abstractions and idioms which were previously impractical due to performance issues. In particular, words such as each-with and map-with are gone; each-with can now be written as curry* each, and similarly for other -with combinators.
- Improved generational promotion strategy in garbage collector reduces the amount of junk which makes its way into tenured space, which in turn reduces the frequency of full garbage collections.
- Faster generic word dispatch and union membership testing.
- Alien memory accessors are compiled as intrinsics where possible, which improves performance in code which iteroperates with C libraries.
- Networking support added for Windows CE. (Doug Coleman)
- UDP/IP networking support added for all Windows platforms. (Doug Coleman)
- Solaris/x86 fixes. (Samuel Tardieu)
- Linux/AMD64 port works again.
A big thank you to all the contributors and testers who made this release possible.
No comments:
Post a Comment