저는 실시간 임베디드 시스템을 테스트하기위한 간단한 해석 언어를 설계하고 있습니다. 제어 흐름은 스크립트가 수행 할 작업 + 실행 시간에 대한 강력한 정적 보장을 제공하기 위해 심각하게 제한됩니다. 예를 들어, 상수 조건으로 분기하거나 고정 범위로 반복 할 수 있습니다.하스켈에서 C++ interop을 사용하여 간단한 DSL 구현하기
관련 모델과 IO 라이브러리가있는 C++의 기존 코드베이스가 너무 커서이 언어는 C++을 호출 할 수 있어야합니다. 테스트중인 시스템에는 까다로운 타이밍 요구 사항이 있으므로 테스트 프레임 워크에서 많은 지터를 감당할 수 없습니다. 우리의 과거 솔루션은 C++ 런타임에 임베디드 된 맞춤형 DSL 이었지만 우리는 필요한 정적 인 보장을 달성하기 위해 너무 많은 바퀴 (파서, 린터, 인터프리터 인터프리터 등)를 다시 발명 해 냈습니다.
이러한 보증을 통해 임베디드 DSL을 제작하는 하스켈의 설비는 매우 매력적이지만 소프트 실시간 C++ 런타임에 임베드하는 방법을 결정하지 못했습니다. 어떤 아이디어? 라이브러리/기존 프로젝트에 대한 포인터가 크게 감사하겠습니다!
[GHC RTS 임베디드] (https://downloads.haskell.org/~ghc/7.10-latest/docs/html/users_guide/ffi-ghc.html) - 간단히 요약하면 다음과 같습니다. 런타임에'hs_init()'을 사용하고 Haskell에서 Haskell 소스를로드 & 실행하거나 C++에서 미리 컴파일 된 Haskell 코드의 공유 라이브러리를로드하려면 [hint] (https://hackage.haskell.org/package/hint)를 사용하십시오. (후자는 Facebook에서 [Haxl] (https://github.com/facebook/Haxl) 코드를 사용하는 것입니다.) –