HHVM

HHVM
HHVM
HHVM logo, featuring white uppercase "HHVM" letters on a black background, with stylized triangular geometric shapes on the left
개발자메타 플랫폼
초기 릴리즈2011년 12월 9일, 10년 전(2011-12-09)[1]
안정된 릴리스4.158.0 (2022년 4월 20일, 3개월 전 (2022-04-20) [±][2]
저장소
기입처PHP, C++,[3] OCaml[4][a] [5] Rust
면허증.PHP 라이선스 및 Zend[6] 라이선스
웹 사이트hhvm.com Edit this at Wikidata

HipHop Virtual Machine(HHVM)은 Hack 프로그래밍 언어의 실행 엔진으로 사용되는 JIT(Just-in-Time) 컴파일을 기반으로 하는 오픈 소스 가상 머신으로, HHVM 버전 [7]4가 출시되기 전에 PHP 실행을 지원하는 데 사용됩니다.JIT 컴파일 원리를 사용하여 먼저 Hack 코드를 중간 HipHop 바이트 코드(HHBC)로 변환하고, Hack 코드를 x86-64 머신 코드로 동적으로 변환하여 최적화하여 기본적으로 실행합니다.[8][9]이는 Zend Engine이 PHP 소스 코드를 바이트 코드의 한 형태로 기능하는 opcode로 변환하고 Zend Engine의 가상 [10]CPU에서 opcode를 직접 실행하는 PHP의 일반적인 인터프리터 실행과는 대조적입니다.

HHVM은 Meta에 의해 개발되었으며 프로젝트의 소스 코드는 GitHub에서 [11]호스팅되고 있으며 PHP 라이센스와 Zend [1][6]라이센스의 조건에 따라 라이센스가 부여됩니다.

개요

HHVM은 HipHop for PHP(HPhc) PHP 실행 엔진의 후속 제품으로 생성되었으며,[12][13] Facebook에서 만든 PHP-to-C++ 트랜스필러이기도 합니다.HPHPc에 의해 도입된 문제를 해결하는 것을 목표로 하는 경험을 바탕으로 Meta는 2010년 초에 JIT 기반의 PHP 가상 머신을 만들기로 결정했습니다.HPHPc와 관련된 문제로는 성능 향상을 위한 안정기에 도달한 것, PHP [12]언어의 모든 기능에 대한 완전한 지원 부족, HPHPc를 사용하는 PHP 프로젝트에 필요한 특정 시간과 리소스 소모적인 개발 및 배포 프로세스에서 발생하는 어려움이 있었습니다.2013년 1분기에 facebook.com 웹사이트의 프로덕션 버전이 HPHPc 사용을 중지하고 HHVM으로 전환되었습니다.

JIT 컴파일 원칙에 따라 HHVM은 먼저 실행된 PHP 또는 Hack 코드를 중간 언어라고도 하는 고급 바이트 코드인 HHBC로 변환합니다.HHBC는 HHVM용으로 특별히 작성된 바이트 코드 형식으로 인터프리터와 저스트 인 타임 컴파일러 양쪽에서 사용하기에 적합합니다.실행의 다음 단계로 HHVM은 HHBC 바이트 코드를 x86-64 머신 코드로 동적으로 변환하고 변환된 바이트 코드의 동적 분석을 통해 추가 최적화를 수행하고 x86-64 머신 [1][12][14]코드를 실행합니다.그 결과 HHVM은 C# 언어용 공통 언어 런타임(CLR) 및 Java 가상 머신(JVM, Java 언어용) 등 다른 프로그래밍 언어에서 사용되는 가상 머신과 몇 가지 유사성이 있습니다.

HHVM은 HPHPc와 비교하여 많은 이점을 제공하며, 그 중 하나는 PHP 버전 5.4의 공식 구현에 의해 정의된 전체 PHP 언어에 대한 거의 완전한 지원이며, 여기에는 HHVM의 지원이 포함됩니다.create_function()그리고.eval() 구성.[15][16]또한 HHVM은 운영 환경과 개발 환경 모두에서 동일한 실행 엔진을 사용하며 실행 엔진과 HPHD 디버거 간의 통합을 지원하므로 HPHPi(HipHop Interpreter)를 wi와 같이 별도로 관리할 필요가 없습니다.또한 HPHPc. HHVM은 HPHPc가 PHP 프로그램을 실행하기 위해 필요로 하는 긴 빌드를 제거하여 [1]HPHPc의 경우보다 훨씬 간단한 개발 및 배포 프로세스를 제공합니다.

HHVM과 함께 Meta는 프로그래머가[17][18] 동적 타이핑과 정적 타이핑을 모두 사용할 수 있는 개념인 Hack을 출시했습니다.이것은 점진적 타이핑이라고도 하며 함수 인수, 함수 반환 값 및 클래스 속성에 대해 유형을 지정할 수 있습니다. 그러나 로컬 변수의 유형은 지정할 수 없습니다.동시에, Hack은 PHP의 일부 기능을 실행하지 않음으로써 완전한 하위 호환성을 제공하지 않습니다.goto스테이트먼트 및 다이내믹 변수 [19][20][21][22]이름.

2017년 9월, 버전 3.24가 공식적으로 PHP를 지원하는 마지막 HHVM이 될 것이며, HHVM은 PHP [23]7의 차이점과 비호환성을 이유로 향후 Hack만을 지원할 것이라고 발표되었습니다.

성능

실행 환경을 제공하는 프로세스 가상 머신으로서 HHVM은 라이브 타입 정보를 사용하여 보다 효율적인 네이티브 코드를 생성할 수 있으므로 웹 서버의 throughput이 향상되고 지연 시간이 단축됩니다.2012년 4분기에는 HHVM에서 facebook.com의 소스 코드를 실행함으로써 HPHPc와의 성능 [12]동등성을 달성했으며, 2013년 12월에는 HPHPc를 약 15%[24] 능가했습니다.

「 」를 참조해 주세요.

메모들

  1. ^ Hack의 타입 체크만 (hh_serverhh_client) 및 코드 포맷(hh_format) 명령줄 유틸리티와 데몬은 HipHop Virtual Machine과 함께 OCaml로 작성됩니다.

레퍼런스

  1. ^ a b c d Jason Evans (December 9, 2011). "The HipHop Virtual Machine". Meta Platforms. Retrieved August 2, 2014.
  2. ^ "Releases · facebook/hhvm". Facebook. April 20, 2022. Retrieved May 1, 2022.
  3. ^ "Building and installing HHVM on CentOS 7.x". github.com. Meta Platforms. May 26, 2015. Retrieved June 12, 2015.
  4. ^ "Building the Hack typechecker". github.com. Meta. September 10, 2014. Retrieved June 12, 2015.
  5. ^ "Facebook's HHVM Begins Seeing Rust Rewrite - Phoronix". Retrieved August 29, 2019.
  6. ^ a b "facebook/hhvm: License". github.com. Facebook, Inc. Retrieved August 2, 2014.
  7. ^ "HHVM 4.0.0".
  8. ^ Ottoni, Guilherme (June 20, 2018). "HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack". Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). ACM. pp. 151–165.
  9. ^ "facebook/hhvm". github.com. Meta Platforms. Retrieved August 2, 2014.
  10. ^ Kaushik Pal (April 28, 2014). "PHP and Zend Engine Internals". phpbuilder.com. Archived from the original on September 15, 2014. Retrieved September 23, 2014.
  11. ^ GitHub의 HHVM 소스 코드
  12. ^ a b c d Drew Paroski (November 29, 2012). "Speeding up PHP-based development with HHVM". Meta Platforms. Retrieved August 2, 2014.
  13. ^ "Announcement on GitHub removing HPHPc support". github.com. Meta Platforms. February 19, 2013. Retrieved May 24, 2013.
  14. ^ "HipHop Bytecode v1 revision 18". github.com. Meta Platforms. July 31, 2014. Retrieved May 24, 2013.
  15. ^ "facebook/hhvm: About upgrade to PHP 5.4 engine". github.com. May 2013. Retrieved August 2, 2014.
  16. ^ "facebook/hhvm: Home". github.com. Meta Platforms. May 8, 2014. Retrieved August 2, 2014.
  17. ^ Cade Metz (March 20, 2014). "Facebook Introduces 'Hack,' the Programming Language of the Future". Wired. Retrieved April 15, 2014.
  18. ^ Julien Verlaguet; Alok Menghrajani (April 2014). "Hack: a new programming language for HHVM". code.facebook.com. Facebook. Retrieved March 23, 2014.
  19. ^ Josh Lockhart (April 3, 2014). "Facebook's Hack, HHVM, and the future of PHP". O'Reilly Media. Retrieved August 2, 2014.
  20. ^ "Hack and HHVM: Type Annotations (Hack Manual)". docs.hhvm.com. Retrieved March 25, 2014.
  21. ^ "Hack and HHVM: Type Inference (Hack Manual)". docs.hhvm.com. Archived from the original on March 26, 2014. Retrieved March 25, 2014.
  22. ^ "Hack and HHVM: Unsupported PHP Features in Hack (Hack Manual)". docs.hhvm.com. Archived from the original on November 4, 2015. Retrieved April 2, 2014.
  23. ^ Krill, Paul (September 20, 2017). "Forget PHP! Facebook's HHVM engine switches to Hack instead". InfoWorld. Retrieved February 6, 2019.
  24. ^ "We are the 98.5% (and the 16%)". hhvm.com. December 19, 2013. Retrieved August 2, 2014.

외부 링크