{ "Incompatible change: the argument order for the following words has changed:"
{ $list
{ $link head }
{ $link head* }
{ $link head-slice }
{ $link head-slice* }
{ $link tail }
{ $link tail* }
{ $link tail-slice }
{ $link tail-slice* }
{ $link group }
}
}
"Native I/O on Windows is now supported again. This means non-blocking I/O, network sockets, HTTPD and so on work again (Doug Coleman)."
{ "Stack effect declarations are now read by the parser. This means that " { $snippet "( foo bar )" } " is not a comment anymore, but syntax. See " { $link "effect-declaration" } "." }
{ "Redefining words no longer decompiles words that call them; now you must call " { $link recompile } " manually. This word is automatically called after loading a file with " { $link run-file } " or a module with " { $link require } ". See " { $link "recompile" } " for details." }
{ "Words such as " { $link see } ", " { $link reload } ", and " { $link edit } " can now take method and help article specifiers in addition to words. See " { $link "definitions" } " for details." }
}
}
{ $subtopic "UI"
{ $list
"New code walker runs in UI, supports backward time travel and replaces terminal-based walker."
"New single-window interface -- the listener, browser, documentation and walker have been merged into a single window. Use F2, F3, F4, F5 to switch between tools. Multiple windows can still be opened with S+F2, S+F3, S+F4."
"The input gadget in the listener now supports a variety of shortcuts for getting information about the word at the caret. Explore the keyboard help for details."
"Pressing F1 now lists keyboard shortcuts for the currently focused gadget."
"The UI now sends modifier keys along with mouse button up/down gestures."
"For users with a one-button mouse, control-clicking is now sent as a right click, and alt-clicking is sent as a middle-click."
"On Mac OS X, the UI can now act as a system services client. That is, you can select some text in the listener's input gadget, invoke a service, and see the result appear."
}
}
{ $subtopic "Tools"
{ $list
{ "The " { $snippet "jedit" } " word has been replaced with a general " { $link edit } " word. You must now load one of the following modules for external editor support:"
{ $list
{ $snippet "emacs" }
{ $snippet "jedit" }
{ $snippet "vim" }
}
}
{ "New " { $link :edit } " word opens your editor at the location of the most recent syntax error." }
{ "New " { $link :help } " word displays documentation explaining the most recent error." }
{ "The " { $link apropos } " word now performs fuzzy matching and ranks results according to edit distance." }
"Support for cons cells and linked lists has been removed from the core language."
"Quotations are now a first-class array-like type with the same literal syntax that linked lists used to have."
{ "A few quotation construction words such as " { $link curry } ", " { $link unit } " and " { $link alist>quot } " have been moved to the " { $snippet "kernel" } " vocabulary." }
{ "New " { $link track } " gadget replaces the old " { $snippet "splitter" } "; it behaves similarly but supports more than two children." }
"Key down and key up gestures have been made separate."
"Window positions and contents are now saved in the image."
"You can now paste from the clipboard using Control-V (Mac OS) or by middle-clicking (X11)."
"The UI now uses 2-dimensional rather than 3-dimensional co-ordinates, since the third dimension was never used."
"Beginnings of an MVC framework taking some cues from functional reactive programming."
}
}
{ $subtopic "Documentation"
{ $list
"Better looking markup output."
"Expanded and improved documentation."
"Full-text search."
}
}
{ $subtopic "Mac OS X-specific"
{ $list
"Factor now runs on Intel-based Macs."
{ "Redesigned Cocoa binding. Messages are now sent via the " { $snippet "->" } " parsing word, for example:"
{ $code "NSObject -> alloc -> init" }
}
"Files can be run by dropping them on the Factor icon in the dock"
{ "Services support; if you drop " { $snippet "Factor.app" } " in your " { $snippet "Applications" } " directory, you will be able to evaluate Factor code from other applications." }
"File->Run command."
}
}
{ $subtopic "Core language changes"
{ $list
{ "The " { $snippet "reverse-slice" } " word has been removed; call " { $link <reversed> } " instead." }
{ "The " { $link sum } " and " { $link product } " words have been moved into the core." }
{ "New " { $link remove-hash* } " word removes the former value." }
{ "C library interface now features full support for " { $snippet "ushort*" } " UTF-16 strings." }
{ "Restartable errors are now supported; throw them using " { $link condition } ", and invoke restarts in the listener using " { $link :res } "." }
{ { $link with-stream-table } " word for tabular formatting." }
{ "Style stack and associated words such as " { $snippet "format*" } " have been removed in favor of a better abstraction, " { $link with-style } " and " { $link with-stream-style } "." }
}
}
{ $subtopic "Contributed libraries"
{ $list
{ "There is a new mechanism for loading contributed libraries that correctly handles dependencies; see " { $link "modules" } "." }
{ "New " { $snippet "slate" } " gadget for easier graphical output for simulations and demos. (Eduardo Cavazos)" }
"Automata and boids demos. (Eduardo Cavazos)"
{ "More concise syntax for variables in " { $snippet "contrib/vars.factor" } ". (Eduardo Cavazos)" }
}
}
{ $subtopic "HTTP server"
{ $list
"Improved AJAX outliners in the help responder can now be collapsed."
{ "Files with the " { $snippet ".fhtml" } " extension are run through the " { $snippet "embedded.factor" } " module; snippets of Factor code between " { $snippet "<%" } " and " { $snippet "%>" } " are evaluated and their output intermingled with the HTML text." }
{ "New documentation covers development tools and C library interface" }
}
}
{ $subtopic "Core language"
{ $list
"Stack underflow and overflow errors are not reported as such, and not generic \"signal 11\" errors (Adam Langley)"
{ "The " { $link standard-combination } " word now takes a stack position, not a picker quotation, and delegation is now supported for words which dispatch on a stack location other than the top" }
{ "New " { $link exchange } " word" }
{ "More useful " { $link heap-stats. } " output now shows count/allocation statistics per-class, instead of per-type" }
{ "Factor now looks for a " { $snippet "factor.image" } " in the same directory as the runtime executable on Mac OS X and Windows, if you don't specify an image name parameter on the command line" }
}
}
{ $subtopic "Portability"
{ $list
"Solaris x86 port (Patrick Mauritz)"
}
}
{ $subtopic "Compiler"
{ $list
"Compiler no longer splits all branches, reducing compile time and generated code size"
}
}
{ $subtopic "C library interface"
{ $list
"Structs can now be passed by value to C functions"
{ "Callbacks from C code to Factor are now supported - see " { $link "alien-callback" } }
{ "Improved support for passing UTF16 strings to and from C functions (" { $snippet "ushort*" } " type)" }
{ "The " { $snippet "BEGIN-ENUM:" } " and " { $snippet "BEGIN-UNION:" } " parsing words have been annexed in favor of new, more consise syntax - see " { $link POSTPONE: C-ENUM: } " and " { $link POSTPONE: C-UNION: } }
}
}
{ $subtopic "Objective C library interface"
{ $list
"Objective C classes can now be subclassed"
"Objective C exceptions are now caught and reported as Factor exceptions"
"Objective C messages returning structs by value are now supported"