코드 생성 대상
코드 생성 대상 (Code Generation Targets)
Idris는 요청에 따라 서로 다른 백엔드용 코드를 생성하도록 컴파일러를 설계했어요. 기본적으로 Idris는 실행 파일을 생성할 때 C 백엔드를 생성해요. 표준 Idris 설치 안에는 Javascript와 Node.js용 백엔드가 포함되어 있어요.
그러나 그 밖에도 서드파티 코드 생성기들이 있어요. 아래에서 우리는 이 백엔드들 중 일부와, Idris 코드를 컴파일할 때 그것들을 어떻게 사용할 수 있는지 설명할게요. 자신의 언어를 위한 코드 생성기를 직접 작성하고 싶다면 GitHub에 그 방향을 잡는 데 도움이 되는 스텁(stub) 프로젝트가 있어요.
출처: 문서
본문
공식 백엔드 (Official Backends)
C 언어 (C Language)
Idris의 기본 대상은 C예요. 생성된 C 코드를 보려면 다음과 같이 컴파일해요:
$ idris hello.idr -S -o hello.c
Javascript
브라우저에서 실행되도록 맞춰진 코드를 생성하려면 다음 명령을 내려요:
$ idris --codegen javascript hello.idr -o hello.js
Idris는 큰 JavaScript 코드 덩어리를 만들어낼 수 있어요 (hello world는 대략 60줄쯤 돼요). 그러나 생성된 코드는 Google의 closure-compiler를 사용해 minify할 수 있어요.
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js
Node.js
NodeJS용 코드를 생성하는 것은 약간 달라요. Idris는 node를 통해 직접 실행할 수 있는 JavaScript 파일을 출력해요.
$ idris --codegen node hello.idr -o hello
$ ./hello
Hello world
서드파티 (Third Party)
주의: 이들은 서드파티 코드 생성기이며, 비트가 썩었거나(bit-rotted) 현재 버전의 Idris와 작동하지 않을 수 있어요. 문제가 있다면 프로젝트의 관리자에게 문의하세요.
CIL (.NET, Mono, Unity)
idris --codegen cil Main.idr -o HelloWorld.exe \
&& mono HelloWorld.exe
결과 어셈블리는 .NET 또는 Unity에서도 사용할 수 있어요. idris-cil이 필요해요.
Erlang
온라인에서 사용 가능해요.
Java
온라인에서 사용 가능해요.
idris hello.idr --codegen java -o hello.jar
주의: 결과 .jar는 직접 실행할 수 있게 해주는 .sh 스크립트를 포함하는 헤더로 자동으로 접두가 붙어요.
JVM
온라인에서 사용 가능해요.
LLVM
온라인에서 사용 가능해요.
Malfunction
온라인에서 사용 가능해요.
Ocaml
온라인에서 사용 가능해요.
PHP
온라인에서 사용 가능해요.
Python
온라인에서 사용 가능해요.
Ruby
온라인에서 사용 가능해요.
WS
온라인에서 사용 가능해요.
WebAssembly
온라인에서 사용 가능해요.