8 ms·
The HipHop Virtual Machine
- ericmoritz 15y agoExcuse my ignorance of LLVM but couldn't someone build a PHP LLVM JIT compiler and stand of the shoulders of that project? I am sure I am trivializing the effort that it takes to make JIT for PHP.
- rayiner 15y agoLLVM isn't the worlds greatest target for a dynamic language, as Rubinius and Unladen Swallow found out. It does a lot of low level optimization, but a basic prerequisite to that is being able to do some sort of optimistic type-based optimizations, and LLVM has no infrastructure for that. It looks like HipHopVM uses tracing which is probably a better way to go.
- hendler 15y agoAre they at any risk for VM patent issues?
- donspaulding 15y agoFinally we've answered the question "How big do you have to be before writing a custom VM isn't over-engineering?" Facebook Big.
- aurelianito 15y agoThis is the kind of things that make me want to work in a company like Facebook.
- cpeterso 15y agoThis is the kind of things that make me not want to work in a company like Facebook.
- keeran 15y agoCouldn't help but chuckle at the code example return $hit
- draegtun 15y agoYes its amazing how easy it sneaks in! Was looking at a gist of mine recently (https://gist.github.com/1222875 https://gist.github.com/1222875) and it suddenly jumped out at me! my $hits = ... for my $hit (@$hits) { my $user = $hit->{_source}; ... } :)
- mrich 15y agoSounds like they are some experienced software engineers: >The first 90% of the hhvm project is done; now we're on to the second 90% as we make it really shine.
- k_bx 15y agoReally experienced mention the third 90% http://morepypy.blogspot.com/2011/11/gothenburg-sprint-report.html http://morepypy.blogspot.com/2011/11/gothenburg-sprint-repor... (search 90%)
- josefresco 15y agoGoing to use that line next time a client asks me "how close we are to launch".
- enduser 15y agoThis is a good reminder not to build anything other than a prototype in a language that you're going to regret later.
- tyree732 15y agoI can't imagine that Facebook regretted PHP until it was too late for them to do anything about it.
- deleted 15y ago[deleted]
- leftnode 15y agoFacebook also has some unique traffic problems that almost no other startup is going to experience.
- scotty79 15y agoIf they started with Python (or anything else) they would have ended up in the same place. They would end up writing their own compiler and VM because they want and they can. It's actually amazing that they didn't extend the language itself yet.
- kmavm 15y ago(I work on HHVM.) We've dipped our toes into the waters of changing the language a bit. Setting the Eval.EnableHipHopSyntax and Eval.EnableHipHopExperimentalSyntax flags in HipHop enables a few differences, the most notable of which is a Python-inspired 'yield' syntax for generators.
- wmf 15y agoIf they started with Java they would have found that HotSpot isn't fast enough and written their own?
- scotty79 15y ago
- lansing 15y agoLooks like an impressive, cool project. 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.
- kmavm 15y agoAll engineers, those who work on HHVM like me included, spend their lives in a run-debug cycle trying to "make this darned thing work," whether "this darned thing" is a language runtime or the new photo uploader. The tighter you can make that loop, the more productive the engineer is, because she has less time to keep all the items she's mentally juggling pinned in volatile short-term memory.
- lansing 15y agoSure, we all go through life via a form of trial and error, learning from our mistakes. 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.
- nodesocket 15y agoWe are looking into running our API on HipHop, but not until the load justifies the effort to migrate. Currently running on lighttpd with PHP-FPM.
- beagle3 15y agoThe state of the art in JITs is LuaJIT2, despite almost no fanfare (and lots of fanfare by other JIT projects). I haven't had a look at hhvm yet, but if anyone wants a cool project, make hiphop emit Lua instead of C++, and run it under LuaJIT2. LuaJIT2 really is magic, and Mike Pall is a humble but talented magician.
- spitfire 15y ago"The x64 machine code that the translator generates consumes approximately ten times as much memory as the corresponding HHBC. CPU instruction cache misses are a limiting factor for the large PHP applications that Facebook runs, so a hybrid between interpretation and translation may outperform pure translation." This tells me that the engineers on the hhvm project are at least smarter than the engineers on the Java language.
- rat87 15y agowhat did the java engineers get wrong? Hotspot performs fast interpretations then compiles after multiple run of a piece of code.
- js4all 15y agoThe hhvm is some nice piece of software, but it also takes many resources. This will always remind me to be very careful when making a design decision, like what language to use for project.