C/C++에서 WebAssembly 및 JavaScript에 이르는 오픈 소스 컴파일러 지원

응원

Cheerp: 웹용 C++ 컴파일러

최근에 발표된 응원 3.0 릴리스, 컴파일러 모든 C/C++ 코드를 WebAssembly 또는 JavaScript로 컴파일할 수 있습니다.. 새로운 브랜치는 비상업적 프로젝트에 GPLv2.0 라이선스 옵션을 제공하고 상업용 프로젝트에 라이선스 소유자를 제공하는 이전에 적용된 제한된 라이선스 정책이 아니라 허용적인 Apache 2 및 LLVM 라이선스를 사용하도록 컴파일러 및 관련 라이브러리를 이동한 점에서 주목할 만합니다.

Cheerp는 기존 C/C++ 응용 프로그램 및 라이브러리를 이식하여 브라우저에서 실행하거나 고성능 웹 응용 프로그램 및 WebAssembly 구성 요소를 처음부터 만드는 데 사용할 수 있습니다.

Cheerp의 이전 릴리스(Cheerp 2.7) 이후 XNUMX년이 지났으며 이 새 버전에는 웹 애플리케이션용 프로그래밍 언어로 C++를 사용하는 최신 기술을 다시 한 번 이동시키는 새로운 기능과 최적화가 포함되어 있습니다. 계략.

가장 중요한 점은 이번 릴리스에서 Cheerp의 라이선싱 모델을 크게 변경한다는 것입니다. Cheerp 3.0부터 모든 핵심 컴파일러 구성 요소와 라이브러리는 이제 Apache 2.0/LLVM 라이선스에 따라 허용됩니다. 이는 이전 GPLv2/이중 상용 라이센스 모델에서 근본적으로 벗어나 Cheerp 3.0을 제한 없이 모든 용도로 사용할 수 있도록 합니다.

치어프 소개

프로젝트 웹 애플리케이션에서 C/C++ 코드와 JavaScript를 결합할 수 있습니다. JavaScript 코드에서 원래 C/C++로 개발된 기능에 액세스하고 C/C++ 코드에서 JavaScript 객체, JavaScript 라이브러리, 웹 API 및 모든 DOM 기능에 액세스할 수 있을 뿐만 아니라 JavaScript로 컴파일되는 코드와 WebAssembly로의 일부. 표준 libc 및 libc++ 라이브러리를 사용하는 빌드 프로젝트를 지원합니다.

Emscripten 컴파일러와 비교하여 Cheerp 보다 최적화되고 컴팩트한 WebAssembly 중간 코드 생성 (평균적으로 결과 파일 크기는 7% 더 작습니다.)

개념적으로 차이점은 다음과 같은 사실로 귀결됩니다. 엠스크립텐 WebAssembly의 객체 포맷으로 사용되며, WebAssembly의 후처리 단계에서 바인딩 및 최적화를 수행합니다. WebAssembly (wasm 선택). Cheerp는 LLVM 바이트코드를 라이브러리 및 개체 파일의 중간 표현으로 사용하여 후처리 없이 LLVM 수준의 메타데이터를 사용하여 프로젝트 전반에 걸친 광범위한 최적화를 허용합니다.

관련 기사 :
Emscripten 3.0, LLVM을 사용하는 WebAssembly용 빌드 도구 모음

또한, Cheerp는 PreExecuter 옵티마이저를 사용하여 선제적으로 코드를 실행합니다. 예를 들어 전역 개체를 상수로 초기화하는 데 사용되는 생성자를 변환하기 위해 컴파일 타임에. 또한 PartialExecuter는 컴파일 중에 사용되며 함수의 매개 변수 구문 분석을 기반으로 실행 시 사용되지 않는 것으로 보장된 코드를 제거합니다.

Cheerp는 또한 메모리와 동적으로 작동하는 JavaScript 코드를 생성할 수 있습니다. 가비지 컬렉터에 의해 처리됩니다. 특히 유형이 지정된 배열로 기존 주소 공간을 에뮬레이트하는 대신 Cheerp는 C++ 개체에서 JavaScript 개체로의 직접 매핑을 제공하여 JavaScript 가비지 수집기가 사용되지 않는 개체를 제거할 수 있기 때문에 메모리 소비를 줄입니다. 성능을 향상시키기 위해 생성된 WebAssembly 중간 코드는 SIMD 확장을 사용하여 데이터 작업의 병렬화를 조율합니다.

Cheerp는 임베디드 웹 애플리케이션을 구축하기 위한 플랫폼으로 사용할 수 있습니다. C++의 클라이언트/서버. 현재 실무에서는 JavaScript로 작성된 별도의 브라우저 기반 프런트 엔드와 PHP, Python, Ruby 또는 JavaScript/Node.js로 작성된 별도의 백엔드를 개발하는 것이 일반적입니다.

Cheerp는 단일 코드 베이스에서 백엔드와 프런트엔드를 모두 지원하는 완전한 C++ 웹 애플리케이션을 구축할 수 있는 수단을 제공합니다.

빌드 프로세스 중에 서버 측은 네이티브 코드로 컴파일되고 인터페이스는 JavaScript 표현으로 변환됩니다. JavaScript로 변환된 것을 포함하여 모든 프로젝트 구성 요소의 디버깅은 소스 맵 기술을 사용하는 C++ 소스 텍스트를 사용하여 수행됩니다.

마지막으로, 그것에 대해 더 많이 알고 싶다면에서 세부 정보를 확인할 수 있습니다. 다음 링크.

컴파일러 코드는 LLVM 및 Clang 개발을 기반으로 하며 성능을 개선하고 컴파일된 출력 크기를 줄이기 위한 추가 최적화를 포함합니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.