2010-10-21 39 views
19

Tôi có khá nhiều mã được viết bằng Erlang, mà tôi muốn bao gồm trong các ứng dụng được viết trong Objective-C, ví dụ như trên iPad. Lý tưởng nhất là tôi muốn có một đối tượng đóng gói thời gian chạy Erlang; điều này sau đó có thể được truy cập như vỏ Erlang tiêu chuẩn, một cái gì đó dọc theo các dòng:Erlang là một hệ thống nhúng trong một ứng dụng?

ErlangRT *runtime = [[ErlangRT alloc] init]; 
ErlangValue *retval = [runtime execute:@"io:format(\"hello world~n\")"]; 

Tôi không quan tâm quá nhiều về hiệu suất v.v ...; Tôi có thể thấy nó có thể hoạt động như thế nào, nhưng vì tôi không biết quá nhiều về cách mà máy ảo Erlang được triển khai, tôi không biết làm thế nào là dễ dàng hay khó khăn, hoặc nếu ai đó đã làm điều tương tự. Tôi biết có những cách khác để giao tiếp giữa Objective-C và Erlang, nhưng chúng dường như giả định một hệ thống Erlang được cài đặt độc lập trên máy đích. Tôi thích nó giống như một thư viện mà bạn chỉ cần liên kết với ứng dụng.

Vì vậy, câu hỏi của tôi là: điều này tương đối dễ làm, và/hoặc có ai đó đã làm việc về điều này?

+2

Cái bẫy ở đây là "máy ảo". Trong khi các quy tắc về công cụ đã được thư giãn, yêu cầu để liên kết tĩnh mã có không. Bất kỳ loại JITing/biên dịch/VM - ERL, Flash, .NET/Mono hoặc cách khác được cau mày. Trong khi tôi chắc chắn rằng nó "có thể làm được" đủ thời gian/tiền để tạo ra một phiên bản nhúng của ERL và thời gian chạy nhắm mục tiêu iOS từ nguồn Erlang, bạn sẽ không được phép đặt bất kỳ thứ gì trong AppStore mà mã được tạo động. Với điều đó là không khuyến khích tôi nghi ngờ bất cứ ai đã thực hiện nhiệm vụ chuyển nó. – stephbu

+0

Hmm Tôi sẽ ăn lời của tôi một chút - có vẻ như http://sourceforge.net/projects/erlandstaticlib/ nằm trên đường dẫn đó ... Không chắc nó ở trạng thái nào. Quy tắc vẫn đứng đó để xuất hiện trong appstore chỉ có thể là mã được liên kết tĩnh. – stephbu

+2

Sự hiểu biết của tôi là việc tạo hoặc tải xuống mã động bị tắt giới hạn, trong khi việc giải thích mã nhúng hiện tại (tức là AppStore-vetted) là OK. –

Trả lời

13

Chúng tôi đã Erlang làm việc trên iPhone (và được phê duyệt cho App Store) như là một phần của gói phần mềm Apache CouchDB dành cho iOS của chúng tôi. Dự án Github là ở đây: https://github.com/couchbaselabs/iOS-Couchbase

Các Erlang chúng tôi sử dụng là ở đây: https://github.com/couchbaselabs/iErl14

Thông tin thêm về Mobile Couchbase: http://www.couchbase.com/products-and-services/mobile-couchbase

Thưởng thức!

Chris

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