The HipHop Virtual Machine
facebook.com
facebook.com
>The first 90% of the hhvm project is done; now we're on to the second 90% as we make it really shine.
return $hit my $hits = ...
for my $hit (@$hits) {
my $user = $hit->{_source};
...
}
:)LuaJIT2 really is magic, and Mike Pall is a humble but talented magician.
I'd say that if Facebook was java based they'd have to stick with hotspot vm. Whether it's a good thing is a completely different story.
So having superior language with better out of the box speed in default implementation - I'd hardly call same place.
I think picking simple language like PHP makes it much easier to create your own fully custom stack once you need one.
Ofcourse Facebook problems will never be your problems so every one should pick what is right for him at any given moment and stop dreming about (im)possible future.
How could Zuckerberg -- or anyone, for that matter -- have predicted the kind of rampant success Facebook has had? Who thought in 2005 that Facebook would become the largest photo sharing site on the web? Or that they would need to handle almost 140 million unique visitors per month?
If the largest problem of your business is your application stack, you are in a very good place. Most businesses have much larger problems like, say, cashflow.
That seems low. According to http://www.facebook.com/press/info.php?statistics, it's 800m active users, more than 50% of which log in on any given day.
I am sure I am trivializing the effort that it takes to make JIT for PHP.
It looks like HipHopVM uses tracing which is probably a better way to go.
The justification for why it matters seems a bit "off" to me:
For perspective on why this matters, consider that many Facebook engineers
spend their days developing PHP code in an endless edit-reload-debug cycle.
The difference between 8-second and 5-second reloads due to switching from
hphpi to the hhvm interpreter makes a big difference to productivity,
and this improvement will be even more dramatic once we enable the translator.
Big leap of intuition follows, bear with me:Clearly there are some very talented engineers working at Facebook, as evident by this project. On the other hand, apparently a large number of Facebook engineers are spending all their time in a run-debug cycle, trying to "make this darn thing work," and the engineers with talent are being used to incrementally improve the mediocre coders' lackluster productivity.
Guys, if three seconds in compile overhead makes such a difference in your productivity, maybe you should think for a few seconds about code correctness before you hit the compile button.
Personally, I think the fewer times you have to go around that wheel, the better.
I don't want to diminish the technical excellence of the achievements touted, and as a coder of primarily compiled languages, I would welcome any such improvements in the compilers I use.
However, my larger point stands-- which is that if a few seconds shaved on the run-debug loop is really a big deal for your total productivity, it means you're looping too much.
Trial and error is a fine way to learn a language, or to debug truly mysterious issues, such as those that exist outside of the abstraction layer you're working in. But in my opinion it's a poor way to work. It means that you don't understand the code you're writing.
One of the other annoyances we had (I think its addressed in the note?) is that until now the interpreter (on our dev machines) and the compiler (hphpc in production) occasionally differ in small, occasionally painful ways. Unifying our development and production environments will eliminate another potential source of bugs.
Also: Tight loops don't imply a lack of understanding. Often times when you're trying to get the CSS on a page just right (across all browsers) it requires quick iteration, even if you do understand CSS well.
Of course, you can do static analysis to some degree which would cut down that time even further, but you may also get false alerts or miss some issues.
This tells me that the engineers on the hhvm project are at least smarter than the engineers on the Java language.