factor/CHANGES.txt

173 lines
5.6 KiB
Plaintext

Factor 0.76:
------------
- The main focus of this release was getting the UI framework in a state
where the graphical listener is usable. This goal has largely been
achieved. Many performance problems were fixed, and the listener now
supports styled text output, presentations, and an
automatically-updated data stack display.
- The number of generations used for garbage collection can now be set
with the +G command line switch. You must specify at least 2
generations.
- Only 2 generations are used by default now, since there seems to be no
performance benefit to having 3 after running some brief benchmarks.
- The following formely list-specific words are now generic:
all? all-with? subset subset-with fiber? prune
- The contains? word for testing membership in a sequence has been
renamed to member?.
- The some? and some-with? combinators are gone. Their replacements
are contains?, contains-with?, find, find*, find-with, and find-with*.
See the documentation for details.
- The nreverse word has been removed.
- reversed ( seq -- seq ) outputs a new sequence that shares structure
with the given sequence, but presents elements in reverse order.
- Many improvements to the matrices library.
- with-string word renamed to string-out ( quot -- string )
- new string-in ( string quot -- ) word, calls quot with stdio bound to
a stream that reads from the given string.
- Improved inspector. Call it with inspect ( obj -- ).
- Fixed bug where images saved from the jEdit plugin would fail to
start.
- md5 hashing algorithm in contrib/crypto/ (Doug Coleman).
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.