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