Live data from Hacker News

The HipHop Virtual Machine

research.facebook.com

11–20 of 31 posts

Re: The HipHop Virtual Machine

#11
I'm using HHVM in production for a few weeks now and all I can say is I'm very happy with the results. It's running stable (compiled under CentOS7) and I was able to cut the response times in half (~145ms with php-fpm, ~70ms HHVM).

Re: The HipHop Virtual Machine

#12
post #11

I'm using HHVM in production for a few weeks now and all I can say is I'm very happy with the results. It's running stable (compiled under CentOS7) and I was able to cut the response times in half (~145ms with php-fpm, ~70ms HHVM).

What is the version of your PHP?

Re: The HipHop Virtual Machine

#13
I'm migrating to HHVM across my whole stack. Massive performance gains, only issues have been with some plugins that I was able to pretty easily work around.

Good stuff! Uncached, HHVM outperforms my cached php-fpm sites.

Re: The HipHop Virtual Machine

#14
post #11

I'm using HHVM in production for a few weeks now and all I can say is I'm very happy with the results. It's running stable (compiled under CentOS7) and I was able to cut the response times in half (~145ms with php-fpm, ~70ms HHVM).

What is the version of your PHP?

Just the other day I saw a demo of (unaltered) WordPress running with HHVM and PHP7(!)

Re: The HipHop Virtual Machine

#15
post #11

I'm using HHVM in production for a few weeks now and all I can say is I'm very happy with the results. It's running stable (compiled under CentOS7) and I was able to cut the response times in half (~145ms with php-fpm, ~70ms HHVM).

What is the version of your PHP?

[root@hostname:~]# php -v PHP 5.5.18 (cli) (built: Oct 16 2014 12:09:38) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

Re: The HipHop Virtual Machine

#16
post #10

So, a couple of questions: a. Does the HHVM JIT do anything that LuaJIT doesn't? I assume you are familiar with LuaJIT, as it is mentioned in the paper - and from a quick scan, the only two things I didn't recognize from LuaJIT were the refcount optimizations (not required by Lua GC) and guard relaxation. b. Is HHIR tied to Php, or is it usable as a general purpose JIT backend? LuaJIT's IR is, (unfortunately for othe…

It's a shame. As far as I can tell, the only proven multi-language JIT for FOSS platforms is still the JVM? (and Mono maybe?)

Despite a lot of that's gone in to Parrot, PyPy, v8, etc, none of these VMs seem to have really taken off beyond the language they were intended for. Somewhat more sad is that pretty much all de-facto default runtimes for popular dynamic languages (except Javascript) are still interpreters... the cost of being portable.

Re: The HipHop Virtual Machine

#17
post #15

Earlier quoted context omitted.

What is the version of your PHP?

[root@hostname:~]# php -v PHP 5.5.18 (cli) (built: Oct 16 2014 12:09:38) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

Great! With opcache enabled right?

Re: The HipHop Virtual Machine

#18
post #16
post #10

So, a couple of questions: a. Does the HHVM JIT do anything that LuaJIT doesn't? I assume you are familiar with LuaJIT, as it is mentioned in the paper - and from a quick scan, the only two things I didn't recognize from LuaJIT were the refcount optimizations (not required by Lua GC) and guard relaxation. b. Is HHIR tied to Php, or is it usable as a general purpose JIT backend? LuaJIT's IR is, (unfortunately for othe…

It's a shame. As far as I can tell, the only proven multi-language JIT for FOSS platforms is still the JVM? (and Mono maybe?) Despite a lot of that's gone in to Parrot, PyPy, v8, etc, none of these VMs seem to have really taken off beyond the language they were intended for. Somewhat more sad is that pretty much all de-facto default runtimes for popular dynamic languages (except Javascript) are still interpreters...…

I wouldn't say the JVM is a proven multi-language JIT, FOSS or not.

It works for multiple languages that go the extra mile - e.g. Jython pays very dearly in performance because of the object model mismatch between Python and Java. And I haven't looked closely recently, but when Clojure first came out, the impedance mismatch between Clojure's persistent data structures and Java's mutable ones also had a ridiculous performance cost.

Mono is perhaps more deserving of that title, especially together with IKVM, (so, everything JVM), F#, IronPython and Boo. But note that everything is still shackled to the underlying object model.

But if anything, LLVM is the only proven multi-language JIT for FOSS platforms; it's method-at-a-time, which is great for staticly typed languages (whether those types are declared upfront or inferred), not so much for extremely dynamic languages.

Re: The HipHop Virtual Machine

#19
post #16
post #10

So, a couple of questions: a. Does the HHVM JIT do anything that LuaJIT doesn't? I assume you are familiar with LuaJIT, as it is mentioned in the paper - and from a quick scan, the only two things I didn't recognize from LuaJIT were the refcount optimizations (not required by Lua GC) and guard relaxation. b. Is HHIR tied to Php, or is it usable as a general purpose JIT backend? LuaJIT's IR is, (unfortunately for othe…

It's a shame. As far as I can tell, the only proven multi-language JIT for FOSS platforms is still the JVM? (and Mono maybe?) Despite a lot of that's gone in to Parrot, PyPy, v8, etc, none of these VMs seem to have really taken off beyond the language they were intended for. Somewhat more sad is that pretty much all de-facto default runtimes for popular dynamic languages (except Javascript) are still interpreters...…

The JVM is multi-language only because the languages were specifically designed and/or modified to run on it.

Re: The HipHop Virtual Machine

#20
post #5
post #4

I assume latent type means simply the implicit typing. i.e. you declare a variable with the value, and the type is inferred through the value of the variable rather than the explicit type declared.

Hi, I'm one of the paper's co-authors. As usual, the abstract really isn't enough to draw big conclusions from. The concept of a latent type applies to arbitrary expressions, not just variables. All the values flowing through a PHP program implicitly share the same union type; they can be floats, strings, arrays, etc. The latent types are the narrower types that can actually flow through the program in practice. To b…

I'm wondering: how does this compare speed-wise to other real-world JITs. For example, node.js (V8). Are there any tricks used in your VM which are not used by V8, and conversely?
Post reply on HN