314 lines
18 KiB
Plaintext
314 lines
18 KiB
Plaintext
USING: errors gadgets-tracks generic hashtables help io kernel
|
|
math memory sequences words compiler parser modules definitions
|
|
tools alien inference ;
|
|
|
|
ARTICLE: "changes" "Changes in the latest release"
|
|
{ $heading "Factor 0.86" }
|
|
{ $subtopic "Core"
|
|
{ $list
|
|
"Improved memory management code leads to reduced memory consumption, less frequent garbage collections and fixes a few corner cases where Factor could run out of heap even if a GC would have freed enough memory to proceed"
|
|
"Improved prettyprinter low lays out code in a more pleasing manner"
|
|
"Windows native I/O has been sped up (Doug Coleman)"
|
|
}
|
|
}
|
|
{ $subtopic "UI"
|
|
{ $list
|
|
{ "Double and triple clicks are now recognized, and can be used to select text in the editor gadget" }
|
|
{ "Windows now update while being resized on Windows" }
|
|
}
|
|
}
|
|
{ $subtopic "Stack effect inference"
|
|
{ $list
|
|
{ "The new " { $link infer. } " word should be called instead of " { $link infer } ", since it presents information in a more pleasing way" }
|
|
"Stack effect inference now infers variables read and written by a quotation to facilitate code comprehension and debugging"
|
|
}
|
|
}
|
|
{ $subtopic "Module system"
|
|
{ $list
|
|
{ "The syntax for " { $link POSTPONE: PROVIDE: } " has changed, consult the documentation" }
|
|
{ "Modules can now provide a main entry point, see " { $link run-module } " and " { $link POSTPONE: MAIN: } }
|
|
{ "Modules can now provide documentation, see " { $link "documenting-modules" } }
|
|
}
|
|
}
|
|
{ $subtopic "Contributed libraries"
|
|
{ $list
|
|
{ "New " { $snippet "contrib/cpuinfo" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/match" } " (Chris Double)" }
|
|
{ "Updated " { $snippet "contrib/parser-combinators" } " (Chris Double)" }
|
|
{ "Updated " { $snippet "contrib/postgresql" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/process" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/sqlite" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/textmate" } " (Benjamin Pollack)" }
|
|
{ "Updated " { $snippet "contrib/tuple-db" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/vim" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/xml" } " (Daniel Ehrenberg)" }
|
|
}
|
|
}
|
|
{ $heading "Factor 0.85" }
|
|
{ $subtopic "Core"
|
|
{ $list
|
|
{ "Implemented garbage collection for the compiled code heap using a mark and sweep algorithm. The code GC kicks in automatically when the code heap is full, and can also be invoked manually with " { $link code-gc } "." }
|
|
{ "The " { $link usage. } " word now lists individual method usages" }
|
|
{ "New " { $link alien-indirect } " word allows invoking function pointers" }
|
|
{ "Pressing " { $snippet "F8" } " or invoking " { $link reload-modules } " reloads changed source files from loaded modules. Use " { $link reset-modified } " to reset modification times" }
|
|
{ "The module system is used to organize the core library now, and modules from " { $snippet "contrib/" } " must now have their names prefixed with " { $snippet "contrib/" } " when being passed to " { $link require } ", " { $link POSTPONE: REQUIRES: } " and " { $link POSTPONE: PROVIDE: } }
|
|
}
|
|
}
|
|
{ $subtopic "UI"
|
|
{ $list
|
|
"Right-clicking on a presentation now shows a popup menu of operations"
|
|
{ "Pressing " { $snippet "C+e" } " in the UI listener displays a file name completion popup; selecting a file and pressing " { $snippet "RETURN" } " opens it in the default editor using " { $link edit-file } }
|
|
{ "Pressing " { $snippet "TAB" } " or " { $snippet "C+u" } " in the UI listener displays a word or vocabulary name completion popup, respectively. Selecting a word inserts its name in the input area, selecting a vocabulary adds it to the search path." }
|
|
{ "New dataflow visualizer tool. Enter a piece of code in the listener, and press " { $snippet "C+A+d" } }
|
|
"The single stepper tool now properly handles code which uses continuations and exceptions"
|
|
{ "Various fixes for the Windows UI backend (Doug Coleman)" }
|
|
}
|
|
}
|
|
{ $subtopic "Contributed libraries"
|
|
{ $list
|
|
{ "Updated " { $snippet "contrib/sqlite" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/lazy-lists" } " (Chris Double)" }
|
|
{ "Updated " { $snippet "contrib/parser-combinators" } " (Chris Double)" }
|
|
{ "Updated " { $snippet "contrib/process" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/calendar" } " (Doug Coleman)" }
|
|
{ "Updated " { $snippet "contrib/slate" } " (Eduardo Cavazos)" }
|
|
{ "New module " { $snippet "contrib/lindenmayer" } " - Lindenmayer L-system visualization (Eduardo Cavazos)" }
|
|
{ "New module " { $snippet "contrib/jni" } " - Java interface (Chris Double)" }
|
|
{ "New module " { $snippet "contrib/usb" } " - USB interface (Chris Double)" }
|
|
{ "New module " { $snippet "contrib/match" } " - Pattern matching (Chris Double)" }
|
|
{ "New module " { $snippet "contrib/textmate" } " - TextMate editor integration (Benjamin Pollack)" }
|
|
{ "New module " { $snippet "contrib/tetris" } " - TextMate editor integration (Alex Chapman)" }
|
|
}
|
|
}
|
|
{ $heading "Factor 0.84" }
|
|
{ $subtopic "Core"
|
|
{ $list
|
|
{ "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." }
|
|
}
|
|
}
|
|
{ $subtopic "Contributed libraries"
|
|
{ $list
|
|
{ { $snippet "automata" } ": updated (Eduardo Cavazos)." }
|
|
{ { $snippet "boids" } ": updated (Eduardo Cavazos)." }
|
|
{ { $snippet "calendar" } ": updated (Doug Coleman)." }
|
|
{ { $snippet "concurrency" } ": supports distributed message passing over sockets between nodes (Chris Double)." }
|
|
{ { $snippet "emacs" } ": new module, adds a hook for the " { $link edit } " word that invokes Emacs (Eduardo Cavazos)." }
|
|
{ { $snippet "httpd" } ": supports client cache control headers (Chris Double)." }
|
|
{ { $snippet "json" } ": new module reads and writes JSON objects (Chris Double)." }
|
|
{ { $snippet "lambda" } ": new module, lambda calculus interpreter (Matthew Willis)." }
|
|
{ { $snippet "lazy-lists" } ": updated (Matthew Willis)." }
|
|
{ { $snippet "parser-combinators" } ": updated (Chris Double)." }
|
|
{ { $snippet "rss" } ": new module reads RSS2 feeds (Chris Double)." }
|
|
{ { $snippet "serialize" } ": revived and updated (Chris Double)." }
|
|
{ { $snippet "sqlite" } ": updated (Chris Double)." }
|
|
{ { $snippet "tuple-db" } ": updated (Chris Double)." }
|
|
{ { $snippet "vim" } ": new module, adds a hook for the " { $link edit } " word that invokes VIM (Doug Coleman)." }
|
|
}
|
|
}
|
|
{ $heading "Factor 0.83" }
|
|
{ $subtopic "First class quotations"
|
|
{ $list
|
|
"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." }
|
|
}
|
|
}
|
|
{ $subtopic "UI"
|
|
{ $list
|
|
"Multi-line text editor gadget replaces single-line editor gadget and adds support for selection, copy and paste, and more advanced text editing."
|
|
"New apropos tool."
|
|
"New word browser tool."
|
|
{ "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" } "." }
|
|
{ "Time and date library added in " { $snippet "contrib/calendar/" } ". (Doug Coleman)" }
|
|
"Factory window manager updates (Eduardo Cavazos)"
|
|
{ "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." }
|
|
}
|
|
}
|
|
{ $heading "Factor 0.82" }
|
|
{ $list
|
|
"New code generator framework in compiler"
|
|
"Floating point operations are now open-coded, resulting in a performance gain"
|
|
{ "Remove " { $snippet "unswons" } " word" }
|
|
"Implement value type struct inputs to callbacks on AMD64"
|
|
"Fix some Unix I/O bugs"
|
|
"Standard OS X-style menu bar in the Cocoa UI (Kevin Reid)"
|
|
"Objective C methods defined in Factor can now return C structures by value"
|
|
}
|
|
{ $heading "Factor 0.81" }
|
|
{ $subtopic "UI"
|
|
{ $list
|
|
"Replaced SDL backend code with Mac OS X (Cocoa), X11 and Windows implementations"
|
|
{ "The UI now starts by default under X11 if " { $snippet "$DISPLAY" } " is set" }
|
|
"Multiple windows are now supported"
|
|
"New browser gadget supports history and multiple views of an object"
|
|
"Preferred size cache to speed up gadget layout"
|
|
"Better-looking outliners"
|
|
}
|
|
}
|
|
{ $subtopic "Help system"
|
|
{ $list
|
|
{ "Help cross-referencing implemented - the " { $snippet "links-in." } " and " { $snippet "links-out." } " words are analogous to " { $link usage. } " and " { $snippet "uses." } }
|
|
{ "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"
|
|
|
|
}
|
|
}
|
|
{ $subtopic "Contributed libraries"
|
|
{ $subtopic "contrib/processes.factor"
|
|
{ $list "This is a new library" }
|
|
}
|
|
{ $subtopic "contrib/partial-continuations.factor"
|
|
{ $list "This is a new library (Chris Double)" }
|
|
}
|
|
{ $subtopic "contrib/httpd/"
|
|
{ $list
|
|
"File responder fixes"
|
|
"Inspector responder fixes"
|
|
"Continuation responder fixes (Chris Double)"
|
|
{ "Add templating engine in " { $snippet "embedded.factor" } " (Alex Chapman)" }
|
|
}
|
|
}
|
|
{ $subtopic "contrib/xml.factor"
|
|
{ $list
|
|
"Various updates for recent Factor changes"
|
|
"Improved XML output capabilities"
|
|
}
|
|
}
|
|
{ $subtopic "contrib/factory/"
|
|
{ $list "Many updates" }
|
|
}
|
|
{ $subtopic "contrib/crypto/"
|
|
{ $list
|
|
"Added Base64 encoding (Doug Coleman)"
|
|
"Added Blum Blum Shub random number generator (Doug Coleman)"
|
|
"Added CRC32 checksum (Doug Coleman)"
|
|
}
|
|
}
|
|
{ $subtopic "contrib/space-invaders/"
|
|
{ $list
|
|
"Updated to use Factor UI instead of SDL (Chris Double)"
|
|
}
|
|
}
|
|
} ;
|