Interpreter Swift Bitrig Menimbulkan Pertanyaan Kebijakan App Store Meski Telah Disetujui

Tim Komunitas BigGo
Interpreter Swift Bitrig Menimbulkan Pertanyaan Kebijakan App Store Meski Telah Disetujui

Bitrig , sebuah aplikasi iOS yang secara dinamis menghasilkan dan menjalankan aplikasi Swift di iPhone , telah memicu diskusi signifikan tentang kebijakan App Store Apple dan batasan-batasan dari apa yang secara teknis memungkinkan pada perangkat iOS . Aplikasi ini menggunakan interpreter Swift yang inovatif yang memungkinkan pengguna menjalankan kode yang dihasilkan secara dinamis tanpa kompilasi tradisional, menimbulkan pertanyaan tentang sikap Apple yang secara historis ketat terhadap kode yang dapat dieksekusi.

Kekhawatiran Kebijakan App Store Memicu Diskusi Komunitas

Perdebatan paling sengit berpusat pada pedoman App Store Apple , khususnya Bagian 2.5.2, yang secara tradisional melarang aplikasi mengunduh atau mengeksekusi kode yang mengubah fungsionalitas. Anggota komunitas menyatakan keterkejutan bahwa Bitrig mendapat persetujuan, mengingat pembatasan-pembatasan ini. Diskusi ini mengungkapkan bagaimana kebijakan Apple telah berkembang sejak Swift Playgrounds diluncurkan, dengan perusahaan kini memberikan lebih banyak fleksibilitas kepada alat-alat pendidikan dan pengembangan.

Pasti ada beberapa diskusi bolak-balik tentang hal ini sebelum kami akhirnya disetujui. Dalam artian, ini tidak terlalu berbeda dari apa yang dilakukan React Native (menjalankan kode yang diinterpretasi yang memanggil kode native), hanya saja dengan Swift alih-alih JavaScript .

Persetujuan ini menunjukkan Apple menjadi lebih longgar dengan alat-alat pengembangan, sebagaimana dibuktikan oleh aplikasi coding lainnya seperti IDE Python dan Jupyter Notebooks yang kini tersedia di App Store . Namun, anggota komunitas mencatat bahwa pengecualian ini berlaku khusus untuk alat pengembangan, bukan aplikasi konsumen biasa.

Referensi Kebijakan App Store

  • Bagian 2.5.2 dari Panduan Review Aplikasi secara tradisional melarang pengunduhan atau eksekusi kode yang mengubah fungsionalitas aplikasi
  • Aplikasi edukasi dan pengembangan memiliki pengecualian terbatas untuk kode yang dapat dieksekusi
  • Persetujuan terbaru mencakup IDE Python , Jupyter Notebooks , dan lingkungan coding lainnya

Implementasi Teknis Memicu Perdebatan

Pendekatan interpreter yang tidak biasa - menginterpretasi Swift ke Swift daripada kode mesin - telah menghasilkan diskusi teknis tentang apa yang merupakan interpretasi sejati versus kompilasi. Beberapa pengembang menunjukkan bahwa Swift sudah memiliki kemampuan REPL (Read-Eval-Print Loop) melalui alat command-line-nya, mempertanyakan apakah ini benar-benar merupakan terobosan dalam interpretasi Swift .

Perbedaan utama terletak pada platform target. Sementara Swift desktop dapat menggunakan kompilasi Just-In-Time, pembatasan keamanan iOS mencegah pembuatan kode yang dapat dieksekusi secara khusus. Bitrig mengatasi hal ini dengan mem-parsing sintaks Swift dan memetakannya ke panggilan framework sistem yang telah dikompilasi sebelumnya, pada dasarnya bertindak sebagai antarmuka canggih antara kode dinamis dan library yang dikompilasi.

Gambaran Umum Arsitektur Teknis

  • Menggunakan SwiftSyntax untuk mengurai kode Swift menjadi pohon sintaks abstrak
  • Memetakan panggilan Swift dinamis ke fungsi-fungsi framework yang telah dikompilasi sebelumnya
  • Mendukung SwiftUI dan UIKit melalui penguraian file .swiftinterface
  • Berfungsi sebagai "antarmuka fungsi asing yang dipercantik" dari Swift dinamis ke Swift yang dikompilasi

Performa dan Aplikasi Praktis

Minat komunitas meluas melampaui kebaruan teknis hingga aplikasi praktis. Pengembang sangat antusias tentang potensi penggunaan untuk hot module replacement - memperbarui tampilan SwiftUI dalam aplikasi yang sedang berjalan tanpa restart. Ini dapat secara signifikan meningkatkan pengalaman pengembangan untuk aplikasi iOS .

Diskusi performa mengungkapkan keterbatasan dan kekuatan interpreter. Meskipun ada overhead dari type erasure dan indirection, sebagian besar kode UI hanya memanggil framework OS yang dikompilasi, sehingga dampak performa tetap minimal untuk aplikasi-aplikasi tipikal. Masalah utamanya muncul pada loop yang intensif secara komputasi dalam kode yang diinterpretasi itu sendiri.

Karakteristik Performa

  • Overhead dari type erasure dan peningkatan indirection
  • Dampak minimal untuk kode UI tipikal yang memanggil framework OS yang telah dikompilasi
  • Masalah performa terutama terjadi pada loop komputasi intensif dalam kode yang diinterpretasi
  • Sebagian besar pekerjaan berat dilakukan oleh framework sistem yang telah dikompilasi

Ekspansi Platform dan Pengembangan Masa Depan

Komunitas telah menunjukkan minat yang kuat pada dukungan iPad dan ketersediaan platform yang lebih luas. Tim di balik Bitrig tampak responsif terhadap umpan balik, dengan perbaikan cepat untuk masalah kompatibilitas browser dan keterbukaan untuk mengeksplorasi fitur tambahan seperti integrasi kernel Jupyter .

Proyek ini merepresentasikan persilangan menarik antara teori bahasa, kendala platform mobile, dan alat pengembangan. Meskipun mungkin tidak akan merevolusi pengembangan iOS dalam semalam, ini menunjukkan solusi kreatif untuk keterbatasan platform dan mengisyaratkan kemungkinan-kemungkinan yang berkembang untuk eksekusi kode dinamis pada platform yang secara tradisional restriktif.

Referensi: How we built an interpreter for Swift (a compiled language)