From 7c666e7760eb3c3745c0608673053f8a038d5a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC?= Date: Fri, 4 Nov 2022 09:14:14 +0300 Subject: [PATCH 01/15] Add new-in-scala3, contribute-to-docs in russian --- _ru/scala3/contribute-to-docs.md | 68 ++++++++++++ _ru/scala3/new-in-scala3.md | 183 +++++++++++++++++++++++++++++++ _ru/scala3/scaladoc.md | 88 +++++++++++++++ _ru/scala3/talks.md | 72 ++++++++++++ scala3/contribute-to-docs.md | 1 + scala3/new-in-scala3.md | 2 +- scala3/scaladoc.md | 2 +- scala3/talks.md | 2 +- 8 files changed, 415 insertions(+), 3 deletions(-) create mode 100644 _ru/scala3/contribute-to-docs.md create mode 100644 _ru/scala3/new-in-scala3.md create mode 100644 _ru/scala3/scaladoc.md create mode 100644 _ru/scala3/talks.md diff --git a/_ru/scala3/contribute-to-docs.md b/_ru/scala3/contribute-to-docs.md new file mode 100644 index 0000000000..c7bf3f62c6 --- /dev/null +++ b/_ru/scala3/contribute-to-docs.md @@ -0,0 +1,68 @@ +--- +layout: singlepage-overview +overview-name: "Scala 3 Documentation" +title: Вклад в документацию +scala3: true +language: ru +--- + +## Обзор +В настоящее время предпринимается множество усилий по созданию высококачественной документации для Scala 3. +В частности, это следующие документы: + +- Книга Scala 3 +- Учебник по макросам +- Руководство по миграции +- Справочник по языку Scala 3 + +Мы приветствуем вклад сообщества в каждый аспект документации. + + +### Как я могу внести свой вклад? +В целом, есть много способов, которыми вы можете нам помочь: + +- **Запутались в чем-то в любом из документов?** Откройте issue. +- **Нашли что-то неактуальное?** Откройте issue или создайте PR. +- **Опечатки и другие мелкие улучшения текста?** Создайте PR. +- **Хотите добавить что-то новое или внести большие изменения?** Отлично! Пожалуйста, откройте issue и давайте обсудим это. + +Как правило, каждый из различных проектов документации содержит ссылки +(как и этот документ на панели оглавления — пока видимые только в desktop view) для их редактирования и улучшения. +Кроме того, ниже мы предоставим вам всю необходимую информацию для начала работы. + + +## Книга Scala 3 +[Книга Scala 3][scala3-book] написана Alvin Alexander и содержит обзор всех важных функций Scala 3. +Она предназначена для читателей, которые только знакомятся со Scala. + +- [Исходники](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-book) +- [Вопросы](https://github.com/scala/docs.scala-lang/issues) + +## Учебник по макросам +[Учебник по макросам](/scala3/guides/macros) написан Nicolas Stucki и содержит подробную информацию о макросах в Scala 3 и best-practices. + +- [Исходники](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-macros) +- [Вопросы](https://github.com/scala/docs.scala-lang/issues) + +## Руководство по миграции +[Руководство по миграции на Scala 3](/scala3/guides/migration/compatibility-intro.html) содержит исчерпывающий обзор +совместимости между Scala 2 и Scala 3, презентацию по инструментам миграции и подробные руководства по миграции. + +- [Исходники](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-migration) +- [Вопросы](https://github.com/scala/docs.scala-lang/issues) + +## Руководство по содействию в разработке Scala 3 +[Руководство по содействию в разработке Scala 3](/scala3/guides/contribution/contribution-intro.html) +содержит исчерпывающий обзор вклада в разработку и внутреннего устройства компилятора и библиотек Scala 3. + +- [Исходники](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-contribution) +- [Вопросы](https://github.com/scala/docs.scala-lang/issues) + +## Справочник по языку Scala 3 +[Справочник по Scala 3]({{ site.scala3ref }}) содержит формальное представление и подробную техническую информацию о различных возможностях языка. + +- [Исходники](https://github.com/lampepfl/dotty/tree/main/docs/_docs) +- [Вопросы](https://github.com/lampepfl/dotty/issues) + + +[scala3-book]: {% link _overviews/scala3-book/introduction.md %} diff --git a/_ru/scala3/new-in-scala3.md b/_ru/scala3/new-in-scala3.md new file mode 100644 index 0000000000..9d11ec05de --- /dev/null +++ b/_ru/scala3/new-in-scala3.md @@ -0,0 +1,183 @@ +--- +layout: singlepage-overview +title: Новое в Scala 3 +scala3: true +language: ru +--- + +Захватывающая новая версия Scala 3 содержит множество улучшений и новых функций. +Здесь мы представляем вам краткий обзор наиболее важных изменений. +Если вы хотите копнуть глубже, то в вашем распоряжении несколько ссылок: + +- [Книга Scala 3]({% link _overviews/scala3-book/introduction.md %}) предназначена для разработчиков, только знакомящихся с языком Scala. +- [Обзор синтаксиса][syntax-summary] содержит формальное описание нового синтаксиса. +- [Справочник по языку][reference] дает подробное описание изменений Scala 3 по сравнению со Scala 2. +- [Руководство по миграции][migration] содержит всю информацию, необходимую для перехода со Scala 2 на Scala 3. +- [Scala 3 Contributing Guide][contribution] более подробно рассказывает о компиляторе, включая руководство по исправлению проблем. + +## Что нового Scala 3 +Scala 3 — это полная переработка языка Scala. +По сути, многие аспекты системы типов были изменены, чтобы сделать их более последовательными. +Хотя эта версия также приносит захватывающие новые функции (например, типы объединения), +в первую очередь это означает, что система типов становится (даже) малозаметнее на вашем пути, +и, например, [вывод типов][type-inference] и перегрузка значительно улучшаются. + +### Новое и яркое: синтаксис +Помимо многих (незначительных) чисток, синтаксис Scala 3 предлагает следующие улучшения: + +- Новый "тихий" синтаксис для структур управления, таких как `if`, `while` и `for` ([новый синтаксис управления][syntax-control]) +- Ключевое слово `new` является необязательным (_например_ [для создания экземпляров][creator]) +- [Опциональные фигурные скобки][syntax-indentation] поддерживающие стиль программирования, не отвлекающий внимание и чувствительный к отступам +- Изменение [типового уровня подстановочных знаков][syntax-wildcard] с `_` на `?`. +- Имплициты (и их синтаксис) были [значительно переработаны][implicits]. + +### Последовательное: контекстуальные абстракции +Одной из основных концепций Scala было (и до некоторой степени до сих пор является) +предоставление пользователям небольшого набора мощных функций, +которые можно комбинировать для достижения большей (а иногда даже непредусмотренной) выразительности. +Например, функциональность _имплицитов_ использовалась для моделирования контекстной абстракции, +для выражения вычислений на уровне типов, моделирования классов типов, выполнения неявных преобразований, +кодирования методов расширения и многого другого. +Извлекая уроки из этих вариантов использования, Scala 3 использует несколько иной подход +и фокусируется на **намерении**, а не на **механизме**. +Вместо того чтобы предлагать одну очень мощную функцию, +Scala 3 предлагает несколько специализированных языковых функций, +позволяющих программистам напрямую выражать свои намерения: + +- **Абстрагирование контекстной информации**. [Using предложения][contextual-using] позволяют программистам абстрагироваться от информации, + которая доступна в контексте вызова и должна передаваться неявно. + В качестве улучшения по сравнению с неявными элементами в Scala 2 предложения _using_ могут указываться по типу, + освобождая сигнатуры функций от имен переменных, если на них не ссылаются явно. + +- **Предоставление экземпляров классов типов**. [Экземпляры given][contextual-givens] позволяют программистам определять + каноническое значение определенного типа. Это делает программирование с классами типов более простым без распространения деталей реализации. + +- **Расширение классов задним числом**. В Scala 2 методы расширения должны были быть закодированы с использованием + неявных преобразований или неявных классов. Напротив, в Scala 3 [методы расширения][contextual-extension] + теперь встроены непосредственно в язык, что приводит к более качественным сообщениям об ошибках и улучшенному выводу типов. + +- **Просмотр одного типа как другого**. Неявные преобразования между типами были [переработаны][contextual-conversions] с нуля как экземпляры класса типов `Conversion`. + +- **Высокоуровневые контекстные абстракции**. _Совершенно новая_ особенность [контекстных функций][contextual-functions] делает контекстные абстракции функциями первого класса. + Они являются важным инструментом для авторов библиотек и позволяют кратко выражать предметно-ориентированные языки. + +- **Полезная обратная связь от компилятора**. Если компилятор не может разрешить неявный параметр, + теперь он предоставляет [предложения по импорту](https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html), которые могут решить проблему. + +### Говори, что имеешь в виду: улучшения системы типов +Помимо значительно улучшенного вывода типов, система типов Scala 3 также предлагает множество новых функций, +предоставляя вам мощные инструменты для статического выражения инвариантов в типах: + +- **Перечисления**. [Enums][enums] были переработаны, чтобы хорошо сочетаться с case-классами + и формировать новый стандарт для выражения [алгебраических типов данных][enums-adts]. + +- **Непрозрачные типы**. Скройте детали реализации за [непрозрачными псевдонимами типов][types-opaque], не платя за это производительностью! + Непрозрачные типы заменяют классы значений и позволяют установить барьер абстракции, не вызывая дополнительных накладных расходов на упаковку. + +- **Типы пересечения и объединения**. Основание системы типов на новом фундаменте привело к введению новых функций системы типов: + экземпляры [типов-пересечений][types-intersection], например `A & B`, являются экземплярами обоих типов `A` и `B`. + Экземпляры типов объединения, например `A | B`, являются экземплярами либо `A`, либо `B`. + Обе конструкции позволяют программистам гибко выражать ограничения типов вне иерархии наследования. + +- **Зависимые типы функций**. Scala 2 уже позволяла возвращаемым типам зависеть от (значения) аргументов. + В Scala 3 теперь можно абстрагироваться от этого шаблона и выразить [зависимые типы функций][types-dependent]. + В типе `type F = (e: Entry) => e.Key` тип результата зависит от аргумента! + +- **Полиморфные типы функций**. Как и в случае с зависимыми типами функций, Scala 2 поддерживала методы, + допускающие параметры типа, но не позволяла программистам абстрагироваться от этих методов. + В Scala 3 [полиморфные типы функций][types-polymorphic], например, `[A] => List[A] => List[A]` + могут абстрагироваться от функций, которые принимают аргументы типа в дополнение к своим аргументам значения. + +- **Лямбда-типы**. То, что нужно было выразить с помощью [плагина компилятора](https://github.com/typelevel/kind-projector) в Scala 2, + теперь является функцией первого класса в Scala 3: лямбда-выражения типов — это функции уровня типа, + которые можно передавать как аргументы (более высокого типа), не требуя определения вспомогательного типа. + +- **Сопоставление типов**. Вместо кодирования вычислений на уровне типов с использованием неявного разрешения, + Scala 3 предлагает прямую поддержку [сопоставления типов][types-match]. + Интеграция вычислений на уровне типов в средство проверки типов позволяет улучшить сообщения об ошибках + и устраняет необходимость в сложных кодировках. + + +### Переосмысление: объектно-ориентированное программирование +Scala всегда была на границе между функциональным программированием и объектно-ориентированным программированием, +а Scala 3 расширяет границы в обоих направлениях! +Вышеупомянутые изменения системы типов и редизайн контекстных абстракций делают _функциональное программирование_ проще, чем раньше. +В то же время следующие новые функции позволяют создавать хорошо структурированные _объектно-ориентированные проекты_ +и поддерживают best practices. + +- **Передайте это**. Трейты становятся ближе к классам и теперь также могут принимать [параметры][oo-trait-parameters], + что делает их еще более мощным средством модульной декомпозиции программного обеспечения. +- **Планирование расширения**. Наследование классов, которые не предназначены для расширения, + является давней проблемой объектно-ориентированного проектирования. + Чтобы решить эту проблему, [открытые классы][oo-open] требуют, чтобы разработчики библиотек _явно_ помечали классы как открытые. +- **Скрытие деталей реализации**. Вспомогательные трейты, которые реализуют поведение, иногда не должны быть частью вывода типов. + В Scala 3 эти трейты могут быть помечены как [прозрачные][oo-transparent], скрывающие наследование от пользователя (в выводимых типах). +- **Композиция над наследованием**. Эта фраза часто цитируется, но утомительна для реализации. + Не так обстоит дело с [export предложениями][oo-export] в Scala 3 : симметричные по отношению к импорту, + предложения export позволяют пользователю определять псевдонимы для выбранных членов объекта. +- **Больше никаких NullPointerException (экспериментально)**. Scala 3 безопаснее, чем когда-либо: + [явное значение null][oo-explicit-null] выводит `null` из иерархии типов, помогая статически отлавливать ошибки; + дополнительные проверки для [безопасной инициализации][oo-safe-init] обнаруживают попытки доступа к неинициализированным объектам. + +### Batteries Included: метапрограммирование +В то время как макросы в Scala 2 были только экспериментальной функцией, +Scala 3 поставляется с мощным арсеналом инструментов для метапрограммирования. +[Учебник по макросам]({% link _overviews/scala3-macros/tutorial/index.md %}) содержит подробную информацию о различных возможностях. +В частности, Scala 3 предлагает следующие функциональности для метапрограммирования: + +- **Inline**. В качестве базовой отправной точки [функция inline][meta-inline] позволяет редуцировать значения и методы во время компиляции. + Эта простая функция уже охватывает множество вариантов использования + и в то же время обеспечивает отправную точку для более продвинутых функций. +- **Операции времени компиляции**. Пакет [`scala.compiletime`][meta-compiletime] содержит дополнительные функции, + которые можно использовать для реализации inline методов. +- **Блоки кода Quoted**. В Scala 3 добавлена новая функция [квазицитирования кода][meta-quotes], + обеспечивающая удобный высокоуровневый интерфейс для создания и анализа кода. + Создать код для добавления единицы к единице так же просто, как `'{ 1 + 1 }`. +- **Reflection API**. Для более продвинутых вариантов использования [quotes.reflect][meta-reflection] + предоставляет более детализированный контроль для проверки и создания деревьев программ. + +Если вы хотите узнать больше о метапрограммировании в Scala 3, приглашаем вас пройти наш [tutorial][meta-tutorial]. + + +[enums]: {{ site.scala3ref }}/enums/enums.html +[enums-adts]: {{ site.scala3ref }}/enums/adts.html + +[types-intersection]: {{ site.scala3ref }}/new-types/intersection-types.html +[types-union]: {{ site.scala3ref }}/new-types/union-types.html +[types-dependent]: {{ site.scala3ref }}/new-types/dependent-function-types.html +[types-lambdas]: {{ site.scala3ref }}/new-types/type-lambdas.html +[types-polymorphic]: {{ site.scala3ref }}/new-types/polymorphic-function-types.html +[types-match]: {{ site.scala3ref }}/new-types/match-types.html +[types-opaque]: {{ site.scala3ref }}/other-new-features/opaques.html + +[type-inference]: {{ site.scala3ref }}/changed-features/type-inference.html +[overload-resolution]: {{ site.scala3ref }}/changed-features/overload-resolution.html +[reference]: {{ site.scala3ref }}/overview.html +[creator]: {{ site.scala3ref }}/other-new-features/creator-applications.html +[migration]: {% link _overviews/scala3-migration/compatibility-intro.md %} +[contribution]: {% link _overviews/scala3-contribution/contribution-intro.md %} + +[implicits]: {{ site.scala3ref }}/contextual +[contextual-using]: {{ site.scala3ref }}/contextual/using-clauses.html +[contextual-givens]: {{ site.scala3ref }}/contextual/givens.html +[contextual-extension]: {{ site.scala3ref }}/contextual/extension-methods.html +[contextual-conversions]: {{ site.scala3ref }}/contextual/conversions.html +[contextual-functions]: {{ site.scala3ref }}/contextual/context-functions.html + +[syntax-summary]: {{ site.scala3ref }}/syntax.html +[syntax-control]: {{ site.scala3ref }}/other-new-features/control-syntax.html +[syntax-indentation]: {{ site.scala3ref }}/other-new-features/indentation.html +[syntax-wildcard]: {{ site.scala3ref }}/changed-features/wildcards.html + +[meta-tutorial]: {% link _overviews/scala3-macros/tutorial/index.md %} +[meta-inline]: {% link _overviews/scala3-macros/tutorial/inline.md %} +[meta-compiletime]: {% link _overviews/scala3-macros/tutorial/compiletime.md %} +[meta-quotes]: {% link _overviews/scala3-macros/tutorial/quotes.md %} +[meta-reflection]: {% link _overviews/scala3-macros/tutorial/reflection.md %} + +[oo-explicit-null]: {{ site.scala3ref }}/experimental/explicit-nulls.html +[oo-safe-init]: {{ site.scala3ref }}/other-new-features/safe-initialization.html +[oo-trait-parameters]: {{ site.scala3ref }}/other-new-features/trait-parameters.html +[oo-open]: {{ site.scala3ref }}/other-new-features/open-classes.html +[oo-transparent]: {{ site.scala3ref }}/other-new-features/transparent-traits.html +[oo-export]: {{ site.scala3ref }}/other-new-features/export.html diff --git a/_ru/scala3/scaladoc.md b/_ru/scala3/scaladoc.md new file mode 100644 index 0000000000..421abd3b8b --- /dev/null +++ b/_ru/scala3/scaladoc.md @@ -0,0 +1,88 @@ +--- +layout: singlepage-overview +title: Новые возможности Scaladoc +partof: scala3-scaladoc +scala3: true +language: ru +--- + +The new Scala version 3 comes with a completely new implementation of the documentation generator _Scaladoc_, rewritten from scratch. +In this article you can find highlights of new features that are or will be introduced to Scaladoc. +For general reference, visit [Scaladoc manual]({% link _overviews/scala3-scaladoc/index.md %}). + +## New features + +### Markdown syntax + +The biggest change introduced in the new version of Scaladoc is the change of the default language for docstrings. So far Scaladoc only supported Wikidoc syntax. +The new Scaladoc can still parse legacy `Wikidoc` syntax, however Markdown has been chosen as a primary language for formatting comments. +To switch back to `Wikidoc` one can pass a global flag before running the `doc` task or one can define it for specific comments via the `@syntax wiki` directive. + +For more information on how to use the full power of docstings, check out [Scaladoc docstrings][scaladoc-docstrings] + + +### Static site + +Scaladoc also provides an easy way for creating **static sites** for both documentation and blog posts in the similar way as Jekyll does. +Thanks to this feature, you can store your documentation along-side with the generated Scaladoc API in a very convenient way. + +For more information on how to configure the generation of static sites check out [Static documentation][static-documentation] chapter + +![](../../resources/images/scala3/scaladoc/static-site.png) + +### Blog posts + +Blog posts are a specific type of static sites. In the Scaladoc manual you can find additional information about how to work with [blog posts][built-in-blog]. + +![](../../resources/images/scala3/scaladoc/blog-post.png) + +### Social links + +Furthermore, Scaladoc provides an easy way to configure your [social media links][social-links] e.g. Twitter or Discord. + +![](../../resources/images/scala3/scaladoc/social-links.png){: style="width: 180px"} + +## Experimental features + +The following features are currently (May 2021) not stable to be released with scaladoc, however we are happy to hear your feedback. Each feature has its own thread at scala-lang contributors site, where you can share your opinions. + +### Snippet compiling + +One of the experimental features of Scaladoc is a compiler for snippets. This tool will allow you to compile snippets that you attach to your docstring +to check that they actually behave as intended, e.g., to properly compile. This feature is very similar to the `tut` or `mdoc` tools, +but will be shipped with Scaladoc out of the box for easy setup and integration into your project. Making snippets interactive---e.g., letting users edit and compile them in the browser---is under consideration, though this feature is not in scope at this time. + +Showcase: +* Hiding code ![]({{ site.baseurl }}/resources/images/scala3/scaladoc/hiding-code.gif) +* Assert compilation errors ![]({{ site.baseurl }}/resources/images/scala3/scaladoc/assert-compilation-errors.gif) +* Snippet includes ![]({{ site.baseurl }}/resources/images/scala3/scaladoc/snippet-includes.png) + +For more information see [Guides](/scala3/guides/scaladoc/snippet-compiler.html), or follow this [Scala Contributors thread](https://contributors.scala-lang.org/t/snippet-validation-in-scaladoc-for-scala-3/4976) + +### Type-based search + +Searching for functions by their symbolic names can be time-consuming. +That is why the new scaladoc allows you to search for methods and fields by their types. + + +So, for a declaration: +``` +extension [T](arr: IArray[T]) def span(p: T => Boolean): (IArray[T], IArray[T]) = ... +``` +Instead of searching for `span` we can also search for `IArray[A] => (A => Boolean) => (IArray[A], IArray[A])`. + +To use this feature simply type the signature of the function you are looking for in the scaladoc searchbar. This is how it works: + +![](../../resources/images/scala3/scaladoc/inkuire-1.0.0-M2_js_flatMap.gif) + +This feature is provided by the [Inkuire](https://github.com/VirtusLab/Inkuire) search engine, which works for Scala 3 and Kotlin. To be up-to-date with the development of this feature, follow the [Inkuire repository](https://github.com/VirtusLab/Inkuire). + +For more information see [Guides](/scala3/guides/scaladoc/search-engine.html) + +Note that this feature is still in development, so it can be subject to considerable change. +If you encounter a bug or have an idea for improvement, don't hesitate to create an issue on [Inkuire](https://github.com/VirtusLab/Inkuire/issues/new) or [dotty](https://github.com/lampepfl/dotty/issues/new). + +[scaladoc-docstrings]: {% link _overviews/scala3-scaladoc/docstrings.md %} +[static-documentation]: {% link _overviews/scala3-scaladoc/static-site.md %} +[built-in-blog]: {% link _overviews/scala3-scaladoc/blog.md %} +[social-links]: {% link _overviews/scala3-scaladoc/settings.md %}#-social-links diff --git a/_ru/scala3/talks.md b/_ru/scala3/talks.md new file mode 100644 index 0000000000..9334a348e6 --- /dev/null +++ b/_ru/scala3/talks.md @@ -0,0 +1,72 @@ +--- +layout: singlepage-overview +title: Беседы +partof: scala3-talks +scala3: true +language: ru +versionSpecific: true +--- + +Let’s Talk About Scala 3 Series +------------------------------- + +[Let’s Talk About Scala 3](https://www.youtube.com/playlist?list=PLTx-VKTe8yLxYQfX_eGHCxaTuWvvG28Ml) is a series +of short (around 15 min) talks about Scala 3. It covers a variety of themes like how to get started, how to take +advantage of the new language features, or how to migrate from Scala 2. + +Talks on Scala 3 +---------------- +- (ScalaDays 2019, Lausanne) [A Tour of Scala 3](https://www.youtube.com/watch?v=_Rnrx2lo9cw) by [Martin Odersky](http://twitter.com/odersky) + +- (ScalaDays 2016, Berlin) [Scala's Road Ahead](https://www.youtube.com/watch?v=GHzWqJKFCk4) by [Martin Odersky](http://twitter.com/odersky) [\[slides\]](http://www.slideshare.net/Odersky/scala-days-nyc-2016) + +- (JVMLS 2015) [Compilers are Databases](https://www.youtube.com/watch?v=WxyyJyB_Ssc) by [Martin Odersky](http://twitter.com/odersky) [\[slides\]](http://www.slideshare.net/Odersky/compilers-are-databases) + +- (Scala World 2015) [Dotty: Exploring the future of Scala](https://www.youtube.com/watch?v=aftdOFuVU1o) by [Dmitry Petrashko](http://twitter.com/darkdimius) [\[slides\]](https://d-d.me/scalaworld2015/#/). + Dmitry covers many of the new features that Dotty brings on the table such as Intersection and Union types, improved lazy val initialization and more. + Dmitry also covers dotty internals and in particular the high-level of contextual abstractions of Dotty. You will get to + become familiar with many core concepts such as `Denotations`, their evolution through (compilation) time, their + transformations and more. + +Deep Dive with Scala 3 +---------------------- +- (ScalaDays 2019, Lausanne) [Metaprogramming in Dotty](https://www.youtube.com/watch?v=ZfDS_gJyPTc) by [Nicolas Stucki](https://github.com/nicolasstucki). + +- (ScalaDays 2019, Lausanne) [Future-proofing Scala: the TASTY intermediate representation](https://www.youtube.com/watch?v=zQFjC3zLYwo) by [Guillaume Martres](http://guillaume.martres.me/). + +- (Mar 21, 2017) [Dotty Internals 1: Trees & Symbols](https://www.youtube.com/watch?v=yYd-zuDd3S8) by [Dmitry Petrashko](http://twitter.com/darkdimius) [\[meeting notes\]](https://dotty.epfl.ch/docs/internals/dotty-internals-1-notes.html). + This is a recorded meeting between EPFL and Waterloo, where we introduce first notions inside Dotty: Trees and Symbols. + +- (Mar 21, 2017) [Dotty Internals 2: Types](https://www.youtube.com/watch?v=3gmLIYlGbKc) by [Martin Odersky](http://twitter.com/odersky) and [Dmitry Petrashko](http://twitter.com/darkdimius). + This is a recorded meeting between EPFL and Waterloo, where we introduce how types are represented inside Dotty. + +- (Jun 15, 2017) [Dotty Internals 3: Denotations](https://youtu.be/9iPA7zMRGKY) by [Martin Odersky](http://twitter.com/odersky) and [Dmitry Petrashko](http://twitter.com/darkdimius). + This is a recorded meeting between EPFL and Waterloo, where we introduce denotations in Dotty. + +- (JVM Language Summit) [How do we make the Dotty compiler fast](https://www.youtube.com/watch?v=9xYoSwnSPz0) by [Dmitry Petrashko](http://twitter.com/darkdimius). + [Dmitry Petrashko](http://twitter.com/darkdimius) gives a high-level introduction on what was done to make Dotty . + + +- (Typelevel Summit Oslo, May 2016) [Dotty and types: the story so far](https://www.youtube.com/watch?v=YIQjfCKDR5A) by + Guillaume Martres [\[slides\]](http://guillaume.martres.me/talks/typelevel-summit-oslo/). + Guillaume focused on some practical improvements to the type system that Dotty makes, like the new type parameter + inference algorithm that is able to reason about the type safety of more situations than scalac. + +- (flatMap(Oslo) 2016) [AutoSpecialization in Dotty](https://vimeo.com/165928176) by [Dmitry Petrashko](http://twitter.com/darkdimius) [\[slides\]](https://d-d.me/talks/flatmap2016/#/). + The Dotty Linker analyses your program and its dependencies to + apply a new specialization scheme. It builds on our experience from Specialization, Miniboxing and the Valhalla Project, + and drastically reduces the size of the emitted bytecode. And, best of all, it's always enabled, happens behind the + scenes without annotations, and results in speedups in excess of 20x. Additionally, it "just works" on Scala collections. + +- (ScalaSphere 2016) [Hacking on Dotty: A live demo](https://www.youtube.com/watch?v=0OOYGeZLHs4) by Guillaume Martres [\[slides\]](http://guillaume.martres.me/talks/dotty-live-demo/). + Guillaume hacks on Dotty: a live demo during which he + creates a simple compiler phase to trace method calls at run-time. + +- (Scala By the Bay 2016) [Dotty: what is it and how it works](https://www.youtube.com/watch?v=wCFbYu7xEJA) by Guillaume + Martres [\[slides\]](http://guillaume.martres.me/talks/dotty-tutorial/#/). Guillaume provides a high-level view of the + compilation-pipeline of Dotty. + +- (ScalaDays 2015, Amsterdam) [Making your Scala applications smaller and faster with the Dotty linker](https://www.youtube.com/watch?v=xCeI1ArdXM4) by Dmitry Petrashko [\[slides\]](https://d-d.me/scaladays2015/#/). + Dmitry introduces the call-graph analysis algorithm + that Dotty implements and the performance benefits we can get in terms of number of methods, bytecode size, JVM code size + and the number of objects allocated in the end. diff --git a/scala3/contribute-to-docs.md b/scala3/contribute-to-docs.md index a30c99effa..2a9795cada 100644 --- a/scala3/contribute-to-docs.md +++ b/scala3/contribute-to-docs.md @@ -2,6 +2,7 @@ layout: singlepage-overview overview-name: "Scala 3 Documentation" title: Contributing to the Docs +languages: ["ru"] --- ## Overview There are several ongoing efforts to produce high quality documentation for diff --git a/scala3/new-in-scala3.md b/scala3/new-in-scala3.md index df85599157..cc3c0add30 100644 --- a/scala3/new-in-scala3.md +++ b/scala3/new-in-scala3.md @@ -1,7 +1,7 @@ --- layout: singlepage-overview title: New in Scala 3 -languages: ["ja","zh-cn","uk"] +languages: ["ja","zh-cn","uk","ru"] --- The exciting new version of Scala 3 brings many improvements and new features. Here we provide you with a quick overview of the most important diff --git a/scala3/scaladoc.md b/scala3/scaladoc.md index 6bae13c405..92ba09827f 100644 --- a/scala3/scaladoc.md +++ b/scala3/scaladoc.md @@ -2,7 +2,7 @@ layout: singlepage-overview title: New features for Scaladoc partof: scala3-scaladoc -languages: ["uk"] +languages: ["uk","ru"] --- The new Scala version 3 comes with a completely new implementation of the documentation generator _Scaladoc_, rewritten from scratch. diff --git a/scala3/talks.md b/scala3/talks.md index 3ba01d3588..19539ba13d 100644 --- a/scala3/talks.md +++ b/scala3/talks.md @@ -3,7 +3,7 @@ layout: singlepage-overview title: Talks scala3: true partof: scala3-talks -languages: ["uk"] +languages: ["uk","ru"] versionSpecific: true --- From f8f43dcfdff58b05989f80537c477fe743426b30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC?= Date: Fri, 4 Nov 2022 10:07:06 +0300 Subject: [PATCH 02/15] Add new-in-scala3, contribute-to-docs in russian --- _includes/sidebar-toc-singlepage-overview.html | 4 ++-- _ru/scala3/new-in-scala3.md | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/_includes/sidebar-toc-singlepage-overview.html b/_includes/sidebar-toc-singlepage-overview.html index 7b2e68e995..020a98bc22 100644 --- a/_includes/sidebar-toc-singlepage-overview.html +++ b/_includes/sidebar-toc-singlepage-overview.html @@ -12,10 +12,10 @@
Contents
{% assign lang = site.data.languages[l] %}
  • {{ lang.name }}
  • {% endfor %} - + {% elsif page.language %} {% assign engPath = page.id | remove_first: "/" | remove_first: page.language | append: '.html' %} - {% assign engPg = site.documents | where: 'partof', page.partof | first %} + {% assign engPg = site.overviews | where: 'partof', page.partof | first %}