OzVM Home
OzVM at SourceForge

Brief Description

OzVM is a simple, lightweight, secure virtual machine. The current target application of OzVM is OzStream, allowing platform-independent self-decoding data, which abstracts encoded data from client applications.

Vision

The vision of OzStream makes any and all compressed media self-extracting. Dependence on particular compressed formats gives way to transparent upgrades to the latest and greatest in compression. New compression standards need not be consciously adopted by end-users.

This means standardizing bzip2 over gzip becomes a non-issue. And, introducing compression methods superior to bzip2 will be transparent, as well.

This means that users no longer need search for the appropriate decoder to access AVI movies. And that MP3 audio can transparently give way to incrementally superior formats.

OzStream abstracts compressed media from client applications, providing new freedom for users, developers, and compression techniques.

Long Description

OzVM is a simple, lightweight, secure virtual machine. The interpreter, just-in-time compiler, and runtime library are compact enough to be directly compiled into client applications.

The current target application of OzVM is platform-independent self-decoding data, which abstracts encoded data from client applications. This provides an alternative to direct support in client applications for standard compressed data (e.g. gzip, bzip2, zip, rar, arj, etc.) and compressed multimedia formats (e.g. wav, mp3, mpg, avi, etc.).

The virtual machine has been implemented in C, and an assembler has been written in C++. LCC, a C-compiler free for non-commercial use, has been retargeted to OzVM. A functioning just-in-time compiler has been written for 386-compatible architectures.

The system is in its alpha release, and it has been successfully tested on abstracting and decompressing gzip-compressed data.

The copyright for LCC may not be compatible with open source software. Until that has been determined, or another alternative (GCC) exists, only a patch against the current LCC tree will be made available for OzVM.

License

OzVM is distributed under a BSD license. Here is the complete copyright notice for OzVM.

Download

Here is an initial development release of OzVM, ozvm-20010918.tar.gz (169,823 bytes). It's an alpha release, which means it compiles under Linux, but there's a lot of work to do. The specifications and components are still under development.

Documents

Preliminary Benchmarks

ozcat, a console-based client that executes an OzStream dumps to stdout. It has compiled in support for both interpreted and 386-compatible JIT execution. The stripped Linux ELF executable for ozcat is 36,384 bytes.

The overhead for converting a gzip file to an OzStream file is currently 9509 bytes. A gzip-compressed file is converted to an OzStream by prepending an appropriate OzStream executable. The current OzStream gzip header is stripped and itself gzip-compressed (and executed through a bootstrapping phase directly supported by OzVM).

The following benchmarks quantify the current execution speed of OzVM.

Very-small Medium-small Medium Very-large
Filename go_mw.txt gzip-1.2.4a.tar lcc-4.1.tar linux-2.4.1.tar
Size (bytes)
Uncompressed 1,942 798,720 4,259,840 107,571,200
Gzip 1,034 221,779 673,112 24,856,470
OzStream/gzip 10,543 231,228 682,621 24,865,979
Decompression time (sec), System A
Linux 2.4.0, Intel Celeron 400 MHz CPU, 128 MB RAM, GCC 2.96
Native zcat 0.00 0.08 0.31 9.49
OzStream/gzip 386 JIT 0.04 0.18 0.74 21.11
OzStream/gzip interpreted 0.14 2.29 10.12 276.96
Decompression time (sec), System B
Windows 2000, AMD Athlon 900 MHz CPU, 1024 MB RAM, MSVC 6.0
Native zcat 0.03 0.04 0.11 2.77
OzStream/gzip 386 JIT 0.03 0.11 0.43 10.99
OzStream/gzip interpreted 0.08 1.11 4.86 132.12

Contact Info

OzVM is developed and written by Cory Sharp <cssharp@mail.com> .


SourceForge Logo Thank you, SourceForge.

$Revision: 1.8 $
$Date: 2001/09/28 05:15:11 $