Випущено Dart 2.12 із нульовою безпекою та можливістю взаємодії з C

Google випустив Dart 2.12, нову версію мови, яка використовується для створення програм у Flutter. Випуск виходить разом із Flutter 2.0.

З випуск Flutter 2.0, Google також переносить Dart 2.12 до стабільної версії. Якщо ви не знали, Dart — це мова, яку використовує Flutter. Це мова на основі TypeScript, але вона має деякі мовні доповнення, зокрема ті, які я збираюся розглянути.

Нульова безпека

Нульова безпека — це чудова функція мови. Це змушує вас розглянути, чи буде змінна коли-небудь нульовою, і явно мати справу з потенційними нульовими ситуаціями, а також дозволяє гарантувати, що конкретні змінні ніколи не будуть нульовими.

У Dart 2.12 тепер є повна підтримка null-safety із синтаксисом, подібним до Swift і Kotlin. Існує навіть інтелектуальне переведення, коли Dart точно знає, що змінна, яка зазвичай має значення null, не може бути null, він неявно переводить її до форми, яка не допускає null.

Оскільки нульова безпека є (дуже) критичною зміною, ця функція є опціональною. Якщо ви оновите Dart до версії 2.12, ваша компіляція не зламається, і вам не доведеться витрачати години на додавання до всього підказок щодо нульових значень. Ви навіть можете використовувати null-safe залежності, якщо ваш проект ще не null-safe.

Якщо ви все-таки вирішите мігрувати, ви можете скористатися вбудованим інструментом міграції (дартс мігрувати) та/або посібник з міграції щоб все налаштувати.

Крім того, хоча нульова безпека включена в Dart 2.12, якщо ви створюєте новий проект Flutter, нульова безпека не буде ввімкнена з коробки. Вам потрібно буде ввімкнути його вручну. У нових проектах Dart буде ввімкнено нульовий захист.

Інтерфейс зовнішньої функції

Незважаючи на те, що Dart (і Flutter) зосереджені на повній міжплатформній сумісності, все одно є деякі речі, які просто потрібно зробити нативно. Щоб спростити нативні операції, Dart має зовнішній функціональний інтерфейс або FFI. FFI дозволяє вам взаємодіяти з кодом C від Dart без необхідності вдаватися до дивних викликів API на основі рядків або інших незграбних методів взаємодії.

А з Dart 2.12 FFI тепер стабільний, тобто він готовий до використання у виробничих проектах і в основному має всі функції.

Маючи це на увазі, є деякі зміни в FFI, включно з парочкою аварійних.

Основна увага в цьому випуску була зосереджена на тому, як структури можна використовувати з Dart і C. По-перше, тепер ви можете передавати структури у вашому коді C за посиланням і значенням, де раніше підтримувалися лише посилання. Ще одна важлива функція — підтримка вкладених структур, якої не було до цього випуску.

Тепер про ключові зміни. Якщо ви використовували FFI, можливо, вам знадобиться оновити код, щоб він працював із 2.12. У цій версії FFI ви більше не можете створювати порожні структури. Якщо він вам з якихось причин потрібен, ви можете використовувати новий тип «Непрозорий». Також є деякі зміни в роботі деяких вбудованих функцій FFI, які ви можете зробити прочитайте тут.

Нарешті, є новий пакет для FFI, який дозволяє генерувати оболонки FFI з існуючих файлів заголовків C, які називаються ffigen. Якщо у вас є багато коду C, який вам потрібно використовувати, з великою кількістю методів API, це буде дуже корисно. Навіть якщо кількість коду C у вас невелика, це гарна зручна функція.


І це майже все для Dart 2.12. З додаванням нульової безпеки та стабільної бібліотеки взаємодії C, Dart перетворюється на мову з дуже багатими функціями. Дайте нам знати, що ви думаєте про Dart 2.12 у коментарях!