Trình thông dịch Swift của Bitrig gây ra những câu hỏi về chính sách App Store bất chấp việc được phê duyệt

Nhóm Cộng đồng BigGo
Trình thông dịch Swift của Bitrig gây ra những câu hỏi về chính sách App Store bất chấp việc được phê duyệt

Bitrig , một ứng dụng iOS có thể tạo và chạy động các ứng dụng Swift trên iPhone , đã gây ra cuộc thảo luận sôi nổi về chính sách App Store của Apple và ranh giới của những gì có thể thực hiện được về mặt kỹ thuật trên các thiết bị iOS . Ứng dụng này sử dụng một trình thông dịch Swift sáng tạo cho phép người dùng chạy mã được tạo động mà không cần biên dịch truyền thống, làm dấy lên câu hỏi về lập trường nghiêm ngặt trong lịch sử của Apple đối với mã thực thi.

Mối quan ngại về chính sách App Store thúc đẩy cuộc thảo luận cộng đồng

Cuộc tranh luận gay gắt nhất tập trung xung quanh các hướng dẫn App Store của Apple , đặc biệt là Mục 2.5.2, vốn truyền thống cấm các ứng dụng tải xuống hoặc thực thi mã làm thay đổi chức năng. Các thành viên cộng đồng bày tỏ sự ngạc nhiên khi Bitrig nhận được sự phê duyệt, xét đến những hạn chế này. Cuộc thảo luận tiết lộ cách các chính sách của Apple đã phát triển kể từ khi Swift Playgrounds ra mắt, với công ty hiện cho phép các công cụ giáo dục và phát triển có nhiều linh hoạt hơn.

Chắc chắn đã có một số trao đổi qua lại về vấn đề này trước khi chúng tôi cuối cùng được phê duyệt. Theo một nghĩa nào đó, điều này không khác biệt nhiều so với những gì React Native làm (chạy mã được thông dịch gọi ra mã gốc), chỉ khác là với Swift thay vì JavaScript .

Việc phê duyệt cho thấy Apple đang trở nên khoan dung hơn với các công cụ phát triển, như được chứng minh bởi các ứng dụng lập trình khác như Python IDEs và Jupyter Notebooks hiện có sẵn trên App Store . Tuy nhiên, các thành viên cộng đồng lưu ý rằng ngoại lệ này áp dụng cụ thể cho các công cụ phát triển, không phải các ứng dụng tiêu dùng thông thường.

Tài liệu tham khảo chính sách App Store

  • Mục 2.5.2 của Hướng dẫn đánh giá ứng dụng theo truyền thống cấm tải xuống hoặc thực thi mã có thể thay đổi chức năng ứng dụng
  • Các ứng dụng giáo dục và phát triển có những ngoại lệ hạn chế đối với mã thực thi
  • Những phê duyệt gần đây bao gồm các IDE Python , Jupyter Notebooks và các môi trường lập trình khác

Triển khai kỹ thuật gây ra tranh luận

Cách tiếp cận bất thường của trình thông dịch - thông dịch Swift thành Swift thay vì mã máy - đã tạo ra các cuộc thảo luận kỹ thuật về điều gì cấu thành việc thông dịch thực sự so với biên dịch. Một số nhà phát triển chỉ ra rằng Swift đã có khả năng REPL (Read-Eval-Print Loop) thông qua các công cụ dòng lệnh của nó, đặt câu hỏi liệu điều này có thực sự đại diện cho một bước đột phá trong việc thông dịch Swift hay không.

Sự khác biệt chính nằm ở nền tảng đích. Trong khi Swift trên máy tính để bàn có thể sử dụng biên dịch Just-In-Time, các hạn chế bảo mật iOS ngăn chặn việc tạo mã thực thi tùy chỉnh. Bitrig khắc phục điều này bằng cách phân tích cú pháp Swift và ánh xạ nó với các lời gọi framework hệ thống đã được biên dịch sẵn, về cơ bản hoạt động như một giao diện tinh vi giữa mã động và các thư viện đã biên dịch.

Tổng quan Kiến trúc Kỹ thuật

  • Sử dụng SwiftSyntax để phân tích cú pháp mã Swift thành cây cú pháp trừu tượng
  • Ánh xạ các lệnh gọi Swift động đến các hàm framework đã được biên dịch trước
  • Hỗ trợ cả SwiftUI và UIKit thông qua việc phân tích tệp .swiftinterface
  • Hoạt động như một "giao diện hàm ngoại vi được tôn vinh" từ Swift động sang Swift đã biên dịch

Hiệu suất và ứng dụng thực tế

Sự quan tâm của cộng đồng mở rộng ra ngoài tính mới lạ kỹ thuật đến các ứng dụng thực tế. Các nhà phát triển đặc biệt hào hứng về các ứng dụng tiềm năng cho việc thay thế module nóng - cập nhật các view SwiftUI trong các ứng dụng đang chạy mà không cần khởi động lại. Điều này có thể cải thiện đáng kể trải nghiệm phát triển cho các ứng dụng iOS .

Các cuộc thảo luận về hiệu suất tiết lộ những hạn chế và điểm mạnh của trình thông dịch. Mặc dù có chi phí từ việc xóa kiểu và gián tiếp, hầu hết mã UI chỉ đơn giản gọi vào các framework OS đã biên dịch, vì vậy tác động hiệu suất vẫn tối thiểu đối với các ứng dụng điển hình. Vấn đề chủ yếu phát sinh với các vòng lặp tính toán chuyên sâu trong chính mã được thông dịch.

Đặc điểm hiệu suất

  • Chi phí phụ từ type erasure và tăng cường gián tiếp
  • Tác động tối thiểu đối với mã UI thông thường gọi vào các framework OS đã biên dịch
  • Vấn đề hiệu suất chủ yếu xảy ra với các vòng lặp tính toán phức tạp trong mã được thông dịch
  • Phần lớn công việc nặng được thực hiện bởi các system framework đã biên dịch

Mở rộng nền tảng và phát triển tương lai

Cộng đồng đã thể hiện sự quan tâm mạnh mẽ đến việc hỗ trợ iPad và khả năng có sẵn trên nền tảng rộng hơn. Nhóm đứng sau Bitrig có vẻ phản hồi tích cực với phản hồi, với các bản sửa lỗi nhanh chóng cho các vấn đề tương thích trình duyệt và sự cởi mở trong việc khám phá các tính năng bổ sung như tích hợp kernel Jupyter .

Dự án đại diện cho một giao điểm thú vị của lý thuyết ngôn ngữ, các ràng buộc nền tảng di động và công cụ phát triển. Mặc dù nó có thể không cách mạng hóa việc phát triển iOS qua đêm, nó chứng minh các giải pháp sáng tạo cho các hạn chế nền tảng và gợi ý về các khả năng phát triển cho việc thực thi mã động trên các nền tảng hạn chế truyền thống.

Tham khảo: How we built an interpreter for Swift (a compiled language)