После 8 лет работы 28 000 коммитов, 7 400 пул реквестов, 4 100 закрытых issues — Scala 3 наконец-то вышла. С момента первого коммита 6 декабря 2012 года более ста человек внесли свой вклад в проект. Сегодня Scala 3 включает в себя последние исследования в области теории типов, а также отраслевой опыт Scala 2. Мы увидели, что хорошо (или не очень хорошо) работает для сообщества в Scala 2. На основе этого опыта мы создали третью итерацию Scala — простую в использовании, изучении и масштабировании.

Новые интересные функции: с чего начать?


В Scala 3 появилось множество новых функций, и вы можете задаться вопросом, с чего начать все это изучать. Лучшее место для изучения Scala 3 — это его документация.

Чтобы ощутить вкус всех новых функций, которые вошли в Scala 3, вы можете прочитать статью «Новое в Scala 3». Для упрощенного и более подробного введения смотрите Scala 3 Book. Вы можете попробовать Scala 3 онлайн, не устанавливая ничего на свой компьютер, через Scastie, или вы можете следовать руководству по началу работы, чтобы установить его на свой компьютер.

Одна вещь полностью изменилась в Scala 3 по сравнению со Scala 2: это макросы. Вы можете узнать больше о том, как они работают в Scala 3, в специальной документации.

Если вы опытный пользователь Scala 2, скорее всего, у вас есть проекты, которые вы хотите перенести со Scala 2 на Scala 3. Вам пригодится руководство по миграции. В нем описывается история совместимости между Scala 2 и Scala 3: исходная совместимость, двоичная совместимость, измененные и удаленные функции, метапрограммирование.

А если вам понадобится помощь в вашем путешествии по Scala, вы можете найти здесь различные ресурсы, чтобы поговорить с другими пользователями Scala.

Экосистема


Кто уже пользуется Scala 3? Какие библиотеки вы уже можете использовать? Отличное место для ответа на этот вопрос — Scaladex. Scaladex — это индекс библиотек Scala, в котором вы можете исследовать экосистему по языковой версии, платформе или типу работы, которую выполняет библиотека. На момент написания этой статьи в Scala 3 насчитывалось 308 early adopter библиотек по сравнению с 2597 библиотеками Scala 2.13.

Выпуски и гарантии в эпоху 3.x


Мы намерены продолжать выпускать обновления каждые 6 недель после 3.0.0, каждый раз повышая версию патча. Стабильному выпуску 3.0.x будет предшествовать релиз-кандидат 3.0.x-RC1 за 6 недель до стабильного выпуска. Такие выпуски патчей будут содержать исправления ошибок, влияющих на соответствующую дополнительную версию. Версии патчей будут иметь прямую и обратную совместимость друг с другом в отношении совместимости с исходным кодом, двоичной и TASTy совместимости.

Конечно, мы намерены продолжить развитие языка не только исправлением ошибок, но и другими способами. Новые языковые функции и стандартные библиотечные API появятся в следующих дополнительных версиях. Как и любое добавление в библиотечные API, они могут нарушить обратную совместимость исходного кода незначительными, редкими способами. Однако второстепенные выпуски не нарушат обратную двоичную или TASTy совместимость. Конкретно это означает, что библиотеки, созданные с помощью Scala 3.0.0, будут продолжать работать со Scala 3.x.y!

Авторы библиотеки: Присоединяйтесь к нашему сообществу


В Scala 3 теперь есть набор широко используемых общественных библиотек, которые создаются для каждого ночного снимка Scala 3. На данный момент в нем 67 проектов, и их количество стремительно растет. Присоединяйтесь к нашей сборке сообщества, чтобы убедиться, что наш пакет регрессии включает вашу библиотеку.

Контрибьюторы


Спасибо всем участникам, которые сделали возможным этот релиз

Согласно git shortlog -sn --no-merges 2308509d2651ee78e1122b5d61b798c984c96c4d..3.0.0, постоянные участники, которые сделали Scala 3 реальностью, являются:

список
8661 Martin Odersky
3186 Nicolas Stucki
1435 Guillaume Martres
976 Dmitry Petrashko
797 Liu Fengyun
774 Felix Mulder
407 Allan Renucci
324 liu fengyun
324 Olivier Blanvillain
323 Martin Duhem
224 Aleksander Boruch-Gruszecki
204 Jamie Thompson
201 Krzysztof Romanowski
200 Sebastien Doeraene
172 Paolo G. Giarrusso
171 Bryan Abate
163 Aggelos Biboudis
162 Anatolii Kmetiuk
160 Anatolii
129 Robert Stoll
103 bishabosha
103 Filip Zybala
101 Miles Sabin
82 Antoine Brunner
64 poechsel
64 Guillaume Raffin
62 Tom Grigg
61 Lan, Jian
55 noti0na1
54 Andrzej Ratajczak
51 odersky
50 Nikita Eshkeev
44 Guillaume R
37 Stephane Micheloud
34 Enno Runne
33 Sara Alemanno
31 Pawel Marks
30 Ondrej Lhotak
29 Som Snytt
29 Abel Nieto
26 Ruslan Shevchenko
25 VladimirNik
23 Adrien Piquerez
22 Raphael Jolly
22 Jonathan Brachtha?user
22 Michal Palka
20 vsalvis
20 Tobias Bordenca
20 Fengyun Liu
19 Martijn Hoekstra
19 Samuel Gruetter
19 Phil
19 Maxime Kjaer
18 Jendrik Wenke
17 Jason Zaugg
16 Krzysztof Romanwoski
16 Arnaud ESTEVE
15 Dale Wijnand
14 Jaemin Hong
13 gzoller
13 Vlad Ureche
12 Miron Aseev
12 Wojtek Swiderski
11 Yichen Xu
11 Grzegorz Bielski
10 Sebastian Nadorp
10 Jentsch
10 bjornregnell
10 Arnaud Esteve
10 Dmytro Melnychenko
10 Lionel Parreaux
9 Jonathan Brachthauser
9 yu-croco
9 Jasper Moeys
8 Clemens Winter
8 Lukas Rytz
8 Varunram Ganesh
8 Oron Port
8 Reto Hablutzel
7 Olafur Pall Geirsson
7 Varunram
7 benkobalog
7 Eugene Melekhov
6 jvican
6 Seth Tisue
6 Natsu Kagami
6 Thierry Treyer
6 Akhtiam Sakaev
6 Olivier ROLAND
6 Olafur Pall Geirsson
5 Nada Amin
5 Michael Pilquist
5 Ausmarton Zarino Fernandes
5 k0ala
5 Vlastimil Dort
5 Valthor Halldorsson
5 Travis Brown
5 Tomasz Godzik
5 Alex Merritt
5 Guillaume Masse
5 Alexander Myltsev
5 Saloni Vithalani
5 Raphael Bosshard
5 Julien Richard-Foy
4 Michal Gutowski
4 Sebastian Harko
4 fhackett
4 ysthakur
4 Ben Elliott
4 Raymond Tay
4 Ayush
4 Neeraj Jaiswal
4 Sarunas Valaskevicius
4 Lucas Burson
4 Dotty CI
4 Eric K Richardson
4 Vitor Vieira
4 Yevgen Nerush
4 Shane Delmore
4 Andrew Valencik
4 senia-psm
4 Minghao Liu
4 Matt D'Souza
4 Eugene Yokota
4 Hanns Holger Rutz
4 Alex Zolotko
4 Georg Schmid
4 Chris Birchall
4 december32
4 Ingar Abrahamsen
3 Michal Gutowski
3 Gabriele Petronella
3 Gabi Volpe
3 Master-Killer
3 Uko
3 Timothee Floure
3 xuwei-k
3 Eric Loots
3 Enno
3 Edmund Noble
3 Saurabh Rawat
3 Albert Chen
3 Jakob Odersky
3 Daniel Li
3 Dani Rey
3 ansvonwa
3 duanebester
3 Alexandre Archambault
3 jerylee
3 kenji yoshida
3 Artur Opala
3 Adriaan Moors
3 Ankit Soni
3 Adam Fraser
3 Pavel Shirshov
3 Joao Pedro Evangelista
3 Andrea Mocci
3 Krzysztof Bochenek
3 Tudor Voicu
2 Tobias Schlatter
2 Alden Torres
2 AnEmortalKid
2 Andrew Zurn
2 Ara Adkins
2 Artsiom Miklushou
2 Ashwin Bhaskar
2 Aurelien Richez
2 Camila Andrea Gonzalez Williamson
2 Dvir Faivel
2 Fabian Page
2 FabioPinheiro
2 Francois GORET
2 Glavo
2 Greg Pevnev
2 Henrik Huttunen
2 Hermes Espinola Gonzalez
2 James Thompson
2 Jan Christopher Vogt
2 Jens Kat
2 Jim Van Horn
2 Jon Pretty
2 Lorand Szakacs
2 Luc Henninger
2 Lucas
2 Matthew Pickering
2 Matthias Sperl
2 Mikael Blomstrand
2 Nadezhda Balashova
2 Nikolay
2 Nikolay.Tropin
2 Patrik Mada
2 Philippus
2 Philippus Baalman
2 Radoslaw Wasko
2 Rafal Piotrowski
2 Robert Soeldner
2 Roberto Bonvallet
2 Rodrigo Fernandes
2 Steven Heidel
2 Thiago Pereira
2 Tudor
2 William Narmontas
2 changvvb
2 dos65
2 esarbe
2 johnregan
2 lloydmeta
2 typeness
2 veera venky
2 xhudik
2 ybasket
1 Jyotman Singh
1 Justin du Coeur, AKA Mark Waks
1 Julien Jean Paul Sirocchi
1 Joao Pedro de Carvalho
1 rsoeldner
1 Jonathan Skowera
1 Jonathan Rodriguez
1 Jon-Anders Teigen
1 ruben
1 Alexander Slesarenko
1 Pierre Ricadat
1 Piotr Gabara
1 squid314
1 tOverney
1 Raj Parekh
1 Rajesh Veeranki
1 John Sullivan
1 Johannes Rudolph
1 Joan
1 Jimin Hsieh
1 Richard Beddington
1 Rick M
1 Rike-Benjamin Schuppner
1 tanaka takaya
1 Jean Detoeuf
1 tanishiking
1 tim-zh
1 Jarrod Janssen
1 Jan Rock
1 Sam Desborough
1 Jakub Kozlowski
1 Sandro Stucki
1 Jacob J
1 Jaap van der Plas
1 Ivano Pagano
1 Ivan Youroff
1 Iltotore
1 Serhii Pererva
1 Igor Mielientiev
1 Ignasi Marimon-Clos
1 Simon Hafner
1 Simon Popugaev
1 Ian Tabolt
1 SrTobi
1 Stefan Zeiger
1 Stephane MICHELOUD
1 tokkiyaa
1 Stephane MICHELOUD
1 Herdy Handoko
1 Szymon Pajzert
1 Harrison Houghton
1 Taisuke Oe
1 yytyd
1 Harpreet Singh
1 Haemin Yoo
1 Timur Abishev
1 Grzegorz Kossakowski
1 Tobias Kahlert
1 0xflotus
1 Greg Zoller
1 Tomas
1 George Leontiev
1 Florian Schmaus
1 zgrybus
1 Florian Cassayre
1 Ferhat Ayd?n
1 Umayah Abdennabi
1 Fedor Shiriaev
1 Dmitry Melnichenko
1 Dmitrii Naumenko
1 Vasil Vasilev
1 Victor
1 Deon Taljaard
1 Denis Buzdalov
1 Dean Wampler
1 David Hoepelman
1 Vykintas Narmontas (William)
1 Alexander Shamukov
1 DarkDimius
1 Daniel Reigada
1 Daniel Murray
1 Yilin Wei
1 Zoltan Elek
1 adpi2
1 aesteve
1 amanjpro
1 andreaTP
1 Damian Albrun
1 ayush
1 benkbalog
1 Csongor Kiss
1 Ciara O'Brien
1 Carlos Quiroz
1 brunnerant
1 =
1 costa100
1 Bunyod
1 dieutth
1 AlexSikia
1 Brian Wignall
1 ???
1 felher
1 Brandon Elam Barker
1 fschueler
1 gan74
1 gnp
1 gosubpl
1 Bojan Dunaj
1 iroha168
1 Ben Hutchison
1 Albert Serralle Rios
1 Batanick
1 Bartosz Krasinski
1 August Nagro
1 AngAng
1 Adam Trousdale
1 lpwisniewski
1 manojo
1 mentegy
1 mikhail
1 Mathias
1 msosnicki
1 Ang9876
1 Max Ovsiankin
1 Markus Kahl
1 Markus Hauck
1 Marc Karassev
1 Mads Hartmann
1 Lukas Ciszewski
1 Ang Hao Yang
1 Mike Samuel
1 Lucas Jen?
1 Li Haoyi
1 Lanny Ripple
1 Mohuety Kirisame
1 Krzysiek Bochenek
1 phderome
1 Kevin Dre?ler
1 Keith Pinson
1 Kazuyoshi Kato
1 Kazuhiro Sera
1 Niklas Vest
1 Amadou CISSE
1 riiswa
1 Katrix
1 Karol Chmist
1 Ondra Pelech