Once you have checked out and built vmkit and
+played around with it, you might be wondering what you can do to make it better
+and contribute to its development. Alternatively, maybe you just want to follow
+the development of the project to see it progress.
+
+
+
Follow what's going on
+
+
VMKit is a subproject of the LLVM Project, and
+uses llvm dev mailing list for development question and the vmkit-commits
+mailing list for patches:
+
+
+
vmkit-commits
+ - This list is for patch submission/discussion.
+
+
llvmdev -
+This list is for everything else llvm/vmkit related (questions and answers, bug
+reports, etc).
+
+
+
+
The best way to talk with other developers on the project is through the llvm-dev mailing
+list.
+
+
+
Open Projects
+
+
Here are a few tasks that are available for newcomers to work on, depending
+on what your interests are. This list is provided to generate ideas, it is not
+intended to be comprehensive. Please ask on llvm-dev for more specifics or to
+verify that one of these isn't already completed. :)
+
+
+
Write a test-suite and nightly tester for vmkit: vmkit needs it!
+
+
Port vmkit to new architectures: currently, vmkit runs on linux/x86
+and has some floating point issues on linux/powerpc
+See PR642. A port to
+darwin/x86 would be nice.
+
+
+
Implement a generational GC in llvm/vmkit: llvm has the interface
+for GC support for static compilation, but not just in time. And since llvm is
+object layout-agnostic, vmkit needs to plug in its object layout somewhere.
+
+
+
Improve LLVM with non-calls exceptions: This is work-in-progress
+see PR1269.
+
+
+
Investigate hotspot-ing in llvm/vmkit: vmkit has a compile-only
+approach. This resuts in a high startup penalty.
+
+
Implement a llvm/clang/vmkit 'libgcc': vmkit uses the unwinding
+runtime of GCC. So it is strongly dependent on GCC. Implementing the
+unwind functions in llvm will help port vmkit to other compilers.
+
+
+
+
If you hit a bug with vmkit, it is very useful for us if you reduce the code
+that demonstrates the problem down to something small. There are many ways to
+do this; ask on llvm-dev for advice.
This page gives you the shortest path to checking out vmkit and demos a few
+options. This should get you up and running with the minimum of muss and fuss.
+If you like what you see, please consider getting
+involved with the vmkit community.
+
+
+
A word of warning
+
+
While this work aims to provide a fully functional JVM and CLI runtime, it
+is still early work and is under heavy development.
+Some of the more notable missing pieces in the JVM are:
+
+
+
Support for JVM object finalization semantics.
+
+
+
Some of the more notable missing pieces in the CLI runtime are:
+
+
+
Support for generics.
+
Support for arithmetic overflow.
+
Support for CLI object finalization semantics.
+
Thread support.
+
+
+
Some of the common missing pieces in vmkit/llvm are:
If you would like to check out and build the project, the current scheme
+is (if you only want the JVM, you can skip the Pnet part. If you only want the CLI
+VM, you can skip the GNU Classpath part):
The VMKit project is an implementation of a JVM and CLI virtual machine
+ (.Net is an implementation of the CLI). It translates Java bytecode and
+ MSIL in the LLVM IR and uses the LLVM framework for optimizations and just
+ in time compilation. You can get and build the
+ source today.
+
+
+
Features and Goals
+
+
+
Some of the goals for the project include the following:
+
+
End-User Features:
+
+
+
Virtual machine interoperability
+
Experiment virtual machine technologies with a small code base
+
Very fast on scientific applications
+
+
+
Utility and Applications:
+
+
+
Infrastructure for virtual machine development
+
Use the LLVM 'BSD' License
+
+
+
Internal Design and Implementation:
+
+
+
Real-world, production quality virtual machines (the JVM runs Tomcat)
+
A simple and hackable code base
+
Execute virtual machines in the same environment
+
+
+
+
Why?
+
+
+
The development of vmkit was started out of a need to factorize virtual
+ machine development. The JVM and CLI virtual machine have many
+ similarities, but are too high-level to be the basis of a "universal"
+ virtual machine. The LLVM IR on the opposite is low-level enough to be
+ able to execute these VMs. VMKit is a proof of concept implementation
+ towards that direction.
+
+
An introduction to vmkit (here called LadyVM because it's a port of the
+ JVM to the Boehm garbage collector) can be found in the following paper:
+
VMKit is still in its early development stages. If you are looking to
+ experiment virtual machine technologies, vmkit is probably a great solution
+ for you. If you want to use it as a drop in JVM or .Net, it is not yet
+ ready.
+
+
VMKit currently has a decent implementation of the JVM. It executes
+ Apache projects (e.g. OSGi Felix and Tomcat) and the SPECJVM98 benchmark.
+ The CLI implementation is still in its early stages, but can execute
+ simple applications.
Once you've done that, please consider getting
+ involved in the vmkit community. Currently, vmkit is tightly
+ integrated into the llvm community. You can sign up for the llvm mailing
+ list to ask and learn about how the project works.
+
+
+
Added: vmkit/trunk/www/ladyvm.html
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/www/ladyvm.html?rev=52823&view=auto
==============================================================================
--- vmkit/trunk/www/ladyvm.html (added)
+++ vmkit/trunk/www/ladyvm.html Fri Jun 27 02:58:23 2008
@@ -0,0 +1,51 @@
+
+
+
+
+
+ A Lazy Developer Approach: Building a JVM with Third Party Software
+
+
+
+
+ A Lazy Developer Approach: Building a JVM with Third Party Software
+
+
+ Nicolas Geoffray, Gael Thomas, Charles Clement and Bertil Folliot
+
+
+
Abstract:
+
+The development of a complete Java Virtual Machine (JVM)
+implementation is a tedious process which involves knowledge in different
+areas: garbage collection, just in time compilation, interpretation, file
+parsing, data structures, etc. The result is that developing its own virtual
+machine requires a considerable amount of man/year. In this paper we show that
+one can implement a JVM with third party software and with performance
+comparable to industrial and top open-source JVMs. Our proof-of-concept
+implementation uses existing versions of a garbage collector, a just in
+time compiler, and the base library, and is robust enough to
+execute complex Java applications such as the OSGi Felix
+implementation and the Tomcat servlet container.
+
+
+
+
Bibtex:
+
+ at inproceedings{geoffray08ladyvm,
+ author = {N. Geoffray and G. Thomas and C. Cl\'ement and B. Folliot},
+ title = { A Lazy Developer Approach: Building a JVM with Third Party Software },
+ booktitle = {{International Conference on Principles and Practice of Programming In Java (PPPJ 2008) }},
+ year = {2008},
+ address = {Modena, Italy},
+ month = {September},
+}
+
+
+
+
Added: vmkit/trunk/www/menu.css
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/www/menu.css?rev=52823&view=auto
==============================================================================
--- vmkit/trunk/www/menu.css (added)
+++ vmkit/trunk/www/menu.css Fri Jun 27 02:58:23 2008
@@ -0,0 +1,39 @@
+/***************/
+/* page layout */
+/***************/
+
+[id=menu] {
+ position:fixed;
+ width:25ex;
+}
+[id=content] {
+ /* ***** EDIT THIS VALUE IF CONTENT OVERLAPS MENU ***** */
+ position:absolute;
+ left:29ex;
+ padding-right:4ex;
+}
+
+/**************/
+/* menu style */
+/**************/
+
+#menu .submenu {
+ padding-top:1em;
+ display:block;
+}
+
+#menu label {
+ display:block;
+ font-weight: bold;
+ text-align: center;
+ background-color: rgb(192,192,192);
+}
+#menu a {
+ padding:0 .2em;
+ display:block;
+ text-align: center;
+ background-color: rgb(235,235,235);
+}
+#menu a:visited {
+ color:rgb(100,50,100);
+}
\ No newline at end of file
Added: vmkit/trunk/www/osgi.html
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/www/osgi.html?rev=52823&view=auto
==============================================================================
--- vmkit/trunk/www/osgi.html (added)
+++ vmkit/trunk/www/osgi.html Fri Jun 27 02:58:23 2008
@@ -0,0 +1,49 @@
+
+
+
+
+
+ Towards a new Isolation Abstraction for OSGi
+
+
+
+
+ Towards a new Isolation Abstraction for OSGi
+
+
+ Nicolas Geoffray, Gael Thomas, Charles Clement and Bertil Folliot
+
+
+
Abstract:
+
+The Open Service Gateway Initiative (OSGi) specification defines a dynamic Java-based service oriented architecture for networked environments such
+as home service gateways. To provide isolation between different services, it relies on the Java class loading mechanism.
+While class loaders have many advantages beside isolation, they are poor in protecting the system against
+malicious or buggy services. In this paper,
+we propose a new approach for service isolation. It is based on the Java isolate technology, without a
+task-oriented architecture. Our approach is more tailored to service-oriented architectures and in particular
+offers a complete isolation abstraction to the OSGi platform. It is currently under development, hence
+we do not provide in this paper any technical details nor results.
+
+
+
+
Bibtex:
+
+ at inproceedings{geoffray08isolationosgi,
+ author = {N. Geoffray and G. Thomas and C. Cl\'ement and B. Folliot},
+ title = {{Towards a new Isolation Abstraction for OSGi}},
+ booktitle = {Proceedings of the First Workshop on Isolation and Integration in Embedded Systems (IIES 2008)},
+ year = {2008},
+ pages = {41-45},
+ address = {Glasgow, Scotland, UK},
+ month = {April},
+}
+