Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kadayif

뇌 스로틀링하면서 만드는 쿠어트 프로그래밍 언어의 레퍼런스 컴파일러

.kr 소스 파일을 읽어들이고 aarch64+Apple 타깃으로 바이너리를 뱉습니다. 나중에 다른 타깃이나 라이브러리로 확장해야 해요

DISCLOSURE: Kadayif는 컴파일러 이론이고 SSA고 뭐고 아무것도 모르는 놈이 Claude Code로 바이브코딩하는 겁니다. 기여하고 싶다고요? 좋습니다. 컴파일러 이론 교제 추천하겠다고요? 너무 좋습니다. 직접 가르쳐드린다고요? 사랑합니다.

IR이나 IL도 없고 최적화도 거의 안 하는 순진한 구현입니다. 쿠어트에는 Uniformity rule이라는 게 있는데, 그냥 1:1로 구현하면 자명하게 만족하거든요. 반은 제가 멍청한 거고 반은 의도된 거에요.

이건 뭔가요

쿠어트 프로그래밍 언어 표준 규격서 0.1을 따릅니다. 취미...라기엔 엄청 큰 스케일의 언어입니다.

사용하는 방법

일단 여기에서 Alire라는 걸 받아야 합니다. 그 다음 git이 있으면:

git clone https://github.com/Kurt-PL/kadayif.git
cd kadayif
alr build # 이러면 `./bin/kadayif` 실행 파일이 생성돼요

그 다음 쿠어트 코드를 대충

// 이건 #include <stdio.h> 내지는 int printf(const char*, ...);
@dyn as io {
    variadic fn printf(%ui1) -> si4;
}

// 이건 int main(int argc, char *argv[]) {}
extern fn main(argc: uaddr, argv: %%ui1) -> ui1 {
    airside {
        io::printf("Hello, world!\n\0".ptr);
    } // 이건 printf("Hello, world!\n");

    return 0;
}

이딴 식으로 만든 뒤

./bin/kadayif -S file.kr
clang -arch arm64 file.s -o a.out
./a.out # Hello, world!

이러면 됩니다.

왜 Ada냐고요? 묻지 마세요. 궁금하다고요? 아니요, 궁금하지 않을 거에요.

About

The reference implementation, maybe.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages