Microsoft의 CoreRT는 C #을 크로스 플랫폼 C ++로 전환합니다.

Microsoft는 .Net 도구 체인이없는 플랫폼에서 애플리케이션에 대한 사전 컴파일을 허용하기 위해 .Net 도구 체인을 천천히 변경하고 있습니다.

오픈 소스 CoreRT 프로젝트는 .Net의 표준 명령 줄 런타임 (CLR)을 사용하여 애플리케이션을 실행하지 않습니다. 대신 지정된 .Net C # 앱의 코드에서 C ++ 코드를 생성 한 다음 C ++를 지원하는 모든 대상 플랫폼에서 컴파일하고 연결할 수 있습니다.

Microsoft의 AlphaGeek 개발 블로그에 게시 된 게시물에서 Microsoft는 CoreRT의 작동 원리와 함께 CoreRT의 작동 방식에 대한 계획을 간략하게 설명했습니다.

마이크로 소프트는 "C # 코드를 정말로 작성하고 새로운 IoT 장치에서 '그냥 작동'하도록하고 싶다면 RyuJIT가 해당 프로세서와 작동하는 기계 코드를 생성 할 수있을 때까지는 옵션이 없습니다. 운영 체제. " C #을 C ++로 크로스 컴파일함으로써 .Net 개발자는 .Net이 특정 플랫폼에 배포 될 때까지 기다릴 필요없이 애플리케이션을 제공 할 수 있다고 Microsoft는 말합니다.

마이크로 소프트는 그 작업이 말처럼 쉽지 않다는 점을 인정했지만, 1 년 동안이 목표를 향해 몇 가지 중요한 프로세스를 만들었다 고 언급했습니다. 가장 두드러진 문제는 한 언어를 다른 언어로 번역하는 프로젝트에서 일반적입니다. C ++와 .Net은 구문, 데이터 구조, 언어 논리 등 기능간에 일대일 대응이 없습니다. 따라서 CoreRT는 특정 .Net 기능을 C ++로 우아하게 매핑해야합니다.

실행 속도를 높이기 위해 언어를 C ++로 변환하는 또 다른 주요 프로젝트는 Python 프로그램을 C ++로 변환하는 Nuitka입니다. Nuitka는 CoreRT와 동일한 많은 문제에 직면하고 있으며이를 조정하는 데 더 많은 시간이 소요되는 진행중인 프로젝트입니다. Python의 동적 특성은 언어의 모든 구성이 잠재적으로 매우 변경 가능한 속성을 가진 객체이기 때문에 사전 컴파일 된 언어로 변환하기 어렵습니다. C #은 변수에 정적 유형을 사용하기 때문에 그 관점에서 덜 문제가 있지만 위에서 언급했듯이 여전히 많은 어려움이 있습니다.

오픈 소스 및 인기있는 비 Microsoft 기술에 대한 Microsoft의 지속적인 재정비에서 직접적으로 파생 된 CoreRT에 대한 많은 정보가 있습니다. 하지만 마이크로 소프트는 항상 왜 이런 일을하는지에 대해 실용 주의적이었다. 여기서 실용주의는 .Net 애플리케이션이 이전에 지원하지 않았던 플랫폼과 생태계에서 어떻게 실행될 수 있는지 보는 것이다.

CoreRT는 Microsoft가 과도한 노력을 기울이지 않고도 이론적으로 .Net 에코 시스템의 범위를 넓힐 수 있습니다. 다른 여러 대상 플랫폼에 대한 런타임을 만드는 것보다 C #에서 C ++로 일회성 트랜스 파일 시스템을 작성하는 것이 더 쉽습니다. 물론 .Net이 이제 오픈 소스 관심사가 되었기 때문에 타사에서 이러한 런타임을 만들 수 있습니다. 그러나 마이크로 소프트의 계획은 문제를 해결하는 한 가지 방법을 찾는 것입니다.