My favorites | Sign in
Logo
                

Libjit is a library, which aims to be the best tool for advanced just-in-time compilation. Unlike its competitors like nanojit, GNU lightning, and LLVM, libjit is both open source, free, free software, faster, more platform-independent, easier in use and easier in support. Libjit may be used on GNU/Linux, GNU, Hurd, Linux, Debian, Ubuntu, Suse, RedHat, Fedora Core, Windows, Windows Vista, Windows XP, and many other operating systems, hardware platforms, and software platforms.

Our site contains an unofficial, experimental research branch of libjit library, which studies advanced just-in-time compilation and optimal dynamic compilation in general. Area of research includes generation of machine code, optimal register allocation algorithms, concentrating on ELS (extended linear scan) class register allocation algorithms, specialized implementations of CLI, ECMA-335, Microsoft Common Intermediate Language, virtual machine environments, embedded systems, and cloud computing.

If you are looking for the official version please check the DotGNU site.

Open source / free software for advanced just-in-time and dynamic compilation

Design of libjit and its source code have been started by Rhys Weatherley and Norbert Bollow. They are original creators of DotGNU and Portable.NET open source / free software implementation of Common Language Infrastructure for Free Software Foundation. Later Kirill Kononenko, Klaus Treichel, Aleksey Demakov continued development and design of libjit. To start with, they created missing parts and fixed already existing ones towards a release version suitable for software engineers developing just-in-time compilers. Secondly, they have originally created with libjit themselves from scratch a just-in-time compiler for Portable.NET with addition of another codec parser in Portable.NET source code.

Why implement just-in-time and fast dynamic compilation with libjit library and its API?

Libjit is in our opinion the best library for development of advanced just-in-time compilation in virtual machine implementations, domain-specific languages, dynamic programming languages, and scripting languages. Unlike its competitors, like nano JIT, GNU lightning, and LLVM, libjit has both all following properties:

Why is there this branch of libjit library? Should I use this branch of libjit library?

Yes.

When we made integration of a variant of linear scan register allocation algorithm in libjit we have found that a lot of research and development is needed to make this optimization really useful for current source code base in libjit. Shortly, there was created this branch of libjit that has support of various optimization algorithms, including efficient register allocation algorithms, data-flow and control-flow analysis. These algorithms are enabled with various optimization levels. A hope of this research is that it will help various software projects that already use or only consider implement advanced just-in-time compilation with libjit, and this branch will be integrated back with the main repository tree of libjit.

See more information and downloads section for many answers of questions including this short review, how productivity of libjit design and its approach for just-in-time and fast dynamic compilation compares to use for this task of LLVM or GNU lightning

Source code of libjit linear scan 0.1.2.5 have been released!

See downloads for a package of source code of libjit linear scan 0.1.2.5, research papers, benchmarks, architecture of libjit linear scan, and other documentation.

This release includes besides support of features of mainstream repository:

Where is libjit library used? For instance, do you use it yourself?

Yes.

Libjit research is used as a research base for various other research projects like

Documentation and tutorials in application of libjit library and its API

http://www.gnu.org/software/dotgnu/libjit-doc/libjit.html

The primary interface is in C, for maximal reusability. Class interfaces are available for programmers who prefer C++. Designed for portability to all major 32-bit and 64-bit platforms. Simple three-address API for library users, but opaque enough that other representations can be used inside the library in future without affecting existing users. Up-front or on-demand compilation of any function. In-built support to re-compile functions with greater optimization, automatically redirecting previous callers to the new version. Fallback interpreter for running code on platforms that don’t have a native code generator yet. This reduces the need for programmers to write their own interpreters for such platforms. Arithmetic, bitwise, conversion, and comparison operators for 8-bit, 16-bit, 32-bit, or 64-bit integer types; and 32-bit, 64-bit, or longer floating point types. Includes overflow detecting arithmetic for integer types. Large set of mathematical and trigonometric operations (sqrt, sin, cos, min, abs, etc) for inlining floating-point library functions. Simplified type layout and exception handling mechanisms, upon which a variety of different object models can be built. Support for nested functions, able to access their parent’s local variables (for implementing Pascal-style languages).

--Rhys Weatherley, author of libjit

Please have a look to documentation of libjit on how you may use this tool for support of advanced just-in-time compilation in a commercial product, free software, or a research project.

Mailing lists and google groups

Dotgnu-pnet mailing list

If you want to ask about use of libjit with any other project you probably might be interested to contact mailing lists of those projects. We think the following projects might be interested to use libjit:

How contribute to development of libjit source code or get a special improvement in libjit, which your group requires for its software or hardware platform?

Your job queries and monetary donations may help us to contribute more time and human resources to development of libjit.

Please use savannah and libjit mailing list for submission of your patch or to report a bug you found. Please tell us your thoughts, share your idea on how you would like use libjit library. Please let us know your suggestions on how libjit community may improve libjit library even better for you, for your business needs or your cutting edge research project.

If you are interested to submit your own source code or patch with a new algorithm to libjit, or you found that you require a repository access to cooperate with other researchers and software engineers then you probably may want an access to repository of libjit linear scan.

Access to repository of libjit linear scan is given on first request by email.

Related projects

A project led by Novell (formerly by Ximian) to create an ECMA standard compliant, .NET-compatible set of tools, including among others a C# compiler and a CLR implementation.

A software framework available with several Microsoft Windows operating systems. It includes a large library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the framework. The .NET Framework is a key Microsoft offering and is intended to be used by most new applications created for the Windows platform.

A .NET platform for extremely resource-constrained devices.

An extensible embedded operating system written in C#. Cosmos also encompasses a compiler (IL2CPU) for converting CIL (.NET) bytecode into native instructions. The operating system is compiled together with a user program and associated libraries (written in any .NET language) using IL2CPU to create a bootable standalone native binary. The binary can be run off a floppy, usb key, or inside a VM. Cosmos is in early stages of development. The currently supported architecture is x86, with more planned.

An open source .NET-C# based operating system currently under development by a group of volunteers and presided over by a team of six project administrators (Mircea-Cristian Racasan, Bruce Markham, Johann MacDonagh, Sander van Rossen, Jae Hyun and William Lahti). This operating system is only one of two C# based operating systems released under an open source license. SharpOS is still under major development with only one public version available and a basic command line interface

A Ruby real-time computer vision extension running under GNU+Linux and Microsoft Windows

The Ludicrous JIT Compiler

Intermediate Language Distributed Just In Time (ILDJIT) is a dynamic compiler for the CIL bytecode developed by Politecnico di Milano and released under GPL license

Our contact information:









Hosted by Google Code