Saturday, September 01, 2007

Factor 0.90 now available

Factor 0.90 is now available. The web site hasn't been updated yet, so you can't browse the docs online right now; so instead just download it and read the docs in the UI!

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.

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.

Platforms

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.