2011-03-06 20 views
6

Có lẽ Javascript được biên dịch thành một số loại mã byte để chạy trên Động cơ V8? Là Python một ngôn ngữ đủ tương tự mà chúng ta có thể tưởng tượng Python được biên dịch vào cùng một mã byte và chạy trên V8?Python có thể được biên dịch để chạy trên động cơ V8 không?

Bất kỳ dự án nào đang cố thực hiện việc này?

+2

Đây có phải là câu hỏi về tối ưu hóa python hay đây là câu hỏi về việc biên dịch Python sang biểu mẫu có thể được trình diễn Javascript trực tiếp thực hiện trên các trình duyệt hiện tại? – Arafangion

Trả lời

3

V8 thực sự không có mục đích chung bytecode. Có một mã byte regexp, nhưng hỗ trợ thường không được biên dịch. Có một mã byte deserialization và mã byte thông tin di dời, nhưng cả hai đều là chi tiết triển khai và bạn không thể sử dụng chúng cho bất kỳ thứ gì.

Vì vậy, những gì bạn đang tìm kiếm là thứ biên dịch mã nguồn JS.

-4

Python đã được biên dịch sang bytecode và được thi hành. Đây là tệp .pyc nằm trong CPython. Jython tương tự biên dịch sang Java bytecode (động), và do đó, IronPython cho .NET

+2

Điều này không liên quan gì đến công cụ Javascript V8. –

+0

Câu hỏi đặt ra là nhắm mục tiêu V8, cụ thể, không phải về mã byte Python nói chung. – payne

+0

Cách tôi giải thích câu hỏi, đó là về biên dịch python thành bytecode, trong đó V8 được đưa ra làm ví dụ. – Arafangion

0

Để biết cách chạy python bên trong trình duyệt, hãy xem trang wiki python WebBrowserProgramming.

5

Theo như tôi biết, không có dự án nào nhắm mục tiêu cụ thể đến máy ảo V8. Tuy nhiên, Pypy và Unladen Swallow trước đây (giờ đã được sáp nhập vào nhánh py3k-jit của cây CPython chính), cả hai đều cố gắng biên dịch Python trong mã nguồn gốc, tương tự như những gì V8 làm với Javascript.

Như @something nói, pyjamas cho phép bạn viết mã Python và dịch mã thành Javascript, giống như GWT làm với Java. Bất kỳ mã nào được dịch như vậy sẽ có cùng lợi ích khi chạy dưới V8 như bất kỳ mã Javascript nào khác.

3

Đã có ba dự án cung cấp trình biên dịch Python sang Javascript. Các kết quả Javascript sau đó có thể được chạy trên bất kỳ động cơ bao gồm V8. Hãy tìm Pyjamas, Skulpt và Py2JS.

Điều này không giống như biên dịch các mã bytecode của Python sang V8, nhưng kết quả cuối cùng cũng giống nhau.

0

Hãy xem http://repl.it/ - đó là ví dụ về trình biên dịch Python đầy đủ được biên dịch sang JavaScript. Điều này đạt được nhờ vào Emscripten - một trình biên dịch mã bytecode LLVM sang Javascript.

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