Taco

=What is Vanilla?= Vanilla is a computing environment, made up of several [partially] independant components. It can be used as an entire operating system, however can also [and probably will in most cases] run on top of Windows, Linux or MacOSX.

A User Interface
Vanilla is all about the user. It's user interface is to be simple, easy and efficient to use.

An Application Framework
The users are of the most important, and as such, it is also important that developers can easily and quickly produce user friendly, feature rich and efficient applications.

A Virtual Machine
These applications and the frameworks/libraries on which they depend run on a Vanilla Virtual Machine.

Language Independant
The VVM specification describes a language and platform independant bytecode.

Multiple Implementations
To encourage competition, portability and exploration, several implementations of the VVM will be developed.

Reference/Specification Implementation
The main implementation, development-wise - known as the reference or specification implementation - is to be written in the Objective Caml language. It aims to be clean, stable, up-to-date and 100% conformant to the specification. It probably will not be used itself for running applications, and speed is certainly not it's primary objective.

End User Implementation
Written in C and utilising just-in-time compilation techniques, this is the implementation most people will actually use. It primarily aims to be efficient, but also must conform to the VVM specification.

Native Compiled Implementation
Native/static compilation is certainly a possibility, however probably won't be addressed for some time.

Other Implementations
Developers are encouraged to create their own implementations of the VVM - either to support/demonstrate their own extensions, to address a performance issue, to target a specific platform or usage pattern, etc. It is likely that a VVM will be developed in Java to make use of the Java platform's extensive libraries, as well as to make the VVM more accessible. As another example, perhaps somebody will develop a VVM that only handles a subset of the specification [or doesn't completely conform for efficiency or necesity], targeting an embedded device or CPU group.