Bitrig , aplikasi iOS yang secara dinamik menjana dan menjalankan aplikasi Swift pada iPhone, telah mencetuskan perbincangan hangat mengenai dasar App Store Apple dan batasan kemungkinan teknikal pada peranti iOS. Aplikasi ini menggunakan penterjemah Swift yang inovatif yang membolehkan pengguna menjalankan kod yang dijana secara dinamik tanpa kompilasi tradisional, menimbulkan persoalan tentang pendirian Apple yang secara historis ketat terhadap kod boleh laksana.
Kebimbangan Dasar App Store Mendorong Perbincangan Komuniti
Perdebatan paling hangat tertumpu pada garis panduan App Store Apple , khususnya Seksyen 2.5.2, yang secara tradisional melarang aplikasi daripada memuat turun atau melaksanakan kod yang mengubah fungsi. Ahli komuniti menyatakan terkejut bahawa Bitrig menerima kelulusan, memandangkan sekatan ini. Perbincangan ini mendedahkan bagaimana dasar Apple telah berkembang sejak Swift Playgrounds dilancarkan, dengan syarikat kini membenarkan alat pendidikan dan pembangunan lebih fleksibel.
Sudah pasti terdapat beberapa perbincangan bolak-balik mengenainya sebelum kami akhirnya diluluskan. Dalam erti kata lain, ini tidak jauh berbeza dengan apa yang React Native lakukan (menjalankan kod yang diterjemahkan yang memanggil kod asli), cuma dengan Swift dan bukannya JavaScript.
Kelulusan ini menunjukkan Apple menjadi lebih longgar dengan alat pembangunan, seperti yang dibuktikan oleh aplikasi pengkodan lain seperti Python IDE dan Jupyter Notebook yang kini tersedia di App Store . Walau bagaimanapun, ahli komuniti menyatakan pengecualian ini terpakai khusus untuk alat pembangunan, bukan aplikasi pengguna biasa.
Rujukan Dasar App Store
- Seksyen 2.5.2 dalam Garis Panduan Semakan Aplikasi secara tradisinya melarang pemuat turun atau pelaksanaan kod yang mengubah fungsi aplikasi
- Aplikasi pendidikan dan pembangunan mempunyai pengecualian terhad untuk kod boleh laksana
- Kelulusan terkini termasuk IDE Python , Jupyter Notebooks , dan persekitaran pengekodan lain
Pelaksanaan Teknikal Mencetuskan Perdebatan
Pendekatan luar biasa penterjemah ini - menterjemah Swift kepada Swift dan bukannya kod mesin - telah menjana perbincangan teknikal tentang apa yang membentuk penterjemahan sebenar berbanding kompilasi. Sesetengah pembangun menyatakan bahawa Swift sudah mempunyai keupayaan REPL (Read-Eval-Print Loop) melalui alat baris perintahnya, mempersoalkan sama ada ini benar-benar mewakili terobosan dalam penterjemahan Swift .
Perbezaan utama terletak pada platform sasaran. Walaupun Swift desktop boleh menggunakan kompilasi Just-In-Time, sekatan keselamatan iOS menghalang penjanaan kod boleh laksana tersuai. Bitrig mengatasi ini dengan menghuraikan sintaks Swift dan memetakannya kepada panggilan rangka kerja sistem yang telah dikompil, pada dasarnya bertindak sebagai antara muka canggih antara kod dinamik dan perpustakaan yang dikompil.
Gambaran Keseluruhan Seni Bina Teknikal
- Menggunakan SwiftSyntax untuk menghuraikan kod Swift ke dalam pokok sintaks abstrak
- Memetakan panggilan Swift dinamik kepada fungsi rangka kerja yang telah dikompil terlebih dahulu
- Menyokong kedua-dua SwiftUI dan UIKit melalui penghuraian fail .swiftinterface
- Berfungsi sebagai "antara muka fungsi asing yang dimuliakan" daripada Swift dinamik kepada yang dikompil
Prestasi dan Aplikasi Praktikal
Minat komuniti melangkaui kebaharuan teknikal kepada aplikasi praktikal. Pembangun amat teruja tentang potensi penggunaan untuk penggantian modul panas - mengemas kini paparan SwiftUI dalam aplikasi langsung tanpa memulakan semula. Ini boleh meningkatkan pengalaman pembangunan untuk aplikasi iOS dengan ketara.
Perbincangan prestasi mendedahkan had dan kekuatan penterjemah. Walaupun terdapat overhed daripada pemadaman jenis dan pengalihan, kebanyakan kod UI hanya memanggil rangka kerja OS yang dikompil, jadi kesan prestasi kekal minimum untuk aplikasi biasa. Masalah terutamanya timbul dengan gelung intensif pengiraan dalam kod yang diterjemahkan itu sendiri.
Ciri-ciri Prestasi
- Overhed daripada pemadaman jenis dan peningkatan indirection
- Kesan minimal untuk kod UI biasa yang memanggil ke dalam rangka kerja OS yang dikompil
- Isu prestasi terutamanya berlaku dengan gelung intensif pengiraan dalam kod yang ditafsir
- Kebanyakan kerja berat dilakukan oleh rangka kerja sistem yang dikompil
Pengembangan Platform dan Pembangunan Masa Depan
Komuniti telah menunjukkan minat yang kuat terhadap sokongan iPad dan ketersediaan platform yang lebih luas. Pasukan di sebalik Bitrig kelihatan responsif terhadap maklum balas, dengan pembetulan pantas untuk isu keserasian pelayar dan keterbukaan untuk meneroka ciri tambahan seperti integrasi kernel Jupyter .
Projek ini mewakili persilangan menarik teori bahasa, kekangan platform mudah alih, dan alat pembangun. Walaupun ia mungkin tidak merevolusikan pembangunan iOS dalam sekelip mata, ia menunjukkan penyelesaian kreatif kepada had platform dan membayangkan kemungkinan yang berkembang untuk pelaksanaan kod dinamik pada platform yang secara tradisional terhad.
Rujukan: How we built an interpreter for Swift (a compiled language)