<ul>
<li>
-Major improvements to the GUI:
+UI framework:
<ul>
<li>Now uses 3-dimensional co-ordinates throughout</li>
-<li>The listener supports styled text output and presentations</li>
<li>Gradient paint, bevel border paint</li>
-<li>Wheel mouse scrolling</li>
+<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>
<li>Slide-show tutorial with live code examples</li>
<li>Performance improvements, code cleanups, bug fixes</li>
</ul>
<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
- string> word has been replaced with <code>>lexi></code>.
+ string> word has been replaced with <code>lexi></code>.
<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:
a stream that reads from the given string.
</ul>
+<li>Everything else:
+
+<ul>
+
<li>Many improvements to the matrices library.
<li>Improved inspector. Call it with <code>inspect ( obj -- )</code>.
<li>md5 hashing algorithm in <code>contrib/crypto/</code> (Doug Coleman).
</ul>
+
+</ul>
-76:\r
----\r
+- timeouts broken on unix\r
\r
+ ui:\r
\r
- fix up the min thumb size hack\r
- gaps in pack layout\r
- find out why so many small bignums get consed\r
-- repaint only dirty regions of the screen\r
- faster mouse tracking\r
- binary search to locate visible children of packs\r
- rewrite frame layout for new style\r
- use incremental strategy for all pack layouts where possible\r
- multiline editing in listener\r
- sort out clipping off-by-one flaw when filling rectangles\r
+- better menu positioning\r
+- only redraw dirty gadgets\r
+- get stuff in examples dir running in the ui\r
+- opengl rendering\r
+- text selection\r
+- clipboard support\r
\r
+ tutorial:\r
\r
\r
+ misc\r
\r
-Investigate:\r
+- sigsegv handling on OS X:\r
\r
http://developer.apple.com/technotes/tn2004/tn2123.html#SECLIMITATIONS\r
http://www.caddr.com/macho/archives/sbcl-devel/2005-3/4742.html\r
\r
- http keep alive, and range get\r
- code walker & exceptions\r
+- sleep word\r
\r
+ ffi:\r
\r
\r
+ kernel:\r
\r
-- sleep word\r
- there is a problem with hashcodes of words and bootstrapping\r
- delegating generic words with a non-standard picker\r
- powerpc has weird callstack residue\r
- code gc\r
- doc comments of generics\r
- M: object should not inhibit delegation\r
-- renumber types appopriately\r
\r
+ i/o:\r
\r
- faster stream-copy\r
- reading and writing byte arrays\r
-- clean up line reading code in win32-io\r
- unix io: handle \n\r and \n\0\r
- stream server can hang because of exception handler limitations\r
- better i/o scheduler\r
tuck length - CHAR: \0 fill append ;
: emit-chars ( str -- )
- >list "big-endian" get [ reverse ] unless
+ "big-endian" get [ reverse ] unless
0 swap [ swap 16 shift + ] each emit ;
: (pack-string) ( n list -- )
align-here r> ;
M: tuple ' ( tuple -- pointer )
- <mirror> >list tuple-type emit-array ;
+ <mirror> tuple-type emit-array ;
: emit-vector ( vector -- pointer )
- dup >list array-type emit-array swap length
+ dup array-type emit-array swap length
object-tag here-as >r
vector-type >header emit
emit-fixnum ( length )
#! The quotation leaves a boot quotation on the stack.
[ begin call end ] with-minimal-image ;
-: test-image ( quot -- ) with-image >list . ;
-
: make-image ( name -- )
#! Make an image for the C interpreter.
[
M: mirror length ( mirror -- len )
mirror-tuple array-capacity ;
-: tuple>list ( tuple -- list )
- #! We have to type check here, since <mirror> is unsafe.
- <mirror> >list ;
-
: clone-tuple ( tuple -- tuple )
#! Make a shallow copy of a tuple, without cloning its
#! delegate.
! Copyright (C) 2004, 2005 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: io
-USING: kernel hashtables lists namespaces presentation
-sequences strings unparser ;
+USING: hashtables kernel lists namespaces presentation sequences
+strings styles unparser ;
! Hyperlinked directory listings.
M: tuple prettyprint* ( indent tuple -- indent )
[
- \ << swap tuple>list \ >> prettyprint-sequence
+ \ << swap <mirror> >list \ >> prettyprint-sequence
] check-recursion ;
M: alien prettyprint* ( alien -- str )
-USE: strings
-USE: kernel
-USE: math
-USE: test
-USE: unparser
-USE: hashtables
-USE: compiler
-
-! http://inferno.bell-labs.com/cm/cs/who/bwk/interps/pap.html
+USING: compiler hashtables kernel math namespaces test ;
: store-hash ( hashtable n -- )
- [ [ dup >hex swap pick set-hash ] keep ] repeat drop ; compiled
+ [ [ >float dup pick set-hash ] keep ] repeat drop ;
: lookup-hash ( hashtable n -- )
- [ [ unparse over hash drop ] keep ] repeat drop ; compiled
+ [ [ >float over hash drop ] keep ] repeat drop ;
-: hashtable-benchmark ( n -- )
- 60000 <hashtable> swap 2dup store-hash lookup-hash ; compiled
+: hashtable-benchmark ( -- )
+ 100 [
+ 80000 1000 <hashtable> swap 2dup store-hash lookup-hash
+ ] times ; compiled
-[ ] [ 80000 hashtable-benchmark ] unit-test
+[ ] [ hashtable-benchmark ] unit-test
[ 3 "x" set "x" get ] test-interpreter
] unit-test
-[ { } ] [
- [ 2 2 + . ] test-interpreter
-] unit-test
-
[ { "hi\n" } ] [
[ [ "hi" print ] string-out ] test-interpreter
] unit-test
80 <sbuf> over set-port-sbuf ;
: touch-port ( port -- )
+ ! "touch-port called\n" 14 getenv fwrite 14 getenv fflush
dup port-timeout dup 0 =
[ 2drop ] [ millis + swap set-port-cutoff ] ifte ;
: pending-error ( port -- )
dup port-error f rot set-port-error throw ;
+: report-error ( error port -- )
+ [
+ "Error on fd " %
+ dup port-handle unparse %
+ ": " % swap %
+ ] make-string swap set-port-error ;
+
: defer-error ( port -- ? )
#! Return t if it is an unrecoverable error.
- err_no dup EAGAIN = over EINTR = or [
- 2drop f
- ] [
- [
- "Error on fd " % over port-handle unparse %
- ": " % strerror %
- ] make-string swap set-port-error t
- ] ifte ;
+ err_no dup EAGAIN = over EINTR = or
+ [ 2drop f ] [ strerror swap report-error ] ifte ;
! Associates a port with a list of continuations waiting on the
! port to finish I/O
: handle-fd ( task -- )
dup do-io-task [
- dup io-task-port touch-port pop-callback [ call ] when*
+ dup io-task-port touch-port pop-callback call
] [
drop
] ifte ;
: timeout? ( port -- ? )
port-cutoff dup 0 = not swap millis < and ;
-: handle-fd? ( fdset task -- ? )
- dup io-task-port timeout? [
- 2drop t
- ] [
- io-task-fd swap bit-nth
- ] ifte ;
-
: handle-fdset ( fdset tasks -- )
[
- cdr tuck handle-fd? [ handle-fd ] [ drop ] ifte
+ cdr dup io-task-port timeout? [
+ dup io-task-port "Timeout" swap report-error
+ nip pop-callback call
+ ] [
+ tuck io-task-fd swap bit-nth
+ [ handle-fd ] [ drop ] ifte
+ ] ifte
] hash-each-with ;
: init-fdset ( fdset tasks -- )