- Introduction
- Features
- Binaries
- Sources
- Get Started
- Get Help
- FAQ
- Links
The Factor language:
- Stack-based
- Dynamic typing
- Extensible syntax
- Powerful collections library
- Higher-order functions
- Lisp-style macros
- Object system with inheritance, generic functions, predicate dispatch and mixins
- Homoiconic syntax
- Error handling with restarts
- Continuations
The Factor implementation:
- Automatic memory management with generational garbage collector
- Optimizing compiler for word definitions
- Non-optimizing compiler for top-level forms and interactive evaluation
- Stand-alone application deployment on all platforms
- Unicode 5.0 support - 21-bit strings, case conversion, character classes, etc
- Unicode I/O with a variety of common encodings
- Advanced I/O features: process launching, memory mapped files, file system change monitors
- Easy-to-use C library interface
- Bindings for OpenGL, X11, Cocoa, Win32, Windows COM
The Factor environment:
- Graphical read-eval-print loop with object editing inspector
- Single-stepping debugger which can travel backwards in time
- Extensive documentation
- Definition cross-referencing
- Profiler
- Integration with popular editors: jEdit, VIM, Emacs, TextMate, ...
The Factor library:
- Factor UI
- Calendar support
- Relational database access library with database-independent O/R mapping; supports PostgreSQL and SQLite
- HTTP client, server
- SMTP client
- Binary object serialization
- Powerful concurrency abstractions: distributed message passing, channels, promises, futures, locks, semaphores, exchangers
- Pattern matching
- Lazy lists
- Parser combinators
- Cryptography and advanced math routines
- Unit conversion
- XML parser, XML-RPC client and server
- Factory X11 window manager
- Graphics demos: Wolfram automata, boids, L-systems, context-free design grammars, ...
- Tetris and Space Invaders games
- Bindings for Cairo, PostgreSQL, SQLite, OpenSSL, Cryptlib, OpenLDAP, ...
- Various smaller examples, such as a raytracer, mandelbrot fractal viewer, and IRC bot.
Development goals
Factor development continues at a steady pace; the goal is to release Factor 1.0 some time in 2008.
Main features which will be implemented for the 1.0 release:
- Multiple dispatch
- Incremental garbage collection
- Drastically reduce compile time
- Continue improving existing libraries, such as databases, multimedia, networking, web, etc
- Full Unicode support, Unicode text display in UI (in progress)
- Better UI development tools
- Get the UI running on Windows CE
- Add support for Windows 64-bit and Mac OS X Intel 64-bit
- Use kqueue (BSD, Mac OS X), epoll (Linux) for high-performance I/O
Work on Factor 2.0 will begin when 1.0 is released:
- Fix or remove language features which are flawed in hindsight
- Native threading with high-level abstractions, such as actors or STM
- Port to UltraSPARC and test on Sun's multithreaded hardware
- Cross compilation and deployment of native libraries and executables
- Improve Factor's embeddability in other programs
- Structure editor
- WYSIWYG help markup editor
- Best interactive development environment of any programming language