2011-10-27 65 views
6

Tôi đang xem xét thực hiện một số thử nghiệm ban đầu và thử nghiệm với ngôn ngữ đồ chơi và xây dựng trình biên dịch dựa trên LLVM để có được một số kết quả có thể đo lường được.Ngôn ngữ cho trình biên dịch dựa trên LLVM

Tôi nhận thấy rằng C++ là ngôn ngữ "gốc" và ngôn ngữ được hỗ trợ tốt nhất của LLVM, nhưng tôi thực sự không muốn sử dụng C hoặc C++. Vì vậy, tôi đang tìm kiếm một ngôn ngữ cấp cao hơn có hỗ trợ ổn định và được thiết lập để làm việc với API LLVM.

Công việc ban đầu của tôi với Python LLVM library hơi thất vọng vì dự án dường như đã bị bỏ rơi, mặc dù tôi nghe tin tức đầy hứa hẹn về PyPy tích hợp hỗ trợ LLVM vào khung của họ, nhưng tôi muốn biết trải nghiệm của mọi người là gì trước khi chìm rất nhiều thời gian vào bất kỳ tuyến đường cụ thể nào.

Vì vậy, câu hỏi của tôi là, có ai trong số các bạn đã có trải nghiệm tích cực khi làm việc với LLVM bằng ngôn ngữ và/hoặc khung cấp cao hơn không? Và nếu có, thì sao? Hoặc có bất kỳ điều gì bạn muốn nói không?

+1

PyPy đã từ bỏ LLVM cách đây khá lâu. Và ngay cả khi PyPy sử dụng LLVM, nó sẽ chỉ được sử dụng như * backend * cho trình biên dịch và JIT-trình biên dịch được tạo bởi chuỗi công cụ dịch, có một * thông dịch viên * được viết trong RPython và biên dịch nó thành mã cấp thấp (tùy chọn thêm JIT và các chuông và còi khác trên đường đi). – delnan

Trả lời

6

Một tập con của LLVM API được hiển thị thông qua trình bao bọc C thuần túy. Nó đủ để tạo mã và có thể được sử dụng từ bất kỳ ngôn ngữ cấp cao nào. Có các ràng buộc OCaml có sẵn trong hộp (xem this tutorial) và các liên kết Haskell cũng khá trưởng thành (ví dụ: GHC có thể biên dịch thông qua LLVM). Tôi cũng đã sử dụng LLVM từ các ngôn ngữ dựa trên .NET, mà không có bất kỳ ràng buộc nào (chỉ các trình bao bọc P/Invoke được tạo tự động từ các tiêu đề).

Các vấn đề liên quan