+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Google опублікувала реліз мови програмування Dart 2.15

Компанія Google опублікувала реліз мови програмування Dart 2.15

Компанія Google опублікувала реліз мови програмування Dart 2.15, яка продовжує розвивати кардинально перероблену гілку Dart 2 , яка відрізняється від оригінальної версії мови Dart використанням сильної статичної типізації (типи можуть відображатися автоматично, тому вказівка типів не є обов'язковою, але динамічний набір тексту більше не використовується і спочатку розрахунковий тип присвоюється змінній і згодом застосовується сувора перевірка типів).

Особливості мови дарт:

  • Знайомий і простий у вивченні синтаксис, природний для програмістів на JavaScript, C і Java.
  • Забезпечення швидкого запуску та високої продуктивності для всіх сучасних веб-браузерів та різних типів середовищ, від портативних пристроїв до потужних серверів.
  • Можливість визначення класів та інтерфейсів, що дозволяють інкапсулювати та повторно використовувати існуючі методи та дані.
  • Вказівка типів полегшує налагодження і виявлення помилок, робить код зрозуміліше і читабельніше, спрощує його доопрацювання і аналіз сторонніми розробниками.
  • Серед підтримуваних типів: різні типи хешів, масиви і списки, черги, числові і рядкові типи, типи для визначення дати і часу, регулярні вирази (RegExp). Ви можете створювати власні типи.
  • Для паралельного виконання пропонується використовувати класи з атрибутом ізоляту, код якого повністю запускається в ізольованому просторі в окремій області пам'яті, взаємодіючи з основним процесом за допомогою відправки повідомлень.
  • Підтримка використання бібліотек, що спрощують обслуговування і налагодження великих веб-проектів. Сторонні функціональні реалізації можуть підключатися як спільні бібліотеки. Додатки можна розбити на частини і доручити розробку кожної з частин окремій команді програмістів.
  • Набір готових інструментів для підтримки розробки Dart, включаючи реалізацію інструментів динамічної розробки і налагодження з корекцією коду на льоту ( «edit-and-continue»).
  • Для спрощення розробки Dart передбачені SDK, менеджер паб-пакетів, статичний аналізатор коду dart_analyzer, набір бібліотек, інтегроване середовище розробки DartPad і плагіни з підтримкою дротика для IntelliJ IDEA, WebStorm, Emacs,  Sublime Text 2 і Vim .
  • Додаткові пакети з бібліотеками і утилітами поширюються через репозиторій пабу, який налічує близько 22 тисяч пакетів.

Основними змінами в релізі Dart 2.15 є:

  • Надає інструменти для швидкого паралельного виконання завдань з ізоляцією процесора. У багатоядерних системах середовище виконання Dart за замовчуванням виконує код програми на одному ядрі процесора і використовує інші ядра для виконання системних завдань, таких як асинхронне введення-виведення, запис у файли або здійснення мережевих викликів. Для додатків, яким необхідно паралельно виконувати свої обробники, наприклад, для рендеринга анімації в інтерфейсі, є можливість запускати окремі блоки коду (ізолювати), ізольовані один від одного і виконані на інших ядрах процесора одночасно з основним потоком програми. Для захисту від помилок, що виникають при одночасному виконанні коду, який працює з одним і тим же набором даних в різних блоках ізолятів, спільне використання змінних об'єктів заборонено, а для зв'язку між обробниками використовується модель на основі повідомлень.

    Dart 2.15 пропонує нову концепцію - ізольовані групи, що дозволяє організувати спільний доступ до різних внутрішніх структур даних в ізольованих блоках, що входять до складу однієї групи, що дозволяє значно знизити накладні витрати при взаємодії процесорів в групі. Наприклад, запуск додаткового блоку ізоляції в існуючій групі відбувається в 100 разів швидше і вимагає в 10-100 разів менше пам'яті, ніж запуск окремого блоку ізолювати, за рахунок виключення необхідності ініціалізації структур даних програми.

    Хоча ізольовані блоки в групі все ще забороняють спільний доступ до об'єктів, які ви хочете змінити, групи використовують спільну пам'ять купи, що може значно прискорити перенесення об'єктів з одного блоку в інший без необхідності ресурсномістких операцій копіювання. У новій версії також допускається перенесення результату роботи обробника при виклику Isolate.exit() для передачі даних в батьківський блок ізоляції без операцій копіювання. Крім того, був оптимізований механізм передачі повідомлень - малі і середні повідомлення тепер обробляються приблизно в 8 разів швидше. Об'єкти, які можна передавати між ізольованими блоками, викликаючи SendPort.send(), включають деякі типи функцій, закриття та сліди стеку.

  • Інструменти відривного покажчика знімають обмеження на створення таких покажчиків в коді конструктора, що може стати в нагоді при побудові інтерфейсів на основі бібліотеки Flutter. Наприклад, щоб створити віджет «Колонка», що включає в себе кілька текстових віджетів, можна викликати «.map()» і передати покажчики на конструктор Text.new об'єкта «Текст».
  • Розширено можливості, пов'язані з використанням покажчиків на функції. Додана можливість використання загальних методів і покажчиків функцій для створення незагального методу і покажчика:
  • Бібліотека dart:core має покращену підтримку перелічень (enum), наприклад, тепер ви можете отримати значення рядка з кожного значення за допомогою методу ".name", отримати значення за іменем або зіставити пари значень:
  • Реалізована методика стиснення покажчиків, що дозволяє забезпечити більш компактне представлення покажчиків в 64-бітних середовищах, якщо для адресації досить 32-бітного адресного простору (використовується не більше 4 Гб пам'яті). Тести показали, що така оптимізація дає можливість зменшити розмір купи приблизно на 10%. У Flutter SDK за замовчуванням новий режим вже активований для Android, а в майбутньому релізі планується включити і для iOS.
  • Dart SDK включає в себе інструменти для налагодження та аналізу продуктивності (DevTools), які раніше поставлялися в окремому пакеті.
  • Інструменти pub.dev додані до командних і пакетних репозиторіїв dart pub для відстеження випадкової публікації конфіденційної інформації, наприклад, залишення облікових даних для систем безперервної інтеграції та хмарних середовищ всередині пакета. Якщо такі витоки будуть виявлені, команда «dart pub publish» буде перервана повідомленням про помилку. Якщо стався помилковий спрацьовування, обійти перевірку можна через білий список.
  • Можливість відкликати вже опубліковану версію пакета pub.dev додана в репозиторій, наприклад, при виявленні небезпечних багів або вразливостей. Раніше для таких виправлень практикувалося публікація після коригувальної версії, але в деяких ситуаціях необхідно скасувати випуск і терміново припинити його подальше поширення (наприклад, якщо виправлення ще не готові або якщо помилково був опублікований повний реліз замість тестової версії). Після відкликання пакет більше не визначається в командах «pub get» і «pub upgrade», а на системах, які вже його встановили, видається спеціальне попередження при виконанні «pub get» при наступному виконанні.
  • Доданий захист від вразливості (CVE-2021-22567), викликаної використанням в коді символів юнікоду, які змінюють порядок відображення.
  • Усуває вразливість (CVE-2021-22568), яка може видавати себе за іншого користувача pub.dev під час публікації пакетів на сторонньому сервері, який приймає токени доступу oauth2 pub.dev. Наприклад, вразливість може бути використана для атак на внутрішні та корпоративні сервери пакетів. Розробників, які розміщують пакети тільки на pub.dev, проблема не зачіпає.

Інші новини