Talk:HipHop for PHP

Latest comment: 9 years ago by Dsimic in topic Split into two articles

Page Title edit

HipHop (software) not HipHop (computing) —Preceding unsigned comment added by 92.48.40.19 (talk) 09:21, 9 February 2010 (UTC)Reply

Supported Version of PHP edit

According to the current wiki page, HipHop now supports most features of PHP 5.3. Would it be good to mention this? I only ask because I almost disregarded HipHop for a project since I need PHP 5.3 support but it (hopefully) should work --129.123.38.97 (talk) 20:36, 31 October 2011 (UTC)Reply

HHVM not HPHPc edit

What this article actually describes is the static compiler HPHPc, even though Facebook no longer uses this and has moved to HHVM. In fact, on the official website for HopHop it states, "HHVM should be used in favor of HPHPc and HPHPi in all cases." HHVM is a different technology from HPHPc, and does not involve conversion to C++. Instead, it uses conversion to bytecode plus (optional) Just in Time compilation. Much of the article needs to be rewritten; I would do it, but I don't care. HairyWombat 16:58, 15 March 2013 (UTC)Reply

Update to reflect the new HipHop edit

As mentioned by HairyWombat, this page has become so far out of date as to be irrelevant. As the OSS coordinator for the HipHop project, I'm happy to contribute to updating this page, but I know that "self editing" is generally frowned upon. So if anyone doesn't like my changes speak now or revert later, I won't argue in either case, but a blank page would be better than an inaccurate page, IMO. SaraMG (talk) 00:00, 19 March 2013 (UTC)Reply

Page updated for further accuracy edit

Building on the update from SaraMG, I update the page to focus more on HHVM since that is the current HipHop technology. I kept the history section but I made it such that the history led up to HHVM. References, external links, etc. have all been updated to be more current. I believe this page is quite accurate now. Joelmfb (talk) 22:10, 24 May 2013 (UTC)Reply

Origin Date for beginning of HipHop in question edit

A Google Developer named Dan Bornstein (responsible for the Dalvik VM) mentions in a 2008 Google I/O discussion that he worked previously on other Virtual Machines, including HipHop (specifically mentioned by name). If that mention was in 2008, then, barring reference to another HipHip VM, that puts into question the actual date that HHVM development began. According to this article, development on HHVM began in 2010. Can this date be further verified? — Preceding unsigned comment added by VonKemper (talkcontribs) 02:25, 2 April 2014 (UTC)Reply

Hello there! Any chances, please, for providing a link to that source? Already tried Googling to no avail. — Dsimic (talk | contribs) 02:47, 2 April 2014 (UTC)Reply
A link to the talk in question by Dan Bornstein can be found here. In the video, Dan states that he used to work on the "HipTop Virtual Machine" (with a "T"), *not* HipHop. This is confirmed by Dan's resume and other sources. DrewParoski (talk) 03:53, 9 July 2014 (UTC) Drew ParoskiReply

Split into two articles edit

This article is in an odd state because it covers two completely separate projects—(1) HipHop for PHP, a PHP-to-C++ transcompiler and accompanying development tools and (2) HHVM or the HipHop Virtual Machine, a PHP virtual machine—that share nothing other than part of their names and Facebook's sponsorship.

I'd like to split the section describing (2) into its own article titled HHVM. Since the naming situation is fairly confusing, I've added some reference quotes below. Thoughts? —Neil P. Quinn (talk) 00:52, 26 April 2014 (UTC)Reply

Hm, I'm split between leaving it as-is and breaking into two articles. The upside of splitting is (probably) improved clarity, while the downside comes from the fact article is quite short, so splitting might take things out of context/timeline. How about renaming the article to HipHop and HHVM instead, as HipHop and HHVM are still related? That's what we've done with Intel HD and Iris Graphics, for example. Thoughts? — Dsimic (talk | contribs) 06:38, 27 April 2014 (UTC)Reply
Dsimic, if I understand the article correctly, Iris Graphics chips were just a evolutionary upgrade to the original Intel HD line, so I can understand why you'd want to treat them together. But as I understand it, the relationship between HipHop for PHP and HHVM is completely different; they take entirely different approaches to the challenge of boosting PHP's performance. HHVM was a complete break from HipHop—in my mind, keeping them together would be like lumping together Mac OS 9 and OS X: doable, and sensible in some respects, but ultimately pretty misleading considering the vast differences.—Neil P. Quinn (talk) 02:42, 29 April 2014 (UTC)Reply
You're right, Intel Iris is an evolutionary step from the Intel HD Graphics, created basically by the addition of CPU's L4 cache which is shared with the integrated GPU. When looked from that side, splitting HipHop and HHVM would make sense; however, I'm still concerned with the fact that currently there isn't too much content. In other words, having two separate articles makes sense, but we should figure out first how to keep them well connected without having too much common content acting as a "bridge". Hope it makes sense. Thoughts? — Dsimic (talk | contribs) 10:11, 29 April 2014 (UTC)Reply
HHVM and HPHPc (or HipHop for PHP) share almost the whole frontend to the compiler. The lexer, parser, AST and bytecode are all the old code. Only the execution engines differ. HPHPc used to output C++ code whereas HHVM outputs assembly code in memory. I'm happy to retire HPHPc to an outdated article since no more progress will be done to the project (and all the C++ generating code has been deleted) and keep HHVM in the forefront. — Preceding unsigned comment added by Ptarjan (talkcontribs) 07:20, 11 June 2014 (UTC)Reply
Hm, nothing should be retired, as this is an encyclopedia and historical things are valuable. For example, Intel's 486 processor has been dead for a long time, but there's no need to delete its article here. — Dsimic (talk | contribs) 02:08, 15 June 2014 (UTC)Reply
I agree that this should be split into two separate articles: one for "HHVM" (aka "the HipHop Virtual Machine"), the JIT compiler-based PHP engine open sourced in December 2011 [1] which is still an active project maintained both by Facebook engineers and open source contributors; and one for "HipHop for PHP" (aka "HPHPc"), which is the retired PHP->C++ transpiler open sourced in February 2010 [2] that is no longer actively maintained by anyone. While the two projects shared a fair amount of code at one point in time, they take very different approaches as Neil Quinn noted, they have different goals, and the code that was shared between HPHPc and HHVM has diverged quite a bit in the last year and a half.
When HHVM was announced in late 2011, there was a lot of confusion for a couple reasons. First, the name "HipHop Virtual Machine" (which was intended to be an homage to HPHPc) was too similar. Also, both HHVM and HPHPc were hosted as a single github project for about 14 months until HPHPc was officially retired, and during this period the github URL was still "github.com/facebook/hiphop-php" (same as before HHVM was open sourced). This confusion caused a handful of posts and comments on different sites to erroneously claim that HHVM was a PHP-to-C++ transpiler or that HHVM did not support dynamic constructs like eval() (which is incorrect). (For examples, see,[3],[4] and [5]). To reduce the confusion after HPHPc was retired, Facebook engineers decided to always use the acronym "HHVM" (instead of "HipHop VM" or "HipHop Virtual Machine") when writing blog posts, they changed the github project URL to "github.com/facebook/hhvm", they closed all of the old github issues about HPHPc,[6] and they renamed the Facebook page from "HipHop for PHP" to "HHVM" and changed the URL to "facebook.com/hhvm". Facebook engineers were particularly concerned about reducing confusion because HHVM aims to be a fully-compatible drop-in replacement for the php.net implementation, whereas HPHPc was never aiming to do this, and this distinction is relevant to developers who are considering whether or not to use HHVM.
I don't think there would be significant duplication if this was split up into two articles. The existing article is already neatly separated for the most part, and IMO it would only require reworking a few sentences in the introduction and add some links between the "HipHop for PHP" and "HHVM" articles. DrewParoski (talk) 03:26, 9 July 2014 (UTC) Drew ParoskiReply
Reference quotes for naming

Primary (not parenthetical) mentions of these projects are bolded and suffixed with a number describing whether they refer to [1] the transcompiler project or [2] the virtual machine.

  • "Today I'm excited to share the project a small team of amazing people and I have been working on for the past two years; HipHop for PHP[1]...We have also developed HPHPi which is an experimental interpreter designed for development."—Facebook blog, Feb 2010
  • "That’s how Facebook explains the significance of its new PHP executor, HipHop Virtual Machine[2]....HHVM[2] will improve the performance of Facebook’s code....Facebook originally deployed its open source HipHop for PHP[1] in February 2010."—Techcrunch, Dec 2011
  • "In late 2011 we announced that we were pursuing a just-in-time (JIT) compilation approach called HipHop VM[2] (HHVM) as a successor to the HipHop PHP-to-C++ compiler[1] (HPHPc)....We are happy to announce that HHVM[2] is now as fast as HPHPc[1]."—Facebook blog, Nov 2012
  • "Facebook has been using the virtual machine, called the HHVM[2] (HipHop Virtual Machine), across all of its servers since earlier this year...Facebook originally devised a compiler, called HipHop[1], that would translate PHP code into C++...(The previous HipHop, renamed HPHPc[1], has now been retired within Facebook.)"—Javaworld, Jul 2013
  • "In 2010, Facebook rolled out a tool called HipHop[1]...the trio agreed that Facebook could take PHP performance to an even higher level if they replaced HipHop with something called a virtual machine....In a nod to the company’s original PHP converter, they called the system the HipHop Virtual Machine[2], or HHVM[2] for short."—Wired, Jul 2013
  • "Facebook has also made great progress on its alternative open-source PHP engine, the HipHop Virtual Machine[2] (HHVM). HHVM[2] uses..."—O'Reilly Programming, Mar 2014
  • "Hack runs only on Facebook’s HipHop virtual machine[2] (HHVM)....Should you start learning Hack and HHVM[2]? Yes."—O'Reilly Programming, Apr 2014
  • "HHVM[2] is an open-source virtual machine..."—HHVM official website

References

Hey, DrewParoski! Thank you for providing such a good insight and a bunch of backing references. After going through everything in detail, and by looking into the amount of provided references, a split into two articles (HipHop Virtual Machine and HipHop for PHP) looks much more reasonable to me. If nobody else does that earlier, I'll try to do that in the next few days. Just as a note and based on the description on your user page, unfortunately you should stay aside, so we avoid a possible WP:COI. :) — Dsimic (talk | contribs) 05:44, 9 July 2014 (UTC)Reply

After some time has passed, it's finally done – please check it out. — Dsimic (talk | contribs) 12:58, 2 August 2014 (UTC)Reply
Just as a note, I've improved the content of both articles, hope you'll find those improvements to be just fine. :) — Dsimic (talk | contribs) 13:37, 2 August 2014 (UTC)Reply