Giống như IronPython (cũng là mã ban đầu với DLR mà tôi dựa trên IronScheme), IronScheme được biên dịch tất cả các con đường xuống cấp IL.
Hơn nữa, không có phần nào được giải thích trong IronScheme (trừ khi bạn gọi tra cứu ký hiệu thời gian chạy), vì tôi đã loại bỏ tất cả những thứ đó khỏi nhánh 'của tôi' của DLR, do không được sử dụng và giảm code footprint (Tôi ước tính tôi chỉ sử dụng khoảng 25% của DLR, nơi phần còn lại là khá Python-centric).
Để xem IL được tạo ra gì, bạn có thể xem cụm từ ironscheme.boot.dll
trong Reflector .NET (sử dụng chế độ IL tốt nhất, vì C# có xu hướng được cấu trúc lại một cách kỳ lạ và chỉ sai trong một vài trường hợp). Toàn bộ hội đồng này được biên soạn bởi IronScheme. Để xem mã được tạo trong thời gian chạy, điều này phức tạp hơn rất nhiều. Như đã nói, điều này có tất cả các lợi ích của JIT, và với các tối ưu tôi thực hiện trên DLR để có nhiều Đề án trung tâm, nó thường thực hiện nhanh hơn IronPython khi tôi thử nghiệm lần cuối (18 tháng trở lại tốt ít nhất, tôi nhận ra IronPython đã có một vài cải tiến kể từ đó, nhưng IronScheme là một vài yếu tố nhanh hơn, thậm chí sử dụng Đề án 'cảm thấy' giống như Python thậm chí là trò chơi bóng).
Hơn nữa, tôi đã cố gắng tận dụng tối đa khuôn khổ .NET làm nền tảng cho IronScheme và để làm cho khả năng tương tác dễ dàng hơn. Những thứ như vectors
, byte-vectors
, binary-ports
và hash-tables
dựa trên các lớp .NET thông thường mà chúng ta đều biết và sử dụng; object[]
, byte[]
, Stream
và Hashtable
tương ứng, để đặt tên một vài.
Cảm ơn, Leppie. –