]> gitweb.factorcode.org Git - factor.git/blob - doc/handbook/changes.facts
0.85 change log
[factor.git] / doc / handbook / changes.facts
1 USING: errors gadgets-tracks generic hashtables help io kernel
2 math memory sequences words compiler parser modules definitions
3 tools alien ;
4
5 ARTICLE: "changes" "Changes in the latest release"
6 { $heading "Factor 0.85" }
7 { $subtopic "Core"
8     { $list
9         { "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 } "." }
10         { "The " { $link usage. } " word now lists individual method usages" }
11         { "New " { $link alien-indirect } " word allows invoking function pointers" }
12         { "Pressing " { $snippet "F8" } " or invoking " { $link reload-modules } " reloads changed source files from loaded modules. Use " { $link reset-modified } " to reset modification times" }
13         { "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: } }
14     }
15 }
16 { $subtopic "UI"
17     { $list
18         "Right-clicking on a presentation now shows a popup menu of operations"
19         { "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 } }
20         { "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." }
21         { "New dataflow visualizer tool. Enter a piece of code in the listener, and press " { $snippet "C+A+d" } }
22         "The single stepper tool now properly handles code which uses continuations and exceptions"
23         { "Various fixes for the Windows UI backend (Doug Coleman)" }
24     }
25 }
26 { $subtopic "Contributed libraries"
27     { $list
28         { "Updated " { $snippet "contrib/sqlite" } " (Doug Coleman)" }
29         { "Updated " { $snippet "contrib/lazy-lists" } " (Chris Double)" }
30         { "Updated " { $snippet "contrib/parser-combinators" } " (Chris Double)" }
31         { "Updated " { $snippet "contrib/process" } " (Doug Coleman)" }
32         { "Updated " { $snippet "contrib/calendar" } " (Doug Coleman)" }
33         { "Updated " { $snippet "contrib/slate" } " (Eduardo Cavazos)" }
34         { "New module " { $snippet "contrib/lindenmayer" } " - Lindenmayer L-system visualization (Eduardo Cavazos)" }
35         { "New module " { $snippet "contrib/jni" } " - Java interface (Chris Double)" }
36         { "New module " { $snippet "contrib/usb" } " - USB interface (Chris Double)" }
37         { "New module " { $snippet "contrib/match" } " - Pattern matching (Chris Double)" }
38         { "New module " { $snippet "contrib/textmate" } " - TextMate editor integration (Benjamin Pollack)" }
39     }
40 }
41 { $heading "Factor 0.84" }
42 { $subtopic "Core"
43     { $list
44         { "Incompatible change: the argument order for the following words has changed:"
45             { $list
46                 { $link head }
47                 { $link head* }
48                 { $link head-slice }
49                 { $link head-slice* }
50                 { $link tail }
51                 { $link tail* }
52                 { $link tail-slice }
53                 { $link tail-slice* }
54                 { $link group }
55             }
56         }
57         "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)."
58         { "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" } "." }
59         { "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." }
60         { "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." }
61     }
62 }
63 { $subtopic "UI"
64     { $list
65         "New code walker runs in UI, supports backward time travel and replaces terminal-based walker."
66         "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."
67         "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."
68         "Pressing F1 now lists keyboard shortcuts for the currently focused gadget."
69         "The UI now sends modifier keys along with mouse button up/down gestures."
70         "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."
71         "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."
72     }
73 }
74 { $subtopic "Tools"
75     { $list
76         { "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:"
77             { $list
78                 { $snippet "emacs" }
79                 { $snippet "jedit" }
80                 { $snippet "vim" }
81             }
82         }
83         { "New " { $link :edit } " word opens your editor at the location of the most recent syntax error." }
84         { "New " { $link :help } " word displays documentation explaining the most recent error." }
85         { "The " { $link apropos } " word now performs fuzzy matching and ranks results according to edit distance." }
86     }
87 }
88 { $subtopic "Contributed libraries"
89     { $list
90         { { $snippet "automata" } ": updated (Eduardo Cavazos)." }
91         { { $snippet "boids" } ": updated (Eduardo Cavazos)." }
92         { { $snippet "calendar" } ": updated (Doug Coleman)." }
93         { { $snippet "concurrency" } ": supports distributed message passing over sockets between nodes (Chris Double)." }
94         { { $snippet "emacs" } ": new module, adds a hook for the " { $link edit } " word that invokes Emacs (Eduardo Cavazos)." }
95         { { $snippet "httpd" } ": supports client cache control headers (Chris Double)." }
96         { { $snippet "json" } ": new module reads and writes JSON objects (Chris Double)." }
97         { { $snippet "lambda" } ": new module, lambda calculus interpreter (Matthew Willis)." }
98         { { $snippet "lazy-lists" } ": updated (Matthew Willis)." }
99         { { $snippet "parser-combinators" } ": updated (Chris Double)." }
100         { { $snippet "rss" } ": new module reads RSS2 feeds (Chris Double)." }
101         { { $snippet "serialize" } ": revived and updated (Chris Double)." }
102         { { $snippet "sqlite" } ": updated (Chris Double)." }
103         { { $snippet "tuple-db" } ": updated (Chris Double)." }
104         { { $snippet "vim" } ": new module, adds a hook for the " { $link edit } " word that invokes VIM (Doug Coleman)." }
105     }
106 }
107 { $heading "Factor 0.83" }
108 { $subtopic "First class quotations"
109     { $list
110         "Support for cons cells and linked lists has been removed from the core language."
111         "Quotations are now a first-class array-like type with the same literal syntax that linked lists used to have."
112         { "A few quotation construction words such as " { $link curry } ", " { $link unit } " and " { $link alist>quot } " have been moved to the " { $snippet "kernel" } " vocabulary." }
113     }
114 }
115 { $subtopic "UI"
116     { $list
117         "Multi-line text editor gadget replaces single-line editor gadget and adds support for selection, copy and paste, and more advanced text editing."
118         "New apropos tool."
119         "New word browser tool."
120         { "New " { $link track } " gadget replaces the old " { $snippet "splitter" } "; it behaves similarly but supports more than two children." }
121         "Key down and key up gestures have been made separate."
122         "Window positions and contents are now saved in the image."
123         "You can now paste from the clipboard using Control-V (Mac OS) or by middle-clicking (X11)."
124         "The UI now uses 2-dimensional rather than 3-dimensional co-ordinates, since the third dimension was never used."
125         "Beginnings of an MVC framework taking some cues from functional reactive programming."
126     }
127 }
128 { $subtopic "Documentation"
129     { $list
130         "Better looking markup output."
131         "Expanded and improved documentation."
132         "Full-text search."
133     }
134 }
135 { $subtopic "Mac OS X-specific"
136     { $list
137         "Factor now runs on Intel-based Macs."
138         { "Redesigned Cocoa binding. Messages are now sent via the " { $snippet "->" } " parsing word, for example:"
139             { $code "NSObject -> alloc -> init" }
140         }
141         "Files can be run by dropping them on the Factor icon in the dock"
142         { "Services support; if you drop " { $snippet "Factor.app" } " in your " { $snippet "Applications" } " directory, you will be able to evaluate Factor code from other applications." }
143         "File->Run command."
144     }
145 }
146 { $subtopic "Core language changes"
147     { $list
148         { "The " { $snippet "reverse-slice" } " word has been removed; call " { $link <reversed> } " instead." }
149         { "The " { $link sum } " and " { $link product } " words have been moved into the core." }
150         { "New " { $link remove-hash* } " word removes the former value." }
151         { "C library interface now features full support for " { $snippet "ushort*" } " UTF-16 strings." }
152         { "Restartable errors are now supported; throw them using " { $link condition } ", and invoke restarts in the listener using " { $link :res } "." }
153         { { $link with-stream-table } " word for tabular formatting." }
154         { "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 } "." }
155     }
156 }
157 { $subtopic "Contributed libraries"
158     { $list
159         { "There is a new mechanism for loading contributed libraries that correctly handles dependencies; see " { $link "modules" } "." }
160         { "Time and date library added in " { $snippet "contrib/calendar/" } ". (Doug Coleman)" }
161         "Factory window manager updates (Eduardo Cavazos)"
162         { "New " { $snippet "slate" } " gadget for easier graphical output for simulations and demos. (Eduardo Cavazos)" }
163         "Automata and boids demos. (Eduardo Cavazos)"
164         { "More concise syntax for variables in " { $snippet "contrib/vars.factor" } ". (Eduardo Cavazos)" }
165     }
166 }
167 { $subtopic "HTTP server"
168     { $list
169         "Improved AJAX outliners in the help responder can now be collapsed."
170         { "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." }
171     }
172 }
173 { $heading "Factor 0.82" }
174 { $list
175     "New code generator framework in compiler"
176     "Floating point operations are now open-coded, resulting in a performance gain"
177     { "Remove " { $snippet "unswons" } " word" }
178     "Implement value type struct inputs to callbacks on AMD64"
179     "Fix some Unix I/O bugs"
180     "Standard OS X-style menu bar in the Cocoa UI (Kevin Reid)"
181     "Objective C methods defined in Factor can now return C structures by value"
182 }
183 { $heading "Factor 0.81" }
184 { $subtopic "UI"
185     { $list
186         "Replaced SDL backend code with Mac OS X (Cocoa), X11 and Windows implementations"
187         { "The UI now starts by default under X11 if " { $snippet "$DISPLAY" } " is set" }
188         "Multiple windows are now supported"
189         "New browser gadget supports history and multiple views of an object"
190         "Preferred size cache to speed up gadget layout"
191         "Better-looking outliners"
192     }
193 }
194 { $subtopic "Help system"
195     { $list
196         { "Help cross-referencing implemented - the " { $snippet "links-in." } " and " { $snippet "links-out." } " words are analogous to " { $link usage. } " and " { $snippet "uses." } }
197         { "New documentation covers development tools and C library interface" }
198     }
199 }
200 { $subtopic "Core language"
201     { $list
202         "Stack underflow and overflow errors are not reported as such, and not generic \"signal 11\" errors (Adam Langley)"
203         { "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" }
204         { "New " { $link exchange } " word" }
205         { "More useful " { $link heap-stats. } " output now shows count/allocation statistics per-class, instead of per-type" }
206         { "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" }
207     }
208 }
209 { $subtopic "Portability"
210     { $list
211         "Solaris x86 port (Patrick Mauritz)"
212     }
213 }
214 { $subtopic "Compiler"
215     { $list
216         "Compiler no longer splits all branches, reducing compile time and generated code size"
217     }
218 }
219 { $subtopic "C library interface"
220     { $list
221         "Structs can now be passed by value to C functions"
222         { "Callbacks from C code to Factor are now supported - see " { $link "alien-callback" } }
223         { "Improved support for passing UTF16 strings to and from C functions (" { $snippet "ushort*" } " type)" }
224         { "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: } }
225     }
226 }
227 { $subtopic "Objective C library interface"
228     { $list
229         "Objective C classes can now be subclassed"
230         "Objective C exceptions are now caught and reported as Factor exceptions"
231         "Objective C messages returning structs by value are now supported"
232         
233     }
234 }
235 { $subtopic "Contributed libraries"
236     { $subtopic { "External process interface - " { $snippet "contrib/processes.factor" } }
237         { $list "This is a new library" }
238     }
239     { $subtopic { "Partial continuations - " { $snippet "contrib/partial-continuations.factor" } }
240         { $list "This is a new library (Chris Double)" }
241     }
242     { $subtopic { "HTTP server - " { $snippet "contrib/httpd/" } }
243         { $list
244             "File responder fixes"
245             "Inspector responder fixes"
246             "Continuation responder fixes (Chris Double)"
247             { "Add templating engine in " { $snippet "embedded.factor" } " (Alex Chapman)" }
248         }
249     }
250     { $subtopic { "XML parser - " { $snippet "contrib/xml.factor" } }
251         { $list
252             "Various updates for recent Factor changes"
253             "Improved XML output capabilities"
254         }
255     }
256     { $subtopic { "Factory window manager - " { $snippet "contrib/factory/" } }
257         { $list "Many updates" }
258     }
259     { $subtopic { "Cryptography library - " { $snippet "contrib/crypto/" } }
260         { $list
261             "Added Base64 encoding (Doug Coleman)"
262             "Added Blum Blum Shub random number generator (Doug Coleman)"
263             "Added CRC32 checksum (Doug Coleman)"
264         }
265     }
266     { $subtopic { "Space invaders/Intel 8080 emulator - " { $snippet "contrib/space-invaders/" } }
267         { $list
268             "Updated to use Factor UI instead of SDL (Chris Double)"
269         }
270     }
271 } ;