Код
#подборки

Новости языков программирования за апрель-июнь

Рассказываем, как меняются самые популярные языки программирования и зачем обновляются старички вроде C и C++.

Катя Павловская для Skillbox Media

Раз в квартал мы собираем самые интересные новости из мира языков программирования. С апреля по июнь вышло много обновлений: в этом выпуске мы расскажем, чего ждать от новых версий Kotlin, R, Dart, Rust, Python, Scala и Swift, а также о том, на что ещё стоит обратить внимание.

R

В мае вышла новая версия R — 4.1.0, сразу с несколькими интересными изменениями. Например, синтаксис анонимных функций стал проще, а в базовом синтаксисе появился новый оператор. Теперь вместо оператора %>% можно использовать более удобный |>. Это позволит сократить количество кода и облегчить отладку, однако стоит помнить, что это не полная замена: в некоторых ситуациях всё же понадобится оператор %>%.

Начиная с этого релиза, R прекращает поддерживать 32-битные версии Windows. Большинство пользователей и так давно сидят на 64-битной операционке — но вдруг у вас старый ноутбук или вы любите запускать старые игрушки на Windows 98.

Где почитать подробнее: на сайте сообщества R или в статье.

Kotlin

У языка вышла новая версия — Kotlin 1.5.0. Она принесла много улучшений — например, стабилизацию некоторых функций и расширение библиотек.

Что стабилизировали:

  • поддержку JVM-записей для лучшей совместимости с Java;
  • улучшение запечатанных (sealed) классов;
  • запечатанные интерфейсы;
  • inline-классы.

Также подоспели обновления двух важных библиотек: kotlinx.serialization теперь поддерживает классы значений и числа без знака, а ещё преобразует классы в строки JSON в два раза быстрее. Кстати, обновилась и документация по API этой библиотеки — она стала проще и понятнее.

Kotlinx-datetime теперь поддерживает kotlinx.serialization, а в класс DateTimePeriod встроена нормализация: это поможет избежать неточностей в значениях компонентов.

Где почитать подробнее: на сайте JetBrains.

Dart

У Dart, языка для Flutter, созданного компанией Google, тоже вышла новая версия. Что в ней интересного?

  • Алиасы (псевдонимы). Одна из самых долгожданных возможностей теперь позволяет присваивать псевдонимы не только функциям. Чаще всего алиасы используют, чтобы дать типу новое, более короткое и удобное название или сделать код лаконичнее.
  • Обновление Dart FFI, механизма для вызова кода C. Теперь в FFI можно работать с inline-массивами и упакованными (packed) структурами.
  • Улучшение производительности: в новой версии можно значительно уменьшить размер метаданных при использовании ключа --split-debug-info.
  • Обновление null-безопасности — эта новинка появилась ещё в мартовском релизе и быстро стала популярной. Инструкцию по миграции приложения на null-безопасность можно прочитать на официальном сайте.

Где почитать подробнее: в официальном блоге Dart на Medium.

Scala

Вышло большое обновление языка — Scala 3. Новая версия принесла много изменений; а так как на Scala пишут код и в функциональной, и в ООП-парадигме, одновременно обновились абстракции, система типов и функции, связанные с ООП.

В этом обновлении разработчики сосредоточились на небольших изменениях, которые изменят работу с языком к лучшему, и не стали пилить могучие фичи.

Вот некоторые новинки:

  • у клауз (clauses) теперь можно указывать тип;
  • скобки стали опциональными, появился новый синтаксис для управляющих конструкций, обновился и синтаксис implicits;
  • теперь перечисления — это новый стандарт для алгебраических типов данных;
  • методы расширения встроили в язык;
  • типажи (трейты) стали ближе к классам и получили параметры — а значит, стали гораздо мощнее.

Где почитать подробнее: в статье на сайте Scala.

Rust

У Rust в мае вышло сразу два обновления и анонс Rust 2021 Edition.

В Rust 1.52.0 стабилизировали часть методов и появилась поддержка Clippy: разработчики языка исправили баг, из-за которого Clippy не получалось запустить.

В Rust 1.52.1 команда фиксила проблемы, возникшие из-за нового метода верификации. Разработчики рекомендуют обновить версию или отключить у себя инкрементальную компиляцию, чтобы не попасть под раздачу.

Планы на будущее: релиз новой версии Rust обещают выкатить 21 октября. В ней расширится стандартная библиотека, итерация массивов станет разрешённым методом: сейчас её можно провести только со ссылкой на исходный массив, но начиная с версии 1.53 можно будет провести итерацию самого массива.

Где почитать подробнее: в блоге Rust — обновление 1.52.0, 1.52.1, планы на версию 1.53.

Python

Python 3.10 всё ещё в разработке, но недавно вышла бета-версия Python 3.10.0b2. Всего бета-версий запланировано четыре, и это — уже вторая. Что в ней нового по сравнению с Python 3.9?

  • В прошлых версиях можно было определить тип вызываемого объекта несколькими способами, но ни один из них не позволял перенести параметры на другой объект. Теперь для этого существуют две новые команды: typing.ParamSpec и typing.Concatenate.
  • Упрощённый синтаксис для Union: теперь можно строить синтаксис по схеме X | Y вместо использования typing.Union.
  • Для работы потребуется OpenSSL не ниже версии 1.1.
  • Нумерация строк для отладки станет точнее и надёжнее.
  • Появятся алиасы (псевдонимы) для типов.

Где почитать подробнее: на Python Insider.

Swift

Вышла первая бета новой версии Swift — 5.5. С ней приходит и множество изменений. Вот некоторые из них.

  • Появятся асинхронные функции. Подобно JavaScript и C#, такие функции будут создаваться с помощью команды async и вызываться с помощью await. Это поможет значительно сократить количество кода и сделать его проще и читаемее.
  • Свойства только для чтения теперь будут поддерживать ключевые слова async и throws.
  • Структурированный параллелизм: появится много новых возможностей для работы с параллельными операциями. Эти возможности в том числе работают с изменениями, связанными с добавлением await.
  • Добавились акторы.

На примеры использования нововведений можно посмотреть здесь.

C++

В апреле прошла онлайн-встреча комитета по стандартизации С++. На ней решалась судьба некоторых недостатков и особенностей языка: что стоит добавить в новый стандарт С++ 23, а что нет.

Что решили добавить?

  • Deducing this — механизм для определения качеств функции. Разработчики надеются, что это поможет сократить повторения кода, а программисты смогут работать с рекурсивными лямбдами и функциями значения.
  • Ограничение нелитеральных констант в функциях constexpr.

Что решили оставить?

  • Ограничения локальных классов: несмотря на снятие некоторых ограничений локальных классов, они всё ещё не могут быть шаблонами или содержать их.

Где почитать подробнее: в отчёте со встречи.

Что ещё нового?

  • В апреле стандартизация C# перешла в открытый доступ на dotnet/csharpstandard.
  • Вышла новая версия Erlang.
  • Команда Clojure выкатила большое обновление библиотеки Pathom: подшаманили систему поиска ошибок в атрибутах, интеграцию распределённых систем Pathom и многое другое. А ещё — команда выложила статью с итогами года: Clojure всё ещё остаётся в первую очередь языком стартапов, а его пользователи особенно ценят функциональный стиль.
  • В Golang теперь доступна бета-версия фаззинга.

Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована