2016-08-14 6 views
2

나는 perl6과 그 변화를 perl5보다 이해하려고 노력 중이다. 나는 perl 6이 컴파일 된 언어라는 것을 알게되었지만 나는 어떻게 얻지 못하고 있는가? 중간 코드 (직접 실행 파일 또는 jvm 바이트 코드)를 생성하지 않습니다? 동일한 작업을 수행 할 수있는 옵션이 없습니다. 그것을하는 방법?바이트 코드를 생성하기 위해 perl6 프로그램을 컴파일하는 방법은 무엇입니까?

현재 코드를 직접 실행할 수 있습니다. 내가 모듈과 프로그램 모두 파일에 바이트 코드를 작성 https://github.com/rakudo/rakudo

답변

2

다음입니다

$ perl6-j hello.p6 
Hello world 

은 아직 지원 공식이 아니다. 따라서 --target에 대한 문서가 부족합니다.

5

perl6 명령 줄에서 --target=을 사용하면 컴파일러의 각 단계에 대한 사람이 읽을 수있는 흔적을 볼 수 있습니다. JVM에서 "컴파일 된"바이트 코드 출력을 원하면 --target=jar을 사용하고 거기서 살펴보십시오. 그러나 궁극적으로 Perl 6은 달리 질문하지 않는 한 비행 중에 컴파일됩니다. 그것은 각 "CompUnit"의 라이브러리 경로 디렉토리에 캐시 된 바이트 코드 표현을 남겨 둠으로써 다음 번에 컴파일 단계가 더 빠릅니다. 이것은 .precomp 디렉토리에서 볼 수 있습니다. 사전 컴파일 캐시는 Perl 6이 모든 comp 단위를 해시하고 색인하는 방식 때문에 손으로 사용하는 것은 매우 까다 롭습니다. 이것은 같은 이름이지만 다른 버전과 저자가 나란히있는 라이브러리 일 수 있습니다. MoarVM에는 --target = jar와 같은 것이 없지만 .precomp 디렉토리에는 런타임 설정을 연결하면 moar에 의해 직접 실행될 수있는 원시 바이트 코드 파일을 볼 수 있습니다.

+1

'--target = moar'는 것입니다 – ugexe

+0

MoarVM에서 실행할 수있는 하나의 파일을 갖도록 모든 대상을 moar 패키지로 포장합니까? 아니면 그것은 int 클래스 파일에 해당하는 것인가? .precomp –