Apa yang baru dalam bahasa Swift 4.2 Apple

Menjelang rilis 2019 Swift yang direncanakan, Apple telah merilis versi menengah Swift 4.2.

Versi saat ini: Yang baru di Swift 4.2 Apple

Bahasa pemrograman Swift Apple versi 4.2 membawa bahasa lebih dekat ke antarmuka biner aplikasi yang distabilkan (ABI) dan memungkinkan kompatibilitas biner untuk rilis mendatang. Stabilitas ABI memungkinkan kompatibilitas biner antara pustaka dan aplikasi yang dikompilasi dengan versi bahasa yang berbeda.

Meskipun tujuan Apple adalah stabilitas, Swift 4.2 tidak kompatibel dengan biner dengan rilis sebelumnya. Kompatibilitas sumber, bagaimanapun, disediakan. Sebagian besar kode sumber yang dibuat dengan kompiler Swift 4.0 harus dikompilasi dengan kompiler Swift 4.2 dan Swift 4.1.

Fitur baru lainnya di Swift 4.2 adalah:

  • Peningkatan generik, yang diperkuat dengan penyelesaian dukungan kesesuaian kondisional, mengurangi jumlah kode boilerplate dan membuat lebih banyak kode dapat digunakan kembali.
  • Fitur perpustakaan standar mencakup peningkatan pada protokol Hashable dan seperangkat fungsi dan protokol pengacakan yang terpadu.
  • Dukungan kompilasi mode batch, yang meningkatkan waktu build.
  • Perubahan dalam konvensi panggilan untuk siklus pertahankan / rilis, untuk mengurangi ukuran kode dan meningkatkan kinerja.
  • Dukungan metadata rekursif.
  • Metadata refleksi yang lebih ringkas.
  • Argumen defleksi disisipkan di situs panggilan.
  • Berbagai perbaikan bug, seperti pewarisan penginisialisasi generik.
  • The compilerdirektif yang sintaksis setara dengan #if swiftcek versi tetapi pemeriksaan terhadap versi compiler, terlepas dari kompatibilitas modus sedang berjalan.
  • Kemampuan manajer paket Swift baru, termasuk dukungan untuk mode batch, dengan target yang sekarang dikompilasi menggunakan mode ini; peningkatan logika pembuatan skema; dan pembuatan proyek Xcode otomatis.

Tempat mengunduh Swift 4.2

Anda dapat mengunduh Swift 4.2 dengan mengunduh Xcode 10.0 IDE dari Apple.

Rencana lain untuk Swift 4.2 meliputi:

  • Peningkatan kinerja waktu kompilasi.
  • String sekarang 16 byte, bukan 24 byte. Apple melihat ini sebagai trade-off yang baik antara penggunaan memori dan kinerja, sementara cukup besar untuk melakukan pengoptimalan string kecil.
  • API ditawarkan untuk pembuatan nomor acak yang lebih mudah.
  • The has importmembangun konfigurasi direktif lebih baik mengungkapkan maksud ketika berbagi kode di antara iOS dan MacOS.

Versi sebelumnya: Yang baru di Swift 4.1

Dirilis pada akhir Maret 2018, Swift 4.1 menambahkan lebih banyak bahasa generik serta peningkatan versi. Versi 4.1 kompatibel dengan sumber dengan Swift 4.0.

Proposal terkait generik yang diimplementasikan dalam rilis 4.1 mencakup kesesuaian bersyarat, yang mengungkapkan gagasan bahwa tipe generik akan sesuai dengan protokol tertentu hanya jika argumen tipe memenuhi persyaratan tertentu. Fitur ini diharapkan berdampak besar pada pustaka standar Swift. Perbaikan generik lainnya meliputi:

  • Memiliki penyusun sintesis Equatabledan Hashablekesesuaian, untuk mengurangi boilerplate dan kompleksitas.
  • Membuat tipe indeks perpustakaan standar Hashable.
  • Menghilangkan jenis terkait IndexDistance,, dari ,Collection dan memodifikasi penggunaan ke jenis beton Int, sebagai gantinya.

Fitur lain di Swift 4.1 adalah lebih banyak cara untuk mengonfigurasi build, seperti pengoptimalan ukuran kode dan mekanisme yang lebih mudah untuk menargetkan platform dan dukungan lingkungan.

Perubahan under-the-hood pada Versi 4.1 dibuat sebagai bagian dari rencana untuk menstabilkan ABI (application binary interace) di Swift 5, yang dijadwalkan akhir tahun ini. Perubahan tersembunyi ini mencakup penggunaan bidang ukuran kata di header objek asli untuk penghitungan referensi dan audit fungsi runtime. Selain itu, berbagai pembungkus koleksi sedang diciutkan melalui penggunaan kesesuaian bersyarat.

Swift 4.1 menyempurnakan Manajer Paket Swift. Sekarang menyelesaikan dependensi dalam grafik paket yang menggunakan skema URL seperti sshdan http. Selain itu, kinerja telah ditingkatkan untuk grafik paket dengan dependensi bersama.

Upgrade 4.1 juga menampilkan proposal evolusi Swift, termasuk penghapusan kata kunci kepemilikan, weakdan unowned, untuk deklarasi properti dalam protokol. Ini dilakukan untuk kejelasan. Juga, penginisialisasi struct lintas modul sedang dibatasi. Ini cocok dengan batasan yang ada untuk kelas.

Tempat mengunduh Swift 4.1

Anda dapat mengunduh peningkatan Swift 4.1 dari halaman web unduhan Swift. Selain itu, Swift 4.1 tersedia dengan Xcode 9.3 IDE, yang memiliki fitur migrator kode untuk menangani banyak perubahan sumber.

Versi sebelumnya: Yang baru di Swift 4.0

Swift 4.0 adalah peningkatan besar ke Swift Apple, penerus tiga tahun bahasa Objective-C yang digunakan untuk pengembangan aplikasi MacOS dan iOS.

Pembaruan Swift 4 menyempurnakan Manajer Paket Swift dan menyediakan mode kompatibilitas baru untuk pengembang. Apple mengatakan Swift 4 juga membuat Swift lebih stabil dan meningkatkan perpustakaan standarnya. Swift 4 sebagian besar kompatibel dengan sumber dengan Swift 3 dan dikirimkan sebagai bagian dari IDE Xcode 9 Apple.

Apa yang baru di pengelola paket Swift 4

Swift Package Manager, yang memulai debutnya di Swift 3, adalah alat untuk mendistribusikan kode. Ini terintegrasi dengan sistem build Swift untuk mengotomatiskan proses termasuk mengunduh, mengompilasi, dan menautkan dependensi. Perbaikan dalam manajer paket Swift 4 meliputi:

  • Package API yang lebih bersih yang memungkinkan paket menentukan pengaturan baru. Pengaturan ini memberi pengembang kontrol lebih besar atas pembuatan paket dan organisasi sumber pada disk.
  • Pengembangan beberapa paket secara bersamaan menjadi lebih mudah.
  • Formalisasi produk paket, memungkinkan kontrol atas pustaka apa yang diterbitkan paket kepada klien.
  • Pembuatan paket di MacOS sekarang terjadi di kotak pasir, mencegah akses jaringan dan modifikasi sistem file, untuk mengurangi jangkauan manifes yang berbahaya.

Mode kompatibilitas baru dalam migrasi bantuan Swift 4

Mode kompatibilitas baru Swift 4 dapat menyelamatkan Anda dari keharusan memodifikasi kode untuk dapat menggunakan versi baru kompilator. Dua mode didukung, termasuk mode Swift 3.2, yang menerima sebagian besar file sumber yang dibuat dengan kompiler Swift 3.x, dan mode Swift 4.0, yang mencakup perubahan Swift 4 dan API.

Apple mengatakan bahwa beberapa migrasi sumber akan diperlukan untuk banyak proyek, tetapi jumlah perubahan sumber "cukup sederhana" dibandingkan dengan banyak perubahan besar sebelumnya antara rilis Swift. Pengenalan mode kompatibilitas di Swift 4 memberi pengembang kontrol lebih besar atas kecepatan migrasi.

Peningkatan bahasa berlimpah di Swift 4

Swift 4 memperkenalkan beberapa peningkatan bahasa, termasuk:

  • StringImplementasi yang lebih cepat dan lebih mudah digunakan dengan mempertahankan kebenaran Unicode dan mendukung pengembangan dan penggunaan substring.
  • Peningkatan penggunaan dan pengelolaan jenis Koleksi.
  • Pemberlakuan akses eksklusif ke memori, di mana potensi modifikasi variabel harus eksklusif dengan akses lain ke variabel tersebut.
  • Kemampuan untuk mengarsipkan structdan enummengetik.
  • Serialisasi aman jenis ke format eksternal seperti JSON.
  • Integer berorientasi protokol, yang membersihkan Integer API dan membuatnya lebih berguna untuk pemrograman generik.
  • Dukungan whereklausa untuk membatasi jenis terkait. Sebelumnya, tipe terkait hanya dapat mengekspresikan batasan pewarisan sederhana dan bukan batasan yang lebih canggih yang tersedia untuk tipe generik dengan where klausa.
  • Penyertaan swift runperintah untuk membangun dan menjalankan eksekusi yang ditentukan dalam paket saat ini.
  • Penghapusan final dukungan kata kunci saat mendeklarasikan fungsi dalam ekstensi protokol.
  • Interaksi yang lebih baik antara privatedeklarasi dan ekstensi, dengan privatekontrol akses yang diperluas sehingga anggota yang ditentukan dalam ekstensi suatu jenis memiliki akses yang sama seperti anggota yang ditentukan pada jenis itu sendiri, selama jenis dan ekstensi tersebut berada dalam file sumber yang sama.