Front Page All Articles Recent Changes Random Article

Contents

Concatenative language

  • ACL
  • Ait
  • Aocla
  • Breeze
  • Cat
  • Cognate
  • colorForth
  • CoSy
  • Deque
  • Elymas
  • Enchilada
  • ETAC
  • F
  • Factor
  • Forth
  • Freelang
  • Gershwin
  • Joy
  • Kitten
  • lang5
  • Lviv
  • min
  • mjoy
  • Mlatu
  • Ode
  • Om
  • Onyx
  • Plorth
  • Popr
  • Porth
  • PostScript
  • Quackery
  • r3
  • Raven
  • Retro
  • Staapl
  • Stabel
  • Trith
  • Worst
  • xs
  • XY
  • 5th
  • 8th

Other languages

  • APL
  • C++
  • Erlang
  • FP trivia
  • Haskell
  • Io
  • Java
  • JavaScript
  • Lisp
  • ML
  • Oberon
  • RPL
  • Self
  • Slate
  • Smalltalk

Computer Science

  • Type systems
  • Language paradigms
  • Compilers
  • Interpreters
  • Garbage collection

Meta

  • Search
  • Farkup wiki format
  • People
  • Etiquette
  • Sandbox

Factor/Features/The implementation

The Factor implementation:

  • Automatic memory management with a 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
  • Easy-to-use C library interface
  • Bindings for OpenGL, X11, Cocoa, Win32, Windows COM

Factor is implemented with a bit of C code in the vm directory, and a lot more Factor code in core and basis. The code in core comprises the boot image, and the boot image is generated from a running Factor instance by a process we call "stage 1 bootstrap":

USE: bootstrap.image
"x86.32" make-image

Once a boot image has been created, it can be run with a compiled Factor VM to perform what is known as "stage 2 bootstrap":

./factor -i=boot.x86.32.image

Once stage 2 bootstrap completes, a factor.image is saved; development can be performed with this image, and a new boot image can be generated from within this image to start the cycle again.

Parts of basis are loaded during the second stage of the bootstrap process, and the library is compiled with the Optimizing compiler. The remaining libraries in basis are loaded as needed during development.

For a history of how we got here, see Implementation history.

This revision created on Sun, 11 Jan 2009 09:08:17 by slava

Latest Revisions Edit

All content is © 2008-2023 by its respective authors. By adding content to this wiki, you agree to release it under the BSD license.