factor/CHANGES.txt

127 lines
4.0 KiB
Plaintext

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.