JetBrains jūnijā izlaida Kotlin 2.4.0, kurā konteksta parametri beidzot sasniedza stabilo statusu — pēc gadiem eksperimentālajā fāzē un plašas kopienas diskusijas par sintaksi. Vairs nav vajadzīgs kompilātora opt-in karogs, un JetBrains paziņo, ka šī ir lielākā valodas līmeņa izmaiņa kopš K2 kompilātora.
Tajā pašā laidienā Kotlin/Wasm inkrementālā kompilācija kļuva par stabilu noklusējumu, pievienots eksperimentāls WebAssembly Component Model atbalsts un Kotlin Multiplatform saņēma Swift pakotņu atbalstu kā tiešas atkarības.
Konteksta parametri: tranzīta argumentu problēma
Daudzslāņu arhitektūrās bieži rodas šāds scenārijs: funkcija, kas atrodas piecus slāņus dziļi, vajag datubāzes transakcijas rokturi, autentifikācijas kontekstu vai īrnieka identifikatoru, bet visi starpslāņi to tikai pārsūta — paši to neizmanto. Rezultāts ir gari funkciju paraksti ar parametriem, kas pastāv tikai tranzīta dēļ.
Konteksta parametri maina šo shēmu. Funkcija ar context(Transaction, Logger) deklarāciju saņem Transaction un Logger instanci automātiski no izsaukuma konteksta — kompilators tās meklē pats. Starpfunkcijām nav jāzina par šīm atkarībām, ja tās pašas tās neizmanto. Tas atgādina Kotlin paplašinājuma funkcijas ar implicītu this, bet konteksta parametri var būt vairāki vienlaikus un katram ir skaidrs nosaukums.
Stable statuss 2.4.0 attiecas uz pašiem konteksta parametriem. Callable references uz tiem un daži citi apakšgadījumi vēl ir ārpus stabilā statusa. Laidienā ieviesti arī explicit context arguments — iespēja manuāli norādīt, kuru konteksta instanci izmantot, ja izsaukuma apkārtnē ir vairākas atbilstošas kandidātes.
Kotlin/Wasm: inkrementālā kompilācija kā noklusējums
Inkrementālā kompilācija Kotlin/Wasm, ko ieviesa 2.1.0, tagad ir stabila un ieslēgta pēc noklusējuma. Kompilators pārbūvē tikai failus, kurus skārušas izmaiņas — pilna atkārtota kompilācija notiek tikai tad, ja mainās publiskā saskarne. Lielākos projektos tas ievērojami samazina laiku starp izmaiņu ierakstīšanu un pārlūka atsvaidzināšanu izstrādes ciklā.
WebAssembly Component Model atbalsts ir jauns un eksperimentāls. Tas definē, kā Wasm moduļi mijiedarbojas caur standartizētiem WIT (WebAssembly Interface Types) interfeisiem. Praksē Kotlin/Wasm modulis var sadarboties ar Rust, Go vai C++ Wasm moduli, ja abas puses izmanto vienu WIT definīciju. Kotlin dokumentācijā tas aprakstīts kā solis no vienas valodas kompilācijas mērķa uz valodneatkarīgu komponentu ekosistēmu — kur Wasm ir saskarne starp dažādās valodās rakstītiem moduļiem.
Chrome DevTools atkļūdošana saņēma konkrētu uzlabojumu: iekšējie un sintētiskie mainīgie tagad ir atzīmēti ar prefiksu ~ un grupēti atsevišķi debugera sarakstā, atstājot augšā tikai koda rakstītos mainīgos.
Kotlin Multiplatform: Swift pakotnes bez tiltu izveides
Kotlin/Native 2.4.0 ļauj KMP projektiem norādīt Swift pakotnes kā tiešas atkarības, bez manuāla C vai Objective-C tilta rakstīšanas. Tas attiecas uz projektiem, kas mērķē uz iOS un macOS. Swift eksports — Kotlin klašu eksportēšana kā Swift API — turpina stabilizēties; 2.4.0 uzlaboja enum klašu un variadic funkciju parametru atbalstu.
Tiem, kas izstrādā no vienas kodu bāzes gan Android, gan iOS, tas saīsina laiku, ko iepriekš prasīja Objective-C tiltu rakstīšana un apkope. Android Studio Quail 1, kas iznāca 48 stundas pēc Kotlin 2.4.0, iekļauj šo Kotlin versiju.
Standarta bibliotēka: UUID stabils, kolekcijai sakārtošanas pārbaude
UUID API, ko Kotlin ieviesa 2.0 ciklā, tagad ir stabils. Tas nodrošina platformneatkarīgu UUID ģenerēšanu (Uuid.random()), parsēšanu un formatēšanu — bez java.util.UUID vai platformspecifiskas implementācijas. Pievienota isSorted() un isSortedDescending() kolekcijai — noderīgs palīgs testēšanā un validācijā. Kotlin kompilators šajā laidienā saņēma arī Java 26 atbalstu.
Konteksta parametri atrisina to, ko Kotlin izstrādātāji apkārtceļos risināja gadiem: transakcijas roktura vai autentifikācijas konteksta padošanu caur slāņiem, kas to tikai pārsūtīja. Tagad to kārto kompilators — byteiota.com analīzē par Kotlin 2.4.0.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.