Factor is dynamically typed and has automatic memory management, as well as powerful metaprogramming features.
The language has a single implementation featuring a self-hosted optimizing compiler and an interactive development environment.
As the Factor implementation and standard libraries grew more detailed, the need for certain language features became clear, and they were added.
JFactor did not have an object system where the programmer could define their own classes, and early versions of native Factor were the same; the language was similar to Scheme in this way.
Other important language features such as tuple classes, combinator inlining, macros, user-defined parsing words and the modern vocabulary system were only added in a piecemeal fashion as their utility became clear.
The foreign function interface was present from very early versions to Factor, and an analogous system existed in JFactor.
This was chosen over creating a plugin to the C part of the implementation for each external library that Factor should communicate with, and has the benefit of being more declarative, faster to compile and easier to write.
It prints the string to the current output stream (by default, the terminal or the graphical listener).
These include A foreign function interface is built into Factor, allowing for communication with C, Objective-C and Fortran programs.
Factor uses an image-based model, analogous to many Smalltalk implementations, where compiled code and data are stored in an image.
A special tool assists in the process of creating a minimal image to run a particular program, packaging the result into something that can be deployed as a standalone application.