Factor 0.75: ------------ + Runtime and core library - Fix for a fatal bug where Factor was not functional on Mac OS X 10.4. - Client sockets were not functional on Linux. - New generational garbage collector. There are two command line switches for controlling it: +Yn Size of 2 youngest generations, megabytes +An Size of tenured and semi-spaces, megabytes - Generic words can now dispatch on stack elements other than the top one; define your generic like this to dispatch on the second element: G: foo [ over ] [ type ] ; Or this for the third: G: foo [ pick ] [ type ] ; Note that GENERIC: foo is the same as G: foo [ dup ] [ type ] ; - Sequence API refactoring, as described in http://www.jroller.com/page/slava/20050518. - The SO_OOBINLINE socket flag is now set. In 0.74, sending out-of-band data could fill up the buffer and cause a denial-of-service attack. - You can now set timeouts for I/O operations with the set-timeout generic word. The HTTP server sets a timeout of 60 seconds for client requests. - Improved the words for doing binary I/O; see library/io/binary.factor and the section in the handbook on binary I/O. + Compiler - The compiler now does constant folding for certain words with literal operands. The compiler's peephole optimizer has been improved. - The alien interface now supports "float" and "double" types, and arrays of C types. - New short-hand syntax for defining words that alien-invoke (Alex Chapman). LIBRARY: gl FUNCTION: void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) ; should be the same as doing: : glTranslatef ( x y z -- ) "void" "gl" "glTranslatef" [ "GLfloat" "GLfloat" "GLfloat" ] alien-invoke ; \ glTranslatef compile + Framework - OpenGL binding in contrib/gl/ (Alex Chapman). - PostgreSQL binding in contrib/postgresql/ (Doug Coleman). - HTTP server now supports virtual hosting. - The Factor plugin now supports connecting to Factor instances on arbitrary host and port names. This allows interactive development on one machine while testing on another. A new command was added to evaluate the word definition at the caret in the listener. Factor 0.74: ------------ C library interface ported to Linux/PPC and Mac OS X. Developer's handbook rewritten to be more up to date and complete. Added the sequences vocabulary that unifies code for working with lists, vectors, strings, and string buffers. There are many changes, and most of the old type-specific words such as vector-nth and string-map are gone. Added the matrices vocabulary for working with mathematical vectors and matrices. Added two words for modular arithmetic in the math vocabulary: mod-inv and ^mod. Added HTTP client API supporting GET and POST requests in the http-client vocabulary. Removed some inspection words: vocabs. words. usages. Now, just put a space before the . and write vocabs . words . usages . Redefining words that are used by compiled words automatically decompiles the compiled words. This fixes the problem of new definitions not taking effect. In a future release, there will be automatic recompilation, rather than decompilation. As a result of the previous change, there is now a cross-referencing database, and the usages word lists indirect dependencies and is much faster. The usage word behaves like the old usages, and lists direct dependencies only. The dump word in the dump vocabulary prints the memory bytes comprising an object. The dump* word prints the bytes at an arbitrary address. New words in words vocabulary for inspecting classes and methods: classes implements. The Unix I/O code was rewritten in Factor using the C library interface. Many new features will be added in future releases, such as socket timeouts and Unicode character encodings. Lazy lists and parser combinators library in contrib/parser-combinators/ (Chris Double). Quotations containing \ foo are prettyprinted in that form. The watch word now causes annotated words to dump the stack, in addition to printing a log message.