2005-07-24 23:12:34 -04:00
<!-- :noWordSep=+ - *\=><;.?/'()%,_|: -->
2005-07-21 21:43:37 -04:00
< html >
< head > < title > Factor change log< / title > < / head >
< body >
2005-07-24 23:12:34 -04:00
< h1 > Factor 0.77:< / h1 >
< ul >
< li > Sequences:
< ul >
< li > < code > 2each ( seq seq quot -- quot: elt -- elt )< / code > combinator< / li >
< li > < code > join ( seq glue -- seq )< / code > combinator. Takes a sequence of sequences, and constructs a new sequence with the glue in between each sequence. For example:
< pre > [ "usr" "bin" "grep" ] "/" join
< b > "usr/bin/grep"< / b > < / pre > < / li >
2005-07-27 20:13:11 -04:00
< li > < code > indq ( elt seq -- i )< / code > and < code > indq* ( i elt seq -- i )< / code > are like < code > index< / code > and < code > index*< / code > , except they compare elements for identity.< / li >
< li > Integers now support the sequence protocol. An integer is an increasing sequence of its predecessors. This means the < code > count ( n -- [ 0 ... n-1 ] )< / code > word is gone; just use < code > > vector< / code > instead. Also, < code > project< / code > has been made redundant by < code > map< / code > .< / li >
2005-07-24 23:12:34 -04:00
< / ul >
< / li >
< / ul >
< ul > Everything else:
< li > Object slots are now clickable in the inspector< / li >
2005-07-30 22:14:34 -04:00
< li > The matrices library has been greatly simplified. Matrices are now represented as vectors of vectors, and matrix words have been moved to the < code > math< / code > vocabulary.< / li >
2005-07-31 23:38:33 -04:00
< li > More descriptive "out of bounds" errors.< / li >
2005-07-24 23:12:34 -04:00
< / ul >
2005-07-21 21:43:37 -04:00
< h1 > Factor 0.76:< / h1 >
< ul >
< li >
2005-07-22 22:18:47 -04:00
UI framework:
2005-07-21 21:43:37 -04:00
< ul >
< li > Now uses 3-dimensional co-ordinates throughout< / li >
< li > Gradient paint, bevel border paint< / li >
2005-07-22 22:18:47 -04:00
< li > Split pane gadget< / li >
< li > Horizontal scroll bars and wheel mouse scrolling in scroller gadgets< / li >
< li > Incremental layout improves listener responsiveness< / li >
< li > The listener supports styled text output and presentations< / li >
2005-07-21 21:43:37 -04:00
< li > Slide-show tutorial with live code examples< / li >
< li > Performance improvements, code cleanups, bug fixes< / li >
< / ul >
< / li >
< li >
Sequences:
< ul >
< li > The following formely list-specific words are now generic:
< pre > all? ( seq quot -- ? | quot: elt -- ? )
all-with? ( obj seq quot -- ? | quot: elt -- ? )
subset ( seq quot -- seq | quot: elt -- ? )
subset-with ( obj seq quot -- seq | quot: obj elt -- ? )
fiber? ( seq quot -- ? | quot: elt elt -- ? )
prune ( seq -- seq )< / pre >
< li > The < code > contains?< / code > word for testing membership in a sequence has been
renamed to < code > member? ( elt seq -- ? )< / code > .
< li > The list-specific < code > some?< / code > and < code > some-with?< / code > combinators are gone. Their replacements are generic:
< pre > contains? ( seq quot -- ? | quot: elt -- ? )
contains-with? ( obj seq quot -- ? | quot: obj elt -- ? )
find ( seq quot -- i elt | quot: elt -- ? )
find* ( i seq quot -- i elt | quot: elt -- ? )
find-with ( obj seq quot -- i elt | quot: elt -- ? )
find-with* ( obj i seq quot -- i elt | quot: elt -- ? )< / pre >
See the developer's handbook for details.
< li > The < code > nreverse ( seq -- )< / code > word has been removed.
< li > < code > reverse-slice ( seq -- seq )< / code > outputs a new sequence that shares
structure with the given sequence, but presents elements in reverse
order.
< li > The < code > string-compare< / code > primitive has been replaced with the lexi word
which now operates on any pair of sequences of numbers. The
2005-07-22 22:18:47 -04:00
string> word has been replaced with < code > lexi>< / code > .
2005-07-21 21:43:37 -04:00
< li > The < code > ,< / code > word no longer accepts a string as input inside a < code > make-string< / code > . In 0.75, the following
two lines were equivalent:
< pre > [ "Hello" , " world" , ] make-string
[ "Hello" % " world" % ] make-string< / pre >
< li > Now, the former raises a type error. Use < code > ,< / code > with characters, and < code > %< / code > with
strings inside make-string.
< / ul >
< li > Streams:
< ul >
< li > The following words have been renamed:
< pre > stream-auto-flush ==> stream-finish ( stream -- )
stream-write-attr ==> stream-format ( string style stream -- )
write-attr ==> format ( string style -- )< / pre >
< li > The following words no longer accept character arguments:
< pre > stream-format ( string style stream -- )
format ( string style -- )
stream-write ( string stream -- )
write ( string -- )
stream-print ( string -- )
print ( string -- )< / pre >
< li > Use the new words to write characters:
< pre > stream-write1 ( char stream -- )
write1 ( char -- )< / pre >
Note that < code > stream-write1< / code > is generic and your stream must implement it.
< li > < code > with-string< / code > word renamed to < code > string-out ( quot -- string )< / code >
< li > New < code > string-in ( string quot -- )< / code > word, calls < code > quot< / code > with < code > stdio< / code > bound to
a stream that reads from the given string.
< / ul >
2005-07-22 22:18:47 -04:00
< li > Everything else:
< ul >
2005-07-21 21:43:37 -04:00
< li > Many improvements to the matrices library.
< li > Improved inspector. Call it with < code > inspect ( obj -- )< / code > .
< li > 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.
< li > Only 2 generations are used by default now, since there seems to be no
performance benefit to having 3 after running some brief benchmarks.
< li > Fixed bug where images saved from the jEdit plugin would fail to
start.
< li > md5 hashing algorithm in < code > contrib/crypto/< / code > (Doug Coleman).
< / ul >
2005-07-22 22:18:47 -04:00
< / ul >
2005-07-24 19:08:32 -04:00
< / body >
< / html >