Crosstwine Labs

Crosstwine Linker

Crosstwine Linker makes dynamic languages much faster, by applying techniques such as JIT compilation, inline caching, optimistic recompilation and other miscellaneous optimizations.

It is not an end-user product, but rather a set of building blocks which, when coupled with a language-specific adapter, make it possible to “inject” a modern, fast and buzzword-compliant execution engine into an existing implementation.

Crosstwine Linker

Crosstwine Linker has been successfully integrated with the popular Python® and Ruby interpreters, making them up to twenty times faster on some benchmarks, with fourfold speedups frequently observed on compute-intensive code. The modified versions pass the standard test suite of their respective language with the same results as the default interpreter.

Do you think this technology might lower your computing bill? Or reduce wait times for you or your users? Be sure to:

Technology Demos

The modified versions of the aforementioned languages are available as technology demos, and could be made into supported end-user products if there is sufficient demand. They can be downloaded free of charge from the Python and Ruby pages.

FAQ

Note: this is the general Crosstwine Linker FAQ. You will find the demo-specific FAQs on their respective pages.

Is Crosstwine Linker a finished product?

Yes and no. Crosstwine Linker reached version 1.0 alpha, and as such, will be a finished product with a well-defined feature set as soon as the “alpha” qualifier is dropped.

On the other hand, we expect the technology to remain in development for a very long time: the current implementation contains only a very small number of the techniques we envision. This first release is going to help gathering real-world use cases, and drive the next batch of enhancements.

How does it work?

In a nutshell, it observes the run-time behavior of your objects and functions, and optimizes the common case by removing dynamism where it is not needed—while still providing complete safety. We go over quite a bit of the nitty-gritty in the Technical White Paper.

Which architectures do you support?

We currently only support the ubiquitous x86-64 instruction set (also known as AMD64/Intel 64). Contact us if you would like to have the software ported to another computer architecture.

Is there a mailing list for general questions and discussions?

Yes. But you might want to subscribe to one of the language-specific mailing lists instead, please refer to the corresponding demo page for instructions.

If you are interested in language-agnostic discussions, please send an empty message to general-subscribe@crosstwine.com to subscribe; you will be receive instructions for all the usual mailing list procedures in return.

Can I buy it?

Sure! But you might want to consult with us first: you will probably want to take advantage of our expertise in integrating the components into an existing piece of software. Or maybe you are looking to buy a commercially supported version of one of the pre-integrated languages? That's possible, too; please contact us.

Is Crosstwine Linker Open Source?

No. We might decide to release the technology under some kind of Open Source license in the future, but it is not an immediate priority. Note, however, that:

  1. Integration contracts include a source code license giving you a (limited) right to modify and adapt the product without our involvement.

  2. Unless explicitly required by a specific integration scenario, the implanted version of a language remains a drop-in replacement for its standard interpreter: there is no lock-in, and you can “go back” at any time.

What can I do with the demos?

The intent of the demo releases is to allow you to evaluate our technology and services. While feedback and bug reports are welcome, the demos are not officially supported, and will be improved/updated as time permits.

The binaries are “free as in beer,” i.e., gratis, and can be bundled with an application as long as it is not commercially distributed.

Contact us if you have any doubt/question about your use of the software, or would like to enter into a different kind of agreement (we're reasonable).

How is Crosstwine Linker different from other VMs?

Speeding up arbitrary real-world applications can range from being very easy to incredibly difficult, depending on the facilities they rely on. Implementations running on top of “fully-managed” VMs such as Sun's JVM or Microsoft's CLR have an advantage because they can make use of very efficient garbage collectors and other runtime mechanisms—at the cost of a loss of backward compatibility with default implementations, and especially extensions written in C/C++. Another issue is that these VMs are relatively slow at adopting dynamic language features, which have to be designed to be language-agnostic from day one, and remain backward compatible “forever.”

As a services business, the Crosstwine Linker kernel allows us to quickly develop language-, domain-, and even problem-specific interpreters tuned for specific needs: in effect, we can choose (and expand) the level of partial specialization if we know about the target problem. We “cheat” safely, however: a problem-specific customization remains 100% compatible with the language, but can be much faster on some kinds of workloads.

While our demos currently feature generic interpreters for Python 2.6 (only in the labs for now) and 3.1, plus Ruby 1.8 and 1.9, and aim to be generally fast, we can “easily” whip up an enhanced custom interpreter tuned for whatever performance problem you are experiencing, and will decide to reintegrate these improvements into the mainline on a case-by-case basis.

Note: If you haven't yet, you might want to have a look at our Technical White Paper.