From 9ff6a34edaecda2a36d0e157c582ed0bf35caa76 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 3 May 2012 14:30:40 +0200 Subject: [PATCH 0001/1704] Pushing uncommitted footprint --- contribute/bug-reporting-guide.md | 4 ++ contribute/git-guide.md | 4 ++ contribute/index.md | 70 +++++++++++++++++++++++++++++++ contribute/partest-guide.md | 4 ++ contribute/workflow.md | 4 ++ 5 files changed, 86 insertions(+) create mode 100644 contribute/bug-reporting-guide.md create mode 100644 contribute/git-guide.md create mode 100644 contribute/index.md create mode 100644 contribute/partest-guide.md create mode 100644 contribute/workflow.md diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md new file mode 100644 index 0000000000..33640bcd47 --- /dev/null +++ b/contribute/bug-reporting-guide.md @@ -0,0 +1,4 @@ +--- +layout: page +title: Bug Reporting +--- \ No newline at end of file diff --git a/contribute/git-guide.md b/contribute/git-guide.md new file mode 100644 index 0000000000..a66fb33190 --- /dev/null +++ b/contribute/git-guide.md @@ -0,0 +1,4 @@ +--- +layout: page +title: Using git +--- \ No newline at end of file diff --git a/contribute/index.md b/contribute/index.md new file mode 100644 index 0000000000..b11a73bcbf --- /dev/null +++ b/contribute/index.md @@ -0,0 +1,70 @@ +--- +layout: page +title: Contribute +--- + +- This page should contain the introduction as mentioned in the Scala Doc team google document +- Subpages or subsections for contributing for each project (i.e. how to find tickets/features to work on) +- Building and contributing code (contributor's workflow) + - link to a proper git etiquette page + - link to CLA + - how to run and use partest + - compiler page (links to compiler-related docs i.e. reflection/macros/compiler-plugin guides, links to compiler internal videos, and useful info from wiki) (or should this go on docs.scala-lang?) +- Link to how to make a bug report + +The Scala programming langauge is an open source project from École +Polytechnique Fédérale de Lausanne (EPFL) in Switzerland. The source of the +compiler and libraries is hosted on [github](http://github.com/scala/scala). + +Some aspects of the language are easier to contribute to than others-- the +compiler, for example, is arguably the most difficult part of the Scala +project to successfully submit patches to. + +If you're interested in joining our community and contributing to the project, +start simple-- often Scaladoc (Scala's javadoc-like tool, Example: [Scala +Standard Library API](www.scala-lang.org/api/current/index.html#package)) is +the best place to get started. + + + EPFL Typesafe Stack + _______________ ___________ + | | | | + | stdlib | | Akka | + | compiler | | Play! | + | scaladoc | | SBT | + | documentation | | .... | + |_______________| |___________| + + +## Testing + +Partest how-tos. + +### Lukas's new build machine + +Link, needs repo name and github username and builds/tests for you. + +## Community tickets + +- for scaladoc +- for the stdlib +- for the compiler +- for the doc site + +## Process + +"gitting stuff done" document. + +Where to ask questions. How-tos to mailing list, discussion pertaining to a +specific ticket on the issue tracker. + +## CLA + +## FAQ + +### OSX + +### Linux + +### Windows + diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md new file mode 100644 index 0000000000..1b3c098cca --- /dev/null +++ b/contribute/partest-guide.md @@ -0,0 +1,4 @@ +--- +layout: page +title: Running the Test Suite +--- \ No newline at end of file diff --git a/contribute/workflow.md b/contribute/workflow.md new file mode 100644 index 0000000000..89c71102a9 --- /dev/null +++ b/contribute/workflow.md @@ -0,0 +1,4 @@ +--- +layout: page +title: Contributor's Workflow +--- \ No newline at end of file From fc99948bd01ccad7310366e17a16d3a75b4a3c94 Mon Sep 17 00:00:00 2001 From: ingoem Date: Thu, 27 Sep 2012 11:45:57 +0200 Subject: [PATCH 0002/1704] Some work on the contribute section --- contribute/git-guide.md | 76 ++++++++++++++++++++++++++++++++++++++++- contribute/index.md | 61 +++++++++++++++++++++++++++++---- 2 files changed, 130 insertions(+), 7 deletions(-) diff --git a/contribute/git-guide.md b/contribute/git-guide.md index a66fb33190..2e173ec7ec 100644 --- a/contribute/git-guide.md +++ b/contribute/git-guide.md @@ -1,4 +1,78 @@ --- layout: page title: Using git ---- \ No newline at end of file +--- + +This is a step-by-step guide on how to use [git](http://git-scm.com/) and [github](http://github.com/) if you want to contribute to the Scala project. If you are new to git, make yourself familiar first. We recommend the [Git Pro]()http://git-scm.com/book/en/) online book. + +### Signup + +First create an account on [github](http://github.com/). You can also use your existing account, of course. + +### Fork + +Now, go to [https://github.com/scala/scala]() and click the "Fork" button at the top of the page. + +![image](images/fork.png) + +If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` is your github user name. Make sure you read [http://help.github.com/fork-a-repo/](), which covers some of the things that will follow below. + +### Clone + +Clone your repository. Run the following on the command line: + + $ git clone https://github.com/username/scala + +This will create a local directory called `scala`, which contains a clone of the remote repository. + +### Branch + +Before you start making changes, always create your own branch. Never work on the `master` branch. Think of a name that describes the changes you plan on doing. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: bug fixes and new features. + + - For bug fixes, use `issue/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). + - For a new feature use `topic/XXX` for feature XXX. + +Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaldoc-diagrams` instead of just `topic/diagrams`. + +For your initial contribution, try work on something manageable (TODO: link to the subproject overview page). + +Now, it's time to create your branch. Run the following on the command line + + $ git checkout -b topic/XXX + +If you are new to git and branching, please read the [Branching Chapter](http://git-scm.com/book/en/Git-Branching) in the Git Pro book. + +### Change + +Now, you are ready to make changes ot the code base. The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. + +TODO: refer to other development stuff, partest and so on. + +### Sync and Rebase + +Before you can submit your patch, make sure that your commit structure is clean. We won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so your commits are against the latest revision of `master`. + +Occassionally, you also want to sync with `master` so you don't fall behind too much. Otherwise, creating a clean pull request can become a lot of work. It is often a good idea to use `git rebase` instead of `git merge` to stay on top of `master` and keep a linear commit structure (TODO: do we actually REQUIRE this???). Read more about this approach [here](http://git-scm.com/book/en/Git-Branching-Rebasing). + +### Push + +For now, you might have committed your changes only locally (or maybe you have pushed your changes already to your fork on github because you want others to see it). Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. First, make sure you have pushed all of your local changes to your fork on github. + + $ git push username + # This pushes all of your local branches to your fork on github. + +Again, `username` stands for your github user name. + +### Submit pull request + +Now it's time to send your changes to the Scala project for review. To do so, you ask for your changes to be pulled into the main repository by submitting a pull request. Go to your own Scala project page at `https://github.com/username/scala` and switch to the branch that contains your changes. + +![image](images/switchbranch.png) + +Then click on the "Pull Request" button at the top. + +![image](images/pullrequest.png) + +The github help page at [http://help.github.com/send-pull-requests/]() covers sending pull requests in more detail. Make sure you submit your request against the right branch. Strictly follow our [Pull Request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy). + +A pull request is rarely accepted right away, so don't be depressed if the reviewer of your pull request will reject it or asks you to make additional changes before your request can be eventually accepted into the main repository. diff --git a/contribute/index.md b/contribute/index.md index b11a73bcbf..9f90154c85 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -26,6 +26,14 @@ Standard Library API](www.scala-lang.org/api/current/index.html#package)) is the best place to get started. +## Overview of the Scala Ecosystem + +TODO: I feel this section belongs somewhere else and should be linked here. + +[Scala Project](http://scala-lang.org) + +[Typesafe Stack](http://typesafe.com/stack) + EPFL Typesafe Stack _______________ ___________ | | | | @@ -34,21 +42,42 @@ the best place to get started. | scaladoc | | SBT | | documentation | | .... | |_______________| |___________| + + + +## Basic Workflow + +The Scala project, including the compiler, standard library and Scaladoc is hosted on [https://github.com/scala/scala](). As usual on github, developers work in personal forks that are merged into the main repository via pull request after having successfully completed a review process. As a contributor, your basic workflow is as follows: + + 1. [Fork](https://help.github.com/articles/fork-a-repo) the [Scala Project](https://github.com/scala/scala) + - Create a [topic branch](http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches) + - Fix a [bug](https://issues.scala-lang.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=labels+%3D+community), implement a feature + - Push your changes to your fork on github + - Submit [pull request](https://help.github.com/articles/using-pull-requests) + - Work with a reviewer on [getting your request merged](https://github.com/scala/scala/wiki/Pull-Request-Policy) + - Celebrate! +Read our [Git Commit Guide](git-guide.html) for details. + +## Building + +The Scala compiler and libraries are built using Ant. Read the [README](https://github.com/scala/scala/blob/master/README.rst) on how to build, test and create a distribution. ## Testing -Partest how-tos. +We maintain an extensive test suite that is run via our parallel testing tool `partest`. Read our [Partest Guide](partest-guide.html) for details. ### Lukas's new build machine Link, needs repo name and github username and builds/tests for you. -## Community tickets +## What to work on -- for scaladoc -- for the stdlib -- for the compiler +If you want to become a contributor but you don't know what to work on, here are a few ideas. Generally, it is a good idea to start with fixing bugs! To get some idea, head over to our [Scala issue tracker](https://issues.scala-lang.org/) and search for some unresolved bugs assigned to the community or click [here](https://issues.scala-lang.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=labels+%3D+community) for a direct link. Here is a breakdown into different subprojects: + + - [Scaladoc](https://issues.scala-lang.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=labels+%3D+scaladoc+and+labels+%3D+community&runQuery=true&clear=true) +- [Standard Library](https://issues.scala-lang.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=labels+%3D+community+and+labels+%3D+library&runQuery=true&clear=true) +- [Compiler](https://issues.scala-lang.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=labels+%3D+community+and+labels+%3D+compiler&runQuery=true&clear=true) - for the doc site ## Process @@ -58,8 +87,28 @@ Link, needs repo name and github username and builds/tests for you. Where to ask questions. How-tos to mailing list, discussion pertaining to a specific ticket on the issue tracker. -## CLA +## Contributor's License Agreement + +Before we can accept your pull request you have to sign our Contributor's License Agreement (CLA). + +TODO: Heather + +## Compiler Internals + +The files below are recordings of code walk-through sessions by Martin Odersky about the Scala compiler internals. Some of the information is somewhat outdated, but the clips are still a good introduction to some parts of the compiler architecture. + - [Scala Internals 2008-10-29 (Symbols 1)](http://www.scala-lang.org/sites/default/files/martin_ordersky_scala_internals_2008-10-29.avi) + + Handling of Symbols in the Scala compiler: some details on the symtab subdir, Symbols, Definitions, StdNames, Types (Lazy Types). + + - [Scala Internals 2008-11-05 (Symbols 2)](http://www.scala-lang.org/sites/default/files/martin_ordersky_scala_internals_2008-11-05.avi) + + Handling of Symbols part deux: more information on Symbols, Flags, Definitions. + + - [Scala Internals 2009-03-04 (Types)](http://www.scala-lang.org/sites/default/files/martin_ordersky_scala_internals_2009-03-04.avi) + + A detailed explanation about how types are represented and manipulated within the Scala compiler: data structures, manipulations of types, coding conventions (audio is not perfect, but intelligible). + ## FAQ ### OSX From 02337f4add685cbe0155d8e7e0f12ea29e536aaa Mon Sep 17 00:00:00 2001 From: ingoem Date: Thu, 27 Sep 2012 16:42:23 +0200 Subject: [PATCH 0003/1704] Add partest guide --- contribute/partest-guide.md | 64 ++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md index 1b3c098cca..e681c569fe 100644 --- a/contribute/partest-guide.md +++ b/contribute/partest-guide.md @@ -1,4 +1,66 @@ --- layout: page title: Running the Test Suite ---- \ No newline at end of file +--- + +Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go the scala project folder from your local checkout and run it via `ant` or standalone as follows. + +## Using ant + +The test suite can be run by using ant from the command line: + + $ ant test.suite + +## Standalone + +There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use + + ./test/partest --show-diff --show-log --failed + +You can get a summary of the usage by running partest without arguments. + +* Most commonly you want to invoke partest with an option that tells it which part of the tests to run. For example `--all`, `--pos`, `--neg` or `--run`. +* You can test individual files by specifying individual test files (`.scala` files) as options. Several files can be tested if they are from the same category, e.g., `pos`. +* You can enable output of log and diff using the `-show-log` and `-show-diff` options. +* If you get into real trouble, and want to find out what partest does, you can run it with option `--verbose`. This info is useful as part of bug reports. +* Set custom path from where to load classes: `-classpath ` and `-buildpath `. +* You can use the `SCALAC_OPTS` environment variable to pass command line options to the compiler. +* You can use the `JAVA_OPTS` environment variable to pass command line options to the runner (e.g., for `run/jvm` tests). +* The launch scripts run partest as follows: + + scala -cp scala.tools.partest.nest.NestRunner + + Partest classes from a `quick` build, e.g., can be found in `./build/quick/classes/partest/`. + + Partest will tell you where it loads compiler/library classes from by adding the `partest.debug` property: + + scala -Dpartest.debug=true -cp scala.tools.partest.nest.NestRunner + + + +## ScalaCheck tests + +Tests that depend on [ScalaCheck](https://github.com/rickynils/scalacheck) can be added under folder `./test/files/scalacheck`. A sample test: + + import org.scalacheck._ + import Prop._ + + object Test { + val prop_ConcatLists = property{ (l1: ListInt, l2: ListInt) => + l1.size + l2.size == (l1 ::: l2).size + } + + val tests = List(("prop_ConcatLists", prop_ConcatLists)) + } + +## Troubleshooting + +### Windows + +Some tests might fail because line endings in the `.check` files and the produced results do not match. In that case, set either + + git config core.autocrlf false + +or + + git config core.autocrlf input \ No newline at end of file From 9ea42c156a8025f1a5d436d390586eca4422a33e Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 1 Mar 2013 16:41:26 +0100 Subject: [PATCH 0004/1704] first 1.5 steps of the hacker guide --- contribute/01-post.png | Bin 0 -> 172693 bytes contribute/03-fork.png | Bin 0 -> 46172 bytes contribute/hacker-guide.md | 106 +++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 contribute/01-post.png create mode 100644 contribute/03-fork.png create mode 100644 contribute/hacker-guide.md diff --git a/contribute/01-post.png b/contribute/01-post.png new file mode 100644 index 0000000000000000000000000000000000000000..cef3dcaa46d8d4206f3b601ff7157c127d7eb55a GIT binary patch literal 172693 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 V{he5NlyEMeCkpEFC9+1o{{!U6U)2Br literal 0 HcmV?d00001 diff --git a/contribute/03-fork.png b/contribute/03-fork.png new file mode 100644 index 0000000000000000000000000000000000000000..abf86df0199e4d59dc27bbf4d0c2e93d976f1a66 GIT binary patch literal 46172 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 Date: Fri, 1 Mar 2013 18:26:56 +0100 Subject: [PATCH 0005/1704] "Contribute" landing page and sketches for two pages: - bug reporting - documentation contributions --- contribute/bug-reporting-guide.md | 53 ++++++++++++++++- contribute/documentation.md | 29 ++++++++++ contribute/index.md | 94 +++++++++++++++++++++++-------- contribute/scala-fame.md | 9 +++ 4 files changed, 162 insertions(+), 23 deletions(-) create mode 100644 contribute/documentation.md create mode 100644 contribute/scala-fame.md diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 33640bcd47..a60fb15b07 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -1,4 +1,55 @@ --- layout: page title: Bug Reporting ---- \ No newline at end of file +--- + +# Reporting bugs to the Scala project + +The Scala project tracker is located at: + +> [http://issues.scala-lang.org](http://issues.scala-lang.org) + + + diff --git a/contribute/documentation.md b/contribute/documentation.md new file mode 100644 index 0000000000..05b2455a5f --- /dev/null +++ b/contribute/documentation.md @@ -0,0 +1,29 @@ +--- +layout: page +title: Documentation Contributions +--- +# Contributing documentation to the Scala project + +TODO + + diff --git a/contribute/index.md b/contribute/index.md index 9f90154c85..a92c5f37cc 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -2,8 +2,66 @@ layout: page title: Contribute --- +# Contributing to the Scala project + +The Scala programming langauge is an open source project with a very +diverse community, where people from all over the world contribute their work, +with everyone benefitting from friendly help and advice, and +kindly helping others in return. So why not join the Scala community and help +everyone make things better? + +The following are typical questions you might ask when first contributing to Scala. +If you have other questions not addressed here, feel free to ask on the [scala-internals mailing list](http://groups.google.com/group/scala-internals). + +
+ +### I found something that doesn't work as expected. How to file a bug report? + +[The reporting bugs page](bug-reporting-guide.html) describes the steps to take when you find something that doesn't work +as expected. Filing in a good bug report increases the chances the ticket is fixed quickly. + +
+ +### Why contribute a patch to Scala? + +Just to name a few common reasons: + - contributing a patch is the best way to make sure your desired changes will be available in the next Scala version + - Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu + - last but not least, you will make it into the [Scala Contribuitor Hall of Fame](scala-fame.html). + +
+ +### I'd like to start hacking the Scala project, how to find something to work on? + +Depending on your skillset, you may want to contribute documentation and/or code. Documentation has always been very +appreciated work in the Scala community, as most code contributions tend to be quite scarce in explanations of how +things work and how everyone else is supposed to use them. To contribute documentation, have a look at the +[documentation page](documentation.html). + +The main Scala project consists of the standard Scala library, the Scala reflection and macros library, +the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. +Typically the scaladoc tool provides a low entry point for new committers, so it is a good first step into contributing. + +On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. + +
+ +### I have this idea that I'd like to add to Scala, how do I start? + +The first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea +and on the implementation plan. Starting point ("community") bugs are usually uncontroversial, so you can jump right +ahead to hacking the scala source tree and filing a pull request. For larger changes it is best to announce the change +on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list. + +Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against +the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. + +
+ + \ No newline at end of file diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md new file mode 100644 index 0000000000..75317be820 --- /dev/null +++ b/contribute/scala-fame.md @@ -0,0 +1,9 @@ +--- +layout: page +title: Scala Contribuitor Hall of Fame +--- +# Scala Hall of Fame + +A big thank you to everyone who contributed to: + - [the Scala library and compiler](https://github.com/scala/scala/contributors) + - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) \ No newline at end of file From b09e5f106986a3fafdd42d5ad0ae0f61982b58a5 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 1 Mar 2013 18:29:10 +0100 Subject: [PATCH 0006/1704] 1.5 more sections --- contribute/02-post.png | Bin 0 -> 114529 bytes contribute/hacker-guide.md | 153 ++++++++++++++++++++++++++++++++----- 2 files changed, 135 insertions(+), 18 deletions(-) create mode 100644 contribute/02-post.png diff --git a/contribute/02-post.png b/contribute/02-post.png new file mode 100644 index 0000000000000000000000000000000000000000..533ac99538d153d433129e59513a708d02fcc429 GIT binary patch literal 114529 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 Date: Fri, 1 Mar 2013 19:57:46 +0100 Subject: [PATCH 0007/1704] tentative fin --- contribute/04-submit.png | Bin 0 -> 166407 bytes contribute/05-review.png | Bin 0 -> 29682 bytes contribute/hacker-guide.md | 116 ++++++++++++++++++++++++++++++++++++- 3 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 contribute/04-submit.png create mode 100644 contribute/05-review.png diff --git a/contribute/04-submit.png b/contribute/04-submit.png new file mode 100644 index 0000000000000000000000000000000000000000..80acc36cf93e380c7257203ba879ef1636c82641 GIT binary patch literal 166407 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

f?AQ{Dupipdlg;C}}=T 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

5V-fPj1J=6v-5Ui*9vLJ^IReprT1O{yZE z^w=7y{t@jz!%D%(pK40BcU6~wf~6~>ZQB;SPuF2&V9`RWc6H6K>$?t@YcFjNkkcZx zTWRk2Kyptm73?@F+8PnHS z#mrwmG+LnX zr0f{M31T#_1>!BR^zh>LltdNA2q=M#ygMB8x9Pk|NM}5ii`xHNynHout_aMWFbADl zH9@Zq%~7>hU8KdH#=>ups6-SUv3ZJsBP&)0@1lc|gGzop`Q*u41*F$7%1H{5Aw{xd ze#(`v$o{tw?PbxeV|yjIrtyAIc=&)r8~e*3V%cU%L7;IHlb^yD)5axhpn5|keamb6jW(>8~dV@4C~3h zoC{oq3t&_F3FSZg`)R0Kr7UV!EXFP430S#!F2;Sm8lJ6(qD)Z=*cY~_aI$||6bGWb zFf{vykgq)XBeW$<2=^`b89Ng9y*LM1`wDPnt`%C=tz>BX8C$ecdG&8nN3X=ho;|CA zRj@4wOFQtShCDmVrm1sBL;@)zPv(UEjnq5ouf)jx!mQ=BoFyfLgu)pbt z_MO|}d9DnMdgMX;^39Vd{??Ot_|30St!z>JHtstNXg&tv?382=sqCATJF!)#DTJMj z=0Q~pqy8vF$Pd#`O|zZ+XB^qns#xaaL;7G*{8Z@K5~YiCfT2(%ZNur@i#>lvf--8# z0Y|e`qm)SnJE985U85vK?w|sRZ?4EoUDthvxm+X%q7aQJT7)(uAJX@z2_2uAX^A+% zX5GtHHb&cK9pP$P8-~A3C0V*}Ix5ufiGsY>E8~QeSt)9k*)C)+J{fVKL_7IVyhviK zADS0=$~G)7PNeG8t1rH2S+Nufgs}g#nJnUzlIo2>ZmC-K(|qp5S1l7E!6h(ed;_qn zVOrwG?Plf6$wQ?rn27#K>UDNT5_q`;T0Ac8mWFO(ytv9;zB0E(#2a-ktY8V$t6hUi zsvy-yWT`)m6U0D2>Emgn%uo!~t3|3;DIb||5H59Fhr9hlVq zx$BSOJootp`1@eXZ?n*4KwlJ@w;rYVMKv)#vWGP8H1`_y$AlS2*wQ;=?r-bRv{n@q z=3poX|3s^&J1P~4`IG~O{+xhB@j%E^Prc0z{9U+zlXoW`-iG(z+CYIgQ(XZRf9Vox zwYwE{N(3WF6bXfSV}WfTQwPN8-Uh#03f3v&$Sc+u6 zKe^F1coyaij`X1^xl>rK1X4FHaBxiH?F_&nRl_8-s-dh`>D;@D(#i#N;fr;NjDfe0%3vYJ~k$ z;C*oqo_l+$@=xKN+5W*H9H_ZMMi;4(X{>woT6VxQJ$yyfA| z4^_C29~;UWEkdzzy)pjCM?Y-UnPWmcsqk)R3JtPlNQ@i;Q>%o$?Vv%^c69j^Cyy6J z{~?d@mIz*v$1;?%bBDhoz#s8*_1Au`Pub=sM%M$GTc0@iJ6``W3oqZQKzEH|@0aXt zUJ9N@?hu#E$yPWq>dHeti&lul?8y@_;+|R9zkMyvBnP2Uok~2oHwc$04ApPg5J8@t zfTk;nRly@dD-p)(Rg3tf(!$OmUzHJI(6E`?pg4JOa^o8qLYt8{@z?EE<&^K~9NQJ- zY9b_&Y{Vp%XidcM1|2a%--=UK#s`!gZ zu)Qi)Pft?XAj>X!>qw=DYwju}$xuA9+~P(RItUEPd# z-jBz=x_bRq=tUXo0Ohq{=GJw9cElyPtgI<9C(&%c6K;sDGNL9hd%%@}q zqTk3DaQ56~JoDc7*v0)ZlizcME8X#4{O^Sa5WzzRvC$bgy>GVij7{WeZl5sR{m3&| zyL1-j&!37F{BxK{y!+C_D9T8^} zlJB`;c_#m~X)=(5M~}9wbR6KNqOxfic@p6}QQd*KeBKEI8wyN6Ze)Ap+$25gT}47> zOs5a7QucVx@Du|A02$HP$YHDH5@Nw2#-%V^v;toaU@>VuGo%E+(#6AQ^6>?6l{;v8 z=WUZZ&GE_15Andj&UiriuzMyqvi@w-Si!Hb~u(xN;A$m_6r2M39b*52+WXj@va|3GdG6aQf*k zOnz>8#npa>AnJ)Ap8ltPg3D;^UdXqwEcb1O7AS|JHQ9;NLB)~$uwyD%t_`YpF2%M@ zcXpf#KwB8uD;XGEm~*FUyz0n-wO||=%yh!#>p+IPq;G5=5E7~o?AdaC7Z2^GpL)R1 zPwlRWDD2svWO)Un*N{=%H(3Z@O`Ce_Ajtkj(VPbI3byCp`4*+BOvI#5KgCm{e^F_+>U=vM9{o6abZEwYHVNKA!6;9k z;6Mu7j3?*^7orBWaR3iy@ylEM@>vPGh4Eks(d1+-6OpwV;gKHo@c~!T9%0sx7gf zm;Oz<4{bt=$fRH^qK+R&<&xDY3}qpP2h+leSHo)~%i_OZ%)`_%_kzkbWokEUX0!3Z z?x|qex|lX+IbMG3PE;)(fFD177ek(&2sFD}Vde--vCOX|+q;2-l!H>LkQw3FgLoFI zPz!IZS&y*~_do&Gp)~fHN!&vo&XrC%EM1u8VCLOu-z*Q-CvR?>60@5EWAhqiaB}}< zjPBD?x%r8-Nuz|zl2j;Bb0_BFi31q_G`Bc(dkoEMlMapGBOD&xvjNliwZitd4@9G? zrIinp;p$`obR7CN#t(b~GdefLpl&Ud7BHRlB_<(_H)j+;r~4m6-%-zCSnsx6l@%>S z8uzJA;}fVASq|Cz4x+H!t833pStSsQgKwk=$2NYM=Pd4LohLs!;(ANphLZi ziia#J4R-H6fXF&^xsTZ>52yOcN68jwO$_5!9??vbp~hDg{l3Kr)x)P z=YkfABNFjt&Z<*6!wlh-G?JMsHIiqUrHiV0(O_&(bdZ3&A0{YjBs~?(XhRaCe8`?(Xie(ZI&tEm&~fxVvuP<4iy7o)RAOBjaCvd4KA^XT{NCdVdcg5FsEh2nq8 z^mRR{@qsS``ejurqvn5N2i0hzdneD(*E`mX{P~4SR|eQqa4>i zHbg>635|-{iLZk66&BVjqe)K${fk;!#0^6A*iqmDEK@LgPlEXQ(n~5GPz^V>D?80} z(*d7bE2XbM_zl>JKK_=)zknTV@(jnDsRj3~*baE8m^N*~lt-~C$sJt!&xkMAF3$CS z-kOvQ?_&8n_qO#vg4nd5fFL93MA_w`dQqf;j=Rho8fm}8PD@(| zp!4@fc59DgYyz*;x1ml@3hMkbMUvVBOjr+DE?fJAg{C?Sc$Rrgso;Ekeky)X`K9hF z3{rv7=O29BzH#cc98_|<6;T|O??J?(+jG`;PBUH zU3$-qwj}4I#*{;fIZLV9jP0CJ>DId`2|~^h=CdTh$U_je5J@aCVPsbbLON(!@u>*K z3vrh=#8N}NI#*;zZZ#uCpG9$cq9yP$HQl}5Rf0NnA<+qTafmPcT)0o`Og?|Pz&Y;l=^uC}dZ|4DFYe|Hj1dN&&RB{ZO>3xR zVs6>*Yl(+#v*0&6n!dHix;ht`Uc?4xCqEfh>VG1pnPUfXocjo3L{^M_rq>~fs9*rKK z`wLUpHg{gHGj=?^q6Axrzz~ZvA@wuG)D-`c$$J=goLFOoGggXdm! zp-xXEwe^p}Vcui|vg^=tU8~W0h_n<>Gf|H|;=s(7|34qHl0Rx}yvW&cgGXSt%GhdD zhd+@0@`&PFI>*E&^X>(UC7Ld-K&h(oz8prSGj>n5O6V~-t&qH$Q$kZWJJ#w$tlUUU zj|dlp)e`^91u#%8sJU%CW>T@@#I@;pKm<=A;T7T79#*9}7?Q$&{NakT<*R>0H6%8Zv?eYqK&;8Ft%=hwAYQ{oX2s9QL`?@{#@J8q>eR`mX`XYg(* z?E7`UG9PCV!)Cq@qJ!TRYLUlV*vC!Ym7+P*$mphB{rkwwY|RW^#I(SdEz?sJJpeby zS-b>DM!@nEHz*Kc3Di9;4{0DqY!EMk89Ua0vT^vQi09SDe2bM1m6(t7pW;n$WcdwK zfr7TeQQPBf^hexq7n5(;O0|2T#{}M}T<5RWeBw9@%E^KGy6)JyPJ73fr}73`Fo)hc zD>CjHcCpr*f>zflz0Lx4)tsCx*RWmoKC{&(E#IimQ8KXnc~SE9N@&$QCg4MqT z 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 BSkM3f literal 0 HcmV?d00001 diff --git a/contribute/05-review.png b/contribute/05-review.png new file mode 100644 index 0000000000000000000000000000000000000000..330cb519ac2c6945b9e480262568025fe49b7c1f GIT binary patch literal 29682 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 literal 0 HcmV?d00001 diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 298ac6a307..9805ad8795 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -136,8 +136,6 @@ with your hardware). [exec] Resolving [943cd5c8802b2a3a64a010efb86ec19bac142e40/lib/ant/ant-contrib.jar] ... - ... - ... pack.bin: [mkdir] Created dir: /Users/xeno_by/Projects/scala/build/pack/bin @@ -188,6 +186,7 @@ reproducible by throwing together a simple test and feeding it into the Scala di } 17:27 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala 17:28 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test + 1%n1 ### Implement ### @@ -219,5 +218,118 @@ exclusively as a folklore. However the situation is steadily improving. Here are * [scala-internals](http://groups.google.com/group/scala-internals), a mailing list which hosts discussions about the core internal design and implementation of the Scala system. +### Interlude ### + +To fix [the bug I'm interested in](https://issues.scala-lang.org/browse/SI-6725) I've tracked the `StringContext.f` interpolator +down to a macro implemented in `MacroImplementations.scala`. There I noticed that the interpolator only processes conversions, +but not tokens like `%n`. Looks like an easy fix. + + 18:44 ~/Projects/scala/sandbox (ticket/6725)$ git diff + diff --git a/src/compiler/scala/tools/reflect/MacroImplementations.scala b/src/compiler/scala/tools/ + index 002a3fce82..4e8f02084d 100644 + --- a/src/compiler/scala/tools/reflect/MacroImplementations.scala + +++ b/src/compiler/scala/tools/reflect/MacroImplementations.scala + @@ -117,7 +117,8 @@ abstract class MacroImplementations { + if (!strIsEmpty) { + val len = str.length + while (idx < len) { + - if (str(idx) == '%') { + + def notPercentN = str(idx) != '%' || (idx + 1 < len && str(idx + 1) != 'n') + + if (str(idx) == '%' && notPercentN) { + bldr append (str substring (start, idx)) append "%%" + start = idx + 1 + } + +After I applied the fix and running `ant`, my simple test case in `sandbox/Test.scala` started working! + + 18:51 ~/Projects/scala/sandbox (ticket/6725)$ cd .. + 18:51 ~/Projects/scala (ticket/6725)$ ant + Buildfile: /Users/xeno_by/Projects/scala/build.xml + + ... + + quick.comp: + [scalacfork] Compiling 1 file to /Users/xeno_by/Projects/scala/build/quick/classes/compiler + [propertyfile] Updating property file: /Users/xeno_by/Projects/scala/build/quick/classes/compiler/compiler.properties + [stopwatch] [quick.comp.timer: 6.588 sec] + + ... + + BUILD SUCCESSFUL + Total time: 18 seconds + + 18:51 ~/Projects/scala (ticket/6725)$ cd sandbox + 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala + 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test + 1 + 1 + ### Verify ### +Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. +Read up [the partest guide](/contribute/partest-guide.html) to learn the details about partest, but in a nutshell you can either +run `ant test` to go through the entire test suite (30+ minutes) or use wildcards to limit the tests to something manageable: + + 18:52 ~/Projects/scala/sandbox (ticket/6725)$ cd ../test + 18:56 ~/Projects/scala/test (ticket/6725)$ partest files/run/*interpol* + Testing individual files + testing: [...]/files/run/interpolationArgs.scala [ OK ] + testing: [...]/files/run/interpolationMultiline1.scala [ OK ] + testing: [...]/files/run/interpolationMultiline2.scala [ OK ] + testing: [...]/files/run/sm-interpolator.scala [ OK ] + testing: [...]/files/run/interpolation.scala [ OK ] + testing: [...]/files/run/stringinterpolation_macro-run.scala [ OK ] + All of 6 tests were successful (elapsed time: 00:00:08) + +### 4. Publish ### + +After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. +In a nutshell this involves: 1) making sure that your code and commit messages are of high quality, 2) clicking a few buttons in the +Github interface, 3) assigning one or more reviewers which will look through your pull request. Now all that in more details. + +### Commit ### + +The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. +There are two things you should know here: + +1) Commit messages are frequently the only way to communicate with the authors of the code written a few years ago. Therefore, we give them +big importance. Be creative and eloquent - the more context your provide about the change you've introduced, the bigger the probability that +some future maintainer will understand you right. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) +for more information about the desired style of your commits. + +2) Clean history is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. +For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, +you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so your commits are against +the latest revision of `master`. + +Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. + + 19:22 ~/Projects/scala/test (ticket/6725)$ git add ../src/compiler/scala/tools/reflect/MacroImplementations.scala + 19:22 ~/Projects/scala/test (ticket/6725)$ git commit + [ticket/6725 3c3098693b] SI-6725 `f` interpolator now supports %n tokens + 1 file changed, 2 insertions(+), 1 deletion(-) + 19:34 ~/Projects/scala/test (ticket/6725)$ git push origin ticket/6725 + Username for 'https://github.com': xeno-by + Password for 'https://xeno-by@github.com': + Counting objects: 15, done. + Delta compression using up to 8 threads. + Compressing objects: 100% (8/8), done. + Writing objects: 100% (8/8), 1.00 KiB, done. + Total 8 (delta 5), reused 0 (delta 0) + To https://github.com/xeno-by/scala + * [new branch] ticket/6725 -> ticket/6725 + +### Submit ### + +This part is very easy and enjoyable. Navigate to your branch in Github (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) +and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will +need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. + +![Submit a pull request](/contribute/04-submit.png) + +### Discuss ### + +After the pull request has been submitted, you need to pick a reviewer (probably, the person you've contacted in the beginning of your +workflow) and be ready to elaborate and adjust your patch if necessary. I picked Martin, because we had such a nice chat on the mailing list: + +![Assign the reviewer](/contribute/05-review.png) From a541a62b5602dcd4aea855867ad3f03b7c1d65d3 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 1 Mar 2013 20:18:15 +0100 Subject: [PATCH 0008/1704] polishing the hacker guide --- contribute/hacker-guide.md | 62 ++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 9805ad8795..f5a4f8724e 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -10,12 +10,15 @@ to a nightly and, ultimately, to a production release of Scala incorporating you influence a programming language of your choice is amazing, and I'm excited to demonstrate that it's easier than one might think. +### The running example ### + I like string interpolation a lot. Doing debug prints with interpolators introduced in Scala 2.10.0 is so enjoyable that I often wonder how we ever lived without that feature. However there's an annoying issue which I occasionally stumble upon: the formatting string interpolator `f` [does not support](https://issues.scala-lang.org/browse/SI-6725) new line tokens `%n`. I could go the mailing list, ask to fix this bug and then indefinitely wait for the fix. Or I could instead patch Scala myself and get the fix in a subsequent release (nightly builds get produced, well, every -night, minor releases are pumped every few months and major releases happen once a year). Let's get to work! +night, minor releases are pumped every few months and major releases happen once a year). The latter option sounds cool, so let's see +how it works! ### 1. Connect ### @@ -47,7 +50,7 @@ list of people (Github usernames and real-life names) and their specialties: documentation: @heathermiller (Heather Miller) cps: @TiarkRompf (Tiark Rompf) -Martin is the one who submitted the string interpolation proposal and implemented this language features for Scala 2.10.0. +Martin is the one who submitted the string interpolation proposal and implemented this language feature for Scala 2.10.0. (TODO: how to choose a mailing list) Therefore now I'm going to [the scala-user mailing list](http://groups.google.com/group/scala-user) and will post a topic about my issue. Note that I put Martin in the cc list of the email. If I didn't do that, he would probably miss it in a bunch @@ -57,19 +60,19 @@ of emails, which get posted to scala-user every day. ![Response from Martin](/contribute/02-post.png) -Now when I have an approval of the feature's author, it makes sense to start doing something. +Now when I have the approval of the feature's author, I'll get to work! ### 2. Set up ### -Hacking Scala begins with creating a branch for your work item. In our workflow we use [Git](http://git-scm.com/) -and [GitHub](http://github.com/). This section of the guide provides a short walkthrough on how to use them. -If you are new to Git, it might make sense to familiarize with it first. We recommend the [Git Pro](http://git-scm.com/book/en/) +Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](http://git-scm.com/) +and [GitHub](http://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, +it probably makes sense to familiarize with Git first. We recommend the [Git Pro](http://git-scm.com/book/en/) online book. ### Fork ### Log into [GitHub](http://github.com/), go to [https://github.com/scala/scala](https://github.com/scala/scala) and click the `Fork` -button at the top of the page. This will create your own copy of our repository that will serve as a scratchpad for your experiments. +button at the top of the page. This will create your own copy of our repository that will serve as a scratchpad for your hackings. If you're new to Git, don't be afraid of messing it up - there is no way you can corrupt our repository. ![Fork scala/scala](/contribute/03-fork.png) @@ -113,13 +116,13 @@ The next step after cloning your fork is setting up your machine to build Scala. [https://github.com/scala/scala/blob/master/README.rst](https://github.com/scala/scala/blob/master/README.rst), but here's the summary: * It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). -* The build tool we use is `ant`. -* The build script runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. -* The majority of our team works on Linux and OS X. +* The build tool is `ant`. +* The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. +* The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. * Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter them. -In a nutshell, build Scala is as easy as running `ant` in the root of your clone. Be prepared to wait for a while - a full rebuild -takes 7+ minutes depending on your machine. Incremental builds are usually within 30-90 seconds range (again, your mileage might vary +In a nutshell, building Scala is as easy as running `ant` in the root of your clone. Be prepared to wait for a while - a full rebuild +takes 8+ minutes depending on your machine. Incremental builds are usually within 30-120 seconds range (again, your mileage might vary with your hardware). 16:50 ~/Projects/scala (ticket/6725)$ ant @@ -149,7 +152,7 @@ with your hardware). ### IDE ### -There's no single editor of choice to work with Scala sources, as there are trade-offs imposed by each available option. +There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. Both Eclipse and Intellij IDEA have Scala plugins, which are known to work with our codebase. Here are [instructions for Eclipse](https://github.com/scala/scala/blob/master/src/eclipse/README.md) and @@ -158,7 +161,7 @@ navigation, refactoring and error reporting functionality as well as integrated of occasional sluggishness. On the other hand, lightweight editors such as Emacs, Sublime or jEdit provide unparalleled scriptability and performance, while -lacking semantic services and debugging. To address this shortcoming, one can integrate with ENSIME, +lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, a helper program, which hosts a resident Scala compiler providing some of the features implemented in traditional IDEs. However despite having significantly matured over the last year, its support for our particular codebase is still far from being great. @@ -168,12 +171,13 @@ Therefore it's hard to recommend a particular tool here, and your choice should ### 3. Hack ### When hacking on your topic of choice, you'll be modifying Scala, compiling it and testing it on relevant input files. -Typically you would want to first make sure that your changes work on a few small example and afterwards verify that nothing break -by running the comprehensive test suite. +Typically you would want to first make sure that your changes work on a small example and afterwards verify that nothing break +by running a comprehensive test suite. I'm going to start by creating a `sandbox` directory (this particular name doesn't bear any special meaning - it's just a tribute to -my first days in Scala team), which will hold a single test file and its compilation results. First I make sure that the bug is indeed -reproducible by throwing together a simple test and feeding it into the Scala distribution assembled by ant in `build/pack/bin`. +my first days in Scala team), which will hold a single test file and its compilation results. First I make sure that +[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by throwing together a simple test and feeding it +into the Scala distribution assembled by ant in `build/pack/bin`. 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox 17:26 ~/Projects/scala (ticket/6725)$ cd sandbox @@ -186,7 +190,7 @@ reproducible by throwing together a simple test and feeding it into the Scala di } 17:27 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala 17:28 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test - 1%n1 + 1%n1 // %n should've been replaced by a newline here ### Implement ### @@ -198,17 +202,17 @@ Here are also some tips & tricks that have proven useful in Scala development: try doing `ant clean build`. Due to the way how Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile just that trait, but it might also be necessary to recompile its users. Ant is not smart enough to do that, which might lead to very strange errors. Full rebuilds fix the problem. Fortunately that's rarely necessary, because full rebuilds take significant time. -* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. There are quite a few - people in our team, who do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. +* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, + some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious - to some, I'd like to explicitly mention that it's useful to print stack traces to understand the flow of execution. + to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. -Docs. Right, the docs. The documentation about internal workings of the compiler is scarce, and a lot of knowledge gets passed -exclusively as a folklore. However the situation is steadily improving. Here are the resources that might help: +Docs. Right, the docs. The documentation about internal workings of the compiler is scarce, and most of the knowledge is passed around +in the form of folklore. However the situation is steadily improving. Here are the resources that might help: * [Compiler internals videos by Martin Odersky](TODO) are quite dated, but still very useful. In this three-video - series Martin explains inner working of the part of the compiler, which has recently become Scala reflection API. + series Martin explains inner workings of the part of the compiler, which has recently become Scala reflection API. * [Reflection and Compilers by Martin Odersky](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the reflection API. * [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures that @@ -262,7 +266,7 @@ After I applied the fix and running `ant`, my simple test case in `sandbox/Test. 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test 1 - 1 + 1 // no longer getting the %n here - it got transformed into a newline ### Verify ### @@ -293,13 +297,13 @@ The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git onlin There are two things you should know here: 1) Commit messages are frequently the only way to communicate with the authors of the code written a few years ago. Therefore, we give them -big importance. Be creative and eloquent - the more context your provide about the change you've introduced, the bigger the probability that -some future maintainer will understand you right. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) +big importance. Be creative and eloquent - the more context your provide for the change you've introduced, the bigger the probability that +some future maintainer will get you right. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. 2) Clean history is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, -you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so your commits are against +you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. From edc6f1520130fe52496f48109bf2fd2a1eb4fdb3 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 1 Mar 2013 20:19:06 +0100 Subject: [PATCH 0009/1704] removes the git guide - it's been subsumed by the hacker's guide --- contribute/git-guide.md | 78 ----------------------------------------- 1 file changed, 78 deletions(-) delete mode 100644 contribute/git-guide.md diff --git a/contribute/git-guide.md b/contribute/git-guide.md deleted file mode 100644 index 2e173ec7ec..0000000000 --- a/contribute/git-guide.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: Using git ---- - -This is a step-by-step guide on how to use [git](http://git-scm.com/) and [github](http://github.com/) if you want to contribute to the Scala project. If you are new to git, make yourself familiar first. We recommend the [Git Pro]()http://git-scm.com/book/en/) online book. - -### Signup - -First create an account on [github](http://github.com/). You can also use your existing account, of course. - -### Fork - -Now, go to [https://github.com/scala/scala]() and click the "Fork" button at the top of the page. - -![image](images/fork.png) - -If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` is your github user name. Make sure you read [http://help.github.com/fork-a-repo/](), which covers some of the things that will follow below. - -### Clone - -Clone your repository. Run the following on the command line: - - $ git clone https://github.com/username/scala - -This will create a local directory called `scala`, which contains a clone of the remote repository. - -### Branch - -Before you start making changes, always create your own branch. Never work on the `master` branch. Think of a name that describes the changes you plan on doing. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: bug fixes and new features. - - - For bug fixes, use `issue/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). - - For a new feature use `topic/XXX` for feature XXX. - -Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaldoc-diagrams` instead of just `topic/diagrams`. - -For your initial contribution, try work on something manageable (TODO: link to the subproject overview page). - -Now, it's time to create your branch. Run the following on the command line - - $ git checkout -b topic/XXX - -If you are new to git and branching, please read the [Branching Chapter](http://git-scm.com/book/en/Git-Branching) in the Git Pro book. - -### Change - -Now, you are ready to make changes ot the code base. The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. - -TODO: refer to other development stuff, partest and so on. - -### Sync and Rebase - -Before you can submit your patch, make sure that your commit structure is clean. We won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so your commits are against the latest revision of `master`. - -Occassionally, you also want to sync with `master` so you don't fall behind too much. Otherwise, creating a clean pull request can become a lot of work. It is often a good idea to use `git rebase` instead of `git merge` to stay on top of `master` and keep a linear commit structure (TODO: do we actually REQUIRE this???). Read more about this approach [here](http://git-scm.com/book/en/Git-Branching-Rebasing). - -### Push - -For now, you might have committed your changes only locally (or maybe you have pushed your changes already to your fork on github because you want others to see it). Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. First, make sure you have pushed all of your local changes to your fork on github. - - $ git push username - # This pushes all of your local branches to your fork on github. - -Again, `username` stands for your github user name. - -### Submit pull request - -Now it's time to send your changes to the Scala project for review. To do so, you ask for your changes to be pulled into the main repository by submitting a pull request. Go to your own Scala project page at `https://github.com/username/scala` and switch to the branch that contains your changes. - -![image](images/switchbranch.png) - -Then click on the "Pull Request" button at the top. - -![image](images/pullrequest.png) - -The github help page at [http://help.github.com/send-pull-requests/]() covers sending pull requests in more detail. Make sure you submit your request against the right branch. Strictly follow our [Pull Request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy). - -A pull request is rarely accepted right away, so don't be depressed if the reviewer of your pull request will reject it or asks you to make additional changes before your request can be eventually accepted into the main repository. From ca55cb4757fa02c89bdd469ca4a66a0b2476b5a1 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 1 Mar 2013 20:20:17 +0100 Subject: [PATCH 0010/1704] removes the workflow page - it's been subsumed by the hacker's guide --- contribute/workflow.md | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 contribute/workflow.md diff --git a/contribute/workflow.md b/contribute/workflow.md deleted file mode 100644 index 89c71102a9..0000000000 --- a/contribute/workflow.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -layout: page -title: Contributor's Workflow ---- \ No newline at end of file From de59612fefb92a5e76c50594070e5d1cb297387e Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Sun, 3 Mar 2013 14:06:49 +0100 Subject: [PATCH 0011/1704] Fixing issues with images, formatting fixups, moving maintainers list into an include for future reuse --- contribute/01-post.png | Bin 172693 -> 0 bytes contribute/02-post.png | Bin 114529 -> 0 bytes contribute/03-fork.png | Bin 46172 -> 0 bytes contribute/04-submit.png | Bin 166407 -> 0 bytes contribute/05-review.png | Bin 29682 -> 0 bytes contribute/hacker-guide.md | 32 ++++++++------------------------ 6 files changed, 8 insertions(+), 24 deletions(-) delete mode 100644 contribute/01-post.png delete mode 100644 contribute/02-post.png delete mode 100644 contribute/03-fork.png delete mode 100644 contribute/04-submit.png delete mode 100644 contribute/05-review.png diff --git a/contribute/01-post.png b/contribute/01-post.png deleted file mode 100644 index cef3dcaa46d8d4206f3b601ff7157c127d7eb55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172693 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 V{he5NlyEMeCkpEFC9+1o{{!U6U)2Br diff --git a/contribute/02-post.png b/contribute/02-post.png deleted file mode 100644 index 533ac99538d153d433129e59513a708d02fcc429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114529 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

f?AQ{Dupipdlg;C}}=T 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

5V-fPj1J=6v-5Ui*9vLJ^IReprT1O{yZE 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 z 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 BSkM3f diff --git a/contribute/05-review.png b/contribute/05-review.png deleted file mode 100644 index 330cb519ac2c6945b9e480262568025fe49b7c1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29682 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 diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index f5a4f8724e..52bb75dd37 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -31,24 +31,7 @@ about things you want to implement. People proficient is certain areas of Scala by simply posting a message. But the most efficient way to connect is to cc your message to one of the go-to persons in your area. Here's the list of people (Github usernames and real-life names) and their specialties: - library: @phaller (Philipp Haller), @axel22 (Aleksandar Prokopec -- concurrent & collection) - specialisation: @axel22 (Aleksander Prokopec), @vladureche (Vlad Ureche), @dragos (Iulian Dragos) - named / default args, annotations, plugins: @lrytz (Lukas Rytz) - macros, reflection, manifests, type tags: @xeno-by (Eugene Burmako), @cvogt (Christopher Vogt) - type checker, inference: @odersky (Martin Odersky), @adriaanm (Adriaan Moors) - language specification, string interpolation, value classes: @odersky (Martin Odersky) - new pattern matcher, implicit search: @adriaanm (Adriaan Moors) - partest, Continuations Plugin: @phaller (Philipp Haller) - error handling, lazy vals: @hubertp (Hubert Plociniczak) - backend: @magarciaEPFL (Miguel Garcia), @gkossakowski (Grzegorz Kossakowski), @dragos (Iulian Dragos) - repl, compiler performance: @paulp (Paul Phillips) - swing: @ingoem (Ingo Maier) - scaladoc: @vladureche (Vlad Ureche) - optimizer: @vladureche (Vlad Ureche), @magarciaEPFL (Miguel Garcia) - build: @jsuereth (Josh Suereth) - random compiler bugs: @lrytz, @adriaanm, @hubertp - documentation: @heathermiller (Heather Miller) - cps: @TiarkRompf (Tiark Rompf) +{% include maintainers.html %} Martin is the one who submitted the string interpolation proposal and implemented this language feature for Scala 2.10.0. (TODO: how to choose a mailing list) @@ -56,9 +39,9 @@ Therefore now I'm going to [the scala-user mailing list](http://groups.google.co about my issue. Note that I put Martin in the cc list of the email. If I didn't do that, he would probably miss it in a bunch of emails, which get posted to scala-user every day. -![Posting to scala-user](/contribute/01-post.png) - -![Response from Martin](/contribute/02-post.png) +

Posting to scala-user
+
+
Response from Martin
Now when I have the approval of the feature's author, I'll get to work! @@ -75,7 +58,7 @@ Log into [GitHub](http://github.com/), go to [https://github.com/scala/scala](ht button at the top of the page. This will create your own copy of our repository that will serve as a scratchpad for your hackings. If you're new to Git, don't be afraid of messing it up - there is no way you can corrupt our repository. -![Fork scala/scala](/contribute/03-fork.png) +
Fork scala/scala
### Clone ### @@ -329,11 +312,12 @@ This part is very easy and enjoyable. Navigate to your branch in Github (for me and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. -![Submit a pull request](/contribute/04-submit.png) +
Submit a pull request
### Discuss ### After the pull request has been submitted, you need to pick a reviewer (probably, the person you've contacted in the beginning of your workflow) and be ready to elaborate and adjust your patch if necessary. I picked Martin, because we had such a nice chat on the mailing list: -![Assign the reviewer](/contribute/05-review.png) +
SAssign the reviewer
+ From 42987ddbaa2ad4e53ca1f2a05cbcf961040b881b Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Sun, 3 Mar 2013 14:49:30 +0100 Subject: [PATCH 0012/1704] Fixes to the wording in the hacker guide. Just trying to clean up and fill in holes in the hacker guide. Review @xeno_by --- contribute/hacker-guide.md | 47 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 52bb75dd37..db7b64a820 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -5,45 +5,46 @@ title: Scala hacker guide **Eugene Burmako** -This guide is intended to help you get from an idea of fixing a bug or implementing a new feature -to a nightly and, ultimately, to a production release of Scala incorporating your idea. Being able to -influence a programming language of your choice is amazing, and I'm excited to demonstrate that it's easier -than one might think. +This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. + +This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. ### The running example ### -I like string interpolation a lot. Doing debug prints with interpolators introduced in Scala 2.10.0 -is so enjoyable that I often wonder how we ever lived without that feature. However there's an annoying issue -which I occasionally stumble upon: the formatting string interpolator `f` [does not support](https://issues.scala-lang.org/browse/SI-6725) -new line tokens `%n`. I could go the mailing list, ask to fix this bug and then indefinitely -wait for the fix. Or I could instead patch Scala myself and get the fix in a subsequent release (nightly builds get produced, well, every -night, minor releases are pumped every few months and major releases happen once a year). The latter option sounds cool, so let's see -how it works! +Let's say that you particularly enjoy the new string interpolation language feature introduced in Scala 2.10.0, and you use it quite heavily. + +Though, there's an annoying issue +which you occasionally stumble upon: the formatting string interpolator `f` [does not support](https://issues.scala-lang.org/browse/SI-6725) +new line tokens `%n`. + +One approach would be to go the mailing list, request that the bug be fixed, and then to wait indefinitely for the fix arrive. Another approach would be to instead patch Scala oneself, and to submit the fix to the Scala repository in hopes that it might make it into a subsequent release. + +**_Of note_**: There are several types of releases/builds. Nightly builds are produced every night at a fixed time. Minor releases happen once every few months. Major releases typically happen once per year. ### 1. Connect ### -Sometimes it's appealing to hack alone and not to have to interact with humans, but in the context of such a big project like Scala -this might not be the very best idea. Our community has people who spent years accumulating knowledge about Scala. They might provide -unique insights and, what's even better, direct assistance in their areas. +Sometimes it's appealing to hack alone and not to have to interact with others out of fear, or out of comfort. However, in the context a big project such as Scala, +this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide +unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and especially new features beging with posting to one of [our mailing lists](TODO) to find out how people feel +Typically bug fixes new features start out as an idea or an experiment posted on one of our mailing lists [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel about things you want to implement. People proficient is certain areas of Scala usually monitor mailing lists, so you'll often get some help -by simply posting a message. But the most efficient way to connect is to cc your message to one of the go-to persons in your area. Here's the -list of people (Github usernames and real-life names) and their specialties: +by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. + +This is the list of language features/libraries along with their maintainers's full names and github usernames: {% include maintainers.html %} -Martin is the one who submitted the string interpolation proposal and implemented this language feature for Scala 2.10.0. -(TODO: how to choose a mailing list) -Therefore now I'm going to [the scala-user mailing list](http://groups.google.com/group/scala-user) and will post a topic -about my issue. Note that I put Martin in the cc list of the email. If I didn't do that, he would probably miss it in a bunch -of emails, which get posted to scala-user every day. +Since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. + +As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, +in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user)about our issue.
Posting to scala-user

Response from Martin
-Now when I have the approval of the feature's author, I'll get to work! +Now that we have the approval of the feature's author, we can get to work! ### 2. Set up ### From 2ce31f91a6ec123bd020250ab5987b1894775881 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Sun, 3 Mar 2013 19:22:57 +0100 Subject: [PATCH 0013/1704] Continuing to tweak the hacker guide, and to add info where needed. Review @xeno_by --- contribute/hacker-guide.md | 100 +++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 43 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index db7b64a820..4f8ca20604 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -9,7 +9,7 @@ This guide is intended to help you get from an idea of fixing a bug or implement This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. -### The running example ### +## The Running Example Let's say that you particularly enjoy the new string interpolation language feature introduced in Scala 2.10.0, and you use it quite heavily. @@ -21,7 +21,7 @@ One approach would be to go the mailing list, request that the bug be fixed, and **_Of note_**: There are several types of releases/builds. Nightly builds are produced every night at a fixed time. Minor releases happen once every few months. Major releases typically happen once per year. -### 1. Connect ### +## 1. Connect Sometimes it's appealing to hack alone and not to have to interact with others out of fear, or out of comfort. However, in the context a big project such as Scala, this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide @@ -46,26 +46,27 @@ in this example, we post to the [the scala-user mailing list](http://groups.goog Now that we have the approval of the feature's author, we can get to work! -### 2. Set up ### +## 2. Set up Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](http://git-scm.com/) and [GitHub](http://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, -it probably makes sense to familiarize with Git first. We recommend the [Git Pro](http://git-scm.com/book/en/) +it probably makes sense to familiarize yourself with Git first. We recommend the [Git Pro](http://git-scm.com/book/en/) online book. -### Fork ### +### Fork Log into [GitHub](http://github.com/), go to [https://github.com/scala/scala](https://github.com/scala/scala) and click the `Fork` -button at the top of the page. This will create your own copy of our repository that will serve as a scratchpad for your hackings. -If you're new to Git, don't be afraid of messing it up - there is no way you can corrupt our repository. +button in the top right corner of the page. This will create your own copy of our repository that will serve as a scratchpad for your work. + +If you're new to Git, don't be afraid of messing up-- there is no way you can corrupt our repository.
Fork scala/scala
-### Clone ### +### Clone If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), -which covers some of the things that will follow below. Then clone your repository by running something like the following on the command line: +which covers some of the things that will follow below. Then, _clone_ your repository (_i.e._ pull a copy from github to your local machine) by running the following on the command line: 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala Cloning into 'scala'... @@ -76,25 +77,25 @@ which covers some of the things that will follow below. Then clone your reposito Resolving deltas: 100% (182155/182155), done. This will create a local directory called `scala`, which contains a clone of your own copy of our repository. The changes that you make -in this directory can be propagated back to your copy and, ultimately, pushed into Scala. +in this directory can be propagated back to your copy hosted on github and, ultimately, pushed into Scala when your patch is ready. -### Branch ### +### Branch Before you start making changes, always create your own branch. Never work on the `master` branch. Think of a name that describes -the changes you plan on doing. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: +the changes you plan on making. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: bug fixes and new features. * For bug fixes, use `issue/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). -* For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams`. +* For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. -Since I'm going to fix an existing bug [SI-6725](https://issues.scala-lang.org/browse/SI-6725), I'll create a branch named `ticket/6725`. +Since in our example, we're going to fix an existing bug [SI-6725](https://issues.scala-lang.org/browse/SI-6725), we'll create a branch named `ticket/6725`. 16:39 ~/Projects/scala (master)$ git checkout -b ticket/6725 Switched to a new branch 'ticket/6725' If you are new to Git and branching, read the [Branching Chapter](http://git-scm.com/book/en/Git-Branching) in the Git Pro book. -### Build ### +### Build The next step after cloning your fork is setting up your machine to build Scala. The definitive guide on building Scala is located at [https://github.com/scala/scala/blob/master/README.rst](https://github.com/scala/scala/blob/master/README.rst), but here's the summary: @@ -103,10 +104,10 @@ The next step after cloning your fork is setting up your machine to build Scala. * The build tool is `ant`. * The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. * The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. -* Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter them. +* Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. -In a nutshell, building Scala is as easy as running `ant` in the root of your clone. Be prepared to wait for a while - a full rebuild -takes 8+ minutes depending on your machine. Incremental builds are usually within 30-120 seconds range (again, your mileage might vary +Building Scala is as easy as running `ant` in the root of your cloned repository. Be prepared to wait for a while-- a full "clean" build +takes 8+ minutes depending on your machine (and up to 30 minutes on older machines with less memory). Incremental builds are usually within 30-120 seconds range (again, your mileage might vary with your hardware). 16:50 ~/Projects/scala (ticket/6725)$ ant @@ -134,34 +135,30 @@ with your hardware). BUILD SUCCESSFUL Total time: 9 minutes 41 seconds -### IDE ### +### IDE There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. -Both Eclipse and Intellij IDEA have Scala plugins, which are known to work with our codebase. Here are +Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. Here are [instructions for Eclipse](https://github.com/scala/scala/blob/master/src/eclipse/README.md) and [instructions for Intellij](https://github.com/scala/scala/blob/master/src/intellij/README). Both of those Scala plugins provide -navigation, refactoring and error reporting functionality as well as integrated debugging. Unfortunately this comes at a cost -of occasional sluggishness. +navigation, refactoring and error reporting functionality as well as integrated debugging. -On the other hand, lightweight editors such as Emacs, Sublime or jEdit provide unparalleled scriptability and performance, while +There also exist lighter-weight editors such as Emacs, Sublime or jEdit which provide unparalleled are faster and much less memory/compute-intensive to run, while lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, a helper program, which hosts a resident Scala compiler providing some of the features implemented in traditional IDEs. However despite -having significantly matured over the last year, its support for our particular codebase is still far from being great. +having significantly matured over the last year, support for our particular code base is still being improved, and is not as mature as for Eclipse and IntelliJ. -We know of both novices and experienced Scala hackers who've been effective with using both IDEs and lightweight editors. -Therefore it's hard to recommend a particular tool here, and your choice should boil down to your personal preferences. +Due to the immense variability in personal preference between IDE/editor experience, it's difficult to recommend a particular tool, and your choice should boil down to your personal preferences. -### 3. Hack ### +## 3. Hack When hacking on your topic of choice, you'll be modifying Scala, compiling it and testing it on relevant input files. Typically you would want to first make sure that your changes work on a small example and afterwards verify that nothing break by running a comprehensive test suite. -I'm going to start by creating a `sandbox` directory (this particular name doesn't bear any special meaning - it's just a tribute to -my first days in Scala team), which will hold a single test file and its compilation results. First I make sure that -[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by throwing together a simple test and feeding it -into the Scala distribution assembled by ant in `build/pack/bin`. +We'll start by creating a `sandbox` directory (this particular name doesn't bear any special meaning), which will hold a single test file and its compilation results. First, let's make sure that +[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `ant`. The Scala compiler that we just built is located in `build/pack/bin`. 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox 17:26 ~/Projects/scala (ticket/6725)$ cd sandbox @@ -176,36 +173,53 @@ into the Scala distribution assembled by ant in `build/pack/bin`. 17:28 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test 1%n1 // %n should've been replaced by a newline here -### Implement ### +### Implement -There's not much to be said about this step, which is bread & butter software development. +Now, implement your bugfix or new feature! Here are also some tips & tricks that have proven useful in Scala development: -* If after introducing changes or updating your clone, you're getting `AbstractMethodError` or other linkage exceptions, +* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, try doing `ant clean build`. Due to the way how Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile - just that trait, but it might also be necessary to recompile its users. Ant is not smart enough to do that, which might lead to - very strange errors. Full rebuilds fix the problem. Fortunately that's rarely necessary, because full rebuilds take significant time. + just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to + very strange errors. Full rebuilds fix the problem. Fortunately that's rarely necessary, because full rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. * Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. -Docs. Right, the docs. The documentation about internal workings of the compiler is scarce, and most of the knowledge is passed around -in the form of folklore. However the situation is steadily improving. Here are the resources that might help: +### Documentation + +There are several areas that one could contribute to-- there is the Scala library, the Scala compiler, and other tools such as Scaladoc. Each area has varying amounts of documentation. + +##### The Scala Library + +Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left something cleaner than you found it.) + +If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. + +If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](http://docs.scala-lang.org/overviews/core/collections.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](http://docs.scala-lang.org/overviews/core/parallel-collections.html). (TODO double check these links!) + +##### The Scala Compiler + +Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email (scala-internals mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: * [Compiler internals videos by Martin Odersky](TODO) are quite dated, but still very useful. In this three-video - series Martin explains inner workings of the part of the compiler, which has recently become Scala reflection API. + series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. +* [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that + are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. * [Reflection and Compilers by Martin Odersky](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk - at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the reflection API. -* [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures that - are used to represent Scala programs and operations defined on then. + at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. * [Scala compiler corner](http://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about - most of the post-typer phases in the Scala compiler. + most of the post-typer phases (i.e. the backend) in the Scala compiler. * [scala-internals](http://groups.google.com/group/scala-internals), a mailing list which hosts discussions about the core internal design and implementation of the Scala system. +##### Other Projects + +Tools like Scaladoc also welcome contributions. Unfortunately these smaller projects have less developer documentation. In these cases, the best thing to do is to directly explore the code base (which often contains documentation as inline comments) or to write to the appropriate maintainers for pointers. + ### Interlude ### To fix [the bug I'm interested in](https://issues.scala-lang.org/browse/SI-6725) I've tracked the `StringContext.f` interpolator From 023f0b01cdca944b429348820aeed9de4766521b Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Mon, 4 Mar 2013 23:36:44 -0500 Subject: [PATCH 0014/1704] Final tweaks to the hacker guide. Mostly wording --- contribute/hacker-guide.md | 45 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 4f8ca20604..bd7ac60e71 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -182,7 +182,7 @@ Here are also some tips & tricks that have proven useful in Scala development: * If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, try doing `ant clean build`. Due to the way how Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to - very strange errors. Full rebuilds fix the problem. Fortunately that's rarely necessary, because full rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. + very strange errors. Full-rebuilds fix the problem. Fortunately that's rarely necessary, because full-rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. * Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how @@ -220,10 +220,10 @@ Documentation about the internal workings of the Scala compiler is scarce, and m Tools like Scaladoc also welcome contributions. Unfortunately these smaller projects have less developer documentation. In these cases, the best thing to do is to directly explore the code base (which often contains documentation as inline comments) or to write to the appropriate maintainers for pointers. -### Interlude ### +### Interlude -To fix [the bug I'm interested in](https://issues.scala-lang.org/browse/SI-6725) I've tracked the `StringContext.f` interpolator -down to a macro implemented in `MacroImplementations.scala`. There I noticed that the interpolator only processes conversions, +To fix [the bug we're interested in](https://issues.scala-lang.org/browse/SI-6725). Let's say we've tracked the `StringContext.f` interpolator +down to a macro implemented in `MacroImplementations.scala`, and there we notice that the interpolator only processes conversions, but not tokens like `%n`. Looks like an easy fix. 18:44 ~/Projects/scala/sandbox (ticket/6725)$ git diff @@ -242,7 +242,7 @@ but not tokens like `%n`. Looks like an easy fix. start = idx + 1 } -After I applied the fix and running `ant`, my simple test case in `sandbox/Test.scala` started working! +After applying the fix and running `ant`, our simple test case in `sandbox/Test.scala` started working! 18:51 ~/Projects/scala/sandbox (ticket/6725)$ cd .. 18:51 ~/Projects/scala (ticket/6725)$ ant @@ -266,7 +266,7 @@ After I applied the fix and running `ant`, my simple test case in `sandbox/Test. 1 1 // no longer getting the %n here - it got transformed into a newline -### Verify ### +### Verify Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. Read up [the partest guide](/contribute/partest-guide.html) to learn the details about partest, but in a nutshell you can either @@ -283,26 +283,25 @@ run `ant test` to go through the entire test suite (30+ minutes) or use wildcard testing: [...]/files/run/stringinterpolation_macro-run.scala [ OK ] All of 6 tests were successful (elapsed time: 00:00:08) -### 4. Publish ### +## 4. Publish After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. -In a nutshell this involves: 1) making sure that your code and commit messages are of high quality, 2) clicking a few buttons in the -Github interface, 3) assigning one or more reviewers which will look through your pull request. Now all that in more details. +In a nutshell, this involves: -### Commit ### + 1. making sure that your code and commit messages are of high quality, + 2. clicking a few buttons in the Github interface, + 3. assigning one or more reviewers which will look through your pull request. + + Let's go into each of these points in more detail. + +### Commit The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. There are two things you should know here: -1) Commit messages are frequently the only way to communicate with the authors of the code written a few years ago. Therefore, we give them -big importance. Be creative and eloquent - the more context your provide for the change you've introduced, the bigger the probability that -some future maintainer will get you right. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) -for more information about the desired style of your commits. + 1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. -2) Clean history is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. -For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, -you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against -the latest revision of `master`. + 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. @@ -321,18 +320,18 @@ Once you are satisfied with your work, synced with `master` and cleaned up your To https://github.com/xeno-by/scala * [new branch] ticket/6725 -> ticket/6725 -### Submit ### +### Submit -This part is very easy and enjoyable. Navigate to your branch in Github (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) +Now, we must simply submit our proposed patch. Navigate to your branch in Github (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes.
Submit a pull request
-### Discuss ### +### Discuss -After the pull request has been submitted, you need to pick a reviewer (probably, the person you've contacted in the beginning of your -workflow) and be ready to elaborate and adjust your patch if necessary. I picked Martin, because we had such a nice chat on the mailing list: +After the pull request has been submitted, you need to pick a reviewer (usually the person you've contacted in the beginning of your +workflow) and be ready to elaborate and adjust your patch if necessary. In this example, we picked Martin, because we had such a nice chat on the mailing list:
SAssign the reviewer
From 36ce3092e825d72b9b2af3b68b2f78dfd7c04b3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 7 Mar 2013 11:54:07 +0100 Subject: [PATCH 0015/1704] Fixed a build error Maruku did not like that big HTML comment, for some reason. --- contribute/bug-reporting-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index a60fb15b07..345dc03034 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -10,7 +10,7 @@ The Scala project tracker is located at: > [http://issues.scala-lang.org](http://issues.scala-lang.org) - +{% endcomment %} From 3a415b797a650cfd06f80b1d771822651fed0866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 7 Mar 2013 18:27:20 +0100 Subject: [PATCH 0016/1704] First shot at a 'community tickets' feed fetched from JIRA. --- contribute/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contribute/index.md b/contribute/index.md index a92c5f37cc..14a4117631 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -44,6 +44,8 @@ Typically the scaladoc tool provides a low entry point for new committers, so it On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. +
+
### I have this idea that I'd like to add to Scala, how do I start? From af5a53cac3e5dc217f2c73f662a95374833ab6e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Fri, 8 Mar 2013 11:14:27 +0100 Subject: [PATCH 0017/1704] Added a dynamic pager in the community tickets feed. --- contribute/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contribute/index.md b/contribute/index.md index 14a4117631..05696f5165 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -44,7 +44,8 @@ Typically the scaladoc tool provides a low entry point for new committers, so it On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. -
+{% comment %} Keep the space in the
@@ -40,11 +32,10 @@ title: Contributing guide ### Why contribute a patch to Scala? Just to name a few common reasons: - - contributing a patch is the best way to make sure your desired changes will be available in the next Scala version - - Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu - - last but not least, you will make it into the [Scala Contributor Hall of Fame](scala-fame.html). -
+* contributing a patch is the best way to make sure your desired changes will be available in the next Scala version +* Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu +* last but not least, you will make it into the [Scala Contributor Hall of Fame](scala-fame.html). The main Scala project consists of the standard Scala library, the Scala reflection and macros library, the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. @@ -57,100 +48,37 @@ If you are interested in contributing code, we ask you to sign the which allows us to ensure that all code submitted to the project is unencumbered by copyrights or patents. -
- -### I have this idea that I'd like to add to Scala, how do I start? - -The first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea -and on the implementation plan. Starting point ("community") bugs are usually uncontroversial, so you can jump right -ahead to hacking the scala source tree and filing a pull request. For larger changes it is best to announce the change -on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list. - -Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. - - diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 08f5d40c09..ecdbd2fc27 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -30,7 +30,7 @@ Typically bug fixes and new features start out as an idea or an experiment poste about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. -This is the list of language features/libraries along with their maintainers's full names and GitHub usernames: +This is the list of language features/libraries along with their maintainer's full names and GitHub usernames: {% include maintainers.html %} @@ -182,7 +182,7 @@ Here are also some tips & tricks that have proven useful in Scala development: just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to very strange errors. Full-rebuilds fix the problem. Fortunately that's rarely necessary, because full-rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. * Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, - some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts ([here](https://github.com/adriaanm/binfu/blob/master/scafu.sh) are some examples to get you strarted) to launch Scala from `build/quick/classes`. + some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts ([here](https://github.com/adriaanm/binfu/blob/master/scafu.sh) are some examples to get you started) to launch Scala from `build/quick/classes`. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. @@ -415,6 +415,6 @@ workflow) and be ready to elaborate and adjust your patch if necessary. In this ## Merge -After your reviewer is happy with your code (usually signalled by a LGTM — “Looks good to me”), your job is done. +After your reviewer is happy with your code (usually signaled by a LGTM — “Looks good to me”), your job is done. Note that there can be a gap between a successful review and the merge, because not every reviewer has merge rights. In that case, someone else from the team will pick up your pull request and merge it. So don't be confused if your reviewer says “LGTM”, but your code doesn't get merged immediately. diff --git a/contribute/index.md b/contribute/index.md index 338ff06a06..433c579620 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -11,21 +11,56 @@ everyone make things better? ## How to help? -### Reporting bugs +That depends on what you want to contribute. Below are some getting started resources for different contribution domains. Please read all of the documentation and follow all the links from the topic pages below before attempting to contribute, as many of the questions you have will already be answered. -See our [bug reporting guide](./bug-reporting-guide.html) to learn -how to efficiently report a bug. +### Contribute -### Help with the documentation +Coordination of contribution efforts takes place on the +[scala-internals Google group](./scala-internals.html). -An easy but very important way to contribute to Scala is to -[help with the guide/tutorial-style documentation on docs.scala-lang.org](http://docs.scala-lang.org/contribute.html). -If you want to [contribute to Scala standard library API documentation](./scala-standard-library-api-documentation.html), the -process is slightly different, since API documentation lives within Scala standard library source code. +
+
+ +
+

Bug Fixes

+

Issues with the tools, core libraries and compiler. Also you can help us by reporting bugs

+
+
-### Compiler and other tools +
+
+

Tools

+

Enhance the Scala tooling ecosystem with features for build tools, IDE plug-ins and other related tools.

+
+
+

Core Libraries

+

Update and expand the capabilities of the core (and associated) Scala libraries.

+
+
+ +
+
+

Compiler/Language

+

Larger language features and compiler enhancements including language specification and SIPs.

+
+
+

Contributor Hall of Fame

+

Get your props, and find your place in the leader-board.

+
+
+
-More info in our [contributing guide](./guide.html). + +### Reporting bugs + +See our [bug reporting guide](./bug-reporting-guide.html) to learn +how to efficiently report a bug. ### Community Tickets @@ -35,33 +70,33 @@ various contributor activities:
-

Documentation

+

Documentation

Help augment or correct the documentation.

-

Core Libraries

+

Core Libraries

Community bugs and enhancements on the core libs.

-

Tools

+

Tools

Help with the Scala tool chain.

-

Compiler

+

Compiler

Ready for a challenge? Here's the compiler bugs.

-

Bugs

+

Bugs

All bugs marked with the label community.

-

All Issues

+

All Issues

Bugs + Enhancements marked with the label community.

diff --git a/contribute/scala-internals.md b/contribute/scala-internals.md new file mode 100644 index 0000000000..fa7faa9dc3 --- /dev/null +++ b/contribute/scala-internals.md @@ -0,0 +1,45 @@ +--- +layout: page +title: Scala Internals Mailing List +--- + +## scala-internals + +The [scala-internals mailing list](https://groups.google.com/d/forum/scala-internals) is where technical and logistical discussions concerning bugs, bug fixes, documentation, improvements, new features and other contributor related topics occur. + +### Coordinating on scala-internals + +Prior to commencing on contribution work for the Scala project, even for documentation and bugfixing, it is recommended (but not required) that you make a post on scala-internals announcing your intention. It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, one of whom will probably be reviewing your contribution at some point. + +To help subscribers on the scala-internals list to sort through the postings, we request that the following topic labels are applied when you start a new post please: + +| Label | Topics | +|-----------|-------------------------------------------------------| +| [docs] | Documentation, e.g. docs.scala-lang.org, API (scaladoc), etc. | +| [issues] | Bug reporting/fixing | +| [tools] | Tools including sbt, IDE plugins, testing, scaladoc generator, etc. | +| [libs] | Core libraries, extension libraries | +| [compiler] | Scala compiler discussions/features/issues | +| [admin] | Administrative/coordination topics | + +So, to talk about this list (an admin activity primarily) one might use: + +`[admin] more suggested labels for topic differentiation.` + +as a title, which then shows up on the mailing lists as + +`[scala-internals] [admin] more suggested labels for topic differentiation.` + +### Why It's a Good Idea + +While it is optional to announce your intentions/work items on scala-internals before starting, it is recommended and a smart thing to do for a number of reasons: + +* To attempt to cut down on duplicate effort (i.e. to avoid two people working on the same bug at the same time without coordinating effort). +* Related to the above: to allow the compiler team and core committers to warn of or smooth over potential merge conflicts between separate bugs that might affect the same code. +* Potentially someone has already thought about or even worked on that issue or a related one, and has valuable insight that might save you time (including warnings about what you might find and may want to avoid - dead ends that have already been explored). +* You might find a group of impassioned individuals want to volunteer to help you, since you got there first with your post it's up to you to decide if you want help or not. +* Posting could start a dialog with a potential reviewer, smoothing the latter, merge stages of the issue. +* There are a lot of nice people waiting to talk to you on scala-internals, you might be surprised how valuable and pleasant you find the experience of talking to them. + +If all of this has not convinced you then, please, go ahead and work on contributions anyway. It *is* less important to post to scala-internals first for small, self contained bugs than it is for larger issues or features, and not having posted first will not be a reason for your PR to be rejected, it just might be a rougher review/merge process than if you had posted first. It's your choice. + diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 519c85a030..14eb55845c 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -72,7 +72,7 @@ component so that they show up in the correct issue filters. ### Required Reading -Please familiarize yourself with **all** of the following before contributing +Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. * [Forking the Repo](./hacker-guide.html#2_set_up) - follow the setup steps through @@ -86,7 +86,7 @@ new API documentation to save time, effort, mistakes and repetition. companions, browsing package object documentation, searching, token searches and so on. * Prior to commit, be sure to read - [A note about git commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). + [A note about git commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) and the [Scala Project & Developer Guidelines](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md). * Also read the Scala [Pull Request Policy](https://github.com/scala/scala/wiki/Pull-Request-Policy). Some of this document will clearly not apply (like the sections on providing tests, however see below for some special requirements for documentation). Do still read @@ -95,7 +95,7 @@ new API documentation to save time, effort, mistakes and repetition. cleanly. Remember that the title of the pull request will become the commit message when merged. **Also**, be sure to assign one or more reviewers to the PR, list of reviewers is at the bottom of this document, but the quick version is to add - `Review by @dickwall` **in the pull request comments**. + `Review by @heathermiller` or `Review by @dickwall` **in the pull request comments**. ### Extra Requirements for Scaladoc Documentation Commits diff --git a/contribute/tools.md b/contribute/tools.md new file mode 100644 index 0000000000..4378d6f568 --- /dev/null +++ b/contribute/tools.md @@ -0,0 +1,8 @@ +--- +layout: page +title: Tool Contributions +--- +## Under Construction + +If you would like to help complete this document, welcome, and please head over and read [Documentation Contributions](./documentation.html#the-scala-language-site), +and let us know on the [scala-internals](https://groups.google.com/forum/#!forum/scala-internals) forum (suggested post title: `[docs] Tool Contributions`) so that we can get you hooked up with the right people. \ No newline at end of file From 0083e203436a2f64c8d50029b93cda39bba5c125 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 10 Feb 2015 12:01:59 -0800 Subject: [PATCH 0061/1704] Alter when documentation/bug fix scala-internals postings are recommended. --- contribute/scala-internals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/scala-internals.md b/contribute/scala-internals.md index fa7faa9dc3..5bd97ed8a8 100644 --- a/contribute/scala-internals.md +++ b/contribute/scala-internals.md @@ -9,7 +9,7 @@ The [scala-internals mailing list](https://groups.google.com/d/forum/scala-inter ### Coordinating on scala-internals -Prior to commencing on contribution work for the Scala project, even for documentation and bugfixing, it is recommended (but not required) that you make a post on scala-internals announcing your intention. It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, one of whom will probably be reviewing your contribution at some point. +Prior to commencing on contribution work on larger changes to the Scala project, it is recommended (but not required) that you make a post on scala-internals announcing your intention. It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, one of whom will probably be reviewing your contribution at some point. For smaller bug fixes or documentation changes where the risk of effort duplication is minimal, you can skip this post. To help subscribers on the scala-internals list to sort through the postings, we request that the following topic labels are applied when you start a new post please: From d7c254b48255eda00420e38d1273e46e88213bc3 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 10 Feb 2015 13:50:21 -0800 Subject: [PATCH 0062/1704] Correct scala-internals link and remove missing resource links. --- contribute/guide.md | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index 809c6558d5..90f16082d6 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -54,7 +54,7 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu 1. [Select a bug to fix from JIRA](https://issues.scala-lang.org/issues/?filter=12111), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please [make sure it's not a duplicate](./bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). -2. Optional ([but recommended](./scala-internals#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with +2. Optional ([but recommended](./scala-internals.html#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with [these friendly people](./hacker-guide.html#connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](./hacker-guide.html#fork) and clone your fork (if you haven't already). 4. [Create a feature branch](./hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. @@ -78,19 +78,3 @@ on the [scala-internals](http://groups.google.com/group/scala-internals) mailing Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. -### Further Reading for Larger Changes - -The files below are recordings of code walk-through sessions by Martin Odersky about the Scala compiler internals. Some of the information is somewhat outdated, but the clips are still a good introduction to some parts of the compiler architecture. - - - [Scala Internals 2008-10-29 (Symbols 1)](http://www.scala-lang.org/sites/default/files/martin_ordersky_scala_internals_2008-10-29.avi) - - Handling of Symbols in the Scala compiler: some details on the symtab subdir, Symbols, Definitions, StdNames, Types (Lazy Types). - - - [Scala Internals 2008-11-05 (Symbols 2)](http://www.scala-lang.org/sites/default/files/martin_ordersky_scala_internals_2008-11-05.avi) - - Handling of Symbols part deux: more information on Symbols, Flags, Definitions. - - - [Scala Internals 2009-03-04 (Types)](http://www.scala-lang.org/sites/default/files/martin_ordersky_scala_internals_2009-03-04.avi) - - A detailed explanation about how types are represented and manipulated within the Scala compiler: data structures, manipulations of types, coding conventions (audio is not perfect, but intelligible). - From a4fb06f631262af3f87b6efd14d5078ac992c761 Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Mon, 16 Feb 2015 09:55:48 +0100 Subject: [PATCH 0063/1704] Add scala-fame data --- .../_posts/2015-02-01-scala-fame-2015-01.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md diff --git a/contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md b/contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md new file mode 100644 index 0000000000..4af6e3d778 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md @@ -0,0 +1,56 @@ +--- +layout: famearchive +title: Contributors of January 2015 +fame-year: 2015 +fame-month: 1 +fame-month-str: January +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 + commits: 10 + linesAdded: 222 + linesDeleted: 26 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 + commits: 4 + linesAdded: 819 + linesDeleted: 636 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 + commits: 4 + linesAdded: 470 + linesDeleted: 152 + rank: 1 + newContributor: false + - category: Community + authors: + - username: kanielc + gravatar: https://avatars1.githubusercontent.com/u/1334074?v=3&s=60 + commits: 2 + linesAdded: 58 + linesDeleted: 2 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 + commits: 2 + linesAdded: 35 + linesDeleted: 41 + rank: 1 + newContributor: false + - username: dickwall + gravatar: https://avatars2.githubusercontent.com/u/56453?v=3&s=60 + commits: 1 + linesAdded: 74 + linesDeleted: 0 + rank: 2 + newContributor: false +--- From db78065ef0defcd7b863409625974509c687ba3a Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Feb 2015 11:50:40 -0800 Subject: [PATCH 0064/1704] Re-org and simplify contribution section pages. * Removed hall of fame links (as the feature is being removed) * Temporarily disabled tools page link until we work out what to do for tools * Shuffled documentation contrib order to emphasize scaladoc over activator --- contribute/documentation.md | 16 ++++++++-------- contribute/guide.md | 2 +- contribute/index.md | 32 +++++++++++++------------------- 3 files changed, 22 insertions(+), 28 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index da20b9360d..cb2f7a46fb 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -6,9 +6,9 @@ title: Documentation Contributions There are several ways you can help out with the improvement of Scala documentation. These include: +* API Documentation in Scaladoc * Code examples and tutorials in activator templates. * The Scala Wiki -* API Documentation in Scaladoc * Guides, Overviews, Tutorials, Cheat Sheets and more on the docs.scala-lang.org site * Updating Documents on the Main Scala Language Site (this one) @@ -18,13 +18,6 @@ Please read this page, and the pages linked from this one, fully before contribu Thanks -### Examples/Tutorials in Activator Templates - -[Typesafe Activator](https://typesafe.com/community/core-tools/activator-and-sbt) -is a tool based on SBT, with a UI mode that is ideal for code based tutorials, overviews and walk-throughs. To contribute an example in activator, you can fork an existing template, edit it, add a tutorial, upload it to github and then submit the github project into the template repository. It's the fastest way to produce a working code example with tutorial. - -Please see [Contributing an Activator Template](https://typesafe.com/activator/template/contribute) for more details. - ### API Documentation (Scaladoc) The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: @@ -36,6 +29,13 @@ Please *follow the issue submission process closely* to help prevent duplicate i [submit new Scaladoc](./scala-standard-library-api-documentation.html) without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. +### Examples/Tutorials in Activator Templates + +[Typesafe Activator](https://typesafe.com/community/core-tools/activator-and-sbt) +is a tool based on SBT, with a UI mode that is ideal for code based tutorials, overviews and walk-throughs. To contribute an example in activator, you can fork an existing template, edit it, add a tutorial, upload it to github and then submit the github project into the template repository. It's the fastest way to produce a working code example with tutorial. + +Please see [Contributing an Activator Template](https://typesafe.com/activator/template/contribute) for more details. + ### The Scala Wiki The [Scala wiki](https://wiki.scala-lang.org/) could be a useful resource, but tends to get out of date quickly. It is perhaps best viewed as a place for information to temporarily live while it is constructed and refined, but with an aim to putting the material into the [docs.scala-lang.org](http://docs.scala-lang.org) site eventually (see the next section). Nonetheless, it is a fast way to add some public documentation. diff --git a/contribute/guide.md b/contribute/guide.md index 90f16082d6..bf323c39e5 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -65,7 +65,7 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) 9. [Submit a pull request](./hacker-guide.html#submit) following the [Scala project pull-request guidelines](http://docs.scala-lang.org/scala/pull-request-policy.html). 10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](./hacker-guide.html#review). -11. [Bask in the glow of a job well done](./scala-fame.html). +11. Celebrate! Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide](./hacker-guide.html) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). diff --git a/contribute/index.md b/contribute/index.md index 433c579620..405a675ea6 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -13,6 +13,11 @@ everyone make things better? That depends on what you want to contribute. Below are some getting started resources for different contribution domains. Please read all of the documentation and follow all the links from the topic pages below before attempting to contribute, as many of the questions you have will already be answered. +### Reporting bugs + +See our [bug reporting guide](./bug-reporting-guide.html) to learn +how to efficiently report a bug. + ### Contribute Coordination of contribution efforts takes place on the @@ -22,8 +27,7 @@ Coordination of contribution efforts takes place on the
@@ -35,33 +39,23 @@ Coordination of contribution efforts takes place on the
-

Tools

-

Enhance the Scala tooling ecosystem with features for build tools, IDE plug-ins and other related tools.

-
-

Core Libraries

Update and expand the capabilities of the core (and associated) Scala libraries.

-
- -
-

Compiler/Language

+

Compiler/Language

Larger language features and compiler enhancements including language specification and SIPs.

-
-

Contributor Hall of Fame

-

Get your props, and find your place in the leader-board.

+ +
- -### Reporting bugs - -See our [bug reporting guide](./bug-reporting-guide.html) to learn -how to efficiently report a bug. - ### Community Tickets The following links provide starting points for From 090c9de45ab7a8c810469853699292aafe0ca865 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Feb 2015 13:19:18 -0800 Subject: [PATCH 0065/1704] Remove wiki info, use scala-lang.org. --- contribute/documentation.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index cb2f7a46fb..81ebba7b3f 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -8,9 +8,8 @@ There are several ways you can help out with the improvement of Scala documentat * API Documentation in Scaladoc * Code examples and tutorials in activator templates. -* The Scala Wiki * Guides, Overviews, Tutorials, Cheat Sheets and more on the docs.scala-lang.org site -* Updating Documents on the Main Scala Language Site (this one) +* Updating scala-lang.org Please read this page, and the pages linked from this one, fully before contributing documentation. Many of the questions you have will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [scala-internals Google group](https://groups.google.com/forum/#!forum/scala-internals) and then, please, submit a pull request with updated documentation reflecting that answer. @@ -36,12 +35,6 @@ is a tool based on SBT, with a UI mode that is ideal for code based tutorials, o Please see [Contributing an Activator Template](https://typesafe.com/activator/template/contribute) for more details. -### The Scala Wiki - -The [Scala wiki](https://wiki.scala-lang.org/) could be a useful resource, but tends to get out of date quickly. It is perhaps best viewed as a place for information to temporarily live while it is constructed and refined, but with an aim to putting the material into the [docs.scala-lang.org](http://docs.scala-lang.org) site eventually (see the next section). Nonetheless, it is a fast way to add some public documentation. - -The wiki is self documenting, so make sure to take a look at the [home page](https://wiki.scala-lang.org/) to get started. Please consider contributions to [docs.scala-lang.org](docs.scala-lang.org) for more enduring documentation, even though it is more work to get through the review process for the main doc site. - ### The Main Scala Documentation Site [docs.scala-lang.org](https://wiki.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a github project that you can fork and submit pull requests from. It includes: @@ -59,7 +52,7 @@ and more Please read [contributing to the docs.scala-lang.org site](http://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses the [Jekyll](http://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. -### The Scala Language Site +### Updating scala-lang.org Additional high-level documentation (including documentation on contributing to Scala and related projects) is provided on the main From e172523885936286894c661fc450ff3378135dd5 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Wed, 18 Feb 2015 14:46:54 -0800 Subject: [PATCH 0066/1704] Add IDEs and Build Tools page * IDEs and Build Tools page consists of links out to important scala projects * Restored link to above page, and renamed to IDEs and Build Tools * Added a missing link into the documentation.md page --- contribute/documentation.md | 2 +- contribute/index.md | 12 ++-- contribute/tools.md | 123 ++++++++++++++++++++++++++++++++++-- 3 files changed, 126 insertions(+), 11 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index 81ebba7b3f..c4704eee0b 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -60,5 +60,5 @@ to Scala and related projects) is provided on the main [scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the scala-lang.org github README file before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/dickwall/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/contribute/index.md b/contribute/index.md index 405a675ea6..2d98744a6f 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -43,17 +43,17 @@ Coordination of contribution efforts takes place on the

Update and expand the capabilities of the core (and associated) Scala libraries.

-

Compiler/Language

-

Larger language features and compiler enhancements including language specification and SIPs.

+

IDE and Build Tools

+

Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects.

- ### Community Tickets diff --git a/contribute/tools.md b/contribute/tools.md index 4378d6f568..53b097a696 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -1,8 +1,123 @@ --- layout: page -title: Tool Contributions +title: IDE and Build Tool Contributions --- -## Under Construction +## Contributing to IDE and Build Tools -If you would like to help complete this document, welcome, and please head over and read [Documentation Contributions](./documentation.html#the-scala-language-site), -and let us know on the [scala-internals](https://groups.google.com/forum/#!forum/scala-internals) forum (suggested post title: `[docs] Tool Contributions`) so that we can get you hooked up with the right people. \ No newline at end of file +The links below are to a number of Scala build and IDE related projects that are important in the larger Scala space, and which welcome contributions. + +Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](./hacker-guide.html) and [Bug-fixing](guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. + +Typically, issues for these projects will be reported and kept in the github project issue tracker for that project rather than in the Scala project JIRA. +Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. + +### Broken Links? + +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating-scala-langorg) to fix it. + +### Projects + +
+
+
+

Scala IDE

+

The Eclipse Scala IDE project.

+

Home | +Issues | +ReadMe | +Contributing

+
+
+ +

sbt

+

Interactive build tool.

+

Home | +Issues | +ReadMe | +Contributing

+
+
+ +
+
+ +

Scaladoc Tool

+

(Contribute through scala/scala)

+

Home | +Issues | +ReadMe | +Contributing

+
+
+

DBuild

+

Multi-project build tool.

+

Home | +Issues | +ReadMe | +Contributing

+
+
+ +
+
+

Ensime

+

Scala Support for Text Editors

+

Home | +Issues | +ReadMe | +Contributing

+
+
+ +

Abide

+

Lint tooling for Scala

+

Home | +Issues | +ReadMe | +Contributing

+
+
+ +
+
+ +

Partest

+

Scala Compiler/Library Testing

+

Home | +Issues | +ReadMe

+
+
+

Scoverage

+

Scala code coverage tool

+

Home | +Issues | +ReadMe | +Contributing

+
+
+
+ +### Projects in Particular Need + +The following projects are important to the Scala community but are particularly in need of contributors to continue their development. + +
+
+
+ +

Scalap

+

Scala Decoder (part of scala/scala)

+Issues | +ReadMe | +Contributing

+
+
+

Scalariform

+

Scala code formatter

+

Home | +Issues | +ReadMe

+
+
+
From 391caec69a325cdac6c1531a717bc21cc001605d Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 10 Mar 2015 10:16:07 -0700 Subject: [PATCH 0067/1704] Respond to review comments - correct link, reorder projects * Re-order the projects in approximate order of importance * Corrected scala docs link to correct github project --- contribute/documentation.md | 2 +- contribute/tools.md | 60 ++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index c4704eee0b..c0de56d9b1 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -60,5 +60,5 @@ to Scala and related projects) is provided on the main [scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/dickwall/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/contribute/tools.md b/contribute/tools.md index 53b097a696..dab8244d0f 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -11,6 +11,10 @@ Since these tools are in separate projects, they may (and likely will) have thei Typically, issues for these projects will be reported and kept in the github project issue tracker for that project rather than in the Scala project JIRA. Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. +There are some projects in this section that are in +[particular need](#projects-in-particular-need) so please check those out +if you would like to help revive them. + ### Broken Links? Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating-scala-langorg) to fix it. @@ -20,14 +24,6 @@ Stuff changes. Found a broken link or something that needs updating on this page
-

Scala IDE

-

The Eclipse Scala IDE project.

-

Home | -Issues | -ReadMe | -Contributing

-
-

sbt

Interactive build tool.

@@ -36,9 +32,6 @@ Stuff changes. Found a broken link or something that needs updating on this page ReadMe | Contributing

-
- -

Scaladoc Tool

@@ -48,6 +41,17 @@ Stuff changes. Found a broken link or something that needs updating on this page ReadMe | Contributing

+
+ +
+
+

Scala IDE

+

The Eclipse Scala IDE project.

+

Home | +Issues | +ReadMe | +Contributing

+

DBuild

Multi-project build tool.

@@ -60,6 +64,14 @@ Stuff changes. Found a broken link or something that needs updating on this page
+ +

Partest

+

Scala Compiler/Library Testing

+

Home | +Issues | +ReadMe

+
+

Ensime

Scala Support for Text Editors

Home | @@ -67,27 +79,10 @@ Stuff changes. Found a broken link or something that needs updating on this page ReadMe | Contributing

-
- -

Abide

-

Lint tooling for Scala

-

Home | -Issues | -ReadMe | -Contributing

-
- -

Partest

-

Scala Compiler/Library Testing

-

Home | -Issues | -ReadMe

-
-

Scoverage

Scala code coverage tool

Home | @@ -95,6 +90,15 @@ Stuff changes. Found a broken link or something that needs updating on this page ReadMe | Contributing

+
+ +

Abide

+

Lint tooling for Scala

+

Home | +Issues | +ReadMe | +Contributing

+
From 78759cd80f9a25baef7d9b437b829a8ac66261c4 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Wed, 11 Mar 2015 09:44:19 -0700 Subject: [PATCH 0068/1704] Tweak the all community bugs link * No longer sort by component - sort by votes instead. --- contribute/guide.md | 2 +- contribute/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index bf323c39e5..8c07448ba7 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -52,7 +52,7 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](https://issues.scala-lang.org/issues/?filter=12111), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please +1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please [make sure it's not a duplicate](./bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). 2. Optional ([but recommended](./scala-internals.html#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with [these friendly people](./hacker-guide.html#connect) - it's one of the perks of contributing. diff --git a/contribute/index.md b/contribute/index.md index 2d98744a6f..0a37b87a73 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -90,7 +90,7 @@ various contributor activities:

All bugs marked with the label community.

-

All Issues

+

All Issues

Bugs + Enhancements marked with the label community.

From 84da163c3d36575459983b9d2d59fba25dfbea10 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Mar 2015 13:28:27 -0700 Subject: [PATCH 0069/1704] Add fix me links and core lib page. * Add a fix this page link under contents list * Create a simple landing page for core libs - direct to docs.scala.lang --- contribute/corelibs.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index 1429ec87ff..6e1abbb0d7 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -2,7 +2,20 @@ layout: page title: Core Library Contributions --- -## Under Construction +## Core Library Contributions -If you would like to help complete this document, welcome, and please head over and read [Documentation Contributions](./documentation.html#the-scala-language-site), -and let us know on the [scala-internals](https://groups.google.com/forum/#!forum/scala-internals) forum (suggested post title: `[docs] Core Library Contributions`) so that we can get you hooked up with the right people. \ No newline at end of file +There are several options for contributing to Scala's core libraries. You can: + +* Help with [Documentation](./scala-standard-library-api-documentation.html). +* [Report Bugs or Issues](./bug-reporting-guide.html) against the core libraries. +* [Fix Bugs or Issues](./guide.html) against the + [reported library bugs/issues](https://issues.scala-lang.org/issues/?filter=13001). +* Contribute significant new functionality or a new API by submitting + a Scala Library Improvement Process (SLIP) Document. + +### Submitting a SLIP + +For significant new functionality or a whole new API to be considered for +inclusion in the core Scala distribution, you will be asked to submit a SLIP (Scala Library Improvement Process) document. + +Please see [instructions for submitting a new SLIP](http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the [pre-requisites](http://docs.scala-lang.org/sips/slip-submission.html) before submitting a SLIP. From 66c5272ca07370c7c6448a30c24da2c66455dcd0 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Mar 2015 13:54:39 -0700 Subject: [PATCH 0070/1704] Add a missing paragraph opener on tools.md --- contribute/tools.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contribute/tools.md b/contribute/tools.md index dab8244d0f..023c638082 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -112,7 +112,7 @@ The following projects are important to the Scala community but are particularly

Scalap

Scala Decoder (part of scala/scala)

-Issues | +

Issues | ReadMe | Contributing

@@ -125,3 +125,5 @@ The following projects are important to the Scala community but are particularly + + \ No newline at end of file From cde252c3e88bdb803f48c4bf30e33c8ffe6da1de Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Mar 2015 14:50:34 -0700 Subject: [PATCH 0071/1704] Fix intra-page links for main markdown engine. * Local jekyll uses - but main site uses _ for intra-page anchors --- contribute/guide.md | 8 ++++---- contribute/index.md | 2 +- contribute/tools.md | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index 8c07448ba7..04fe50ae5b 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -17,7 +17,7 @@ title: Contributing guide
-

Community issues

+

Community issues

Get cracking on some easy to approach issues.

@@ -52,9 +52,9 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please -[make sure it's not a duplicate](./bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). -2. Optional ([but recommended](./scala-internals.html#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with +1. [Select a bug to fix from JIRA](/contribute/index.html#community_tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please +[make sure it's not a duplicate](./bug-reporting-guide.html#reporting_confirmed_bugs_is_a_sin)). +2. Optional ([but recommended](./scala-internals.html#why_its_a_good_idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with [these friendly people](./hacker-guide.html#connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](./hacker-guide.html#fork) and clone your fork (if you haven't already). 4. [Create a feature branch](./hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. diff --git a/contribute/index.md b/contribute/index.md index 0a37b87a73..a272a8b98d 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -50,7 +50,7 @@ Coordination of contribution efforts takes place on the
-

Compiler/Language

+

Compiler/Language

Larger language features and compiler enhancements including language specification and SIPs.

diff --git a/contribute/tools.md b/contribute/tools.md index 023c638082..92207f4da2 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -12,12 +12,12 @@ Typically, issues for these projects will be reported and kept in the github pro Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. There are some projects in this section that are in -[particular need](#projects-in-particular-need) so please check those out +[particular need](#projects_in_particular_need) so please check those out if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating-scala-langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating_scala_langorg) to fix it. ### Projects From 70673bb169853d0caf796d63e4aa3030238f1ba1 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Mar 2015 15:01:50 -0700 Subject: [PATCH 0072/1704] Remove extra _ in fix-page link. --- contribute/tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/tools.md b/contribute/tools.md index 92207f4da2..1757ae1005 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -17,7 +17,7 @@ if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating_scala_langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating_scalalangorg) to fix it. ### Projects From fa3402a41320cbfb6c0ba3c3f4970e8633e5b596 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 17 Mar 2015 15:20:28 -0700 Subject: [PATCH 0073/1704] Fix documentation page intra-link. --- contribute/documentation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index c0de56d9b1..d7597d8884 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -21,7 +21,7 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](./scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation](./scala-standard-library-api-documentation.html#contribute_api_documentation_bug_reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. * [Claim Scaladoc Issues and Provide Documentation](./scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just From fc02b4d49bcc4d85f59fa0f1d1df913b2e102521 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Mon, 23 Mar 2015 15:22:16 -0700 Subject: [PATCH 0074/1704] Add contribute PR review page to /contribute * Pull request reviewing was overlooked in recent contribute changes --- contribute/codereviews.md | 60 +++++++++++++++++++++++++++++++++++++++ contribute/index.md | 12 ++++++-- 2 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 contribute/codereviews.md diff --git a/contribute/codereviews.md b/contribute/codereviews.md new file mode 100644 index 0000000000..87ab392f1c --- /dev/null +++ b/contribute/codereviews.md @@ -0,0 +1,60 @@ +--- +layout: page +title: Code Review Contributions +--- +## Code Review Contributions + +In addition to [bug fixing](./guide.html), you can help us review +[waiting pull requests](#pull_requests_awaiting_comment). This is also a good (and recommended) way to get to know the feel of +the bug-fixing and submissions process before jumping in (lurk for a while, +reading pull requests from others and maybe commenting on them). + +### Etiquette + +[Code of Conduct Reminder](http://docs.scala-lang.org/conduct.html) + +There are many coding approaches and styles. Asserting that yours is the only correct one is not likely to lead to a smooth interaction with others. Code review is where programmers (often volunteers) surrender up their efforts for public scrutiny. + +Code reviewing is a great way to both learn and mentor, and *all* comments made during pull request reviews should bear those two aims in mind. + +Assuming the pull request has been made following the guidelines laid out in the rest of the contributor documentation (e.g. for Scala bug fixes, the PR is against an open issue, and has adhered to the guidelines for code changes and submitting the PR), then the comments for the pull request are *not* the correct place to discuss on whether this PR is even needed or other broad, negative assertions. + +The comments are for looking for potential problems in the code, suggesting improvements, looking for items that might have been missed by the submitter and so on. If you feel it necessary to discuss whether the issue should even be addressed, that should be carried out ([in a professional manner](http://docs.scala-lang.org/conduct.html)) on the comments for that Issue rather than the PR. General discussions should likewise be directed to forums like [scala-debate](https://groups.google.com/d/forum/scala-debate), [scala-user](https://groups.google.com/d/forum/scala-user), [scala-language](https://groups.google.com/d/forum/scala-language) or [scala-internals](https://groups.google.com/d/forum/scala-internals). + +Conversely if you are receiving a review, consider that the advice is being given to make you, and Scala, better rather than as a negative critique. Assume the best, rather than the worst. + +### Review Guidelines + +* Keep comments on-topic, concise and precise. +* Attach comments to particular lines or regions they pertain to whenever possible. +* Short code examples are often more descriptive than prose. +* If (and only if) you have thoroughly reviewed the PR and thought through all angles, and you want to accept it, LGTM (Looks Good To Me) is the preferred acceptance response. If there are already LGTMs on the PR, consider whether you are adding anything or just being "me too". +* Above all, remember that the people you are reviewing might be reviewing your PRs one day too :-). + +## Pull Requests Awaiting Comment + +
+
+
+

scala/scala

+

Scala bug fixes and changes in the language, core libs and included tools.

+
+
+

scala/github.scala.com

+

Scala documentation site.

+
+
+ +
+
+

scala/scala-lang

+

The Scala language web site.

+
+
+

All Scala Github Projects

+

For other PRs, follow the scala project from here.

+
+
+
+ +Also note that the [Tools contributions](./tools.html) page has more projects that will generate pull requests. \ No newline at end of file diff --git a/contribute/index.md b/contribute/index.md index a272a8b98d..fd94af5de2 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -39,16 +39,22 @@ Coordination of contribution efforts takes place on the
+

Code Reviews

+

Review pull requests against scala/scala, +scala/scala-lang, +scala/scala.github.com and others.

+
+

Core Libraries

Update and expand the capabilities of the core (and associated) Scala libraries.

+
+ +

IDE and Build Tools

Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects.

-
- -

Compiler/Language

Larger language features and compiler enhancements including language specification and SIPs.

From 77cd3f5f78cb9ed89311ff2f5a811b6e25cf52c1 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 24 Mar 2015 14:07:31 -0700 Subject: [PATCH 0075/1704] Incorporate comments, reduce wordiness * Cut etiquette section * Include Code of Conduct link in Review Guidelines section * Change wording aroung LGTM and additional reviews --- contribute/codereviews.md | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 87ab392f1c..949cb11300 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -5,31 +5,23 @@ title: Code Review Contributions ## Code Review Contributions In addition to [bug fixing](./guide.html), you can help us review -[waiting pull requests](#pull_requests_awaiting_comment). This is also a good (and recommended) way to get to know the feel of -the bug-fixing and submissions process before jumping in (lurk for a while, -reading pull requests from others and maybe commenting on them). +[waiting pull requests](#pull_requests_awaiting_comment). +This is also a good (and recommended) way to get to know the feel of +the bug-fixing and submissions process before jumping in with your +own pull requests. -### Etiquette - -[Code of Conduct Reminder](http://docs.scala-lang.org/conduct.html) - -There are many coding approaches and styles. Asserting that yours is the only correct one is not likely to lead to a smooth interaction with others. Code review is where programmers (often volunteers) surrender up their efforts for public scrutiny. - -Code reviewing is a great way to both learn and mentor, and *all* comments made during pull request reviews should bear those two aims in mind. - -Assuming the pull request has been made following the guidelines laid out in the rest of the contributor documentation (e.g. for Scala bug fixes, the PR is against an open issue, and has adhered to the guidelines for code changes and submitting the PR), then the comments for the pull request are *not* the correct place to discuss on whether this PR is even needed or other broad, negative assertions. - -The comments are for looking for potential problems in the code, suggesting improvements, looking for items that might have been missed by the submitter and so on. If you feel it necessary to discuss whether the issue should even be addressed, that should be carried out ([in a professional manner](http://docs.scala-lang.org/conduct.html)) on the comments for that Issue rather than the PR. General discussions should likewise be directed to forums like [scala-debate](https://groups.google.com/d/forum/scala-debate), [scala-user](https://groups.google.com/d/forum/scala-user), [scala-language](https://groups.google.com/d/forum/scala-language) or [scala-internals](https://groups.google.com/d/forum/scala-internals). - -Conversely if you are receiving a review, consider that the advice is being given to make you, and Scala, better rather than as a negative critique. Assume the best, rather than the worst. ### Review Guidelines +[Code of Conduct Reminder](http://docs.scala-lang.org/conduct.html) + * Keep comments on-topic, concise and precise. * Attach comments to particular lines or regions they pertain to whenever possible. * Short code examples are often more descriptive than prose. -* If (and only if) you have thoroughly reviewed the PR and thought through all angles, and you want to accept it, LGTM (Looks Good To Me) is the preferred acceptance response. If there are already LGTMs on the PR, consider whether you are adding anything or just being "me too". -* Above all, remember that the people you are reviewing might be reviewing your PRs one day too :-). +* If you have thoroughly reviewed the PR and thought through all angles, LGTM (Looks Good To Me) is the preferred acceptance response. +* Additional reviews should try to offer additional insights: "I also thought about it from this angle and it still looks good.." +* Above all, remember that the people you are reviewing might be reviewing your PRs one day too. +* If you are receiving the review, consider that the advice is being given to make you, and Scala, better rather than as a negative critique. Assume the best, rather than the worst. ## Pull Requests Awaiting Comment @@ -57,4 +49,4 @@ Conversely if you are receiving a review, consider that the advice is being give
-Also note that the [Tools contributions](./tools.html) page has more projects that will generate pull requests. \ No newline at end of file +Also note that the [Tools contributions](./tools.html) page has more projects that will generate pull requests. From 3c9d4cd4b8587642f5d0b59f7a4ae7100d799904 Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Tue, 14 Apr 2015 11:43:49 +0200 Subject: [PATCH 0076/1704] Add scala-fame data --- .../_posts/2015-03-01-scala-fame-2015-02.md | 70 ++++++++++++++ .../_posts/2015-04-01-scala-fame-2015-03.md | 91 +++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md create mode 100644 contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md diff --git a/contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md b/contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md new file mode 100644 index 0000000000..3fe846623b --- /dev/null +++ b/contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md @@ -0,0 +1,70 @@ +--- +layout: famearchive +title: Contributors of February 2015 +fame-year: 2015 +fame-month: 2 +fame-month-str: February +fame-categories: + - category: Typesafe + authors: + - username: adriaanm + gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 + commits: 15 + linesAdded: 1199 + linesDeleted: 588 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 + commits: 13 + linesAdded: 557 + linesDeleted: 64 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 + commits: 10 + linesAdded: 1629 + linesDeleted: 276 + rank: 1 + newContributor: false + - username: xeno-by + gravatar: https://avatars0.githubusercontent.com/u/609152?v=3&s=60 + commits: 2 + linesAdded: 108 + linesDeleted: 15 + rank: 2 + newContributor: false + - username: axel22 + gravatar: https://avatars0.githubusercontent.com/u/151774?v=3&s=60 + commits: 1 + linesAdded: 61 + linesDeleted: 0 + rank: 3 + newContributor: false + - category: Community + authors: + - username: Ichoran + gravatar: https://avatars2.githubusercontent.com/u/2298644?v=3&s=60 + commits: 3 + linesAdded: 62 + linesDeleted: 25 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 + commits: 2 + linesAdded: 121 + linesDeleted: 30 + rank: 2 + newContributor: false + - username: milessabin + gravatar: https://avatars1.githubusercontent.com/u/131183?v=3&s=60 + commits: 1 + linesAdded: 123 + linesDeleted: 37 + rank: 3 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md b/contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md new file mode 100644 index 0000000000..62e7ea2f58 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md @@ -0,0 +1,91 @@ +--- +layout: famearchive +title: Contributors of March 2015 +fame-year: 2015 +fame-month: 3 +fame-month-str: March +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 + commits: 9 + linesAdded: 553 + linesDeleted: 27 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 + commits: 6 + linesAdded: 12 + linesDeleted: 72 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 + commits: 18 + linesAdded: 2857 + linesDeleted: 916 + rank: 1 + newContributor: false + - username: xeno-by + gravatar: https://avatars0.githubusercontent.com/u/609152?v=3&s=60 + commits: 1 + linesAdded: 7 + linesDeleted: 5 + rank: 2 + newContributor: false + - category: Community + authors: + - username: gourlaysama + gravatar: https://avatars3.githubusercontent.com/u/733438?v=3&s=60 + commits: 4 + linesAdded: 132 + linesDeleted: 22 + rank: 1 + newContributor: false + - username: gbasler + gravatar: https://avatars0.githubusercontent.com/u/273035?v=3&s=60 + commits: 3 + linesAdded: 1986 + linesDeleted: 111 + rank: 2 + newContributor: false + - username: kzys + gravatar: https://avatars3.githubusercontent.com/u/19111?v=3&s=60 + commits: 2 + linesAdded: 37 + linesDeleted: 18 + rank: 3 + newContributor: false + - username: som-snytt + gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 + commits: 2 + linesAdded: 91 + linesDeleted: 7 + rank: 3 + newContributor: false + - username: sschaef + gravatar: https://avatars3.githubusercontent.com/u/488530?v=3&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 4 + newContributor: false + - username: khernyo + gravatar: https://avatars2.githubusercontent.com/u/447532?v=3&s=60 + commits: 1 + linesAdded: 27 + linesDeleted: 8 + rank: 4 + newContributor: false + - username: soc + gravatar: https://avatars1.githubusercontent.com/u/42493?v=3&s=60 + commits: 1 + linesAdded: 7 + linesDeleted: 7 + rank: 4 + newContributor: false +--- From 4bada26848285509763810ee5f2895123ced406c Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Mon, 20 Apr 2015 16:41:40 -0700 Subject: [PATCH 0077/1704] Fix transposition of github.scala.com. --- contribute/codereviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 949cb11300..8f86815eec 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -32,7 +32,7 @@ own pull requests.

Scala bug fixes and changes in the language, core libs and included tools.

-

scala/github.scala.com

+

scala/scala.github.com

Scala documentation site.

From 57b4392ae555e8d21edbd82e566813d30d38a6d2 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 13 Jul 2015 18:45:33 -0400 Subject: [PATCH 0078/1704] phase out old GitHub wiki pages https://github.com/scala/scala/wiki is going away --- contribute/hacker-guide.md | 2 +- contribute/scala-standard-library-api-documentation.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index ecdbd2fc27..3f84feee81 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -378,7 +378,7 @@ Let's go into each of these points in more detail. The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. There are two things you should know here: -1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. +1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policies](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md) for more information about the desired style of your commits. 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on GitHub. diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 14eb55845c..bc57a163df 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -87,8 +87,7 @@ new API documentation to save time, effort, mistakes and repetition. and so on. * Prior to commit, be sure to read [A note about git commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) and the [Scala Project & Developer Guidelines](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md). -* Also read the Scala [Pull Request Policy](https://github.com/scala/scala/wiki/Pull-Request-Policy). - Some of this document will clearly not apply (like the sections on providing tests, + Some of this latter document will clearly not apply (like the sections on providing tests, however see below for some special requirements for documentation). Do still read the whole document though, and pay close attention to the title and commit message formats, noting *present tense*, *length limits* and that it must merge From 6a53d0605cb30cff874843aac7ce9a82855c783a Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Sat, 18 Jul 2015 14:03:43 -0400 Subject: [PATCH 0079/1704] hacker's guide: replace out-of-date reviewer list with link --- contribute/hacker-guide.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 3f84feee81..e8aa8f0db4 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -30,11 +30,9 @@ Typically bug fixes and new features start out as an idea or an experiment poste about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. -This is the list of language features/libraries along with their maintainer's full names and GitHub usernames: +A list of language features/libraries along with their maintainer's full names and GitHub usernames is [in the Scala repo README](https://github.com/scala/scala#get-in-touch). -{% include maintainers.html %} - -Since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. +In our running example, since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user) about our issue. From 23f62743fffe21945f8c6cb454b2925b59fc960c Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 30 Sep 2015 13:18:35 +1000 Subject: [PATCH 0080/1704] SI-9495 Add note about configuring Ant for HTTP proxies --- contribute/hacker-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index e8aa8f0db4..3a01b6a676 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -99,7 +99,7 @@ If you are new to Git and branching, read the [Branching Chapter](http://git-scm The next step after cloning your fork is setting up your machine to build Scala. * It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). -* The build tool is `ant`. +* The build tool is `ant`. If you are behind a HTTP proxy, include [`ANT_ARGS=-autoproxy`]( https://ant.apache.org/manual/proxy.html) in your environment. * The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. * The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. * Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. From 4d8f053757a0feee1ac3d1b8e7bcb0f174b30203 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 30 Sep 2015 08:53:16 -0400 Subject: [PATCH 0081/1704] fix slightly malformed Markdown --- contribute/hacker-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 3a01b6a676..54e62c1a0e 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -99,7 +99,7 @@ If you are new to Git and branching, read the [Branching Chapter](http://git-scm The next step after cloning your fork is setting up your machine to build Scala. * It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). -* The build tool is `ant`. If you are behind a HTTP proxy, include [`ANT_ARGS=-autoproxy`]( https://ant.apache.org/manual/proxy.html) in your environment. +* The build tool is `ant`. If you are behind a HTTP proxy, include [`ANT_ARGS=-autoproxy`](https://ant.apache.org/manual/proxy.html) in your environment. * The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. * The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. * Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. From 50b14af581b26cce03f972a2d00a384d2f81ab08 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 6 Oct 2015 18:35:13 -0400 Subject: [PATCH 0082/1704] SI-9501 add prominent links to relevant docs in main Scala repo the text of the guide already links to the same documents at appropriate places in the narrative, but I also think it's worth having the same links right up front --- contribute/hacker-guide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 54e62c1a0e..fb79d8166d 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -8,6 +8,8 @@ This guide is intended to help you get from an idea of fixing a bug or implement This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. +Other good starting points for first-time contributors include the [Scala README](https://github.com/scala/scala#get-in-touch) and [contributor's guidelines](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md). + ## The Running Example Let's say that you particularly enjoy the new string interpolation language feature introduced in Scala 2.10.0, and you use it quite heavily. From 0feb67ace760707b19b2c91a5f3afea1a9045ea7 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 6 Nov 2015 15:30:38 -0500 Subject: [PATCH 0083/1704] fix typo --- contribute/scala-fame.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index 81bb76ee3a..f30784c13f 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -1,6 +1,6 @@ --- layout: page-full-width -title: Scala Contribuitor Hall of Fame +title: Scala Contributor Hall of Fame --- A big thank you to everyone who contributed to: From c80d07050db560e6aafadc659f9ca4d0b42ef3d2 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 6 Nov 2015 16:01:22 -0500 Subject: [PATCH 0084/1704] October 2015 hall of fame --- .../_posts/2015-11-01-scala-fame-2015-10.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md diff --git a/contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md b/contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md new file mode 100644 index 0000000000..41698296db --- /dev/null +++ b/contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md @@ -0,0 +1,42 @@ +--- +layout: famearchive +title: Contributors of October 2015 +fame-year: 2015 +fame-month: 10 +fame-month-str: October +fame-categories: + - category: Typesafe + authors: + - username: SethTisue + gravatar: https://avatars.githubusercontent.com/u/161079?v=3 + commits: 9 + linesAdded: 80 + linesDeleted: 55 + rank: 1 + newContributor: false + - category: EPFL + authors: + - username: sjrd + gravatar: https://avatars.githubusercontent.com/u/535934?v=3 + commits: 1 + linesAdded: 1 + linesDeleted: 4 + rank: 1 + newContributor: false + - category: Community + authors: + - username: performantdata + gravatar: https://avatars.githubusercontent.com/u/6363453?v=3 + commits: 6 + linesAdded: 97 + linesDeleted: 50 + rank: 1 + newContributor: true + - username: janekdb + gravatar: https://avatars.githubusercontent.com/u/1123855?v=3 + commits: 1 + linesAdded: 86 + linesDeleted: 71 + rank: 2 + newContributor: false +--- From 761af814fe12baff772dcf47cb03c7943105d65d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 6 Nov 2015 16:14:14 -0500 Subject: [PATCH 0085/1704] tweak Hall of Fame page * clarify what the stats show * link to the GitHub Pulse page, which is actually a lot better --- contribute/scala-fame.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index f30784c13f..ffaf0980d7 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -3,10 +3,17 @@ layout: page-full-width title: Scala Contributor Hall of Fame --- -A big thank you to everyone who contributed to: +A big thank you to everyone who has contributed over the years to: - [the Scala library and compiler](https://github.com/scala/scala/contributors) - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) +What follows are the commit totals, to the 2.11.x branch of the scala/scala repo only, +for last month. (For a commit to be counted, it must have been both committed and merged +in the same month.) + +For more a detailed view of recent activity, see the repo's +[GitHub Pulse page](https://github.com/scala/scala/pulse/monthly). + {% for data in site.categories.scala-fame-data limit:1 %} {% assign famedata = data %} {% include render-scala-fame.html %} From 7a039ae25b191ce5733491062cf2f37d27192a9f Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 10 Nov 2015 15:16:42 -0500 Subject: [PATCH 0086/1704] tiny fix --- contribute/scala-fame.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index ffaf0980d7..0352e6e7c7 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -11,7 +11,7 @@ What follows are the commit totals, to the 2.11.x branch of the scala/scala repo for last month. (For a commit to be counted, it must have been both committed and merged in the same month.) -For more a detailed view of recent activity, see the repo's +For a more detailed view of recent activity, see the repo's [GitHub Pulse page](https://github.com/scala/scala/pulse/monthly). {% for data in site.categories.scala-fame-data limit:1 %} From 749a690e43b43d9ff0aac267647eab842cd55045 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 4 Dec 2015 12:46:47 -0500 Subject: [PATCH 0087/1704] hall of fame: 2.12.x is default branch now --- contribute/scala-fame.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index 0352e6e7c7..2be9e7d69d 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -7,7 +7,7 @@ A big thank you to everyone who has contributed over the years to: - [the Scala library and compiler](https://github.com/scala/scala/contributors) - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) -What follows are the commit totals, to the 2.11.x branch of the scala/scala repo only, +What follows are the commit totals, to the 2.12.x branch of the scala/scala repo only, for last month. (For a commit to be counted, it must have been both committed and merged in the same month.) From f0fb46ca9be30fc365b875d5ab2c9f171a55041b Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 4 Dec 2015 12:46:53 -0500 Subject: [PATCH 0088/1704] November 2015 contributors hall of fame --- .../_posts/2015-12-01-scala-fame-2015-11.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md diff --git a/contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md b/contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md new file mode 100644 index 0000000000..8f9b7ff3b1 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md @@ -0,0 +1,63 @@ +--- +layout: famearchive +title: Contributors of November 2015 +fame-year: 2015 +fame-month: 11 +fame-month-str: November +fame-categories: + - category: Typesafe + authors: + - username: szeiger + gravatar: https://avatars.githubusercontent.com/u/54262?v=3 + commits: 5 + linesAdded: 427 + linesDeleted: 116 + rank: 1 + newContributor: false + - username: SethTisue + gravatar: https://avatars.githubusercontent.com/u/161079?v=3 + commits: 3 + linesAdded: 21 + linesDeleted: 21 + rank: 2 + newContributor: false + - username: retronym + gravatar: https://avatars.githubusercontent.com/u/65551?v=3 + commits: 3 + linesAdded: 44 + linesDeleted: 28 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://avatars.githubusercontent.com/u/91083?v=3 + commits: 2 + linesAdded: 22 + linesDeleted: 25 + rank: 3 + newContributor: false + - username: lrytz + gravatar: https://avatars.githubusercontent.com/u/119636?v=3 + commits: 1 + linesAdded: 7 + linesDeleted: 18 + rank: 4 + newContributor: false + - category: EPFL + authors: + - category: Community + authors: + - username: janekdb + gravatar: https://avatars.githubusercontent.com/u/1123855?v=3 + commits: 6 + linesAdded: 76 + linesDeleted: 63 + rank: 1 + newContributor: false + - username: soc + gravatar: https://avatars.githubusercontent.com/u/42493?v=3 + commits: 2 + linesAdded: 14 + linesDeleted: 19 + rank: 2 + newContributor: false +--- From f928c829f2e0dad88a7f0cfaabfd2d4ce87d8da5 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 17 Dec 2015 15:35:33 -0500 Subject: [PATCH 0089/1704] fix bad Markdown our Markdown processor needs a blank line before the start of a bullet list --- contribute/scala-fame.md | 1 + 1 file changed, 1 insertion(+) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index 2be9e7d69d..4b6591004a 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -4,6 +4,7 @@ title: Scala Contributor Hall of Fame --- A big thank you to everyone who has contributed over the years to: + - [the Scala library and compiler](https://github.com/scala/scala/contributors) - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) From 719edc3d277d67b41aef833f4edf568b47ae90d8 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 17 Dec 2015 18:43:23 -0500 Subject: [PATCH 0090/1704] add text about community libraries, Scala community build --- contribute/index.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/contribute/index.md b/contribute/index.md index fd94af5de2..c03405e489 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -101,3 +101,31 @@ various contributor activities: + +### Tools and Libraries + +The Scala ecosystem includes a great many diverse open-source projects +with their own maintainers and community of contributors. Helping out +one of these projects is another way to help Scala. Consider lending +on a hand on a project you're already using. Or, to find out about +other projects, see the +[Libraries and Tools section](../community/index.html#community-libraries-and-tools) +on our Community page. + +### Scala Community Build + +The Scala community build enables us to build and test a corpus of +Scala open source projects together, using Typesafe's +[dbuild](https://github.com/typesafehub/dbuild) tool +(which leverages [sbt](http://www.scala-sbt.org)). + +The main goal is to guard against regressions in new versions of Scala +(language, standard library, and modules). It's also a service to the +open source community, providing early notice of issues and +incompatibilities. + +If you're the maintainer -- or just an interested user! -- of an +open-source Scala library or tool, please visit the +[community build documentation](https://github.com/scala/community-builds/wiki) +for guidelines on what projects are suitable for the community build +and how projects can be added. From eeee725f7c666a969e823f128dd6893a34a3d0d8 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 17 Dec 2015 18:56:12 -0500 Subject: [PATCH 0091/1704] Code of Conduct page, relocated from docs site with updated links, and addition of link to site footer --- contribute/codereviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 8f86815eec..1b9a881b0c 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -13,7 +13,7 @@ own pull requests. ### Review Guidelines -[Code of Conduct Reminder](http://docs.scala-lang.org/conduct.html) +[Code of Conduct reminder](../conduct.html) * Keep comments on-topic, concise and precise. * Attach comments to particular lines or regions they pertain to whenever possible. From cc3d461d8fe51112d5d5b6b721f078025469a795 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 18 Dec 2015 07:48:57 -0500 Subject: [PATCH 0092/1704] tweak wording of community build section based on Heather's feedback --- contribute/index.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/contribute/index.md b/contribute/index.md index c03405e489..137838aba4 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -114,15 +114,14 @@ on our Community page. ### Scala Community Build -The Scala community build enables us to build and test a corpus of -Scala open source projects together, using Typesafe's -[dbuild](https://github.com/typesafehub/dbuild) tool -(which leverages [sbt](http://www.scala-sbt.org)). - -The main goal is to guard against regressions in new versions of Scala -(language, standard library, and modules). It's also a service to the -open source community, providing early notice of issues and -incompatibilities. +The Scala community build enables the Scala compiler team +to build and test a corpus of +Scala open source projects +against development versions of the Scala compiler and standard +library in order to discover regressions prior to releases. +The build uses Typesafe's +[dbuild](https://github.com/typesafehub/dbuild) tool, +which leverages [sbt](http://www.scala-sbt.org). If you're the maintainer -- or just an interested user! -- of an open-source Scala library or tool, please visit the From 856fc9cb2f903ad3353ed49e15d15e70de01e07f Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 4 Jan 2016 17:27:39 -0500 Subject: [PATCH 0093/1704] retire the Scala Contributor Hall of Fame https://api.github.com/repos/scala/scala/stats/contributors wasn't giving us good information to base this on, because it only gives you the top 100 contributors by number of all-time commits so e.g. Felix Mulder's great Scaladoc contribution for December wasn't even showing up in the data, since it was just one commit. one of the main purposes of this page was supposed to be recognizing new contributors, but the 100-contributor limit prevents that. the result was embarrassingly empty pages (which we usually forgot to even update anyway) if people are interested in all-time stats, they can visit https://github.com/scala/scala/graphs/contributors , and if people want to see recent activity, they can visit https://github.com/scala/scala/pulse --- contribute/guide.md | 2 +- .../_posts/2013-02-01-scala-fame-2013-01.md | 175 ---------------- .../_posts/2013-03-01-scala-fame-2013-02.md | 189 ------------------ .../_posts/2013-04-01-scala-fame-2013-03.md | 147 -------------- .../_posts/2013-05-01-scala-fame-2013-04.md | 126 ------------ .../_posts/2013-06-01-scala-fame-2013-05.md | 105 ---------- .../_posts/2013-07-01-scala-fame-2013-06.md | 126 ------------ .../_posts/2013-08-01-scala-fame-2013-07.md | 119 ----------- .../_posts/2013-09-01-scala-fame-2013-08.md | 98 --------- .../_posts/2013-10-01-scala-fame-2013-09.md | 105 ---------- .../_posts/2013-11-01-scala-fame-2013-10.md | 105 ---------- .../_posts/2013-12-01-scala-fame-2013-11.md | 126 ------------ .../_posts/2014-01-01-scala-fame-2013-12.md | 147 -------------- .../_posts/2014-02-01-scala-fame-2014-01.md | 147 -------------- .../_posts/2014-03-01-scala-fame-2014-02.md | 133 ------------ .../_posts/2014-04-01-scala-fame-2014-03.md | 112 ----------- .../_posts/2014-05-01-scala-fame-2014-04.md | 91 --------- .../_posts/2014-06-01-scala-fame-2014-05.md | 112 ----------- .../_posts/2014-07-01-scala-fame-2014-06.md | 98 --------- .../_posts/2014-08-01-scala-fame-2014-07.md | 98 --------- .../_posts/2014-09-01-scala-fame-2014-08.md | 70 ------- .../_posts/2014-10-01-scala-fame-2014-09.md | 84 -------- .../_posts/2014-11-01-scala-fame-2014-10.md | 63 ------ .../_posts/2014-12-01-scala-fame-2014-11.md | 112 ----------- .../_posts/2015-01-01-scala-fame-2014-12.md | 70 ------- .../_posts/2015-02-01-scala-fame-2015-01.md | 56 ------ .../_posts/2015-03-01-scala-fame-2015-02.md | 70 ------- .../_posts/2015-04-01-scala-fame-2015-03.md | 91 --------- .../_posts/2015-11-01-scala-fame-2015-10.md | 42 ---- .../_posts/2015-12-01-scala-fame-2015-11.md | 63 ------ contribute/scala-fame.md | 21 -- 31 files changed, 1 insertion(+), 3102 deletions(-) delete mode 100644 contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md delete mode 100644 contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md delete mode 100644 contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md delete mode 100644 contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md delete mode 100644 contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md delete mode 100644 contribute/scala-fame-data/_posts/2013-07-01-scala-fame-2013-06.md delete mode 100644 contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md delete mode 100644 contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md delete mode 100644 contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md delete mode 100644 contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md delete mode 100644 contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md delete mode 100644 contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md delete mode 100644 contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md delete mode 100644 contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md delete mode 100644 contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md delete mode 100644 contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md delete mode 100644 contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md delete mode 100644 contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md delete mode 100644 contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md delete mode 100644 contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md delete mode 100644 contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md delete mode 100644 contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md delete mode 100644 contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md delete mode 100644 contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md delete mode 100644 contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md delete mode 100644 contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md delete mode 100644 contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md delete mode 100644 contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md delete mode 100644 contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md delete mode 100644 contribute/scala-fame.md diff --git a/contribute/guide.md b/contribute/guide.md index 04fe50ae5b..148ceb7570 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -35,7 +35,7 @@ Just to name a few common reasons: * contributing a patch is the best way to make sure your desired changes will be available in the next Scala version * Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu -* last but not least, you will make it into the [Scala Contributor Hall of Fame](scala-fame.html). +* last but not least, it only takes a few accepted commits to make it into the [Scala Contributor Hall of Fame](https://github.com/scala/scala/contributors). The main Scala project consists of the standard Scala library, the Scala reflection and macros library, the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. diff --git a/contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md b/contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md deleted file mode 100644 index 68e990a7b7..0000000000 --- a/contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -layout: famearchive -title: Contributors of January 2013 -fame-year: 2013 -fame-month: 1 -fame-month-str: January -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 67 - linesAdded: 7112 - linesDeleted: 3063 - rank: 1 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 37 - linesAdded: 1812 - linesDeleted: 1158 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 22 - linesAdded: 1397 - linesDeleted: 561 - rank: 3 - newContributor: false - - username: JamesIry - gravatar: https://avatars0.githubusercontent.com/u/478012?v=2&s=60 - commits: 20 - linesAdded: 1156 - linesDeleted: 208 - rank: 4 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 5 - linesAdded: 422 - linesDeleted: 9 - rank: 5 - newContributor: false - - username: viktorklang - gravatar: https://avatars0.githubusercontent.com/u/10871?v=2&s=60 - commits: 2 - linesAdded: 187 - linesDeleted: 12 - rank: 6 - newContributor: false - - username: phaller - gravatar: https://avatars0.githubusercontent.com/u/289943?v=2&s=60 - commits: 2 - linesAdded: 21 - linesDeleted: 42 - rank: 6 - newContributor: false - - username: dragos - gravatar: https://avatars2.githubusercontent.com/u/133742?v=2&s=60 - commits: 1 - linesAdded: 6 - linesDeleted: 26 - rank: 7 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 28 - linesAdded: 8416 - linesDeleted: 2758 - rank: 1 - newContributor: false - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 8 - linesAdded: 1189 - linesDeleted: 418 - rank: 2 - newContributor: false - - username: heathermiller - gravatar: https://avatars0.githubusercontent.com/u/687163?v=2&s=60 - commits: 2 - linesAdded: 100 - linesDeleted: 15 - rank: 3 - newContributor: false - - username: namin - gravatar: https://avatars2.githubusercontent.com/u/6441?v=2&s=60 - commits: 1 - linesAdded: 23 - linesDeleted: 4 - rank: 4 - newContributor: false - - username: vjovanov - gravatar: https://avatars3.githubusercontent.com/u/352820?v=2&s=60 - commits: 1 - linesAdded: 38 - linesDeleted: 2 - rank: 4 - newContributor: false - - category: Community - authors: - - username: soc - gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 - commits: 13 - linesAdded: 886 - linesDeleted: 3152 - rank: 1 - newContributor: false - - username: kzys - gravatar: https://avatars2.githubusercontent.com/u/19111?v=2&s=60 - commits: 7 - linesAdded: 79 - linesDeleted: 40 - rank: 2 - newContributor: false - - username: danielhopkins - gravatar: https://avatars3.githubusercontent.com/u/91909?v=2&s=60 - commits: 2 - linesAdded: 146 - linesDeleted: 146 - rank: 3 - newContributor: true - - username: ViniciusMiana - gravatar: https://avatars1.githubusercontent.com/u/2053546?v=2&s=60 - commits: 2 - linesAdded: 47 - linesDeleted: 8 - rank: 3 - newContributor: false - - username: Blaisorblade - gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 - commits: 2 - linesAdded: 53 - linesDeleted: 6 - rank: 3 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 2 - linesAdded: 236 - linesDeleted: 183 - rank: 3 - newContributor: false - - username: eed3si9n - gravatar: https://avatars1.githubusercontent.com/u/184683?v=2&s=60 - commits: 1 - linesAdded: 35 - linesDeleted: 2 - rank: 4 - newContributor: false - - username: mt2309 - gravatar: https://avatars2.githubusercontent.com/u/816245?v=2&s=60 - commits: 1 - linesAdded: 24 - linesDeleted: 0 - rank: 4 - newContributor: false - - username: puffnfresh - gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 - commits: 1 - linesAdded: 39 - linesDeleted: 3 - rank: 4 - newContributor: false - - username: khernyo - gravatar: https://avatars3.githubusercontent.com/u/447532?v=2&s=60 - commits: 1 - linesAdded: 2 - linesDeleted: 3 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md b/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md deleted file mode 100644 index 376563abce..0000000000 --- a/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -layout: famearchive -title: Contributors of February 2013 -fame-year: 2013 -fame-month: 2 -fame-month-str: February -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 38 - linesAdded: 2578 - linesDeleted: 2114 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 31 - linesAdded: 7110 - linesDeleted: 9889 - rank: 2 - newContributor: false - - username: JamesIry - gravatar: https://secure.gravatar.com/avatar/72b1a6b08fd8bb3068bd281974461c3e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 23 - linesAdded: 1673 - linesDeleted: 740 - rank: 3 - newContributor: false - - username: paulp - gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 10 - linesAdded: 1466 - linesDeleted: 1097 - rank: 4 - newContributor: false - - username: viktorklang - gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 84 - linesDeleted: 53 - rank: 5 - newContributor: false - - username: gkossakowski - gravatar: https://secure.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 4 - linesDeleted: 1 - rank: 6 - newContributor: false - - username: huitseeker - gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 26 - linesDeleted: 0 - rank: 7 - newContributor: false - - username: rkuhn - gravatar: https://secure.gravatar.com/avatar/262b1ab25e66b1e15a48fa3f68703aad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 3 - linesDeleted: 2 - rank: 7 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 36 - linesAdded: 3379 - linesDeleted: 1635 - rank: 1 - newContributor: false - - username: lrytz - gravatar: https://secure.gravatar.com/avatar/d807dd5133a6fc14c821178e53c34091?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 213 - linesDeleted: 31 - rank: 2 - newContributor: false - - username: heathermiller - gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 2 - linesDeleted: 1333 - rank: 3 - newContributor: false - - username: VladUreche - gravatar: https://secure.gravatar.com/avatar/5658ed1cea041577df360fd663c570fa?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 86 - linesDeleted: 32 - rank: 3 - newContributor: false - - username: hubertp - gravatar: https://secure.gravatar.com/avatar/e0dec64f93778e5c689c3873078a406f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 297 - linesDeleted: 100 - rank: 3 - newContributor: false - - username: axel22 - gravatar: https://secure.gravatar.com/avatar/e9bdb4fada7e635fffb5e6f26e70cd1d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 9 - linesDeleted: 106 - rank: 4 - newContributor: false - - category: Community - authors: - - username: vigdorchik - gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 4 - linesAdded: 471 - linesDeleted: 410 - rank: 1 - newContributor: false - - username: vy - gravatar: https://secure.gravatar.com/avatar/bb8d759cf4230bcaa238fac0018af80c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 21 - linesDeleted: 21 - rank: 2 - newContributor: true - - username: u-abramchuk - gravatar: https://secure.gravatar.com/avatar/c70eb13a60582914b51966fdc1a18536?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 47 - linesDeleted: 13 - rank: 2 - newContributor: true - - username: jozic - gravatar: https://secure.gravatar.com/avatar/41fbba6d48e543a7dfa8c231b2d0286d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 8 - linesDeleted: 8 - rank: 3 - newContributor: true - - username: rnix - gravatar: https://secure.gravatar.com/avatar/0dcbf348a28f2295164c53a40d48a958?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 3 - newContributor: true - - username: mergeconflict - gravatar: https://secure.gravatar.com/avatar/9a58682929b182af7b01f0180e072fcd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 22 - linesDeleted: 15 - rank: 3 - newContributor: false - - username: mt2309 - gravatar: https://secure.gravatar.com/avatar/f70e1d36b9c1b9290d31e810fa1502f3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 3 - linesDeleted: 0 - rank: 3 - newContributor: false - - username: ViniciusMiana - gravatar: https://secure.gravatar.com/avatar/e05e828a92458c4075b498c7d2957ddd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 16 - linesDeleted: 0 - rank: 3 - newContributor: false - - username: Blaisorblade - gravatar: https://secure.gravatar.com/avatar/a3a676c96a88feb813010e67af012ca0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 0 - linesDeleted: 3 - rank: 3 - newContributor: false - - username: khernyo - gravatar: https://secure.gravatar.com/avatar/0e0d750a49edb4b16e8ec83816ea356e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 25 - linesDeleted: 1 - rank: 3 - newContributor: false - - username: som-snytt - gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 3 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md b/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md deleted file mode 100644 index 0feb88618a..0000000000 --- a/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: famearchive -title: Contributors of March 2013 -fame-year: 2013 -fame-month: 3 -fame-month-str: March -fame-categories: - - category: Typesafe - authors: - - username: paulp - gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 51 - linesAdded: 38101 - linesDeleted: 37753 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 46 - linesAdded: 4908 - linesDeleted: 3092 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 27 - linesAdded: 2675 - linesDeleted: 5043 - rank: 3 - newContributor: false - - username: JamesIry - gravatar: https://secure.gravatar.com/avatar/72b1a6b08fd8bb3068bd281974461c3e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 7 - linesAdded: 1218 - linesDeleted: 171 - rank: 4 - newContributor: false - - username: dragos - gravatar: https://secure.gravatar.com/avatar/fbd384e9626d28d1648f023a5e22672f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 169 - linesDeleted: 2 - rank: 5 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 11 - linesAdded: 295 - linesDeleted: 129 - rank: 1 - newContributor: false - - username: magarciaEPFL - gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 6 - linesAdded: 89 - linesDeleted: 44 - rank: 2 - newContributor: false - - category: Community - authors: - - username: vigdorchik - gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 9 - linesAdded: 714 - linesDeleted: 619 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 7 - linesAdded: 2103 - linesDeleted: 2068 - rank: 2 - newContributor: false - - username: soc - gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 6 - linesAdded: 166 - linesDeleted: 96 - rank: 3 - newContributor: false - - username: kzys - gravatar: https://secure.gravatar.com/avatar/7828b45f8396aa361d85cead01fd99ca?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 5 - linesAdded: 129 - linesDeleted: 41 - rank: 4 - newContributor: false - - username: Blaisorblade - gravatar: https://secure.gravatar.com/avatar/a3a676c96a88feb813010e67af012ca0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 72 - linesDeleted: 20 - rank: 5 - newContributor: false - - username: starblood - gravatar: https://secure.gravatar.com/avatar/bd3514b960213c6a7ff5fd3186675429?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 6 - newContributor: true - - username: srinivasreddy - gravatar: https://secure.gravatar.com/avatar/1f542afb3240b82fdf08632bf6cd5384?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 6 - newContributor: true - - username: mesagie - gravatar: https://secure.gravatar.com/avatar/6e7dc465ed74b5250147168a0178d91c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 4 - linesDeleted: 5 - rank: 6 - newContributor: true - - username: mergeconflict - gravatar: https://secure.gravatar.com/avatar/9a58682929b182af7b01f0180e072fcd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 22 - linesDeleted: 15 - rank: 6 - newContributor: false - - username: sschaef - gravatar: https://secure.gravatar.com/avatar/dd80aab570fdb5f37e62de5422f44ed4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 13 - linesDeleted: 0 - rank: 6 - newContributor: false - - username: ihji - gravatar: https://secure.gravatar.com/avatar/866a258f0c9fa9529aa47ebd96fe599c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 33 - linesDeleted: 6 - rank: 6 - newContributor: false - - username: chuvoks - gravatar: https://secure.gravatar.com/avatar/415869059046602f37803890bd992fc0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 45 - linesDeleted: 24 - rank: 6 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md b/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md deleted file mode 100644 index e2cd419e9b..0000000000 --- a/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: famearchive -title: Contributors of April 2013 -fame-year: 2013 -fame-month: 4 -fame-month-str: April -fame-categories: - - category: Typesafe - authors: - - username: paulp - gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 38 - linesAdded: 3745 - linesDeleted: 2973 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 37 - linesAdded: 1309 - linesDeleted: 777 - rank: 2 - newContributor: false - - username: huitseeker - gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 16 - linesDeleted: 24 - rank: 3 - newContributor: false - - username: adriaanm - gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 35 - linesDeleted: 82 - rank: 4 - newContributor: false - - category: EPFL - authors: - - username: magarciaEPFL - gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 11 - linesAdded: 238 - linesDeleted: 204 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 4 - linesAdded: 208 - linesDeleted: 121 - rank: 2 - newContributor: false - - username: namin - gravatar: https://secure.gravatar.com/avatar/f2adf4eb83e1221b519d23bf0bdc98d2?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 6 - linesDeleted: 11 - rank: 3 - newContributor: false - - username: heathermiller - gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 3 - newContributor: false - - username: hubertp - gravatar: https://secure.gravatar.com/avatar/e0dec64f93778e5c689c3873078a406f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 54 - linesDeleted: 46 - rank: 3 - newContributor: false - - category: Community - authors: - - username: som-snytt - gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 16 - linesAdded: 2561 - linesDeleted: 1150 - rank: 1 - newContributor: false - - username: vigdorchik - gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 9 - linesAdded: 235 - linesDeleted: 321 - rank: 2 - newContributor: false - - username: soc - gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 4 - linesAdded: 38 - linesDeleted: 26 - rank: 3 - newContributor: false - - username: ihji - gravatar: https://secure.gravatar.com/avatar/866a258f0c9fa9529aa47ebd96fe599c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 13 - linesDeleted: 2 - rank: 4 - newContributor: false - - username: bjornregnell - gravatar: https://secure.gravatar.com/avatar/b1d20c98b0eeb72829523144b9174ca2?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 3 - linesDeleted: 2 - rank: 5 - newContributor: true - - username: aldenml - gravatar: https://secure.gravatar.com/avatar/bbf061bd484515c156f662a65820c226?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 4 - linesDeleted: 4 - rank: 5 - newContributor: true - - username: eed3si9n - gravatar: https://secure.gravatar.com/avatar/8f41595db400be30176f6f04630c2842?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 304 - linesDeleted: 6 - rank: 5 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md b/contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md deleted file mode 100644 index 2829d6a4aa..0000000000 --- a/contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: famearchive -title: Contributors of May 2013 -fame-year: 2013 -fame-month: 5 -fame-month-str: May -fame-categories: - - category: Typesafe - authors: - - username: paulp - gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 54 - linesAdded: 3465 - linesDeleted: 2035 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 13 - linesAdded: 525 - linesDeleted: 66 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 5 - linesAdded: 245 - linesDeleted: 81 - rank: 3 - newContributor: false - - username: viktorklang - gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 51 - linesDeleted: 32 - rank: 4 - newContributor: false - - username: phaller - gravatar: https://secure.gravatar.com/avatar/3b84657fdb075382e3781310ca8a9a70?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 1965 - linesDeleted: 1086 - rank: 5 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 19 - linesAdded: 742 - linesDeleted: 468 - rank: 1 - newContributor: false - - username: magarciaEPFL - gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 11 - linesAdded: 1214 - linesDeleted: 1069 - rank: 2 - newContributor: false - - username: heathermiller - gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 10 - linesDeleted: 7 - rank: 3 - newContributor: false - - category: Community - authors: - - username: soc - gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 12 - linesAdded: 254 - linesDeleted: 1135 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 6 - linesAdded: 454 - linesDeleted: 403 - rank: 2 - newContributor: false - - username: vigdorchik - gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 42 - linesDeleted: 32 - rank: 3 - newContributor: false - - username: dcsobral - gravatar: https://secure.gravatar.com/avatar/6d43da5df0e52fc31c55e6a227bb23f4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 6 - linesDeleted: 2 - rank: 4 - newContributor: false - - username: kzys - gravatar: https://secure.gravatar.com/avatar/7828b45f8396aa361d85cead01fd99ca?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 25 - linesDeleted: 9 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-07-01-scala-fame-2013-06.md b/contribute/scala-fame-data/_posts/2013-07-01-scala-fame-2013-06.md deleted file mode 100644 index e2fa22bf84..0000000000 --- a/contribute/scala-fame-data/_posts/2013-07-01-scala-fame-2013-06.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: famearchive -title: Contributors of June 2013 -fame-year: 2013 -fame-month: 6 -fame-month-str: June -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 18 - linesAdded: 3583 - linesDeleted: 60 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 13 - linesAdded: 12207 - linesDeleted: 11500 - rank: 2 - newContributor: false - - username: paulp - gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 6 - linesAdded: 264 - linesDeleted: 1625 - rank: 3 - newContributor: false - - username: gkossakowski - gravatar: https://secure.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 296 - linesDeleted: 176 - rank: 4 - newContributor: false - - username: viktorklang - gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 197 - linesDeleted: 546 - rank: 5 - newContributor: false - - username: huitseeker - gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 32 - linesDeleted: 1 - rank: 6 - newContributor: false - - category: EPFL - authors: - - username: magarciaEPFL - gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 5 - linesAdded: 29 - linesDeleted: 27 - rank: 1 - newContributor: false - - username: VladUreche - gravatar: https://secure.gravatar.com/avatar/5658ed1cea041577df360fd663c570fa?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 4 - linesAdded: 383 - linesDeleted: 68 - rank: 2 - newContributor: false - - username: xeno-by - gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 57 - linesDeleted: 15 - rank: 3 - newContributor: false - - category: Community - authors: - - username: soc - gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 12 - linesAdded: 1071 - linesDeleted: 1200 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 5 - linesAdded: 273 - linesDeleted: 44 - rank: 2 - newContributor: false - - username: lexspoon - gravatar: https://secure.gravatar.com/avatar/d00741a2082647573efc2c15022ad15c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 5 - linesAdded: 90 - linesDeleted: 29 - rank: 2 - newContributor: false - - username: jedesah - gravatar: https://secure.gravatar.com/avatar/188a972e1c0a6d678a59bd6bce46da9a?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 23 - linesDeleted: 2 - rank: 3 - newContributor: false - - username: yllan - gravatar: https://secure.gravatar.com/avatar/ad23f5809b32c9dade553f80d6d7b2b9?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 124 - linesDeleted: 4 - rank: 4 - newContributor: true - - username: jannic - gravatar: https://secure.gravatar.com/avatar/c85c7cbcc9d464e178ba751449f893c7?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 9 - linesDeleted: 0 - rank: 5 - newContributor: false - - username: xuwei-k - gravatar: https://secure.gravatar.com/avatar/18d8b1bf73827b2a15e2bd3e75b4b34a?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 2 - linesDeleted: 2 - rank: 5 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md b/contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md deleted file mode 100644 index b6670c42ce..0000000000 --- a/contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: famearchive -title: Contributors of July 2013 -fame-year: 2013 -fame-month: 7 -fame-month-str: July -fame-categories: - - category: Typesafe - authors: - - username: gkossakowski - gravatar: https://0.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?d=https%3A%2F%2Fidenticons.github.com%2F8196e8d0f9ee7dfdfc7e11dbbfa30d77.png&s=60 - commits: 11 - linesAdded: 522 - linesDeleted: 311 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://0.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?d=https%3A%2F%2Fidenticons.github.com%2Ff0d91e20ef53ace520f6ccbf8402319f.png&s=60 - commits: 9 - linesAdded: 1068 - linesDeleted: 11436 - rank: 2 - newContributor: false - - username: retronym - gravatar: https://0.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?d=https%3A%2F%2Fidenticons.github.com%2F75e4dffe50001cf8b96d3beecbe181be.png&s=60 - commits: 8 - linesAdded: 416 - linesDeleted: 134 - rank: 3 - newContributor: false - - username: paulp - gravatar: https://identicons.github.com/bf65417dcecc7f2b0006e1f5793b7143.png - commits: 2 - linesAdded: 46 - linesDeleted: 27 - rank: 4 - newContributor: false - - category: EPFL - authors: - - username: magarciaEPFL - gravatar: https://2.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?d=https%3A%2F%2Fidenticons.github.com%2F8b7440eff98d923640c99b5535429144.png&s=60 - commits: 12 - linesAdded: 1208 - linesDeleted: 1069 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://2.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?d=https%3A%2F%2Fidenticons.github.com%2F6a5b1b05e953818962474e94b67d1cc2.png&s=60 - commits: 8 - linesAdded: 321 - linesDeleted: 95 - rank: 2 - newContributor: false - - username: VladUreche - gravatar: https://2.gravatar.com/avatar/5658ed1cea041577df360fd663c570fa?d=https%3A%2F%2Fidenticons.github.com%2Fa1ef2fed16f85a1af890467a80c30226.png&s=60 - commits: 2 - linesAdded: 104 - linesDeleted: 2 - rank: 3 - newContributor: false - - username: cvogt - gravatar: https://1.gravatar.com/avatar/669fb4eab529fba02f390051ddf3c8d3?d=https%3A%2F%2Fidenticons.github.com%2F78d9e7d7c73ac19ca8da9805762e5bb0.png&s=60 - commits: 1 - linesAdded: 19 - linesDeleted: 0 - rank: 4 - newContributor: false - - category: Community - authors: - - username: soc - gravatar: https://0.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?d=https%3A%2F%2Fidenticons.github.com%2F29f7ac3adbe1d3500c9404388aedcbfd.png&s=60 - commits: 19 - linesAdded: 2818 - linesDeleted: 4377 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://2.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?d=https%3A%2F%2Fidenticons.github.com%2Fd292a902ebb73981efd65c9ef416046b.png&s=60 - commits: 16 - linesAdded: 1049 - linesDeleted: 553 - rank: 2 - newContributor: false - - username: densh - gravatar: https://0.gravatar.com/avatar/5ed274e115ec061d062d9c32a539cdc9?d=https%3A%2F%2Fidenticons.github.com%2Fcd3e73ab183ea35424f0bf59101a74e4.png&s=60 - commits: 9 - linesAdded: 2632 - linesDeleted: 178 - rank: 3 - newContributor: false - - username: folone - gravatar: https://2.gravatar.com/avatar/50e7e3f60b3507383d2b327857b66a62?d=https%3A%2F%2Fidenticons.github.com%2F6c2bcbccd23191b40f4932e2b8450681.png&s=60 - commits: 3 - linesAdded: 106 - linesDeleted: 261 - rank: 4 - newContributor: false - - username: xuwei-k - gravatar: https://2.gravatar.com/avatar/18d8b1bf73827b2a15e2bd3e75b4b34a?d=https%3A%2F%2Fidenticons.github.com%2Fdab0069935d770e6285411ed1f4398b9.png&s=60 - commits: 3 - linesAdded: 5 - linesDeleted: 5 - rank: 4 - newContributor: false - - username: gourlaysama - gravatar: https://2.gravatar.com/avatar/8acf3c87222f89b18786c8db60eb365d?d=https%3A%2F%2Fidenticons.github.com%2F76004d7b1fac3a2b262caa5e6bdf15c9.png&s=60 - commits: 2 - linesAdded: 67 - linesDeleted: 3 - rank: 5 - newContributor: false - - username: ScrapCodes - gravatar: https://0.gravatar.com/avatar/e9813bbbab2caa993bf7e2b2d60de894?d=https%3A%2F%2Fidenticons.github.com%2F38c660c74f82a216b75167debab770ed.png&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 6 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md b/contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md deleted file mode 100644 index c876e815d1..0000000000 --- a/contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: famearchive -title: Contributors of August 2013 -fame-year: 2013 -fame-month: 8 -fame-month-str: August -fame-categories: - - category: Typesafe - authors: - - username: paulp - gravatar: https://identicons.github.com/bf65417dcecc7f2b0006e1f5793b7143.png - commits: 50 - linesAdded: 3703 - linesDeleted: 2269 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://0.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?d=https%3A%2F%2Fidenticons.github.com%2F75e4dffe50001cf8b96d3beecbe181be.png&s=60 - commits: 30 - linesAdded: 990 - linesDeleted: 167 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://0.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?d=https%3A%2F%2Fidenticons.github.com%2Ff0d91e20ef53ace520f6ccbf8402319f.png&s=60 - commits: 6 - linesAdded: 224 - linesDeleted: 11001 - rank: 3 - newContributor: false - - username: huitseeker - gravatar: https://0.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?d=https%3A%2F%2Fidenticons.github.com%2F0777acff7c9ab34562699e4e1d05affb.png&s=60 - commits: 2 - linesAdded: 6 - linesDeleted: 6 - rank: 4 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://2.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?d=https%3A%2F%2Fidenticons.github.com%2F6a5b1b05e953818962474e94b67d1cc2.png&s=60 - commits: 9 - linesAdded: 579 - linesDeleted: 419 - rank: 1 - newContributor: false - - username: magarciaEPFL - gravatar: https://2.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?d=https%3A%2F%2Fidenticons.github.com%2F8b7440eff98d923640c99b5535429144.png&s=60 - commits: 4 - linesAdded: 319 - linesDeleted: 105 - rank: 2 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://0.gravatar.com/avatar/5ed274e115ec061d062d9c32a539cdc9?d=https%3A%2F%2Fidenticons.github.com%2Fcd3e73ab183ea35424f0bf59101a74e4.png&s=60 - commits: 19 - linesAdded: 687 - linesDeleted: 322 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://2.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?d=https%3A%2F%2Fidenticons.github.com%2Fd292a902ebb73981efd65c9ef416046b.png&s=60 - commits: 12 - linesAdded: 455 - linesDeleted: 91 - rank: 2 - newContributor: false - - username: soc - gravatar: https://0.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?d=https%3A%2F%2Fidenticons.github.com%2F29f7ac3adbe1d3500c9404388aedcbfd.png&s=60 - commits: 4 - linesAdded: 64 - linesDeleted: 27 - rank: 3 - newContributor: false - - username: gourlaysama - gravatar: https://2.gravatar.com/avatar/8acf3c87222f89b18786c8db60eb365d?d=https%3A%2F%2Fidenticons.github.com%2F76004d7b1fac3a2b262caa5e6bdf15c9.png&s=60 - commits: 2 - linesAdded: 50 - linesDeleted: 9 - rank: 4 - newContributor: false - - username: ScrapCodes - gravatar: https://0.gravatar.com/avatar/e9813bbbab2caa993bf7e2b2d60de894?d=https%3A%2F%2Fidenticons.github.com%2F38c660c74f82a216b75167debab770ed.png&s=60 - commits: 1 - linesAdded: 3 - linesDeleted: 0 - rank: 5 - newContributor: false - - username: folone - gravatar: https://2.gravatar.com/avatar/50e7e3f60b3507383d2b327857b66a62?d=https%3A%2F%2Fidenticons.github.com%2F6c2bcbccd23191b40f4932e2b8450681.png&s=60 - commits: 1 - linesAdded: 55 - linesDeleted: 7 - rank: 5 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md b/contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md deleted file mode 100644 index 23fa456fc0..0000000000 --- a/contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: famearchive -title: Contributors of September 2013 -fame-year: 2013 -fame-month: 9 -fame-month-str: September -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://2.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?d=https%3A%2F%2Fidenticons.github.com%2F75e4dffe50001cf8b96d3beecbe181be.png&s=60 - commits: 42 - linesAdded: 1459 - linesDeleted: 476 - rank: 1 - newContributor: false - - username: paulp - gravatar: https://identicons.github.com/bf65417dcecc7f2b0006e1f5793b7143.png - commits: 25 - linesAdded: 6603 - linesDeleted: 7419 - rank: 2 - newContributor: false - - username: huitseeker - gravatar: https://1.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?d=https%3A%2F%2Fidenticons.github.com%2F0777acff7c9ab34562699e4e1d05affb.png&s=60 - commits: 7 - linesAdded: 520 - linesDeleted: 536 - rank: 3 - newContributor: false - - username: gkossakowski - gravatar: https://0.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?d=https%3A%2F%2Fidenticons.github.com%2F8196e8d0f9ee7dfdfc7e11dbbfa30d77.png&s=60 - commits: 2 - linesAdded: 1443 - linesDeleted: 44 - rank: 4 - newContributor: false - - username: dragos - gravatar: https://2.gravatar.com/avatar/fbd384e9626d28d1648f023a5e22672f?d=https%3A%2F%2Fidenticons.github.com%2F6b660454242c937e501b88fd136132f8.png&s=60 - commits: 2 - linesAdded: 95 - linesDeleted: 13 - rank: 4 - newContributor: false - - username: jsuereth - gravatar: https://1.gravatar.com/avatar/5ed293320c06809a24812f56861201ad?d=https%3A%2F%2Fidenticons.github.com%2F11a5b5ef81cff76a0a1f3d042f635df3.png&s=60 - commits: 1 - linesAdded: 18 - linesDeleted: 37 - rank: 5 - newContributor: false - - username: adriaanm - gravatar: https://0.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?d=https%3A%2F%2Fidenticons.github.com%2Ff0d91e20ef53ace520f6ccbf8402319f.png&s=60 - commits: 1 - linesAdded: 5 - linesDeleted: 5 - rank: 5 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://1.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?d=https%3A%2F%2Fidenticons.github.com%2F6a5b1b05e953818962474e94b67d1cc2.png&s=60 - commits: 5 - linesAdded: 434 - linesDeleted: 153 - rank: 1 - newContributor: false - - username: sjrd - gravatar: https://1.gravatar.com/avatar/bc554c7355c8476dd63375b314b1bd97?d=https%3A%2F%2Fidenticons.github.com%2F7f7549008d59643d2ce9846ce0364947.png&s=60 - commits: 4 - linesAdded: 30 - linesDeleted: 9 - rank: 2 - newContributor: true - - category: Community - authors: - - username: densh - gravatar: https://1.gravatar.com/avatar/5ed274e115ec061d062d9c32a539cdc9?d=https%3A%2F%2Fidenticons.github.com%2Fcd3e73ab183ea35424f0bf59101a74e4.png&s=60 - commits: 20 - linesAdded: 1415 - linesDeleted: 594 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://1.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?d=https%3A%2F%2Fidenticons.github.com%2Fd292a902ebb73981efd65c9ef416046b.png&s=60 - commits: 11 - linesAdded: 367 - linesDeleted: 106 - rank: 2 - newContributor: false - - username: Ichoran - gravatar: https://0.gravatar.com/avatar/3698349ad0b898d398a6573f4d1f867a?d=https%3A%2F%2Fidenticons.github.com%2Ffc12483537f3df99d480423de674e099.png&s=60 - commits: 3 - linesAdded: 75 - linesDeleted: 27 - rank: 3 - newContributor: true - - username: sschaef - gravatar: https://0.gravatar.com/avatar/dd80aab570fdb5f37e62de5422f44ed4?d=https%3A%2F%2Fidenticons.github.com%2Fb5a662bc30d97b377338f5dfb2b4cc66.png&s=60 - commits: 3 - linesAdded: 84 - linesDeleted: 139 - rank: 3 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md b/contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md deleted file mode 100644 index 557955d60c..0000000000 --- a/contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: famearchive -title: Contributors of October 2013 -fame-year: 2013 -fame-month: 10 -fame-month-str: October -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 52 - linesAdded: 1917 - linesDeleted: 1778 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 18 - linesAdded: 1648 - linesDeleted: 1591 - rank: 2 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 9 - linesAdded: 871 - linesDeleted: 1346 - rank: 3 - newContributor: false - - username: huitseeker - gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 - commits: 1 - linesAdded: 3 - linesDeleted: 0 - rank: 4 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 9 - linesAdded: 398 - linesDeleted: 2260 - rank: 1 - newContributor: false - - username: axel22 - gravatar: https://avatars1.githubusercontent.com/u/151774?v=2&s=60 - commits: 1 - linesAdded: 201 - linesDeleted: 74 - rank: 2 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 18 - linesAdded: 766 - linesDeleted: 422 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 4 - linesAdded: 114 - linesDeleted: 58 - rank: 2 - newContributor: false - - username: etaty - gravatar: https://avatars3.githubusercontent.com/u/461170?v=2&s=60 - commits: 2 - linesAdded: 2 - linesDeleted: 2 - rank: 3 - newContributor: false - - username: dotta - gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 - commits: 2 - linesAdded: 68 - linesDeleted: 6 - rank: 3 - newContributor: false - - username: qerub - gravatar: https://avatars2.githubusercontent.com/u/636?v=2&s=60 - commits: 1 - linesAdded: 8 - linesDeleted: 0 - rank: 4 - newContributor: false - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 1 - linesAdded: 31 - linesDeleted: 1 - rank: 4 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 1 - linesAdded: 215 - linesDeleted: 25 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md b/contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md deleted file mode 100644 index 7fba955998..0000000000 --- a/contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: famearchive -title: Contributors of November 2013 -fame-year: 2013 -fame-month: 11 -fame-month-str: November -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 44 - linesAdded: 1814 - linesDeleted: 1372 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 20 - linesAdded: 1945 - linesDeleted: 1463 - rank: 2 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 4 - linesAdded: 62 - linesDeleted: 659 - rank: 3 - newContributor: false - - username: huitseeker - gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 - commits: 2 - linesAdded: 137 - linesDeleted: 87 - rank: 4 - newContributor: false - - username: phaller - gravatar: https://avatars0.githubusercontent.com/u/289943?v=2&s=60 - commits: 1 - linesAdded: 105 - linesDeleted: 101 - rank: 5 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 5 - linesAdded: 82 - linesDeleted: 12 - rank: 1 - newContributor: false - - username: heathermiller - gravatar: https://avatars0.githubusercontent.com/u/687163?v=2&s=60 - commits: 1 - linesAdded: 8 - linesDeleted: 5 - rank: 2 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 10 - linesAdded: 1089 - linesDeleted: 884 - rank: 1 - newContributor: false - - username: skyluc - gravatar: https://avatars3.githubusercontent.com/u/1098830?v=2&s=60 - commits: 6 - linesAdded: 1911 - linesDeleted: 53 - rank: 2 - newContributor: false - - username: dotta - gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 - commits: 6 - linesAdded: 64 - linesDeleted: 47 - rank: 2 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 6 - linesAdded: 499 - linesDeleted: 197 - rank: 2 - newContributor: false - - username: soc - gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 - commits: 5 - linesAdded: 280 - linesDeleted: 97 - rank: 3 - newContributor: false - - username: sschaef - gravatar: https://avatars2.githubusercontent.com/u/488530?v=2&s=60 - commits: 4 - linesAdded: 182 - linesDeleted: 12 - rank: 4 - newContributor: false - - username: xuwei-k - gravatar: https://avatars3.githubusercontent.com/u/389787?v=2&s=60 - commits: 2 - linesAdded: 3 - linesDeleted: 3 - rank: 5 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 2 - linesAdded: 1179 - linesDeleted: 0 - rank: 5 - newContributor: false - - username: Blaisorblade - gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 - commits: 1 - linesAdded: 3 - linesDeleted: 3 - rank: 6 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md b/contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md deleted file mode 100644 index 80c4139b10..0000000000 --- a/contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: famearchive -title: Contributors of December 2013 -fame-year: 2013 -fame-month: 12 -fame-month-str: December -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 28 - linesAdded: 901 - linesDeleted: 215 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 21 - linesAdded: 1386 - linesDeleted: 16746 - rank: 2 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 9 - linesAdded: 899 - linesDeleted: 409 - rank: 3 - newContributor: false - - username: huitseeker - gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 - commits: 3 - linesAdded: 45 - linesDeleted: 38 - rank: 4 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 30 - linesAdded: 2170 - linesDeleted: 984 - rank: 1 - newContributor: false - - username: magarciaEPFL - gravatar: https://avatars2.githubusercontent.com/u/1249748?v=2&s=60 - commits: 5 - linesAdded: 47 - linesDeleted: 17 - rank: 2 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 20 - linesAdded: 1604 - linesDeleted: 703 - rank: 1 - newContributor: false - - username: soc - gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 - commits: 11 - linesAdded: 728 - linesDeleted: 606 - rank: 2 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 8 - linesAdded: 1490 - linesDeleted: 286 - rank: 3 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 6 - linesAdded: 382 - linesDeleted: 224 - rank: 4 - newContributor: false - - username: dotta - gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 - commits: 5 - linesAdded: 265 - linesDeleted: 13 - rank: 5 - newContributor: false - - username: VladimirNik - gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 - commits: 2 - linesAdded: 7 - linesDeleted: 8 - rank: 6 - newContributor: false - - username: rklaehn - gravatar: https://avatars0.githubusercontent.com/u/248257?v=2&s=60 - commits: 2 - linesAdded: 2 - linesDeleted: 83 - rank: 6 - newContributor: false - - username: qerub - gravatar: https://avatars2.githubusercontent.com/u/636?v=2&s=60 - commits: 1 - linesAdded: 10 - linesDeleted: 11 - rank: 7 - newContributor: false - - username: jrudolph - gravatar: https://avatars1.githubusercontent.com/u/9868?v=2&s=60 - commits: 1 - linesAdded: 4 - linesDeleted: 4 - rank: 7 - newContributor: false - - username: skyluc - gravatar: https://avatars3.githubusercontent.com/u/1098830?v=2&s=60 - commits: 1 - linesAdded: 112 - linesDeleted: 54 - rank: 7 - newContributor: false - - username: non - gravatar: https://avatars3.githubusercontent.com/u/218045?v=2&s=60 - commits: 1 - linesAdded: 19 - linesDeleted: 8 - rank: 7 - newContributor: false - - username: xuwei-k - gravatar: https://avatars3.githubusercontent.com/u/389787?v=2&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 7 - newContributor: false - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 1 - linesAdded: 136 - linesDeleted: 55 - rank: 7 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md b/contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md deleted file mode 100644 index ab8e808036..0000000000 --- a/contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: famearchive -title: Contributors of January 2014 -fame-year: 2014 -fame-month: 1 -fame-month-str: January -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 37 - linesAdded: 2000 - linesDeleted: 2487 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 8 - linesAdded: 311 - linesDeleted: 175 - rank: 2 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 3 - linesAdded: 15 - linesDeleted: 5 - rank: 3 - newContributor: false - - username: huitseeker - gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 - commits: 2 - linesAdded: 81 - linesDeleted: 79 - rank: 4 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 2 - linesAdded: 7 - linesDeleted: 5 - rank: 4 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 75 - linesAdded: 8908 - linesDeleted: 6023 - rank: 1 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 16 - linesAdded: 722 - linesDeleted: 295 - rank: 1 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 10 - linesAdded: 315 - linesDeleted: 103 - rank: 2 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 9 - linesAdded: 646 - linesDeleted: 201 - rank: 3 - newContributor: false - - username: VladimirNik - gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 - commits: 7 - linesAdded: 1729 - linesDeleted: 350 - rank: 4 - newContributor: false - - username: rklaehn - gravatar: https://avatars0.githubusercontent.com/u/248257?v=2&s=60 - commits: 6 - linesAdded: 1288 - linesDeleted: 39 - rank: 5 - newContributor: false - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 3 - linesAdded: 37 - linesDeleted: 7 - rank: 6 - newContributor: false - - username: cunei - gravatar: https://avatars2.githubusercontent.com/u/686260?v=2&s=60 - commits: 2 - linesAdded: 42 - linesDeleted: 12 - rank: 7 - newContributor: false - - username: Blaisorblade - gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 - commits: 2 - linesAdded: 51 - linesDeleted: 33 - rank: 7 - newContributor: false - - username: havocp - gravatar: https://avatars2.githubusercontent.com/u/218689?v=2&s=60 - commits: 1 - linesAdded: 38 - linesDeleted: 2 - rank: 8 - newContributor: false - - username: clhodapp - gravatar: https://avatars0.githubusercontent.com/u/108633?v=2&s=60 - commits: 1 - linesAdded: 22 - linesDeleted: 0 - rank: 8 - newContributor: false - - username: rjolly - gravatar: https://avatars3.githubusercontent.com/u/128610?v=2&s=60 - commits: 1 - linesAdded: 45 - linesDeleted: 38 - rank: 8 - newContributor: false - - username: xuwei-k - gravatar: https://avatars3.githubusercontent.com/u/389787?v=2&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 8 - newContributor: false - - username: dotta - gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 - commits: 1 - linesAdded: 67 - linesDeleted: 67 - rank: 8 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md b/contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md deleted file mode 100644 index 065ab45d13..0000000000 --- a/contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: famearchive -title: Contributors of February 2014 -fame-year: 2014 -fame-month: 2 -fame-month-str: February -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 47 - linesAdded: 1533 - linesDeleted: 1032 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 25 - linesAdded: 1043 - linesDeleted: 491 - rank: 2 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 4 - linesAdded: 1867 - linesDeleted: 1747 - rank: 3 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 3 - linesAdded: 427 - linesDeleted: 15 - rank: 4 - newContributor: false - - username: dragos - gravatar: https://avatars2.githubusercontent.com/u/133742?v=2&s=60 - commits: 1 - linesAdded: 12 - linesDeleted: 3 - rank: 5 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 47 - linesAdded: 3989 - linesDeleted: 1545 - rank: 1 - newContributor: false - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 1 - linesAdded: 18 - linesDeleted: 13 - rank: 2 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 23 - linesAdded: 1166 - linesDeleted: 515 - rank: 1 - newContributor: false - - username: VladimirNik - gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 - commits: 10 - linesAdded: 2647 - linesDeleted: 2416 - rank: 2 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 9 - linesAdded: 662 - linesDeleted: 339 - rank: 3 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 8 - linesAdded: 277 - linesDeleted: 75 - rank: 4 - newContributor: false - - username: pavelpavlov - gravatar: https://avatars0.githubusercontent.com/u/1330451?v=2&s=60 - commits: 3 - linesAdded: 44 - linesDeleted: 54 - rank: 5 - newContributor: false - - username: Blaisorblade - gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 - commits: 3 - linesAdded: 6 - linesDeleted: 5 - rank: 5 - newContributor: false - - username: soc - gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 - commits: 3 - linesAdded: 476 - linesDeleted: 338 - rank: 5 - newContributor: false - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 2 - linesAdded: 7 - linesDeleted: 7 - rank: 6 - newContributor: false - - username: greenrd - gravatar: https://avatars1.githubusercontent.com/u/164965?v=2&s=60 - commits: 1 - linesAdded: 2 - linesDeleted: 3 - rank: 7 - newContributor: false - - username: clhodapp - gravatar: https://avatars0.githubusercontent.com/u/108633?v=2&s=60 - commits: 1 - linesAdded: 228 - linesDeleted: 0 - rank: 7 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md b/contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md deleted file mode 100644 index 954a870612..0000000000 --- a/contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: famearchive -title: Contributors of March 2014 -fame-year: 2014 -fame-month: 3 -fame-month-str: March -fame-categories: - - category: Typesafe - authors: - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 79 - linesAdded: 24547 - linesDeleted: 24999 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 21 - linesAdded: 622 - linesDeleted: 101 - rank: 2 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 3 - linesAdded: 236 - linesDeleted: 6 - rank: 3 - newContributor: false - - username: huitseeker - gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 - commits: 2 - linesAdded: 4 - linesDeleted: 2 - rank: 4 - newContributor: false - - username: szeiger - gravatar: https://avatars3.githubusercontent.com/u/54262?v=2&s=60 - commits: 1 - linesAdded: 8 - linesDeleted: 1 - rank: 5 - newContributor: false - - username: viktorklang - gravatar: https://avatars0.githubusercontent.com/u/10871?v=2&s=60 - commits: 1 - linesAdded: 7 - linesDeleted: 2 - rank: 5 - newContributor: false - - username: paulp - gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 - commits: 1 - linesAdded: 20 - linesDeleted: 3 - rank: 5 - newContributor: false - - category: EPFL - authors: - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 10 - linesAdded: 379 - linesDeleted: 76 - rank: 1 - newContributor: false - - category: Community - authors: - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 13 - linesAdded: 589 - linesDeleted: 115 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 4 - linesAdded: 31 - linesDeleted: 23 - rank: 2 - newContributor: false - - username: VladimirNik - gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 - commits: 2 - linesAdded: 1778 - linesDeleted: 1441 - rank: 3 - newContributor: false - - username: mkubala - gravatar: https://avatars0.githubusercontent.com/u/328844?v=2&s=60 - commits: 1 - linesAdded: 247 - linesDeleted: 53 - rank: 4 - newContributor: false - - username: puffnfresh - gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 - commits: 1 - linesAdded: 0 - linesDeleted: 1 - rank: 4 - newContributor: false - - username: iainmcgin - gravatar: https://avatars0.githubusercontent.com/u/309153?v=2&s=60 - commits: 1 - linesAdded: 20 - linesDeleted: 19 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md b/contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md deleted file mode 100644 index 66c6819f17..0000000000 --- a/contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: famearchive -title: Contributors of April 2014 -fame-year: 2014 -fame-month: 4 -fame-month-str: April -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 9 - linesAdded: 177 - linesDeleted: 34 - rank: 1 - newContributor: false - - username: huitseeker - gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 - commits: 1 - linesAdded: 16 - linesDeleted: 1 - rank: 2 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 1 - linesAdded: 10 - linesDeleted: 3 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 1 - linesAdded: 34 - linesDeleted: 2 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 2 - linesAdded: 202 - linesDeleted: 75 - rank: 1 - newContributor: false - - username: VladUreche - gravatar: https://avatars0.githubusercontent.com/u/428706?v=2&s=60 - commits: 1 - linesAdded: 24 - linesDeleted: 3 - rank: 2 - newContributor: false - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 1 - linesAdded: 12 - linesDeleted: 1 - rank: 2 - newContributor: false - - category: Community - authors: - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 3 - linesAdded: 51 - linesDeleted: 5 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 2 - linesAdded: 110 - linesDeleted: 51 - rank: 2 - newContributor: false - - username: lefou - gravatar: https://avatars2.githubusercontent.com/u/1321393?v=2&s=60 - commits: 1 - linesAdded: 45 - linesDeleted: 8 - rank: 3 - newContributor: false - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 1 - linesAdded: 4 - linesDeleted: 5 - rank: 3 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md b/contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md deleted file mode 100644 index f9191afb17..0000000000 --- a/contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: famearchive -title: Contributors of May 2014 -fame-year: 2014 -fame-month: 5 -fame-month-str: May -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 32 - linesAdded: 951 - linesDeleted: 136 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 9 - linesAdded: 21 - linesDeleted: 70 - rank: 2 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 3 - linesAdded: 13 - linesDeleted: 18 - rank: 3 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 23 - linesAdded: 6048 - linesDeleted: 2325 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 3 - linesAdded: 93 - linesDeleted: 3 - rank: 2 - newContributor: false - - category: Community - authors: - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 12 - linesAdded: 442 - linesDeleted: 238 - rank: 1 - newContributor: false - - username: lefou - gravatar: https://avatars2.githubusercontent.com/u/1321393?v=2&s=60 - commits: 3 - linesAdded: 14 - linesDeleted: 24 - rank: 2 - newContributor: false - - username: tvierling - gravatar: https://avatars3.githubusercontent.com/u/397857?v=2&s=60 - commits: 2 - linesAdded: 35 - linesDeleted: 11 - rank: 3 - newContributor: true - - username: clhodapp - gravatar: https://avatars0.githubusercontent.com/u/108633?v=2&s=60 - commits: 2 - linesAdded: 98 - linesDeleted: 51 - rank: 3 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 2 - linesAdded: 55 - linesDeleted: 16 - rank: 3 - newContributor: false - - username: mkubala - gravatar: https://avatars0.githubusercontent.com/u/328844?v=2&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 0 - rank: 4 - newContributor: false - - username: jedesah - gravatar: https://avatars1.githubusercontent.com/u/1780116?v=2&s=60 - commits: 1 - linesAdded: 23 - linesDeleted: 1 - rank: 4 - newContributor: false - - username: VladimirNik - gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 - commits: 1 - linesAdded: 78 - linesDeleted: 40 - rank: 4 - newContributor: false - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 1 - linesAdded: 14 - linesDeleted: 0 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md b/contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md deleted file mode 100644 index 5f051d08a7..0000000000 --- a/contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: famearchive -title: Contributors of June 2014 -fame-year: 2014 -fame-month: 6 -fame-month-str: June -fame-categories: - - category: Typesafe - authors: - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 14 - linesAdded: 873 - linesDeleted: 661 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 8 - linesAdded: 166 - linesDeleted: 126 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 16 - linesAdded: 1865 - linesDeleted: 437 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 4 - linesAdded: 164 - linesDeleted: 44 - rank: 2 - newContributor: false - - username: odersky - gravatar: https://avatars2.githubusercontent.com/u/795990?v=2&s=60 - commits: 1 - linesAdded: 36 - linesDeleted: 10 - rank: 3 - newContributor: false - - category: Community - authors: - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 7 - linesAdded: 275 - linesDeleted: 57 - rank: 1 - newContributor: false - - username: jxcoder - gravatar: https://avatars1.githubusercontent.com/u/1075547?v=2&s=60 - commits: 4 - linesAdded: 41 - linesDeleted: 19 - rank: 2 - newContributor: true - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 2 - linesAdded: 20 - linesDeleted: 6 - rank: 3 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 2 - linesAdded: 146 - linesDeleted: 41 - rank: 3 - newContributor: false - - username: jrudolph - gravatar: https://avatars1.githubusercontent.com/u/9868?v=2&s=60 - commits: 1 - linesAdded: 97 - linesDeleted: 4 - rank: 4 - newContributor: false - - username: Blaisorblade - gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 - commits: 1 - linesAdded: 6 - linesDeleted: 1 - rank: 4 - newContributor: false - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 1 - linesAdded: 17 - linesDeleted: 5 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md b/contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md deleted file mode 100644 index c57474778d..0000000000 --- a/contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: famearchive -title: Contributors of July 2014 -fame-year: 2014 -fame-month: 7 -fame-month-str: July -fame-categories: - - category: Typesafe - authors: - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 31 - linesAdded: 775 - linesDeleted: 712 - rank: 1 - newContributor: false - - username: phaller - gravatar: https://avatars0.githubusercontent.com/u/289943?v=2&s=60 - commits: 3 - linesAdded: 161 - linesDeleted: 49 - rank: 2 - newContributor: false - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 1 - linesAdded: 35 - linesDeleted: 34 - rank: 3 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 4 - linesAdded: 84 - linesDeleted: 29 - rank: 1 - newContributor: false - - category: Community - authors: - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 11 - linesAdded: 330 - linesDeleted: 226 - rank: 1 - newContributor: false - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 5 - linesAdded: 217 - linesDeleted: 94 - rank: 2 - newContributor: false - - username: dhgarrette - gravatar: https://avatars2.githubusercontent.com/u/484190?v=2&s=60 - commits: 2 - linesAdded: 1 - linesDeleted: 3 - rank: 3 - newContributor: true - - username: pocket7878 - gravatar: https://avatars1.githubusercontent.com/u/236528?v=2&s=60 - commits: 2 - linesAdded: 21 - linesDeleted: 13 - rank: 3 - newContributor: true - - username: dgruntz - gravatar: https://avatars3.githubusercontent.com/u/1516800?v=2&s=60 - commits: 2 - linesAdded: 4 - linesDeleted: 4 - rank: 3 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 1 - linesAdded: 26 - linesDeleted: 9 - rank: 4 - newContributor: false - - username: kzys - gravatar: https://avatars2.githubusercontent.com/u/19111?v=2&s=60 - commits: 1 - linesAdded: 19 - linesDeleted: 0 - rank: 4 - newContributor: false - - username: densh - gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 - commits: 1 - linesAdded: 3 - linesDeleted: 1 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md b/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md deleted file mode 100644 index afef86d3be..0000000000 --- a/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: famearchive -title: Contributors of August 2014 -fame-year: 2014 -fame-month: 8 -fame-month-str: August -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 3 - linesAdded: 57 - linesDeleted: 4 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 2 - linesAdded: 57 - linesDeleted: 42 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 21 - linesAdded: 3764 - linesDeleted: 2122 - rank: 1 - newContributor: false - - category: Community - authors: - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 10 - linesAdded: 171 - linesDeleted: 7680 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 10 - linesAdded: 917 - linesDeleted: 543 - rank: 1 - newContributor: false - - username: gbasler - gravatar: https://avatars1.githubusercontent.com/u/273035?v=2&s=60 - commits: 1 - linesAdded: 14 - linesDeleted: 22 - rank: 2 - newContributor: false - - username: dgruntz - gravatar: https://avatars3.githubusercontent.com/u/1516800?v=2&s=60 - commits: 1 - linesAdded: 18 - linesDeleted: 18 - rank: 2 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 1 - linesAdded: 26 - linesDeleted: 27 - rank: 2 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md b/contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md deleted file mode 100644 index ee67016186..0000000000 --- a/contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: famearchive -title: Contributors of September 2014 -fame-year: 2014 -fame-month: 9 -fame-month-str: September -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 12 - linesAdded: 182 - linesDeleted: 23 - rank: 1 - newContributor: false - - username: dragos - gravatar: https://avatars2.githubusercontent.com/u/133742?v=2&s=60 - commits: 1 - linesAdded: 169 - linesDeleted: 169 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 6 - linesAdded: 262 - linesDeleted: 85 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 - commits: 3 - linesAdded: 1272 - linesDeleted: 1240 - rank: 2 - newContributor: false - - category: Community - authors: - - username: gourlaysama - gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 - commits: 9 - linesAdded: 1782 - linesDeleted: 1227 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 - commits: 4 - linesAdded: 305 - linesDeleted: 125 - rank: 2 - newContributor: false - - username: puffnfresh - gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 - commits: 3 - linesAdded: 42 - linesDeleted: 7 - rank: 3 - newContributor: false - - username: Ichoran - gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 - commits: 2 - linesAdded: 12 - linesDeleted: 1 - rank: 4 - newContributor: false - - username: gbasler - gravatar: https://avatars1.githubusercontent.com/u/273035?v=2&s=60 - commits: 1 - linesAdded: 115 - linesDeleted: 41 - rank: 5 - newContributor: false - - username: soc - gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 - commits: 1 - linesAdded: 4 - linesDeleted: 1 - rank: 5 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md b/contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md deleted file mode 100644 index 0c957577fb..0000000000 --- a/contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: famearchive -title: Contributors of October 2014 -fame-year: 2014 -fame-month: 10 -fame-month-str: October -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 - commits: 11 - linesAdded: 414 - linesDeleted: 51 - rank: 1 - newContributor: false - - username: gkossakowski - gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 - commits: 2 - linesAdded: 2 - linesDeleted: 2 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 - commits: 2 - linesAdded: 54 - linesDeleted: 18 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 - commits: 4 - linesAdded: 146 - linesDeleted: 171 - rank: 1 - newContributor: false - - category: Community - authors: - - username: roberthoedicke - gravatar: https://avatars0.githubusercontent.com/u/9093826?v=2&s=60 - commits: 9 - linesAdded: 15 - linesDeleted: 15 - rank: 1 - newContributor: true - - username: puffnfresh - gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 - commits: 1 - linesAdded: 19 - linesDeleted: 10 - rank: 2 - newContributor: false - - username: Blaisorblade - gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 - commits: 1 - linesAdded: 0 - linesDeleted: 93 - rank: 2 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md b/contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md deleted file mode 100644 index 3c95eb2521..0000000000 --- a/contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: famearchive -title: Contributors of November 2014 -fame-year: 2014 -fame-month: 11 -fame-month-str: November -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 - commits: 24 - linesAdded: 650 - linesDeleted: 90 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 - commits: 3 - linesAdded: 208 - linesDeleted: 54 - rank: 2 - newContributor: false - - username: phaller - gravatar: https://avatars1.githubusercontent.com/u/289943?v=3&s=60 - commits: 1 - linesAdded: 10 - linesDeleted: 8 - rank: 3 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 - commits: 6 - linesAdded: 782 - linesDeleted: 32 - rank: 1 - newContributor: false - - username: heathermiller - gravatar: https://avatars1.githubusercontent.com/u/687163?v=3&s=60 - commits: 2 - linesAdded: 64 - linesDeleted: 66 - rank: 2 - newContributor: false - - category: Community - authors: - - username: gourlaysama - gravatar: https://avatars3.githubusercontent.com/u/733438?v=3&s=60 - commits: 7 - linesAdded: 245 - linesDeleted: 83 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 - commits: 3 - linesAdded: 53 - linesDeleted: 53 - rank: 2 - newContributor: false - - username: advancedxy - gravatar: https://avatars1.githubusercontent.com/u/807537?v=3&s=60 - commits: 2 - linesAdded: 2 - linesDeleted: 2 - rank: 3 - newContributor: true - - username: kanielc - gravatar: https://avatars1.githubusercontent.com/u/1334074?v=3&s=60 - commits: 2 - linesAdded: 3 - linesDeleted: 3 - rank: 3 - newContributor: true - - username: gdickinson - gravatar: https://avatars3.githubusercontent.com/u/1130928?v=3&s=60 - commits: 2 - linesAdded: 0 - linesDeleted: 380 - rank: 3 - newContributor: true - - username: Ichoran - gravatar: https://avatars2.githubusercontent.com/u/2298644?v=3&s=60 - commits: 2 - linesAdded: 35 - linesDeleted: 18 - rank: 3 - newContributor: false - - username: ruippeixotog - gravatar: https://avatars1.githubusercontent.com/u/613493?v=3&s=60 - commits: 1 - linesAdded: 81 - linesDeleted: 8 - rank: 4 - newContributor: false - - username: mpociecha - gravatar: https://avatars0.githubusercontent.com/u/6143494?v=3&s=60 - commits: 1 - linesAdded: 5 - linesDeleted: 2 - rank: 4 - newContributor: false - - username: soc - gravatar: https://avatars1.githubusercontent.com/u/42493?v=3&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md b/contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md deleted file mode 100644 index c11348b33a..0000000000 --- a/contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: famearchive -title: Contributors of December 2014 -fame-year: 2014 -fame-month: 12 -fame-month-str: December -fame-categories: - - category: Typesafe - authors: - - username: adriaanm - gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 - commits: 2 - linesAdded: 962 - linesDeleted: 290 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 - commits: 1 - linesAdded: 5 - linesDeleted: 1 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 - commits: 4 - linesAdded: 61 - linesDeleted: 50 - rank: 1 - newContributor: false - - category: Community - authors: - - username: gbasler - gravatar: https://avatars0.githubusercontent.com/u/273035?v=3&s=60 - commits: 2 - linesAdded: 567 - linesDeleted: 1 - rank: 1 - newContributor: false - - username: kanielc - gravatar: https://avatars1.githubusercontent.com/u/1334074?v=3&s=60 - commits: 1 - linesAdded: 43 - linesDeleted: 6 - rank: 2 - newContributor: false - - username: xuwei-k - gravatar: https://avatars2.githubusercontent.com/u/389787?v=3&s=60 - commits: 1 - linesAdded: 2 - linesDeleted: 2 - rank: 2 - newContributor: false - - username: gourlaysama - gravatar: https://avatars3.githubusercontent.com/u/733438?v=3&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 2 - newContributor: false - - username: som-snytt - gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 - commits: 1 - linesAdded: 44 - linesDeleted: 3 - rank: 2 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md b/contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md deleted file mode 100644 index 4af6e3d778..0000000000 --- a/contribute/scala-fame-data/_posts/2015-02-01-scala-fame-2015-01.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: famearchive -title: Contributors of January 2015 -fame-year: 2015 -fame-month: 1 -fame-month-str: January -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 - commits: 10 - linesAdded: 222 - linesDeleted: 26 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 - commits: 4 - linesAdded: 819 - linesDeleted: 636 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 - commits: 4 - linesAdded: 470 - linesDeleted: 152 - rank: 1 - newContributor: false - - category: Community - authors: - - username: kanielc - gravatar: https://avatars1.githubusercontent.com/u/1334074?v=3&s=60 - commits: 2 - linesAdded: 58 - linesDeleted: 2 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 - commits: 2 - linesAdded: 35 - linesDeleted: 41 - rank: 1 - newContributor: false - - username: dickwall - gravatar: https://avatars2.githubusercontent.com/u/56453?v=3&s=60 - commits: 1 - linesAdded: 74 - linesDeleted: 0 - rank: 2 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md b/contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md deleted file mode 100644 index 3fe846623b..0000000000 --- a/contribute/scala-fame-data/_posts/2015-03-01-scala-fame-2015-02.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: famearchive -title: Contributors of February 2015 -fame-year: 2015 -fame-month: 2 -fame-month-str: February -fame-categories: - - category: Typesafe - authors: - - username: adriaanm - gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 - commits: 15 - linesAdded: 1199 - linesDeleted: 588 - rank: 1 - newContributor: false - - username: retronym - gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 - commits: 13 - linesAdded: 557 - linesDeleted: 64 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 - commits: 10 - linesAdded: 1629 - linesDeleted: 276 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://avatars0.githubusercontent.com/u/609152?v=3&s=60 - commits: 2 - linesAdded: 108 - linesDeleted: 15 - rank: 2 - newContributor: false - - username: axel22 - gravatar: https://avatars0.githubusercontent.com/u/151774?v=3&s=60 - commits: 1 - linesAdded: 61 - linesDeleted: 0 - rank: 3 - newContributor: false - - category: Community - authors: - - username: Ichoran - gravatar: https://avatars2.githubusercontent.com/u/2298644?v=3&s=60 - commits: 3 - linesAdded: 62 - linesDeleted: 25 - rank: 1 - newContributor: false - - username: som-snytt - gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 - commits: 2 - linesAdded: 121 - linesDeleted: 30 - rank: 2 - newContributor: false - - username: milessabin - gravatar: https://avatars1.githubusercontent.com/u/131183?v=3&s=60 - commits: 1 - linesAdded: 123 - linesDeleted: 37 - rank: 3 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md b/contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md deleted file mode 100644 index 62e7ea2f58..0000000000 --- a/contribute/scala-fame-data/_posts/2015-04-01-scala-fame-2015-03.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: famearchive -title: Contributors of March 2015 -fame-year: 2015 -fame-month: 3 -fame-month-str: March -fame-categories: - - category: Typesafe - authors: - - username: retronym - gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 - commits: 9 - linesAdded: 553 - linesDeleted: 27 - rank: 1 - newContributor: false - - username: adriaanm - gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 - commits: 6 - linesAdded: 12 - linesDeleted: 72 - rank: 2 - newContributor: false - - category: EPFL - authors: - - username: lrytz - gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 - commits: 18 - linesAdded: 2857 - linesDeleted: 916 - rank: 1 - newContributor: false - - username: xeno-by - gravatar: https://avatars0.githubusercontent.com/u/609152?v=3&s=60 - commits: 1 - linesAdded: 7 - linesDeleted: 5 - rank: 2 - newContributor: false - - category: Community - authors: - - username: gourlaysama - gravatar: https://avatars3.githubusercontent.com/u/733438?v=3&s=60 - commits: 4 - linesAdded: 132 - linesDeleted: 22 - rank: 1 - newContributor: false - - username: gbasler - gravatar: https://avatars0.githubusercontent.com/u/273035?v=3&s=60 - commits: 3 - linesAdded: 1986 - linesDeleted: 111 - rank: 2 - newContributor: false - - username: kzys - gravatar: https://avatars3.githubusercontent.com/u/19111?v=3&s=60 - commits: 2 - linesAdded: 37 - linesDeleted: 18 - rank: 3 - newContributor: false - - username: som-snytt - gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 - commits: 2 - linesAdded: 91 - linesDeleted: 7 - rank: 3 - newContributor: false - - username: sschaef - gravatar: https://avatars3.githubusercontent.com/u/488530?v=3&s=60 - commits: 1 - linesAdded: 1 - linesDeleted: 1 - rank: 4 - newContributor: false - - username: khernyo - gravatar: https://avatars2.githubusercontent.com/u/447532?v=3&s=60 - commits: 1 - linesAdded: 27 - linesDeleted: 8 - rank: 4 - newContributor: false - - username: soc - gravatar: https://avatars1.githubusercontent.com/u/42493?v=3&s=60 - commits: 1 - linesAdded: 7 - linesDeleted: 7 - rank: 4 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md b/contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md deleted file mode 100644 index 41698296db..0000000000 --- a/contribute/scala-fame-data/_posts/2015-11-01-scala-fame-2015-10.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: famearchive -title: Contributors of October 2015 -fame-year: 2015 -fame-month: 10 -fame-month-str: October -fame-categories: - - category: Typesafe - authors: - - username: SethTisue - gravatar: https://avatars.githubusercontent.com/u/161079?v=3 - commits: 9 - linesAdded: 80 - linesDeleted: 55 - rank: 1 - newContributor: false - - category: EPFL - authors: - - username: sjrd - gravatar: https://avatars.githubusercontent.com/u/535934?v=3 - commits: 1 - linesAdded: 1 - linesDeleted: 4 - rank: 1 - newContributor: false - - category: Community - authors: - - username: performantdata - gravatar: https://avatars.githubusercontent.com/u/6363453?v=3 - commits: 6 - linesAdded: 97 - linesDeleted: 50 - rank: 1 - newContributor: true - - username: janekdb - gravatar: https://avatars.githubusercontent.com/u/1123855?v=3 - commits: 1 - linesAdded: 86 - linesDeleted: 71 - rank: 2 - newContributor: false ---- diff --git a/contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md b/contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md deleted file mode 100644 index 8f9b7ff3b1..0000000000 --- a/contribute/scala-fame-data/_posts/2015-12-01-scala-fame-2015-11.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: famearchive -title: Contributors of November 2015 -fame-year: 2015 -fame-month: 11 -fame-month-str: November -fame-categories: - - category: Typesafe - authors: - - username: szeiger - gravatar: https://avatars.githubusercontent.com/u/54262?v=3 - commits: 5 - linesAdded: 427 - linesDeleted: 116 - rank: 1 - newContributor: false - - username: SethTisue - gravatar: https://avatars.githubusercontent.com/u/161079?v=3 - commits: 3 - linesAdded: 21 - linesDeleted: 21 - rank: 2 - newContributor: false - - username: retronym - gravatar: https://avatars.githubusercontent.com/u/65551?v=3 - commits: 3 - linesAdded: 44 - linesDeleted: 28 - rank: 2 - newContributor: false - - username: adriaanm - gravatar: https://avatars.githubusercontent.com/u/91083?v=3 - commits: 2 - linesAdded: 22 - linesDeleted: 25 - rank: 3 - newContributor: false - - username: lrytz - gravatar: https://avatars.githubusercontent.com/u/119636?v=3 - commits: 1 - linesAdded: 7 - linesDeleted: 18 - rank: 4 - newContributor: false - - category: EPFL - authors: - - category: Community - authors: - - username: janekdb - gravatar: https://avatars.githubusercontent.com/u/1123855?v=3 - commits: 6 - linesAdded: 76 - linesDeleted: 63 - rank: 1 - newContributor: false - - username: soc - gravatar: https://avatars.githubusercontent.com/u/42493?v=3 - commits: 2 - linesAdded: 14 - linesDeleted: 19 - rank: 2 - newContributor: false ---- diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md deleted file mode 100644 index 4b6591004a..0000000000 --- a/contribute/scala-fame.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page-full-width -title: Scala Contributor Hall of Fame ---- - -A big thank you to everyone who has contributed over the years to: - - - [the Scala library and compiler](https://github.com/scala/scala/contributors) - - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) - -What follows are the commit totals, to the 2.12.x branch of the scala/scala repo only, -for last month. (For a commit to be counted, it must have been both committed and merged -in the same month.) - -For a more detailed view of recent activity, see the repo's -[GitHub Pulse page](https://github.com/scala/scala/pulse/monthly). - -{% for data in site.categories.scala-fame-data limit:1 %} - {% assign famedata = data %} - {% include render-scala-fame.html %} -{% endfor %} From 76fa6b98681ed1603718b99c6c20ec003b11025b Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 24 Feb 2016 16:48:19 -0500 Subject: [PATCH 0094/1704] Typesafe -> Lightbend in a bunch of places --- contribute/documentation.md | 4 ++-- contribute/guide.md | 2 +- contribute/hacker-guide.md | 2 +- contribute/index.md | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index d7597d8884..6b5c81a0fc 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -30,10 +30,10 @@ without creating an issue, but please look to see if there is an issue already s ### Examples/Tutorials in Activator Templates -[Typesafe Activator](https://typesafe.com/community/core-tools/activator-and-sbt) +[Lightbend Activator](https://www.lightbend.com/community/core-tools/activator-and-sbt) is a tool based on SBT, with a UI mode that is ideal for code based tutorials, overviews and walk-throughs. To contribute an example in activator, you can fork an existing template, edit it, add a tutorial, upload it to github and then submit the github project into the template repository. It's the fastest way to produce a working code example with tutorial. -Please see [Contributing an Activator Template](https://typesafe.com/activator/template/contribute) for more details. +Please see [Contributing an Activator Template](https://www.lightbend.com/activator/template/contribute) for more details. ### The Main Scala Documentation Site diff --git a/contribute/guide.md b/contribute/guide.md index 148ceb7570..b92bd2fe89 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -44,7 +44,7 @@ Typically the scaladoc tool provides a low entry point for new committers, so it On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. If you are interested in contributing code, we ask you to sign the -[Scala Contributor License Agreement](http://typesafe.com/contribute/cla/scala), +[Scala Contributor License Agreement](http://www.lightbend.com/contribute/cla/scala), which allows us to ensure that all code submitted to the project is unencumbered by copyrights or patents. diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index fb79d8166d..47ebafe634 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -402,7 +402,7 @@ Once you are satisfied with your work, synced with `master` and cleaned up your Now, we must simply submit our proposed patch. Navigate to your branch in GitHub (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will -need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. +need to sign the contributor license agreement, which [can be done online](http://www.lightbend.com/contribute/cla/scala) within a few minutes. Submit a pull request diff --git a/contribute/index.md b/contribute/index.md index 137838aba4..925e83248e 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -27,7 +27,7 @@ Coordination of contribution efforts takes place on the
@@ -119,7 +119,7 @@ to build and test a corpus of Scala open source projects against development versions of the Scala compiler and standard library in order to discover regressions prior to releases. -The build uses Typesafe's +The build uses Lightbend's [dbuild](https://github.com/typesafehub/dbuild) tool, which leverages [sbt](http://www.scala-sbt.org). From 55dfcf608ea8e8fd8a648ffa99ee9ccf45ae0486 Mon Sep 17 00:00:00 2001 From: Chase Long Date: Mon, 6 Jun 2016 21:12:56 -0500 Subject: [PATCH 0095/1704] Replace references to ant with corresponding sbt references --- contribute/hacker-guide.md | 105 ++++++++++--------------------------- 1 file changed, 29 insertions(+), 76 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 47ebafe634..dab991eba5 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -100,47 +100,25 @@ If you are new to Git and branching, read the [Branching Chapter](http://git-scm The next step after cloning your fork is setting up your machine to build Scala. -* It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). -* The build tool is `ant`. If you are behind a HTTP proxy, include [`ANT_ARGS=-autoproxy`](https://ant.apache.org/manual/proxy.html) in your environment. -* The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. -* The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. -* Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. +You need the following tools: -Building Scala is as easy as running `ant` in the root of your cloned repository. Be prepared to wait for a while-- a full "clean" build -takes 8+ minutes depending on your machine (and up to 30 minutes on older machines with less memory). Incremental builds are usually within 30-120 seconds range (again, your mileage might vary -with your hardware). - - 16:50 ~/Projects/scala (ticket/6725)$ ant - Buildfile: /Users/xeno_by/Projects/scala/build.xml - - strap.clean: - - pack.clean: - - init.jars.check: - - init.jars: - [echo] Updating bootstrap libs. (To do this by hand, run ./pull-binary-libs.sh) - [exec] Resolving [943cd5c8802b2a3a64a010efb86ec19bac142e40/lib/ant/ant-contrib.jar] - - ... - - pack.bin: - [mkdir] Created dir: /Users/xeno_by/Projects/scala/build/pack/bin +* A Java SDK. The baseline version is 6 for 2.11.x and 8 for 2.12.x. It's possible to use a later SDK for local development, but the continuous integration builds will verify against the baseline version. +* `sbt`, an interactive build tool commonly used in Scala projects. Acquiring sbt manually is not necessary -- the recommended approach is to download the [sbt-extras runner script](https://github.com/paulp/sbt-extras/blob/master/sbt) and use it in place of `sbt`. The script will download and run the correct version of sbt when run from the Scala repository's root directory. +* `curl` -- the build uses `curl` in the `pull-binary-libs.sh` script to download bootstrap libs. - pack.done: +The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. - build: - - BUILD SUCCESSFUL - Total time: 9 minutes 41 seconds +Building Scala is as easy as running `sbt dist/mkPack` in the root of your cloned repository. Be prepared to wait for a while -- a full "clean" build +takes 8+ minutes depending on your machine (and up to 30 minutes on older machines with less memory). Incremental builds are usually within 30-120 seconds range (again, your mileage might vary +with your hardware). ### IDE There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. -Both of those Scala plugins provide navigation, refactoring and error reporting functionality as well as integrated debugging. +Both of those Scala plugins provide navigation, refactoring, error reporting functionality, and integrated debugging. +See [the Scala README](https://github.com/scala/scala#ide-setup) for instructions on using Eclipse and IntelliJ IDEA with the Scala repository. There also exist lighter-weight editors such as Emacs, Sublime or jEdit which are faster and much less memory/compute-intensive to run, while lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, @@ -155,8 +133,8 @@ When hacking on your topic of choice, you'll be modifying Scala, compiling it an Typically you would want to first make sure that your changes work on a small example and afterwards verify that nothing break by running a comprehensive test suite. -We'll start by creating a `sandbox` directory (this particular name doesn't bear any special meaning), which will hold a single test file and its compilation results. First, let's make sure that -[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `ant`. The Scala compiler that we just built is located in `build/pack/bin`. +We'll start by creating a `sandbox` directory (`./sandbox is listed in the .gitignore of the Scala repository), which will hold a single test file and its compilation results. First, let's make sure that +[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `sbt`. The Scala compiler that we just built is located in `build/pack/bin`. 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox 17:26 ~/Projects/scala (ticket/6725)$ cd sandbox @@ -178,31 +156,24 @@ Now, implement your bugfix or new feature! Here are also some tips & tricks that have proven useful in Scala development: * If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, - try doing `ant clean build`. Due to the way how Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile - just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to - very strange errors. Full-rebuilds fix the problem. Fortunately that's rarely necessary, because full-rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. + try doing `sbt clean`. Due to the way Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile + just that trait; it might also be necessary to recompile its users. The `sbt` tool is not smart enough to do that, which might lead to + very strange errors. Full rebuilds fix the problem. Fortunately that's rarely necessary, because full rebuilds take a lot of time -- the same 8-30 minutes as mentioned above. * Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, - some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts ([here](https://github.com/adriaanm/binfu/blob/master/scafu.sh) are some examples to get you started) to launch Scala from `build/quick/classes`. + some people in our team do `sbt compile` instead of `sbt dist/mkPack` and then create custom scripts using `sbt/mkBin` to launch Scala from `./build/quick/bin`. Also see [the Scala README](https://github.com/scala/scala#incremental-compilation) for tips on speeding up compile times. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious - to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. -* You can publish your newly-built scala version locally to use it from sbt. Here's how: + to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use the Scala `showRaw` to get the `AST` representation. +* You can publish your newly-built scala version locally using `sbt publishLocal` to use it from `sbt`. Here's how: - $ ant publish-local-opt -Dmaven.version.suffix="-test" + $ sbt publishLocal // This may take a while + ... $ sbt - [info] Set current project to test (in build file:/Users/georgii/workspace/test/) - > set resolvers += Resolver.mavenLocal - [info] Defining *:resolvers - [info] The new value will be used by *:externalResolvers - [info] Reapplying settings... - [info] Set current project to test (in build file:/Users/georgii/workspace/test/) - > ++2.12.0-test - [info] Setting version to 2.12.0-test - [info] Set current project to test (in build file:/Users/georgii/workspace/test/) + ... > console [info] Starting scala interpreter... - [info] - Welcome to Scala version 2.12.0-20140623-155543-8bdacad317 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51). + [info] + Welcome to Scala version 2.10.6 (OpenJDK 64-Bit Server VM, Java 1.8.0_91). Type in expressions to have them evaluated. Type :help for more information. @@ -212,7 +183,7 @@ Here are also some tips & tricks that have proven useful in Scala development: ### Documentation -There are several areas that one could contribute to-- there is the Scala library, the Scala compiler, and other tools such as Scaladoc. Each area has varying amounts of documentation. +There are several areas that one could contribute to -- there is the Scala library, the Scala compiler, and other tools such as Scaladoc. Each area has varying amounts of documentation. ##### The Scala Library @@ -263,22 +234,12 @@ but not tokens like `%n`. Looks like an easy fix. start = idx + 1 } -After applying the fix and running `ant`, our simple test case in `sandbox/Test.scala` started working! +After applying the fix and running `sbt compile`, our simple test case in `sandbox/Test.scala` started working! 18:51 ~/Projects/scala/sandbox (ticket/6725)$ cd .. - 18:51 ~/Projects/scala (ticket/6725)$ ant - Buildfile: /Users/xeno_by/Projects/scala/build.xml - + 18:51 ~/Projects/scala (ticket/6725)$ sbt compile ... - - quick.comp: - [scalacfork] Compiling 1 file to /Users/xeno_by/Projects/scala/build/quick/classes/compiler - [propertyfile] Updating property file: /Users/xeno_by/Projects/scala/build/quick/classes/compiler/compiler.properties - [stopwatch] [quick.comp.timer: 6.588 sec] - - ... - - BUILD SUCCESSFUL + [success] Total time: 18 s, completed Jun 6, 2016 9:03:02 PM Total time: 18 seconds 18:51 ~/Projects/scala (ticket/6725)$ cd sandbox @@ -332,15 +293,7 @@ Here are some more testing tips: [mima] } [mima] - BUILD FAILED - /localhome/jenkins/c/workspace/pr-scala-test/scala/build.xml:1530: The following error occurred while executing this line: - /localhome/jenkins/c/workspace/pr-scala-test/scala/build-ant-macros.xml:791: The following error occurred while executing this line: - /localhome/jenkins/c/workspace/pr-scala-test/scala/build-ant-macros.xml:773: Java returned: 2 - - Total time: 6 minutes 46 seconds - Build step 'Execute shell' marked build as failure - Archiving artifacts - Notifying upstream projects of job completion + ... Finished: FAILURE This means your change is backward or forward binary incompatible with the specified version (the check is performed by the [migration manager](https://github.com/typesafehub/migration-manager)). The error message is actually saying what you need to add to `bincompat-backward.whitelist.conf` or `bincompat-forward.whitelist.conf` to make the error go away. If you are getting this on an internal/experimental api, it should be safe to add suggested sections to the config. Otherwise, you might want to target a newer version of scala for this change. @@ -349,7 +302,7 @@ This means your change is backward or forward binary incompatible with the speci Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. Read up [the partest guide](partest-guide.html) to learn the details about partest, but in a nutshell you can either -run `ant test` to go through the entire test suite (30+ minutes) or use wildcards to limit the tests to something manageable: +run `sbt test` to go through the entire test suite (30+ minutes) or use wildcards to limit the tests to something manageable: 18:52 ~/Projects/scala/sandbox (ticket/6725)$ cd ../test 18:56 ~/Projects/scala/test (ticket/6725)$ partest files/run/*interpol* From 5532eb46c8ccd199485ee7dff88d97ec06f9e30d Mon Sep 17 00:00:00 2001 From: Chase Long Date: Tue, 7 Jun 2016 21:37:25 -0500 Subject: [PATCH 0096/1704] Changes per PR feedback --- contribute/hacker-guide.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index dab991eba5..09eb50a8a3 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -106,10 +106,10 @@ You need the following tools: * `sbt`, an interactive build tool commonly used in Scala projects. Acquiring sbt manually is not necessary -- the recommended approach is to download the [sbt-extras runner script](https://github.com/paulp/sbt-extras/blob/master/sbt) and use it in place of `sbt`. The script will download and run the correct version of sbt when run from the Scala repository's root directory. * `curl` -- the build uses `curl` in the `pull-binary-libs.sh` script to download bootstrap libs. -The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. +OS X and Linux builds should work. Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. Building Scala is as easy as running `sbt dist/mkPack` in the root of your cloned repository. Be prepared to wait for a while -- a full "clean" build -takes 8+ minutes depending on your machine (and up to 30 minutes on older machines with less memory). Incremental builds are usually within 30-120 seconds range (again, your mileage might vary +takes 5+ minutes depending on your machine (longer on older machines with less memory). Incremental builds are usually within 20-120 seconds range (again, your mileage might vary with your hardware). ### IDE @@ -155,12 +155,8 @@ Now, implement your bugfix or new feature! Here are also some tips & tricks that have proven useful in Scala development: -* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, - try doing `sbt clean`. Due to the way Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile - just that trait; it might also be necessary to recompile its users. The `sbt` tool is not smart enough to do that, which might lead to - very strange errors. Full rebuilds fix the problem. Fortunately that's rarely necessary, because full rebuilds take a lot of time -- the same 8-30 minutes as mentioned above. -* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, - some people in our team do `sbt compile` instead of `sbt dist/mkPack` and then create custom scripts using `sbt/mkBin` to launch Scala from `./build/quick/bin`. Also see [the Scala README](https://github.com/scala/scala#incremental-compilation) for tips on speeding up compile times. +* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, some people in our team do `sbt compile` instead of `sbt dist/mkPack` and then create custom scripts using `sbt/mkBin` to launch Scala from `./build/quick/bin/`. Also see [the Scala README](https://github.com/scala/scala#incremental-compilation) for tips on speeding up compile times. +* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, try doing `sbt clean` and building again. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use the Scala `showRaw` to get the `AST` representation. @@ -300,9 +296,9 @@ This means your change is backward or forward binary incompatible with the speci ### Verify -Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. -Read up [the partest guide](partest-guide.html) to learn the details about partest, but in a nutshell you can either -run `sbt test` to go through the entire test suite (30+ minutes) or use wildcards to limit the tests to something manageable: +Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](http://junit.org/junit4/) and [partest](partest-guide.html), a tool we wrote for testing Scala. +Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, respectively. +`partest` (not `sbt partest`) also allows you to run a subset of the tests using wildcards: 18:52 ~/Projects/scala/sandbox (ticket/6725)$ cd ../test 18:56 ~/Projects/scala/test (ticket/6725)$ partest files/run/*interpol* From 1ea529f4b4c2372c17561398ca1927a004daf7d7 Mon Sep 17 00:00:00 2001 From: Chase Long Date: Mon, 13 Jun 2016 20:11:59 -0500 Subject: [PATCH 0097/1704] Correct misleading instructions for publishing a local Scala version --- contribute/hacker-guide.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 09eb50a8a3..3426f37f82 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -160,20 +160,26 @@ Here are also some tips & tricks that have proven useful in Scala development: * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use the Scala `showRaw` to get the `AST` representation. -* You can publish your newly-built scala version locally using `sbt publishLocal` to use it from `sbt`. Here's how: +* You can publish your newly-built scala version locally using `sbt publishLocal`. Then, you can invoke a REPL using your version: $ sbt publishLocal // This may take a while ... $ sbt ... - > console - [info] Starting scala interpreter... - [info] - Welcome to Scala version 2.10.6 (OpenJDK 64-Bit Server VM, Java 1.8.0_91). - Type in expressions to have them evaluated. - Type :help for more information. - - scala> + > scala + [info] Running scala.tools.nsc.MainGenericRunner -usejavacp + Welcome to Scala 2.12.0-20160613-195040-cd85531 (OpenJDK 64-Bit Server VM, Java 1.8.0_91). + Type in expressions for evaluation. Or try :help. + + scala> + +Alternatively, you can invoke a REPL using the bash script in `./build/quick/bin/`: + + $ ./build/quick/bin/scala + Welcome to Scala 2.12.0-20160613-195040-cd85531 (OpenJDK 64-Bit Server VM, Java 1.8.0_91). + Type in expressions for evaluation. Or try :help. + + scala> * Adding a macro to the `Predef` object is a pretty involved task. Due to bootstrapping, you cannot just throw a macro into it. For this reason, the process is more involved. You might want to follow the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (`def fn = macro ???`). Now you have to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. [Here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. From 2a94e25b660c8eed80c3e412933d61a2a7eb1835 Mon Sep 17 00:00:00 2001 From: Alex Xandra Albert Sim Date: Wed, 14 Sep 2016 16:27:15 +0700 Subject: [PATCH 0098/1704] Update Ensime's contributing and readme page The current "readme" and "contributing" links on Ensime gives us a standard Github 404 page. This commit updates the links to valid URLs. --- contribute/tools.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 1757ae1005..494d2e54cf 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -76,8 +76,8 @@ Stuff changes. Found a broken link or something that needs updating on this page

Scala Support for Text Editors

Home | Issues | -ReadMe | -Contributing

+ReadMe | +Contributing

@@ -126,4 +126,4 @@ The following projects are important to the Scala community but are particularly - \ No newline at end of file + From a41edfc053abb0e97d951e9fdd462ebec99135e8 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Wed, 26 Oct 2016 10:54:45 -0700 Subject: [PATCH 0099/1704] Implement some review feedback, some polish of my own Reworks #438 --- contribute/hacker-guide.md | 54 ++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 3426f37f82..09532edecd 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -108,9 +108,9 @@ You need the following tools: OS X and Linux builds should work. Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. -Building Scala is as easy as running `sbt dist/mkPack` in the root of your cloned repository. Be prepared to wait for a while -- a full "clean" build -takes 5+ minutes depending on your machine (longer on older machines with less memory). Incremental builds are usually within 20-120 seconds range (again, your mileage might vary -with your hardware). +Building Scala is as easy as running `sbt dist/mkPack` in the root of your cloned repository. In general, it's much more efficient to enter the `sbt` shell once and run the various tasks from there, instead of running each task by launching `sbt some-task` on your command prompt. + +Be prepared to wait for a while -- a full "clean" build takes 5+ minutes depending on your machine (longer on older machines with less memory). On a recent laptop, incremental builds usually complete within 10-30 seconds. ### IDE @@ -155,31 +155,33 @@ Now, implement your bugfix or new feature! Here are also some tips & tricks that have proven useful in Scala development: -* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, some people in our team do `sbt compile` instead of `sbt dist/mkPack` and then create custom scripts using `sbt/mkBin` to launch Scala from `./build/quick/bin/`. Also see [the Scala README](https://github.com/scala/scala#incremental-compilation) for tips on speeding up compile times. -* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, try doing `sbt clean` and building again. +* After building your working copy with the `compile` sbt task, there's no need to leave the comfort of your sbt shell to try it out: the REPL is available as the `scala` task, and you can also run the compiler using the `scalac` task. If you prefer to run the REPL outside sbt, you can generate the scripts in `build/quick/bin` using the `dist/mkQuick` task. +* The sbt workflow is also great for debugging, as you can simply create a remote debugging session in your favorite IDE, and then activate the JVM options for the next time you run the `scala` or `scalac` tasks using: + +``` +> set javaOptions in compiler := List("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8002") +> scalac test.scala +[info] Running scala.tools.nsc.Main -usejavacp test.scala +Listening for transport dt_socket at address: 8002 +``` + +* Also see [the Scala README](https://github.com/scala/scala#incremental-compilation) for tips on speeding up compile times. +* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, try the `clean` task and building again. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious - to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use the Scala `showRaw` to get the `AST` representation. -* You can publish your newly-built scala version locally using `sbt publishLocal`. Then, you can invoke a REPL using your version: - - $ sbt publishLocal // This may take a while - ... - $ sbt - ... - > scala - [info] Running scala.tools.nsc.MainGenericRunner -usejavacp - Welcome to Scala 2.12.0-20160613-195040-cd85531 (OpenJDK 64-Bit Server VM, Java 1.8.0_91). - Type in expressions for evaluation. Or try :help. - - scala> - -Alternatively, you can invoke a REPL using the bash script in `./build/quick/bin/`: - - $ ./build/quick/bin/scala - Welcome to Scala 2.12.0-20160613-195040-cd85531 (OpenJDK 64-Bit Server VM, Java 1.8.0_91). - Type in expressions for evaluation. Or try :help. - - scala> + to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. +* You can publish your newly-built scala version locally using the `publishLocal` task in sbt. +* It's convenient to enable the following local settings to speed up your workflow (put these in `local.sbt` in your working copy): +``` +// skip docs for local publishing +publishArtifact in (Compile, packageDoc) in ThisBuild := false +// set version based on current sha, so that you can easily consume this build from another sbt project +baseVersionSuffix := s"local-${Process("tools/get-scala-commit-sha").lines.head.substring(0, 7)}" +// show more logging during a partest run +testOptions in IntegrationTest in LocalProject("test") ++= Seq(Tests.Argument("--show-log"), Tests.Argument("--show-diff")) +// if incremental compilation is compiling too much (should be fine under sbt 0.13.13) +// antStyle := true +``` * Adding a macro to the `Predef` object is a pretty involved task. Due to bootstrapping, you cannot just throw a macro into it. For this reason, the process is more involved. You might want to follow the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (`def fn = macro ???`). Now you have to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. [Here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. From 6a5ddf970a857b71779f8e023147ac299f2b0d8d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 8 Nov 2016 14:11:21 -0800 Subject: [PATCH 0100/1704] fix Github -> GitHub --- contribute/codereviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 1b9a881b0c..a2df66bd10 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -43,7 +43,7 @@ own pull requests.

The Scala language web site.

-

All Scala Github Projects

+

All Scala GitHub Projects

For other PRs, follow the scala project from here.

From 78590ba20a3272880bd47994e5a31c7cbae24f01 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 15 Nov 2016 15:27:38 -0800 Subject: [PATCH 0101/1704] recommend sbt, not Activator and remove all mention of Activator from the site (well, except from some old release announcements) --- contribute/documentation.md | 8 -------- contribute/index.md | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index 6b5c81a0fc..b499571154 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -7,7 +7,6 @@ title: Documentation Contributions There are several ways you can help out with the improvement of Scala documentation. These include: * API Documentation in Scaladoc -* Code examples and tutorials in activator templates. * Guides, Overviews, Tutorials, Cheat Sheets and more on the docs.scala-lang.org site * Updating scala-lang.org @@ -28,13 +27,6 @@ Please *follow the issue submission process closely* to help prevent duplicate i [submit new Scaladoc](./scala-standard-library-api-documentation.html) without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. -### Examples/Tutorials in Activator Templates - -[Lightbend Activator](https://www.lightbend.com/community/core-tools/activator-and-sbt) -is a tool based on SBT, with a UI mode that is ideal for code based tutorials, overviews and walk-throughs. To contribute an example in activator, you can fork an existing template, edit it, add a tutorial, upload it to github and then submit the github project into the template repository. It's the fastest way to produce a working code example with tutorial. - -Please see [Contributing an Activator Template](https://www.lightbend.com/activator/template/contribute) for more details. - ### The Main Scala Documentation Site [docs.scala-lang.org](https://wiki.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a github project that you can fork and submit pull requests from. It includes: diff --git a/contribute/index.md b/contribute/index.md index 925e83248e..0a1e2fbaef 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -27,7 +27,7 @@ Coordination of contribution efforts takes place on the
From 891183e26da4c3f9ccbea5b5bb888aa40e682469 Mon Sep 17 00:00:00 2001 From: Jarrod Brockman Date: Wed, 16 Nov 2016 14:05:22 +0100 Subject: [PATCH 0102/1704] fix a lot of broken links --- contribute/codereviews.md | 2 +- contribute/documentation.md | 3 +-- contribute/guide.md | 9 ++++----- contribute/hacker-guide.md | 2 +- contribute/index.md | 2 +- contribute/scala-standard-library-api-documentation.md | 2 +- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index a2df66bd10..d0d9a111c3 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -5,7 +5,7 @@ title: Code Review Contributions ## Code Review Contributions In addition to [bug fixing](./guide.html), you can help us review -[waiting pull requests](#pull_requests_awaiting_comment). +[waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your own pull requests. diff --git a/contribute/documentation.md b/contribute/documentation.md index 6b5c81a0fc..27aab024d2 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -21,7 +21,7 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](./scala-standard-library-api-documentation.html#contribute_api_documentation_bug_reports) - +* [Log issues for missing scaladoc documentation](./scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. * [Claim Scaladoc Issues and Provide Documentation](./scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just @@ -61,4 +61,3 @@ to Scala and related projects) is provided on the main Please read both the [docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. - diff --git a/contribute/guide.md b/contribute/guide.md index b92bd2fe89..02b560b7fc 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -17,7 +17,7 @@ title: Contributing guide
-

Community issues

+

Community issues

Get cracking on some easy to approach issues.

@@ -52,9 +52,9 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](/contribute/index.html#community_tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please -[make sure it's not a duplicate](./bug-reporting-guide.html#reporting_confirmed_bugs_is_a_sin)). -2. Optional ([but recommended](./scala-internals.html#why_its_a_good_idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with +1. [Select a bug to fix from JIRA](/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please +[make sure it's not a duplicate](./bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). +2. Optional ([but recommended](./scala-internals.html#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with [these friendly people](./hacker-guide.html#connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](./hacker-guide.html#fork) and clone your fork (if you haven't already). 4. [Create a feature branch](./hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. @@ -77,4 +77,3 @@ on the [scala-internals](http://groups.google.com/group/scala-internals) mailing Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. - diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 09532edecd..897c97b1a2 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -28,7 +28,7 @@ Sometimes it's appealing to hack alone and not to have to interact with others o this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel +Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#mailing-lists) to find out how people feel about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. diff --git a/contribute/index.md b/contribute/index.md index 925e83248e..2fdf75fc71 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -56,7 +56,7 @@ Coordination of contribution efforts takes place on the

Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects.

-

Compiler/Language

+

Compiler/Language

Larger language features and compiler enhancements including language specification and SIPs.

diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index bc57a163df..37e84bd76e 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -75,7 +75,7 @@ component so that they show up in the correct issue filters. Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. -* [Forking the Repo](./hacker-guide.html#2_set_up) - follow the setup steps through +* [Forking the Repo](./hacker-guide.html#set-up) - follow the setup steps through the Branch section. If providing new documentation related to an existing JIRA issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated JIRA issue, use `scaladoc/xxxx` instead. From ffe3a69da6552a2a9a56da52b92d97665fb46863 Mon Sep 17 00:00:00 2001 From: Jarrod Brockman Date: Thu, 17 Nov 2016 08:52:08 +0100 Subject: [PATCH 0103/1704] fix blank alt tags --- contribute/tools.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 494d2e54cf..877297636c 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -24,7 +24,7 @@ Stuff changes. Found a broken link or something that needs updating on this page
- +sbt logo

sbt

Interactive build tool.

Home | @@ -33,7 +33,7 @@ Stuff changes. Found a broken link or something that needs updating on this page Contributing

- +scala logo

Scaladoc Tool

(Contribute through scala/scala)

Home | @@ -45,7 +45,7 @@ Stuff changes. Found a broken link or something that needs updating on this page

-

Scala IDE

+scala IDE logo

Scala IDE

The Eclipse Scala IDE project.

Home | Issues | @@ -53,7 +53,7 @@ Stuff changes. Found a broken link or something that needs updating on this page Contributing

-

DBuild

+dbuild logo

DBuild

Multi-project build tool.

Home | Issues | @@ -64,7 +64,7 @@ Stuff changes. Found a broken link or something that needs updating on this page

- +scala logo

Partest

Scala Compiler/Library Testing

Home | @@ -72,7 +72,7 @@ Stuff changes. Found a broken link or something that needs updating on this page ReadMe

-

Ensime

+ensime logo

Ensime

Scala Support for Text Editors

Home | Issues | @@ -83,7 +83,7 @@ Stuff changes. Found a broken link or something that needs updating on this page

-

Scoverage

+scoverage logo

Scoverage

Scala code coverage tool

Home | Issues | @@ -91,7 +91,7 @@ Stuff changes. Found a broken link or something that needs updating on this page Contributing

- +scala logo

Abide

Lint tooling for Scala

Home | @@ -109,7 +109,7 @@ The following projects are important to the Scala community but are particularly

- +scala logo

Scalap

Scala Decoder (part of scala/scala)

Issues | @@ -117,7 +117,7 @@ The following projects are important to the Scala community but are particularly Contributing

-

Scalariform

+white line

Scalariform

Scala code formatter

Home | Issues | From c46edc10b100bb44c25a54356e12b708b6975153 Mon Sep 17 00:00:00 2001 From: "Aaron S. Hawley" Date: Sat, 19 Nov 2016 09:55:19 -0500 Subject: [PATCH 0104/1704] Fix formatting problems in hacker guide --- contribute/hacker-guide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 897c97b1a2..db4e06e037 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -133,7 +133,7 @@ When hacking on your topic of choice, you'll be modifying Scala, compiling it an Typically you would want to first make sure that your changes work on a small example and afterwards verify that nothing break by running a comprehensive test suite. -We'll start by creating a `sandbox` directory (`./sandbox is listed in the .gitignore of the Scala repository), which will hold a single test file and its compilation results. First, let's make sure that +We'll start by creating a `sandbox` directory (`./sandbox` is listed in the .gitignore of the Scala repository), which will hold a single test file and its compilation results. First, let's make sure that [the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `sbt`. The Scala compiler that we just built is located in `build/pack/bin`. 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox @@ -172,6 +172,7 @@ Listening for transport dt_socket at address: 8002 to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. * You can publish your newly-built scala version locally using the `publishLocal` task in sbt. * It's convenient to enable the following local settings to speed up your workflow (put these in `local.sbt` in your working copy): + ``` // skip docs for local publishing publishArtifact in (Compile, packageDoc) in ThisBuild := false From c27f49c1cd951c31f7d3f2bf9b07f5d362acb967 Mon Sep 17 00:00:00 2001 From: Jarrod Brockman Date: Sun, 20 Nov 2016 09:47:02 +0100 Subject: [PATCH 0105/1704] fix miscellaneous links --- contribute/tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 877297636c..008a1425a1 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -12,12 +12,12 @@ Typically, issues for these projects will be reported and kept in the github pro Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. There are some projects in this section that are in -[particular need](#projects_in_particular_need) so please check those out +[particular need](#projects-in-particular-need) so please check those out if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating_scalalangorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating-scala-langorg) to fix it. ### Projects From f2b3a20ec9486c615eed8146248a9c23e450adef Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 7 Dec 2016 12:47:28 -0800 Subject: [PATCH 0106/1704] 2.11 -> 2.12 in some more places --- contribute/hacker-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index db4e06e037..8d7903fbea 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -8,7 +8,7 @@ This guide is intended to help you get from an idea of fixing a bug or implement This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. -Other good starting points for first-time contributors include the [Scala README](https://github.com/scala/scala#get-in-touch) and [contributor's guidelines](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md). +Other good starting points for first-time contributors include the [Scala README](https://github.com/scala/scala#get-in-touch) and [contributor's guidelines](https://github.com/scala/scala/blob/2.12.x/CONTRIBUTING.md). ## The Running Example @@ -336,7 +336,7 @@ Let's go into each of these points in more detail. The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. There are two things you should know here: -1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policies](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md) for more information about the desired style of your commits. +1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policies](https://github.com/scala/scala/blob/2.12.x/CONTRIBUTING.md) for more information about the desired style of your commits. 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on GitHub. From 1a258055bd0966a517c50f8113516e53f2393ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20de=20Sil=C3=B3niz=20Sandino?= Date: Wed, 8 Feb 2017 13:11:11 +0100 Subject: [PATCH 0107/1704] First migration of content pages to new content layout - First migration to using pretty permalinks --- contribute/bug-reporting-guide.md | 4 ++- contribute/codereviews.md | 10 ++++--- contribute/corelibs.md | 10 ++++--- contribute/documentation.md | 10 ++++--- contribute/guide.md | 30 ++++++++++--------- contribute/hacker-guide.md | 4 ++- contribute/index.md | 22 +++++++------- contribute/partest-guide.md | 4 ++- contribute/scala-internals.md | 4 ++- ...cala-standard-library-api-documentation.md | 4 ++- contribute/tools.md | 12 ++++---- 11 files changed, 68 insertions(+), 46 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 960f40b704..f4c8282a78 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -1,6 +1,8 @@ --- -layout: page title: Bug Reporting +layout: inner-page-no-masthead +permalink: /contribute/bug-reporting-guide/ +includeTOC: true --- The Scala project tracker is located at [http://issues.scala-lang.org](http://issues.scala-lang.org). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. diff --git a/contribute/codereviews.md b/contribute/codereviews.md index d0d9a111c3..9239fa8c14 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -1,10 +1,12 @@ --- -layout: page title: Code Review Contributions +layout: inner-page-no-masthead +permalink: /contribute/codereviews/ +includeTOC: true --- ## Code Review Contributions -In addition to [bug fixing](./guide.html), you can help us review +In addition to [bug fixing](/contribute/guide/), you can help us review [waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your @@ -13,7 +15,7 @@ own pull requests. ### Review Guidelines -[Code of Conduct reminder](../conduct.html) +[Code of Conduct reminder](/conduct/) * Keep comments on-topic, concise and precise. * Attach comments to particular lines or regions they pertain to whenever possible. @@ -49,4 +51,4 @@ own pull requests.

-Also note that the [Tools contributions](./tools.html) page has more projects that will generate pull requests. +Also note that the [Tools contributions](/contribute/tools/) page has more projects that will generate pull requests. diff --git a/contribute/corelibs.md b/contribute/corelibs.md index 6e1abbb0d7..1f34d150b0 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -1,14 +1,16 @@ --- -layout: page title: Core Library Contributions +layout: inner-page-no-masthead +permalink: /contribute/corelibs/ +includeTOC: true --- ## Core Library Contributions There are several options for contributing to Scala's core libraries. You can: -* Help with [Documentation](./scala-standard-library-api-documentation.html). -* [Report Bugs or Issues](./bug-reporting-guide.html) against the core libraries. -* [Fix Bugs or Issues](./guide.html) against the +* Help with [Documentation](/contribute/scala-standard-library-api-documentation/). +* [Report Bugs or Issues](/contribute/bug-reporting-guide/) against the core libraries. +* [Fix Bugs or Issues](/contribute/guide/) against the [reported library bugs/issues](https://issues.scala-lang.org/issues/?filter=13001). * Contribute significant new functionality or a new API by submitting a Scala Library Improvement Process (SLIP) Document. diff --git a/contribute/documentation.md b/contribute/documentation.md index 7657cbf699..2746fa77dc 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -1,6 +1,8 @@ --- -layout: page title: Documentation Contributions +layout: inner-page-no-masthead +permalink: /contribute/documentation/ +includeTOC: true --- ## Contributing Documentation to the Scala project @@ -20,11 +22,11 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](./scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation/#contribute-api-documentation-bug-reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. -* [Claim Scaladoc Issues and Provide Documentation](./scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. +* [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation/) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just -[submit new Scaladoc](./scala-standard-library-api-documentation.html) +[submit new Scaladoc](/contribute/scala-standard-library-api-documentation/) without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. ### The Main Scala Documentation Site diff --git a/contribute/guide.md b/contribute/guide.md index 02b560b7fc..afd3572c53 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -1,6 +1,8 @@ --- -layout: page title: Contributing guide +layout: inner-page-no-masthead +permalink: /contribute/guide/ +includeTOC: true ---
@@ -10,7 +12,7 @@ title: Contributing guide

Get a peek into the inners of the Scala compiler.

-

Report an issue

+

Report an issue

File a bug report or a feature request.

@@ -21,7 +23,7 @@ title: Contributing guide

Get cracking on some easy to approach issues.

-

Hacker's guide

+

Hacker's guide

Learn to write good code and improve your chances of contributing to the Scala galaxy.

@@ -52,19 +54,19 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](./bug-reporting-guide.html) (but please -[make sure it's not a duplicate](./bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). -2. Optional ([but recommended](./scala-internals.html#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](./scala-internals.html). After all, don't you want to work on a team with -[these friendly people](./hacker-guide.html#connect) - it's one of the perks of contributing. -3. [Fork the Scala repository](./hacker-guide.html#fork) and clone your fork (if you haven't already). -4. [Create a feature branch](./hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. -5. [Fix the bug, or implement the new small feature](./hacker-guide.html#implement), include new tests (yes, for bug fixes too). -6. [Test, rinse](./hacker-guide.html#test) and [test some more](./partest-guide.html) until [all the tests pass](./hacker-guide.html#verify). -7. [Commit your changes](./hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. +1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide/) (but please +[make sure it's not a duplicate](/contribute/bug-reporting-guide/#reporting-confirmed-bugs-is-a-sin)). +2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](/contribute/scala-internals/). After all, don't you want to work on a team with +[these friendly people](/contribute/hacker-guide/#connect) - it's one of the perks of contributing. +3. [Fork the Scala repository](/contribute/hacker-guide/#fork) and clone your fork (if you haven't already). +4. [Create a feature branch](/contribute/hacker-guide/#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. +5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide/#implement), include new tests (yes, for bug fixes too). +6. [Test, rinse](/contribute/hacker-guide/#test) and [test some more](/contribute/partest-guide/) until [all the tests pass](/contribute/hacker-guide/#verify). +7. [Commit your changes](/contribute/hacker-guide#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](http://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) 9. [Submit a pull request](./hacker-guide.html#submit) following the [Scala project pull-request guidelines](http://docs.scala-lang.org/scala/pull-request-policy.html). -10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](./hacker-guide.html#review). +10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide/#review). 11. Celebrate! Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide](./hacker-guide.html) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). @@ -76,4 +78,4 @@ and on the implementation plan. Announce the change on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. +the Scala project source tree. The [hacker guide](/contribute/hacker-guide/) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 8d7903fbea..ebdad9652b 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -1,7 +1,9 @@ --- -layout: page title: Scala hacker guide by: Eugene Burmako +layout: inner-page-no-masthead +permalink: /contribute/hacker-guide/ +includeTOC: true ---
This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. diff --git a/contribute/index.md b/contribute/index.md index 1a2f7c7c5b..dcc78e8149 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -1,6 +1,8 @@ --- -layout: page title: Contribute +layout: inner-page-no-masthead +permalink: /contribute/ +includeTOC: true --- The Scala programming language is an open source project with a very @@ -26,37 +28,37 @@ Coordination of contribution efforts takes place on the
-

Bug Fixes

-

Issues with the tools, core libraries and compiler. Also you can help us by reporting bugs

+

Bug Fixes

+

Issues with the tools, core libraries and compiler. Also you can help us by reporting bugs

-

Code Reviews

+

Code Reviews

Review pull requests against scala/scala, scala/scala-lang, scala/scala.github.com and others.

-

Core Libraries

+

Core Libraries

Update and expand the capabilities of the core (and associated) Scala libraries.

-

IDE and Build Tools

+

IDE and Build Tools

Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects.

-

Compiler/Language

+

Compiler/Language

Larger language features and compiler enhancements including language specification and SIPs.

@@ -109,7 +111,7 @@ with their own maintainers and community of contributors. Helping out one of these projects is another way to help Scala. Consider lending on a hand on a project you're already using. Or, to find out about other projects, see the -[Libraries and Tools section](../community/index.html#community-libraries-and-tools) +[Libraries and Tools section](../community/#community-libraries-and-tools) on our Community page. ### Scala Community Build diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md index e681c569fe..be37d6fc12 100644 --- a/contribute/partest-guide.md +++ b/contribute/partest-guide.md @@ -1,6 +1,8 @@ --- -layout: page title: Running the Test Suite +layout: inner-page-no-masthead +permalink: /contribute/partest-guide/ +includeTOC: true --- Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go the scala project folder from your local checkout and run it via `ant` or standalone as follows. diff --git a/contribute/scala-internals.md b/contribute/scala-internals.md index 5bd97ed8a8..831f2cc864 100644 --- a/contribute/scala-internals.md +++ b/contribute/scala-internals.md @@ -1,6 +1,8 @@ --- -layout: page title: Scala Internals Mailing List +layout: inner-page-no-masthead +permalink: /contribute/scala-internals/ +includeTOC: true --- ## scala-internals diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 37e84bd76e..68df995375 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -1,6 +1,8 @@ --- -layout: page title: Contribute to API Documentation +layout: inner-page-no-masthead +permalink: /contribute/scala-standard-library-api-documentation/ +includeTOC: true --- This page is specific to API documentation contributions – that is, API diff --git a/contribute/tools.md b/contribute/tools.md index 008a1425a1..876ce88c1c 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -1,12 +1,14 @@ --- -layout: page title: IDE and Build Tool Contributions +layout: inner-page-no-masthead +permalink: /contribute/tools/ +includeTOC: true --- ## Contributing to IDE and Build Tools The links below are to a number of Scala build and IDE related projects that are important in the larger Scala space, and which welcome contributions. -Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](./hacker-guide.html) and [Bug-fixing](guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. +Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/contribute/hacker-guide/) and [Bug-fixing](/contribute/guide/) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. Typically, issues for these projects will be reported and kept in the github project issue tracker for that project rather than in the Scala project JIRA. Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. @@ -17,7 +19,7 @@ if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](./documentation.html#updating-scala-langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation/#updating-scala-langorg) to fix it. ### Projects @@ -39,7 +41,7 @@ Stuff changes. Found a broken link or something that needs updating on this page

Home | Issues | ReadMe | -Contributing

+Contributing

@@ -114,7 +116,7 @@ The following projects are important to the Scala community but are particularly

Scala Decoder (part of scala/scala)

Issues | ReadMe | -Contributing

+Contributing

white line

Scalariform

From b58955fa85531e7be82639d5d6acf44b779f0f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20de=20Sil=C3=B3niz=20Sandino?= Date: Wed, 8 Feb 2017 17:25:34 +0100 Subject: [PATCH 0108/1704] Short items list for the contribute subpages --- _contribute_resources/1-documentation.md | 6 + _contribute_resources/2-bug-fixes.md | 6 + _contribute_resources/3-code-reviews.md | 8 + _contribute_resources/4-core-libraries.md | 6 + .../5-ide-and-build-tools.md | 6 + _contribute_resources/6-compiler-language.md | 6 + contribute/index.md | 74 +------ contribute/tools.md | 187 ++++++++---------- 8 files changed, 126 insertions(+), 173 deletions(-) create mode 100644 _contribute_resources/1-documentation.md create mode 100644 _contribute_resources/2-bug-fixes.md create mode 100644 _contribute_resources/3-code-reviews.md create mode 100644 _contribute_resources/4-core-libraries.md create mode 100644 _contribute_resources/5-ide-and-build-tools.md create mode 100644 _contribute_resources/6-compiler-language.md diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md new file mode 100644 index 0000000000..27739dee6a --- /dev/null +++ b/_contribute_resources/1-documentation.md @@ -0,0 +1,6 @@ +--- +title: Documentation +link: /contribute/documentation/ +icon: fa fa-file-text +--- +[Scaladoc (API)](/contribute/scala-standard-library-api-documentation/),[docs.scala-lang.org](http://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). \ No newline at end of file diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md new file mode 100644 index 0000000000..d10adb7908 --- /dev/null +++ b/_contribute_resources/2-bug-fixes.md @@ -0,0 +1,6 @@ +--- +title: Bug fixes +link: /contribute/guide/ +icon: fa fa-pencil +--- +Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide/). \ No newline at end of file diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md new file mode 100644 index 0000000000..2ab235993b --- /dev/null +++ b/_contribute_resources/3-code-reviews.md @@ -0,0 +1,8 @@ +--- +title: Code Reviews +link: /contribute/codereviews/ +icon: fa fa-eye +--- +Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), +[scala/scala-lang](https://github.com/scala/scala-lang/pulls), +[scala/scala.github.com](https://github.com/scala/scala.github.com/pulls)and others. \ No newline at end of file diff --git a/_contribute_resources/4-core-libraries.md b/_contribute_resources/4-core-libraries.md new file mode 100644 index 0000000000..7ad75c5752 --- /dev/null +++ b/_contribute_resources/4-core-libraries.md @@ -0,0 +1,6 @@ +--- +title: Core Libraries +link: /contribute/corelibs/ +icon: fa fa-clipboard +--- +Update and expand the capabilities of the core (and associated) Scala libraries. \ No newline at end of file diff --git a/_contribute_resources/5-ide-and-build-tools.md b/_contribute_resources/5-ide-and-build-tools.md new file mode 100644 index 0000000000..4b8bd2ed52 --- /dev/null +++ b/_contribute_resources/5-ide-and-build-tools.md @@ -0,0 +1,6 @@ +--- +title: IDE and Build Tools +link: /contribute/tools/ +icon: fa fa-terminal +--- +Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects. \ No newline at end of file diff --git a/_contribute_resources/6-compiler-language.md b/_contribute_resources/6-compiler-language.md new file mode 100644 index 0000000000..0c4eaa1325 --- /dev/null +++ b/_contribute_resources/6-compiler-language.md @@ -0,0 +1,6 @@ +--- +title: Compiler/Language +link: /contribute/guide/#larger-changes-new-features +icon: fa fa-gears +--- +Larger language features and compiler enhancements including language specification and SIPs. \ No newline at end of file diff --git a/contribute/index.md b/contribute/index.md index dcc78e8149..e843ef2f02 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -25,84 +25,14 @@ how to efficiently report a bug. Coordination of contribution efforts takes place on the [scala-internals Google group](./scala-internals.html). -
-
- -
-

Bug Fixes

-

Issues with the tools, core libraries and compiler. Also you can help us by reporting bugs

-
-
- -
-
-

Code Reviews

-

Review pull requests against scala/scala, -scala/scala-lang, -scala/scala.github.com and others.

-
-
-

Core Libraries

-

Update and expand the capabilities of the core (and associated) Scala libraries.

-
-
- -
-
-

IDE and Build Tools

-

Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects.

-
-
-

Compiler/Language

-

Larger language features and compiler enhancements including language specification and SIPs.

-
-
-
+{% include column-list-of-items.html collection=site.contribute_resources %} ### Community Tickets The following links provide starting points for various contributor activities: -
-
-
-

Documentation

-

Help augment or correct the documentation.

-
-
-

Core Libraries

-

Community bugs and enhancements on the core libs.

-
-
- -
-
-

Tools

-

Help with the Scala tool chain.

-
-
-

Compiler

-

Ready for a challenge? Here's the compiler bugs.

-
-
- -
-
-

Bugs

-

All bugs marked with the label community.

-
-
-

All Issues

-

Bugs + Enhancements marked with the label community.

-
-
-
+{% include column-list-of-items.html collection=site.contribute_community_tickets %} ### Tools and Libraries diff --git a/contribute/tools.md b/contribute/tools.md index 876ce88c1c..420579913e 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -3,6 +3,90 @@ title: IDE and Build Tool Contributions layout: inner-page-no-masthead permalink: /contribute/tools/ includeTOC: true + +# Projects list: +projects: + - title: sbt + description: Interactive build tool. + icon: http://www.scala-sbt.org/assets/typesafe_sbt_svg.svg + link: https://github.com/sbt/sbt + homeLink: http://www.scala-sbt.org/ + issuesLink: https://github.com/sbt/sbt#issues-and-pull-requests + readmeLink: https://github.com/sbt/sbt/blob/0.13/README.md + contributingLink: https://github.com/sbt/sbt/blob/0.13/CONTRIBUTING.md + - title: Scaladoc Tool + description: (Contribute through scala/scala) + icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 + link: https://github.com/scala/scala + homeLink: http://www.scala-lang.org/api + issuesLink: https://issues.scala-lang.org/issues/?jql=status%20%3D%20Open%20AND%20component%20%3D%20%22Scaladoc%20Tool%22 + readmeLink: https://github.com/scala/scala#welcome + contributingLink: http://scala-lang.org/contribute/guide.html + - title: Scala IDE + description: Interactive build tool. + icon: https://avatars2.githubusercontent.com/u/1026788?v=3&s=200 + link: https://github.com/scala-ide/scala-ide + homeLink: http://scala-ide.org/ + issuesLink: http://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets + readmeLink: https://github.com/scala-ide/scala-ide/blob/master/README.md + contributingLink: https://github.com/scala-ide/scala-ide/blob/master/CONTRIBUTING.md + - title: DBuild + description: Multi-project build tool. + icon: https://avatars3.githubusercontent.com/u/784923?v=3&s=200 + link: https://github.com/typesafehub/dbuild + homeLink: http://typesafehub.github.io/dbuild + issuesLink: https://github.com/typesafehub/dbuild/issues + readmeLink: https://github.com/typesafehub/dbuild/blob/master/README.md + contributingLink: https://github.com/typesafehub/dbuild/blob/master/README.md#get-involved + - title: Partest + description: Scala Compiler/Library Testing + icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 + link: https://github.com/scala/scala-partest + homeLink: http://docs.scala-lang.org/tutorials/partest-guide.html + issuesLink: https://github.com/scala/scala-partest/issues + readmeLink: https://github.com/scala/scala-partest/blob/master/README.md + contributingLink: + - title: Ensime + description: Scala Support for Text Editors + icon: https://avatars0.githubusercontent.com/u/5089042?v=3&s=200 + link: https://github.com/ensime/ensime-server + homeLink: http://ensime.github.io/ + issuesLink: https://github.com/ensime/ensime-server/issues + readmeLink: https://github.com/ensime/ensime-server/blob/2.0/README.md + contributingLink: https://ensime.github.io/contributing/ + - title: Scoverage + description: Scala code coverage tool + icon: https://avatars1.githubusercontent.com/u/5998302?v=3&s=200 + link: https://github.com/scoverage/scalac-scoverage-plugin + homeLink: http://scoverage.org/ + issuesLink: https://github.com/scoverage/scalac-scoverage-plugin/issues + readmeLink: https://github.com/scoverage/scalac-scoverage-plugin/blob/master/README.md + contributingLink: https://groups.google.com/forum/#!forum/scala-code-coverage-tool + - title: Abide + description: Lint tooling for Scala + icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 + link: https://github.com/scala/scala-abide + homeLink: https://github.com/scala/scala-abide#abide--lint-tooling-for-scala + issuesLink: https://github.com/scala/scala-abide/issues + readmeLink: https://github.com/scala/scala-abide/blob/master/README.md + contributingLink: https://github.com/scala/scala-abide#extending-abide + +projectsInNeed: + - title: Scalap + description: Scala Decoder (part of scala/scala) + icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 + link: https://github.com/scala/scala + homeLink: + issuesLink: https://issues.scala-lang.org/issues/?jql=status%20%3D%20Open%20AND%20text%20~%20%22scalap%22 + readmeLink: https://github.com/scala/scala#welcome + contributingLink: https://github.com/sbt/sbt/blob/0.13/CONTRIBUTING.md + - title: Scaladoc Tool + description: (Contribute through scala/scala) + icon: /resources/img/white-line.png + link: https://github.com/mdr/scalariform + homeLink: https://github.com/mdr/scalariform/wiki/Command-line-tool + issuesLink: https://github.com/mdr/scalariform/issues + readmeLink: https://github.com/mdr/scalariform/blob/master/README.rst --- ## Contributing to IDE and Build Tools @@ -23,109 +107,10 @@ Stuff changes. Found a broken link or something that needs updating on this page ### Projects -
-
-
-sbt logo -

sbt

-

Interactive build tool.

-

Home | -Issues | -ReadMe | -Contributing

-
-
-scala logo -

Scaladoc Tool

-

(Contribute through scala/scala)

-

Home | -Issues | -ReadMe | -Contributing

-
-
- -
-
-scala IDE logo

Scala IDE

-

The Eclipse Scala IDE project.

-

Home | -Issues | -ReadMe | -Contributing

-
-
-dbuild logo

DBuild

-

Multi-project build tool.

-

Home | -Issues | -ReadMe | -Contributing

-
-
- -
-
-scala logo -

Partest

-

Scala Compiler/Library Testing

-

Home | -Issues | -ReadMe

-
-
-ensime logo

Ensime

-

Scala Support for Text Editors

-

Home | -Issues | -ReadMe | -Contributing

-
-
- -
-
-scoverage logo

Scoverage

-

Scala code coverage tool

-

Home | -Issues | -ReadMe | -Contributing

-
-
-scala logo -

Abide

-

Lint tooling for Scala

-

Home | -Issues | -ReadMe | -Contributing

-
-
-
+{% include contributions-projects-list.html collection=page.projects %} ### Projects in Particular Need The following projects are important to the Scala community but are particularly in need of contributors to continue their development. -
-
-
-scala logo -

Scalap

-

Scala Decoder (part of scala/scala)

-

Issues | -ReadMe | -Contributing

-
-
-white line

Scalariform

-

Scala code formatter

-

Home | -Issues | -ReadMe

-
-
-
- - +{% include contributions-projects-list.html collection=page.projectsInNeed %} \ No newline at end of file From 0aa2f7f9660ea580cc661899ece1f99106f99c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20de=20Sil=C3=B3niz=20Sandino?= Date: Thu, 9 Feb 2017 12:10:38 +0100 Subject: [PATCH 0109/1704] Adding code of conduct --- contribute/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contribute/index.md b/contribute/index.md index e843ef2f02..f0c52986b8 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -17,13 +17,13 @@ That depends on what you want to contribute. Below are some getting started reso ### Reporting bugs -See our [bug reporting guide](./bug-reporting-guide.html) to learn +See our [bug reporting guide](/contribute/bug-reporting-guide/) to learn how to efficiently report a bug. ### Contribute Coordination of contribution efforts takes place on the -[scala-internals Google group](./scala-internals.html). +[scala-internals Google group](/contribute/scala-internals/). {% include column-list-of-items.html collection=site.contribute_resources %} @@ -41,7 +41,7 @@ with their own maintainers and community of contributors. Helping out one of these projects is another way to help Scala. Consider lending on a hand on a project you're already using. Or, to find out about other projects, see the -[Libraries and Tools section](../community/#community-libraries-and-tools) +[Libraries and Tools section](/community/#community-libraries-and-tools) on our Community page. ### Scala Community Build From 32684bae5d915d7bcf7ce69c860c2930c5f89d6b Mon Sep 17 00:00:00 2001 From: Janek Bogucki Date: Tue, 20 Jun 2017 10:19:33 +0100 Subject: [PATCH 0110/1704] Update bug reporting links --- contribute/bug-reporting-guide.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 960f40b704..13a7553c88 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -3,7 +3,7 @@ layout: page title: Bug Reporting --- -The Scala project tracker is located at [http://issues.scala-lang.org](http://issues.scala-lang.org). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. +The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. ## Is it a Bug? @@ -43,12 +43,12 @@ If you have a code snippet that is resulting in bytecode which you believe is be 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. -* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.11/). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) or [stackoveflow](http://stackoverflow.com/questions/tagged/scala). +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.12/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). -In general, if you find yourself stuck on any of these steps, asking on one of the following Scala mailing lists can be helpful: +In general, if you find yourself stuck on any of these steps, asking on [Scala Contributors](https://contributors.scala-lang.org/) can be helpful: - - For unexpected behavior use [scala-language](https://groups.google.com/forum/?fromgroups#!forum/scala-language), or [scala-user](https://groups.google.com/forum/?fromgroups#!forum/scala-user) mailing lists. - - For compiler bugs use the [scala-internals](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) mailing list. + - For unexpected behavior use the [Community Category](https://contributors.scala-lang.org/c/community). + - For compiler bugs use the [Compiler Category](https://contributors.scala-lang.org/c/compiler). * Examples of exceptions reported by the compiler which usually are not bugs: 1. `StackOverflowError` is typically not a bug unless the stacktrace involves the internal packages of the compiler (like `scala.tools.nsc...`). Try to increase the Java stack size (`-Xss`), in most of the cases it helps. @@ -84,4 +84,4 @@ In the description of your issue, be as detailed as you can. Bug reports which h 2. The expected output. 3. The actual output, including the stacktrace. 4. Related discussion on the mailing lists, if applicable. - 4. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. + 5. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. From 7390eec1410fbd55523e919450ef8dda1ffa6c87 Mon Sep 17 00:00:00 2001 From: Janek Bogucki Date: Thu, 22 Jun 2017 10:21:22 +0100 Subject: [PATCH 0111/1704] Add scalacheck tips and note removal of partest --- contribute/hacker-guide.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 8d7903fbea..a8e9d2e14c 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -264,11 +264,13 @@ Adding tests to the test suite is as easy as moving them to the appropriate dire * Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/2.12.x/test/files/neg). * Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/2.12.x/test/files/run) and have a corresponding `.check` file with the expected output. You will get test failures if the content of a `.check` file is different from what the test produces while running. If the change in the output is an expected product of your work, you might not want to change the `.check` file by hand. To make partest change the `.check` file, run it with a `--update-check` flag, like so `./test/partest --update-check path/to/test.scala`. For more information on partest, please refer to its [documentation](http://docs.scala-lang.org/tutorials/partest-guide.html). * Everything that can be unit-tested should go to ["junit" directory](https://github.com/scala/scala/tree/2.12.x/test/junit) -* Property-based tests go to the ["scalacheck" directory](https://github.com/scala/scala/tree/2.12.x/test/files/scalacheck) +* Property-based tests go to the ["scalacheck" directory](https://github.com/scala/scala/tree/2.12.x/test/scalacheck) Here are some more testing tips: -* If you have several tests, and want a tool for only running tests that conform to some regular expression, you can use `partest-ack` in the `tools` directory: `./tools/partest-ack "dottype"` +* If you have several tests, and want a tool for only running tests that conform to some regular expression, you can use `partest-ack` in the `tools` directory: `./tools/partest-ack "dottype"`. `partest-ack` was removed in 2.12. +* If you want to run all scalacheck tests from sbt use `scalacheck/testOnly` +* To run scalacheck tests by name when in sbt use `scalacheck/testOnly ... `, for example `scalacheck/testOnly scala.tools.nsc.scaladoc.HtmlFactoryTest` * If your tests fail in the following way: test.bc: @@ -320,6 +322,8 @@ Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, resp testing: [...]/files/run/stringinterpolation_macro-run.scala [ OK ] All of 6 tests were successful (elapsed time: 00:00:08) +`partest` was removed in 2.12. + ## 4. Publish After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. From c8305a9b4e7279273842e2701bfdb649a872ab88 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 13 Jul 2017 17:23:15 +0200 Subject: [PATCH 0112/1704] Get rid of some of the permalinks that are breaking everything --- contribute/bug-reporting-guide.md | 2 +- contribute/codereviews.md | 8 ++--- contribute/corelibs.md | 6 ++-- contribute/documentation.md | 20 ++++++------- contribute/guide.md | 6 ++-- contribute/hacker-guide.md | 4 +-- contribute/index.md | 4 +-- contribute/partest-guide.md | 30 +++++++++---------- contribute/scala-internals.md | 5 ++-- ...cala-standard-library-api-documentation.md | 2 +- contribute/tools.md | 10 +++---- 11 files changed, 48 insertions(+), 49 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 33b61807c2..05569ff8e4 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -1,7 +1,7 @@ --- title: Bug Reporting layout: inner-page-no-masthead -permalink: /contribute/bug-reporting-guide/ +# permalink: /contribute/bug-reporting-guide/ includeTOC: true --- diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 9239fa8c14..2c56b4ed37 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -1,18 +1,18 @@ --- title: Code Review Contributions layout: inner-page-no-masthead -permalink: /contribute/codereviews/ +# permalink: /contribute/codereviews/ includeTOC: true --- ## Code Review Contributions -In addition to [bug fixing](/contribute/guide/), you can help us review -[waiting pull requests](#pull-requests-awaiting-comment). +In addition to [bug fixing](/contribute/guide/), you can help us review +[waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your own pull requests. - + ### Review Guidelines [Code of Conduct reminder](/conduct/) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index 1f34d150b0..fd69ae196e 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -1,7 +1,7 @@ --- title: Core Library Contributions layout: inner-page-no-masthead -permalink: /contribute/corelibs/ +# permalink: /contribute/corelibs/ includeTOC: true --- ## Core Library Contributions @@ -10,14 +10,14 @@ There are several options for contributing to Scala's core libraries. You can: * Help with [Documentation](/contribute/scala-standard-library-api-documentation/). * [Report Bugs or Issues](/contribute/bug-reporting-guide/) against the core libraries. -* [Fix Bugs or Issues](/contribute/guide/) against the +* [Fix Bugs or Issues](/contribute/guide/) against the [reported library bugs/issues](https://issues.scala-lang.org/issues/?filter=13001). * Contribute significant new functionality or a new API by submitting a Scala Library Improvement Process (SLIP) Document. ### Submitting a SLIP -For significant new functionality or a whole new API to be considered for +For significant new functionality or a whole new API to be considered for inclusion in the core Scala distribution, you will be asked to submit a SLIP (Scala Library Improvement Process) document. Please see [instructions for submitting a new SLIP](http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the [pre-requisites](http://docs.scala-lang.org/sips/slip-submission.html) before submitting a SLIP. diff --git a/contribute/documentation.md b/contribute/documentation.md index 2746fa77dc..8930a3c32c 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -1,7 +1,7 @@ --- title: Documentation Contributions layout: inner-page-no-masthead -permalink: /contribute/documentation/ +# permalink: /contribute/documentation/ includeTOC: true --- ## Contributing Documentation to the Scala project @@ -14,7 +14,7 @@ There are several ways you can help out with the improvement of Scala documentat Please read this page, and the pages linked from this one, fully before contributing documentation. Many of the questions you have will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [scala-internals Google group](https://groups.google.com/forum/#!forum/scala-internals) and then, please, submit a pull request with updated documentation reflecting that answer. -**General requirements** for documentation submissions include spell-checking all written language, ensuring code samples compile and run correctly, correct grammar, and clean formatting/layout of the documentation. +**General requirements** for documentation submissions include spell-checking all written language, ensuring code samples compile and run correctly, correct grammar, and clean formatting/layout of the documentation. Thanks @@ -22,12 +22,12 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation/#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation/#contribute-api-documentation-bug-reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. * [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation/) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. -* You can also just -[submit new Scaladoc](/contribute/scala-standard-library-api-documentation/) -without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. +* You can also just +[submit new Scaladoc](/contribute/scala-standard-library-api-documentation/) +without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. ### The Main Scala Documentation Site @@ -43,15 +43,15 @@ without creating an issue, but please look to see if there is an issue already s * SIP (Scala Improvement Process) Proposals and more -Please read [contributing to the docs.scala-lang.org site](http://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses +Please read [contributing to the docs.scala-lang.org site](http://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses the [Jekyll](http://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. ### Updating scala-lang.org Additional high-level documentation (including documentation on contributing -to Scala and related projects) is provided on the main -[Scala Language site](http://scala-lang.org), and is also kept in the -[scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. +to Scala and related projects) is provided on the main +[Scala Language site](http://scala-lang.org), and is also kept in the +[scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the [docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/contribute/guide.md b/contribute/guide.md index afd3572c53..9edb289e06 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -1,7 +1,7 @@ --- title: Contributing guide layout: inner-page-no-masthead -permalink: /contribute/guide/ +# permalink: /contribute/guide/ includeTOC: true --- @@ -54,9 +54,9 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide/) (but please +1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide/) (but please [make sure it's not a duplicate](/contribute/bug-reporting-guide/#reporting-confirmed-bugs-is-a-sin)). -2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](/contribute/scala-internals/). After all, don't you want to work on a team with +2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](/contribute/scala-internals/). After all, don't you want to work on a team with [these friendly people](/contribute/hacker-guide/#connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](/contribute/hacker-guide/#fork) and clone your fork (if you haven't already). 4. [Create a feature branch](/contribute/hacker-guide/#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index abfe59b2da..31602a0909 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -2,7 +2,7 @@ title: Scala hacker guide by: Eugene Burmako layout: inner-page-no-masthead -permalink: /contribute/hacker-guide/ +# permalink: /contribute/hacker-guide/ includeTOC: true ---
@@ -54,7 +54,7 @@ it probably makes sense to familiarize yourself with Git first. We recommend * the [Git Pro](http://git-scm.com/book/en/) online book. * the help page on [Forking a Git Repository](https://help.github.com/articles/fork-a-repo). -* this great training tool [LearnGitBranching](http://pcottle.github.io/learnGitBranching/). One hour hands-on training helps more than 1000 hours reading. +* this great training tool [LearnGitBranching](http://pcottle.github.io/learnGitBranching/). One hour hands-on training helps more than 1000 hours reading. ### Fork diff --git a/contribute/index.md b/contribute/index.md index f0c52986b8..3dac16ead4 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -1,7 +1,7 @@ --- title: Contribute layout: inner-page-no-masthead -permalink: /contribute/ +# permalink: /contribute/ includeTOC: true --- @@ -22,7 +22,7 @@ how to efficiently report a bug. ### Contribute -Coordination of contribution efforts takes place on the +Coordination of contribution efforts takes place on the [scala-internals Google group](/contribute/scala-internals/). {% include column-list-of-items.html collection=site.contribute_resources %} diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md index be37d6fc12..ce4f84ecf1 100644 --- a/contribute/partest-guide.md +++ b/contribute/partest-guide.md @@ -1,7 +1,7 @@ --- title: Running the Test Suite layout: inner-page-no-masthead -permalink: /contribute/partest-guide/ +# permalink: /contribute/partest-guide/ includeTOC: true --- @@ -14,11 +14,11 @@ The test suite can be run by using ant from the command line: $ ant test.suite ## Standalone - -There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use - + +There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use + ./test/partest --show-diff --show-log --failed - + You can get a summary of the usage by running partest without arguments. * Most commonly you want to invoke partest with an option that tells it which part of the tests to run. For example `--all`, `--pos`, `--neg` or `--run`. @@ -29,13 +29,13 @@ You can get a summary of the usage by running partest without arguments. * You can use the `SCALAC_OPTS` environment variable to pass command line options to the compiler. * You can use the `JAVA_OPTS` environment variable to pass command line options to the runner (e.g., for `run/jvm` tests). * The launch scripts run partest as follows: - + scala -cp scala.tools.partest.nest.NestRunner - + Partest classes from a `quick` build, e.g., can be found in `./build/quick/classes/partest/`. - + Partest will tell you where it loads compiler/library classes from by adding the `partest.debug` property: - + scala -Dpartest.debug=true -cp scala.tools.partest.nest.NestRunner @@ -46,10 +46,10 @@ Tests that depend on [ScalaCheck](https://github.com/rickynils/scalacheck) can b import org.scalacheck._ import Prop._ - + object Test { val prop_ConcatLists = property{ (l1: ListInt, l2: ListInt) => - l1.size + l2.size == (l1 ::: l2).size + l1.size + l2.size == (l1 ::: l2).size } val tests = List(("prop_ConcatLists", prop_ConcatLists)) @@ -59,10 +59,10 @@ Tests that depend on [ScalaCheck](https://github.com/rickynils/scalacheck) can b ### Windows -Some tests might fail because line endings in the `.check` files and the produced results do not match. In that case, set either +Some tests might fail because line endings in the `.check` files and the produced results do not match. In that case, set either - git config core.autocrlf false + git config core.autocrlf false -or +or - git config core.autocrlf input \ No newline at end of file + git config core.autocrlf input diff --git a/contribute/scala-internals.md b/contribute/scala-internals.md index 831f2cc864..e6fde53a81 100644 --- a/contribute/scala-internals.md +++ b/contribute/scala-internals.md @@ -7,11 +7,11 @@ includeTOC: true ## scala-internals -The [scala-internals mailing list](https://groups.google.com/d/forum/scala-internals) is where technical and logistical discussions concerning bugs, bug fixes, documentation, improvements, new features and other contributor related topics occur. +The [scala-internals mailing list](https://groups.google.com/d/forum/scala-internals) is where technical and logistical discussions concerning bugs, bug fixes, documentation, improvements, new features and other contributor related topics occur. ### Coordinating on scala-internals -Prior to commencing on contribution work on larger changes to the Scala project, it is recommended (but not required) that you make a post on scala-internals announcing your intention. It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, one of whom will probably be reviewing your contribution at some point. For smaller bug fixes or documentation changes where the risk of effort duplication is minimal, you can skip this post. +Prior to commencing on contribution work on larger changes to the Scala project, it is recommended (but not required) that you make a post on scala-internals announcing your intention. It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, one of whom will probably be reviewing your contribution at some point. For smaller bug fixes or documentation changes where the risk of effort duplication is minimal, you can skip this post. To help subscribers on the scala-internals list to sort through the postings, we request that the following topic labels are applied when you start a new post please: @@ -44,4 +44,3 @@ While it is optional to announce your intentions/work items on scala-internals b * There are a lot of nice people waiting to talk to you on scala-internals, you might be surprised how valuable and pleasant you find the experience of talking to them. If all of this has not convinced you then, please, go ahead and work on contributions anyway. It *is* less important to post to scala-internals first for small, self contained bugs than it is for larger issues or features, and not having posted first will not be a reason for your PR to be rejected, it just might be a rougher review/merge process than if you had posted first. It's your choice. - diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 68df995375..c64a176cde 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -1,7 +1,7 @@ --- title: Contribute to API Documentation layout: inner-page-no-masthead -permalink: /contribute/scala-standard-library-api-documentation/ +# permalink: /contribute/scala-standard-library-api-documentation/ includeTOC: true --- diff --git a/contribute/tools.md b/contribute/tools.md index 420579913e..de96e19fa5 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -1,7 +1,7 @@ --- title: IDE and Build Tool Contributions layout: inner-page-no-masthead -permalink: /contribute/tools/ +# permalink: /contribute/tools/ includeTOC: true # Projects list: @@ -45,7 +45,7 @@ projects: homeLink: http://docs.scala-lang.org/tutorials/partest-guide.html issuesLink: https://github.com/scala/scala-partest/issues readmeLink: https://github.com/scala/scala-partest/blob/master/README.md - contributingLink: + contributingLink: - title: Ensime description: Scala Support for Text Editors icon: https://avatars0.githubusercontent.com/u/5089042?v=3&s=200 @@ -76,7 +76,7 @@ projectsInNeed: description: Scala Decoder (part of scala/scala) icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 link: https://github.com/scala/scala - homeLink: + homeLink: issuesLink: https://issues.scala-lang.org/issues/?jql=status%20%3D%20Open%20AND%20text%20~%20%22scalap%22 readmeLink: https://github.com/scala/scala#welcome contributingLink: https://github.com/sbt/sbt/blob/0.13/CONTRIBUTING.md @@ -103,7 +103,7 @@ if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation/#updating-scala-langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation/#updating-scala-langorg) to fix it. ### Projects @@ -113,4 +113,4 @@ Stuff changes. Found a broken link or something that needs updating on this page The following projects are important to the Scala community but are particularly in need of contributors to continue their development. -{% include contributions-projects-list.html collection=page.projectsInNeed %} \ No newline at end of file +{% include contributions-projects-list.html collection=page.projectsInNeed %} From fbca9ca0b3ef20fbb657aa132f88f85b097607b4 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Fri, 14 Jul 2017 17:02:30 +0200 Subject: [PATCH 0113/1704] Bug reporting guide link fixes --- _contribute_resources/2-bug-fixes.md | 2 +- contribute/corelibs.md | 2 +- contribute/guide.md | 6 +++--- contribute/index.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md index d10adb7908..8661ab9614 100644 --- a/_contribute_resources/2-bug-fixes.md +++ b/_contribute_resources/2-bug-fixes.md @@ -3,4 +3,4 @@ title: Bug fixes link: /contribute/guide/ icon: fa fa-pencil --- -Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide/). \ No newline at end of file +Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide.html). diff --git a/contribute/corelibs.md b/contribute/corelibs.md index fd69ae196e..c06a741915 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -9,7 +9,7 @@ includeTOC: true There are several options for contributing to Scala's core libraries. You can: * Help with [Documentation](/contribute/scala-standard-library-api-documentation/). -* [Report Bugs or Issues](/contribute/bug-reporting-guide/) against the core libraries. +* [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. * [Fix Bugs or Issues](/contribute/guide/) against the [reported library bugs/issues](https://issues.scala-lang.org/issues/?filter=13001). * Contribute significant new functionality or a new API by submitting diff --git a/contribute/guide.md b/contribute/guide.md index 9edb289e06..bda4fa9ff3 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -12,7 +12,7 @@ includeTOC: true

Get a peek into the inners of the Scala compiler.

-

Report an issue

+

Report an issue

File a bug report or a feature request.

@@ -54,8 +54,8 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide/) (but please -[make sure it's not a duplicate](/contribute/bug-reporting-guide/#reporting-confirmed-bugs-is-a-sin)). +1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide.html) (but please +[make sure it's not a duplicate](/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). 2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](/contribute/scala-internals/). After all, don't you want to work on a team with [these friendly people](/contribute/hacker-guide/#connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](/contribute/hacker-guide/#fork) and clone your fork (if you haven't already). diff --git a/contribute/index.md b/contribute/index.md index 3dac16ead4..55563f8ac0 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -17,7 +17,7 @@ That depends on what you want to contribute. Below are some getting started reso ### Reporting bugs -See our [bug reporting guide](/contribute/bug-reporting-guide/) to learn +See our [bug reporting guide](/contribute/bug-reporting-guide.html) to learn how to efficiently report a bug. ### Contribute From e2f7c0712662e555f53f7c77cee608b5aadee722 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Fri, 14 Jul 2017 17:06:56 +0200 Subject: [PATCH 0114/1704] Removing some mentions of scala-internals --- contribute/documentation.md | 4 ++-- contribute/guide.md | 6 +++--- contribute/hacker-guide.md | 6 +++--- contribute/index.md | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index 8930a3c32c..0111c5c15d 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -12,7 +12,7 @@ There are several ways you can help out with the improvement of Scala documentat * Guides, Overviews, Tutorials, Cheat Sheets and more on the docs.scala-lang.org site * Updating scala-lang.org -Please read this page, and the pages linked from this one, fully before contributing documentation. Many of the questions you have will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [scala-internals Google group](https://groups.google.com/forum/#!forum/scala-internals) and then, please, submit a pull request with updated documentation reflecting that answer. +Please read this page, and the pages linked from this one, fully before contributing documentation. Many of the questions you have will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and then, please, submit a pull request with updated documentation reflecting that answer. **General requirements** for documentation submissions include spell-checking all written language, ensuring code samples compile and run correctly, correct grammar, and clean formatting/layout of the documentation. @@ -27,7 +27,7 @@ Please *follow the issue submission process closely* to help prevent duplicate i * [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation/) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just [submit new Scaladoc](/contribute/scala-standard-library-api-documentation/) -without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. +without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on [Scala Contributors](https://contributors.scala-lang.org/) so that people know what you are doing. ### The Main Scala Documentation Site diff --git a/contribute/guide.md b/contribute/guide.md index bda4fa9ff3..a824e2297f 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -8,7 +8,7 @@ includeTOC: true
-

Scala Internals

+

Scala Contributors

Get a peek into the inners of the Scala compiler.

@@ -56,7 +56,7 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu 1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide.html) (but please [make sure it's not a duplicate](/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). -2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [scala-internals](/contribute/scala-internals/). After all, don't you want to work on a team with +2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with [these friendly people](/contribute/hacker-guide/#connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](/contribute/hacker-guide/#fork) and clone your fork (if you haven't already). 4. [Create a feature branch](/contribute/hacker-guide/#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. @@ -75,7 +75,7 @@ Need more information or a little more hand-holding for the first one? We got yo For larger, more ambitious changes (e.g. new language features), the first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea and on the implementation plan. Announce the change -on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. +on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against the Scala project source tree. The [hacker guide](/contribute/hacker-guide/) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 31602a0909..a10fbb70eb 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -38,7 +38,7 @@ A list of language features/libraries along with their maintainer's full names a In our running example, since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. -As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, +As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the [Scala Contributors](https://contributors.scala-lang.org/) mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user) about our issue. Posting to scala-user @@ -202,7 +202,7 @@ If you intend on contributing to Scala collections, please make sure you're fami ##### The Scala Compiler -Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email (scala-internals mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: +Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email ([Scala Contributors](https://contributors.scala-lang.org/) mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: * [Compiler internals videos by Martin Odersky](http://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. @@ -212,7 +212,7 @@ Documentation about the internal workings of the Scala compiler is scarce, and m at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. * [Scala compiler corner](http://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about most of the post-typer phases (i.e. the backend) in the Scala compiler. -* [scala-internals](http://groups.google.com/group/scala-internals), a mailing list which hosts discussions about the core +* [Scala Contributors](https://contributors.scala-lang.org/), a mailing list which hosts discussions about the core internal design and implementation of the Scala system. ##### Other Projects diff --git a/contribute/index.md b/contribute/index.md index 55563f8ac0..f56a91c163 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -22,8 +22,8 @@ how to efficiently report a bug. ### Contribute -Coordination of contribution efforts takes place on the -[scala-internals Google group](/contribute/scala-internals/). +Coordination of contribution efforts takes place on +[Scala Contributors](https://contributors.scala-lang.org/). {% include column-list-of-items.html collection=site.contribute_resources %} From 5c3fbae7f06170f21acc05a37f278cacc84bdb8d Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Fri, 14 Jul 2017 17:08:59 +0200 Subject: [PATCH 0115/1704] Missing whitespace --- _contribute_resources/1-documentation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 27739dee6a..0d9c198ffd 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -3,4 +3,4 @@ title: Documentation link: /contribute/documentation/ icon: fa fa-file-text --- -[Scaladoc (API)](/contribute/scala-standard-library-api-documentation/),[docs.scala-lang.org](http://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). \ No newline at end of file +[Scaladoc (API)](/contribute/scala-standard-library-api-documentation/), [docs.scala-lang.org](http://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). From d1d0f26798c64d560e8795343b49db234c7b0969 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 19 Jul 2017 11:29:38 -0400 Subject: [PATCH 0116/1704] fix or remove links to wiki the wiki has been mercifully taken offline --- contribute/documentation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index 0111c5c15d..a329f67369 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -31,7 +31,7 @@ without creating an issue, but please look to see if there is an issue already s ### The Main Scala Documentation Site -[docs.scala-lang.org](https://wiki.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a github project that you can fork and submit pull requests from. It includes: +[docs.scala-lang.org](https://docs.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a github project that you can fork and submit pull requests from. It includes: * Overviews * Tutorials From 81a9902665dd90bd0b7e4b971e9f358a2bb492ab Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 10 Aug 2017 12:29:30 -0700 Subject: [PATCH 0117/1704] scala.github.com -> docs.scala-lang --- _contribute_resources/3-code-reviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md index 2ab235993b..ffdd6d2672 100644 --- a/_contribute_resources/3-code-reviews.md +++ b/_contribute_resources/3-code-reviews.md @@ -5,4 +5,4 @@ icon: fa fa-eye --- Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), [scala/scala-lang](https://github.com/scala/scala-lang/pulls), -[scala/scala.github.com](https://github.com/scala/scala.github.com/pulls)and others. \ No newline at end of file +[scala/docs.scala-lang](https://github.com/scala/docs.scala-lang/pulls)and others. From 287b50a18d6d5cd3f07e6c9de8c7df7fe7a0da0b Mon Sep 17 00:00:00 2001 From: Jimin Hsieh Date: Thu, 17 Aug 2017 21:11:58 +0800 Subject: [PATCH 0118/1704] Fix broken links of https://scala-lang.org/contribute/#contribute. --- _contribute_resources/1-documentation.md | 4 ++-- _contribute_resources/2-bug-fixes.md | 2 +- _contribute_resources/3-code-reviews.md | 2 +- _contribute_resources/4-core-libraries.md | 4 ++-- _contribute_resources/5-ide-and-build-tools.md | 4 ++-- _contribute_resources/6-compiler-language.md | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 0d9c198ffd..54f18c938c 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -1,6 +1,6 @@ --- title: Documentation -link: /contribute/documentation/ +link: /contribute/documentation.html icon: fa fa-file-text --- -[Scaladoc (API)](/contribute/scala-standard-library-api-documentation/), [docs.scala-lang.org](http://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). +[Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](http://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md index 8661ab9614..cca6269e06 100644 --- a/_contribute_resources/2-bug-fixes.md +++ b/_contribute_resources/2-bug-fixes.md @@ -1,6 +1,6 @@ --- title: Bug fixes -link: /contribute/guide/ +link: /contribute/guide.html icon: fa fa-pencil --- Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide.html). diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md index ffdd6d2672..3de87cd929 100644 --- a/_contribute_resources/3-code-reviews.md +++ b/_contribute_resources/3-code-reviews.md @@ -1,6 +1,6 @@ --- title: Code Reviews -link: /contribute/codereviews/ +link: /contribute/codereviews.html icon: fa fa-eye --- Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), diff --git a/_contribute_resources/4-core-libraries.md b/_contribute_resources/4-core-libraries.md index 7ad75c5752..06f1018479 100644 --- a/_contribute_resources/4-core-libraries.md +++ b/_contribute_resources/4-core-libraries.md @@ -1,6 +1,6 @@ --- title: Core Libraries -link: /contribute/corelibs/ +link: /contribute/corelibs.html icon: fa fa-clipboard --- -Update and expand the capabilities of the core (and associated) Scala libraries. \ No newline at end of file +Update and expand the capabilities of the core (and associated) Scala libraries. diff --git a/_contribute_resources/5-ide-and-build-tools.md b/_contribute_resources/5-ide-and-build-tools.md index 4b8bd2ed52..7202f0d953 100644 --- a/_contribute_resources/5-ide-and-build-tools.md +++ b/_contribute_resources/5-ide-and-build-tools.md @@ -1,6 +1,6 @@ --- title: IDE and Build Tools -link: /contribute/tools/ +link: /contribute/tools.html icon: fa fa-terminal --- -Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects. \ No newline at end of file +Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects. diff --git a/_contribute_resources/6-compiler-language.md b/_contribute_resources/6-compiler-language.md index 0c4eaa1325..fcfea35d5a 100644 --- a/_contribute_resources/6-compiler-language.md +++ b/_contribute_resources/6-compiler-language.md @@ -1,6 +1,6 @@ --- title: Compiler/Language -link: /contribute/guide/#larger-changes-new-features +link: /contribute/guide.html#larger-changes-new-features icon: fa fa-gears --- -Larger language features and compiler enhancements including language specification and SIPs. \ No newline at end of file +Larger language features and compiler enhancements including language specification and SIPs. From 18f49fc7d95e020cb39e4c2130299fe5b45b41a6 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 17 Aug 2017 17:33:08 +0200 Subject: [PATCH 0119/1704] More link fixes --- contribute/codereviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 2c56b4ed37..ab321fd2ca 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -15,7 +15,7 @@ own pull requests. ### Review Guidelines -[Code of Conduct reminder](/conduct/) +[Code of Conduct reminder]({{ site.baseurl }}/conduct.html) * Keep comments on-topic, concise and precise. * Attach comments to particular lines or regions they pertain to whenever possible. From aaf513b07215bffa7bd36d76d37922d2655a7767 Mon Sep 17 00:00:00 2001 From: Janek Bogucki Date: Wed, 6 Sep 2017 11:17:58 +0100 Subject: [PATCH 0120/1704] Extend partest guide with sbt and mention batch script removals --- contribute/partest-guide.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md index ce4f84ecf1..dccee46a1c 100644 --- a/contribute/partest-guide.md +++ b/contribute/partest-guide.md @@ -5,17 +5,37 @@ layout: inner-page-no-masthead includeTOC: true --- -Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go the scala project folder from your local checkout and run it via `ant` or standalone as follows. +Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go to the scala project folder from your local checkout and run it via `sbt`, `ant` or standalone as follows. + +## Using sbt + +The test suite can be run from the sbt console with: + + > partest + +You can get a summary of the usage by running `partest --help`. + +If you would like to run particular tests pass the test paths as arguments + + > partest test/files/pos/bounds.scala test/scaladoc/run/diagrams-base.scala + +To run only the Scaladoc tests use `--srcpath` with the location of the tests + + > partest --srcpath scaladoc ## Using ant +Please note support for ant was removed on the 2.12 branch. + The test suite can be run by using ant from the command line: $ ant test.suite ## Standalone -There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use +Please note the standalone scripts mentioned below were removed in 2.12.2. sbt is the perferred way to run the test suite. + +There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use ./test/partest --show-diff --show-log --failed From 48e43e80173efa233cb422e6e1a888c79c74a12e Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 6 Sep 2017 16:23:34 -0700 Subject: [PATCH 0121/1704] fix typo --- contribute/partest-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md index dccee46a1c..e7e10621e1 100644 --- a/contribute/partest-guide.md +++ b/contribute/partest-guide.md @@ -33,7 +33,7 @@ The test suite can be run by using ant from the command line: ## Standalone -Please note the standalone scripts mentioned below were removed in 2.12.2. sbt is the perferred way to run the test suite. +Please note the standalone scripts mentioned below were removed in 2.12.2. sbt is the preferred way to run the test suite. There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use From 6f2ca77dae73a6b1ccbedc639c5aed31940c8107 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Wed, 15 Nov 2017 10:59:10 +0100 Subject: [PATCH 0122/1704] Fix links to Hacker guide --- contribute/guide.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index a824e2297f..ae69f50fd2 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -23,7 +23,7 @@ includeTOC: true

Get cracking on some easy to approach issues.

-

Hacker's guide

+

Hacker guide

Learn to write good code and improve your chances of contributing to the Scala galaxy.

@@ -57,16 +57,16 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu 1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide.html) (but please [make sure it's not a duplicate](/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). 2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with -[these friendly people](/contribute/hacker-guide/#connect) - it's one of the perks of contributing. -3. [Fork the Scala repository](/contribute/hacker-guide/#fork) and clone your fork (if you haven't already). -4. [Create a feature branch](/contribute/hacker-guide/#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. -5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide/#implement), include new tests (yes, for bug fixes too). -6. [Test, rinse](/contribute/hacker-guide/#test) and [test some more](/contribute/partest-guide/) until [all the tests pass](/contribute/hacker-guide/#verify). -7. [Commit your changes](/contribute/hacker-guide#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. +[these friendly people](/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. +3. [Fork the Scala repository](/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). +4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. +5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). +6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide/) until [all the tests pass](/contribute/hacker-guide.html#verify). +7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](http://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) 9. [Submit a pull request](./hacker-guide.html#submit) following the [Scala project pull-request guidelines](http://docs.scala-lang.org/scala/pull-request-policy.html). -10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide/#review). +10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide.html#review). 11. Celebrate! Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide](./hacker-guide.html) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). @@ -78,4 +78,4 @@ and on the implementation plan. Announce the change on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](/contribute/hacker-guide/) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. +the Scala project source tree. The [hacker guide](/contribute/hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. From 3db9bb55a2f392f80f5bdb54c7811f948ade5b33 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:04:51 +0100 Subject: [PATCH 0123/1704] Add missing space --- _contribute_resources/3-code-reviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md index 3de87cd929..2fc057eb0d 100644 --- a/_contribute_resources/3-code-reviews.md +++ b/_contribute_resources/3-code-reviews.md @@ -5,4 +5,4 @@ icon: fa fa-eye --- Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), [scala/scala-lang](https://github.com/scala/scala-lang/pulls), -[scala/docs.scala-lang](https://github.com/scala/docs.scala-lang/pulls)and others. +[scala/docs.scala-lang](https://github.com/scala/docs.scala-lang/pulls) and others. From 725800ebd3d4e2b71407ea2017428853ce2b96a2 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:11:47 +0100 Subject: [PATCH 0124/1704] Fix links --- contribute/corelibs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index c06a741915..aeb19e89af 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -8,9 +8,9 @@ includeTOC: true There are several options for contributing to Scala's core libraries. You can: -* Help with [Documentation](/contribute/scala-standard-library-api-documentation/). +* Help with [Documentation](/contribute/documentation.html). * [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. -* [Fix Bugs or Issues](/contribute/guide/) against the +* [Fix Bugs or Issues](/contribute/guide.html) against the [reported library bugs/issues](https://issues.scala-lang.org/issues/?filter=13001). * Contribute significant new functionality or a new API by submitting a Scala Library Improvement Process (SLIP) Document. From 56abdcb1b0912957fc4e9f5c92018fbed73c04cb Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:12:47 +0100 Subject: [PATCH 0125/1704] Link to GitHub instead of JIRA --- contribute/corelibs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index aeb19e89af..e1f10cb790 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -11,7 +11,7 @@ There are several options for contributing to Scala's core libraries. You can: * Help with [Documentation](/contribute/documentation.html). * [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. * [Fix Bugs or Issues](/contribute/guide.html) against the - [reported library bugs/issues](https://issues.scala-lang.org/issues/?filter=13001). + [reported library bugs/issues](https://github.com/scala/bug). * Contribute significant new functionality or a new API by submitting a Scala Library Improvement Process (SLIP) Document. From 46fc7ea2c1117a6fc9ea612e4cf53d92f802aa5d Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:19:43 +0100 Subject: [PATCH 0126/1704] Reword and link to GitHub instead of JIRA --- contribute/guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/guide.md b/contribute/guide.md index ae69f50fd2..1b530a1769 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -43,7 +43,7 @@ The main Scala project consists of the standard Scala library, the Scala reflect the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. Typically the scaladoc tool provides a low entry point for new committers, so it is a good first step into contributing. -On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. +On the [Scala bug tracker](https://github.com/scala/bug) you will find the bugs that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. If you are interested in contributing code, we ask you to sign the [Scala Contributor License Agreement](http://www.lightbend.com/contribute/cla/scala), From 381b641dfb1a00ef2da9d646078cc4e8a85e4501 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:20:28 +0100 Subject: [PATCH 0127/1704] Link to GitHub instead of JIRA --- contribute/scala-standard-library-api-documentation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index c64a176cde..6467cea947 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -42,7 +42,7 @@ and identify missing, incorrect or inadequate documentation. A good place to sta package objects for important packages (these often get overlooked for documentation and are a good place for API overviews). -If you find an issue, please log it in the [Scala issue tracker](https://issues.scala-lang.org) +If you find an issue, please log it in the [Scala bug tracker](https://github.com/scala/bug) **after making sure it is not already logged as an issue**. To help with disambiguation, please use the following format for issue title: From 74ce0815244088f76cab5e1f3d9cab4e4248a59d Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:39:58 +0100 Subject: [PATCH 0128/1704] Fix ironically broken link --- contribute/tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/tools.md b/contribute/tools.md index de96e19fa5..599cbf381e 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -103,7 +103,7 @@ if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation/#updating-scala-langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation.html#updating-scala-langorg) to fix it. ### Projects From 832e674c2c10dcf1f1341d50dbcc549e917662f6 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:41:15 +0100 Subject: [PATCH 0129/1704] Link to GitHub instead of JIRA --- contribute/tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/tools.md b/contribute/tools.md index 599cbf381e..8337c10935 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -19,7 +19,7 @@ projects: icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 link: https://github.com/scala/scala homeLink: http://www.scala-lang.org/api - issuesLink: https://issues.scala-lang.org/issues/?jql=status%20%3D%20Open%20AND%20component%20%3D%20%22Scaladoc%20Tool%22 + issuesLink: https://github.com/scala/bug/labels/scaladoc readmeLink: https://github.com/scala/scala#welcome contributingLink: http://scala-lang.org/contribute/guide.html - title: Scala IDE From e4f39bf320ae3e8ee2fda6a3e91b94644ae239da Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:42:23 +0100 Subject: [PATCH 0130/1704] Fix Scalariform section --- contribute/tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 8337c10935..feb11afa8f 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -80,8 +80,8 @@ projectsInNeed: issuesLink: https://issues.scala-lang.org/issues/?jql=status%20%3D%20Open%20AND%20text%20~%20%22scalap%22 readmeLink: https://github.com/scala/scala#welcome contributingLink: https://github.com/sbt/sbt/blob/0.13/CONTRIBUTING.md - - title: Scaladoc Tool - description: (Contribute through scala/scala) + - title: Scalariform + description: Scala source code formatter icon: /resources/img/white-line.png link: https://github.com/mdr/scalariform homeLink: https://github.com/mdr/scalariform/wiki/Command-line-tool From 4a9c5f05ca7161756ae3b7f1be520908caa53910 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:46:12 +0100 Subject: [PATCH 0131/1704] Remove Scalap --- contribute/tools.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index feb11afa8f..a1e2ef78e2 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -72,14 +72,6 @@ projects: contributingLink: https://github.com/scala/scala-abide#extending-abide projectsInNeed: - - title: Scalap - description: Scala Decoder (part of scala/scala) - icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 - link: https://github.com/scala/scala - homeLink: - issuesLink: https://issues.scala-lang.org/issues/?jql=status%20%3D%20Open%20AND%20text%20~%20%22scalap%22 - readmeLink: https://github.com/scala/scala#welcome - contributingLink: https://github.com/sbt/sbt/blob/0.13/CONTRIBUTING.md - title: Scalariform description: Scala source code formatter icon: /resources/img/white-line.png From 0dc0f0dab8532365fd069f7f3984d66976562635 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sat, 27 Jan 2018 21:52:55 +0100 Subject: [PATCH 0132/1704] Link to GitHub instead of JIRA --- contribute/hacker-guide.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index a10fbb70eb..4200df478c 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -17,7 +17,7 @@ Other good starting points for first-time contributors include the [Scala README Let's say that you particularly enjoy the new string interpolation language feature introduced in Scala 2.10.0, and you use it quite heavily. Though, there's an annoying issue -which you occasionally stumble upon: the formatting string interpolator `f` [does not support](https://issues.scala-lang.org/browse/SI-6725) +which you occasionally stumble upon: the formatting string interpolator `f` [does not support](https://github.com/scala/bug/issues/6725) new line tokens `%n`. One approach would be to go the mailing list, request that the bug be fixed, and then to wait indefinitely for the fix arrive. Another approach would be to instead patch Scala oneself, and to submit the fix to the Scala repository in hopes that it might make it into a subsequent release. @@ -88,10 +88,10 @@ Before you start making changes, always create your own branch. Never work on th the changes you plan on making. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: bug fixes and new features. -* For bug fixes, use `issue/NNNN` or `ticket/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). +* For bug fixes, use `issue/NNNN` or `ticket/NNNN` for bug NNNN from the [Scala bug tracker](https://github.com/scala/bug). * For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. -Since in our example, we're going to fix an existing bug [SI-6725](https://issues.scala-lang.org/browse/SI-6725), we'll create a branch named `ticket/6725`. +Since in our example, we're going to fix an existing bug [6725](https://github.com/scala/bug/issues/6725), we'll create a branch named `ticket/6725`. 16:39 ~/Projects/scala (master)$ git checkout -b ticket/6725 Switched to a new branch 'ticket/6725' @@ -108,7 +108,7 @@ You need the following tools: * `sbt`, an interactive build tool commonly used in Scala projects. Acquiring sbt manually is not necessary -- the recommended approach is to download the [sbt-extras runner script](https://github.com/paulp/sbt-extras/blob/master/sbt) and use it in place of `sbt`. The script will download and run the correct version of sbt when run from the Scala repository's root directory. * `curl` -- the build uses `curl` in the `pull-binary-libs.sh` script to download bootstrap libs. -OS X and Linux builds should work. Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. +OS X and Linux builds should work. Windows is supported, but it might have issues. Please report to the [Scala bug tracker](https://github.com/scala/bug) if you encounter any. Building Scala is as easy as running `sbt dist/mkPack` in the root of your cloned repository. In general, it's much more efficient to enter the `sbt` shell once and run the various tasks from there, instead of running each task by launching `sbt some-task` on your command prompt. @@ -136,7 +136,7 @@ Typically you would want to first make sure that your changes work on a small ex by running a comprehensive test suite. We'll start by creating a `sandbox` directory (`./sandbox` is listed in the .gitignore of the Scala repository), which will hold a single test file and its compilation results. First, let's make sure that -[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `sbt`. The Scala compiler that we just built is located in `build/pack/bin`. +[the bug](https://github.com/scala/bug/issues/6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `sbt`. The Scala compiler that we just built is located in `build/pack/bin`. 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox 17:26 ~/Projects/scala (ticket/6725)$ cd sandbox @@ -221,7 +221,7 @@ Tools like Scaladoc also welcome contributions. Unfortunately these smaller proj ### Interlude -To fix [the bug we're interested in](https://issues.scala-lang.org/browse/SI-6725) we've tracked the `StringContext.f` interpolator +To fix [the bug we're interested in](https://github.com/scala/bug/issues/6725) we've tracked the `StringContext.f` interpolator down to a macro implemented in `MacroImplementations.scala` There we notice that the interpolator only processes conversions, but not tokens like `%n`. Looks like an easy fix. From 5ad09fd1367de5fc65748ded6df8c003c636ee84 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 00:11:41 +0100 Subject: [PATCH 0133/1704] Remove link to 'Actors Migration Kit' --- contribute/bug-reporting-guide.md | 1 - 1 file changed, 1 deletion(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 05569ff8e4..71cb5e7ad8 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -21,7 +21,6 @@ If your issue is related to any of the following external projects, make sure to - [Akka](http://doc.akka.io/docs/akka/current/project/issue-tracking.html) - [Play!](http://github.com/playframework/Play20/issues) - [Slick](http://github.com/slick/slick/issues) - - [Actors Migration Kit](http://github.com/scala/actors-migration/issues?state=open) - [Scala IDE](https://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets) - [sbt](https://github.com/sbt/sbt/issues) From 1b4d548cbcfe92a861d226c07164006e8afb44fe Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 00:16:53 +0100 Subject: [PATCH 0134/1704] Replace references to 'JIRA' with 'GitHub' --- contribute/guide.md | 4 ++-- contribute/scala-standard-library-api-documentation.md | 6 +++--- contribute/tools.md | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index 1b530a1769..c2949683ae 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -54,12 +54,12 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) -1. [Select a bug to fix from JIRA](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a JIRA issue](/contribute/bug-reporting-guide.html) (but please +1. [Select a bug to fix from GitHub](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/contribute/bug-reporting-guide.html) (but please [make sure it's not a duplicate](/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). 2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with [these friendly people](/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). -4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. +4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. 5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). 6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide/) until [all the tests pass](/contribute/hacker-guide.html#verify). 7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 6467cea947..cae67a5db0 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -22,7 +22,7 @@ contribution steps and guidelines. Thank you.* Since API documentation is located in Scala source code files, the process for contributing API documentation is similar to that of contributing bug-fixes -to the Scala code base, but without the requirement that there be an issue filed on JIRA +to the Scala code base, but without the requirement that there be an issue filed on GitHub first. When forking/branching, just use a `scaladoc/xxxx` branch name, where xxxx is a descriptive, but short branch name (e.g. `scaladoc/future-object`). However, if an issue *does* exist, please use `issue/NNNN`, where NNNN is the ticket number, @@ -78,9 +78,9 @@ Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. * [Forking the Repo](./hacker-guide.html#set-up) - follow the setup steps through - the Branch section. If providing new documentation related to an existing JIRA issue, use `issue/NNNN` + the Branch section. If providing new documentation related to an existing GitHub issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated - JIRA issue, use `scaladoc/xxxx` instead. + GitHub issue, use `scaladoc/xxxx` instead. * [Scaladoc for library authors](http://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) covers the use of scaladoc tags, markdown and other features. * [Scaladoc's interface](http://docs.scala-lang.org/overviews/scaladoc/interface.html) diff --git a/contribute/tools.md b/contribute/tools.md index a1e2ef78e2..19f953785f 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -86,7 +86,7 @@ The links below are to a number of Scala build and IDE related projects that are Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/contribute/hacker-guide/) and [Bug-fixing](/contribute/guide/) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. -Typically, issues for these projects will be reported and kept in the github project issue tracker for that project rather than in the Scala project JIRA. +Typically, issues for these projects will be reported and kept in the GitHub project issue tracker for that project rather than in the Scala bug tracker. Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. There are some projects in this section that are in From 76665323a75257fc23570b416e1dd102824b5e1d Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 00:30:03 +0100 Subject: [PATCH 0135/1704] Remove 'Community Tickets' section almost completely --- contribute/index.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contribute/index.md b/contribute/index.md index f56a91c163..f8d71a1f69 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -29,10 +29,8 @@ Coordination of contribution efforts takes place on ### Community Tickets -The following links provide starting points for -various contributor activities: - -{% include column-list-of-items.html collection=site.contribute_community_tickets %} +All issues can be found in the [Scala bug tracker](https://github.com/scala/bug). Most issues are labeled +to make it easier to find issues you are interested in. ### Tools and Libraries From 0dda54719465b83ce5267a663ca5e31927c51486 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 11:48:36 +0100 Subject: [PATCH 0136/1704] Fix links to Mailing Lists --- contribute/hacker-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index a10fbb70eb..c6ce1c7eea 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -30,7 +30,7 @@ Sometimes it's appealing to hack alone and not to have to interact with others o this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#mailing-lists) to find out how people feel +Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#forums--mailing-lists) to find out how people feel about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. From 2f7d9fbed9fbb41c9489d5cb22c148e4f16155d1 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 12:43:49 +0100 Subject: [PATCH 0137/1704] Fix broken links --- contribute/codereviews.md | 4 ++-- contribute/guide.md | 2 +- contribute/scala-standard-library-api-documentation.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contribute/codereviews.md b/contribute/codereviews.md index ab321fd2ca..6e0a2592b6 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -6,7 +6,7 @@ includeTOC: true --- ## Code Review Contributions -In addition to [bug fixing](/contribute/guide/), you can help us review +In addition to [bug fixing](/contribute/guide.html), you can help us review [waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your @@ -51,4 +51,4 @@ own pull requests.
-Also note that the [Tools contributions](/contribute/tools/) page has more projects that will generate pull requests. +Also note that the [Tools contributions](/contribute/tools.html) page has more projects that will generate pull requests. diff --git a/contribute/guide.md b/contribute/guide.md index ae69f50fd2..1f1a014a1b 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -61,7 +61,7 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu 3. [Fork the Scala repository](/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). 4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the JIRA issue number. 5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). -6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide/) until [all the tests pass](/contribute/hacker-guide.html#verify). +6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide.html) until [all the tests pass](/contribute/hacker-guide.html#verify). 7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](http://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index c64a176cde..d7c69ef099 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -77,7 +77,7 @@ component so that they show up in the correct issue filters. Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. -* [Forking the Repo](./hacker-guide.html#set-up) - follow the setup steps through +* [Forking the Repo](./hacker-guide.html#2-set-up) - follow the setup steps through the Branch section. If providing new documentation related to an existing JIRA issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated JIRA issue, use `scaladoc/xxxx` instead. From f00b6f35c233152a7d5d3abea317d45369779a96 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 13:26:28 +0100 Subject: [PATCH 0138/1704] Update links for ENSIME --- contribute/tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index de96e19fa5..99bc353663 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -52,8 +52,8 @@ projects: link: https://github.com/ensime/ensime-server homeLink: http://ensime.github.io/ issuesLink: https://github.com/ensime/ensime-server/issues - readmeLink: https://github.com/ensime/ensime-server/blob/2.0/README.md - contributingLink: https://ensime.github.io/contributing/ + readmeLink: http://ensime.github.io/ + contributingLink: http://ensime.github.io/server/contributing/ - title: Scoverage description: Scala code coverage tool icon: https://avatars1.githubusercontent.com/u/5998302?v=3&s=200 From 5d99628ed6021cadecb44b96154134f4b3196795 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 16:26:24 +0100 Subject: [PATCH 0139/1704] Remove link to not-existing page --- contribute/guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/guide.md b/contribute/guide.md index 1f1a014a1b..73b21ec22b 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -65,7 +65,7 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu 7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](http://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) -9. [Submit a pull request](./hacker-guide.html#submit) following the [Scala project pull-request guidelines](http://docs.scala-lang.org/scala/pull-request-policy.html). +9. [Submit a pull request](./hacker-guide.html#submit). 10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide.html#review). 11. Celebrate! From d13b13bd0cb4d050f5bada2b510d12b4b326701b Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 28 Jan 2018 17:42:37 +0100 Subject: [PATCH 0140/1704] Update DBuild links --- contribute/tools.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 99bc353663..571005612a 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -33,11 +33,11 @@ projects: - title: DBuild description: Multi-project build tool. icon: https://avatars3.githubusercontent.com/u/784923?v=3&s=200 - link: https://github.com/typesafehub/dbuild - homeLink: http://typesafehub.github.io/dbuild - issuesLink: https://github.com/typesafehub/dbuild/issues - readmeLink: https://github.com/typesafehub/dbuild/blob/master/README.md - contributingLink: https://github.com/typesafehub/dbuild/blob/master/README.md#get-involved + link: https://github.com/lightbend/dbuild + homeLink: http://lightbend.github.io/dbuild + issuesLink: https://github.com/lightbend/dbuild/issues + readmeLink: https://github.com/lightbend/dbuild/blob/master/README.md + contributingLink: https://github.com/lightbend/dbuild/blob/master/README.md#get-involved - title: Partest description: Scala Compiler/Library Testing icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 From df0a9ab333fd0fa892f7ccf6e28fe28cc68a7f72 Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Wed, 14 Feb 2018 20:24:48 +0100 Subject: [PATCH 0141/1704] Update broken/outdated links --- contribute/tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 4ae371d64e..0a3bd6e80e 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -44,7 +44,7 @@ projects: link: https://github.com/scala/scala-partest homeLink: http://docs.scala-lang.org/tutorials/partest-guide.html issuesLink: https://github.com/scala/scala-partest/issues - readmeLink: https://github.com/scala/scala-partest/blob/master/README.md + readmeLink: https://github.com/scala/scala-partest/blob/1.1.x/README.md contributingLink: - title: Ensime description: Scala Support for Text Editors @@ -84,7 +84,7 @@ projectsInNeed: The links below are to a number of Scala build and IDE related projects that are important in the larger Scala space, and which welcome contributions. -Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/contribute/hacker-guide/) and [Bug-fixing](/contribute/guide/) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. +Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/contribute/hacker-guide.html) and [Bug-fixing](/contribute/guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. Typically, issues for these projects will be reported and kept in the GitHub project issue tracker for that project rather than in the Scala bug tracker. Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. From d0fc35c74940a14777bf68d393159ebfe56e1ed0 Mon Sep 17 00:00:00 2001 From: Olivier Blanvillain Date: Fri, 16 Feb 2018 10:59:33 +0100 Subject: [PATCH 0142/1704] s/username/user-name/ to please htmlproofer --- contribute/hacker-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index d63ad12cf4..78af87bbcd 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -67,7 +67,7 @@ If you're new to Git, don't be afraid of messing up-- there is no way you can co ### Clone -If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` +If everything went okay, you will be redirected to your own fork at `https://github.com/user-name/scala`, where `username` is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), which covers some of the things that will follow below. Then, _clone_ your repository (i.e. pull a copy from GitHub to your local machine) by running the following on the command line: From 084649625b4db03be95dcceef418f470bedaabff Mon Sep 17 00:00:00 2001 From: Olivier Blanvillain Date: Fri, 16 Feb 2018 12:00:21 +0100 Subject: [PATCH 0143/1704] Fix contribute link --- contribute/documentation.md | 6 +++--- contribute/scala-standard-library-api-documentation.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index a329f67369..40f7ad9c6e 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -22,11 +22,11 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation/#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. -* [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation/) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. +* [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just -[submit new Scaladoc](/contribute/scala-standard-library-api-documentation/) +[submit new Scaladoc](/contribute/scala-standard-library-api-documentation.html) without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on [Scala Contributors](https://contributors.scala-lang.org/) so that people know what you are doing. ### The Main Scala Documentation Site diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index f05df8663b..33ee4ad558 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -1,7 +1,7 @@ --- title: Contribute to API Documentation layout: inner-page-no-masthead -# permalink: /contribute/scala-standard-library-api-documentation/ +# permalink: /contribute/scala-standard-library-api-documentation.html includeTOC: true --- From 44032b5473103a5cf21a47552398910667898f0d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 19 Jun 2019 07:38:39 +0200 Subject: [PATCH 0144/1704] update spec links and advisements partially addresses scala/bug#11566 --- contribute/bug-reporting-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 71cb5e7ad8..bd2f2c70c4 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -44,7 +44,7 @@ If you have a code snippet that is resulting in bytecode which you believe is be 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. -* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.12/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). In general, if you find yourself stuck on any of these steps, asking on [Scala Contributors](https://contributors.scala-lang.org/) can be helpful: From 4643f1228a86fb6c347d746267989a73cc89b695 Mon Sep 17 00:00:00 2001 From: Dale Wijnand <344610+dwijnand@users.noreply.github.com> Date: Tue, 9 Jul 2019 14:41:22 +0100 Subject: [PATCH 0145/1704] Point the hacker guide to 2.13 --- contribute/hacker-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 78af87bbcd..b9e657adfb 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -10,7 +10,7 @@ This guide is intended to help you get from an idea of fixing a bug or implement This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. -Other good starting points for first-time contributors include the [Scala README](https://github.com/scala/scala#get-in-touch) and [contributor's guidelines](https://github.com/scala/scala/blob/2.12.x/CONTRIBUTING.md). +Other good starting points for first-time contributors include the [Scala README](https://github.com/scala/scala#get-in-touch) and [contributor's guidelines](https://github.com/scala/scala/blob/2.13.x/CONTRIBUTING.md). ## The Running Example From 4a881b17668f274112b934d07c719b1e2c21039f Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 9 Oct 2019 19:16:52 -0700 Subject: [PATCH 0146/1704] renamed community-builds repo to community-build --- contribute/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/index.md b/contribute/index.md index f8d71a1f69..f7b6082226 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -55,6 +55,6 @@ which leverages [sbt](http://www.scala-sbt.org). If you're the maintainer -- or just an interested user! -- of an open-source Scala library or tool, please visit the -[community build documentation](https://github.com/scala/community-builds/wiki) +[community build documentation](https://github.com/scala/community-build/wiki) for guidelines on what projects are suitable for the community build and how projects can be added. From ef84a9323cf7607406a976be1b6956a43b868052 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Sat, 12 Oct 2019 07:18:26 -0700 Subject: [PATCH 0147/1704] ENSIME is dead, Abide is dead (#1083) --- contribute/tools.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/contribute/tools.md b/contribute/tools.md index 0a3bd6e80e..4a32124731 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -46,14 +46,6 @@ projects: issuesLink: https://github.com/scala/scala-partest/issues readmeLink: https://github.com/scala/scala-partest/blob/1.1.x/README.md contributingLink: - - title: Ensime - description: Scala Support for Text Editors - icon: https://avatars0.githubusercontent.com/u/5089042?v=3&s=200 - link: https://github.com/ensime/ensime-server - homeLink: http://ensime.github.io/ - issuesLink: https://github.com/ensime/ensime-server/issues - readmeLink: http://ensime.github.io/ - contributingLink: http://ensime.github.io/server/contributing/ - title: Scoverage description: Scala code coverage tool icon: https://avatars1.githubusercontent.com/u/5998302?v=3&s=200 @@ -62,14 +54,6 @@ projects: issuesLink: https://github.com/scoverage/scalac-scoverage-plugin/issues readmeLink: https://github.com/scoverage/scalac-scoverage-plugin/blob/master/README.md contributingLink: https://groups.google.com/forum/#!forum/scala-code-coverage-tool - - title: Abide - description: Lint tooling for Scala - icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 - link: https://github.com/scala/scala-abide - homeLink: https://github.com/scala/scala-abide#abide--lint-tooling-for-scala - issuesLink: https://github.com/scala/scala-abide/issues - readmeLink: https://github.com/scala/scala-abide/blob/master/README.md - contributingLink: https://github.com/scala/scala-abide#extending-abide projectsInNeed: - title: Scalariform From 7fbd26db957db39e4c611d5b7d9d9c7295449088 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 27 Jan 2020 18:16:47 -0800 Subject: [PATCH 0148/1704] fix dead links fixes #1101 --- contribute/bug-reporting-guide.md | 2 +- contribute/corelibs.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index bd2f2c70c4..22642e1289 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -44,7 +44,7 @@ If you have a code snippet that is resulting in bytecode which you believe is be 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. -* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](https://docs.scala-lang.org/sips/) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). In general, if you find yourself stuck on any of these steps, asking on [Scala Contributors](https://contributors.scala-lang.org/) can be helpful: diff --git a/contribute/corelibs.md b/contribute/corelibs.md index e1f10cb790..bd6827e438 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -20,4 +20,4 @@ There are several options for contributing to Scala's core libraries. You can: For significant new functionality or a whole new API to be considered for inclusion in the core Scala distribution, you will be asked to submit a SLIP (Scala Library Improvement Process) document. -Please see [instructions for submitting a new SLIP](http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the [pre-requisites](http://docs.scala-lang.org/sips/slip-submission.html) before submitting a SLIP. +Please see [instructions for submitting a new SLIP](https://web.archive.org/web/20180116192845/http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the [pre-requisites](http://docs.scala-lang.org/sips/slip-submission.html) before submitting a SLIP. From cd0e4fa3ac7bb6206a70ef844d17afad9dd21fe8 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 29 Jan 2020 10:58:27 -0800 Subject: [PATCH 0149/1704] fix some 404s --- contribute/corelibs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index bd6827e438..260d49fb2f 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -20,4 +20,4 @@ There are several options for contributing to Scala's core libraries. You can: For significant new functionality or a whole new API to be considered for inclusion in the core Scala distribution, you will be asked to submit a SLIP (Scala Library Improvement Process) document. -Please see [instructions for submitting a new SLIP](https://web.archive.org/web/20180116192845/http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the [pre-requisites](http://docs.scala-lang.org/sips/slip-submission.html) before submitting a SLIP. +Please see [instructions for submitting a new SLIP](https://web.archive.org/web/20180116192845/http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the pre-requisites in the instructions before submitting a SLIP. From ae348d24df52b095cb0ab8b2c64bc1b03ca69770 Mon Sep 17 00:00:00 2001 From: Philippus Date: Thu, 30 Jan 2020 07:55:03 +0100 Subject: [PATCH 0150/1704] Replace references to SLIP with SIP --- contribute/corelibs.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index 260d49fb2f..a63707a8e3 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -13,11 +13,11 @@ There are several options for contributing to Scala's core libraries. You can: * [Fix Bugs or Issues](/contribute/guide.html) against the [reported library bugs/issues](https://github.com/scala/bug). * Contribute significant new functionality or a new API by submitting - a Scala Library Improvement Process (SLIP) Document. + a Scala Improvement Process (SIP) Document. -### Submitting a SLIP +### Submitting a SIP For significant new functionality or a whole new API to be considered for -inclusion in the core Scala distribution, you will be asked to submit a SLIP (Scala Library Improvement Process) document. +inclusion in the core Scala distribution, you will be asked to submit a SIP (Scala Improvement Process) document. -Please see [instructions for submitting a new SLIP](https://web.archive.org/web/20180116192845/http://docs.scala-lang.org/sips/slip-submission.html) and familiarize yourself with the [SIP/SLIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the pre-requisites in the instructions before submitting a SLIP. +Please see [instructions for submitting a new SIP](https://docs.scala-lang.org/sips/sip-submission.html) and familiarize yourself with the [SIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the pre-requisites in the instructions before submitting a SIP. From 6342df91471689c4eb7dfc3d45b91c8140b09d63 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sat, 1 Feb 2020 09:40:38 +0100 Subject: [PATCH 0151/1704] Reword bit about significant changes --- contribute/corelibs.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/contribute/corelibs.md b/contribute/corelibs.md index a63707a8e3..6b2cc5d95f 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -12,12 +12,8 @@ There are several options for contributing to Scala's core libraries. You can: * [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. * [Fix Bugs or Issues](/contribute/guide.html) against the [reported library bugs/issues](https://github.com/scala/bug). -* Contribute significant new functionality or a new API by submitting - a Scala Improvement Process (SIP) Document. -### Submitting a SIP +### Significant changes -For significant new functionality or a whole new API to be considered for -inclusion in the core Scala distribution, you will be asked to submit a SIP (Scala Improvement Process) document. - -Please see [instructions for submitting a new SIP](https://docs.scala-lang.org/sips/sip-submission.html) and familiarize yourself with the [SIP](http://docs.scala-lang.org/sips/) section of the Scala documentation site. Also please pay particular attention to the pre-requisites in the instructions before submitting a SIP. +For significant new functionality or a whole new API to be considered for inclusion in the core Scala distribution, +please take into account [https://github.com/scala/scala-dev/issues/661] before doing so. From fa1fc2b169352c1aec176bb5a2df8b65ce10e9f8 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 13 Oct 2020 09:07:35 -0700 Subject: [PATCH 0152/1704] remove incorrect bit about partest (#1163) --- contribute/hacker-guide.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index b9e657adfb..f2f11d4f71 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -324,8 +324,6 @@ Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, resp testing: [...]/files/run/stringinterpolation_macro-run.scala [ OK ] All of 6 tests were successful (elapsed time: 00:00:08) -`partest` was removed in 2.12. - ## 4. Publish After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. From 545f84c9e697b7754a86260771cccc982f456091 Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Mon, 14 Dec 2020 23:54:24 +0100 Subject: [PATCH 0153/1704] Use HTTPS for links Does not update links in documentation of third party content in - _sass/vendors - resources/js/vendor --- _contribute_resources/1-documentation.md | 2 +- contribute/bug-reporting-guide.md | 8 ++--- contribute/documentation.md | 8 ++--- contribute/guide.md | 6 ++-- contribute/hacker-guide.md | 36 +++++++++---------- contribute/index.md | 2 +- ...cala-standard-library-api-documentation.md | 14 ++++---- contribute/tools.md | 14 ++++---- 8 files changed, 45 insertions(+), 45 deletions(-) diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 54f18c938c..b39290a394 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -3,4 +3,4 @@ title: Documentation link: /contribute/documentation.html icon: fa fa-file-text --- -[Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](http://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). +[Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](https://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 22642e1289..88317da0ce 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -18,9 +18,9 @@ The first step in identifying a bug is to identify which component of the Scala If your issue is related to any of the following external projects, make sure to use its appropriate issue tracker: - - [Akka](http://doc.akka.io/docs/akka/current/project/issue-tracking.html) - - [Play!](http://github.com/playframework/Play20/issues) - - [Slick](http://github.com/slick/slick/issues) + - [Akka](https://doc.akka.io/docs/akka/current/project/issue-tracking.html) + - [Play!](https://github.com/playframework/Play20/issues) + - [Slick](https://github.com/slick/slick/issues) - [Scala IDE](https://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets) - [sbt](https://github.com/sbt/sbt/issues) @@ -44,7 +44,7 @@ If you have a code snippet that is resulting in bytecode which you believe is be 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. -* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](https://docs.scala-lang.org/sips/) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](https://docs.scala-lang.org/sips/) or in the [Scala Language Specification](https://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). In general, if you find yourself stuck on any of these steps, asking on [Scala Contributors](https://contributors.scala-lang.org/) can be helpful: diff --git a/contribute/documentation.md b/contribute/documentation.md index 40f7ad9c6e..19a72fbe34 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -43,15 +43,15 @@ without creating an issue, but please look to see if there is an issue already s * SIP (Scala Improvement Process) Proposals and more -Please read [contributing to the docs.scala-lang.org site](http://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses -the [Jekyll](http://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. +Please read [contributing to the docs.scala-lang.org site](https://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses +the [Jekyll](https://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. ### Updating scala-lang.org Additional high-level documentation (including documentation on contributing to Scala and related projects) is provided on the main -[Scala Language site](http://scala-lang.org), and is also kept in the +[Scala Language site](https://scala-lang.org), and is also kept in the [scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[docs.scala-lang.org contribution](https://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/contribute/guide.md b/contribute/guide.md index 6751849aaa..f54d47ca45 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -46,7 +46,7 @@ Typically the scaladoc tool provides a low entry point for new committers, so it On the [Scala bug tracker](https://github.com/scala/bug) you will find the bugs that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. If you are interested in contributing code, we ask you to sign the -[Scala Contributor License Agreement](http://www.lightbend.com/contribute/cla/scala), +[Scala Contributor License Agreement](https://www.lightbend.com/contribute/cla/scala), which allows us to ensure that all code submitted to the project is unencumbered by copyrights or patents. @@ -63,7 +63,7 @@ This is the impatient developer's checklist for the steps to submit a bug-fix pu 5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). 6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide.html) until [all the tests pass](/contribute/hacker-guide.html#verify). 7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. -8. If necessary [re-write git history](http://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( +8. If necessary [re-write git history](https://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) 9. [Submit a pull request](./hacker-guide.html#submit). 10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide.html#review). @@ -75,7 +75,7 @@ Need more information or a little more hand-holding for the first one? We got yo For larger, more ambitious changes (e.g. new language features), the first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea and on the implementation plan. Announce the change -on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. +on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](https://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against the Scala project source tree. The [hacker guide](/contribute/hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index f2f11d4f71..01775e4580 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -39,7 +39,7 @@ A list of language features/libraries along with their maintainer's full names a In our running example, since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the [Scala Contributors](https://contributors.scala-lang.org/) mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, -in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user) about our issue. +in this example, we post to the [the scala-user mailing list](https://groups.google.com/group/scala-user) about our issue. Posting to scala-user Response from Martin @@ -48,17 +48,17 @@ Now that we have the approval of the feature's author, we can get to work! ## 2. Set up -Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](http://git-scm.com/) -and [GitHub](http://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, +Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](https://git-scm.com/) +and [GitHub](https://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, it probably makes sense to familiarize yourself with Git first. We recommend -* the [Git Pro](http://git-scm.com/book/en/) online book. +* the [Git Pro](https://git-scm.com/book/en/) online book. * the help page on [Forking a Git Repository](https://help.github.com/articles/fork-a-repo). -* this great training tool [LearnGitBranching](http://pcottle.github.io/learnGitBranching/). One hour hands-on training helps more than 1000 hours reading. +* this great training tool [LearnGitBranching](https://pcottle.github.io/learnGitBranching/). One hour hands-on training helps more than 1000 hours reading. ### Fork -Log into [GitHub](http://github.com/), go to [https://github.com/scala/scala](https://github.com/scala/scala) and click the `Fork` +Log into [GitHub](https://github.com/), go to [https://github.com/scala/scala](https://github.com/scala/scala) and click the `Fork` button in the top right corner of the page. This will create your own copy of our repository that will serve as a scratchpad for your work. If you're new to Git, don't be afraid of messing up-- there is no way you can corrupt our repository. @@ -68,7 +68,7 @@ If you're new to Git, don't be afraid of messing up-- there is no way you can co ### Clone If everything went okay, you will be redirected to your own fork at `https://github.com/user-name/scala`, where `username` -is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), +is your github user name. You might find it helpful to read [https://help.github.com/fork-a-repo/](https://help.github.com/fork-a-repo/), which covers some of the things that will follow below. Then, _clone_ your repository (i.e. pull a copy from GitHub to your local machine) by running the following on the command line: 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala @@ -96,7 +96,7 @@ Since in our example, we're going to fix an existing bug [6725](https://github.c 16:39 ~/Projects/scala (master)$ git checkout -b ticket/6725 Switched to a new branch 'ticket/6725' -If you are new to Git and branching, read the [Branching Chapter](http://git-scm.com/book/en/Git-Branching) in the Git Pro book. +If you are new to Git and branching, read the [Branching Chapter](https://git-scm.com/book/en/Git-Branching) in the Git Pro book. ### Build @@ -198,19 +198,19 @@ Contributing to the Scala standard library is about the same as working on one o If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. -If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](http://docs.scala-lang.org/overviews/collections/introduction.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](http://docs.scala-lang.org/overviews/parallel-collections/overview.html). +If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](https://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](https://docs.scala-lang.org/overviews/collections/introduction.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](https://docs.scala-lang.org/overviews/parallel-collections/overview.html). ##### The Scala Compiler Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email ([Scala Contributors](https://contributors.scala-lang.org/) mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: -* [Compiler internals videos by Martin Odersky](http://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video +* [Compiler internals videos by Martin Odersky](https://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. -* [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that +* [Reflection documentation](https://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. -* [Reflection and Compilers by Martin Odersky](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk +* [Reflection and Compilers by Martin Odersky](https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. -* [Scala compiler corner](http://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about +* [Scala compiler corner](https://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about most of the post-typer phases (i.e. the backend) in the Scala compiler. * [Scala Contributors](https://contributors.scala-lang.org/), a mailing list which hosts discussions about the core internal design and implementation of the Scala system. @@ -264,7 +264,7 @@ Adding tests to the test suite is as easy as moving them to the appropriate dire * Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/2.12.x/test/files/pos). * Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/2.12.x/test/files/neg). -* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/2.12.x/test/files/run) and have a corresponding `.check` file with the expected output. You will get test failures if the content of a `.check` file is different from what the test produces while running. If the change in the output is an expected product of your work, you might not want to change the `.check` file by hand. To make partest change the `.check` file, run it with a `--update-check` flag, like so `./test/partest --update-check path/to/test.scala`. For more information on partest, please refer to its [documentation](http://docs.scala-lang.org/tutorials/partest-guide.html). +* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/2.12.x/test/files/run) and have a corresponding `.check` file with the expected output. You will get test failures if the content of a `.check` file is different from what the test produces while running. If the change in the output is an expected product of your work, you might not want to change the `.check` file by hand. To make partest change the `.check` file, run it with a `--update-check` flag, like so `./test/partest --update-check path/to/test.scala`. For more information on partest, please refer to its [documentation](https://docs.scala-lang.org/tutorials/partest-guide.html). * Everything that can be unit-tested should go to ["junit" directory](https://github.com/scala/scala/tree/2.12.x/test/junit) * Property-based tests go to the ["scalacheck" directory](https://github.com/scala/scala/tree/2.12.x/test/scalacheck) @@ -309,7 +309,7 @@ This means your change is backward or forward binary incompatible with the speci ### Verify -Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](http://junit.org/junit4/) and [partest](partest-guide.html), a tool we wrote for testing Scala. +Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest](partest-guide.html), a tool we wrote for testing Scala. Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, respectively. `partest` (not `sbt partest`) also allows you to run a subset of the tests using wildcards: @@ -337,11 +337,11 @@ Let's go into each of these points in more detail. ### Commit -The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. +The [Git Basics](https://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. There are two things you should know here: 1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policies](https://github.com/scala/scala/blob/2.12.x/CONTRIBUTING.md) for more information about the desired style of your commits. -2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. +2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](https://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on GitHub. @@ -364,7 +364,7 @@ Once you are satisfied with your work, synced with `master` and cleaned up your Now, we must simply submit our proposed patch. Navigate to your branch in GitHub (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will -need to sign the contributor license agreement, which [can be done online](http://www.lightbend.com/contribute/cla/scala) within a few minutes. +need to sign the contributor license agreement, which [can be done online](https://www.lightbend.com/contribute/cla/scala) within a few minutes. Submit a pull request diff --git a/contribute/index.md b/contribute/index.md index f7b6082226..7f672ec97c 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -51,7 +51,7 @@ against development versions of the Scala compiler and standard library in order to discover regressions prior to releases. The build uses Lightbend's [dbuild](https://github.com/typesafehub/dbuild) tool, -which leverages [sbt](http://www.scala-sbt.org). +which leverages [sbt](https://www.scala-sbt.org). If you're the maintainer -- or just an interested user! -- of an open-source Scala library or tool, please visit the diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 33ee4ad558..6f3af62b30 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -7,12 +7,12 @@ includeTOC: true This page is specific to API documentation contributions – that is, API documentation for -[Scala's standard library](http://scala-lang.org/api/current/#package) – +[Scala's standard library](https://scala-lang.org/api/current/#package) – sometimes referred to as Scaladoc contributions. For contributions to tutorial and guide-style documentation on -[docs.scala-lang.org](http://docs.scala-lang.org), -see the ["doc-site"'s contribution guide](http://docs.scala-lang.org/contribute.html). +[docs.scala-lang.org](https://docs.scala-lang.org), +see the ["doc-site"'s contribution guide](https://docs.scala-lang.org/contribute.html). *Please note, these instructions cover documentation contributions Scala core libraries only. For other Scala projects please check those projects for the @@ -37,7 +37,7 @@ If you want to contribute new API documentation, ## Contribute API Documentation Bug Reports One good way to contribute is by helping us to identify missing documentation. To do -this, [browse the current API documentation](http://www.scala-lang.org/api/current/) +this, [browse the current API documentation](https://www.scala-lang.org/api/current/) and identify missing, incorrect or inadequate documentation. A good place to start is package objects for important packages (these often get overlooked for documentation and are a good place for API overviews). @@ -81,14 +81,14 @@ new API documentation to save time, effort, mistakes and repetition. the Branch section. If providing new documentation related to an existing GitHub issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated GitHub issue, use `scaladoc/xxxx` instead. -* [Scaladoc for library authors](http://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) +* [Scaladoc for library authors](https://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) covers the use of scaladoc tags, markdown and other features. -* [Scaladoc's interface](http://docs.scala-lang.org/overviews/scaladoc/interface.html) +* [Scaladoc's interface](https://docs.scala-lang.org/overviews/scaladoc/interface.html) covers all of the features of Scaladoc's interface, e.g. switching between companions, browsing package object documentation, searching, token searches and so on. * Prior to commit, be sure to read - [A note about git commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) and the [Scala Project & Developer Guidelines](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md). + [A note about git commit messages](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) and the [Scala Project & Developer Guidelines](https://github.com/scala/scala/blob/2.11.x/CONTRIBUTING.md). Some of this latter document will clearly not apply (like the sections on providing tests, however see below for some special requirements for documentation). Do still read the whole document though, and pay close attention to the title and commit diff --git a/contribute/tools.md b/contribute/tools.md index 4a32124731..7c33ebfda6 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -8,9 +8,9 @@ includeTOC: true projects: - title: sbt description: Interactive build tool. - icon: http://www.scala-sbt.org/assets/typesafe_sbt_svg.svg + icon: https://www.scala-sbt.org/assets/typesafe_sbt_svg.svg link: https://github.com/sbt/sbt - homeLink: http://www.scala-sbt.org/ + homeLink: https://www.scala-sbt.org/ issuesLink: https://github.com/sbt/sbt#issues-and-pull-requests readmeLink: https://github.com/sbt/sbt/blob/0.13/README.md contributingLink: https://github.com/sbt/sbt/blob/0.13/CONTRIBUTING.md @@ -18,23 +18,23 @@ projects: description: (Contribute through scala/scala) icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 link: https://github.com/scala/scala - homeLink: http://www.scala-lang.org/api + homeLink: https://www.scala-lang.org/api issuesLink: https://github.com/scala/bug/labels/scaladoc readmeLink: https://github.com/scala/scala#welcome - contributingLink: http://scala-lang.org/contribute/guide.html + contributingLink: https://scala-lang.org/contribute/guide.html - title: Scala IDE description: Interactive build tool. icon: https://avatars2.githubusercontent.com/u/1026788?v=3&s=200 link: https://github.com/scala-ide/scala-ide homeLink: http://scala-ide.org/ - issuesLink: http://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets + issuesLink: https://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets readmeLink: https://github.com/scala-ide/scala-ide/blob/master/README.md contributingLink: https://github.com/scala-ide/scala-ide/blob/master/CONTRIBUTING.md - title: DBuild description: Multi-project build tool. icon: https://avatars3.githubusercontent.com/u/784923?v=3&s=200 link: https://github.com/lightbend/dbuild - homeLink: http://lightbend.github.io/dbuild + homeLink: https://lightbend.github.io/dbuild issuesLink: https://github.com/lightbend/dbuild/issues readmeLink: https://github.com/lightbend/dbuild/blob/master/README.md contributingLink: https://github.com/lightbend/dbuild/blob/master/README.md#get-involved @@ -42,7 +42,7 @@ projects: description: Scala Compiler/Library Testing icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 link: https://github.com/scala/scala-partest - homeLink: http://docs.scala-lang.org/tutorials/partest-guide.html + homeLink: https://docs.scala-lang.org/tutorials/partest-guide.html issuesLink: https://github.com/scala/scala-partest/issues readmeLink: https://github.com/scala/scala-partest/blob/1.1.x/README.md contributingLink: From b129513da84f1367e7806e36e85bdb5a41485aaa Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Tue, 15 Dec 2020 01:33:43 +0100 Subject: [PATCH 0154/1704] Use correct capitalization for "GitHub" --- contribute/documentation.md | 6 +++--- contribute/guide.md | 2 +- contribute/hacker-guide.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/contribute/documentation.md b/contribute/documentation.md index 19a72fbe34..967806de42 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -31,7 +31,7 @@ without creating an issue, but please look to see if there is an issue already s ### The Main Scala Documentation Site -[docs.scala-lang.org](https://docs.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a github project that you can fork and submit pull requests from. It includes: +[docs.scala-lang.org](https://docs.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a GitHub project that you can fork and submit pull requests from. It includes: * Overviews * Tutorials @@ -51,7 +51,7 @@ the [Jekyll](https://jekyllrb.com/) markdown engine so you will need to follow t Additional high-level documentation (including documentation on contributing to Scala and related projects) is provided on the main [Scala Language site](https://scala-lang.org), and is also kept in the -[scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. +[scala-lang GitHub project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[docs.scala-lang.org contribution](https://docs.scala-lang.org/contribute.html) document and the [scala-lang.org github README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[docs.scala-lang.org contribution](https://docs.scala-lang.org/contribute.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/contribute/guide.md b/contribute/guide.md index f54d47ca45..7e4f375005 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -52,7 +52,7 @@ unencumbered by copyrights or patents. ### Bug-fix Check List -This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [github branch](https://github.com/scala/scala) +This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [GitHub branch](https://github.com/scala/scala) 1. [Select a bug to fix from GitHub](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/contribute/bug-reporting-guide.html) (but please [make sure it's not a duplicate](/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 01775e4580..87cb8c25e4 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -68,7 +68,7 @@ If you're new to Git, don't be afraid of messing up-- there is no way you can co ### Clone If everything went okay, you will be redirected to your own fork at `https://github.com/user-name/scala`, where `username` -is your github user name. You might find it helpful to read [https://help.github.com/fork-a-repo/](https://help.github.com/fork-a-repo/), +is your GitHub user name. You might find it helpful to read [https://help.github.com/fork-a-repo/](https://help.github.com/fork-a-repo/), which covers some of the things that will follow below. Then, _clone_ your repository (i.e. pull a copy from GitHub to your local machine) by running the following on the command line: 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala From bcd05f58cb46217358858002a9e17be6a57f2699 Mon Sep 17 00:00:00 2001 From: Dmitrii Naumenko Date: Thu, 24 Jun 2021 19:01:58 +0300 Subject: [PATCH 0155/1704] Update ca-given-imports.md --- _overviews/scala3-book/ca-given-imports.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/ca-given-imports.md b/_overviews/scala3-book/ca-given-imports.md index 2b5c0a6429..6cfb436a29 100644 --- a/_overviews/scala3-book/ca-given-imports.md +++ b/_overviews/scala3-book/ca-given-imports.md @@ -14,7 +14,7 @@ The basic form is shown in this example: ```scala object A: class TC - given tc as TC + given tc: TC = ??? def f(using TC) = ??? object B: From 512a8d539e0684aae9f3b3a1b97a7b80180061ad Mon Sep 17 00:00:00 2001 From: Mario Galic Date: Sat, 26 Jun 2021 22:22:44 +0100 Subject: [PATCH 0156/1704] Scala and virtual environments --- .../scala3-book/scala-for-python-devs.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/_overviews/scala3-book/scala-for-python-devs.md b/_overviews/scala3-book/scala-for-python-devs.md index 77fb3c5881..d9e7633837 100644 --- a/_overviews/scala3-book/scala-for-python-devs.md +++ b/_overviews/scala3-book/scala-for-python-devs.md @@ -1287,6 +1287,30 @@ Follow the links below for more details: - Infix methods - Macros and metaprogramming +## Scala and virtual environments + +In Scala, there is no need to explicitly set up the equivalent of a Python virtual environment. By default, Scala build tools manage project dependencies such that users do not have to think about manual package installation. For example, using the `sbt` build tool, we specify dependencies inside `build.sbt` file under `libraryDependencies` setting, then executing + +``` +cd myapp +sbt compile +``` + +automatically resolves all dependencies for that particular project. The location of downloaded dependencies is largely an implementation detail of the build tool, and users do not have to interact with these downloaded dependencies directly. For example, if we delete the whole sbt dependencies cache, on the next compilation of the project, sbt simply resolves and downloads all the required dependencies again, automatically. + +This differs from Python, were by default dependencies are installed in system-wide or user-wide directories, so to obtain an isolated environment on a per-project basis one has to create a corresponding virtual environment. For example, using the `venv` module, we might create one for a particular project like so + +``` +cd myapp +python3 -m venv myapp-env +source myapp-env/bin/activate +pip install -r requirements.txt +``` + +This installs all the dependencies under the project's `myapp/myapp-env` directory and alters the shell environmental variable `PATH` to look up dependencies from `myapp-env`. +None of this manual process is necessary in Scala. + + [collections-classes]: {% link _overviews/scala3-book/collections-classes.md %} [concurrency]: {% link _overviews/scala3-book/concurrency.md %} [contextual]: {% link _overviews/scala3-book/ca-contextual-abstractions-intro.md %} From b61531b87772916989a367a678a104b4433f8382 Mon Sep 17 00:00:00 2001 From: Stefan Hagen Date: Thu, 15 Jul 2021 21:10:10 +0200 Subject: [PATCH 0157/1704] Minimal fix for #2113 in upstream repo This is a minimal fix for https://github.com/scala/docs.scala-lang/issues/2113 - only correcting the logical error. --- _overviews/scala3-book/scala-for-python-devs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/scala-for-python-devs.md b/_overviews/scala3-book/scala-for-python-devs.md index 77fb3c5881..1e8bab8dae 100644 --- a/_overviews/scala3-book/scala-for-python-devs.md +++ b/_overviews/scala3-book/scala-for-python-devs.md @@ -1078,7 +1078,7 @@ Those lists are used in the following table, that shows how to apply mapping and - f = lambda x: x if x > 1 else 1 + f = lambda x: x > 1
x = filter(f, numbers)
From d50ab8a2ac928a3532da11d1df998377b396e17c Mon Sep 17 00:00:00 2001 From: Fan Date: Sun, 18 Jul 2021 09:00:57 +0800 Subject: [PATCH 0158/1704] Update futures.md for fix chinese wrong --- _zh-cn/overviews/core/futures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_zh-cn/overviews/core/futures.md b/_zh-cn/overviews/core/futures.md index 823e72a3cd..26da10969d 100644 --- a/_zh-cn/overviews/core/futures.md +++ b/_zh-cn/overviews/core/futures.md @@ -433,7 +433,7 @@ Promises也能通过一个complete方法来实现,这个方法采用了一个` 应用前面所述的promises和futures方法的一个优点是,这些方法是单一操作的并且是没有副作用(side-effects)的,因此程序是具有确定性的(deterministic)。确定性意味着,如果该程序没有抛出异常(future的计算值被获得),无论并行的程序如何调度,那么程序的结果将会永远是一样的。 -在一些情况下,客户端也许希望能够只在promise没有完成的情况下完成该promise的计算(例如,如果有多个HTTP请求被多个不同的futures对象来执行,并且客户端只关心地一个HTTP应答(response),该应答对应于地一个完成该promise的future)。因为这个原因,future提供了tryComplete,trySuccess和tryFailure方法。客户端需要意识到调用这些的结果是不确定的,调用的结果将以来从程序执行的调度。 +在一些情况下,客户端也许希望能够只在promise没有完成的情况下完成该promise的计算(例如,如果有多个HTTP请求被多个不同的futures对象来执行,并且客户端只关心第一个HTTP应答(response),该应答对应于第一个完成该promise的future)。因为这个原因,future提供了tryComplete,trySuccess和tryFailure方法。客户端需要意识到调用这些的结果是不确定的,调用的结果将以来从程序执行的调度。 completeWith方法将用另外一个future完成promise计算。当该future结束的时候,该promise对象得到那个future对象同样的值,如下的程序将打印1: From 3c7d9c3631536eb4aa9acd957fa6e385ce466b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Campos?= Date: Sun, 18 Jul 2021 11:16:22 +0100 Subject: [PATCH 0159/1704] parallel-collections - add note for Scala 2.13+ mention need to import separate module --- _overviews/parallel-collections/overview.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_overviews/parallel-collections/overview.md b/_overviews/parallel-collections/overview.md index 11fab887a6..b03bec798e 100644 --- a/_overviews/parallel-collections/overview.md +++ b/_overviews/parallel-collections/overview.md @@ -12,6 +12,8 @@ permalink: /overviews/parallel-collections/:title.html **Aleksandar Prokopec, Heather Miller** +If you're using Scala 2.13+ and want to use Scala's parallel collections, you'll have to import a separate module, as described [here](https://github.com/scala/scala-parallel-collections). + ## Motivation Amidst the shift in recent years by processor manufacturers from single to From 310455bdce42aca524f6f47a2685408d7b25108c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Campos?= Date: Sun, 18 Jul 2021 11:26:01 +0100 Subject: [PATCH 0160/1704] use wayback machine version of broken urls --- _overviews/parallel-collections/performance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_overviews/parallel-collections/performance.md b/_overviews/parallel-collections/performance.md index d5780b05c5..625f08304e 100644 --- a/_overviews/parallel-collections/performance.md +++ b/_overviews/parallel-collections/performance.md @@ -122,6 +122,6 @@ depends on many factors. Some of them, but not all, include: 2. [Dynamic compilation and performance measurement, Brian Goetz][2] 3. [Scala library benchmarks][3] - [1]: https://www.ibm.com/developerworks/java/library/j-jtp02225/index.html "flawed-benchmark" - [2]: https://www.ibm.com/developerworks/library/j-jtp12214/ "dynamic-compilation" + [1]: https://web.archive.org/web/20210305174819/https://www.ibm.com/developerworks/java/library/j-jtp02225/index.html "flawed-benchmark" + [2]: https://web.archive.org/web/20210228055617/http://www.ibm.com/developerworks/library/j-jtp12214/ "dynamic-compilation" [3]: https://github.com/scala/scala/tree/2.12.x/test/benchmarks From 4c4453ecd2453b51936c39339448938246c79157 Mon Sep 17 00:00:00 2001 From: Marshall Schor Date: Sun, 18 Jul 2021 11:23:45 -0400 Subject: [PATCH 0161/1704] Update ca-extension-methods.md typo --- _overviews/scala3-book/ca-extension-methods.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/ca-extension-methods.md b/_overviews/scala3-book/ca-extension-methods.md index b860b4f928..b066aea99e 100644 --- a/_overviews/scala3-book/ca-extension-methods.md +++ b/_overviews/scala3-book/ca-extension-methods.md @@ -60,7 +60,7 @@ import lib.circumference aCircle.circumference ``` -The compiler also support you if the import is missing by showing a detailed compilation error message such as the following: +The compiler also supports you if the import is missing by showing a detailed compilation error message such as the following: ```text value circumference is not a member of Circle, but could be made available as an extension method. From 357c3b76e2658605c0110208a80b363f2ba8c5cd Mon Sep 17 00:00:00 2001 From: Alexander Filippov Date: Tue, 20 Jul 2021 11:54:27 +0300 Subject: [PATCH 0162/1704] Correct grammar mistake in named-arguments.md --- _ru/tour/named-arguments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_ru/tour/named-arguments.md b/_ru/tour/named-arguments.md index 6ab5eafb88..32b83664e4 100644 --- a/_ru/tour/named-arguments.md +++ b/_ru/tour/named-arguments.md @@ -25,7 +25,7 @@ printName("John", "Smith") // Prints "John Smith" printName(first = "John", last = "Smith") // Prints "John Smith" printName(last = "Smith", first = "John") // Prints "John Smith" ``` -Обратите внимание, что при указании имени параметра, порядок аргумента может быть изменен. Однако если какие-то аргументы именованного, а другие нет, то аргументы без имени должны стоять на первом месте и располагаться в том порядке, в котором описаны параметры метода. +Обратите внимание, что при указании имени параметра, порядок аргумента может быть изменен. Однако если какие-то аргументы именованные, а другие нет, то аргументы без имени должны стоять на первом месте и располагаться в том порядке, в котором описаны параметры метода. ```scala mdoc:fail printName(last = "Smith", "john") // ошибка: позиция после именованного аргумента From f926f0a30651c87e4e68c5adde9fd3e32435f7bc Mon Sep 17 00:00:00 2001 From: Alexander Filippov Date: Tue, 20 Jul 2021 12:13:48 +0300 Subject: [PATCH 0163/1704] Correct grammar mistakes in traits.md --- _ru/tour/traits.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_ru/tour/traits.md b/_ru/tour/traits.md index bbd1e05b41..3eec6fd35c 100644 --- a/_ru/tour/traits.md +++ b/_ru/tour/traits.md @@ -15,7 +15,7 @@ prerequisite-knowledge: expressions, classes, generics, objects, companion-objec --- -Трейты (Traits) используются чтоб обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров. +Трейты (Traits) используются, чтобы обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров. ## Объявление трейта Минимальное объявление трейта - это просто ключевое слово `trait` и его имя: @@ -35,7 +35,7 @@ trait Iterator[A] { При наследовании от трейта `Iterator[A]` требует указание типа `A` а также реализация методов `hasNext` и `next`. ## Использование трейтов -Чтоб использовать трейты, необходимо наследовать класс от него используя ключевое слово `extends`. Затем необходимо реализовать все абстрактные члены трейта, используя ключевое слово `override`: +Чтобы использовать трейты, необходимо наследовать класс от него, используя ключевое слово `extends`. Затем необходимо реализовать все абстрактные члены трейта, используя ключевое слово `override`: ```scala mdoc:nest trait Iterator[A] { def hasNext: Boolean @@ -62,7 +62,7 @@ iterator.next() // вернет 1 Этот класс `IntIterator` использует параметр `to` в качестве верхней границы. Он наследуется от `Iterator[Int]`, что означает, что метод `next` должен возвращать Int. ## Подтипы -Туда где требуется определенный тип трейта, мы можем передавать любой наследованный от требуемого трейта класс +Туда, где требуется определенный тип трейта, мы можем передавать любой наследованный от требуемого трейта класс ```scala mdoc import scala.collection.mutable.ArrayBuffer @@ -81,4 +81,4 @@ animals.append(dog) animals.append(cat) animals.foreach(pet => println(pet.name)) // выведет "Harry" и "Sally" ``` -У трейта `Pet` есть абстрактное поле `name`, которое реализовано в классах `Cat` and `Dog`. В последней строке мы вызываем `pet.name`, который должен быть реализован в любом подтипе унаследованным от трейта `Pet`. +У трейта `Pet` есть абстрактное поле `name`, которое реализовано в классах `Cat` and `Dog`. В последней строке мы вызываем `pet.name`, который должен быть реализован в любом подтипе, унаследованном от трейта `Pet`. From 96a5ac9dd61d53cd28b9402a44163bf51adbdba6 Mon Sep 17 00:00:00 2001 From: Alexander Filippov Date: Tue, 20 Jul 2021 14:18:27 +0300 Subject: [PATCH 0164/1704] Add missing dot --- _ru/tour/higher-order-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_ru/tour/higher-order-functions.md b/_ru/tour/higher-order-functions.md index 0b4416ed4b..36a8f0a2a7 100644 --- a/_ru/tour/higher-order-functions.md +++ b/_ru/tour/higher-order-functions.md @@ -13,7 +13,7 @@ previous-page: mixin-class-composition --- -Функции высшего порядка могут принимать другие функции в качестве параметров или возвращать функцию в качестве результата +Функции высшего порядка могут принимать другие функции в качестве параметров или возвращать функцию в качестве результата. Такое возможно поскольку функции являются объектами первого класса в Scala. На текущем этапе терминология может казаться немного запутанной, мы используем следующую фразу "функция высшего порядка" как для методов, так и для функций, которые могут принимать другие функции в качестве параметров, или возвращать функции в качестве результата. From 0c8b569588a334427373cc78e2604b6809c52448 Mon Sep 17 00:00:00 2001 From: Alexander Filippov Date: Tue, 20 Jul 2021 15:44:09 +0300 Subject: [PATCH 0165/1704] Correct mistakes in regular-expression-patterns.md --- _ru/tour/regular-expression-patterns.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_ru/tour/regular-expression-patterns.md b/_ru/tour/regular-expression-patterns.md index fdc775e756..e8c2ea8404 100644 --- a/_ru/tour/regular-expression-patterns.md +++ b/_ru/tour/regular-expression-patterns.md @@ -13,7 +13,7 @@ previous-page: singleton-objects --- -Регулярные выражения (Regular expression) - это специальный шаблон для поиска данных задаваемый в виде текстовой строки. Любая строка может быть преобразована в регулярное выражение методом `.r`. +Регулярные выражения (Regular expression) - это специальный шаблон для поиска данных, задаваемый в виде текстовой строки. Любая строка может быть преобразована в регулярное выражение методом `.r`. ```scala mdoc import scala.util.matching.Regex @@ -48,7 +48,7 @@ val input: String = for (patternMatch <- keyValPattern.findAllMatchIn(input)) println(s"key: ${patternMatch.group(1)} value: ${patternMatch.group(2)}") ``` -Здесь мы обработали сразу и ключи и значения строки. В каждой совпадении есть подгруппа совпадений. Вот как выглядит результат: +Здесь мы обработали сразу и ключи и значения строки. В каждом совпадении есть подгруппа совпадений. Вот как выглядит результат: ``` key: background-color value: #A03300 key: background-image value: url(img From 2b8d90ceb175d17bf98db978493cddeee571f546 Mon Sep 17 00:00:00 2001 From: Nicolas Ettlin Date: Wed, 21 Jul 2021 01:06:26 +0200 Subject: [PATCH 0166/1704] Fix a typo in a Java code example --- _overviews/scala3-book/scala-for-java-devs.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/_overviews/scala3-book/scala-for-java-devs.md b/_overviews/scala3-book/scala-for-java-devs.md index 125f77c06e..44c528670e 100644 --- a/_overviews/scala3-book/scala-for-java-devs.md +++ b/_overviews/scala3-book/scala-for-java-devs.md @@ -181,11 +181,7 @@ equivalent to the Scala code that follows it.
  }

  // zero-arg constructor -
  public Person( -
    String firstName, -
    String lastName, -
    int age -
  ) { +
  public Person() {
    this("", "", 0);
  }
From c337672e978dbc688e961c9236be7f2b355fea04 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 21 Jul 2021 15:52:16 +0200 Subject: [PATCH 0167/1704] Move scaladoc documentation from dotty.epfl.ch to a guide Content was taken from commit c8894a0168061ddb1369a426e9bde8d9972c893b --- _config.yml | 9 + _overviews/scala3-scaladoc/blog.md | 42 ++++ _overviews/scala3-scaladoc/docstrings.md | 198 ++++++++++++++++++ _overviews/scala3-scaladoc/index.md | 11 + _overviews/scala3-scaladoc/linking.md | 99 +++++++++ _overviews/scala3-scaladoc/settings.md | 138 ++++++++++++ _overviews/scala3-scaladoc/site-versioning.md | 39 ++++ _overviews/scala3-scaladoc/static-site.md | 158 ++++++++++++++ resources/images/scala3/scaladoc/logo.svg | 1 + resources/images/scala3/scaladoc/nightly.gif | Bin 0 -> 71759 bytes scala3/guides.md | 5 + 11 files changed, 700 insertions(+) create mode 100644 _overviews/scala3-scaladoc/blog.md create mode 100644 _overviews/scala3-scaladoc/docstrings.md create mode 100644 _overviews/scala3-scaladoc/index.md create mode 100644 _overviews/scala3-scaladoc/linking.md create mode 100644 _overviews/scala3-scaladoc/settings.md create mode 100644 _overviews/scala3-scaladoc/site-versioning.md create mode 100644 _overviews/scala3-scaladoc/static-site.md create mode 100644 resources/images/scala3/scaladoc/logo.svg create mode 100644 resources/images/scala3/scaladoc/nightly.gif diff --git a/_config.yml b/_config.yml index 64f78bc718..fa2723f7df 100644 --- a/_config.yml +++ b/_config.yml @@ -125,6 +125,15 @@ defaults: overview-name: "Macros in Scala 3" layout: multipage-overview permalink: "/scala3/guides/macros/:title.html" + - + scope: + path: "_overviews/scala3-scaladoc" + values: + scala3: true + partof: scala3-scaladoc + overview-name: "Scaladoc" + layout: multipage-overview + permalink: "/scala3/guides/scaladoc/:title.html" - scope: path: "_scala3-reference" diff --git a/_overviews/scala3-scaladoc/blog.md b/_overviews/scala3-scaladoc/blog.md new file mode 100644 index 0000000000..1e3c371c8e --- /dev/null +++ b/_overviews/scala3-scaladoc/blog.md @@ -0,0 +1,42 @@ +--- +layout: multipage-overview +title: Built-in blog +partof: scala3-scaladoc +num: 5 +previous-page: static-site +next-page: site-versioning +--- + +Scaladoc allows you to include a simple blog in your documentation. For now, it +provides only basic features. In the future, we plan to include more advanced +features like tagging or author pages. + +Blog is treated a little differently than regular static sites. This article will help you set up your own blog. + +## Proper directory setup + +All your blogposts must be put under `blog/_posts` directory. + + +``` +├── blog +│ ├── _posts +│ │ └── 2016-12-05-implicit-function-types.md +│ └── index.html +``` + +If you are using yaml [sidebar]({% link _overviews/scala3-scaladoc/static-site.md %}#sidebar) don't forget to place + +``` +sidebar: + - title: Blog +``` + +somewhere inside the `yaml` tree representing the sidebar sections. Scaladoc will attach under that section all of your blogposts. + +## Naming convention + +All the blogpost filenames should start with date in numeric format matching `YYYY-MM-DD`. +Example name is `2015-10-23-dotty-compiler-bootstraps.md`. + + diff --git a/_overviews/scala3-scaladoc/docstrings.md b/_overviews/scala3-scaladoc/docstrings.md new file mode 100644 index 0000000000..5efb8b5f38 --- /dev/null +++ b/_overviews/scala3-scaladoc/docstrings.md @@ -0,0 +1,198 @@ +--- +layout: multipage-overview +title: Docstrings - specific Tags and Features +partof: scala3-scaladoc +num: 2 +previous-page: index +next-page: linking +--- + +This chapter describes how to correctly write docstrings and how to use all the available features of scaladoc. +Since many things are the same as in the old scaladoc, some parts are reused from this [article](https://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) + + +Scaladoc extends Markdown with additional features, such as linking +to API definitions. This can be used from within static documentation and blog +posts to provide blend-in content. + + +## Where to put docstrings + +Scaladoc comments go before the items they pertain to in a special comment block that starts with a /** and ends with a */, like this: + +```scala +/** Start the comment here + * and use the left star followed by a + * white space on every line. + * + * Even on empty paragraph-break lines. + * + * Note that the * on each line is aligned + * with the second * in /** so that the + * left margin is on the same column on the + * first line and on subsequent ones. + * + * Close the comment with *\/ + * + * If you use Scaladoc tags (@param, @group, etc.), + * remember to put them at separate lines with nothing preceding. + * + * For example: + * + * Calculate the square of the given number + * + * @param d the Double to square + * @return the result of squaring d + */ + def square(d: Double): Double = d * d +``` + +In the example above, this Scaladoc comment is associated with the method square since it is right before it in the source code. + +Scaladoc comments can go before fields, methods, classes, traits, objects. +For now, scaladoc doesn't support straightforward solution to document packages. There is a dedicated github +[issue](https://github.com/lampepfl/dotty/issues/11284), where you can check the current status of the problem. + +For class primary constructors which in Scala coincide with the definition of the class itself, a @constructor tag is used to target a comment to be put on the primary constructor documentation rather than the class overview. + +## Tags + +Scaladoc uses `@` tags to provide specific detail fields in the comments. These include: + +### Class specific tags + +- `@constructor` placed in the class comment will describe the primary constructor. + +### Method specific tags + +- `@return` detail the return value from a method (one per method). + +### Method, Constructor and/or Class tags + +- `@throws` what exceptions (if any) the method or constructor may throw. +- `@param` detail a value parameter for a method or constructor, provide one per parameter to the method/constructor. +- `@tparam` detail a type parameter for a method, constructor or class. Provide one per type parameter. + +### Usage tags + +- `@see` reference other sources of information like external document links or related entities in the documentation. +- `@note` add a note for pre or post conditions, or any other notable restrictions or expectations. +- `@example` for providing example code or related example documentation. + + +### Member grouping tags + +These tags are well-suited to larger types or packages, with many members. They allow you to organize the Scaladoc page into distinct sections, with each one shown separately, in the order that you choose. + +These tags are not enabled by default! You must pass the -groups flag to Scaladoc in order to turn them on. Typically the sbt for this will look something like: + +```scala +Compile / doc / scalacOptions ++= Seq( + "-groups" +) +``` +Each section should have a single-word identifier that is used in all of these tags, shown as `group` below. By default, that identifier is shown as the title of that documentation section, but you can use @groupname to provide a longer title. + +Typically, you should put @groupprio (and optionally @groupname and @groupdesc) in the Scaladoc for the package/trait/class/object itself, describing what all the groups are, and their order. Then put @group in the Scaladoc for each member, saying which group it is in. + +Members that do not have a `@group` tag will be listed as “Ungrouped” in the resulting documentation. + +- `@group ` - mark the entity as a member of the `` group. +- `@groupname ` - provide an optional name for the group. `` is displayed as the group header before the group description. +- `@groupdesc ` - add optional descriptive text to display under the group name. Supports multiline formatted text. +- `@groupprio ` - control the order of the group on the page. Defaults to 0. Ungrouped elements have an implicit priority of 1000. Use a value between 0 and 999 to set a relative position to other groups. Low values will appear before high values. + +### Other tags + +- `@author` provide author information for the following entity +- `@version` the version of the system or API that this entity is a part of. +- `@since` like `@version` but defines the system or API that this entity was first defined in. +- `@deprecated` marks the entity as deprecated, providing both the replacement implementation that should be used and the version/date at which this entity was deprecated. +- `@syntax ` let you change the parser for docstring. The default syntax is markdown, however you can change it using this directive. Currently available syntaxes are `markdown` or `wiki`, e. g. `@syntax wiki` + +### Macros + +- `@define ` allows use of $name in other Scaladoc comments within the same source file which will be expanded to the contents of ``. + +If a comment is not provided for an entity at the current inheritance level, but is supplied for the overridden entity at a higher level in the inheritance hierarchy, the comment from the super-class will be used. + +Likewise if `@param`, `@tparam`, `@return` and other entity tags are omitted but available from a superclass, those comments will be used. + +### Explicit + +For explicit comment inheritance, use the @inheritdoc tag. + +### Markup + +Scaladoc provides two syntax parsers: `markdown` (default) or `wikidoc`. +It is still possible to embed HTML tags in Scaladoc (like with Javadoc), but not necessary most of the time as markup may be used instead. + +#### Markdown + +Markdown uses [commonmark flavour](https://spec.commonmark.org/current/) with two custom extensions: +- `wikidoc` links for referencing convenience +- `wikidoc` codeblocks with curly braces syntax + + +#### Wikidoc + +Wikidoc is syntax used for scala2 scaladoc. It is supported because of many existing source code, however it is **not** recommended to use it in new projects. +Wikisyntax can be toggled on with flag `-comment-syntax wiki` globally, or with `@syntax wiki` directive in docstring. + +Some of the standard markup available: + +``` +`monospace` +''italic text'' +'''bold text''' +__underline__ +^superscript^ +,,subscript,, +[[entity link]], e.g. [[scala.collection.Seq]] +[[https://external.link External Link]], e.g. [[https://scala-lang.org Scala Language Site]] +``` + +For more info about wiki links look at this [chapter](#linking-to-api) + +Other formatting notes + +- Paragraphs are started with one (or more) blank lines. `*` in the margin for the comment is valid (and should be included) but the line should be blank otherwise. +- Headings are defined with surrounding `=` characters, with more `=` denoting subheadings. E.g. `=Heading=`, `==Sub-Heading==`, etc. +- List blocks are a sequence of list items with the same style and level, with no interruptions from other block styles. Unordered lists can be bulleted using `-`, numbered lists can be denoted using `1.`, `i.`, `I.`, or `a.` for the various numbering styles. In both cases, you must have extra space in front, and more space makes a sub-level. + +The markup for list blocks looks like: + +``` +/** Here is an unordered list: + * + * - First item + * - Second item + * - Sub-item to the second + * - Another sub-item + * - Third item + * + * Here is an ordered list: + * + * 1. First numbered item + * 1. Second numbered item + * i. Sub-item to the second + * i. Another sub-item + * 1. Third item + */ +``` + +### General Notes for Writing Scaladoc Comments + +Concise is nice! Get to the point quickly, people have limited time to spend on your documentation, use it wisely. +Omit unnecessary words. Prefer returns X rather than this method returns X, and does X,Y & Z rather than this method does X, Y and Z. +DRY - don’t repeat yourself. Resist duplicating the method description in the @return tag and other forms of repetitive commenting. + +More details on writing Scaladoc + +Further information on the formatting and style recommendations can be found in Scala-lang scaladoc style guide. + +## Linking to API + +Scaladoc allows linking to API documentation with Wiki-style links. Linking to +`scala.collection.immutable.List` is as simple as +`[[scala.collection.immutable.List]]`. For more information on the exact syntax, see [doc comment documentation]({% link _overviews/scala3-scaladoc/linking.md %}#definition-links). diff --git a/_overviews/scala3-scaladoc/index.md b/_overviews/scala3-scaladoc/index.md new file mode 100644 index 0000000000..b158e9d89e --- /dev/null +++ b/_overviews/scala3-scaladoc/index.md @@ -0,0 +1,11 @@ +--- +layout: multipage-overview +title: Scaladoc +partof: scala3-scaladoc +num: 1 +next-page: docstrings +--- + +![scaladoc logo]({{ site.baseurl }}/resources/images/scala3/scaladoc/logo.svg) + +scaladoc is a tool to generate the API documentation of your Scala 3 projects. It provides similar features to `javadoc` as well as `jekyll` or `docusaurus`. diff --git a/_overviews/scala3-scaladoc/linking.md b/_overviews/scala3-scaladoc/linking.md new file mode 100644 index 0000000000..635c461abd --- /dev/null +++ b/_overviews/scala3-scaladoc/linking.md @@ -0,0 +1,99 @@ +--- +layout: multipage-overview +title: Linking documentation +partof: scala3-scaladoc +num: 3 +previous-page: docstrings +next-page: static-site +--- + +Scaladoc's main feature is creating API documentation from code comments. + +By default, the code comments are understood as Markdown, though we also support +Scaladoc's old [Wiki syntax](https://docs.scala-lang.org/style/scaladoc.html). + +## Syntax + +### Definition links + +Our definition link syntax is quite close to Scaladoc's syntax, though we have made some +quality-of-life improvements. + +#### Basic syntax + +A definition link looks as follows: `[[scala.collection.immutable.List]]`. + +Which is to say, a definition link is a sequence of identifiers separated by +`.`. The identifiers can be separated with `#` as well for Scaladoc compatibility. + +By default, an identifier `id` references the first (in source order) entity +named `id`. An identifier can end with `$`, which forces it to refer to a value +(an object, a value, a given); an identifier can also end with `!`, which forces +it to refer to a type (a class, a type alias, a type member). + +The links are resolved relative to the current location in source. That is, when +documenting a class, the links are relative to the entity enclosing the class (a +package, a class, an object); the same applies to documenting definitions. + +Special characters in links can be backslash-escaped, which makes them part of +identifiers instead. For example, `` [[scala.collection.immutable\.List]] `` +references the class named `` `immutable.List` `` in package `scala.collection`. + +#### New syntax + +We have extended Scaladoc definition links to make them a bit more pleasant to +write and read in source. The aim was also to bring the link and Scala syntax +closer together. The new features are: + +1. `package` can be used as a prefix to reference the enclosing package + Example: + ``` + package utils + class C { + def foo = "foo". + } + /** See also [[package.C]]. */ + class D { + def bar = "bar". + } + ``` + The `package` keyword helps make links to the enclosing package shorter + and a bit more resistant to name refactorings. +1. `this` can be used as a prefix to reference the enclosing classlike + Example: + ``` + class C { + def foo = "foo" + /** This is not [[this.foo]], this is bar. */ + def bar = "bar" + } + ``` + Using a Scala keyword here helps make the links more familiar, as well as + helps the links survive class name changes. +1. Backticks can be used to escape identifiers + Example: + ``` + def `([.abusive.])` = ??? + /** TODO: Figure out what [[`([.abusive.])`]] is. */ + def foo = `([.abusive.])` + ``` + Previously (versions 2.x), Scaladoc required backslash-escaping to reference such identifiers. Now (3.x versions), + Scaladoc allows using the familiar Scala backtick quotation. + +#### Why keep the Wiki syntax for links? + +There are a few reasons why we've kept the Wiki syntax for documentation links +instead of reusing the Markdown syntax. Those are: + +1. Nameless links in Markdown are ugly: `[](definition)` vs `[[definition]]` + By far, most links in documentation are nameless. It should be obvious how to + write them. +2. Local member lookup collides with URL fragments: `[](#field)` vs `[[#field]]` +3. Overload resolution collides with MD syntax: `[](meth(Int))` vs `[[meth(Int)]]` +4. Now that we have a parser for the link syntax, we can allow spaces inside (in + Scaladoc one needed to slash-escape those), but that doesn't get recognized + as a link in Markdown: `[](meth(Int, Float))` vs `[[meth(Int, Float)]]` + +None of these make it completely impossible to use the standard Markdown link +syntax, but they make it much more awkward and ugly than it needs to be. On top +of that, Markdown link syntax doesn't even save any characters. diff --git a/_overviews/scala3-scaladoc/settings.md b/_overviews/scala3-scaladoc/settings.md new file mode 100644 index 0000000000..88272e80ab --- /dev/null +++ b/_overviews/scala3-scaladoc/settings.md @@ -0,0 +1,138 @@ +--- +layout: multipage-overview +title: Settings +partof: scala3-scaladoc +num: 7 +previous-page: site-versioning +--- + +This chapter lists the configuration options that can be used when calling scaladoc. Some of the information shown here can be found by calling scaladoc with the `-help` flag. + +## Parity with scaladoc for Scala 2 + +Scaladoc has been rewritten from scratch and some of the features turned out to be useless in the new context. +If you want to know what is current state of compatibility with scaladoc old flags, you can visit this issue for tracking [progress](https://github.com/lampepfl/dotty/issues/11907). + +## Providing settings + +Supply scaladoc settings as command-line arguments, e.g., `scaladoc -d output -project my-project target/scala-3.0.0-RC2/classes`. If called from sbt, +update the value of `Compile / doc / scalacOptions`, e. g. `Compile / doc / scalacOptions ++= Seq("-d", "output", "-project", "my-project")` + +## Overview of all available settings + +##### -project +The name of the project. To provide compatibility with Scala2 aliases with `-doc-title` + +##### -project-version +The current version of your project that appears in a top left corner. To provide compatibility with Scala2 aliases with `-doc-version` + +##### -project-logo +The logo of your project that appears in a top left corner. To provide compatibility with Scala2 aliases with `-doc-logo` + +##### -project-footer +The string message that appears in a footer section. To provide compatibility with Scala2 aliases with `-doc-footer` + +##### -comment-syntax +The styling language used for parsing comments. +Currently we support two syntaxes: `markdown` or `wiki` +If setting is not present, scaladoc defaults `markdown` + +##### -revision +Revision (branch or ref) used to build project project. Useful with sourcelinks to prevent them from pointing always to the newest master that is subject to changes. + +##### -source-links +Source links provide a mapping between file in documentation and code repository. + +Example source links is: +`-source-links:docs=github://lampepfl/dotty/master#docs` + +Accepted formats: + +\=\ +\ + +where \ is one of following: + - `github:///[/revision][#subpath]` + will match https://github.com/$organization/$repository/\[blob|edit]/$revision\[/$subpath]/$filePath\[$lineNumber] + when revision is not provided then requires revision to be specified as argument for scaladoc + - `gitlab:///` + will match https://gitlab.com/$organization/$repository/-/\[blob|edit]/$revision\[/$subpath]/$filePath\[$lineNumber] + when revision is not provided then requires revision to be specified as argument for scaladoc + - \ + +\ is a format for `doc-source-url` parameter from old scaladoc. +NOTE: We only supports `€{FILE_PATH_EXT}`, `€{TPL_NAME}`, `€{FILE_EXT}`, + €{FILE_PATH}, and €{FILE_LINE} patterns. + + +Template can defined only by subset of sources defined by path prefix represented by ``. +In such case paths used in templates will be relativized against `` + + + +##### -external-mappings + +Mapping between regexes matching classpath entries and external documentation. + +Example external mapping is: +`-external-mappings:.*scala.*::scaladoc3::https://scala-lang.org/api/3.x/,.*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/` + +A mapping is of the form '\::\[scaladoc3|scaladoc|javadoc]::\'. You can supply several mappings, separated by commas, as shown in the example. + +##### -social-links + +Links to social sites. For example: + +`-social-links:github::https://github.com/lampepfl/dotty,gitter::https://gitter.im/scala/scala,twitter::https://twitter.com/scala_lang` + +Valid values are of the form: '\[github|twitter|gitter|discord]::link'. Scaladoc also supports 'custom::link::white_icon_name::black_icon_name'. In this case icons must be present in 'images/' directory. + +##### -skip-by-id + +Identifiers of packages or top-level classes to skip when generating documentation. + +##### -skip-by-regex + +Regexes that match fully qualified names of packages or top-level classes to skip when generating documentation. + +##### -doc-root-content + +The file from which the root package documentation should be imported. + +##### -author + +Adding authors in docstring with `@author Name Surname` by default won't be included in generated html documentation. +If you would like to label classes with authors explicitly, run scaladoc with this flag. + +##### -groups + +Group similar functions together (based on the @group annotation) + +##### -private + +Show all types and members. Unless specified, show only public and protected types and members. + +##### -doc-canonical-base-url + +A base URL to use as prefix and add `canonical` URLs to all pages. The canonical URL may be used by search engines to choose the URL that you want people to see in search results. If unset no canonical URLs are generated. + +##### -siteroot + +A directory containing static files from which to generate documentation. Default directory is `./docs` + +##### -versions-dictionary-url + +A URL pointing to a JSON document containing a dictionary: `version label -> documentation location`. +The JSON file has single property `versions` that holds the dictionary associating the labels of specific versions of the documentation to the URLs pointing to their index.html +Useful for libraries that maintain different versions of their documentation. + +Example JSON file: +``` +{ + "versions": { + "3.0.x": "https://dotty.epfl.ch/3.0.x/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` + diff --git a/_overviews/scala3-scaladoc/site-versioning.md b/_overviews/scala3-scaladoc/site-versioning.md new file mode 100644 index 0000000000..e48907d11e --- /dev/null +++ b/_overviews/scala3-scaladoc/site-versioning.md @@ -0,0 +1,39 @@ +--- +layout: multipage-overview +title: Site versioning +partof: scala3-scaladoc +num: 6 +previous-page: blog +next-page: settings +--- + +Scaladoc provides a convenient way to switch between different versions of the documentation. The feature is useful if we want to expose older docs for users that didn't migrate to the new version of our library. + +### How to setup it + +The feature was designed for easy scalability with no need to regenerate all scaladocs after adding a new version. To do so a new setting is introduced: `-versions-dictionary-url`. Its argument must be a URL to a JSON document holding information about the locations of specific versions. The JSON file has single property `versions` that holds the dictionary associating the labels of specific versions of the documentation to the URLs pointing to their index.html + +Example JSON file: +``` +{ + "versions": { + "3.0.x": "https://dotty.epfl.ch/3.0.x/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` + +This enforce us to provide the setting while generating docs for each of the versions, however it gives us more flexibility later. If you want to add a version of the API docs next to the previous 5 versions that you have already published, then you only need to upload the new docs to a web server and add a new entry to the JSON file. All versions of the site will now become aware of the new site version. + +The important thing to note is that there is only one JSON file to avoid redundancy and each scaladoc must set up its URL location beforehand, for example, in sbt: + +``` +doc / scalacOptions ++= Seq("-versions-dictionary-url", "https://dotty.epfl.ch/versions.json") +``` + + +### How does it look from user perspective + +Providing a JSON file via `-versions-dictionary-url` enables scaladoc to link between versions. It is also convenient to be able to change the revision label in the drop-down menu. Everything will change automatically. + +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/nightly.gif) diff --git a/_overviews/scala3-scaladoc/static-site.md b/_overviews/scala3-scaladoc/static-site.md new file mode 100644 index 0000000000..36a3bc11d2 --- /dev/null +++ b/_overviews/scala3-scaladoc/static-site.md @@ -0,0 +1,158 @@ +--- +layout: multipage-overview +title: Static documentation +partof: scala3-scaladoc +num: 4 +previous-page: linking +next-page: blog +--- + +Scaladoc is able to generate static sites, known from [Jekyll](http://jekyllrb.com/) or [Docusaurus](https://docusaurus.io/). +Having a combined tool allows to provide interaction between static documentation and API, thus allowing the two to blend naturally. + +Creating a site is just as simple as in Jekyll. The site root contains the +layout of the site and all files placed there will be either considered static, +or processed for template expansion. + +The files that are considered for template expansion must end in `*.{html,md}` +and will from here on be referred to as "template files" or "templates". + +A simple "hello world" site could look something like this: + +``` +├── docs +│ └── getting-started.md +└── index.html +``` + +This will give you a site with the following files in generated documentation: + +``` +index.html +docs/getting-started.html +``` + +Scaladoc can transform both files and directories (to organize your documentation into tree-like structure). By default directories has title based on file name and has empty content. There is an option to include `index.html` or `index.md` (not both) to provide both content and properties like title (see [Properties](#properties)). + +## Properties + +Scaladoc uses the [Liquid](https://shopify.github.io/liquid/) templating engine +and provides a number of custom filters and tags specific to Scala +documentation. + +In Scaladoc, all templates can contain YAML front-matter. The front-matter +is parsed and put into the `page` variable available in templates via Liquid. + +Scaladoc uses some predefined properties to controls some aspect of page. + +Predefined properties: + + - **title** provide page title that will be used in navigation and html metadata. + - **extraCss** additional `.css` files that will be included in this page. Paths should be relative to documentation root. **This setting is not exported to template engine.** + - **extraJs** additional `.js` files that will be included in this page. Paths should be relative to documentation root. **This setting is not exported to template engine.** + - **hasFrame** when set to `false` page will not include default layout (navigation, breadcrumbs etc.) but only token html wrapper to provide metadata and resources (js and css files). **This setting is not exported to template engine.** +- **layout** - predefined layout to use, see below. **This setting is not exported to template engine.** + + +## Using existing Templates and Layouts + +To perform template expansion, Dottydoc looks at the `layout` field in the front-matter. +Here's a simple example of the templating system in action, `index.html`: + +```html +--- +layout: main +--- + +

Hello world!

+``` + +With a simple main template like this: + +{% raw %} +```html + + + Hello, world! + + + {{ content }} + + +``` + +Would result in `{{ content }}` being replaced by `

Hello world!

` from +the `index.html` file. +{% endraw %} + +Layouts must be placed in a `_layouts` directory in the site root: + +``` +├── _layouts +│ └── main.html +├── docs +│ └── getting-started.md +└── index.html +``` + +## Sidebar + +Scaladoc by default uses layout of files in `docs` directory to create table of content. There is also ability to override it by providing a `sidebar.yml` file in the site root: + +```yaml +sidebar: + - title: Blog + - title: Docs + url: docs/index.html + - title: Usage + subsection: + - title: Dottydoc + url: docs/usage/dottydoc.html + - title: sbt-projects + url: docs/usage/sbt-projects.html +``` + +The `sidebar` key is mandatory, as well as `title` for each element. The +default table of contents allows you to have subsections - albeit the current +depth limit is 2 however it accepts both files and directories and latter can be used to provide deeper structures. + +The items must provide either `subsection` or `url` but not both at once! +The only exception is `Blog` which is only a `title` and behaves differently. +You can read more about blog [here]({% link _overviews/scala3-scaladoc/blog.md %}). + +``` +├── blog +│ ├── _posts +│ │ └── 2016-12-05-implicit-function-types.md +│ └── index.html +├── index.html +└── sidebar.yml +``` + +## Static resources + +You can attach static resources (pdf, images) to your documentation by using two dedicated directories: +`resources` and `images`. When you upload your assests under any of these directories you can reference them in markdown +as if they were relatively at the same level. + +For example, consider the following situation: + +``` +├── blog +│ ├── _posts +│ │ └── 2016-12-05-implicit-function-types.md +│ └── index.html +├── index.html +├── resources +│ └── my_file.pdf +├── images +│ └── my_image.png +└── sidebar.yml + +``` + +You can refer to the assets from within any of the files using markdown links: + +``` +This is my blogpost. Here is the image ![](my_image.png) and here is my [pdf](my_file.pdf) +``` diff --git a/resources/images/scala3/scaladoc/logo.svg b/resources/images/scala3/scaladoc/logo.svg new file mode 100644 index 0000000000..1774519639 --- /dev/null +++ b/resources/images/scala3/scaladoc/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/scala3/scaladoc/nightly.gif b/resources/images/scala3/scaladoc/nightly.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6e764a032d56271c74ba93b183501dd51724275 GIT binary patch literal 71759 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 DYJ~BT literal 0 HcmV?d00001 diff --git a/scala3/guides.md b/scala3/guides.md index 45587d280f..028858ab27 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -18,6 +18,11 @@ guides: icon: birthday-cake url: "/scala3/guides/tasty-overview.html" description: "An overview over the TASTy format aimed at end-users of the Scala language." + - title: Scaladoc + by: Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak + icon: book + url: "/scala3/guides/scaladoc" + description: "Scala’s API documentation generation tool." ---

From 37abc5486391a9259a1207d6614168c9c80bd1c1 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Fri, 23 Jul 2021 10:50:10 +0200 Subject: [PATCH 0168/1704] Change style of h4 and h5 content --- _sass/layout/type-md.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_sass/layout/type-md.scss b/_sass/layout/type-md.scss index ccaed1bb9e..0696bee09f 100755 --- a/_sass/layout/type-md.scss +++ b/_sass/layout/type-md.scss @@ -45,8 +45,7 @@ h5 { font-size: 1.0rem; font-family: $base-font-family; - text-transform: uppercase; - font-weight: $font-regular; + font-weight: $font-bold; } } From 445d23fcf45a7c64209e33d380dec6531b552033 Mon Sep 17 00:00:00 2001 From: KAWACHI Takashi Date: Sat, 24 Jul 2021 11:40:21 +0900 Subject: [PATCH 0169/1704] add transparent modifier to defaultValue It failes to compile without transparent. --- _scala3-reference/metaprogramming/compiletime-ops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/metaprogramming/compiletime-ops.md b/_scala3-reference/metaprogramming/compiletime-ops.md index a047b27429..248f7d71bf 100644 --- a/_scala3-reference/metaprogramming/compiletime-ops.md +++ b/_scala3-reference/metaprogramming/compiletime-ops.md @@ -54,7 +54,7 @@ Using `erasedValue`, we can then define `defaultValue` as follows: ```scala import scala.compiletime.erasedValue -inline def defaultValue[T] = +transparent inline def defaultValue[T] = inline erasedValue[T] match case _: Byte => Some(0: Byte) case _: Char => Some(0: Char) From 2b2450225fbf400d52d5fa1509e333398c7b0898 Mon Sep 17 00:00:00 2001 From: KAWACHI Takashi Date: Sat, 24 Jul 2021 15:42:45 +0900 Subject: [PATCH 0170/1704] Fix compile --- _scala3-reference/metaprogramming/compiletime-ops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/metaprogramming/compiletime-ops.md b/_scala3-reference/metaprogramming/compiletime-ops.md index a047b27429..452954603c 100644 --- a/_scala3-reference/metaprogramming/compiletime-ops.md +++ b/_scala3-reference/metaprogramming/compiletime-ops.md @@ -215,7 +215,7 @@ would use it as follows: import scala.compiletime.summonFrom inline def setFor[T]: Set[T] = summonFrom { - case ord: Ordering[T] => new TreeSet[T](using ord) + case ord: Ordering[T] => new TreeSet[T]()(using ord) case _ => new HashSet[T] } ``` From f94b74fc50809516a55635102b90b13ea1d8b57e Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Tue, 27 Jul 2021 14:44:02 +0200 Subject: [PATCH 0171/1704] Update MOOCs links --- learn.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/learn.md b/learn.md index 797f193e3e..e692e44287 100644 --- a/learn.md +++ b/learn.md @@ -89,9 +89,9 @@ the (legacy) Scala 2 version of our courses here: [Scala Specialization]: https://www.coursera.org/specializations/scala [Effective Programming in Scala]: https://www.coursera.org/learn/effective-scala -[Functional Programming Principles in Scala]: https://www.coursera.org/learn/progfun1 -[Functional Program Design in Scala]: https://www.coursera.org/learn/progfun2 -[Parallel programming]: https://www.coursera.org/learn/parprog1 +[Functional Programming Principles in Scala]: https://www.coursera.org/learn/scala-functional-programming +[Functional Program Design in Scala]: https://www.coursera.org/learn/scala-functional-program-design +[Parallel programming]: https://www.coursera.org/learn/scala-parallel-programming [Big Data Analysis with Scala and Spark]: https://www.coursera.org/learn/scala-spark-big-data [Functional Programming in Scala Capstone]: https://www.coursera.org/learn/scala-capstone [Programming Reactive Systems]: https://www.coursera.org/learn/scala-akka-reactive From ffb33b17cbbc6ff3e38ac04d8e6c092ad34c9811 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 27 Jul 2021 14:18:30 -0700 Subject: [PATCH 0172/1704] style guide: discourage infix (#2140) --- _style/declarations.md | 11 ++++++----- _style/method-invocation.md | 35 ++++++++++++++--------------------- _style/types.md | 2 +- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/_style/declarations.md b/_style/declarations.md index 85bcd995b4..06fbfadcb7 100644 --- a/_style/declarations.md +++ b/_style/declarations.md @@ -13,7 +13,7 @@ next-page: control-structures ## Classes -Class/Object/Trait constructors should be declared all on one line, +Class, object, and trait constructors should be declared all on one line, unless the line becomes "too long" (about 100 characters). In that case, put each constructor argument on its own line with [trailing commas](https://docs.scala-lang.org/sips/trailing-commas.html#motivation): @@ -102,7 +102,7 @@ Local methods or private methods may omit their return type: #### Procedure Syntax -Avoid the procedure syntax, as it tends to be confusing for very little gain in brevity. +Avoid the (now deprecated) procedure syntax, as it tends to be confusing for very little gain in brevity. // don't do this def printBar(bar: Baz) { @@ -160,7 +160,7 @@ or is of a non-functional nature (some mutable state, local or otherwise), the body must be enclosed in braces: def sum(ls: List[String]): Int = { - val ints = ls map (_.toInt) + val ints = ls.map(_.toInt) ints.foldLeft(0)(_ + _) } @@ -197,7 +197,8 @@ There are three main reasons you should do this: Multiple parameter lists allow you to create your own "control structures": - def unless(exp: Boolean)(code: => Unit): Unit = if (!exp) code + def unless(exp: Boolean)(code: => Unit): Unit = + if (!exp) code unless(x < 5) { println("x was not less than five") } @@ -223,7 +224,7 @@ There are three main reasons you should do this: List("").foldLeft(0, (b: Int, a: String) => b + a.length) List("").foldLeft[Int](0, _ + _.length) -For complex DSLs, or with type-names that are long, it can be difficult +For complex DSLs, or with type names that are long, it can be difficult to fit the entire signature on one line. For those cases there are several different styles in use: diff --git a/_style/method-invocation.md b/_style/method-invocation.md index 861d07dba6..eb1e548785 100644 --- a/_style/method-invocation.md +++ b/_style/method-invocation.md @@ -51,7 +51,7 @@ acceptable to omit parentheses when calling `queue.size`, but not when calling `println()`. This convention mirrors the method declaration convention given above. -Religiously observing this convention will *dramatically* improve code +Observing this convention improves code readability and will make it much easier to understand at a glance the most basic operation of any given method. Resist the urge to omit parentheses simply to save two characters! @@ -92,35 +92,28 @@ gray area is short, operator-like methods like `max`, especially if commutative: // fairly common a max b -Symbolic methods which take more than one parameter (they do exist!) -may still be invoked using infix notation, delimited by spaces: +Symbolic methods which take more than one parameter are discouraged. +When they exist, they may still be invoked using infix notation, delimited by spaces: foo ** (bar, baz) Such methods are fairly rare, however, and should normally be avoided during API -design. For example, the use of the `/:` and `:\` methods should be avoided in +design. For example, the use of the (now deprecated) `/:` and `:\` methods should be avoided in preference to their better-known names, `foldLeft` and `foldRight`. ### Higher-Order Functions -As noted, methods which take functions as parameters (such as `map` or -`foreach`) should be invoked using infix notation. It is also *possible* to -invoke such methods in the following way: +Invoking higher-order functions may use parens or braces, but in +either case, use dot notation and omit any space after the method name: - // wrong! - names.map { _.toUpperCase } - -This style is *not* the accepted standard! The reason to avoid this style is for -situations where more than one invocation must be chained together: + names.map(_.toUpperCase) - // wrong! - names.map { _.toUpperCase }.filter { _.length > 5 } +These are not recommended: - // right! - names map { _.toUpperCase } filter { _.length > 5 } + // wrong! missing dot + names map (_.toUpperCase) + // wrong! extra space + names.map (_.toUpperCase) -Both of these work, but the former can easily lead to confusion. The -sub-expression `{ _.toUpperCase }.filter` when taken in isolation looks like we -are invoking the `filter` method on a function value. However, we are actually -invoking `filter` on the result of the `map` method, which takes the function -value as a parameter. +Experience has shown that these styles make code harder to read, +especially when multiple such method calls are chained. diff --git a/_style/types.md b/_style/types.md index 87b9a1eb3d..67df05af71 100644 --- a/_style/types.md +++ b/_style/types.md @@ -38,7 +38,7 @@ Function values support a special case of type inference which is worth calling out on its own: val ls: List[String] = ... - ls map (str => str.toInt) + ls.map(str => str.toInt) In cases where Scala already knows the type of the function value we are declaring, there is no need to annotate the parameters (in this case, From d415896075b35736bbc3e8af83a0495840d931ea Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Fri, 16 Jul 2021 10:39:09 +0200 Subject: [PATCH 0173/1704] Inkuire docs --- _overviews/scala3-scaladoc/search-engine.md | 86 ++++++++++++++++++ _overviews/scala3-scaladoc/settings.md | 4 +- _overviews/scala3-scaladoc/site-versioning.md | 2 +- .../scaladoc/inkuire-1.0.0-M2_js_flatMap.gif | Bin 0 -> 352175 bytes resources/images/scala3/scaladoc/inkuire.gif | Bin 994604 -> 0 bytes scala3/guides.md | 2 +- scala3/scaladoc.md | 22 ++++- 7 files changed, 107 insertions(+), 9 deletions(-) create mode 100644 _overviews/scala3-scaladoc/search-engine.md create mode 100644 resources/images/scala3/scaladoc/inkuire-1.0.0-M2_js_flatMap.gif delete mode 100644 resources/images/scala3/scaladoc/inkuire.gif diff --git a/_overviews/scala3-scaladoc/search-engine.md b/_overviews/scala3-scaladoc/search-engine.md new file mode 100644 index 0000000000..06d0d13eec --- /dev/null +++ b/_overviews/scala3-scaladoc/search-engine.md @@ -0,0 +1,86 @@ +--- +layout: multipage-overview +title: Type-based search +partof: scala3-scaladoc +num: 7 +previous-page: site-versioning +next-page: settings +--- + +Searching for functions by their symbolic names can be time-consuming. +That is why the new scaladoc allows searching for methods and fields by their types. + + +Consider the following extension method definition: +``` +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, type the signature of the member you are looking for in the scaladoc searchbar. This is how it works: + +![]({{ site.baseurl }}/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). + +## Examples of queries + +Some examples of queries with intended results: +- `List[Int] => (Int => Long) => List[Long]` -> `map` +- `Seq[A] => (A => B) => Seq[B]` -> `map` +- `(A, B) => A` -> `_1` +- `Set[Long] => Long => Boolean` -> `contains` +- `Int => Long => Int` -> `const` +- `String => Int => Char` -> `apply` +- `(Int & Float) => (String | Double)` -> `toDouble`, `toString` +- `F[A] => Int` -> `length` + +## Query syntax + +In order for a scaladoc searchbar query to be searched using Inkuire instead of the default search engine, the query has to contain the `=>` character sequence. + +Accepted input is similar to a curried function signature in Scala 3. With some differences: +- AndTypes, OrTypes and Functions have to be enclosed in parentheses e.g. `(Int & Any) => String` +- fields and parameterless methods can be found by preceding their type with `=>`, e.g., `=> Int` +- A wildcard `_` can be used to indicate that we want to match any type in a given place e.g. `Long => Double => _` +- Types in the form of single letter e.g. `A` or a letter with a digit `X1` are automatically assumed to be type variables +- Other type variables can be declared just like in polymorphic functions e.g. `[AVariable, AlsoAVariable] => AVariable => AlsoAVariable => AVariable` + +### Working with type aliases and method receivers + +When it comes to how the code is mapped to InkuireDb entries, there are some transformations to make the engine more opinionated (though open to suggestions and changes). Firstly, the receiver (non-module owner) of a function can be treated as a first argument. Automatic currying is also applied, so that the results don't depend on argument lists. When finding matches, `val`s and `def`s are not distinguished. + +So the following declarations should be found by query `Num => Int => Int => Int`: +``` +class Num(): + def a(i: Int, j: Int): Int + def b(i: Int)(j: Int): Int + def c(i: Int): (Int => Int) + val d: Int => Int => Int + val e: Int => Int => Int + val f: (Int, Int) => Int +end Num + +def g(i: Num, j: Int, k: Int): Int +extension (i: Num) def h(j: Int, k: Int): Int +def i(i: Num, j: Int)(k: Int): Int +extension (i: Num) def j(j: Int)(k: Int): Int +... +``` + +When it comes to type aliases, they are desugared on both the declaration and the query signature. This means that for declarations: +``` +type Name = String + +def fromName(name: Name): String +def fromString(str: String): Name +``` +both methods, `fromName` and `fromString`, should be found for queries `Name => Name`, `String => String`, `Name => String` and `String => Name`. + +## How it works + +Inkuire works as a JavaScript worker in the browser thanks to the power of [ScalaJS](https://www.scala-js.org/). + +To enable Inkuire when running scaladoc, add the flag `-Ygenerate-inkuire`. By adding this flag two files are generated: +- `inkuire-db.json` - this is the file containing all the searchable declarations from the currently documented project in a format readable to the Inkuire search engine. +- `inkuire-config.json` - this file contains the locations of the database files that should be searchable from the documentation of the current project. By default, it will be generated with the location of the local db file as well as the default implied locations of database files in [External mappings](/scala3/guides/scaladoc/settings.html#-external-mappings). diff --git a/_overviews/scala3-scaladoc/settings.md b/_overviews/scala3-scaladoc/settings.md index 88272e80ab..03fa538159 100644 --- a/_overviews/scala3-scaladoc/settings.md +++ b/_overviews/scala3-scaladoc/settings.md @@ -2,8 +2,8 @@ layout: multipage-overview title: Settings partof: scala3-scaladoc -num: 7 -previous-page: site-versioning +num: 8 +previous-page: search-engine --- This chapter lists the configuration options that can be used when calling scaladoc. Some of the information shown here can be found by calling scaladoc with the `-help` flag. diff --git a/_overviews/scala3-scaladoc/site-versioning.md b/_overviews/scala3-scaladoc/site-versioning.md index e48907d11e..d15fc49ab3 100644 --- a/_overviews/scala3-scaladoc/site-versioning.md +++ b/_overviews/scala3-scaladoc/site-versioning.md @@ -4,7 +4,7 @@ title: Site versioning partof: scala3-scaladoc num: 6 previous-page: blog -next-page: settings +next-page: search-engine --- Scaladoc provides a convenient way to switch between different versions of the documentation. The feature is useful if we want to expose older docs for users that didn't migrate to the new version of our library. diff --git a/resources/images/scala3/scaladoc/inkuire-1.0.0-M2_js_flatMap.gif b/resources/images/scala3/scaladoc/inkuire-1.0.0-M2_js_flatMap.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cc25b5683f757431e308a80fe3851f94034bf0c GIT binary patch literal 352175 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 z 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 b{x|~(2L11||DP}Y{|EkG>-_&*67By3sh%F; literal 0 HcmV?d00001 diff --git a/resources/images/scala3/scaladoc/inkuire.gif b/resources/images/scala3/scaladoc/inkuire.gif deleted file mode 100644 index 3cd999b375164aafb543d9ce37e1f265865eb01f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994604 zcmeF2XIB$U*S13vl1NK}RB53X0YmQ)IwE3FR8)HJ9R(B!1VV>^(xhAZi(2mq1OkQG<7jAT=QV>6>$T#c}fqaz9Psei4j9q4@au`2>ae-5do1!UT-E*CoPrAB#x;gc_l_C22 z`UX+C1_}8FWkWY_8XDck8a;3|@(eSo8pWm*V+)#1Oib?o!_wz|K-B%38MCy~M~@yq zu8e+?U1V-gsdB{wt-7nWHR z9)XX*N8uy?1tFS;DY~IKCMG5}J|(WUD?aaS{MXgQqW8(k#N@(u;>&d6=Yf>e)YO+R zQ`0h2-?Y6ftw~EuOV7y6C~J9L(UYB>llveg?;mab|K-2=ue9pFp)dJWjrrXZ1y*ry z#x@J(s)Rfe8|+jnq5R{-w90qocE{x2wCa zXXsmR@7La`x!$?8-sQc4fx)5Sk)f&CvC;9d#f|ZuzY~+wlWRYxrl$Wf^KD^fc7Aq| zJXcV?xV--TJDI$(ySlvmwIrbVNWtjJC5__ zhoY}9MedcGfBjJ0pMkdP%eh%wGMKICw>AH@wsbh3t4OJGOo?JSp1*eHl zmYo1;S#rEw@0UER-RjRC-61g~@!!fbYLagMlquu3IM7tPKAf)|&n+SSe)-*l0tU;$ z+3I`m%#vLf;-q||9n<}`7YG0FZhj}>X?cuW8V^=_l{^>XO*g+!9_MqSPC+L#kI`AO{je1O@jPZ*-bt9Q=8PWM8)-DV*)<$6+!T6u_gkh$)7RkUpJIb5wE4w zTins!D5&nHC{GpEO}TDYHa?hkj2;Z1Hjc}Lyt7q_L^g7nXwfqzDDVdP(Wz26U((j? zW8NWE`y0i!>*ozKw;RZW>wAp>y0Z^$c!&6Rn#E>+zX^vjbXMriHZ~7Q{Jbc zgI<5O;s{M-+kUWOzAh`FghB? z>PyHG(LZxubU!b5E+~8Q;?#+r!|xA*tVYU()tY9cxK{y%sQkJpaMi<8&c# z{kD0hmm#IW@8!lcKE?kCoCXh5yY-vznS&qyzQ!kX|7}Tpl{Wo6zf&D;Ia{pe={jLc z;(VhhgZp8p;+^@SoHg+ix0kyYg~Q+d>Ze5$>}f*=S{8`zm3oW$jj<7f0y(3#Y0vPOpJpfx*H=LARAzXel>Z-u ztLO_u@ILrp|AhSDL$r^v7-?B(li8!pxqq&7O@A<4;V;xwMZq!T>CAD)L zE9%QoSeAf2jVOLyMSz(!5oTY3=bj6sK9o0OK|DT)GZV--ejQO2WPiu_Z?%5)j!$wx zfwm7DzF=h9N#56cB}93ESEgBtI|h?~i;IdH+~=#4V5AvqIT{hD2&5596^xHDD&k`m zY`+;*7HoVDrM@{XPbq3mh`E&A1|@}3~#^nd*>(k1AyzW3<$xjr0At1m!aw0l*t=h=Ommt~!gRdcA4`v5>=WDB8kgtyekes{w0&M*%>#Nsu`a zqBo`q&>3NJxZxa2eS%K4(P8HIMUnU~e1@xnKgzV`uxZ?9B3UH{a88dzQ^DEl!F;O# zZ!VZt2RYW(xr5`U$d8ZGdV)rnyg^hd;5%ZzH8hfK|nSFu{2wD7$H(t(TlL#sWI!N;tFm~`nn205r((-2) zmT0dz&_z49v0%jY(Vc*ya1jh$^|T%WFBKILD4VVW=#nd+q*JbA<)y)h=<&QnCdt?H z{g>scr{~5fY5zdrtuskMkL6LKe>;?I6AJ6Y%}h0im&~DXobGcIrLO$IUHjMwZQo@k zzX(7h&d1luXyxOopY2G<-EFX$kvq7HyYA)Hvss$=32|F+x%NW+MxR-SoD(1VU<0uy zDO6FWBsMM=h&>nu_VcwzRxpX9Wb*A3FP6W+gFt%q;cFn3DT)jWSxY~!4WIA3#7U`s z>za$53o~uIQdiW&ZAOF7bzS8&9E_o^e~sjP1>~19)=T)WAO+H>$*11n!3`&6pm+7J-4@#l@6sEH+OD`+0gmc51UyuxQ=~do5>)J z30H^EF>`;$J<#dRM+Udp(s;1ofX#oB{Vv|H3;f{+hc+a-kt$n(P46*xgBaWz`T64m zVPJD&OzfUrjc1;)(+LJ39I3_4o}ve8-KTTe;bjk{JdL=KS`Yz!7C0kj(Dhyd=ajT> z$Kin09K0759{acB3i=GHp^7DxK33*mM@Yry8a}2$YkxC8>y}4^I~nUdxc1e%L+Pw- z%Sm;vfo4(v+n2nQG4)HHuQ(qKZcUuJum!aP8Qiyknb-G@;7*SDJL{Mzq zYCU{n7^3>fE5_YjfZ#crsB_W5riJLevi6G>6ZZ&pZ=*-P9Ys`WzM4mO1)mi~nodvw z%NCURfmX>|H<+IBt5bU73w~H9?Bngnh*A{&53W?^&h~TxX0;ERnxi44#73}r!^@H#r< zGs1hiG(Jm9soJS65kw~sw7zvoWjaZ?9|uiI({#PYuKJA6}zk5Sn!A9eI&# zf(SuN?-qLlQ>dKlLF_5dzd}|0$uF+0v#*bYWdC?(*^X^yCj}CQ$|8naj>iD{$^)LUjXpm-Id)W+U@M#Sv1lC8-A$= zFpoic<^#Dk;SbN?yeu?-QBX}vX*hA?eiW2>oY%8`nJ40Ekd{35iha4iY@Mj`JD0lq{d5cy{Gyr5Usv+Op=;*WF&y2< z@6}LM^b?PDCpZf{nG6;K0AtILO@jB>Y+w%&<}4Th{eGfuK#0z-$HUcr$E*@;I5_V^ z7|NPzc%Oc<3^`1OsE#CYdq=ZLCI3=1XY--kj6ueb6Uk<#6>0wXGk8=PazrF?LNPj1 z7tVr?PEkxb?o>!(Vv9Kq7XzwO@?(vqgSw^FGoBe&e4zEWr*}JoFM2<{R>QD$2B-L% zF^^I$r68kZ<0%xP4g(bxm-TJ78V8ISf@XxOO6P^N+1>U)mRw}mwNY@>18RbzCJPoa zMuOivgJ1T5REc!QxERJP-)n84rYSgIzU(a2ZjP8fwr{(pZ_3k+H0tuVCWcNsQ5nmn zaV*h3zW*e6Bh0ioBbk)(^bGEoWrG?4kL9P&0YF)4{%=XvSF(_gzouEnB7<*+*XgCa z&br0&RX4dP<#v0@2I)?ZPDB$wU_hGQ{}|pxrvHm!NI41;dx`u`t(0>_3vxsXTT9HK z0DaNO!$QQhAMu=2ua-LvY4WMd$PU+RULk5;=jY>Zx*+mWXuu@uw>VmJ3_#@<9X%#( z3>S zfDAF;q@}OEcY`JKE0%hU__(T`Ue!A}H1;veem-(G$_nPPoPoTNPG=NAO!@7)vzgaW z;-4M#CSEqS9Q3+C>Gd63m6Dt4WxwI$C{1*u{kv2#C0B`KYkD>)OC=6TMgbI+%%HrG zwMJxjEK*1i^lcwG6LCnFXGFkEf<81uuq2Va1|CDEqR$61e!YSkx!c&qU`(b$QxMPa zZ>{6{%976Ep>fEuUgQDB{|5$;{1s;si*%j!^>~eRXY~*XE`MkmNH{fcx-VrXXaB=d zP*bLmn^$uyU2OaV@&dy!<*n(D%0+|+Q>^KM`*Cc@cv$$$dIUrmK&3-O-a3b`Oi;-^ zqxV9A5cvRhWHHEuO1>SgXMnhK4zI=)(-#O$p@0S77%z#y;~p%0Q3e#P1e*0 z<^VBQ*hZg&!e0tqN4PqgX#uF1_aUmmK*>KJ#UY@_VxhEKB(pVR496LupL269Q)-HS% z@`Sl!J?kc3-xJL-UFyOXW(P7v}*j-66cer9>_`G!^Ug1T& zK&V@6+g;(DL&-?mmJlK=pM0gsyTzxIZi-BQPC_!KG#Q z)8?B`JB)&$<=QW_Ex1Y{W>Jqh(xI^h*;SaDm!bZ9`6fVS=&yJJ@bf6A8fQ=eYiZj6PwF)R z`r+{kVfxR~!2OXafW#kZkp&_x5Cp$TQLaG4Bwl5Yj?av$E{qo(jKCt&Zw6*=^ zyD5~k+X=KOX!6?UNnf>ZrG-N+wi6%3rtEG{IaDHBSLmuDQc)fBGjEWa02&RNZ)Uf@ zB`i!kAB>{7CQ@(rYtqlWu$cPtGIfql;t%!)#{q2^A}21fH_2kQB=>5%+Dv)KgaJKc z1KrD_3*;97jV)@nFtJ;m&m{*3^Tk4LkATHVp!-#kaHbdzXtDpJi#k z(ap!(YvnJ@?GCeipwA&u|G4}PkX%eOq!sO6ge1M+&n1hbe5V`Yzk29KrM{>H04Whc zNcBZu>vCx8((jk#%3MZz?&TXG9z`fwDW6&s1+nyoYLJ#C_o!{i)Q|T;w$@9O&(L*T z183{X>AgWT?=t;g?(Zn*kC0__C|DyOWZ1fD)Viv%zv>5A(Xd_tCc)5MD`v)am?846 z4?_%UNhyC>V+3;Ba?NpQ^-d^M9|2*OBo`4w9&xW*e*E!!kb4*aVw8mFd#}A%TsKyS z-cw(^jUD&3+-TNWpQC){ZbdCw5?62UZ72gaiJogOlh&jx!OIKauO1sYdADLh=eEMH zEa!skv74cxTcMIG@(dvPH!Hb+x44cs3v)RyFstGKP;ls4iRV^X=vq1VVh#yj#jxGU zp!T6^y4Q!{?;uc#O#PXAbC`SA61ORig0@@kOebmdFnsH2gF7G=ZAsfB+`FrmYtr0{ zftkBoL#lJ3lij26=ZM9jzdN5S_d@=HY^;Ie7}{^Gdw{bCR`%A}{@XX&qaIMV>0mhE`-x_J|GndYo=FmtT($aZ z=z!B|<#sikm!fefdq-06&QM1R!+k9H`QGY})&oh6O>PamjMb6ef7cbP2HFemisv7G zW;mAozHLjUYD5g^hy616?>L&1^8(8tj^4ytt=aJWa;~Djje+YX|8o5z^7zZIFQf1t z`IS3&PW*W`l`yo@UrvI(u6qnGd>Q?vgg$v?d3quVxeb6{ww}ffpG2inU0@N9tLbaz zPHhfO&#IxuKaa%U|Bkde)xgl6WAO1B=Pp_Z>3!M-BK-r4rm1ZD_z_3;eOjCY;uQ)$ zH$q>Z-_8!8A!Fd*Fc44;Xbx~ey>v!B`jXCssuIgEhqR~4)> zv%3lP>u{c2r`ahQ7a`2RbjBul9ATTzw;m6@%Y=SPoYXA z>fr9XE-BW>Vssk4@~hR_a8~WTg3x`@X!)xu{R#3zEs8&6CoCgPrpoY_TeQjN3idl?1M*6#UCF$ z@#>O$h_6;|tWel7U#84ahzar;)kL&H}>4BZ=3muxQb zOE^nfFQS3n{;g>~%(Ufe{*c2aY^3rv*bK~+CQ<;+aev%)VX!9SGE6QJx7hEz? zZN%!Bxg?>wy&}afGXq^YRu%b^2&9T{+cf(fY>uL?;p$Q;kHtgBCWj0wg3?;r z!#?ZBY3@jn^5$`Qm6&pc{Vm*sdVJSnMaAUJ&uK4o@2NlO4pDw*)$aX}5^fbE5?}1W z_*p1#JyOeki)*>*`i(21MGBcEDGG>=>zA zfFhT@^=iIm6M(tY8zFwz4Uw!NYVQ(!^blRerhd4nv(?ulhq>9$r{B5EH|b%g&3Z7H z^aekd#`Ta-&wnDdKl~R$uF>6Z6XpHIbfnRtBIjhu(IVq(dH=W1pPxM%VV9>jjD`6s zX1e8?{l(v4`8Z|_A`PoF)3{^{Io6%KGpi=j>CEjUgsZ!hS4ZhG5IYpkCmbwyn|)#( z+3cV|=h@wS$g8sIjtH?Ud2OqsN`aM;usJLs-G8i|RqKvmV8H{^WgiAJY|QiT+I);1 z(a8bROOOMZ6jsBdH>9*3+p@>q=;a=E(@s41uN5n{E=4`*^w9*-o3_^`8};Ptkve*e zJZeLl4Zpe^S_ekEJ9>3X~+t@&&5$ z6EhDIn5<+Ier4TxdF_*ZTwekF1RL4Q=ep6qv&RE*}NC$D@o5=yVWxap_BXLvw zH4H;lMnR{M+_Z@y0c#8B;Urx%Ycg__AJ4K+aF8ulx-G~ensl2Y@aStO`Hcf7DD(S( z(e zp$0KR(obwgp2<%X{JWNWZz!3>JunsaE`qA|+Nhg5I$lMe3t|eKpi^8TFF`X znEHw08&NLTC6w>IHoRK6JuQOPXd6t5W75}bgsQe?5<^r0xjp72dD~{w68Xuu)Nfr( zi_Z<*_O!XTHwfHbZ$ZT3?otwXOZnJmENmK>Wqa1H1g(Y<)U}I2Bib60CJ}b({2X41 z+veNK#E@xQdZ9oPkQ)~vM{ef<`)ogfS_8wXwQE4tU6gx*Dv$ckoy#-2+!^1AB|i&X z$?gbDQTP)4m4~>(b-XdES(lHsM_r|cHN7+ZMuvQ3AaTXs-f(x@P7137QX7Q0F$_r& zr_24Rv^JtuxH)F}wpRPbzyS)i=EjD!bv^nNS^kfuOZ5cDBJ2_jSO0YPhF3OKyY!3f8Er{rU zp+&mlu%qGn!p>fLibqs!?HVzK{z>N5tepMm=RYagRuLC`1>d~AUlpr55Zudv_W-)` z=WWRz`L;B}Ggye$M#0qmVxT`p4_&wa??8IgK2ce&*K~jvoR}GUX4#J1Z*lT%WaWMi z@z1ALbJlvU$+2#Bpt<)aKJ2)#5suT>@+D%KnA%zD(R!LfyN_?#1*0&IhZ^-Z6LxV_ z2~lMdej14beAt=E_j%Ixod5>H35e4RM+a`El4TIZF?vqjgtDm-LvdR0w#=dIC3lM# zy^n??g^uOtx8cqY=Vl|-BUl?v7`VBLKAzlP$HaNtpI)>7cqY+vb65=rEt*5Q1(HB! zj}iPg>QOtWUx3%-MZeYTtJRP|Qtmbz1%`do0-b@1bmy?aI<=p1D^sa5nlYQP74aPB zWZ2)=Wt7Y2=FlQF~peEbhYjs=!sJT-RdY@ z4G@DSE5cMfKOby9H6L;el<(WVh>c*<+Iz-xjAW_VO}{F@{d=*a*h7;RD`5H-ngx`8 zhMDT*@jJK@q{j!$`N{p0vjNoDiP^e@evn=``Y+7Uu9vv@0LF_1eeRZ<)=bugQ87`b zp;hdDze<;GL4?ipueV=?*Yi?@mZ?3Xx>XP^_?;EFqthRU%9)+yIo>^AicTnRCZ2{yl|X+KS;$ z!X~_xQaCcganVm7(ak<#32yv6KlgdDp9V($5+(vQCB`xkTO$C`(zjaQK2}#M1aJ4( zpC3ePd}>9SNAP%~d`F`3&o%aIZxCEtsQzujfo*KEF_&7xOugZJy$U(}u%Fr`PKf59 zjxW3d?e}aGM9cou&1b1N14ZP&26i@sj4%t^e2@Ve36y$-0o2Z*Ieddax2i}pUgn8` zDA%@n01EE}wz?ffP`s)?Aup)h_95xl-+NfMHC(GdQW4^og&nSRgrNzMjQBTypxG)V zC)Z)2y$Wi*3iq$K>qqK1Kc+Kfg9R({cAh1LkEn@MsDV4x#8%b1Hvp!JEd&G;y0c=i zPtpyo-SQ`ryXNDk=Y)`bsCS@t3oX#otVxF>hRsbgGVlwlObqJ_)ku^c{;L!Xo0P!bjZ2HT!eN{JS)@+Qw?eCXgEOYAIiRj=Fc=zW+7ZOm zbO)CvaIeFy7T+-gecADeCkEnyiuM8W3u}v|YQqv#g-ij3A%Pk$IKf;?aBcVK-59*N# z;o2t&Vzg~nqVH7KYl+-w>-@xj7Vb(W6bO{~^@dl@(fcV1+PtQ;E>1hP3hvd11vz1z<{m+x8pK0nTPBksCi% zOAkL#|C|8s4pf$1MVoJEP5KX?(lK@ie%8Ck(wPr3bNT8?hnG^iNzDY5BI|W-;J=v1 zoUabP{!l7a2QfSgU$2u_5i!PNARTowqx(?-2GS82!nR5Ti#5a}5EXHky?CIq=qOqP zTXAwYWM|mS%!QK#Yca(%a5__mHmZiq85~EpmEniEf0-;>)8%vg7itEEiO6I-YuVPa z_iPN`j!bB_{+DDnDCFy4u)c>kfzccLZ>jsE1w(OZ{%4SRz&$)kAI=n!pQBBg*lHOU zh&}hY7l8uW&*Bp=Mpe4T7cxIX8SxL!px%g#H0LPjMYJD4zT0_>AuA#P^)7T8E~bm+ zUxE(x-Es}YLj*O=$tJccF@Du}c5K*nI?#uY4w^#`gw<61w>yA#9cLu{3sq1;!IGV9!x7P6TGG^ zehHEoe3<=Xgh!Fe6xQeZ`N1O>2aMX@u$WtdCa-)p%oh-HbjWyzD}8;}(mA=^Kfw*?sRbY`{`BM)26CpI5-S2T#ra1O(XzGdb56;6f~ z)u|P=wH5VH@*|{8VqgEH13_j8$3S|>V*H@fe^HyTLM3$H?c=ga$*Q3wOrv|%XzHJZ zWc_#s`dAstXu04p0%9^=VYXaReqzIQW>t9vc8sy~gc-cZw7*sVLuGB%eCmhAqW$Bh zstjfa0Z3F;KaR$kN>1{-eCQGlAX7cg!AmiEe0JhViKF4#54Y|$_r>MM;cPh(`mUH| zON5oIdbrMmRadta7W5CgOrWhb!8vni7Y{{Nt_8O`z(Roz8_=h0QS`mma{JM$1~{5L zDvOwCuMH=U2OCjqHcvJk`KKUSmIR6@#!hw*XJ@(O*WG&Gb2Y96Z|4mOO#kt0B!B+n z`pcnZCy6w+dlVporjz06rw zGMvMCBw_7)LTfdPH~93)#pjvDV#) zmSA&sID>|*Z8k01p{%0=Gs9~aZOoBN@A#n0ll|^a74RJ5L{|glhv=$>mLKUIm#sD!aA>@ppYDTV;#DRP9 zV+2Tzr!@+TujP(vEZL?kLhMl9(SeA)|2&;ryP;qHHpV=KOo~91QENr@&Yhur4CCP} zn4P#hciE@m8Y1*gY}QJW(LS@T!$MxCA=awXA50M2;Uy8F&buaO1o~-QAQqxKvOZ7n z5NmYNorZ*>w;|jc^wSX`IG6A8`x5orf%`5?L))K+n2}S_0fCPK>D*0uAySIrJC2U@ z(Vjb!J4H{alsEP^E~|I>UF0QxGU;2xhVYRWgqEpwNEn$OwGYO5K#X_8ux?Pt=&%^C z&+7ZA?>6KI`_zz#rKkJmO_G6Zu83NQw_cjvK3EE~#SraTKC~CN7_JZ)g)D`*0Y)n< zp#`p1%nE*#oka4)R8$y_07iJGaZ@{s80WSgNQ_Wt|AmG>*knnDHnALPoLb|BJo&$D z3Oqc#JV-rZihmBB+Vew&D@MmLy#xN+<+YJLfpfH2meOZFtQa5b zCOf-k5`O36SaLUUI=vra zEmyt!+c6r5+lKJC>7GGRY};YDUs>sdKr?GG(yv-$oR=cBX>r#IeiC(RjXJf?n31OF zWO(cTgdp5bob;Djr4l`715Xb;eW8BF5B=}-L`!>}zWnk8n&&02;2hfP5l(^VvQbkH z<3q7v6c!SS3;6bc5I7AKJ0paS9DUo1_G6=NOo!MxofZGI%Zxoscpb=J73dMOA^hxw zXt`HmwdZ_xb^{*dr|~RR=;)Q^?+=cu$WUNx*bo z_*gpRlKcEyIz-9PxkUIvEh#G$!Sezaob%=^uHme_fzX?A(OVi^{;kWi*HzalTIxp7 z2ZcYwJhRXT!NtkD(@z7TQvm>t%XX*Bl8mgFhcAMx51)xZbt&7Pq!5dVOUeTD&j8PF zsfGuS^-Vsj+^)n42pLdn5%lo2ALEAy(;N`hF+$0##zuf@0>}k z_NEHot8)J>y*BV#!EbNpw~X^}y#7l`k8|0riSmcF54g_dcBVf#jaPX*ueEvB{Oo9N z_m9Fpxjp*o4bKb3!_~eF8LzzyrQ?l%&(rTcFO^SrW*hu|?k$|p%`Nx5yy5lt;>Y~= zZ?#@O|EgV_9j=eR_oAr(y%_5#{P~ljfuqtZ$qS{v*2|%?nbR@kb43zn&gIRixa3J9 zkI+Z4yEgJha|QSQhvSV?QPlzC_v6I!h%i?NKS|z|D4Y+ z)t#8nFVp%vTr;KfhZ%qJZjfKE9QB8*x^(1YvjN^SQ5n2s*QPWmlM>W8JtrdLel)LC zXmIt8*FXQz@hP^&+gylb&_JCjW3XcR+O0mTG*j&<)HXKiTCj5r*m#A++11EM>xH*Q z75Xij*(HJ$EK3vRYIb1Xm8?UL7HORk{0V7$2?hM`%y#M%(0M{l*~2H#nZyg%7e@RkuHSjv@9DJ{cdIIY4jCuXL9b%O z5uSh@u_&2E9&J9iQkSB6i#zTfkZiIC0{D6FHD}8K2DXfqC~N~M^Ie~8*J%JJTPJSS z!{P5d>#5+Sy)13ac#Onsm(-2AG5L%hy21_VJ{DJ<9wA>>@NBl~7(Hjsq<0mR0Z?^D z@bcX$t2r2d;=etVt{&DP=WQWeQT+ry7oxD($XuVz!;h^HeJa(F5j}bL(`iJ{7YPt9 z_e*ih2LU?km>lwW?$z5u={tJ0gL`CEE|mk-0+=s`78-@r(%=~SmCKR zMeq4@>-YtZnclP}Csos*Q}xg5{}BGnf0KBTCBa&AM2k$iEYw|`d}75N9>Vd~PN?Nl zjE;%Pn%wL8`3w^dl44qT(lyNdQU}bYV?yVZmJt?uPTAgG8)RccqqMk$))^j_i2${y zqkQBa2rZ%$Y4&ba*l@e%->Ew+jU1g+PCki8gDZg`Y9W!H zQ0DeNn%VL88!H4#U}1nBsRJ5nB_g1X8~1KZ}8O1u)5uOv?lrZ0A4+-$ZvKWpZx z)WJ$jV8dKba;Vy0`LyYab?9!5by2^qmZvP>#<-Fq1$-3AItvqVn%X0yvVnL2Z(af@ zG!q2z-uU<(%L{Mgwal)V)Le8Ihfn#gdCIbB>IO2td>2`Cy@{#+QFCE>LxTNbdaY{z z^c!|*q9!teD*39cWAL|6>kCW>_K|0fSy5TJ%q_I$7qjG!B?TqlI(5@iIrbMIzQG0c1?`3?Hsshp_v! zxxp4`a|J3s!KF~wsgx9sySG7EW1~~lkvBz#TW+jz&Q5~?ZweCK(XT*6?`}>6>DvN^ z3h?fF(gs@-N6C++CxaE+3Kdrpz5I{t0QuYAeJMcB9X=KTkuuLZO)8DX!mA9p~6A#jqw*xt=6^_aqJ#6}Ot z)=jk+jO-?1&JZv+DBSU);J@eF1es+Lm6M`fb&E;aDWF;%!e6bhgTaVSD~$cHwgLA~ z+`fqfuOWv<70UO^eaeeDelq+_#YREY{R?%+0>1VCFnZrO%~byA!K8vvXL(;$j$me6 zQ1QEW9k{{Q_i9t8xSY(mSnf77z5ccK(B`SW9ALy@0k%TZWH7W5%)ij(sTo&7Yb+12 zo?kL(ry8D(vi`gQa6I-@&_BA(%FX4%U^JWATw|l`&mXI4_46NG(d(e zt!_7aVX-Ax;o}5lF!0j-_RKH6h%GqvT_CIC*iy z)7^PG5hiwNB$+1N@$2LJCGHK(LecA`1o5jM>UH)OGM{(u8T@M_yY0d8y-^~kCQ6F4 z5ElY|1UO;BAzo`HdmOh(X`vx%l6MdJ#xLZ9&!Ez&J1dSC+Hhkby6+bdPH~yz2j2iB z34aiSMhgyz1duWn`Z#Gic@+gMg2(@3Xw*ajXsgO9RGQnUkaT=09XAh{Sd(u0b=-{a zy>>NDf_-5jX8+b_QGYLn-A0|C5UThR^FoXIY;yoE@w2g}aU$-gVi8UuXIr*fE8c$t zQxhL)_wgMC&ywQ_Adk1VMZllFWB_Aa6}0m)bS)>_i!e)tNQD=z{`kNJaW{p^@!L1p zaG+bTYDJf3l)P1JwP$u}%Fh0^LsOSZw-DdCmMhP^8U{{fiWgSW%VZX%RyXZjKpGChV_1=FuJwNe1;#UyjWS4N# z#F67~B@)8Z!_}jFpO7R60b{k~H*(Z=N$SUKSB%=^1tOAjL0lp@x@v8{4fDY?l*hdJ zki?_mF1-`jf)`?8P=`DGcAg5l4Fbhw{}%>X*2@Hn?aGay=6sJp4+BlqO;5nE(#r*N{2lVV(Pm@x(MZ_DH6TVgaWlxk$ zsM@d@yD|MIlQS%_Z@dv8U{MEcCy=cew_acsvDW*v2nO9B<-Sbhyzd3355ITNUq`FD5kvRO_pRwls7b3U(_Af4ed zI-oQ;e0)oRC;8gr-3SoV%F05)D*YQj*?HUF1=kX;95g-RV1#a%uw#|+JEq!T5*09q z=&AVT!SB@vG!Bsxg*(5#2{JHx&1-?t%RULy*EKuj_b0NjoCJ2Vty-IB?<2``i0IfD z3y#Y)BvYb_mMWD0aN>uBp|&Lis))jP27#b3JV+eGRm>wz7@RJn{P0#~@y6I)7n}U3 z#M#ctEb+E2K&?cW%kgrPu*-y!@W{4X7F6PkRx&0?ptPYmINA|S)yQz-6+pjI_mvAg z9R{NW&Z5ofU^pxE@9rL~%y+M|_9j_tEibM9SSk&`>uu?QiOGJwv9(+v_95~!!n)^+ zncus5T#XL%Wtu@Z@nRwWb*9AwhaLqNa4o2{rJq6ATH|gfE%i-MK@#}A^M#pg!&@#P zCR=)}0{3W$>trfiS{Le>vfxddwla48A5ugfPtB>o?}}9qd@w+2|2JL&noNxy%te6d zNzIjC1Uyhb(zb026Y*k?z=4D+hr~)(-xP0sW2wxsw@hXOOtPF zyqSr+o5B|j14Nv$hx4ET)0=ZrQ{$;NxcF>BlEmlhN5T2T>efp;}*K^(>h2Y za9W`8eOriH>Jhz&C$qDceVV7awzpvPdm!aq^)d@6LG#8u@S2%(q%?@{Bm!Ob%F`eJ zju9{BpY>L9&#Qkk!2J8?fT}K5Nw|-` zj|X{Add>rZia;r|2)XI&ty|Z>L^vW`jBlK!Cnsr&GvRsBxIPFJyV*W&j$Dvp6{mlz zf?@4up=;EkZ?vZmHDS!eXvY%9u2w%32mv+94$7lwhhIH>KDo)V&y*(u#Fxd3zx|h+ z!&LgWQOWyb|9S;``{Ua+=_W+NAAtq|c)98_6*3NftR*R6`#4Wj<}V~WCvhBeoBNE3 zNfa;H2#XfQNAnJBU=!seD`V3r8GNdHIcb%$IUcjVi02lFrmXm>?#k6M;RTv4FNCYT zYQ7ywt2c{Nwa?BjvQ1rJMxJh_7~)l6?c|joj(FtOK1P;41Ar26f@NA;L3iHyk}4#6 zB+oEl9TIb9E{_z6R`%$q84v=axy;^2Xn^2c|Mk~9f_yEEMJ`y`=p9gZCG z&CJdr>cpXqzG>@bd~-9Nt==uTS)0onbHS*88tN5Q=lXfqFfzS^SrM0HPQ|g=EzyFZ zOL02%6}d|NuZ>EeM#sUl8J2Czc>NcItp(Qr>5;RhqDJH3iraEJxT_&=9rp;lF_`m& zYiJCb#Q^P`UIB+w!UgH>N})BuiX_^z@QBb6u}z+7rLhfEe|6n1lV{4DrAcE#`(z$y zymQ%hmoM913c3rCCEtV=WV*}K=aI+sl4_bCNr^G`Z~_1iZvp}4ZCMO2lfacK|Gtk3 zjIxtWkXCLV&2MoNpFHy!d2N^~>u^2Sm}u*Q$Q&t+uaJT&C9b{gS7N5)IwEl0;oM2* zPjb;y*~QTz+W3y~Y)tD6#~`j805Y(HPgd{x1xPigLvA2vA956y(<}NsTD7IBMx-hw z^@A0S2-BB+@5XnYMcRyK7|7902}R5wAE>lO4=)zL#8SJw)juYtuS)Enl-6g8_X}YH ztIS33Xi@Zz%)lzL+QrMBc8Ku4AUviIrxJjpoi~TVWHe8qQeTdMp&e_BTtwKFlrxAT zUATFkwvuU`Zbpal^&aLI&U7v1(W@0`RGmSx?9GfiuTDRAY`dT$1bhKfW0o~~*`t~5 zpX@xUa0roM!W&!FdaoWE3)4n2rz3(K1K7ghJ3twj_KU6L{7&)P8gi!k0f+gr?lDw~ z2r6(6Kn$#H^z38cK%J=*?0H+XOb(4yrkvDqp1)ZKvo!!{O+vh~G#i$)`1a941A4y$ z!lepQweR2~=0AjC?p=dAEjow=eSUJ@xJ{39jExItJuD*Xuoh%6pyG zdwE5AKo#sM@;QG2rSR-o!?OnY zr_rbAFomFuhM@lxf_Vsm?@xn@8lHbqc+u1Fq96SH+iBo{Lg;$KKi}xZTtnD5NEo#7 z-@*+SR&bI9iS-^OT{eWVHsUoDBlQ(scmg9dAiL6M{)gjs&VkMbjnQF>G0}=1UXY0E ziiA7sDO4w^ax-o*jqzU;6MD`ZUj|00Kz3c*&RK8vM5X|{4`T*aJw71JL6KaTFhpUU_D1Nb?PGo5oB931=DBV_OD9D6$?BPx4u zh0JrzV;?gsjv19QGm;!6B&!rj9i!6th*F7izWsjx!S#6D_jSGR$NPT2p4ULxrK^^t z{_Hx!nE)WWH3KU=q7+O)vX7|?1EQ0e=%z84AwWmU5Zq5tH@{k#+wdU-j<((o0NnZ#X@n z*<OxthPUmamLvHG|Ncw zOs1$t8bEPW6GmZc8jNIPg?kSXbrlDD-GchwCRhf*hO5CBIph5CAOopXoRpyfF75Qx zh?oxnyv!yCBdCy40dgZx;lGuCeLHFPM{7A1Swj{jBtEES4rl!_-@ZSYYx0mI&R>oo z5t3H?{VcSHO}_@D;0Tz$V5IdYl`k%hE+C3?-nB*{Njw?@q- zK>(jo(>y+leM9z|QFFyv)k*djH`1T8K--nZ+AgCeG$ZMqaox*6Fo|GNF@AS{)SC9^ z4DFOKdHghNIcEf@TRQ$S+E`hK5QIxLAhRvjng~bqFsS**^#vTJ8Tet4SoY zvMjrMtoZ*n%dj8@#sFv@AfS;btnv4m*#j{ey9$ZClso?7@%X1Y+`ZcCl@gXDK45$!J5wA!w)1)Wia`z zNk1`CX9$0IbVzgqKqU;_#FX_k%HkAL21OvfOmey9&!_j3@O)x|LTvHCVxK9B(O^Z$ zHj;3%Ols{>9+&t9>uT-D_s<7Pj5Mkr;8X}?d_Y^ZecoV#K>aKs`Q$0XFDC20=Wd;( z0OkBuS)X6rLj8?6Q0Nc>7RQVA82-j55#&B_fbqkNxS1AkrmqXH>SQEk8^7Fl32VEasRn`SDbBc<8v-#PYC zObYr6@^8vHbWH$>ZLqe2xoQ2EvV~CuZIY+XB$9P>MmkT3pFrOdsS($fVase`MFBC& z^OX89E3if8I^#fZp77##REK*AlHt6 zf34G1!NDYj#Y;(e>B`G;Ex{_(`ts|$GbOTh5#K<_>$I*D6WZ6t>n&1kFK?G(aXQ>} zDFqY>HpD#nMq}ae#|iEC5t|b*N~@;?8+sm}MSt!Tj5_o8fCpBf>~2BSdwDF--t+8O zUUf7YmLI+J_wW{Pv7QQ*&T(

#U62gG*{1sw&qO$#*;tM>!Y4C`)q|@WrTcA zCeY}%?M6;YE7vM7w8p+F@J7Ap(C(OkFjWvT65&^+CnpF3Ip3C-PG$RA9r>}PuHf+d zyxGa5CL&8!fc*}R4kb`N21 zANW-u-(Wpz;yS`tAua3mwx9M;b1qO!>M^ehy`4Yrwhs$)X;YM+xVhdD7R%EBQWP%? zppx*_^V0-}{!zZ;v7C#Qd@XtmfGNqFUmiDlk1l7Tz}A|K5z0tzm4K%RXkK(S#+C?C>5e_UU6BE6j8a{!X~V^ILB5Fb=M`c6Cui3Hce$oIHS(AO(T*DD=GuOD#`Xh7ovR)D^p6?819>{- zHk{)r*QAQgx$GAtveuZQ3}0%t?Ug%$cn=&y89d7EgdE2pRnC1r?KP(eepUx~H2AMXui4grvCQ|X|dM}=m8#{>ZZ#lIG%FfoJQ#dc@p zMnt(w#7o(5IFBrwSz4;~mIOj|0RmsI$~kFBmL>AbfF(qN=e~eF5+>Z@3Z;@K6acw}c6wm#2j#tJg%}7=(TxIck_t z=GxF^qp3%GfR?H`sWV2{prtBY?8JkLZrvNKXfE9M&Zn`BC=9rq91TRA|7#2*JE{ny z65)&|6GqM&SJ5nWJWl)yf*Alt6e}EDM)_@3zzyr(_zyio=xvC;+&l*z%@A2x&aije zC^#Pnk~La3wpNTBi87`O!M2{+h+Zwdi?)2?0sCe&>A9tYX}`xgu-YuhE&5W86Pilu zyhW|CVIPZS=sr_2x=6b~alwtb?0m1|%v-ngkH?Q!-R6fk1SmWF%)N*GLO5gqtb<=Y z57AJ98lS*OvJ!pn^R9RsI_86gg|mQPM5s5RqXA|-<9+NUR<@a+3EQ^SucRY)dONR& zhPt)9Qcz_F;Fy5O6IMgZr_MFqTFT(>320|g+0a`=Af#lB+Xz4yfO2zO=}ve6k_Q8Z zfJHt9KZnJa?#9tq-gd!_-+uNRIsY$1Y>p?m3Bwi4g=aQX@|YE$eK3zj3^`em1UD8s z&X8d1RhLa)0}XT%qW%=}RS$_P)~Oo%hIt=u^h@iDny0h=g}5(MBG?7ghvQihI4^K+78$v823>TbE52EV-K)E>amAi?uFZ-1+&V^CT@ayzXf2Wz0{_MNTdp zL-5^67Dwja-%nni=4)~IdL{-))@AP!x8Fq`tvz(A<7jH`ik%!`F@}@T{#t&<4O0(~ zDK4+RiUGdhyVCFLNbnF$CDpQX`dQZ0OkcNCU+mBk1=#^y-)M!p9;z03l4!R#)WKeeE(Vpv3<>%)PnSwx7X=mB)Uj! zl6HTC+Ii%xFmU@NjlCaQx4N}jEF@Hcp?3IJa#ncDUKfrvZV7I{h^Eeh0HX7Ulw#Mg zH(&4`cN&_jeoo|D$l>y?OatmqUgzr2NrAFR0rihK@diG31@SF~AeLp(FZK<@>33pe z3fuV|FvepYApTD<5p)1xU~EFDbfF`g`*KWdk0)+$WEnsL>~Z)zav)#S3sHA2MBpLi zp7eQpp```97Xar21Nsz7{#*wm9E7~Y;kOw=F*$gJ4$)N(pq8gdIRlC_780g&R4@b; zfry_#9EPkn+Gw#gCbGT|XA6|nESCJ2Nn{2Hwuqyr;mA8iLbeon3ClgFZz7wW)G!4%n~D5zu}FP;d!iwA*IMNLPb1q{J?nWpjr2_Tv6&q=nKNHImm zrx_n_1&U}5F-2}vlIS31QLNDZEzgSrTK>1;$#$$E3b0~YWS03QOya)?2?!2&(|Cj{ zM1toI8MHhzi#0#I6Er6=t(*co@e~RiVPd_2$f^%wiWDH8C`1KvG*GxC2yQ(lkbD;`EA@n%3^!vW0RYiP&;5}KkFO$5zo!rIJfA2+W z1)u%*Rh6xk=L`Vo0j;qF|bD)@=0 z@b5lBYY`)y8}xU0ATafvmLjS3VK zUMJ%DUjTtNS;7}JO#Sz5jPX`|&;5@nI4`>W#E7F#I?!|^J~_&C*3op6Y`X4fYhxnh zH3oCoI{j(iHhYVqNE65#0m=a~YuJ$uKGw;~ittgW3Ug463NmfMMgR~~Qrrz=uyTqO z=#!NQ-a5M3UQE-Z_Pyyv5HxH9@rf+5k;V2&S!M?cbinh4Nboa1BlLiXkWry7tnAJX zDzbqRLbDg)b%1YRS&0DasVyJUnd7euNpvnZ(=|hGPYn>4j*qmVY z7P3~u*WH($Fc0hic--u?CY?KXz4zSej|&2xZu4jLI!AyPJ#dHO=!sr;w?Hw-JrCYO zFIV$~_f4FC=IMWW12rZwmM^4s!>(u9562t^`=6dSBNHx+P(U zbnM4C26euW3X2IIa1!X|JGr}{%5whS!%#R6;^b%aeJBN>s%8fXG-vV13 z@lsEO_HvwN{m=^ip04loL`ILoCWnW7yBEH2FPJwrvJ(|~tHDb6rNSMRDEYqr<)2Y& zMD9;?VHIsV1^%ED+QIt#vWBrC0>3WXzbvtgz2e$;B`fB#r*;hI%PWD-hQ2QkgJS(; zy}2L_!XZS6pb@N!C_0Y6lF#oSt$npD_G)F{)$6~m*7teF^a=lCmwEsK)8Zf;NLWrB zgk{DtV!ej>RVIFUHvCFl&`w&4Od zy1+5O>vbO)bwK9Qq42s;)?c37appMOU=N{)-dpFy5?~r-NOm%;%2Vt%Fcr*1rBYyB zL{XM46QHx4M(pQ3W^#_y3-b|^)5JwRaBOHos{C^5FKvMzOflMe3g|#=pG@ZOr{*6} zi*&NfbOMB20D2>QU5rd|fG~GGn>$?~GcGxUelmtE+5=#tGKJHbfHwf)JD#XdegEHx z>gU~BN8t&OAs0YPKd;XSn7ba-(w}oTjvBjs6n~JFwp{o$HXHSu#-&@td$p+DMvbpt zj7bsQ24Z`h0mx0jp%U52;*d`cAnw<6V6A$4U~lf%iMr`>;P;kP^Id3b)!JpmCB>|f-Zc1o!uS4 z8#B_HqTP1R^+qhNbt%4mWw5=>r4>x(UaSYzEc0yvMU$_Uuui!G(yxgQ1F;Go)xgHP zEWM82!7`Ea0Cy(;PlgcRdP3d7o$rF}&tA1F9d)VdcUNBP(mjgPJnAOu_n7Dh|3fJ3 zVtefMd(S2G-gw$`;eN2I{ypD>dx1v^7mx0R-n(}tq3`Pbdyz+dB0YT>3H{mn-ISyL z2lxELV+Shl4_rSQsMjBCP8e*vKiGaW*r|WNH{t%k{reA&?%!JdX8{cjoD5(b4K3(D zSW0-Xa{s~F(SvpU;dcqcFWrWwj)sMt2RgAs7z2;5+JlUU4UAR00{ zymy~*?a2^_!KifNsQl2V(w|XPgRy)*hHlMRJigP;>uPzdc1>DE43<>;89u#|=ykK^$-2Sp zyTsX#L$iCv#f+gD0r8n%HB+9NN3RU#IduL18=6P`o##5WpzdDWPMH(AFgG=%kzb^S zB_s1FA{+Gr8Wn1ICJJW6F$;_vBa2Ca3XU2;)9a|$uJhghJ>~toqkkiLpMfltYan&ULLv62oM*67u2}d#i-1aL)X+s$tyzM&n3N+ z+eB978&g<)C)wi2&?LX9q=9^KF2&bev~{M)@w(W>;tbEJD-Sk~gt_qyn_H;mbxJ98 z6V*i#y;BcUaZT@K3hwH4$a|I@*FQ7sPq!n$j>S97lAu)-(PYY8Ryv(HA%%Fzkl}y9j)W!q_gn z5dQefLh=h~SKfW$#b3fNpBnsIhR+)jHJ{`+EN~inmdIhtME#^}{T1!drwbSibM8LK zo9j=`_IOVj7V{uNLPQ179v>2pKY%@;$MtXXPpAJP?!xN|<|t?^0kSO4#U}bG3C9Nc z-SA*-a&BEHzysT&kBuMsys(Ni#ABJn!IgT{F+jG4f%T(^D*qCWV_-EX{3@{mv=qLZ z_0bO)Se;)o+asKd$A_J7=cRSI=daHk4gGgTWYe>0N6Z^>%mA|+0T=7(M{L+U@$_em zllx4;!_nQp8z^gmGT++wN1lnm)X6ja=a1n!t<7&4A}l>&?5 zD#Y95s17C`9scFe>0mO_IfPE<>2z*9$`j&jF|%8$H_Af`G$dBq`#mYbKRSf#^=wyb zWc-n2bMVPZF%%tk)!wTKUST`*sTNth3X_O+D^*3+J@ivxBfjN)a0J zC1mZJC}EOZHyrG2t}ID+=3NP}e>7$$@P(GjZa+8QLBG8tBKj>_x@^qoC+D#s%;%2^xrB}d72`)};_-k1b-UOV)qk?$5)cN2?@ zbcdO2b0pnXH(uF~72>QcgPk5?_PXJoq0^<&fQ>;%o2pUN1&+DYT~hJ$g~;7ePP@dt z39+xZQy&~1TKod4u2xp&`LNl&aIu3D)&G(jGWbg8jWPl8rRtC1K3~*L>XLF6IJwTt zG56<)zrH_)8~dc?0C*=Gv)J_AyIXnwq@mAF0*tF<+75a*#CCNaYu0%8!Ym_F6+3Ie zu@bx&Mm`zL8ji+Key{Boc;vLGLgIA%a4+EFDCAp(+ZufX?cLh}(duBNrxxFMPSo5C9N9#?6p+0o{p^sa^_hp2;6`aUyjp`rS`kg_%BBW2#1iWlMNZ}{ZfBbc9urX zj0(JlaTu-@f#u!3%%&d(ntc3LwLCM6N+{0@&qCtw0C3j8^0;T4(8}Q5@n4B!sma zl*Zk2GxW9x_%srsE#i|A`S)E;9le5QhQ!O?t1joK!pO@@&%E% zl6E!lW}djBXZ{K|zrkp)lE^_>z6rj4!T_?9*Lkn(l~T6IowFU6ZnyDDi9M=Mp_sY$ zWc$R+{g&&WB)Vld>pAD$x{v#gO?a$e7ksoxP48(~w zn(4KOBhMKd@{YAm=;FU`e%+6oPgm|y0-d_4no>UAjkWlg+|q$TbEG5pF7Sww!A48V1Heqd_QfqabK zWd;|0r*)S-Ku7E*f~QE~!aVlKF(21wR;s3aP1v$fo7~Lt(?|GL(q=kAazB%Tp z!mV2kGF~q$~@^-Sn%AQfoTIdg#qkb@6 zfrt%#l2+o+6bU^TBaNtXa0GkH(I-bss=jgTBc=b#Q-#P>6r-x|g9O5VJyDn0%L~sd z6*g2JGyN!QP107D($}j|0BtcO!%wlHDXsw04oxX(p4Xv+6W}Y zJ!E(fIpdN&T7(KuYR(XeOAx7umNZNBr)JuFCQd)j425yc+~8@BQfTW^n44F)%k69( zYki7f#L3P1EduS31-;oF3><|PjzD(k94D9@iz?@KBG9>VC>?WbWv^1bHntTH9*sbs z?=bnwpYr_|go5XA#UMRN92HB+wRkWFga{;|MEh9$Uv`sY@yJYGq(=;@wZnA>pklP= z`U;O+_CVO-uq)iW6&>kD^?AaX89g3I$%BMBCQ38QXmvLsp%Yc&fz)VCHHkz`KZ zrajz6sX?>V{NtJkR1->cJ~Qop47!INLtKwB)q&F{^WW|w-!ahd=;>5vY*-&^Q3W1W zo_C5`K92CIt|1fx$=T^B z-C;s2Xuh^^L`ARf7d#lS1i6M`VK39*#QN-~9jJ2_E_5yIZEqcvI!6F|)D>~CY@GFP z9c(N=ugErfg(SKkP#AQ>-4Yo6^B^DeJHP7#`aDb$_Yu7cD<wR}RhghloEzvR~* zgvGRw0Rl0OnrU9e3|(%yN*;k8V$e0DDE7i_=Ooj}r2lYOEnRE~jrxUV%qYfRlrBwO zD7E{Yd_gzmatC5=9`XfW>m-16C6!hBW+!z>z178zMnD~QA+Tl>qjeO|BaQ<){1e9c zE}3jCUSzCFxAA0E7!os2xx{YBrS9Mh$Wz$i-TaPUn#q;vr*x`|Tni1wD=~W5Rb~cE zKEo`sz9d3x=mtgl5Y=|IYKMRzIX5KT$nXVLui&eDvl|2As!tSE-*@HKj}USK)r|fQ zI(>*SjTafu=4l?a8kRc2(6F8fw6;>!sno{KRVIZHRJJzI*lSl;2e9R>N)>Y0HQki2 zeNx{Zqr*E8XDy(g2YhSp`G$7Dh(r||3+&5?6yiGUu!-iihx)ye@TafYcrSqw+j>Pe z6*gEOodsX?sxa8DHzQVv230i5^Kx2ZQEe1T8x3orDyKk?f@U~S+YCLcS_6?1kK^yh z&^6;(jk*fAa{C$;78+%_AjHFJf>G1mpU|fr-fXl}DKvS@cpj}sqF?LJ8Z>j920Ly; zDKE7>C;=sJJ*1uo>J09}7MUEUB1$%R5mV%Ird*sWB$UYjb}i83!XC=?1#|}kb8xNw zPzkcN3nfw!+hFBK`hQuAEeg|t`0{P`i@WwCECG2P5SUnttj zGfK}V6H=9KRD?8z7+0AbL0OP|1b9so3sKpRE?!ad}J$@1a!5#*PV(Lr<)lP#OTiB^?crNMadpyBL3 zMspu#zOU|E--Mu#v8shkFjgTZSmVC18m z*b!OJUOmavID4VNAdZ+QOz!ST_z0&mO%UtJPToDJc2swSi~+*X}XJ*>`ziPZXaH4p{auPVY1VlnG~K@gO=L@~L~)IT2%m=e+L@#B{)v z>3|gat$%hVS;&k&|JY<5l@$>s`0OTeA^g4K0?&oX5^a&Ef6R+CEXtoF_jgeoA#){) zLjTCaH)LeeJmSx7KsEsVZI?rtFfSW8pX-S%j=(i9CzyEFUg@adGkQpk9m-sw7F6pSR4EGzPj` z63PBZs)ZEa$rj@!%WKzOe;WCqZUC1ei(OrwKflK@fvYrZe)*`|%Gsqglkzf&5vzAO z?&|d+8{)&Dt+6D>myXo-}a$pVI9qrB5pmpI!9V$9|q9%G3Fja1tdH z4}MC3I*4xTOg*lr5gN@FQ=WHuBBr48{pUzk~vRR0$+~|)+3q}hkXYA>BX(nSqLG4o36coSJc^c zR?ez$DCT_y4e1w_udYxecJzKz_(OET-qPNhb^Vp6bXVIzkM|;|Ru7MiTCmlqUzjd` z`VXlemSoKLh=$8VcoN}cPpgI znFst2nR?Lpulagd@LbpZmaU4L6^ci#3)F7AfQrk`eCX=eAc1sO*g^EE&d#ce?ds1E z#7f+aUCa86IS*vn`Mvjvdjem7pXl84M7S=@2iktTU#$$5WZh}wteb4j{^ELAQI_Kl zLF`|LMc039e1i(AH#MrSO)p|jsPHY((N&n%!;k2{E6-AY&4Z`0mO8KbZ(^m6uG!A{ zB7++4etcOa|99?W21O}hHLhNAFlJkP=kD*neyzVVKXvN7)cMR>y`TAahj^{WW2Ll& zuKKG(KED1f05cK58mQiXij$A6kWs49n8(S)?wF(UbmU!)^90sTjrn}xS33Vt<=Bv_ z>ed*J>$7?Fey85F0>5JNg^Fp?r!~!rq^~^tU`Horpry}0-?neEC{y-*_59=6Ruz^_ z^ZBJu=We_9hW(Wt`Rv@``KUnJ?Zp?@p1`F$zN;_(bL)?M8`bRg^3Gbl>&1a!nRiw9 zjgllRJKxz_syk*OosG)Cb^3O$ui+)d4&HpOr_wCAw7OB!b=`3f##{=%&z*K~tb+tu zx{L=^`E~O6eR`v7)ABE1=lGxOT;2)-(OXeeI+=GevfRf^0cYw{asG`pRd_S9p(N4F zeML=RJiMe9F8zoV!9AX{x^^Y@*I(Hd%9k~hmvSk`5uZNDTo3tJ;xv_4m7v_Y zidFnynWtY5?~2$G@I*v^s8J+U%1hY!4ERk0>u0F^p8X8dl9wv~Zq|uP{?t+xe6ww$ zt9J0CDbK~h%BfPJKeVly3|d%9Q7db;WPulP@Rci?M9N6Q?!Brg|TsB4gJ7PeNI znh=SZ6>qE298>ob3at8}?4F+o{#6a)n1NKTj~bcw??pV1^DfZ;dEiYebcos-%+vVo zQ+n3vs&9{Z%vCd)-^CI_F*gGxIV@jIT0a@TY22KDx{KaeO|61U=4#D^7-{OMaKC@A zMR4sFno+qqfxUh8YKTlk7vP=zSq&~Xo`$>0|NhPmRhryONjg+s-8}?Z)@Lf0@eY?7 zHaCl3So_^F#G=f~7nb^)yO!`}1h{?=I}iI0zBK6kt>t3u^okJA=VS$y{_&Nfns2qk zpQ(IaV(zUEcLgicm(`&s6K!$=?UzC`%!`h~`FfQ&OZ=DD;XG+_hQeQe;!7t@CV79g zUCPc>H~nED=$UjngZlT+O2y25>h&k;VRsKhjQCO#zdg}r{h?lTdaF>r8p}#L*c1y+ zI_w=Sy1uJ9&60KNqC#38yX2sgx82VA6+iq7%)ma&g;^k}MNlr^7()w>;Sfh+fU0jQ z7rbzDypOmK2B(QjdBSbt46$BK$)8Iu{p-sc;zoTl)SE0338^`=J}RL}yUd9frDv!g z?`BysYFVg!Di>13KHJL2i|6`*asB+fuWFMQZ#&FLeioA>s*fKbs~HMfq*2_Y)=y5D zn`*S!=Lh>pp6$~4H{Wbu5UsHy^!cT!!F&6{ge`BezXxW8E28d>Z}C+45xIZ?)#NEL|oX z$^+P&3lv?^0+R%eNjWo!!S5%w3IxT`KlVx%e7u5E&rEo|j5wPYK$p^01QMxG?EM93 zL*+bIC~hNfXkEHt+(weaXZnp`=S-bPmhpno4F~KZ^^FPjy80nR>7qbm{F~_Vqx5Fg z|5#oY5sA$p77V0@YfP@To1lmGs3sOJRz3uN^z?37Rtr6u*umM z#IbL(UmTb)`gjux>?erI{)r)~tGJ;?Vn@l;z@3f{Y(Enxf1 z?kCB13Am|7fWK*J=R!k`q(Ix`q;At5wZVK0qJ=B8a23Rsg)KCv$a~_{>PuNqhxlZ= zF{YY+o``(m4HS0kx+#I}Tw}zixJhtMRAqz6X3S4{$0V*R*$&3H{ra*i*AUL&d7zt5 zV+RIcCZWJg^<(n#GPXzH+jwg?7o&gQwZ?jht}pMpgYGIHWN97~GLf`CUbP6KgdXAI z_Xg(&U#^@~6?tMYX?d^f+9So-D^l1?^LTG_0!*1k07)s9bQ7*lAVe2H(%WpJJ058$ z>%5}yo;a`*y+vPi-Ah{InMfNc6?G7S&sQJ{IJp3o9iKp+{{-+W`Wa<~5YF@bVscsH z+bqNXEKsG!5Lz9EDWx5$J{_JD$=;xxD>J2vaT@{GsW1`jX2DGhmN?hNV35F@^~K2^ zPr}pw6`>xkqGruBv;%cf8(oy4Xl@uLI51Yjqe@kr&qGsNK)Mo!{&!8JgdB7lNnOAK zKOb??mvVT3x4P~P3*ge3dOK66MVr*gPvWrOyzx~$jt?udBw9ciwE}gxgUkCDHyviR z1v>+36`J~Sf$a8KYi()fPcHHfPz{_zaWC8BZR)#zr4gM>EUheT)DT{p>D2yM;FK z(n8r7K=RkBm&rrxC;oY2Y4EU!^b;1 zjm(wjiI4=_5vFhsm{P2@?#Jn7U7^u@Sk>j9nKQ;RLUX&uY;Q5tQ(#GCZ-upHUeSB2 zKFar#Yt~x%8?btKzUJ@IO!=|w7VG7aQq8DY(Jnw&P;nuo!(4(6JnW<9Hj`)vTy(WSR`7i8TEnWCrNWl&GYb>CFYp9wH- zI>_|suRKkKAoa4$R{E1c`U$7(8Dd zcN{z>3-|N?D*-i(gqfWBe`?ughoVs`=QEW&m|@+)?eqmX8{%laWSdq zx0?|mUc;e^d53uzuV^bgFxj@N3|r1jPE3oEyWL49U!G6R%GCi@^k+2o=Wd?-+>{oz ztMehB_F!xp!axp+vR`Cwe!Ac>agI8XE09o1ZrqXOqk^yVF1C?$qtGPfvd=`VX4 zTf(=2r%8}YnEC!_-MqMTN4&GFyJ`SesedcvO*$N#B(Gap+&)yS_|ZuB7DP`@Lsgtd zoyeofplV$$ap}P>?V@7()2!x=V`1zhD)Lz{NDq&y&(73+BC~3V2sejUv3|oX+8|-u znF*iL^aGSHOPqFhv`Jmg+>L`Uie@eouRYbrQx>u-Rd^j4y}O?|lZuqdMSMZ)Grr=b zw|uR62NvI{mo;9QX_S8WP*wPEKuwG*kDWz9L?Wg#N;B}I)_Z_fyEJBRGIOXBRzQHI zF;-2LUgNGhCUdmjZM};=P2qYa~sRNCNLHKtOFfw>fJk2TYTt@`u z(lRtWKyf$KeTo+}-Rtg=zgEum;ua3ElRY6lb3Hi2x395w^G!*fA-DNF*9+FN zWe4qR^GRC2CC`LxK7G*U7VxolL$@L`4k-~PJZ9tFN^oBZ_12c*c-6kv0IO@CDhC|G z<0dyxzM8{H$_MJuZoGc;OB#WG1dD@-t$oTiHf=m)*;rY@G2|(}f7hkTRhqSo)LDIm zL>y*6lEVCztb++63P$LrE%*X?Us3C`niqZdJvX(J-)R?k-;%5Ex5@~o4$6EU+#3T4 zdHCkHEdVUi|1+2IY61ErW6PITEIEeHx%OJdI!Oi zYMJz-K&jd&aM%yGm(Btr;`{Y|%`^Q;5XbkDs)C5~fKAt%AL6w9lP>0jyzxs(W`y0T zw;JYJoBoiL%$0UJAmd`d=9dpC$pLAI?KY2qoI3%z!`n$w0n|4Ew#C~iBLOsYV3BB` z)?z@x=|H`20mT;s%fkY%ofa!G4XnH;QI;H7%^D7@nf)kCoUPpXSXv%%9UW9J8q^Sz zRq->hsi3Y(IjAKp=*GS6M%$n^zslz1pj*R1x3ylk)&|`DYuc`fXaQ{7X*RbHhJHhvD8~ctCV3+g|dX}FDp%;^y62a(}WAi3wh0xRb z3w#U1LLMiFOcsPp)rL&p33)R7W$2=L1U^mPg*{@ozZ(-Ws>~tI%sPW%)1yPxT)t>c zguF}+T`mY+sSSN~Cv>NDmq8cz|$>Fn@8pv}zmn?qb;cu&@uw zVcX^Zy>7`mjhmavhq?v4<{@WXmOFVD6MB~wmli^UdT+m8l>TBx&e$wi+YSr=r%fCb zg#WG$KMdm_F`=Yg$L~EE!5Fq*5~&#=@P+gLOt5f?UC1XSgeEknB9|rN5+2qP4zG(q z+>PLP7=g5F`nM+S{>+rgOnDvhCnN`y145FEVBUHD^*Cz+#R03x8BdMapNSB>8!7ZK zQh09fLna45?iL!8mZZYr7y!nKg#vXbDJtRI{HY!K9yMx7{Z?QbO~ z!$7IX+<&lgE(Iz9{fgZB8fqTZv8$uDJR(~+c_JlRr!ZQ#?z{F}sI*y>IBxGwD)dyq zYw?p&Ko|DlT}LVBD40i<`~l(=%REafHd-&`vU%ZUi@N=Hez_`isAWZ}N(aOn)8c_& zvQ7dqem3*;XR1PXJeD27WJPIy@{Dwv2t6&Xb<(sj!1Cc0_qi(<-u_4k;ZO^J#LGcR z5ky$r;^lyh2{4!h0-w^kg2b}%{sAlPW;!{O9Yr+rZ(S+gyz)Pu-o>Bk|Bw5B?>vlc zj>9mgkkgzcvDpYI%PGoXPLWE^hf+4=ER$oX<`fDMLaEQ3DM~p+Q6oyF5|T=G?R)*M z+wYHfzi+SGK#f1Upr%cqAh6}CgSekH2Kr8vf2_SrVk-;N22OV5qVxEa?J78g?+ zm;F30M=dT(?N<&jj)ndm^?f^BDn8#bzMwYh>Z`4SbMeKAzcqY*A5U8~g8+v2HX?%Gr+2ULTmvDv3u3@=vjdTq}o5-@mIkOcfYr;w!6nW?@8Vr;9ey?e}rqvf-qfMQ>&h^$D)#<(I8 zSl;6|S{MGF6agFwM`^sQFaRFeglxVDu|P51js5Yd7N>+vvghr$GHU_U^MTwq8i@vrI(Ftwg|&=snUd z^HkDxBp7Dw?)z^l?!A5_fi%B|M_+&(BKUC;7I0~+%8V|6c#R}N|K%7LXmM=BlAU35 z{4`PvVv~y+*jJt*&+}M6UIuBe#YZB?H_;|2Dqn)mu(hixL{{Lq448ZgHwj!Awd9<9 z{!eh?-2vk_mJd}|%E;3J>f<^9HIi1G(i22T5)^@s3ZeQ5!w&GCeC6z8<=Z#wH1BWE zW$`)}foT67ii?)UT(DYLFE(xbu8)$d06unr?3noSc5nt{9wjd14^5hpt!sX=<%ky# zQ>Lkj&^CgCs|xo7YFiMw$tFqsTAO6oW13x93vB24ZC>_%&+s!${7a9qRY;GkGYXok z=j^iFYiW&V6^$B9c(#t2yf1eh-p>n-$LVp<5{ZkE8OM&RJV&|*Q=Z|K8vJQz zJC>(~A*lte4marC&7=EjOt}rDNn%*4!BbB%XdfQJ`b75cCeox#X)6Ha;(IaXO@BH! z)2N0D6q4(1Rvy-Nqv-5gE)qlDp9v_-*?QivVi7YNRQss%MW4g_p@J@1a*lcQ+*1Nz z7u1{d;476NnZ~uDs z#t&P;!DfMJJoVx#B;z2lS>QCOH;7j^zqI$@l}llq5M*~A>B`YsRA_UurR=c4MTYtE zb!gn!1@BFokzx)RmV?*2F~4@p*Ch-JFQ*(A;KRc2~DqqBX>`YV<4auSkBJ_Q84ih;BXA|BR z)a^-U;y}lj3>5x6R$*CuID763Ye?vAWe!pumJynK;xvGPgmm{Id9O7PMmj1iDU!4N zgl*4>HFb=ePE)w~2{qRz_mUGC?}gR=4v7cQQryO!0i80d(TESv6Tyb;le0Y{p@T>6 zGe8iS2Vzddu1!ijKs{YA-5f4zlX#Sm2*51cmC&J=h|svrKSPP|b+9RZB2tfd*l91> zgz2sXmXNUhymMdf!17==hd68q@R@Av$;-N7>gMY7_KN``isiEDniy_Q;$(%85-_5J z85iCIdX_p(BB_ZaU9J$Uu5%NsC)xiwTyV9pTAZk1uX*&~o(984`EZ|anCY_B?=^0cheA@rf>q6ekaLRtjenBwkVqLUe|irHna;EFGgfS?LaB%WD{nx*f80uR zhX8w?j2sje6#|y(6qJUQ0s9^|CWBQe* zoR93pwO!?Cvw`$SF_|7rPnRZz-v^~o8klQwV}y2qghE?+Gl?;me#)k+OF`4H%~0Si zJJr!^#&cc6QkIeLWZX(g`6nOTt9rTd9Yp=^KNWF#uZahPA68-oIUj<;lAj<4l ze5kwj)zS>aU^L#YwS2TjMu$k!2>#fyl3F3&pHspoRyG3viK`dhITM)pjf?-J9z2$* zB@wX{LGWiY9;T;*+bX+ZYHvQ%{6d_ zaGLVc;HX&%Bmu+8ZBsI`@-c`O@6Lb37s|aHz5-u6b6QM< zdj3?AC>hFOWhJk?COm@I`%5e3I?>pXN-@amqLHMNAg%)>!vOiI;drQas`sZcgEN$L zmQn2KLx`S6p{XTov~r5<wXVXG*K6qPxNs?BIeC+CdV~+@w zBkVDxz4t6Df8+HlL6K$kw0mE?4ntn%-H4*BX`3)zdX;Q>L-(sdjML96)SqA3Y658o zTUFU$P#jLAocE8!a%2B!4#(vA&O3od`_ETDv=q;JNFuA>3+rzqieZd@+C>HDVS+dzo&lT<1uI~W`?{Qcuus=}u$$`S}-5e=9WRO|D&3SRX?Mnv(K~DW59j zAz@k1|50{f*Hwk7JgNXxMSXtX(S?_C)Z_!>6H_DW2U4VOai>56;D)~Gvu`XpxGZrS z-is+R(uZOWuh`^%v*z^u_L&ptpPQQhVKeZx2?Fg$n~Pgs8g@Ec_JHhf)f9 zvX{CRH6JT2wffvK%$cO zO?m(6@^N*w;;dbpvz=NF=nXW2ij({+rJ;G(1902sEJL#9<3IV~y~Q>oyEfouNmUQ%p5CR+WnF@d2F zP%JJ(BZ>5rJ{%!?D^>?A40pXVZaQxIpn_w{smD?EqcCfBK2O@eFs z(;sTp_!!ra-2D!p^n>YftQ!RVKlr^XysXEuavcZlFUel`N68N)DeWXnQl%|>7Ww!8 zTGB`*#^o}`(|e)9`b=d%BggGzMbS0kDzYaNi{#V5fZRs_ct)1c4>qS!1Of2BS@}nL zR?y8HV=n2t>VRcKpU`T*MK?)sz)E!39=4Ca9j9p1Nuj2F_+W@R&I%e}n>O%_7zN`0 z2OyjtLn008dBjYn-$#U^rsWcm?S`i^O3U*DgZnh7oSUk}ha)Ijo}dGUE6Fx1%iGFQ zk5>j>@Hv|tJ@-DP`ijkLrh)1IAdu!q(v3|?Qp98K-@#<4JPlg#(ZW3m zUg;TkB`97526hi{2}OwXbMy^IqECK|apGRP^{Mn525_;`Rv8TS07FPg#u$j?reK20 zr^53Gk1~7AqLKl>G$R^+{X8gCZg;*Z=mJ;~m!5a)xJD5;#Aly+iZQE+3LpiksO;dx zGrl9IPUXA}7RaedEvS*J7d-w__Tp=`OYjwjWN;H*4m?TLazCv_yh*}+9#p(7WA%4r?Ul5 z7dPeD-s{h|sego}Ufg;A<0Q* zHIeo(k5y;a0Fq@o*_Ay?Vo;vmt9&mJH1_(;aVW)%Q0uDxaqpAtkxZyqoT51$=s^0* zrz(G5U?}v1az}hG-QypkUIbbD|9x>{9}xua=ima8E>sR0j-NVRPHy^~MINW5S#zYD ztwQ7aO6F~AR+AOO05G30WUG1EJRRc6Y@n$p3#4MRU6u=G^$3h~WPc}-gA9I68t%gb zwkVeG<+!(R-5UQ$+%bH4;xwb@y}aF(OTx+wqzDmmuhL#L?gpCX`QAcDda$>J#*q+5 z8Q_=@8X#Hn`c7EWfc8wH>$5obBuaQPFV_YT%MQiUNd^Pgx(?ITNM+~(ut-C|q&{b| zRFz}5phF#%-t5y?*Pi&}wzdcHLzEiuh~u+5Z5efT5e&vZ(fRs1G)DfZkQOSY9E6KX zHYP&wMVwk(@3XO&ijMdHpgz3o8zcGX?m20mjcMi5aBVst~N>&J8}SZ+oPBPgT#r z*SYDh^AUHET3-c}tu^=upYgX)WfXk?* zlgFFG6*r^|Wg?U`*U2?gO8fQyI04TNtWz5L#L&>oMspM@<#2de-607%r*|4~?Z{ z6?q#JN)+|bCe=BLXMJMRdVdh*^rp=(J(~-g2a}_0vo>w>qwInV4^~Cl|5s_(8g=O5 z=AphQho@17ccKozi7Fh6I`U=HvXkQYcheCPO%wV_6N^47+kW(Wl+(w>qXyB=`+qu9 zqFsKqIVtxaKJnAF*ueGlPuoM$$1WJToQrn}f*+`Cw0?wv8%n*U4u`2RU{D zCjB0kKlRE%C;u|{?rhq&8F;;ke(KvFD(6N|HWon*;x_~REsZItt!L#YDEK~|)BWh^ z6q5r`zYBg_xcfZP+I<`P*0I<=2}WPog=k}XPq<^dd&kd6N-Td;>UlcFQz0ehZM)4* zpehCuiZUpt10e>`mXy(R%KaME1~yt-WR!}Ya?0V&>f*!qzo4KALcflQK@dxHXM;W@ z26EDeA~>1km~8w<8XA+oMJLv4C}5Ux0%?mOom5|DQsr%NoeRV#9?FT z`CnTpB^~MSVqIR5b;^xQ8Tg3Ap9ECTKEqh|gRwbpIsu1Y?Jgavj@GpTvNBYTEdcYB zjJd4`B~<^SHpJSxP!ptP6MSNY0#iJ6`A?&t`?^UQJ5g48Ku~b}(JH1f^rs%3QSy+& zeAmPa$8}N4b)BmjkEFr$%zoC>EvOllnv#-s4th0r+pfgq=1o(VgG?1%bcw-FX?Bm} zvH1GW?4y)kZCfJ(5r7Z?u)~9E5Bnr0d$P~{%(-y>#NYMQI>c>4S~ZHQN_7y0$|Nsk zE$F92`}^Vrvg%POOWwot-;xcMBIO#Us7DA!#2(=)rf}fX`%zE5HwS#m4>cDE#;e%{ zI1HZGei)Mx<~L)OiWkF&4N9Xx{(qND$h~vcB&h&fyy;M6xjAmpKXId=TA>uLf@}F!#3dAjx3<~a zjJ$mA-HY~jUpvYII-XC_p!uB@;E(1 zY2DX>hs{3EKrePgPuRBujK_Hiv&RL+SEI{o?>y~#CX})to_!(J0THcYQ&%@k1_XQY zDRr^PVkEq|ZSI`ozetw@-Kb$w)K9kT&mM)JhNcV?s1b4J;n6#fj-knWpzTJZPp|F& zRr~jm>)(j&(Pxs@N2C^x9CQoOVWg8#6Tcacy4E^92C=|sp7JU5FZVuulYWb8Qjq+( z&`gstt~YXFfu<#_Y&fQ`F52?ssPeoJH2Uz<0a1aAqfP?-TiKUBB%&o}s(Hp|dMj}K zp^q34_at*Fw$Jk!T z6^_Ps8zjm~kPZ+w4GH~Z@h}pKn(TP&x8ofv!EHlabK)&@F9!luiG|GX8;)AGE@!fw z2$;M|u^wi-6KW?Gt84^x>3I9nK2|EC{<(wFTTZ{m!RL1OLB{VaKTUjr!zl%6k4R)o zwQP6d1US~FNG?k`XlY=;0qgfjb`SXFv+Ey2eA6Gae*7=g=&81WimNQc9p_WM=6g!3 z3folfn?d^aZoKkf{_X{4O_^~SkKyg|bXt2ZQE8Fx`Fit|OB|jThA(qNa9&*(-|t&|TAPq)1dmrKC(B2~*-y@J{aGzQ9Oj@2h}UE*ESyn3i%y*-E_ zU7z%~wmMWt3BhpQ?MV{Iz6ByR!}~UDZa>})=dtw>eKLpC5pA<}^4X@%+D|m@?4$`O zZ_j=jNqpVCa`-u^&*_j(hZam({a*hQwTG9w)vt)_yoNF&bRse&2+}J~j(vc8kebL~ zaM<(22k8q+PwchDlxR+;S28OSneh_|80x=_<&fGWSo61}V78ug8oX#Y6;HvUU zIWj3QEh!joPc8)KW6}xmoiH_7KI9Gg09*wk$i?ClDq5p0A~qEi%rsApC3aui7*PW~ z3O?k}x~N&#IsR{mPZw2rX{#dVi2#5Hrb9M2uYiCO#B-G|moE|*5jV3MKy1m2dY@m( zCJv(vd@{8Mx0QN{;B6(QHkm!Ir`pFGcCpqAnRLwF>mi`L$2L%`>S%0fi%q@NR|D^B zbja6}MLI9z)jpI*)}El_Ob6r+5j%|piF5TfP&;_U2Yl?JtyN{Hz!U3~kQtCa#{gb_ z_wir;az@w?nb~_9^0Nrp1AbVSd>scCD{ zPFR66*gOFzO~BNaxtS*KdC$%~FmvPPMWA`I3GO|8O|UE?J+v9_Wtx^+nCpZxgW%Vg59C<6m1Hm%8VFi=(Nt{1>sg|p1>GI z^>Zq{`>3XcyVqTe6sk5am+|iI^Srs$gZ&2dCb>><*Vv2LW*-f5!yx9NhoLcgfo?sqZl#(RV5=G^$4V z?U9w1Y{hPpLVAdoC!KY9*PDy=TdR?3x>Nd9=`jh;7_htTvK?j^>N=D^)dKA zQ3t6{H!#Jx$3OnPzXTjs`!o4U*m9c=#Q`Tp-)R&Eaunf8>71QiY->r)?F8_Fo4a&Z zl$HuJ-BCG!&kMGX6;B2Ym~lydKRBkSB!WiW094h=RuC$b4808phc2_v>Ae?B;>r_@ znV<~CbJx%Bq#aNc?@PG6q2TOrGG%XSp7{@zqbpeum^Xkv$0sD=m(^9(nuJzf>xRV9;qc2yU8}DM3nR6o)WwRI8ckTt^@@n^4)=XCU zLYt+qtJdYIJ(LI`+$+)oN$JxSCz7IoDM_V6>ywBwG(D;y3L*1$PaaLAzdBo8HOMi; z9#S7+Q4$rX8~^5w&?nK(9*J*Z8DA9N4Zc)O=@kr)F+^N41u#X6Vjq@5JA0kH*5NQd0{2q$-N1iqc`h+bhJADO6$$MLYh5SqN5vUeFZ&|Rz3v{d zTrO|_o*Wp$#q4GzjVq%ZHcff}ID-%0x#jp!S)&dDX?u}-xSuQN5OvpS z<1e9B#4*!&XK0zwhJxcE%IyG9#QQR?omi;VyV(=Iq?p@k<=VLPFSBIOJX`aihyqRiu3pjO4U-BH^=;J-RTYKYmXmtb6+;V;pFi!x zJ8%8qhNslz(;RnCru+mQz~6dN)X@)v^tlgZUf#@gCU7v5VK#Dtt&6^^0d_^anSst& zP_A0nF+PhGY|!8q^u?9Sp-6j!%+%7{-XaAD z+bWLhnPTL#QF{O&I}K3TjJi%*xdQ9@SNAVS%2=| zTf-bkf7n4SNewx~W|G_+d^#G1)f9;vlQ3oD=RmP4O5e9a387?Y<$GM1y{r=b1lMK? zIV=~DMc_-9?k%_lqkzrOY0&_Sawhn#vR5-{=16k~V~nD{AVpo`6XqzMbV2(im@5^z zTLGp*!EXuH0W?@5kwR+@Tk;iAXMp_Jt|h)mJO|XoBXsZj$_+BW>Hxp`@_O+T495UB zF=Tct#PPu2?q>Sncn?SwR~h^hmU2P{YKVnf*H&LyIEDk1K4^hW*`nj0m5M6L z{|A@kEU-^qcUKg8SM7JBA8id_V0syT98fmNzML#9#}L*YM3&TwekN=-K{=)0Z*GBv z@LbqqVTI3OP^F$jL_Two9xwVuLBFT`|KS(`h#wsl&~nMNA=;)zoVOspj{$Nzx_52? zV@gom;pXGGC{qCP5`swp5K0Vzla~oQ1hi_fl9Ing0{cD(fZ+J#cMjz2=Wj8JFd_#r z*Ca)yC(rdrU~G; z7rM!U+Idf7l$JMHKh1oj64-nUW#-9qGAk_H_b`IM8Rh*~v;IF&W`v65y)dDNYs>eD z@Kh$R==+78kiUeZqC6&^!$JDfb3^r{Vq5-hRwHwpog`bZV`$THN7*S#`ig>~Ou}TIT;SOQ>Kw#*CgC$<3WJ2G z10W*d8#EoPP28VAkNKvvWq;^g@L9rDE=Fq+mP$e@ixn}#C_0KbYKpuWiLwcZ+p8Fy z#qd3_0f>8w)~5OTN2wq)6(g~O`X?rge8i0Xoo6;vS=0>h*{5m=u!~e2nsG;K)Y}3hq#as1tk9r4UQ(28BTxc3IPQYXFbPQ5RARW;W)xU_cLp~3 zWJq7jzZ(jh0O?qPQ=uqwLht%j2ZV3Z8hOljf9@ z>*i6%HADtm;SU#j3&0OgNH&m>o_s2yA_PiDJaeX;@jU@_v6~-YL8@(tFo~}T960jDLvV0I_00RNzxEiUr1+}{^ z8&Xy#kNj|P{AK9;T*7POre3uM2 zRFM^3aGN*4c^9IVK=8|S1t%klo5TU05#1nw4kO5|kSL@c93Q1=HG$Jvpp-^a+?+ux ziYW2_fjKE6ZWPfNUs*{{lhz{_+dRj9dY_XFigXK#Eeg6Y9h4Yjbtz0XWLh6aLaq2x zj{Ev3-gotp06$|Q$Q2UCDW`HIPZ?29jYZlTED29D?J3SeTNToO2o^@vfCK%qaV*j8 z9!b8_yu*lc!#JeY_++55qckFT!|mL!qH}+z&+#O~e3uYC73l4s`v23}NFIYR0)M+& zE-;a2+UW++@Rn)GBW#5jw%w!q_AoZ&505MJxX0IE>5KstNn4P<$5goI3YT2KA7_R8 zxSI3bHeX^4PP>JJkHy9o$6k09nbSKtU&VTCT}BoQ4;ha2?c%v=Fag6v5aL)g^yET2V+bN$$c zzr}?P(-lrO+w&MmaW-;g0ZNF253m)|NkZZzbdw?_lO*pQhV>+Yb{Q68aZDJSDb#WC zRQ;u7_w=-q^sJfmzzu{1kAQtrf!}3_42yx)`S4;zoF~KQJ;?T-k?a#+>~YDHft(8l zDWc7$^s2bbJDqk9eHEH~nRi@JO(6Rb@$3xi!>O}{KGH@09!16Zg=KUFEN&Z@lM|DR|O8^RqWvuie=2xcTeaP1U6vyx-UUdax0t>{rrkbZN2B@d~NZ zifht*^GCky@k+JQN^9v#-9KrX$E!?At1@s^mS!jSAFn=GS{?t(;;#`kgmy7@2KH;? z0L6eB(~R&iv%W=wpNYoC{FYL$C_41IHc_T7e#;`um}+6*8Q4)bzd<#VqS~|?=E+zm zkpm4>YMmo%BL#}{T}p+-5pTm##T8-a6~P6k!fvGCP3fihevCR-AXkw9iE6w_L&CJz zWtPO7MwDj%bZXJjd#gc6p!onpsG1p8&Jj>ik)X3d7+qg=q@BKgkhcRb*ISlu$)wjRly+flOSHL5SWNp=Sls2BNGRzUQ zt-f&gZ>g0GL+FO0v=teqMVEySH7i%+Wk@1V$PXKZ4eP4A6qm%WsuX?5lOQe|IRg#G zZ#w!@y0lf=bdw_8U{^;#4`3f3KkTyhF|;wD+MN|Yn7gTT{(nLBX&Bqqpud;r3s)<* z>)Nv8$JKW>?fG%_@2Nxkj2(vB9G)8&JK`8l0+u|HY@f^A?dP3*e|c0zA2(_}e%I)Pu$LS5z)-9w5Nt$oaHFJ{Q!?j*JU`OJr8srD1ryq)C-$m^^okhdoZIKF!{3C3q9IIw*D;;h;v&O&#~|3$u$RMn6*)Lcoa7#l$qRtHLXBm4Zj)=744GdRuWdMX+ z_FljEZlp&7Pe)l=x8A(XMa$pSwUR04fXz9=FBg=Y$S@fWWQ%*`Dri}oBOJ4-aBoN9 zaRo|?4Js!*s;LCc(bde^e6*)EwpT_0(wFF;|0AIP^{ZC+lc+3tIUsOThAITRE` ztQ03;_ui_Wy(uShMG#W%EAaHb+w9*y9(NPNr=SD8B>s87=10dfX zd3lq*YcRfhFd=o!ng4pfExerr*sgQ1x0XRr9ZUZRrbe~jpC6ahwtB|C(yqlkdX?y< zZgXSfF7@Ria8OHO<8tL1n)e3f`!}56Z+OQ389-1ca`aZ;SwPuaa{_Y6vnsy$84?(R% z!R=M0<1tX=Y%y7tR$&^wzIpA+6?@ts6!ZHSnbE>Kr29AEL_MJfeBM`lN2u>=-O+0M zYqz_%f|_m=1iS8b6|GCvlrSKzlN)G{*2GvC!eXTJ$8ZFI->rfZihDFspK*pM6$(c1 zpmObpR?KpnAmF?l6qEdVzp_SiLDeAW*=KCu%5nsKMImI0r*2wZtOO^XEztcS6HuubGfM@+u4g~4*>bF1e-Wz$ZwYSAfN(p+z`Z?_x`?cLR^Rjl#p*JdfII2BJ0{nnxyVZpA-dQIXdkjBd1lVo&MCU?U z8?U~R+fh!jKi5zteheJk;%IO&s{N|FZhWMP>duUnjR$zR(P=*R<0Db8n1um1`wKsR zzM84KL&f>k|F`+`iwb$qn$Z2md=EkRZ@R3c?xsJ+T%7iI{M;Spj-v)(>QBRWCLhcE zPq|G9&wE)$pyk=D?rz`@(z7|wPXWzIdJr^ttvmC+k>^oMCDRn^$2G%BuOAOAq z@vG;RXgLT+d!+X|*^|G6*hb^zdl-rdzjEzugXNTP$qLl*szmlM;n$n=RzDSjDRNB# zx|wQI)P_YDFq!CzAxbB`Ced_+u-6c&hUDDBo;;=SoJ)pOFVw&jl9`r&-dg@yV7k~Q z0~K+$1-s$>0YsLN$723XLvURhqgD)UNB+0;gQe5YA-FCfrGyu)B_7fFxWRXnrJ&NZ z^h_6#&bO9YSf<`CWq&NSZ#!y0(+70ul4&dZtob$zv+JMy`-D7fGu$@zRR0w`k6pCE z9wGu^?-i9zDGZdAxsgmt&iej$mY3S|F8;jZwfF}0TmCo80U){Qn!cwD7uqM!v}Csc zz`dD|7)rmEO2^J3rGW`(g`~uypz`g=eH`#N1PadgFinGo4Mp^?;QlUCSZ)Gv&zA&; z?M0Or2iw!4Hp+NNwbkj7XEFC%qt~(pO#jgG+Zr3so)daP`%olm&)?y%5qd%8mCqk9 zY(W3bfEG|{(0&0n!l-UcEl3!V4FIdg{Z(ZJC}6GQzFj#QC1i z6nB$PN=LVnLGJ&!Ish@}q6!E^n@N#Vg90L>Q!a36I2cD`i78HHF6x=rDuUh)~HsIyT>K4AvytKT)2V&y{b*z3Orz$W+KoC0T5v4T|tFE5z)t{_+ z{=fY`QCCG9YUiYqM@rjsmXefSPw~gDnn{W_tVR?@(}aov5m^o@vqs3SrC>~D$Wq<5 zQTip>6~?6jQtn3M_lws~u_QXS2W%mbcn}k~gvT{5qo%KxWl!uq@%stBzP`xW4|OR? z>FmB)JNxtN`AH|Q+ysa9SgPw4J(4gSb;goho30i%nqCS0G~R0mqaOu1C_d+Ro|fER zjyDA#Q4Kk1a4360tT6M4uFmC8MQYl{T6djm;TdqCBpgQ07R8it0GWNwUdde3`r9q1 zorTvYS9U2F)JmFbo^h(^Ih6}<-VA5-JXqk}19RedjCISM@f+%l5a`c|VWzN^@c(2- zPx6oY7=dT-X{)U~oDE)mElFlKS@yqg=`DCpx}j3E{>mjNd1#t&gI zJ4X3=7zDlal{qD|Bzu7i3iFXYp=17DTB5%(RKY3r^67xi+MS_r9w_{ZsmYTj$t`^@ zzeM#$=7G#?+>kQ;i&ViMg<<%J?9iP&16IfIf}5(s!hU zTIh|>Ri}G4C0f)&CwA9;s-hg;aYU3zB-FC)i4UbM$zn7mxx@Q8Y`1 z4apLkky7eh^w~=nSGyek8ou)eGKL2Q2rT3!m6Nh}F}+9Zf4!VIwYy8~>3&5#%Mzbt zf?kiK%P^2*&0gIbm?uz+ddbK;Tj<6Zxjz98*R5j@;dP(uPytwdQs-lZ{W9cC z@3b(IE`VIqHqQqas;TqrYO$Ln&?80Vzxii&orS)po`oyMz50PMzK@;5fKmYg6iK+K z9jiMdTlN#Px)}R+0J}*CrH`W}X>i#dwOruD?PV(mClP0L;T`Vr=0J*EU6_m>#djMs zLIOGhJtOW3+XjSRT=%@X9`Nd(5RxWPT;N5h^^Yw{Q;m(Vzn>)A5;47nzD7SF`vNWD zk72Mhc^uhGn?7F)BX6|(n5Qw5jSyJw*#;ZkTSw_llFY)kV*=Yzx3TH6WE8+4aRZ_u zy}IQo>hC9PcwAv|jLg3^UkP$dYe0iCf^^priGJwJwY&I8=_f3n#W#5;~s*F;) zdX>NVBJkRhU8ac{slOteYO;?RX`yS zV#7@HSeP}THM)=l3-ljXcz7JqxCZ}${2#yWU%D8?gQama;V_dWBLHgVh`b@e8(BDZ zhwvG4;?=DyR`sG^>x_0jGOz>(O9_y=sW1vaOmI;`C}RQr-FTTgfbgLn>s<7q;#!vwKx>8KK$@Sm91T)>Ni;!V>9Xw7H@ z939q-T5lFYF-WWT1W+`A*8obF3whj^@{EXh4WLsoAc0@#S_Y6x5`IQQjEB4Y8%J9( zAi+`O)QpnM4AK_{;2(x+D6ut}N#SA8p)AxUS4cSQghABh5gP0z11X6?^O}Xt$Il(# zMn7k#@;D-aYscTP!Rd62`%7$B4R!~B+;11|_3pH;e?@Yk=|s^m$XbveuCjT&Dt(%|wU8Z0Hyc31nMa z=qaGQqz`|_MIGY;#Q~XVOT`S0lHg6SDR*yKy}Zm1-$GKcxj}JseDMqzfQ5?$5o6Sb zqW;d_M3^am9u{P+5stA5k2oOpx)|8!o6l`+HhYCz!eE=+0-8o4mM$|jqa#kRS3O^; zaXdXB}<@&HTes%Me~414Oouhg^6 zZm$*8tA!WT^&nADm^i}*-h-lW0g*76)NO{_DZA^PGLc+}2oXGJz_gaE#&V#eTpz_g z5H<`hXN%I~05~H278A|jfOse(cz=HQ@{ABb3+>B?-unzG3a4)p8$Sj*%=QWDavQ=3 znjN2n{YfAZRvjKI^vND{j3k_m0lhL176Fiw1xoMj8#U+-yyk0onn3wLgjs6xUj|Zs z{KT&h%7k%1o`(F#5jnyI5oz#p0KB_}jsW(!vQ^#?gmpL3vm@9y_1I4|xa9bW+_eL5 zxKQz@0vDQZ>~NdKH4&@LYMb@g*BFQh9Xih{Ugkh?7>GYh;J#!Vj{}Wg)|$j=h*WO+9JdiqM@F-B|I(3o27t#P4&1ASXEo1mpjix{ zT_(aN4Z^#GLD+WOc@$#4)Qi+0Vg^3@xCOSqv)7-dLq!PS!sh$3EogTxpi9HNv~Qe# zf(>VYbOG4ImMpK&Sx4`*Ih47StzkxiF7a`NGs}QNiL-6igLAhvBMBHimVNWyJ8id{ zU!|5=FhF{n=(B(ChwtxLntC9z_Ta*0Lj(x^KnQ>3NwL+THooEJ)`LgZcDLVZ0)Q*@ z!qy`_iO25`JzjYuI`{CgT+5l&zmL~s|63ROFYt7{7XVXTcwA-rpJ%>+c(ePC?Ef+c z^}NSrf8ehe``{=?WCKTNhXc*7|0CNY?%5-m(DO4Z@HGeUkQM#&rA7)Rx@(fE=-Ioc zyq$ot2HXBb|zkIr&r&+&oIGRIw3HeNSB{W(*KZUw5lF|tk254|L#PuO+vrz zXg#&N-(jx*$WA{EKj36OaILuCEn&dD+{~qWz;kZEduM=-AN2F=_wXD%nJ`G*HyF}A zcxG-ebZ0QE`*E=OP*iq*c*0Oz`Ox|9p@f~m=$#=(H|L`Hu*wVJd7I(%2BTE&-Hf^6 zE1n!Ce&lL*z2i>#>20&3)$;Lp(Gi9adO_&xZzJMb>$go*;99dJ7kXpVD2Q8)$M(HB zWWGd`_3=-`>5D$Y++io_`9q(sUg*eXLVVhfJmd!=(?(`-J&!OT&IjDkcuy{VjF)dd zHtBGxuzREgb^Tg`XyCXi9Q34~i}uP--IL;M>36-JBf!6*1QMQI`QhB&g?(IJf3N(s zXP>Y*kfQnnY(p2$8t|?)d_E^Ms-`&lO&oG#%V^|GkIC!N941^}X6&Wsn7G%Ay2!EO z9iwaAV|x~$9=%6A>DPt%ww}#$&*r3D67cF1u8;##P#iA~arL2~O&M_0u&0VI&`3g* zjIRM`tZ)6$_#WT!uK}HRTgN@kp;+w~SI)dR@^4a)%;^Lmk0dVhIOq#&&3jo?@mdOD z4Y}AoR>7U3k74WCVDX2Dcgn(sZ-5{_jO?S4k83bVI;j5?#=UW>VojJQNjmZG{@9s$ zAXF~3o(mdbQ}!~1R1!o;S4Bvbsuz17eVU zFi$`2C$1qcb3yf<$9cpl*LkK_m`|A=ScCyFM#>ifaFinP83!tY0Ue`ZueK-8ae!C1 z4=@-Q!544tCSV~)JsKFGr<^+)<325>2j1mjgkE6W`rlwNunTV@^w?;VG3&?r~PYd;9o{fd{d_$fDapoB{4wabb(3C z9gQ{S#Pz2lEbv<4fk!7~Yc8T_7?3yvZlp3=L~5ipALH%Nk)3`EKazoeQ~dv#zO)EJ zB1Og}-rVZ1Vp8w?v$Iv7GRHsP!{Wa!5OkhnO`q zlSTeDyCEg-!WS$j0QsZN@~vfte5Q#bMaPCDyuOyWvQ%hW_3eGnw+Fp@o4}f@e=ue2 zyS%WsGC#f&#To(D92lK-hpe8ely&DNpI@&jeNRy?>HT#E@CwUUs_w}q^3UwG=QDw9 z0=k0(=r#-e)Tu5E&{9LX^x%$En31F#Yxz{~%Z~4BcQTcBmg&*L( ziBrC__q4MGjs98~jS^xfno+d1_o|T_YWY?J;rJ0f0xW_cps)PYPnpr2kymIg#``X* zU|0u6&x9KG`x_k=`wkGl|NM5C_uv*2sqii0@zB-mgcytMQ+Up)k{6-47L83zg~eyP zzU|6T%xDc(@gJuDt!lV%dC6G}b?M{QAeON9qRRU>Jp4D0@ww@`2o&>7<^`HSgS~SA z?sThGI?fVl@jKkx2bV^Oz+a1(z_1H8_1_8p54vv^D`JXT=+aAN;| zV&?l&A<+!L&lNFNmD5&*{rG=)x)X0G|37a0*R00a#y<8Ld)Bd!jLg_Wc2X&0UqT3} zPh}RyWZy%ou~fE1AtcQ(AzGxA`l`l~B$X_slDX&po!`0tf;s1UpL1PvUhn7Y@!UkM za8oDXZ3|s$JtUX(ESKm{z_YNmSjT_-V#?o+HDzjAE2-nKxl7t63ZQbP?Pz=)dc~z< zN`w~VyBOAykFh%oy$NdClJLx>X|$s>g(%Z@fk1B>VZ&I8!tg+PLWu2rp51BKJuZg1 zpuzD4YOSRYO`;$vZK#;Puf4LaW(EaIW$k&v8>_YuPN~{3j%cPC^LDSWHIdi3rW@gO>F`$EtD8q3FjS8GjDOpm@L?q32s`op{d0V{YVdZ_ z{DbVBR`1~7DN9c-+vTVpWf!VUQ9q3&Ub-p`_QXH`doh>Y^NKLO`JXfUVBAJH|FQ;K z_-2l&+2ytEi|6m}W+o~&0p2hXykyb9??qjv-JjKAuYnWV>O9FVei9bANb_$}$8OtK z?}u3hHs}my;uXHDsqWhu1snNm{HV?(80ac&^?dne(}iQ@DoLsX8uCvG8e>8RyK|Up zw0x8(8t9s1G@%WCe}Y}N2d}GPqrnhk8bG3`Jwdz`0(3=k^D)Tlt8Fa(=VT1b%8!jH zqm4;|x-*k-(3|Sf_Ul)18v7HZf$`ryPq1&!N_$!hufPHE_c9>k6dV~qP4hs!TLt~5 zrXIQvG<9>a{$Za5sYusyT1?<2hpbw5hA<@v`YxXp3M@yewe9x7sAZl9(gM_5J;ZWM zy4=jhuzvVT*6pWZ)6+CwaStW|;N`N;qsei8G=4gWTys5XG8gm=bS@eex8?(*SWl+Y>8jU zJXIP}^r@6wiL{y2Y$j@RQMOtqMul8ka2jyyJOJNBm zV&_foLQ%9^=;O@g+<+21E>SGU?`eNsixt99aj#2S2T6fzT#i>$ydGmpjZC~$10zMFMKYXbr~TR+qMds;c;E-R=%g9L>a zepO2UaoIw|aQRvh>uu&p2mk8vJ6g;mb9~Un-ZOL3&Kbt(wU^|;Kd#>`=jNR(b+~dh z-%5J2)+p_tRQ`y0FG)OolHOZVm8v(Hdon&;5{Uw!x+UVLXX+tfJjh@QROquYgNb`KsfWE)(CqkJ=e!SJH+<7EhvZ)QD=QYRy1}KhQK44E=#Ka z-U*jDk~$O=(N$kvjF3Fnrl78fd)T8DuI-(4jD(&8Mt&!l!%W2DCfQK6vHePjHF{&* zCp^uO2I~GJBx5Q~8b9h~%E$ZZgkBWB+jL#+Euf7H#|b6$eky|sUxR|OD?NKXF9s?~ z8Ot}+*w$sM;VDC=f);noZ!&tl*kx@%_S*b8J=&w-_jb1%EvHw(pbGr{)?)!E_idyu zBvjOA_qiDK2%=@DH zBO+=+nyyGeE&W~;-?64yLFcfgu<=BnROM~L`}^8K#YoF6>=@yIR9e5^m7g+XQoOhx z?YY2417-L0GElj0P!Jj-V>)SX*M*@dNpX}87n5*Tk^xrwbSpwh-6ji@m8xtKy6XH)F~G1PgM;_0+Y^$Qp=l7ZYeE%u}hkxMr_g@i)NfnTQFj==7Nht zO{Kb#Ueohz06xfSmFCL5?t3LmAW%4FKgX_)?E9%uA|?SUzHaWh87`qm&QVq*_f!`r zsQKw5{)Y^s+Hca;H1!s(6us-5r6@v7HcY352spPt0XNS$>kd_2wH_J1Sw1^;;1EbS zrFa3!Z-`Sf=bMPZ*`bP0+4j)J+j)rP4K))calgXeM%rXJbRV8!0R>SqJrl1R+>bOG z{_onk0Sufy>1i$8PPhULC*}%x6++GfFqIu7FXe~Mo-T*r`$Uv(S2V<~8Xk9i1Jv;Rvz0BOmMdR;|sUptT$3QCU@i`K~=+-4JdCDF0Z-SKRM?; zm|0F2Ml(5RQ_}st`E?&pHjUY>fdsplWauIOC@?Bs&9))0U3{c@XetL{$DMmz9iER+ z24L&!&R5Q)S70XfU&h7{2zVY*3bDj_Ft9hQYm_=0`COPTHyu-b(<*C{3oZmUElApSB zCUg}sa_HWJOuEUb3h?L&+vQXcxS5#?;*Mz(PIgAdD; zeZ7nmV}J?X?gO6cL}bKMgtqQs1;A;ey2SQ9wj5LsQB3_%3_?skKz4DIQhWE;i`mtP zMI`~lYz{`#0`9@Kj*-JU4r%%iY2}N_Z;ByYh1&k)pce~7DMGdxb(=@*{;$L(a2Av7 zMvTCo$vVXIk;x+C!n%Mjl+Y{PZn|K>+zC%V3F&&$@PLhe2I22=@syTjAl2i ze^QRX<&qctYz*9c65{N^7svK8;pzP}2QOJY#)-b8^>c z+skpaA(wL^{Hk+}1*XK}%$?rL$ZX>jF}i<2R=JqMAr!r?*p!`p!N&D}Opv=|RlY}o zGpR;=9S*OeC*p2rlJ-+ckA`Z+WGR+3B9t~!aH0cHb%h0QgC)?9-(ZB`l+jDd;3zWV zC>{bJ_D}QNS^fony?b``$2Ci@Wo5W^k=R3K7eP;$2SUm^3!i+tgSH#eVr@ULoz z-n|uEeYRFi2amt12kkN_>eoc{F5Zezfy3kvok0*AmF{=^guTfqvJj95uPyQV_aOKRCYUY!d zy8Ow18}#cQ1=yJUp-j;B5MVzP9^ONc?2&|k8XzwEzl#bCER?!HD>LBD8cK{-5R^nTLM79Tb%}0W*K%+c|7eANLGGO{sf7J?aXN*PI z#p!Flimyrg1(rgk_M)PPn;8!rOi>RgQwuctW@#~nk!7A z7|wj@jpjk`#sTM9Ij>WCwt^aH#gHq_v_4Xv;(edY1|ch=W#^9mnU=~#JVZ1J(5}*^ zvEbTF;3YOE>9&$?M(#>y);OK^gb9IKd1~Ecp%YFo1G+>sBStA4C<4nz2X%5-iUJ7%l-*GA@P|f zzrf0_75;7sOi?$TGeDLkrvFITcqs0kJf-r%mp4~s`TL+vFf}ruwgx9v?K5B*UQ>BH zN6n(=QjG9I=f-AgdogsU851fvFS{~PVB)1!6fm=kHbKd!2k+DS35}D(PP1Q%iF0u; zqEYN{x>4{9WHW~1lEJXoeLCMZJF(?P<3TMe7!gVIlQC_k8I0&A+HGOqU6v54`1#3V z2#S)ENeS++nay0Ibc#+**}i*eq4Z<2%{Bp`Xdt#J)C987&1PCgF}$Yl(zVX&2YQgD zSt0s=@ZcDV?e^4a1w3R8SdEx4M%+wY>tWOi?>~bw0zh~z06hco#7F>j_?Z8o4+%GK z|A5W^$;s%TNM1w9Wyp7_JVR!T)t+IUfXg~? zd5_l}=b&Im}@L&teJ3j*#0XO63C@6Ax$SG?{NJW)s6-B&@+?T{RPr zdX>i;IO<|`n!t8G^9khnOs0YsES$Dx>BtK+_C)Z}?@mrCc2OSRGWn2+`Vfuz08c8} z%xE)AQ|eWKLwh}TW`#2-P@$Q}CMd*l-E2hFjMS2-=nV8Y1qx6O(I(%FB?HYEI5sL& zo-ud1EJu) zQwVr3Ei#CK?rrv9Qi3vaLYoc|JZ6hMXNAip^$Qhf!9BFGcbNN16|aucSQ6JuJS`8u ztN0z9zLKN6H`d&(xS~3i#`|EY4p7{Mz`7H^FcgVMS6UL?xMqr$M0+6hp}Oi>CJ(&2 zNHt^d7p{4_#wK0rbJyQ2kb>~Jo(`SCA&itotdhoa`;RT%j5 zvBu}R1+`%L?5M|g_1e!IK&GdBvGRv3tdMSLoKh9MfElhARh4 z%fHr?NQxvwuI%>#18+08;Z6x3w$@gL6fa4Xc?QY!Y#P`qn#bGL^Z4U+#BdyRZaX{ z8hSNtIq!k@4N?efGrdo+ zGn&4DzSk9B$O#m?z@SU&BAz7=)6sd^Ky1mYWZ}z1#UJ8py2b0gmioI>8@h;X;^(_v z3Oh3{d;|)FEtaw_zH&@L%eV%vuwr%Cw}GLA1ob+cdH*W+y?&Hu7xSHQg3;Z|gs);S zaK?I-s=~i>C8GOp{#Yb+VHzd(NLn<;eg0E#x?Kb)6kF=NZ*tBvLfpS}w6t2_TCzc; z8PSK@h!MC~6%!_vt}T@=qFkIO-^;qa412a;MjUUiZq44OkkB;)M|n$Trt%?}$O3}P zGxbwNnD1XH@m^oM6F{d^M2Z;)y$UQ9p8QmuElu%_hQ% z<2KfEB4z=>7P9`Qr2`I$i8vq)Fc%+d$~hTlAiTspe&<275Tb~JRB$ClUhZfvtPI1X zw{$q2_*F1UNj1Lc^;Gppr?Py}ve0xX5LfP!T;}@dhswp%H`|DXKhVV`>m_@t%RcL$ zJFajgN1@s$w!W|W+-&ugN55%+V%;HyPuXz>A%@F_?;H1hGrmjtbdB%paO0h6Cfte# z3d~9C4z`+i8?#hePdWd9 zsG&ikL8;}CEEy&cUA!6e$Nx*{o_oyId)8tJQnN+Rq5urz3Xl|6bHrahjNp~s-(F-& z*{WtM-kekX?fUw1W;KnMV0rxy4gd3~m*G9Im?oO>xdwgca^EN*|nkgg#;JAd;#h0*t|&c|iK@og-NI8y~Sa{0{fV$9s1= zO{}kO9#RV*3^G828c$zkiSBShHbE&2aPB~2Q|6EmB7xtrz0Ln+ECtZl^ho=$VD@!^ zn~OGg4SmYV;ybgOm!D&-fg7SDVD=NTiYWZv?;j>$2tYNS^!JEOQlJFqdav3J-%WX^$J3wb2pcUm)DPr9WDJ5>87#KJ zY;Ve^shh`t8NDAk^Q-Xd$}eMH<0FLTf6kbfqqeHP*Zz(+c-RdO?(T_NMc;N2iQE@R z^)a~uv*v3SY2&J;sR?Rg8oP+015Q(dk?5{q0%}FyK@iq6zIBj-d&RzWk~={4xt_IX zgM~LN#}3HkmpD3^1wyGla>;CEj81XT&S|E6GoqZV`R(;9k!(0lc)F;<6vLdm`+b4A@LsN_pFZJ_X+4v8P zP9{Iz{&|2#@LUNN5wsu*v=58{*8D1Fn5%}uB1BHDfEw7a(8oL32xW#lv^Z>MXuA@=@96$&Hg`0pj+$*ld0y$_1HbzD>@OMmiRg z5VkABxb-neiR0N_vjYK7cN_F??YD3%-LKocc>K0Zzi#5Si%~0*b&QnUCLdR=Zht>7 z1(|7cei9{){O`|SO%N_QmG2g={V#hCo?5s*YxJsGb=Ig zSZ`~wHMX$PZkqh&q?7wX5mIkky+BDU-#`X@!4$&A@oP^ycktPeQPcI+ApplG{s3Ej zVK2|w;k}b`E!zn(lUWrnrQ)naG2ZTZGQIT&_DJHkBorr(n|a6=Dw>Nyk~|hf!7 z7hIYNDNn7{e>oH(eD^B^8g0VI1fvV>|_R|o$YCVAaEfW1N$L8C@6 z;mntIn5_~?(NKj6fX~3HqhNFj74pKy37T)A54d_MeK;e7(l-?n5^a$Fi$mz60Au<9 z@xR%P_jW&j(9nQ`Ql~4;BK`Hf53pOuZn#ai>?XrB&``8qO})kLoT%78hyORxI{O@R zr}f=enyfIgc&w!Bj>@;nfZ}|#CYa*dpw(m{1V;=hjxtHe!6riob>EWwwlP`vl+wU| z3nf+Nudl}lJDX^)XdE~jCgY=itB8kzPmmwld88RP?<~k5a8Qd{pPcXe+iG5Uj1NEd z1<{ks1eY8{%i%pwlS}<-UlVi!$9>=;8Ae{4#Soj&;@nJ4dbXgES{dU|bB4yd@_W@q zm;WjX1+yNAyMi#ULQ!XTDnJ@cN2i}AZ^ny%z z%V{8|WJah8j~;xM+nzCfyy+F^aM3pY)_*Ev+TGK_;*D&fYiyF^5*h03P3e|>Rf#z{ z5MIPJ4emEEE#A1~erb7WC=iPyOVp~juF@cqcn3SreB)C7|3BrMY>vKAv7wJ#jxX{c@29B0Q`KxCy(vjtZJFBtCI{iF73Edd|ML3o z7`b$=$SsK+dt(G?f$9(~s{JzEGni%(ZhJg<#w;-z~g*f8&X);}I5_$>tue=_m+)@X)}qmjPU#%#Sr2n45ZK#nmuMru-nbNNx1E z41|6`r)IrczJec9dy<&qTJ!pS5^&x^cD>^227hr+^y$IBX92nvT?jUu-T6AKQo46< zyAhsb&BXwQwZpJy>G-KKBV3i){m-76dtWvfZ8iJdU-5J4;#>jIX|ngoNj`vaeuf7-ezokF0dB1V~c-!AgGN5P990E$f#cQEsT}EWy zw{JfjKKi{dldz~^{QHsL;QFmf>yFn$7oxZ8zZ@r72KQhgptj-Vd^_8fM`6FG?+k9W zOZ3@<8UKCrV(@3r1KV#WPyBtoG5DG(SRUxR&~bYQl>8~^nf2k4KOb)l{(73ZZ?oY+ z^gF)?e_q`f+`J!`*9aY7~_;>7I^A{qIPzf445c}_**9{kJ8?8h$pJQ4pVqBGi& zX0`lBA|;8n@QL6e?+w7pYb_+D47RR@aMfJ>oyaf2;siN4Zem5$BB^!=CZ3NG0kcg&*@E?3XjRbzJiM+rF z%$GwfSlov}>|r27jg|dj`vOcw_o^xd9F$75jNwd1LjKpMCg*(VMcVL%$7<`FdH>$L z-Q$h4o)p>pX4(`H)S!TIt(pr=!ZzS|A+unBMKUa>N$fld@n%^F&uRaIDF;GjxB$pa zlpxUa^4Ts#Dgp;F9Ev8-8?{07+2j|$CB=S^9Q9uyUGDqc98|tl9aH)0N z$*T{t=2}7EYxuXQR8V7QDA^!fxlsL}BS-DJBzY~=;-NY@M&nxK&=$Zp%3|H$fe7#_ zQ5Gw(90F`pUCxGOA9#hJAmWZhB$p;0rC|o2(-x~Uh=O&&h=48y z?7AqWuHk$|b?hB2>l&c3>YyyJ5}h5bYC&*3Ae}WXLbP{tB+A!T64)HZWey7S%!EjS zdIO5w{pb0SG>kV9Y9NMtc}Nri24>an;iwQtwrmzsIhCs4NP+Muk^dn2jYK9@QplSw zfdd$`5uV>7);m~4Z;GvI1y=ChdM;~?AsVN?I-`R+KXkU5P}$1jmUF@2%2=Ig$oZ<8gcGzNV2)9bmWt`lgKMy*x-uSmS1niYO zdIe;i&tdE@q3)%}ZACgc>QV*drz!DkIqmq+QeMingU2``=8u%Uqn#+%Jl7Xf<|#)l z_jvAWCM_>Hz#rFNxM~#Dc+vC&H=qbxK5QC4=EWMba|B5P!zShm3f2^@F$Z%paa6FO z95bxVYP6a9tg)9ObDvmth<3^p0MB9$8@{;!lurcfg7 zq1+)G(c$BVwZL4WN<7Vy2e~>zyZUF++;qt;C);$7@ez+XB!ne z80Ckl24=MmwY2RHhalD02Y}k~J(pL+g?MZe4+j;1(qy=FNbh*<(`LQ`x7r8;kEdA> z?d#BA5M-+C6Dpz!yNRK=JoOFXgex7g*WQ6>hlSc)Cyja=j^l#?!mr zf9M#AgVt(U$LZZTqZeqHmQ;3q97oj_*xVMpH;wfuiSh1-rSLLgG*U0ASw4kaNBI~-=1l~x&P7WI`u8eC_Ez!?>q7oXe z7{18hg0=pQ{X)f4N-Vja$hR~~+NG4R$_ z)C;Z(1Yj!NHEP^ZaMT7Ul>5K~{>y1UvU@=iV*TuQyHpZk>9t4_S-z1?B`#EG#}<;I z%DU>IAYuWTf>n0a!j0(+D*x@j)p78i=MAv~!9jRGbj=vABxT=-VIKI42xKUI{-6RNwpu``aO4WN$`d$;R!9+5g3}xmKQ#xqKtSXC#C4^ zem-D6ps_8Tk!$4-lUCvaf1%=|0e2L$e!i#4x-a?pdpX9tle*SKl#t5G)g&BMQrYCy z`!On;UdUSj7uGBB)l+s`ZrW^v6l)!z29Vk7Y;=bMbWD|Cvpvq zoZuw?d*jSPYJMp!gqnsZ9Ct$e7#|EyO*sy2YIRXgB6xQ6or79C+}i7PtMb?_n+JD} zdCcz91c8Yh?X$N&ozJ?Ruh?HpGq-7QVSVX4ouz#+>)(p|?_Ij24EI7LQ!NQwc8%gd zfSKuJ6Ys9Hyj}2GT=3qsrwdD3F@dD_MKrFICM@#kE_c{I%|$O&3;& zGE!2J53O{(0puLcCX|C=ID|4mH;@hKW`?hix#f|AoNBvBsj11PB97lTUo6S{Sy?=k z%ktwx{9o4`$l7%MPXyxX)9OoUy}(1H5Vg9P3P)gynL4^HGyd+W0ah@dgIShDTse+n zd#2k>G;5&5!H{0$>7MFk)pg9!DL(Y;UvI6}Vu=AgO9%pHlw5>)+O2YGVL>Q~c+^@P_LidpY)j+?#J*s-PSlD7Xd z`9Q2M`rUb)c>I?Dgn1AhwEu{?4?ld5 zO(v9Z)#}VMr!g@HWoTOMqM3Uy)ME^K;1Y8rdCkrMqRgeZN?Y7d<bgX4#;W=BKmA zN01atJ^%ewrcRO*ZYl88rVB*URzSYXthfXvW!*?sox2-yS1)aRlh}}Faw7biVvTlv04ptzXUYMC)F=^8%KwGF3-n87?PIhd7mWR+sNk^cm7OOi?A5aE_ zi*hG4#-ntCUD8!=?zlt@+}m}qdz{?&w_}Lk-GR!JaXRbkf6B>`b5b>>-#8`sL!Ynr zivo6UA=xs2GMer=9Ir#FJJG)?Mw5UVVH(p{#fH!kU^MrN7NXxqH!)#U6_26BPP`YG z*ox4Ny+Yf4R%az{d~b1&I_ZKmYqjYw``7=U81BQamc=#v%A-3 z@%BOPom=P6c-5LcrdqNcq_Ccw9z}*uQs-WCL;eoPYDwnd?D6ta;@ejJ)-SZ%AT;Fm z@5X0;x{4YFiN&B{Z>cadTR-yyFIttLYa&&aq7O*%KJxr?lC8U?mc)|IWgC5>{k3DD zKD%7i#60PWOq{U953~fNqw5y(2GLK}?rYB;kRF!(E^mHmNcOxtbUpw-T$04TW#7)yzB4ls!QxFWmia1j?dHOpm{ zT9S>=ZvMSdT<1V5(Z%qh-e|a%XwJzPA^5s-gt$G4dm)owKA6Lku3HaF)%{o;S2hvs zxrHmV&X1NEpYWKxT;%bMy?}!b`bn*QdUp+A>=Tze#bfmfg@`$n2l4KQcBC4~!=k@Y zl3DWUz<$s`PXe$jX zM7JlAEf%L`408S;%@x0wuqB=wr<7c$2~!F2Sw_;ChDpo^OB}Oo#^=03oLO{2-@g1*ZstD`~%(!7D|P20aaFO1I$-9N47fG1Muc%zq{j^}m4HDU0i zZN=|HN1uGf7FhqpyM+Afx6jH7=kc&)>#diEYPYu?{%4{xNLCaoLF*|gUYw!9NWz)IMtPt zsOzPq^q7qDX=;E}4uQJC^vSbmC&iKC+<>lm+0Gd4J&B#?EEnhHIcR5-LZ2Lxxd!w< zD*QNLqPPGGld_9pquF!V9n6A?NQ@J#oG9di9};t8Q4GXOi?h3=RVAxkos3FL3L+L2 zunPOl_Li1bK*_RZNm*J3q_RspBsetI)u*tuywd#R9-nHr|8GM&RZF3Hn{wdk?XpW} z*&x?y_oK&tRNUYEXiQb`2o*1@3eB$r@8I1d6W0-Sj%9LPl!>FBWi`oqOBS8g2NDv? z_?O`*ed> z&S|CTWvsvSQ{Fe-cqA8pZ&$rV;8pZpx^{`rXvSKS|tSOIcsv<&je^6&XG zt-jSO`?^cbz49)vL|Mm7=b;(O>MY@d8Vy>{XaTVq%5H}?vKTMogu5`2$3>+Wv@D+!VXv_IWCxegzp*WJmFrTEbBQuh8xkoLELbglTErA9DAu5;ZUS6{ zU`uemcL)S@B>Ui;QPH@%;|GZojQ+_GyWg8?FUj^$!G=}SzXmCaJD9J?bVCIi7?b&E zI3&I{5?Hn8B9>cQ%4uoYb%GF#Gd{o!$l(NpAhd$FN zlSzhE|0E3L&VamR%@PMc3igkxM-CYw#VzeoD?=dBZpsf_5S1Fa4Wuj?y6(xQ+ByIkYLI^caX`@}2(k8KJ0;h+(yiD_xYPI2|< zb|SpJ_3cwKPI)%o2%W@e@g;YED(Rb;0O$~-X|aZ`EmiFKt!~k0q!!#5; zLwoJBlfr9`3tIP>AYf3s(^^*oSWTKm;BYiQijH_Rz6kM3gZAPO9n|Fx)(k7|2kte< zaziip?|%oxFd#a2~yP_Ml_LBS12I+d`uM< zjNvFiIX?~5e+ep2*9%n4pMct_ghj^AV`Fi3w(L{($V`!dxfH4d5yFUnXG0a$iM^r@ zi3pnHP8OyR1YGB+P!h&90-*LBHOjU zi|XAX*FXUCVuM#$l&Q{uG)hTTgg05i%{TV7IYqZ;RCiG&R6OwGfj;HtWSYy6ljz*gGffIPoqUwVM^ zrchGXr3l|mW1c}ltUXe+!Vb)xxFY4aB155uCrQ5G)9a#0b@AL0m2oV%3yW&!5xS`0 zQkK$LR+{pt`Wrz&VL>s*MOK-;BWN9DFQD;kmD?a77eT;bWh(1!6Mni3XVGBkB3#jq4vL=ekRH|1C8O+Bl)gjjx}NoOiAkQ|^CNU=!@6OE@G?nZgL90$1!Pca6%XZ}L3`;Xe`eKd;MX zwnjqVmtoFNDXq6W8LYqzTAkhy6EzxD!Sh1ik(AIF8d#o|3lb>>QodG%zr(`C)6HyN zsNeuzK8E~`gKC#n2G6d1L3fsaQ@sekdfk0 z86i%R_LS}Xyg`PA5#ISu2*b$rV^hg;L=%c68Y`^+3ZZ)Icv=s#wU}{h@qo`M#h<_2 zMlk%?FUf{#;M4z&Se)TVD1ac#QD?=51DzgA`93Fn(t9-YQ&0Dm;JAukSnB6yC@N#v znjF_lFD^XSfX!?XX0WJyjIeZZ5g&_D1HRh?vO3OmYA*uqpGK5%pbSf7NoYBWzxqJ7D z&}Z!%DC0ZnP2*T;v|zJ!344|;#2~3IlFrqY>NJ`<6fhiL1bxyaXDx4PCvI4s>*i-( z+xj`)ayaI-y@(*%0l4vB8f_fXIh|6drmpg*k&6aIUvAN`O@v8^Q^+fo6qw{`(J!V+=PTVRopazyI)eD;l%Rz&W!*WYg{KB6I~xDaMh6N0QqqgY&Z05mw9 z+%9cfgSO40f?GgDbA+Hw(Jy#!-X(_cK!YoaEs+|YKV7zGZpLl0x61I3o9lN7AL}a; zCj8g_G9L@uURO5b*!}7~r>2hF5qB6}Q^Tjm|GgVVdYP_$?{;5!Q*Vv1hBfUa#1_sG zA_$>2dDDUr_LGt@^`#=^(F{ZS=0Rz&cA4TD)kfyq!(&w zZ*}}*SSLuaS2!#tZQ2;#&yqMp5~iuDA7%-^WnJsLd;Xin%86csOSkuTHFP2~?^D6b zooZR~VUAM1uuV0@k-o25cdsGx!~y@Wryq32eEHO?!CP{6??rIkYMy#vi z*ZzssNe@#&kwptZZYM>ZZ-+Zip;dWgg~d>LG_jF`ga~pDVReU=Pnr#aIsblHKr$Mv zz{&j-g*J{9i+A%FAf#7sKd_D6wPDly22WCNa2n*2I%%Pbwh?~_10c{DoIDCs!Et~- z#Q+=#Dhx2~#B`Ujm2OcXzIT+xsp+|Yo6^iEdlwz-7x`+MwL^6;QOXqbTAdt@4AznR zZ@dRXvDanJw=`!nzp!q;3l(paZqtZqdnRZd#ISeRrk@)2d5$VEcy~|Dh4g5^XNR8g z>kf|v9m8`Sh|r$514AE{`YxpD_lG^SUC;^((;llf_kdXV4|jw*SjISTTxgur!&Vdr zFB4_VwSLU?hP~|?&YLAR0}Cf-5zlo_+pbO6@*MU>{XpV*M?bL?XX@l}7>hfcZ9TNP zyEU9m4LaPHp%G!PxA-)W&K4tpJw?Q(2ru2wx!=&bSodmw?xHKLRwGVBGv!~M%Tcb9 zvQ8>(*jAYfd#{Z+uXFv-Cug2lTOG8|z$vhi?-b=Q5<5HctL}ak2uNH~PDB}+LJgZD z%-t5ued&W=ob7eF_TMf&2;H|diijN2!nOmCSJ?KimqJ?dIT}%6dQl|(EQlVdPK1`U zInu`ujXBzO$d`ObBur&H3(RB5)r-Ept$mn(&@eQ3bnKzmWbPiVY~RU`*qHOLL@%ZO z6(a<#$@NNr2-`k6Sh3e*gHj^Y_l({}p6{#a(Al z!2b_V_u)?UANLRZ>~nAq$39sdduC_Hu@4!?9-&jn<``M2&T%+K=up|&gb*1?s$(l7 z(y%I_%p|E)bbjZ1-}m+V56-!+&*%DFuh;weemup}iOKBBqeSXMZv4^}v>jeN{-<|* zj-vdkiCEmK%fb89pBJeGTGP!`b0cia=yHn0ytb{7O)vhPxVw^bY08P612M9}KTH|b zgwx6|*Fwxgn7*`8?{`D_rH&Y@WQeC+ax7`RCW?^rmP6a)L(!Yw|2M z18VbqGJ_&+gg+0uQ+9;<6!;5?oay`jwPOfG3=3 zXExqvQKxAkzHqX=PQ4B0;%7)NUiPu;sRG#em`ue#qD2J&BHZ0k!*9XA88}T-fNHY-STC7k3BEYM zI0^PYpQ8VOu)7yCdyY)i00*sr;TB%vY(1GDu3!E4M?Y>A$owud08aRr9Jr8Y3k}Up zH&V3)yy-Su6C16lXR)HFK9dEEItqZfei4=6JvaG=M~CPqkBo!@dMVsjmZ;)y0Jsx5 zYdPXKK^P3tGG>yVY_lrCK5b=;%y)pBqWy$+3Sm&P8eIx^9_!GWqCZIii^PCLrk}xJ z;U76q`;CaY0Zf<72v3hPBD4IIR*dMH_W~F=AJZFxVP?ZZegsf*j2Yq8^8R&J0XQ`2 zm9OT%K4V%uUHrb}IKr);UdOOg+66E?DrQjd7^)~=#Y^0zDkRPiOafa`jxR=L1=<84 z-m#)%&$%h#$W@WsswR+4;((1`6qXNN4o+wG4XPGL7W8h{4o|J?IGQO7@9p6LT5cnL zi8}-vAqv8h7ymXln~sfnCSIg&OJh{?5bzX)NJ6j80TJu1^FkVEe4EdG?{bi;36C7% zIX=;pU!ypORV0pxI}it59t3DS2a;7DO0xIt*BWzWP6hvX5wNg4sF5^19CpmMh|jyO zq7XvkOJ|duHh=+?O(y2}E#%V=(0fU`%o zR;Ix~sdi*z>?>nap~c(`DS|9$WVH5(hy8WE^+i{FGGm0t^IJNsRcXaWEw7CUqKl1lKxXU!_jH*1_?S#tb^aaQR3t#?ft`fu_XQp+0KVKQ4ESLjGi{b!vzMeRVt6V~Jko!Jo z=EgpNd}P1Nj2}|Ez*P=H1E6w%VW>b`_Kllu(X~Ogp_`Cfp2$@!hwjOw#;~-AEIxW%-a}Ztgqx3!WlhpSX6+g{a(K^rG~s+TGudf#K~X zAF|p`jy<#|wY1;=9z6bP?A@^H)X>B8CuQZ* zFrG6&0;3vnvQE2v7xgXO*W*L4tHskJTVV-JN#R|Y11&vHidhYqPn2}fAeFOs)ABd| z(}f@Zr9h<*iCWF%5#izqA@Nd4jI3(HV;9c-ieG|O+ITJHu1e%tFE4oebi7svS{R{p zepUL{@5YpzA5EwEt@w8zJXIt|zlHQ3L#EmGe{4%{@;vejybx8@kt6irsp!s)=T2EJM0mAtZ82uf@&4>PzCrK- zGfUPA9PZfukO0NFOsZWG78xqHQlin}!6X2UEtd*@A(A65M?}#|&*$m~Up6h&Y*<)( zqWefNXVcB7cs)T35OA84?>w$=`QW`%waSrE{Dwr$B2`k zszU?{6L-*X1o`y8mnb(J5TlBaNakkjlDXyN4q4X0sHEQkg$YP{l1vN6#ASR^|JToX zvd{iDmiBB7aH5~ql1v?QNHwSzF`a@osHNO8R=yksxbZf{Zd8sSmm2&L%t=Vj&lSY0 z39U{+H9mpI0KA11U^F^~w5z4Q0-j-T$xyh}0DKYRP7bO`|HFuB-#CYmTmtCqngkgO znsE#2&^`aN(g+y^qiB{VMqJ?y?E4>BZ3=@?LrXFs(F8RD3ARK;$uF7xJcmI7v;wA4 z8$((%h)c*wBp;6dV2S@x{aI!!=Y~1Zp%p*4j`U=%WLrC2dvL(ThfbwN!ukq5SLs?I zGg`R-0CS0*6QJb_V9T0D|0i^fq9=E=re`tvSSu7a2fv44Q6b;OKHw|dsfk})k=UHG z(E=(Y7>i!xo`TAK0HM$i~4S<)@Z9SSfO+_NutLf;B=~_K)_U5 zH6?dSE<4{LPd0;l?H7nnPSbdXet`ADw{a=x<}e947*fu$j|FOMg*hMLXLCWRee4nm zLU-tb77tAr^{k_dtdUX5_jKS7<^kW6QS`91U^4x(d-X}X3@wKQLe0_@RmUHn#*KT7$e3d1ZV^v20v z4~()$0DwWq0BG2@@P?4HF!J_pk;RI4fT}0CZsw6>b%OSR*`1T z2mGXpLSj93n5}GcK%}86ToMbq{fYBa1&>69%*i-?$mSMump0Df}`H#&;3SG7CoKlsiy-GBn1i@8+)kqiFAWTA>5{6^Vm;*Cu4X zE<4l$iqArrS-)^wKA+U3!Q%{J49+A1)$bgnzE>k)L1w>%TTs6LW_0@VOBI~=q zgWRW3^F+Oj9{P`j^4|~3AGYg1{;tm$sz*(;{mdx;W0k!_HyGm;J(YNBj+a#z4}Qc% zg8^9d!py0Qs^~^yH5dq6cZRQ>6wSwiFjG)7cB4I0BW{*i`jCtF5to8VgED*dMdQZ0 z%*LC!+?+(VJv6GAQdsN6IX0ElIFBYO)cI}Fu!{GkIPe$}`#gc;`k#iaxw6`6wkUtp zNUMJGeC2VWDu8O0G<#m8-W|bn#p7f^fGTPX0G)$3-?^bj3ua}0s$3CpBndj!id3sm z*A;F&{}J3cfZq7iyuH~LcDHM*r#znl__~DQwP`j#d1c5^x zBe%Fgde2rCtC#(rXp12tR@~U0wzDCo+K#a8%q52h1UJ+r4m?eU6QLDG^Bl zj#piL=5P<+WMMB=wZB14@CH0*dR7 z)pT--o7fN`!Y4BXbU^`ho~AK0S?G~~)uVQ&ON-CZ*BWV&IN%>*OWX>&_pUA9ZawDaLO`!}4?n^i`ixjhg zG2{-;s%jO9AwwTj4DQf5B#0hFqMi4?IW(2~Ib16*6UuqW^(5qujFLc7!&4+TT=Am= z11lh$^#qm6wzWlzE6r0pheA|{p&a^aIk|hkuKPy(qra^B%_Xv1pCz}R$;2%BT2DW6nhS|eeHZ8GP6ku^9y7@> z%W3=lxywujN`m#_*gaEMhbM;t4dALE2=OsH;P;Ji7DZDJ{de6iIRQAG56gJv1IrN2h6Lm2D4_NEN~W=Z{jtce#jL~X!)DP{m(!TfW<_& z@=PyUzA{K{NPMCv!FS@FrRvcoo>{ba;v*)Z;_>bba|xW+!zHp?|9}k8sI*kJ1x~BJ zVeVGyU=a^WZp|*D7ZxXCKY78t7z(9t7n2NfHLY&FGUX6;zh*7nIaM=lY`vOdcOWGC zj)+iU0NI)iz-o2i$kTSWl95b67x6CYi2SOQo!jYMmundBUpfQPYWZoH{TcJft z@WoEI5l&59?_oq(v@c&I1Bmg7`G8WPGw~9Chx+ zi*eK&XCYtW#9}sg@|Ov}84lQU#H3JLudU;GW3Cpo+aHb>r*szoX1_pIzKE}RrMV3V zkzhLmdGd+sv{f@iS+eUKP;Z+;@u@y}tB;=JK#F|f(a#d_j0@|mPl8KI9#dzy4n^?j%c!!I9@+^?cAP#r86AFdqJ2Nd!-W=euS z*(f^-yIlWer16N$GRLF}`OMpU5z;8&>-`4#5k4sd4cxLRasPxgMv>_tZrn^9Y8GX@ zl=K*XC9LJ$5mz!wblJ@A^D5`2rszBaaO=I@S7+-sx@aVtHuEjl?K}iCWhq6f1%8@K z(h)ja_Uex4+C{Hp!FCmhLlAg#QGDy{Aq z8*=yci?^#ek&83$87T1))H#Hjw3D5hhjpq``X^5664)7n;5vn-GI)JfIcqdt+HZ2I z8KPO?1WKp14c61;W9@q!@Wecq+!5D?+=K2JlPp6a2LSXyYy`bMfCAQY8-42(e(RRQ zZL0``>I8+%G*S8VP4l&>)K`xJWl@7qPPH+dothvW710|ToJ2I@ z^lN7@vvwFIUQqpQSm^71{X{{KiU4Jn?G*F-BznK2`Ew9u|8KZZ;pv}_AJBYPw=tFb zV@F(8=$4Ko?u4%bFUwwdU0e6PDl{8@5O(Iu#0L~&i641xn2$cO8UF2%2kze~zb_X0 z+xzG5E9_C`|GDw5n311}$aw%8TlfDU^F%Mh3JGw;C%&bxIp08P=<+rI+N$Y@dSm%R z-_<5;u4J75s1d7C>8M(}e?%>W)jMyEs95+f-zjd8E;+33%B)i(YfK!=N37!ijIK_~ zaGGlAOSjFOl{!}CKeUOYNGO#EjM zp&?)E0)Td;9|t3MUDaWThzuCZh_K)3Ky5{B96ReNe|+i12jDV8H?n>-MW&Fea9Li`6jUj{~Ki`9RFAN=eS2Z>1>6u zJAA;nH}QA4;d)kIQP9lt%|CG3z?>8J=Hb}*B3vNFT@Lr}&V;exg*QsZb8kh(4Rpp< zznsVQeDAYGDg=Rl_FFz3LC-_UL3og@=F7c>drz5Y&S<*95prBiAq&LWMx6xReYAPuwOm-dHAOlEirM+AG;g z=6%v%ILC2Lp_cBI{~ufZ@LW%^xpO{ot6Y{#eWyZMH9fV&y`|z#*Fuyj3Uj-3lPbVSp$c&ooaj)d;txaIcR3O*IfYJC?#!g9&7cQjm5w&s8<~2u8y=8~u*?e(h-2XMIxk23 z$4tA5^#;~~cx=EiISCS$c4mK&H7Ag{63_8o=mmf|b5r!E$Uv;98Q%K2*Vvy=+|q5< z7k&4JF>*`fYh!CWlsXy)}vL^Yv zJ#baZQFRod2F^;pb#uV1rMBXYrF+^6#PQo+msWj)2Y*=NV2*UEl%F{2S+k*xW9~IS zKS|Mtc%->w9`nY{n&Znjs}g`Oq;UJ0WS3Ho@Atj&|ejpp=ektA?wi zIy=h7{{-(GG>q{)|Iuo#d;~W|x2?6{nt`8Mc7lzcj8oC9&;^a#zsJpn9gDR#U`ri+ zR<`%|iYiuXX*c1vBwBm!Olh4e4ULGhj>`Ap4bY%C6vhr~lr53~*q*i=?{omqp440Q z@>(*yf(%u{v9ypS`xF`H%73c?rlN_@WA5J<3~U`%sID}!36D-6$Qs}f`!k(par0JW zeFpyW%M5U`=B-0Q&}k>DEGYsOq*IY|`Z9G2igdoCm&!1?{Ku&xbF9u(x-r5g@l}j~ zOT%etrh?;b1=~6cmqw?{bw-MoPR;_k3+YvW2xPcU#=l1;z|pcqeB8p9N#R>iV_ri?}&v7wlImyehsMBdls zp)?$gjUA|Ub&Iu_8)&$l9Z)4^@f`6H*UWVuay$kMXkuAMofE*{wKzy3GWOxbt(jT-MO@O>BHI5 zIL6&KU#YT5A8Uo<2UXteUJFQCku4$o|C~Bub5QdAx01D_wYQm5|FefiAFW@d1IGiz zzLo`C-txZZeASS+->!1B{5fzxGMz_hZpdH^8K$?&z~eTLH|uTgMJV2xkv! z9=K{ek7WL38UqGSvLirxXJH^yNX78C6A9!F*?5E_-u^(&(sMc44GcDF#laB>=osYZ(2-uUkpAa zkc}G6=o99{@%kz8i4;ive{a7i6#JI_cZM~}s z6se{s@sCV$7fjTZ2I^-z1nM6zg;1D#0uGXDYJRO%i3)m6rux062IHou7EKMeO^pss zaY!>`5i=7dGgAXIqeHnAb~1Zm@5dPmRL98Qw@c^dK%I%1&A6HEqM6;cnf;*|0cq|a zV(z$YYHlMJdzZ{kd|(ZEq^o4^o@MS)YVO%&ex}#lYuub*FqEQ4)(SOu>oxNhu{f_} z;cH;wXJg^-HSE4@PE4{e~)!+m_;>T15EC1T9)bidaS|SwjktS_#Ex4ABv@YBw!C_1Nk+1Y@T8Mojl`~wP;Bt2 zUU*vQsJ{}PdT5angU@WjU+cwZDVe2b;R8!Yvkvieq*boSGyFV02V!yEZ!}aVC1Tes zLMJ5*YgJTgReaO@hQTvyn`h}&z_J=>q*9vJ0oC3Qu2&DPYp|-Zv92{3EYXyLwvySp z$*4jA2hpUoW3aNyG*KrlqJrW8Ft5bTBkD zXkFqdeYS!U(8?x-g~l$u);ds_2!89F%#Vj@xdRnRa6@;BGlMGR z4y@5jLnFpm4eoIy>bFHI8Uc($oYugn{)mCc9wdt(fEt0%Ohzg9lW1r;`!`DP@_JhE z)OhbrnOM4gTw&_N(mK#LJfwsO7bYY-waQVcr(Em|4T&h)&7qX{468&B00?-0rZ=tS$4lZlMUBU1^*rg+Tr0EbZ`PG%?y7W*$30jmSavN zIR#~oO()H0RX~i6TuJ;^IQ|0g6nWtlG_V3RSPJ0c2M};H^FWy80k}C{aMu)b_lSQI<3p*PViJpFyoE;CT;2__bF&9>9I#??Pw%_0m=nzK06gc zA;-jnj~&2YMdiC5Pz`5k(STHHBK2%xatJ;RQu5X$+4;8tT&Vl)QVd*(krGXZUG<*4 zS5rf11={{_rhcJdf3VR|PS(~hrNbPpmS6nvvbRIbsNmj|?Y4muN(~E4Y5u|{6$tUhzQ!k} zh;=(iwmn2WMi_({d&#e!HpI z`eYye7mrW6M*zHEd|}xcG=qz2N_3F>?V4~^=*%`PoJ?@0Cz~>)e9*9P+{CoA*RZHJ zdkZmM$(uAsUf7>oSR|_^3HXws0hQp`sW#Wv)Bvj#W@ziXnD~5&gEYP^Z`>d6*oxG9 zsRZFVpm`v~k@2ytv?hWG7H$QdZ3Wd;PV(zGE_nlmTY)v1X^)3y4-Ht)6$L#CM4-lg zuzvbGnhJuV(wd4T3i+Za&Z_n$I%6HLY-|Hppcmnmqad5}D_Ui#Wm7PD9Mq-}=CtnX zGdc!_rYW_0a47qkidiE62^gQUQ6SS!xV!28O_L|FzGrF6JY-%UWwlwjz?FR71GqT- zBkOna4xw?wZ$Py*KV00623--^a95hYdn}wP?HW(?_Zp={6K10kROn8I^G`PQUC4H- z6Xeuq;%M@}Pc_am)<*a-)0_)I7lxT;Kl6dJQz%iuU9S`Yi8ohOVKtqppAx|dt?#1a z1q4++9m+l?ei?}wePN$26|oKu%&Cc{C-0!#k-7x?b!t%ZR6^`TkXT@{@^J7^0S?CJ zfhKEhMYy#NFx`-%eE=8KA=|_XIOAZ^SMp!;PhZ>-aLgI`Www&8@cFXg=VZH}TNZxv z26bS3U}!$z-A#cL6@h^c0Fpbz#twc$2dKUT=P3z1r9+Vbz^xAgokIe^?<``m8@H|m z*LRIl|K$VSS2_ba?=I#$RH?_J11XTXYGNQe{D<1fMMuhY~v$XK?+9=Z+<>QEVO^pT5r|L zuGzwCYI^W}=;ZM55NG2xTK;JMc1>OAo%!c2N@om`ATm2ZE#iAqWUAPD=zL3<|6%CM z;hz5YR^(38wNzupQ9GL?h;(b%is6pe;FrZR?WUuNmI=2NGduF*ZSv*G_0q}B-pTF7 z$(_T=cx-qHi%!;=awdR;m%w$AJ|%S8W>y+@$KkBp>7Ac;yD{+PoJl{qu|31D)i$YO zgk*8^#t;NmX=w~R0h1q14haOyBVe(_-3t|9ncGqx^khRcOxk-wYZR0i3%4IlRyE(f zK!Qh9P?Z9y%(Ja*mUNH@J_Q*7x1S~HrK98Msi?1{)yc?Gmz_^nw3<#$vkJTfF4F|F zr;oXOvAXXd@;X%PhXa=1QR3vwuRFkB7pU7dG=2s&s1+pYLgSC8#UoOem0c8PVRPYD zYgv1euT%MVp+N|!?NHQ-wWv7aS4#p+5fg2-NtGTtio~qOhK1cU8eE6@6*$tD*3-05sn3;bLgZnNi1IQ7!Odsa-x#VZ|dUJn#zOcoA; znTn%h1a!DG-l6k|w%NfZJe3+F_gV~}<~NmkF`o6Wz^V_}g6{m>Hdp}P3UmFL5l(ag z@&{T!2jS!3c5zTHqvuNQ7d=S1R@O@wW??1St|bRCC4u0QTB;fL8?4}k5@y156cnpU zWB<5shK>)kJ)ZjDBK-lu>&3-k%`lsux6z|+akFo)eDS>Z<;!K6@Z^*3DgOR67x%SW zG?5dhwMah$jz=4?^ypTK9|^8<^=ClD8QLv-&0(k_W;udnSAG^KO@td@qIV4&!`G>( zfNwQ)P{D%?rTSEtyqI#G6o@^k#}=X|m!{+nyX^Lo`6DrI9ej0iT%Vq-y)MLLV}9V} zN?<&l%9r{5df`jcyZN@G`Bu?0_ssY3dJ7$&sGVU8W$_DTgs<({R)%z+axz@$Z7L}a z9`-90fB&#d?)2?7aN=x|YkrugK(zJpcj;^*QWv6*6G~zx<_P{x`o(spVlD;#txRVO zZ@q6_fHr!-rgz|vd`MG@Kd`~gG0OkViX`;QsylMNx0Uu;c@154@tOU}wwCHMdFTE1 z8u>%Kk8Yp3nmFEgQSohy&(ma-Vyx2K{R=Ou zZ12XNSm+A>(4Vasx3hRP_UrP*-8hvGPp&Z85K8f?ANy%sl6Fn;YAeGz$4zsT64d>l zT~+a&EIp>A@2RQEdQ?qW17T&*R7K|xVPRp{B#)p*zae%l{@+cl=c<>hGj<&3@B%8g zc-}q_zc*Ez_pa-W^)4ei?Tog0{EOM9^}aP>+vQ<-!_9Nh>v^RYvOAx>w0t8TH&?^3 zbZJ8+>Fp_ZZ8$jyB;EWw^YkOq{2N}vT=isvsii=eR8^kjuD^rB$q2t(rn$s>g4F3m zKLoxY?RYY#DqS+qy(&Yts&F}@xNTPA>@BN023W3@0b=Kp161ee@6A?UH}d>kMK|3% znV+z;w8E+XS$d9N|J&5Q>&+b;n|+MOy9X|IPMr0xa}|=0)fM{YdDImJR29_~M{>`} zT)@e6;j*JA*?^^S%SCs}5_{$Xu7!Yv>MN)`p7oV!626XY zNlTAp=7LO}z<35i=A>5JM8}dCj9vYj=0Nk)#edT_%@pIQ@#A`3e>ZwKZv19X3Tt(# z8|eTQ zu22p+Cg@9{7!&Ih(#Kqw%J2L*r6z`r@an?z~)2I1K==Of+}zn=s+>> zgS;^|QiOXyJZ~y^Ip(GH(=Qj!?3aE=p{mD!;KNU~irW@e?xUIK*UQ|SSGD`_)7c&w zG48qAam3m;lDa8q$O*42KdiTR40x0G`r?MzWZgVp(UiiR&OZK;8asJ@@mrorgjRGS zno*l}41Agx)9R%75qwVt)7^KNm8nMAn7;Svmn1Dg1OL77@mjJ06&+B8;&@@*fw&V569MaKJrWd__Cm&nSi9qV&Y?M|nXU+ir!pF+bwBl~tiXl9!>w|T zw0-`wQ%lGAj6w2?6b`8=09#`N9`G=kL$Mns$agLqb#sZyQQVq~vc{Vm@T}($nsCzZ zKbkuAn{o#=;dDY{ByCAI*bQD0p-b|d!YSWNmUnX{8rCU1tF!#1)e*&sZYp0t7MTf= zJQXu#VNQI@nD;O<-F&trqyO8gv2Tr^PZyF@Z;~6WQ)RLj37_SernMeza*Jc(22m`1 z7Gj^hqjLc<&R|Ws>+#Ok=7{H&d44HN+{UBEa;v$$pNjeOaqgdh}Ftr4cd|{!Z~F&d=bs(H0nieXF?jcGRJt zxVa*Goq`X{2~B=o1G`XYerPJ@nml6kSytl=6IsVE$3M;{K*2zJ9psjs zxk{=fESRhOu~S&S(dxd)vdU`#yA;^5n346Ks2qNTnc#CjDt}jBPtI;7`~`l9eH~L4 z-};%1=u6dX!k+YRS~~U(ks47S{8}s~MKo%4Kr*!Y8vlWb5PRe(`)IIh9AJ+dxE1rifRi<$wmeMH+1GaA2h{O+hmAl9TV$KiDS z>EY8|-1y8{oZyBW!Zs9VY5s}<^)-zBC>r7n|q2+4#w2E0{lPSnaSO@DTZ8Y5*Y zxD`LlzFXm%>3(bsj!Z>4_v-(&+ z>X0si%Mg{)tkk)4r#3j=E%fX|s~emYUSGbIUdO;;ExG1f!T3J@6vH&_8X{8K|Klwk zT{are$24;%$o$KngSxZ1P(93w^y{CVU4q*?aRdItD*es?38W(XnQm3jgIyvYAjiB^ zvsRIxjQ*Dk1ePudsiy)AWCT~znE3a_z-!7kpAUIR0<%1%eCZFWkZYP|$1+~oy1jFV zQoGYH`Y{)FV@$+f{x6IxT*s2MNO6@vt^3Kp3#H!@WAQf0v_<8tal&XjzVqgcMkk1qKhMjXEdCXF zAo0w5r^$2|8Gp!Wy~EnYpfA1as5KWjhc``)w}l_MugaXIbO{W+D_4p+5`F_4679A7 z0WC6P_q{<+o+pI`Iz8Un6+5*tArbl5udyGUUYU(0d>n-ME+zjq)#bwu-ps`CE#Wf7 z{EE;2H8waX)qi~UNqOb6mHkEizN{hhkIFsP^t=ZodA*oaXB9S~b2<bmvUj3WjS#T`0-$VblhZR+$YTA2Jj?a+ zYM_sK3NXx@>1O5ZDdAQ8Ru^PraMOGgto1QjJ4@))lhtK+)JNmc}$r=D5gX91LpG)ctsJv`vF?JUG|IFQ`UgsDeKOSl-DRtHy zYb?3me?4JPYnP%fMFmbnT%=9aF=j;`6!pR!x6VmjXP#5o6cbf5^K|%e=M=F$aobUT z;nfsn1jHCKD6ah9I@JuF@7ilAyi~MP57+4JmyJX@FZTI4q@0ME=yVvoGmg(W}MjXBogaAAElG&_$ z)sxWm-(G%;nSx7G-%J%79NNV&s3JDL3QbgVVnIRZpoa4Rpe#?-fSO#0)mIvFq`b?W zqVR3==$D#Vqf;HQcIKGte8^(wUC4<))mM9~q%=)6dnvE^h8%Pj_&it5^D4bb)~S!h zTF?~3?QBe@l%JneJ*GT>3^PxM1r^e)t1L#;DvK&}G?lEPJGf&2`TTrlKj*kfh_tvv z@hG{pyxG-gvyqr>n!YKmln9D1mGn(3Y! zx-^)!6C)<=N6?OOR0vBa*UK0=rf84*3m{Ea%$=!Ts}XkRtaAMP8U5E#Ymo{TR(q+r z@n(5S8RnX7Zs|8~g?hUBmAlzk-8v98_sb}7hI~traOp{n@1OUeuX$#@ic5qTjGA8R zx~;D>9_zq%lU%MpY6^dT`-4>$N0qr<>79F|p{t-ZGEbl@LN-bwF!?7lJ!;3iLdS!W zpKefylUoOyxeRD9Ry+o&76xFQ(oC{RV7m23ib7yUv7D89pbsRIm{FfTXey31mFrs1 zdMP(RU(Z+$%-OWgT!xb0)Yp%$UuWN-3yo!OuIGN1yZ%!yS3T&4-o}ml=2ilXn~p)Z zJU4Eg56TbT$d3vtNZcq$4l2ytV5yfy#qvc8LHBSQ#rK0sdKzw)1(iPED18}pdw%2g zvV37(gLijO`JavQNx9O`8x=gkl|q}95}Wxu8%BWOYQ4?sys`?J%^JtxTF=c|*NrNZ z&AO=IJDx22EEp7sLyPorLntsQ9EiBtct7}VPD5Q{aMSb6rZOf+y-*`eq>pEPvqg*o z>)yNv3Td^IZ+aQrCbZR-pV`c#(6STUu55g-v9Z;9t3yViO=7F_d`MSI#{JJhpqq{D zT3g&T!39?ajO0u@97B2<6$?D?cJ*vM>JP~vZQYi^p*6Q;4Zy57S#UcT9kao^E8o+y z#o!4Ac7*gwg!U_Jdya42p1<32rC)ZvQ8dYe!&JBr<#3I*YSQ@8=xAyt_m&j|068>C7A`i%CsU&sLX<-n(s zOvR*dVuxTcLWAZYbtHNF)sx^c&o8gfhrJ2@@+KY!G`P9R9U26}56laYg$}7N1ptiqO^vWG>z*61ZR+Hvi4njUlx1Qx zPJSh@vmLy#GQaa>IecexXNP5g$ZQU5Dk!7rD)cWy;XzXh1F%rs6exWC=YU*&FbJTu z?a}9w5i>ik^iK{$AI#^ z>~5o>vC(1#5YT6c9}vKPy&07zv~4<)`4t$z-1wug3(_Eg^>@MA;Z-u^zfZpM1mX@a z1c3&@r$Q-~_lljCKe1ibFa+e_c{;HUc!O?}9m2n*Sw#Mb7MShI|umc_}6y;VDaJ}DXP+7qDo8aGX$H7rp zj{D2BNRSN!f+s^n?jO6c!G9?T)H)#gy$#6~C4FX3+BZt(hIk!&nRlBT-gYI9 z?`o3K>Wbgr3Pfvs|E6vlt$F&prlNeFXLO!pv{uM>t?1}SUf;C~0=2Jw*SQg`%Y^Dw zYeW@)*K3c~cZ${ z2u++oK6yyh0I)dA7~7Rp0{~7Yo*hdfgGInTA}o~nn%N_~iWx(Gc8Kr+stCYoC$a02 z03!Qr(1SiB{7IMZP)9}P4X_`etNUxQ8na7wFCNdQ@+Uh_0BTWhJwrPg$DBH3o9!`435?rTSN zHwe@U(p`lL4H`RK!)vPIAZFz9<{=I$5!(#e)&AS_D@HmmJc(dU+E#y1;R&et7kdeLGz_F8E7+dVKC z{mb9k3~2@^njTVH!a*0FmaO=Uw?Dj1tvMFAPD+8*`64)^XeTtO z$Wa_O1Z+@>^GnxGFv=Yj0)ZgElmTSLL(~5g$^)t1-M@^M00N7t;;LltC91tXfO9)J zvtJuVfT-!<0&|{;6Dd~~Qn}55-oAhs=75Y2*}x10n1x9`8UNi%>@Gn~j2)te5+ z&|~=)yS)edIaC3#@jksnFdu+%2aF>GBtXbL2p#H$52@PqTDmM%9j^ytFe&94185zF zbNN7CY%;eFi|2$=L(F+_Aa^s|jyr_b9_xbuK@I*Gm4ZO3RBslXjU4cc1217L6`jWEdwK7%t0LoBvkl!$}G^yw17pqug9 z^*@a?dz;TD$w*y-Oo30T8be3`A=1x^52>s}n1Qo>1x(h}Qe*kvPOh6jyt|XZFo&O=w1GV~OF09rR$I%_$ z%ibd3|;dq@?~&}G&iP)b)jy8X{;5uqkha|RuKjhnG}d!R!wtY2W&5TQ%%l81j0Bv z)%xiDulr+saAWx{4K~vw)roeD(va}*(d>^<9EL+!&tOd zyfe2%^1S!UtG8K~N4pe<&_x&J0&Nu}>|ToN z(z;x&K=F|!3a4D;R`on);cLB3hm{8~y)9%O16%A+zXo_#gazoYWX`6l2!Px!$RGR` z)P{A&SvV5qEwjNQMNAb5zdY>|P`;vfYnPbXumSn7&d(TW1%ngq_2&S{fVzg2!oRAd zp<+jg)~`^wQm(8J@|CbeMhzh0w91o1&~~|?<8EJ`yUAdcaM-~g`T7Nn&OnhrtGl`M z>JkpX88xc53~lcKGR%s)_t=%%@;uYIRX253T6H8ypO63mNw%1qG%F1Qs7D4A392$G za#DNFEfuEdvovI})El^+&A(eYRFQbe*t!S7FlKET%M(k*ly3veQ9W3^Z zDg{$(@_|@mSJqsaW81+NImmOQ*r+2}pL-|g)4#TqWdGe-0?KhC`{)V)33<;UJfIu+e`7XRQpNtaa6m&ksoHrdRcL$l)i^I@ole!&Bp)UNu^Wx1R!Z~UK;MAB0Wy= z;5cMhx1et^Nm|+;ZFSuqg{Hd;GugXbsG>)kc}W{*>6OWu;qZ=?uJ>}^jT5i;U zb%=VtD+oIqX|SzOZ*40)FCv#`?DbXPy8n|R#B=7Qritw%H?0k%AE+3OrK>amhfQs4b2)u!tv8g0L6*~AEqy3RUkQ{cU0-i9W7%jmz zURks1!y3%pcnHpsNHSx7t2N|y0`T37ju3wZ+NGPYSk>-EM-D(waIdio5%$>a7-pN} zyIgY*_wMQC&9F_3o-~OJN|%ehc|*TY>$xsjJg^u3YH~_tMv09Da1-5{5cx7jE&s4b z6(-S0`&6s5Ay`YlR5R0)2CuR)f8DsWRZ>=md!&r!tJPJVGB~n1ixvX)CHVguiDr*; zH&MLqr7?14PnZ;ON?eC(a+jJH@bR&tYGUX_@c^MD0^p%+;E~C!1{7<`a$ZOwn6e0E zN@m*-In*wh&B;gDT6p)!x@$o4l#gNfNVZ|#e=_-?QuoplbpfF|-)>Z-3qIOGAE8ie zps9=n()?=KKTm?7b5`kz{QnhUPiJJ<1AM=FF_I)e=8+%irZ#seN6wnTGlvT)!JI(u zm@uU1Nsbdhvo`adnmBeztU7xNCT#&anGuN5Nu9?(OeE$<-_M0kOqk-q{c~k ziuRACYN_6ftvg2*M7~(pld_WNAAT=<`nNud>xJ}Q^B7R-#ABCmYGND)9N-1&)fq)6 zTqYKa)cX=_^V+0aOD)Y(pahLE8jw>7K;p6nGo` zDGU{XR==*5B{LqFim(q7mCpR4^j^}YU?l_e(cYL(Gp3@Kq8N3@$=Kt2f=uQn*v;fvLKb=(UVuRH%tWlzibW66c?&TAJejUPi> zwsq+0L~CcfZQV^U(0$a8KmG}JNw2tYm`RgIQ;YfyRRzW^OdtDV6KO3u5KZ%Bjy%Ix zkuVKH;cbL0vj9YE`LbHBWQ1burNs> zO+CWC(?o=cKPxq6J(H{X-=F!}&ALqnaSW9UMs9 zC3E5Nm#0E~M7;vwLKI(&Sdn;zxIIE0H}n;-OiOFdCY(1ylY(rO5~o|niW!iX1?bwrVPPS zKU=Tp{F3K_&|^eNfku4aR?@Gwo)<(C!Ug;-$gCoLpgAiT7w>p~FM(0YjP_IFzRKbA zll_fp@D9ecHiVa9`6zccD87>YGVV9Ds>{^Qu8!rvd%<#)O&a5!kTXX&q`u#Hs@zcD zc{ktV^Qsj+;X!w5h|-(Bf0RM^I{hn0$#(>--b2XbTgB^@c2$ zDJ4Ra%*2ra@o*F9dlKPFG@Aj{dTfZagFsM|KMRbF(W<&=vAO%Mb6G|tW!_sP+eReSbc=OP@Kj6K+CSt!YVkFRfbxzl&KvpsAc_q9kP)`NDhiIe2!vw2lH? zF7-&>RM^_}+N!paxCLi@EXjf)un7~`*%ehdpG6d7QR+D66I-`5LC8oe-}kW=26DXW z0Nm3p3C;Kiw0mFE9<(7KziQ-#s4M}szdw%F6`AiIm-t*fcg258a`=M8*ah2g6vpSm zUZ&-NzclCHcPl46-z=r=Zx3<1*{VF}nvkm34*F*I9;IsO`@zgB{KwfKvHv=CLgIufONn+O?1dAXZ$lVJZ6q zod16@cP08IuBWtqp2`Lb2@xVX$)KfyZOhCw%`LnuwWd-RDm0I`jDbj*!{q0M{K;Uc zp6~S~LdDdKZ;fIL&ZO5?ZyAGyp?sJ&Tr_(khV7^F7tON>ku;pRRIg{NCMZ5QRxxXR z&q4RQAaUY{K{M{0-E(~lm0?=3O!K@e5pLnRIFT2{nvisqFAt$;-vAgurF~M8VwF7Efh?|sXE<}X~x&^g- z4?kv7!jK?6WwH%MdO<~?NgzWkr&Q3l;}SlAb}gjEJ<4{!I>+B7X3lX*B+mtLXO{(^ zjT0T0Ly9sgdN>QruRGYvn$D}UFS2|k3D592KfMO+OoQ>^_^iLOXo6TGCqP+$@QEO} z5Dga3hYkneI1=;AeqqE%qVAR!wb<7UkUl00qCVWo*Oj0vm#i5A=yWO0`yUaxWY83M zfCa~`K^CNSECcD>-&0@`q9Qoo++|Y>zpEgYI36As?H*yPCiFpbkTJMgS63R|oY}T+ z1_xhn4N}ax+{NScD##(`ha{vJmJWzt#sU|4uHG!+4<;}r5;+cZkx&3U1mdwIFh!Q| zFP)1Ep+Q%kKH~h&HmQr$Bq45g!&E9CS<(dj$H!&rfNY-RGJB9tUNS$vr5=;gWS`QS zm(tOe{8XJw3W%;oI=4@z>O+JWdqzLEQ%6G4^b%I|PKr^^iPg#UE%nr?$<#Cgsv#8G ziphw$A$%?Ud(l>bfO006!#y?SSXlzxIFy;5PJr`bfordMv!aECd?W-VgssSK*YY?= z$tR-clejE^0ixipsNgT!TLMU^0L1-^loawKsbVrWJLq1(iz~nK9^C!>;HS|8{Sh?( zgVZm}51Q;T@l=?;n1B#tJ|p#{e-?HofpG*yG6)^b|Ng6eVaMmv^8Mr|qHK|$GR~Q& zbcJ1U23V_Hgp0^_GA#GrIXp5t?Et|t6k71N{oFtKj}Q5;t~fmCb|{7mqn7dfgtjIJpei(C-X?jvEmtX zGCM8yh`-Y9&SSfS^wU$75&4x*_bTZjnkfNOPok#s!W@gq1yv~pkFEea){c1sdjc47Kz%!RS6>*Lk8+V@V3s9a-K7$uhlr$+B8nr(i8~6m1=?4_h3kuso zgJdCEY`RfVD^t4g0asyz)^rp5Si@ie3mrc+@lL0mY#n+3N1A-@Cnq%E;uNFo{8>qRObwgZRI_3?djuRJ+~IZA}HG z^EP#2YRzVb-~M&Bbn3kR4auT*TAvw|2tqdUqP)0*dWBGD_F&4o=<56v?ej=H6_iJ_ zexKZYuBvXkA$XN=iB`-?e>vkWW_`tJM$X?DjmLu9sWFmvp3e+q<+?$Avb+Wr+y{2h zR1m9}DbPhHiy%wZtbw)S;%1-2y#6eV5OKNh?##ioR31ZVqp@%gyc3;; zH%bHqJYRpv3G%m~Au1r)E9p0PbAmpkK?_qRubh`G26yIIInJ$ub3MyMSN z4p+Ux9dVsM;w%z0Yed4hit1I{%v}Kue+idf;AP2`L}5tHo~aYU)QRh*oZp1M=?M3Czjs=8l$pHdD<6_U{zC#Q#5DbxntPW(Cjgi|31&qD8FG%So;ci{GATAN zHSQ6&auszguB@JKoDmhK0T6XylG9B|pjTL&ytaMuB;w1quHyMjm~ApnVWm{TzDqwC zW?&F&U@p#*2Vi2qerTx*j4PLYiIXd4Hwuh3nu!|^k&~&K=fwfuuPdBJuP^9Ig1yo= zfnJSbeQTT9Ogj0)GFhe;EbDt)S71r^wH^f=v-1Qd2#dxdqo=J2(1Cc|>v3U2VoU8m zSUUDu!pI`JsO+_8D;l`sqdYitnKbOBs4+HPSj0*vSZ#{gh zMf(BA)qZ;}|LN^bsZGsK*Y4Sl5$L5TluIAsJPi9CAjg}fQwMPX7 zWwph8NS13^TS&pbmRd{(zxP;7Q(viCOjlE&_GA!_5ugkMUeBd_#u87LvdmT2m$KDI zrIznsWV!Z*U;0{>88`If{HQYbwZ(K%`$=~MX7@w4fyQhnnl(zgk76zy-xk0Io@y&g z!+X|$UMYlM>KWHH?;|-$!_$=X93C^PumL9YuI(Oe_+Wq)BM2KzlUHQWJOtc7`EwoRRMRg7lrYY8z7(DT}CGm5yQm&;v4I4UL@!V=7?6ZL?Aw`Y5UW4GLLo)DC2MFo3eb*n)s45rF+wfTzMK-ZohoE-OqR* zo7tk5j{ZeokN*DIqSFCnan_O%_0JVg1m|>|R%JISaleLZlVS+Pt;9G^8folm^hK7h z!b60_1U9!{4-f`K=*V{c7@-ANmnm29+gKP+Q7KwO2V#<5`y4C5d0k=f64{Rp1ybl6M-VpT zmRF&I9 z+2I%I0nmm#2rt^T#lQNb4`Z#%v`}p3d|(}9FTJ39K<+!S`(0!ipswHW9AU^H?1>xZ zWqPLyWU4s=KhLb_u4InJ)Mnob?(P0|%i1Ef7A@8tSV;)STgop~rqDgyQFoJs_*wdL zA2mwojOd}lRpNa%-{qfy>793Tcq)imW73iuV_g-+3$iQ~!*})ul_vW+F)~Kbc9+Ki zfjtP0D*d0PVS_9h*n7wRS3#{qmoUt}Ml4j3A`xn>Rl9L(~N$E z>Hbz6`nF}i8!ko#fauAGqW=Af^eRae&(AnJmy^l#yagRoKV?3)d6r+rfb%g&iUK2- z9*HPx$b98^%60HuN!X&!g1XUdm+R!@>$MT7B#>|xRk*<_GlFS7J@f?xb-mzLP(bLc zac~*;yPx{dz(mlE$kQ0>q>EXr8GCS-cqd7b7WisT(v`{QZ^t zWe@$N(+M1{9>|(gc&`oqSK*sYNv7s?Sa5Y4S@l*+v%Jul@$f5ty4y8=e)?x+G}Up_ zW1^H={w+&Qb2Ms3wUw_y$q=79KJ97mFw3B4)qyyf)orbhbP;XXHI?IikFj5Y&6!dhi_o} z92Y4TjQd>5ubipN5e>@V!h6>F%s#Jmx7ZNAe(;e_k!8U61E_g8C#nOB=l!0}jVzpu z3?)+*H-wp__*g2Yf9T{O>R~k&6Y0O-&9F^2#TsvfSoMt0q$` z`?wHK%RervU$t>CeP5_kcz zA@_ygT=$*jyow{AiTFJcKN7gYQT&Ww%2}`9Nni+rHG?No!@}by8or-Gh!`NyhRy8U znjofZMFBR?;-!JsyGXM#p-*j($7|&QaRcIlk;Np_QywZ^?DAhd;4p@uGq>&4^6_AQ z>`UP0di4fszZkVFl_0ang%|njV4;}?+fP1wC&WOEtE@JraTXLAoTwA`3qxj4cS(D? z1=di<#GeM<3HzuQvknv4adDo9cp9(4y zSK?%xyPdk5g~xp&fu{NJw_W4E^`BhNq(cQ4*#=`ckWlypkvrg>KX{&mmLe|)v;3p` zFW991fa8Zz)UG6BKSXj8=fb$lcnoKJ*M{lvozUe2nYFU#0DWSe>zSK|p;S7s!hr;h}C zhh-P+X5<`4N$UUO$$v)el)v6b;ZO3Bp3rek7100DD0L z&i-VNC+1zdXWjP;j6};kYI5W>2(jmgE;=23u`ec`3PMmpe!eK#1vo%O!W)qP#L*#< zXt>HAJ7xe-v|`n!1~2(Caby~bBy#Klh$re`1>VbMQs{S9c?s)rP%$t!E#m3`2#1Hy zEMM6rLw;X+w7TzZddYrwM|5NP&O<5)l?irr711Z_$IwKTG9T}PP(EpJ2;~bK;$aoK13Qt-G2;uX z8-VtGE_lWaf7F!P2E8UmwL+0#COhmi#rZ-+gqO05Jq=LIBpp)dgtse-U7Le zZE(&Qo0K~ArAq0^sS~xd0!k9csVPxA?4{%R+>d;DF=1@Qagh3L@X{h13V{86$L3A~ zA@Se@fc=j{v4g9~@HRL?1NxvccQl!&iC6qB03qPK2(DiJk^q{({24Ef22gc0u+}!K zwlqU4WYeR8?`NX;(K(}^;GZcF^fuEnUi>w{qFf9+Du#h+;3FbZ5&%_gBM)P8nGVC> zniBe2D9C9F>J3HdM=7&b1Gnr+_72KSP=i1Ry+P=W2;GX=&b9$pc=sJzQ!K?>H@NW- z3%(iB2n}TAAaUeo7BanW5b}oB6PtE;U?X1}+xY6b7|W0cY=i|6$cm!j%6gQETHj`$ z!$NHwP(|qHoLup*k@Xfbw28^qu2;cuE+Keb&xm;I1Qyl5Nwl31r>?e!`FDeMbYAi#I9EyZZ08W3bdACR=Y;h>ibS|^ia8%z`~n$D5wZt%sI zzXZDuwR+lkdn9IB8Id$Hojr1?U6SVi$e+np*$3!{V(h+vapCjNj$#yAcHlOf%`}K^ z1=Sj3=j?3mkOh_raP=(Eb}{_s<<9=Y9HDRBwlg|PMXww?UpdXZa{l{@DD>KO_@5?T zKt;}0t*F;z8mWba7*OblBP`RDBdW?5th~)SVkP#Z1tLkQ|1Ohrn~HKB0~rum6)3jf z?|?sLc6;1yd2{zw=3jBQGlTb?26Mv)^NI!w!Uvzn_oC75Pgp_f=C(I@T2%eP=kifi zXz%Ges9$JghFlJqz%)%^|6C03gR{`akj2ID)XweIkD?{G9dZX6MWK zn@wAC**kJwKf~YdrE+}heEWB%<#3wy{VU*+^vQnw*yUySl!1B=hw|T2YzvJo#?g{P2#jNq=H{(3j6tT3P{WB9= zGjCNRCYoDb4pRX?BHK2)O*xt=$)11^9v}9Mz5;uP5sl%JKlucI>cd^{F{by*3#zb_ zVwZbaQf0@LjwtpVrUbQ-%H+<^$!52%Ea8v%?z7toY&9F;y#vn2BDT!fH@0iI(J-7LsQRHB_yUU(Ei6jg^qAVVK{QP4~mcILG!vqliQ0WXzhdi4?H-4Ysdg~C4M!__Se>U}7W zBLUSGyy?Ge zNK^BNIN`|RDV~#P1_e&d0VicoRSSpL4RpHzCgr*hzS>=mC3u@jTeI z5dmUqCM+=T&2gZ=NTe?SSXuS4s;OwqGvVo4hJ#MbcRM?ca-FvK`*MGJQD^RP^CHrG zEZJ`Cl;q3#CkyikXHMID;7@}r2P0qlo8py-x{@~;hPXl>_ENF@l*gmt%C420kLV-I zW=7BVz=AH!OuDlFy4J;Gz1K(_0Q2ZrqFRa2@VpS6ibVJ_O;C_eAI|v43PsNez2y*| zxWKiei;4FOSvO#axv-lPv*edTnVWLl6yzS21py!)iJ{%LKVc}$9|2}YM##UScjjCG z7W@#s@S-CVTPKIxCM8*B1B@jGv3<>J-fp8G4X5Y?>GcMR-#sbe+gheoffrj@u1LqNus zefluIb}d5_(V$u97Dg`)MlQ1zqHG@B3O*|?L$u=R9yd(-@kz80T>3-qowEE{(4Uu_ z@;zArldk379P)W!Uej`|ciNM5qI^b1!Suqzu^Kk+Oz12Pl6FpEC0c=14!^EiZGx>r zxk&y<#tL5j+lI~~w%La7%k{a8^60N^0U>g*Z6(soY!B$n1e&%fqNF&0joa0C|kv+O1@{!4@NJPTC?W9XP-eV$wKJ|ckJ{u4$? zd$iOkfQvJefEu+QKooy7L%fU{-e3YyST5Z<7{C7$L3q1MLi7yDtUH5N3PP#PhI)@a zWF(E&vn~cFmAtrx3?oA}?i|Xu&CmFeFtk#2W66^bt~HuSK8{s3l|I-0)KvCapR$>J z>k?~^KV&5LB3uP*@u6KE2AGw!jV+LhIO^AI6dS&MOMxJL+bT+WISaYRsu@assV?hTl@hhZBAZjAXCPl6 z-}<}l0!12#$zS|=>`>Pn=WJuFO6hT0Q)O}u>_;H6VxTrBMo~oO29AV;+$cR2Z6BiP z0*=vml$OiCJtg?|wC>s6nacw`QG}qxo~UgbkAIGN4=CNSqvio4ah5p~ zPs8DV6CiZXEZJ1t`@o5(dRZ@+k!2+{MC;Qcz8dQ0i za;0}C`?KWXfOon%{fAlM?bjOa4?|WoN))1)G(AcZB-$$;odO3BD+?!sSyUH2s!&MR z7qU${N2acbxb)A}vN~F9zqpxjezb>C2i@4Wv2FEn@1pYjNcSR-2W916o;i}_W%)?< zn26}Em*IjM#u(ph9I5pAS`ACLH!toip&{K5n0-`OZ-0+H9pC9+;mouNwiR_rf{CHM zKX+pVP|q(YFnd1>ItubpmwNTk-1YY6m#&K_CW7$KIa0*! zV?_1DUGRQ5(&bbob9ox3Wlv{@~P-k z@-(U_%LlNfYGrVtlgbmWHb}a-co-Y9szspy$5c8WTOsVl+6^yBfPfzPu|EieWJo6PqZ`6R*T_kQ&1p_2_szX?V z_xtf~>qde&D*C;zp>T1ob{we}bo7%6l1#?!1*N);B!R>jw_`cfOErk<`u-#?xLM$$ zP`)qWbUN3d3D_Os;hTWR5t&2Y&%;92iH4`!FQhA@WBAp3ICIg~_l~g;z8RwFrS|cH z!26;iou8tdsQ_viB=TgQ03F4**7h;OBNHKPb$KHCiByo)n8agF>sDo%K6YR`*PK67 z_2r8?JkrM*Pln7cx4DsV=7(?}?rx%X;mBU$<-g_UEU-F|; zS&OZ>-{ic_xAR#q`?O+-VG7+rDho`EO>Hz;DjGF46#%(91dqcX~jT;Hc)2xd*6 z7Dy25%(NA}E0o(9G(_rkcw29+!$BjQycSmA7v!q1Ed@h$dLSl;S{@u)%U<62Fda1p zVdEZ?md$1EB6B42oT^*5_^tA(Sk>n0ZNX@WkS|Q_rD{u4*I3&RRT~y3vcQOw@h!K& zI890~9EsM=oSC;DsI+#-c%dg*JXYigP|+g}Ox#m^F_%@`8*|QboN^|SWs&n(4=P}I zMbm}FZnEbDGXfCZhr(C@CO}RW`VbHSE&%|74zMAFj48#`P$n)JbK__8JqgT*u zWb#AY;Lf@pi?AuTwM3Y3^LHVQ=5=GABkYN$sbBUCHZke-R}X2q^JZ5^dW32&eK&iC zu4wO?y5L;-;`{}#LT~P6g=THfkAL4>s-%&pHh-vuwH2T7;Z^clnrv%aev@~~dv5qe z)9Tw|{ge|H?a$XIs%&bUN7|b=K2hA>JhJF$`957YyFT|_;ndcbc3FtX+-3aE{Ob$| z-NF7ZB+GTJSW~7*Gbh{-XuEV-U-pTD)(pYu%=3qD96H zr39aRtmh0uI$JdbD?dK{s-gV#m0x<*D#qjGgI8qT1jbexSB&zp%hzi?m9x(j@ir?h ztpAW0OX^Q-KNEc4Rjxw9?es$rW-k*n8xHN}_6uINF(xm(t{pTNTQy{+=JHh8)V^)L z@v1sbmQrDz7s#64S*ZL>H&x;6!NaP|68%I@xUBPVTf<_1rkL3y^B4a=Td*x)V{W9Q zb?ZybtV^)bjPlMRJxi9px~KkQd5B*t3U&5?w%%8x_)q%m!`<&;9e3sFw;n3&{~R7E z`?MKy_ONrarZt1z`Rvis&#fn|QBjoRSHF~aiEeA>3{SZIXA540Dg!)#G@}K7|N9I| zS&1-O5OyHeHuktT7Q*+kDLD1gNxS|ke)F}l$1SF*ddb)Bn-o%`;J=pz29=lU)1V=7 zu_{@W7KR@DyzR$l z#DA2NPmXa;R=Jcpel6Jbv~9fD+deY%0XY96R5V`&t7tPv$zS^Zmo<2cdL_1DQ_q-v z=gXB}Sg)U~lX!!$sq|Nk+#7kSm1zAGiM?mfJtxY}*C??0HG6-AU+qYjzq>m)_3ZYd zbKTuP>vJz%;C5_hLjAt`+-fFBV2pJz!5e^ndu z2hHg;Fh=dZixxAyIf*U>xlgJpImV?GfFeYsWjc-0?v-RqvFTdFt-o}{W8Er>!jvBv zM;u&x#C?4{)5K86=ioA;vHb00?Q@qjSuS4DiT@)bdRjV1X2KN9d?3sGeB=Bx=d)hI zOuSWX**OUC*&D<)g5CA=dail7IXbOi`Jfyx(iXum9JF}kj^!0ICLAg&Q`(dkUj`p> z+`9V>PwP+PFtd2GHaR0e%Z0*5pn3v$$yEIQ~ zwFB48X*=4txzvydUTv!{3QJ7MtTRD(PyZy-pLa#dQLHP%Tm7z{;@e~VWuIQxOUXg0 z%i231`RiYr(QoPOeGK3le)|u7@9216G7AJ^QOA;DUqgswBn6wm;w)X})WWNR`r0MJCCZ42;$1$dd)|?)RR4sIdr`^o5axx%G>zG(SPET?~}N5;=HcVl!@mulmqo zW>dw7T){jw-N`>)RN<=j0j1FVd*xv~a{sAVHL5IZG)}GmY(|c{P7YfwVvQ(?P?X$tw-87#odPbR&JkY&q0qg>$kFGndcKRb=Dpz zcijLUBh4&mLODUtS4N4GN8#x^vVog`D|C=lrIFM5(Phb~WT3|Q-Jl9#0BxWjFT;Df z+D2ZqD0L;NFy++7Y))kSGS{SEh29fGJ7%Q&bDV40pT9}hYB{fT^s7%dFJ2D&c?sg# z&tvQGYvodDna*g9*Ob)Pw*rR>+(%<`y7Wjc8%`w*7@aHF$|Ze;;m3*`3=&w`25Lehvvehg6s2}fZDCZgChNJ zqdJf2o8Mg$W`mi4kR0E?C#z_Lee_YKV)SGF;x9%q8pc)uGRyG!_&=DncX5!} zpDwx*SyGt+BT4qeI7nF4f~j;*Vs--fVd$ku!3rs{SP93fvNT>z?xh%mIpd{FlZE@% zraVmlG0Xy?9bgauVss7^V1xe05Aq-=U<|PZ|KF;D@kZy8aT=hMFnUeQ^xrx0RSM>m z*UUgeS$_srKUv76v3xL_B`B?@S^1KTqvBQntmYwZu?y;KN!8E4^2l4_T^3AVSyw3B zH_n#1GW7iE#1pGB(}$+b)gQ`b5;)lel5M4nh#SR)r+90tY+5{mf=pC$hH88lhaQ@> z*3Wi?{`}hYChMe~V~y{DF8s+ip`uu3R_7ev$~QSiu(^rW*8iOoPu=)O;logmG;exU z@5(@ds=UmO%Y|p{Ou{)sP2Z>gdrnmQazWR#g!6P>v+IYXc_G6{bz7^_vT(D~R8(b`?Oe#h z{Ixe``>|4ssVW~m7H=uSY+bzFg_sgWbD+}6qJtm0#r*wJa~|n_n_XMVwlb7HY0BSX zJn7<=)H@(on&>tlk&|d=>*AMZWGn1t@pPr&X3P2w{pW!_t}btq0uc9}l|YOo7Knoa zVOq(JN%E{0c2`OgC90*!&oR*j$pLuI$~futOM`M;o2!p2W0gItN>buwzE+jrv1LuM zYvDDCtX;S`nD<4Rt~xK&I%)H@u5G2-+qtGwbt5xB&pqA0{*wQM-~HUS!TMpfUoq3Zi^X&zqJ!=aVF6N1j#mjECEg5oGR!YZvE(tN+mre#rv)pk?3Mle$e6hDu z!-$@L-EQ;vSMGxfOH#7?XuF0e^y^Ec+BeF5!$-ExE|KPrzHtHO?Lwsb5;y7@b8WdF z1L9Gbn#c8#2}&-GFFV9u&&h)=*1dbdMtJS&Lp_a|b)Lq749ZWqA8yF$CvkY zWV6iigJHSdx$r;qqx)wI0n=wm3H%gQF}3C!R5>Pl`I6ciQmu-v`JvDLa$bPSc?AR) z(`_%;5;ohU_>{88u1S8bHFf!|n+F>_pR+U0wiq9^dFm7zJ@Rh=e}0nphT{{f$jJ|yCf04H?kF9pF$hwbgi*^ zuV8yND<_F=8lwupQhW`o^%XtHglH8?IK-r%klY^=#r-yBvFz#*^al(=b4}j7D}oHA zut#;i6*M!?_K$Ii-ro{)`Q2W=GnfIeJP^a{ zPhn1qEd>>annbIVWHDcJ-fti5R#q8L^ZiA{9O`DAMVE^VL%)d5dyvVYgiPyN$v-`V z^v(z;&Jzc*C8s`pX7};8$;_>-(Bm5#i`V>Bf=;V4kTiXl?5J`-d8uF9-?M74qK8*U zh05P|QMxhpm)~z|w$7f#1n1aNRhZ|vK5gAx?Vv0zak$Fzbb-yem$#qr&n8&y>#{*I z#li>{Ue;d{*dgfNC&nMv&!7HkQ!VqM+9KlXC9cmCbrSy7PM6B;`b|GJ7W}UDu&8nT zH1x6M-&;ayHBPIhpW3H>*N2YOIL8gyMa;YfPT3TkwVv;Flyk3eaAU)NI<2U=jMK-z zDpU}S9<2HCyD@L1_J-P<&!cyCn~K@$JdA1_An4+(a*H}IyEjuG+jpBOX>~W<&8Da5 zQ@br~BXzez-dvt#w z%A48EJAXQ8Y|ldb&E|d-sCE8RF{}j~rVqB4%hn-MKmXD%eRxIoMRbh5xIbWQ*_icU zcu7KwzyHTrg76pJ>-3c}!KVPqMgLv0jp!=U5GT>jxtMSz6C)ujZM^KIerZ^HpFZN7 z-c+<|zN$IBKN>pP^ytsYGLD$C|-yOFQ99S0vM>COM%5^|hA_}DhuTpu#B z;e2@TiHcIKhFjd!v&kR&gOKy#t;?9<3RlZy$d!`m0jwXx%EK z{rwZm--R~$Lf?HtwFmBHg!}daUlARXtGc_5g-32*X$2trgyGZK=%-(t8;01Af5bM4 z35UMznENyO=jGwi7Ky!+20y>oBY3=>c)oLi@9o}et>c}{jLs#=^ZP@WkALL7?OaiN zyZ`d-U!g4^qIc_^FT}TZ!x`Q&X?J_Ku_gxFGW6JY_BgnnCFqsgu3 z1dqgAhCP2B!x6<}%+A+_lF5tFw8zRBhbyR`>d)nvyFu=gIHwgFYrJ;i?Brckzwaem zf32l(E=-7;M=Y)()+8^^(Vo*RG05KT`oT6T@?;!~ZVWUu#5NQSSaF!OMPA;E_s!#w z+l#ws=;3C}@2SFZ!-IGZVZ_`J&+#sv1(OhKpGeM&vTsFQl(_DeXXr^6HQp3S_Y7x#-x;}EH!kuI!p zQTb`Iib;~HLsouXwq{b++0XaK|6~h!5|susnRR1u%+T)CBB*_L2=4loy$`8bwTIfV~-mN)r_Ysr>f>6U&OHeo51 zLRpv3cb8eIjeEJ2f4P`q6PR=Pk=<65^LLm6nV4M3n3(xAjyaVeNr5$qmd0qAmzkNQ zSu>kCn4M{sl=+ULIhv*Unh$fDbeWol37QkxntKVGy2&uI37I6QnzqTBxapd^S)Ah1 zn`GILo@tc9sg%P>oW>cQ&4QeSxjf4`nawE>&zYOj*`3TnowRwCtN&?{+sU2Yd7h;L zo{@Q-c$t>vnV9GqpSU3p+Hef9U|A~4I!z{8l;sPt-xvk!djTbN|MqtG-ukWx0jS{$350qQmx`#=Dwe)^qq4fL z(CM7lx2^D~o$3d$od~a>2&dsnr@xA?ajCD#xv6RDuWZ?_ZYZ4bIEbFwh6pQ*Vd|{) zYOm62uKD_^`>Le^#fPP?@)d$R=V zwA@;@FAKG^s10#SrI`@24g0gM`j|qCu0%VlM=Q2my0lNbw0&u_!iljk%dKatwz5c{ z_KBbR$)8H$v(pN+bX%S1!>LD^w`lvRe0#Z-NwygKx1Jlegd4Vo+oz68vXE=7|Cz3M zTagCKwSzmenH#&E`?Z(*L4`ZIZd$rmJGm2^xBfc21>3ostCGM=yS00}xZ9?>Te6WG zo_E`{|1bwW@B)(1sKtA+02`Xbd%dEYf5{7}%l~`2sClibn}5~-1}_i;X`l_TOP+IJ z34%xuhF}CZ00!(ku&wL8!V9*u+qe0%a)>@DGk~1qA88uM5C5JG^OIyBqw$$IHP1?4{v5x2Vgn*qVO)KmyEQefwYtIDi9Z zz`p!21~?D{V*m~(8Nt414N)+|eh_^6M-4HM!5z%MA^f*Ve7vpewznZOOdcL-Qe4*k#z75op@@DKEG27o}YKHPisz`ow#1G_-GZ0rYvfW*k_#CY7l zORT?p%*0a6qf`vBl3T#NtA5Kc2RaN6z5f>j4vc-Ja0a%!#>AHfnNYa@5DPC51zbF^ z?%Ky*+sS(Szn~1te+;F89JGThNrjw$@-PQj@DK3t0r$IqnJ@-pkOX7!vXV>=gJ8=z zP|0TNd%1uEtBZ`mE6T?l%E*ko##_o$JiyGG!YI4K3RnzB{0}cs48*qySHKSca0-yz zvhPcpf00+}BM`M5n zy$1+g&<#II4*zfnkW3G8&;`HeDE%WLA^&a0fDi-f%f;l-1w(KJyATE0;CtPG1u=jH0=&91uoTaj=x0dU{6^j|zYt=o9)mE&+s>{_zOV5@; z%3>{_WUbF;-O^~C*7`@)&D_>*jn61t*3*2}b4}ODyw+8X*WUToC#%(YI>Lahu~dDM zgl)olUBz(S*K+;Wi!Hj3o!KE_*maAwiLKa|9oCvX+8)8#sT@XWD$k*f*`(dt8DZMa z%g^q)+I8*Pw!IOs&C;^Xy|jJXzKs#Nz0cU0m#Q7wzkS>l5!`XT+q}Kl$oD}W*HC=f*#G_A3!&X;y47H7+~9rQ2O-{g%H7><-RS+^1EJoE`q^F$ z*zkSd1|Z)OOWxY+-1rUO`aQJN-QQ{b-}fEhc01q%PO%1l;E^rJu|3>rX{*26-~j&M zs2t&)`id29;qQ&$p3UA2(R-!f13GNI9)96g8_j&Z-Ia|HUGM@vkibOz52}#MYntK? zzT)|O*yBy#Fs=&b3I&}&o;Tiu>p%?0(A7GQ-XPAq{2k;1;Rk6f5J&!dy^sVra0Sue zd!3L3Ly!V-a0^=7w3_cLj zhcE}MYvwzS=92B>>;L`Y2hjyG{Q-55MK|uLn*h;^ybS-432D%K!(aqROz3AWw};-@ zP!8maF68Sl2WK$nV{np(5C^_D1aZ6!IH1UZAn4oZ=?4DfgdF9iE)dK>0;*0Bn*avD zcjvt~2T{-kbx_msjO)3M;VUiN8=equZUFM&2Uif^OfYE0W9Q3Y0HrVl7D*2;!0fT; z>=v%;s?6(cF4Hj(2ZdBgaqt2|kPQN{3r0}X)<01EeZ|M!3&_<}$9MvM1`4&k~z+qF1> zqQ2{WANiP{`I^7^k8k*(j`-4UlZ(&!q+j}`fBH=C`H!pjmA~$nkNU75`?5d#F0cBg z%lfBn^NTwAwBP%_|NFrIoVHKEuK)JIfBeXw{K`Mo4H5M>zx>c2{n9`E7(x6J|N7IP z{o23%u>W8EEdKS09`@Wn{^Vc&j_>_F-ul;X{N~^O?*IO0kN&u?;i3=!_J9BQzx47S z>bYO^06|Y4ymjf$ZTpu{;X;ND9X^B@QQ}036)j%Gm{H?KjvYOI1Q}A~NRlN@odi3`FY`=%jEN4sa{` z{tb+mWt?sd=hjsmS@LAcl`a2Mt9GnTo<4yJ%{-IsPq$6Wg|!CeMT|7sLeHFI>9tIH zhX0J<0OK0$GA1~>bOX!J4-Oxlz()Jv!v~a8G1m=$5v7=cWnh%co?SE=j_jc~jo}xM zTugGA_I2<6J^Xm|GQGtaf@6-nu%~?Bs6!7dIWRbqOz)1IIx>6Vnwny3FF^$tWUxU8 zAA~SM2`8kmLJKd{3@6Ua`Yf&4MpH_lx6U~YtRWns2cA-ZK@Y+1)?s8F101;mEO>Cp z#egBe04tL#;<4s~W3+o=C~IOM#sGe>sG}Tyj$y`tScde*hh7@oE<1d*DJ85qGQqH@ zFCUDi6n^9x!w|5Xi9wrvK5zuAF#_r5kPl?cPMa49G>|42!vr)?K?fzYP(u$z^#8)m z%JOUw_}LT(L(*dAiXn!$L%(jnjmZ)pSS!(x7;YIP1rjprMBSnS z@xy>!#xSC&a!43&j3{aW%M~V;>(YQaeE7f!Bb4i+7h+&XYv5U!>RHKL{ zQJH6^xn`Sh#u?B>J39-s>>?G>w6HeKgd3R-!J?dgdco5g1L!#ekdXgjOaBcCd4*i3`wZLfjvvQU1PgUVFJX6Osz-VxWgh|ht$Qf@Lh+&Gs4|=?bA$9{yT?dD& zcNyZmoVVw`d+)yo-@=_abkye$`$3AdpeI#pnK?uy)qogSB&w7%rmiUse2I!BI=YEE z#2n0K04PW=Q^EUME?Q>*x~%2}%P;_P=yC-J8Xyk7t4S0{unDkW!T*5{1Wrw|1QQ?J z!T`~lR<#W9f@uWnS@){R;@pFST*br)ovXzdU^0d=EQ3`=@s>=`5T^*Hz*q(VMC;Zu zjIj8D1ap8#2UXDvNsxmCc%lh0e9*Y(1fnSLh(RE96BFYR1qUEoVV~vzx9PD=N;QJX z$HF&9I@ZyScf{HF8uh53p|36LBT;DNF^9Cl;{#)aNk1~d!zAc1CZ;0Cu0XZFqT~Vx zl%mPr3;{tOV5%lBAO;!?;0hl3YEO(Pr2+hqIGU6L3zEPRcVH5Q=IkwnFablHx)FoH z5haK;k)ce^@B&JuUDnk0OT55iw_zL}1v*fI7Sy1j z(PPhkm>Hlkg?*tZ#;aBcpqOmp3hXezDem`3H=+R$=V=2aixLBh!o!^g=mic$xsJTW z#2eI*iM$|a2sYB>SN({`5H_cZ;q=g>eFMH_IK#y-3;22mpM zH}u%Wcn)ztdc*;!1~9}N`hh258Gsy2U_?=zk%=hAA_m+l><6B?50lMkqa^%*R*RZ~ z=K6PSX!2d4nIsAQ>ZK_PW?AD+Nh%MGWW~i)!s74Ju?rHZ$|fnLw2sIEcnN zd~jDtbYVQi7!N%*F&?t^vL@t}(&+XPhdIPVtYL9QF8GnP)6PM+F`-6q@i7K`X@dl^ zgvoae5K-LGgd3{RPbnY_4-&X$JRAlYGe8+wOZ3AU4~$7_R|}JKM6Vy@pkHHUJYyQy zSWy~cltLq$z7SCslQiMSCXA4R7|a2;^Z-N*SpQ=*a)j#&yNE(IV$uyP#2{_dF+wAE zapjtnV-BIh0vchG2_(scH@*oWS4S6a2<1*V^WIy%)!s(7{YI<*&icNv?kn0LkxT)W&@~VUvs846zb3k zxV?Z8Lx@4LU_xapx9kcrP@Rpny=`uHJ40mQ8D#s&V@Xxk+lgJV0pM{8y`J0M?}m50 z>hj?;Zcq$0&z+%w;}vn%B7F_bv*^A6j#s z_uS_{2l}CI-tx)nJLpG8deW7?^so$l+%7jd)1^Ljs#m?_PG>mOLvD4hcirn>=Qh?q zF4-PO9qeaEd)n0=KCy>J=jL8}+y_M&xx3pVJ#RZh$zJY<*WK?EqWj;ueRrPcT`g~? zltSK}kgzD8CX9cL<1-`q2T?vdkca$iGH-bcF$6uFZ&2V30Q#9YJ~&cvm_37C!cdzyJL8u-`WDWdeHPx8C(?q5bTOk9^cGzx6RmeuQNI zdFQuB^wIzQ^do=#(sO^H(U&~-!J>WYd!PEY=Lqh>t$UBVeeVv3iRaJleBztG^3{($ z{-6K){2xmH#s|E~=)d?Iz?%5K?*YF9WIhHFzXcq>+bg`>+oSf=yWWdB##6nC$Ue*n zzlZ2P$7_fUb2!T$ zFkD4tR7Om6ME?6jBOJXvG{Ix6MkQQEYRtqoM8Q7HJJUEwX{^U=ltPB2M~6(qakR!}lt^v-$6Lfka$LoNyh23W zL}HZ4gB(W>WXEu1NgZ6qgbc@)_fR!M65K&!4%A1WW!M0%ZZ%Iz&t~BM9O*m$Oi;VEnLh`#L0bh zN}trqCOpZx%t=;6NovGQfb_?r_{LV8M7E4aihM(h)Ul^S%Sj|)aRKmohz2)@G(-g$eWXzc~$@DZpS2WM5yw0M$2(nzc-E%(+Y>HFhNzGhKVsy^S z%*)Em#cEVbFeJ`FEX4!WM$|k{NYukd?9NVXMcV|;lC;E^Y)=A3MhEr7>GX=D97$D# z%W~97PYg?#q)PZy#q#9PZcI(h?pNj^tR5X`(aekPhm&HXm@R9c_?h5UDAm ziSqEXnn9}UP!I875K6@jL?WEt$kd_`4&snD=EKezGgPkgMVdp@IaJiGBZ?DAkrmm# zNOhyvfDsv?5gWk~9qA^T@DU&p5+X5@GFy@+d6Fm@1Y+n1JvphklvZLO9-=q}N0JHr zLXQ`#h5xCLSe=bAagb@95ml>+8_AI!>5(4^l6FNuP!v{>RJ&rGxnr#fI^@+$p@~ex zf&WfX5>SC3$TJmGQ58A7s&=D^Secbtfi;?_pfjzz>Uq*%Z)* zGx&fH@T!-wxK9a{QCSy1hyf^QgKA+Zy6FWd2n%`bg(Sd%E3mj-zyUvqg(L_bwQvS!BPswvU%0bffHE#j5{S{od2jX^ltcclq=g$byN2LBSc z65TNXMnHpppocC9HKK?DC|HJ4P?PGpp6sFAr->SvsM&I$hdEFoH29V}AR@vs9Bk_q zZg>G^=m%r77wn0Hc))=u0t?Rti_jh2fRYK*JsU1NSj7;$!GpkGl)%?K%ZzMXqHrJh zVV)SH3H!kxn$VxH=$|OCSDFZ*0V*J(coS|&pap867(g)zdI1W8i3=)5OoP#JA#p;%BgIg$wlM%r&dD%2e+ zT%}=|_^FtPfeP9M5;%>!DvAe=;F*|UQL5mYxZn)l-!QH_#T5<4g*&hqr2j%XB+*zT zY=PH(A`eNzfm59cOX|B5N`p;ephlYsP!c6lQX5o?iB%$CACR(CB@6=yggI-qe~N*4 zfC=553Eq7wu^Ay8HULQ&gPypYuz&&t?x%mkfh18RMsg%0pcn%{s&#k)Z&-!}61791 zs@T~De^m=R_NhGPBtDi2KOUuQ72{z3Ix?0Ch|P?M3M|;QD2$q6%#8_;0x3G436hG5 zvxPnL-m+l3dSpO`K!6@mmF>4%vP889${Gy|gj zAzuh8g`QHFiKdC2mXe;%t=;Oap_YlFj)|i#E~Osn%U-&YPNb6#4k05lBZCPfQ?fK* zGADzwLpA_vyRyR3GW->bFS9aYBQwUqRKP}qH3Mol`&FBYv;R4(vpY+YC?K*Ic!AGd zkT@W2KC>5BfVL|@U^jav{)mAgz!XR$0ZD72OTK4v5bhU%0?Z)_Fh~I(xLmKgwrq1P z(~dF&kcT*k0yH=Tppu6daBWAEiCr)PE7K~vO#vfdVwvzVFq3UrTN_=qZQM41HbV@| zW^k(0Yy&W6wSxzHVV&K+5Iot3Wq1Lq29z{N-UbKp5EqmOkMOkfgUdY!P!kj=xT_OG z?J((vLFj^474aIk@d+Vu&W<~7=no$-g6{6b@-M%m9LG;72lFyF^Zzra88MG?E=Th=ck?$FA1t@e z3S4uPhVwhe^E^i=Ij6wG({Viq^gtK%R^oHFF5@w0^FdeiMMrZrkIh79^hlR)$MjKm%_qOlHMezNH}+#k_GDM~WoLGU%?w%xq+)OOX{YvTxAtqtcBugN zvdr=TuJvpO_iz{YaVPh3-}d_K^I$Y%X)pJ7clURP_ju>@b7wz8FXnZZ_k7p)edqUn zhYEVXNG<<%e<%2YH~51`c%;k@Xs0Z8Pxyz2`2UEPcx4CpQXlqHpZJW|_>JfIROJ;E!?-R6HQPiY_+y&@?HqRf@+H z)t-0My8rkHQM3k?3s;d2!4pFuyTOHqRR8z^$v@qY@ET9Lp7Q~H%XF0Ow#mBrF~}i{ zJTl28tEs1+b2j!^WdD;@hO%LNO6F&1qs=AH9MZw_fx-^;lgSukBvGwFx0yFc&^YJ{ zS1vd-+g7`VkmLh1ZoNPZ8vnQg#&p#&!nHwul*iqzf8}})3%uZb z&^Wy@!dl1J`~GA3;XVH7(BnqzO{9?#8)8Hht+vH**efwZLf}5Y_|G~YT;w<4Kn-p( z^2sZ|JoC*51~Z&0*V*zuctW39Kby@=&u29UDpxTv81zCx4{dS3NOgpgh6Qy=>r!jCwl2!wHoMhb@Kkn^Q)eI7{>=VU_y428~K zusQ@BN|GZQqR=7#dWZ|>QZRmr&n>uf*h(ZukD~-{iVh*6^RlSLEpoAoBD>yYq{p&5 zy$p;p>kRk)WHYyD0}j*Jhd0KMHD7h18}!&kRt~W!dc*-<4l%?W`av-)K#CkpsMl1S zkqQ6AA_nJZ-v{Ehj~7775h)zi2Q=7;6wsqLRci}%46=(DG^-z2sDn57K@1KVL{@;I zpm{9l5dT1|%^~#IL{_Fj0xTH>3#W*Pvh3y%NOU19#1Pm1m;euWG~^sH*hN3cfvA7z zQ8s-v$S{b}4?b${AH*~!GN%#+K&)dOwP;8+`RK>YZO)HfkirdSHfIk91Ws8<&Z@fc`k=>t|Yh%=!nO)qk^qaOVz zNFM@5#E8*OF3Z#P&PX#ry@el}FhUAqFo#FV1`sibK^jm)j-*^+7g5NDL%M;57)a+I z;2GL3iaM2YD2}Ke%R~%fw+trWppH}-0s!~n2ZczfYww#wmbRLLD=@_xKES~TRP{>w zS^r}QL-@cDpum!w3UeKUPzV&ff;cF|APN+l$}Vt_0weTn9|?)U8F+b+IJ{s8K>dd^ zt}q^5?Q{q|{pml7K`S4`p>c-QNMhg8jWfK!2Y&ERWiJcVcD1udSLi|<=1{LXxFiNc z;E*JefQC%uD78L)>_1fD1DP7+vxrr!IF;gqAxz^R+(<(Vs>(r#Jn^9=fo?@!1D2oY z^(>NQPe{Wn-tm&xO(Q)_NvUT&GiI+(Y4l!s<163!(zm|$y)Sm9I~HOyu?^SRG{{_~IN{9pA77{fbW^OFIs=tVQS(fJj0g_VqF_x9M)mcBHm zGwnr4pZU&)&U2+TE$UH|y3}dnw4DpR>Mwd(z;GIw4*KUAun6fpLTY!r>*U6bNj>9M*nlO3;gVE zle^sJw(qxZJ#1Eo`rPh*H@rKVZdI>4*V&FYzVoeblFeJ#dLs6Q_bu>&6P!%_PBXRx zUhsu8yy0;)xbUu}-RyE~E;m1~e(ABog;R9LOMI?C>hauo# z4l=}x5$?wqZls`1X!xD-$dQR&@#O``h07+!z>j!@Gcc*@I23-_BQ(U|1vxdyHInl3 zz1t<`*Pgk;k1_;D&;uT&n5JELUYB(+;x&#C=2YN;gAfe?Y;DQJ760O4jSnp8b_@E4 zA$$POXq18<@}SaQvi=vYw`mSb$FJGxG6(vZNr4ZFYQ$nt3dp!3E2Z#3AcnyA;lIho zwx;*L**)%~li-sN`Rw9$gA_1xfNd=u(uouqBo02HsavMXSsyG1Eox!Qaj0Ju+=4;40@b0x(>PbxJ%l!Nfo;`- zK|})zTC9aAX{ZlE7@;0GdvLNLVs z7{MQnO;RkyL-?Ntc0v%XLssO1_aBh;ZelEhj_y?JtHTA zhj@^Oz+hEB%t1H#3VXQ6lvK%;c$HCMho)TMQG_8G*8d|!_#Lh#92?Ffp;X^L97>{G zlHxtYqeRN2yx~+_N~UZ|TX+gLfQqP)im8yq5O7>Ee9l!*~L4-5vWKfVpbzlJ&SVJAi-BiThKg@wyNM*9X(m#A%1g1a)`3kTI zi^Nb&9njuGyxj}1ia{LD(21cv+9N*Jn?AbQRN#!x@C-ztPUI*aIUr3&xaCwdO#&W8 z)J%=@2_e>KO%Or^4roIgoIxp^Lge6sRoF!>(Ep%G7R28K4qZkICKuHWF0Z_z1 zJQzew8U!%hWF43VQEp3!jHdA{hX=()+q_NOB+yM7!L#%x>*S5=R10`eQ~Vi(GwP<` zFh$83!6C!~7(6CKaOEIq4s_C`tI*FC$elNQz|+vuL+noPfE@~YjpadsJVFFL-X&g| zVVwmV!U5hswng}ikJgz`4GH8Oj%ED(!~D#J{TPh?@DK3(k3)Ea067E!84v;;MGBAu zj#$IHK!h$C%RYSMR1Cv#76cYS1UJM$H{gI#H04ypW+$eAgPZ|w+~(=Tz>9gewFNy`6gdQn>|FX#^HLl~Gy;Raw>hV3k8?Rm-&nIZ&ZNFoO^L12v4nO?B3l`oLecMK3VH z82n2AeHZ<7!UuSa0mi@;h$>V~9&8L1aYmp_jmP~&)?{tqUOGKP z5!S^XR%jUnHGBa5M1gWKmv;rN){sCh&_fDDju28{3@jbcf|o;x)xrU8Y&;nxtolN%;5sA;)b9=yewpg-3E}SR z>(;LA(pc=q%D z@A~2||Mu@+=-p$kV1syQQl-i1mPWYo8USIZYUygboV1?iKm7gJ^-xxF^M6jRx!Jl>f0~i4E zQRD*EDb+uWpj(;Xj#>g$#f<^t00Pcc6i%U5aD^!oGB1OSAunGWDh)!a25Y#6jzoy{ z+0t(G1|+&ga1`NG6vuHSN9;hvAVP;KL&PB_;vzO;Da*wzsPZn-gS3Fs2mI1?SVv_Z z$0@Eydx#2^^#6mE1ZywX^P2o};lgJ>?gT)p3xKvoLB55gP|8~fB64qte5p{zIfr^e&&WQr%K6?NVPK$*HF5 zKdfqCBgMH=RAC3VU!?Rolmnc&6ims~ISd9p1Z++jfN%X2VF(pb4MxHy6=pQ7QxyhO z5kp}RT^$t$8ekP+U@Q)F0%mM%VR-CdB!N$;3Nv8FEb~qs7=T^jRV=^>Q4Yp=5XQ{b z>|nU<6%>X<#6Wf(8Gtjlm$-?aIEtsZimy0}w>Xk%Zvrd!0(-cN*SL+}IF9GIj_){+_qdP$c!O^^_v#sq z1OK^^A32gIxsoqAlQ+4Oi@1<$HH#JblUKQwUpba%xt4D^mq&P%D{zN*xtNbRnU}el zpE;VV_?OFgn5Vg$zd4-8xtz~=nXkEC;wP2Uxt{MipZB?+|M`X6`I_ouo&&m}A3CBZ zx}x*BpwBO%FFK@0x};A!r89Y>Q?T+DdZlkVr+2!if4Y~$cw*oAjDxzVpE|0ix~lgV z0+0Hj#Or+9BZk-8JlaE#+W&anfB4C- zp@$dz$k&|@M1fX{)I$tH&k%;;Peox^%{36l!VCP*A3fc_{NvNS)UN}f#Q$YAJHFx% z#%*xE)K7f@Mu8770WgF<>CE{2Y=Cze97zn@cTXR zTmJT!zxYpn^^1P1 zG`R5Ji);TBGK@Hp;lYFjFG8${up-2a|K^-IM{n3BiwPBG)^?wM{i$ee*OAQehivl=Y5;y!CRN^TsevsV>pAD3kSw7F^1HFc*+O~A4Wso294A}$)OhIyJ za14o+&=nIOP)hBM*hLcJf3A#(;R<31I%K>kn0bjMm-rb2hZx2H=c@?~h`}1Jo&w7) z3{~putGhfz%qqM#oQf~3IFu_f6A5Z7MG*7K&_n&E%J9S*8~#2H0v z)6JMFyDYQKO#3XfHxVMuG}KgMt(?9*iVY!hKIrBjBQi07nis4|$OmUAdNiU;&_Jjb zFg^^_4|=?bVHX3|!C{wwb{S$H<2I!ymx5{;0-S#4h{J$dm|!Q4Ir@pgn}5bIq@QeX zc!*G%z&Qp+19o{~5ZM$0CWdJYn1&jHw4uiUOQ2A&rIaqD=L|rG#4466`e8CtG`n=^ zMk{YbQ!%>gVlhT_qb#ysdfQEE%%N1$??ivYrEuLG!T+@JUn%tsIL5UMUU)R%UiWb<8%`CW|3p3H>NFN%*OSj#6a|Vgnq4XbwOA85biXWTS=zc)&u# z5rm>ifuCC9_@|Eie9*=l5~g-L6Nq96M4QN>(#Ak068tBPL&!qtnim#Y(7#g72p1x4 zV!(lzg|ALo!y^Y)c}E#Lo)_d}IiAdAkulC{V3EtrF>`>!ytiS3kt7*qeU&^|cK`al zd@Pfx+|c#TgY=5s*qO?g#?phTLoMGT(qW<;@(nXD?NQxWWhsHQc22}##` zVi577uH_Z3c0;U7>XH{S-u;k_Pn6f}WS1#?jS+_{Gh^=lVn!`iF^PdVZb~`RHtYqD^CYJQl$iU=rDS}yD>U?CRC21v% zPFzu7UK6t8X|qH`VN4X4NY638&MW~7ho|~M4q#v;3V>M0I{#`>u2{HgAGexS8Y1|Qxc#FGhS1C|%Eb*;;Ib45 zlovhVFbvf&0tevPMQr%t3`h;b0O0AwEe&D_T&)8lhlnOU;?M;plH(A&nnnyJCs7|> ztY0VF=0Yb*I>p9uEUY_O9*cy~rU0t2?|SDNCo9<7O)Ox{t72m*+u4UflzN@LY(Bv` zJvCyfu@3{7IuGj4(>{rftrgyqzFAt+;dYA^b<;%$={=1aGJJbVr1>TjgBbWA3a-c@ z7Ghw8T%d#*(TM_GAyVBKTsI+LklJKkz=$Elpc4sk#ucKQD1>z53@`A3AIN3^Nj#_x zQ)8O}-e!Qf$uteit;5u~(f?l@bfIaG0mcRT0)XvHmdv5R~AVi|{4G!&Kbjd7e~9q*XOJ#LeY zeQeP{axbHWd=p2H>n9vqL&UIcfmF+BLJm;A%Z#p8M0Uc;T)0xa+Hgl1|Cq6{7 zxiwLCMjf~@Xh~0+(v`OKr7@jpO>bJqhbCmAjmv1)aGKPmHub4dooZFDn$4dDagY0-;5Ij=$(?R>ulvua#&)dRH0y5rvC!MJqMsQ{<$AxY zxBG6S=-TaOALb6=>^Atau_qN!akYkRJQWX*c!e82q6`)2-yL82lA#Xr8~Y|?@hDE-?rU{E*Zl3J zjdwZe9o8Y|w)tjz`qp#4hw!{th4ao$$=>C&tbTW|U^W**s>-(2Bw&vX`letNJ! zW9YdbJ?Q(~pvF&3^l9t;@9#GK1RcBZsthjS{hdWffTPRDi- z@cOJrvHuQGx6Xx4tdEZ}&hQk@T|f_vly3uZ(CswM>4L5Ac%~C-koB@@c?R$U8LQ!D zFN~mv00rxcv(QNk?NA3ZjR*J72U(*f)=vm^PVn001F!5#(oYF%F94rscSujP z!f=Q}FtcJ$1g8(3ZtxD1?Q_h82|;iP-B1Oigy;ef1^Z0xnrNYr&|IwW6X)riQqiG; z&~p|K6X{R)1nJDOP1d$;*a9o^Kr0PlZV(fSqHYf9*l1q*NMJapbkvR%+fWgkaWJHb zUjM>w3NMisKj!@)>I;u90x!p2h!1ok@eR-Ku$a*=GL8UO5eAV69H-H8pw9+p5gTvM z7Kv={dQjwmFB1`qp5`&2*upT#ke7~!_TuRay~t-A8T8+o$Nd{T~p(q5L* z@t}wiopP|gvLj^={sJ-abn+=-^6MsTCgW`vqt4sTZ7v5*EfH?d=rS*@%r3Lf9{+hy z|7emArA{vilhF85*$Oi;>+CS=@&0x%|8nsyYZAE>vof=cF{{rqHFGa9v+n#7GT}`$ zRdaG<=N zEfad-G2p=mjuRnvvp40!HgPjIrPJBmQZ(U`)+R$9AdJq)ArmOcx2WL*mJ19%Xfg(2 zZ%~39>cEedfe8j|&LU$O(8~wZi)w@u2VNi$B%?jwQ!+Lo1$@8g64KHF3L>GSOOXaC0ciyh0nxX(o6q-``){~@xL%L*d7j5H zjN{(gthPQ<)&{{zr(dMxfT|468ZH&L-kH@b1Sxr*E!3OIy$IUob7AS)ps=2siLPhn zIg(-?0$ie*9mIG)YPir;py2n-hvJEJ`#>&(YY_Q}_8K3YK8{^)!=P^y5q~zeTc&E8s?Q73 z{;YMEe?Z^+%;esY4!?^Wgh6_%jA06=ATr1_6{B8>rs6@vvryX8GL-%sR24w9oVw-x zYU+$(`Yiyg89R5;hlu?No0=W?Cxcd%HP>ZA@0Zi0U=+ThEE3Ns=*bY)?JR~&7Ie-E zQM}qDk#8U{)HKIM?=g^y$AzVU2q0en<%#UeIR6OhX&Sees|vbA=>F$r+qDjndDVjh%tb>cK>O&(#|!1U3u#* z2yN#C^#{PWXN(TNsG2g`;6Z2_O9duoPcV?$9}82SLvW?|Q(a^kYgkc|qifo2)cGk| zENs!|-eN|k*OKrjmf|O9@T*NmJ0`Tl2I3Ep3poU+z>}v1u{s0LotqTjESN|UL>oCY zT-42H8US1B0}ycvv_R_da_;axO}c2xW=r3L1;96EG!h8^gXikPIk;5liMd_#u>F2@ z_;G6M!-*ygWbnBLnn|!UAJ89yXN^Y%jx0dfad}94+Gd2Jz{okYnb`>o&0+GAgcTVNM`PqvNs$ocjY$k{dM;dE2mxp zay5j<37SXP5Rgy15SW)6DaJorDnAG*VQ3&rIR;PL`eEo@o_YTGsJ*z|<@e!cLe z+oCdc>k?#vT---o-;d*mY$;y_H?cf!XYpjT3hLuW|HXLO=6I1@$O28sLNf1%*s?sZ z51Sgy8w|{mfy3;5616zV&{>%NioQr!D%X5ZACc`COIiO+9UEJD@X48!G14cZz!>2S zL&!U#2ZG?ld(jGLXUy$q0&$s4{Lc6R7$%zc3u1Re1qPt%u#z@VC(w}vZc$6WN2bnO z`_jtvIiqCc`g-+HG`oiEswf>3GRGS+1u{Rgw zr5hEPr$R~?`b#*g9gA|Fs_#(rII&g`)n+a9y`}C8R>crhF&bu)8c| zViS}iFTjJoV{6E@iyQdH`pk_G|3EMc;)d{mLUa}Y0*dG!G*$5%BRL=qaVK zb=6p34X0Lb;4jxAMFFHNy6Sf@Yd9x~gRP?d&5NHYMLW?C_+z+feq;1;ITOE&cjQVe zat;1d_sdVT@K*OX%PIYI5xS%C^bK1Q9Kc;xMt!O2*c3)n{D6Ujy^W41o0+Zfi~Mtw zEu65nVg&=&oKkf>AUC_Rp!8;%(_`<-n^k@u&zphhGSooYwJ4_%iM*tcw6!Q21C%A! z?64xzYT$uv)G4>n;_~ROa)z*b+P4&|=W0q`n2T3n6^m?g?{+&r#Md)8=lvA%B?!%M zguKLC=Q>x=L@A+t(J?Dp`NkUU*RkHFlJ;$Mh4$t1uYUqOt>Wl-;5I8S_B46u&HU#uVxN*Svt0=H46co?zYPvRbd|C1JF(ocdC9s0 zAmHt^D)oMEGH%KFsX>PrcxqBuxb(1oDe^2tA~ece{9;oPMx?_eDyrek8yZZU`{{-G z1+FU|ON!$RapPA%?I&2!%kIbvJO@u-80Ed8S3sH?C+;36SeMwuH-)SY^6 zWkzcHIF15L0Sv`_otk<%DZ)0G!FcvReXMhuu`eQ|<(#0e@Z7rqe>i}?YonUb7gmm| z(_Ao)`#YFWHgKJpy6x1T-@YywgSYzt>*F@xZlRM7YqRQ|0?JI9%ZbpT1YXUC#_EQ{ zk!pm-lw18&rU0B|4x);<+2^wLabU67lVvPd8C|eCcB5yd7uMpU(ZV}GtFT;La(j@a zXfTr>(}J1U1j4#d@X22U$JMC=AR#3F9B4WxP z;@8?a(65ra5z&4ws7LK)DZge_+&TEAfi3*AmxjrZ+istNw$4QAYPb!BpY)~tuTONka>w`YFG~?z9F?DEOB2NObcA~51{y~vL$~2L-!i5IaLBj=;r+Les z^)~XqHORlnt&xE(N5Gff$g^_Ts)@#`)d$UAPOMwZ<1@G*Kf`%`J9>m&MF5=J0h@aJ z=v@EZuV?SiUe6VYFwK_%q8}PmMmDm8%c;pf{jz-k!>Uz%db5xR3^p?QUHJKT`@30T zj_J!g-0u|U2|y|`87h>*sNE)_KJveq6r?Zy>Pqlxk^A4l=X9Lf-B`7OuTMz7-;sd* zI3k{$noXG?S>7K9V^@lRN>vOd(*FO&{iEx}{jdHH!$Ol?clZ^RT;o!! zT;~1Nr5`S%nO6qkIbCi1pRTje<=$lZ7wf$d|C!1($Q-?`d9YSml`rjU@h*k^RuoLJ zZF?-|37O7B@X>6C3EkaXTg6xV*R%d2)zq$ULoaX7E5$+2o7{)$yst?fw_YEwSxLO+ zYGjpj|CCsFs+y+!=5*)1(SOW_VK1FJMd5$D(>Na+9!a(bsf}JKt$o)TV_|&4rE>S2 z`ejl2D3|i1^Y0A9?+QyquAZn*FY1PUj{IP9_F0pR#(LTd?{=}Q*~)22T2<`r%y)bU zVH0$~Z~lO1fpyIUjWuu(XBwF;Bog=9hcrl18aA zf^{m?ol^vtlV>Pf9l-J<%ad$pPAGD*)2(0KG-UY zFgUDvNRa!(_4u)kjZ;O=I%Q=^K$O8@c?t9Q^V;IT#KZD*=Pu#mn5V+-)hVURdkrsm zSof={>$?tWTPJP4rskJ=)z&?^NZNbxM3}uXPqmcNE`~-$kJH0=_Ydiy_9Yp$R|78e zmTxJTKgqXis)DVday#q4Z_Sg3PlXzX*X!%wRO|e?HkD|M?Y|MNd0a;v(V^ZYZuE=r z4vch-d$mGI-k!~+;RX#o^lHmKWnTk@1NtvJsOyK`Ybc3V33hiiyn>ptm-x?qxX;ll z&kwNLIg{`}}G!a*pwr8Bn)=b4n7Ay6TXxOnbif@Z;pK6^bH{iblP=YwfuWL3R?u zYZJCwFXsW(5T%JBaU4}~exJXb+6Ef&BqNXK=s5|d zZlWwD;@Bk@&Rtl3%lk|r#qF1tnl0KleJEbU@_j2jSZ035SkaVlLcKZ=AFl>`+Y(F} zTy{YOxBnTuZMySx3F0Q$wrOvI!weSh^(^&@IQ@uu`x3=63vT*L>b;wMd)98LZS?w} z@gmCNZ2l}y;O(p%?4EIK1^u*O-$%tsfUF_IACDLX+|_Yn(UG5Wo0|e}~#axxOq@vxK!pE=)VHt?&cU zb$8x=Y6{LC-&J4|maz1iE&3HvJ>dX;^Lg-n#7*8T%am6z4qObWFq85?kMg>ow*i2Z zAoT=V0GUeGE}{}l<8ixFse~L5oCVoWNOETSJc!~PN=ieUOwYs?^YsBBDnAv}9@IY%>JY?Qj0 zjxI1_!+<4jT}_L9j+G_^6IWdP6j7I9AG}EsJd|k6sg-8q4?@p{;enTQ$t(&kXjQC^ z`m4>AL?Q_CMv{mimSw0TD!E7J>w(31(3GkidV=J09K_USji1}1IFQ6h_+wxir5b!e z1PwOgc&;LrSs9SSr!NN0-D>*{>ztsZ7&vNBXV=RPYxZhPtIl|oPq4* zfm=y70xRg^^s3O5)kr;wEL@C;mL{r*5EIsoLdaP2&|o_?EH0b~xuxX|;QfAtUWNl6 zYdyfh3{^SA#^x?K4MGl%FaRg#pV8KXWQuWgdK)0#;3YuFNgpHy8@t)eOVKSW!AL)2 z3BrAW@tx>s5+!#O-ph9wB5oFbuv@%Ih~?r&N-^@;BJQ6J(1o<1wWlO^lq7lj8JbTp z4^qBF*A}AIko^eNjHS=RNJzYY63IFe0pZ?8q9+MtG!+fBuBT2RO5h>$f7Z33ws}<-G(@=NgToBM>oy$Y1@e9p{)qBi|tI zDrQEmet|N8J;kDP z`hN>SWpe9rPGQo6zAc~dJQHfO4@hOSt7MF%@w9>jd|RO1rU)TGZaHJ%^{;!lC2pL{ zm`ZM$7W~JopOFA;bc%@eh?&c~JpGpL```Bj$Isw83dV(Ns>B&D_`Y1f&13I~YXvHH z10LWXST0WruV(RN7{RHV1nAA19AqPiSaR?bJTl+sDwjN$39bNmwA(?+Un5aQ=f^x#7U zn|D}pUgF7sw78Jio`iV1j>km^|6mV5DB;246r8J;O286gE zkWMx`&`YKm!Cz$68xLUt@G-_&dq%(x=+jipktMZO z7(&`AlSivPXuR>Y2w^8agOcA_yoah zuoGoNyxYDk!u^D7LogCdgz@3r4w*yy6tHVps1AZ+p*le|G#zw6ijpcs=wPmW&CV_e zkUq{$3PEcWpFF$hxbKlchR-kuJA#H`eW76gctkf2?1G~pcBaS5=bu?2+Of_-xRh%* zwxpgL+#T@s1h^}Y(EOdFlbD+OhJkh|m97&D?xU63h?ByQb?)byQbq$8X~omg+I z5xtQ7S#88XSwT$LHD^}y4T9p~R2sO9>IK1{4@2@ISAPmNq3X!bEfz!+qMjcA&UF$h zs||xfq{{w=q`mZbTKfpYQ;JKmjP}RLY$3q z+fo>Cxj%ONb|ib~}T-;B^%kmsV+=#N-7S z!GUguz|{&GC%WvP4RP-;)%b-sOO;h^-9QXT+MgjHKqZj@1Za1W5-i-b8w$HPtT`Lu zj2$aV_(c2fp?%qYfua|n=dgiD#YnNBrE0*2=|X4-;~|@nFA4}l|I*+~TBASt|6}4I zK-SoZ69Cvg1Du@@eQzB4SDp5n=6DUEw`Zo1-v!OyYgtsMG07k^t);RywNSuW@P2BO z@Qzr-*ZyEmB%|^h877%?J+gGMu#Cx~l)}K4@UKdLlkwSlS%p9|LtEsi1Ow08O&Apzd& zuNeUdkOC@UQ>hsO%-ac1nvx@z@~03jsBS94|5)}lp?(QMQ|fPo>{`Mi6FtKYgs+U< zOr|J9{7Z$s0JFBenl34l^%?eVaBBoehe)7&=yvy^eN|DhONCA3VC!Ugs`{2qLTms- zd21EZEm#1FGqaO+0vEQjDFVp^pHA=^p7E0zG6O}q6-*^k16h7`x85x812ALDr~7_S zuy8dXPz^|+wglMx4kNE21)s3-lpP6E%64EJ>Z;E=1CN=a_)k(JsZ!;K>n(7|z~ZYr zEU?@Dv638BcSU+6CI)3Rl$9`c18!OvGecu4Z4=L`+s|X~PVx*j$qeO4E9mw}*^Bn4 zs`q>DrP7_kAlVXpm3RF_4VXi23<4;^m?)%R29Au{!CO=bEi|vI`i(#a?OG$z92&1< z4Bq_IOeoeG;Jf>8d-Q@_`ti3>vZ1@aJzD+QdO$br3#~Cr<>5RI$u#q!+_OG+Ll(~z zguwf2{sHDTPruGM9w)dP;Gux`tX-q8rk|7-r=!`kB2-TJ~L?8xlDZ|Q-w6CQ(uj7 zRthq$j)<+Qzu}eDer5bD0=@rN36O`e{;L!ep>NakQ8!qf{r%*l%}Fruqj>rBip=Om zqsH8<3}eoW3x_l_pNS~UxXVr@hkQm}<@Ttk$=+YRMZ=FY@M*;lbIezm@(5*cyWi)8^*JZEipRyom?i8HQeyAT2SrO7KUM@U&~d&;elQMD z(PA0U)y$UH%a$=|(u+L0{eE@qw$G%{>2lI?AKN}*O@Fg=yavbHj_7SL_RHNnI~Kk>R;8)h?WxN3!%u&|v!>Z~65n-cMwqDXxTfuT zHt*i`-PQWH<4v;{Aino|W!Hg*EvVE{KW&e@V(;g9Xq*rYbS}&Ox{DK}^(s*ZRTjnf*8al*d$qAa35S-KH1*XE;hWo z{B7uX`v>*gliJds!VlI)RT&$O-|bBeI~q#fa6AR{jyU^_sYHq>ki;YGjUTR&KEEtE zNw)hbAffwDY@_vRXxwQ1Rpg9a&)J8Wv%4!umrq%qzvEUc1Gnnzxg7c2Z-CtWtAY)^PFU2kHZy|dNt6U41h1c?lfTQdO>p)I_YQ!3hguJwx zLiM>>IbV*tw#-p;(-mH^Ut1=J+zkDL4?aJPs^IFm=aV-aacY#VFU zBmc6IBn7qQ9{pLKp;Gn7rj7Fy`*)Kyo-Aw^$~@PPkSbtBbTZaXrf*9hbrVANXDjvI zh4W3kIxyxP$~wJP?U@z7#C}-F5xH>rXveU!wfZLz$JXaJ0+Gktc^V$8 z{S@d(!2MPvCAUHgg54SdNn}w_I%=n0sI!{6d$&kdj5)+<-aDi%E^_hUXwbpu`|jGx zueJX_>L0rv_5XS-9~3qAi!&eMXWtdH(|Ec%zoV`DOsuT}hRwI%XvVh=ZZRNA*q#sUYb`G626*8iQFLf5mUS+iK3lz7+yZkGBMf{Za*^x zMYA_|eyOtc)iW&5PE-2YGTW?CytPlBIxU#gmn+j;5K}?&s37pA@)^9T&FAy)c_A7&h3rp|Ig>@j+Y}J`5HZDxWC?;eF}?dBFD}9mvdm*Z zkPUtkWYAvG7oC~yeb9uu9YH{+x>5e|^UPM#cP21yb;hB*ntBDPs(+LeaJyeuT;4o! zNX_k!wsY!-2nHMF@Oa-J?n_6fYFmE7OP``?NZbm^jXZ%f#J&WjZ7FQ_&0VB3p$<0c zMi{VY)$_S0(#Gc9M4451Kj3kZ-OEzR=O@^tr4W|&C&-5!r_rNP7Y~+U#%l==sguA7 z_|e}e>!8ij-J0QOVb%n+Gw|mPA7>8%aMbB)5K5H!-wk68ZPmG99hSf2*YAvAq&%nY z?sU)6s3X1E#R|8c*;b0?9mU;c7Fk8p7q=jVn$$@KMP|X90ul;ZY8yYuypbq2zWq30 z9vvu&+*7#z1gK(@U+u)Y!|ee8-GTw)r;!^7Ye8ML@K&0qlIs2>Yple-AH--$GWb=Q zE{lR3OCX&al$3#06ZB9|xJ6}F7CFtexvsaS8RdTv!g9d!e#Si#E; z#I6XG!Txm6d%9Nh{6LFhOr0!HK@|6(UKlRm|N z0fc*3T5&96tX7U2ARW(>rB&*F@8+@`4?W9)Z;EeDLFb*5;^I z5u+AvuKVQXr%ZL66M22?Pwq5BjcKaGTQoo)w+WB6H-WGE;^x&8ML=L)>I#kIZ_P!J zs}ZD42;r8LPy!eLCYNs=MH+{o6p$6#|ID(ju};l1PpO4(U(gDo%p%l;hIo26VahaU zmMm$4<1`jWY%}JUFs3Y(1JcnCmh&!O;%>cunTCE4Y<$hma z#&x@xie!>-UV28=uF%R2oiPco-MWRNH#dJT;xy$FP8iqMjw>|j~wDCVeg$(^Xt#B-NTM4+M)W;x3hFxq z@RGfSh7{WgK3T)?NyUFzZIl05rze^bPLRB&MKejw>egIjhV&5GCkWAgEv^J8Q zv%n{fqw5ddT~Np}2s%D@eiTF@%1&hGR+ul3e0iP14*>8A_S##;EjEq3;9waHRlM;F zbP9R`w0Vl@a)R<|p*4EZBdB3XFvq^!2hhErzL`o0;UD+4I_Ofi*_2WhdWy(@Wu52E zllgd>Jw|mkv%HAR-blYpT=n{qTE)WR@t0JQG<>bW&j*6)`rQ$E* zi*h*O8Dnaz`=ja)GdugfnxG$4k<|Wpq*#``#;}rT#Y~E8Iv@rSj#EJ_X-)_(A?_TVT0z}lt(n=+yTI! z|A(uaVpyM2EHA=Pxi(VuT;D*rHwn)wR)hqonVzvR3C=z<+k~q)iGvEj^a#~I*(wq@ zi7bQ+5$9%WL|LR>O#G=*3y3_eEWut-Ht-7!5TOo2#fxCO*EViODNvA0<4~D>XpB0D zNG1x>2txshfPOmwh_{w%eJOzj!=tMZlU@)*YmEe9!Gd~a>A2XsmiW$ksKq4?a}yxR zs43m3oE$(|1_W~;<0DZCdZ>g*LX2>CPC?cHIZpzgUI$A{Y$WOO?WSS^aw+bj76vNQ zy3GeMj3uWyNKo*oJ)>-5F~DDMG@P(V4no2@AnzyLybZR1wwf-zT_ck5@jwKyH)RG?c@xz^{$S73R6#&&h;@REM_SZGr$|q} z2Yo+tm9{Mh)aU_?VT8hO_TICvaN(+#*uKvAQ*G>D0qUw!VVT#A*dfD~F7y;Qsvu_D z7DB%f9|e6UE=m5SWpI6;OvW%qIEJ{EL4-Bx6-BEhzt_8sRw~)56QEWvqpz?23RhFm z3Y_g>7VX9_QScIgqFBu^K#Vvvha+~_i7XZw#+FM;jQ0A09}H4g`cFEL5X~3{6l~#G zFN>#D;E>#x$qUw(Qw{`ZTXXx1{}hR^9y@g}^m+kU(a)n(C_nBAmqJ5woD# zh|ap0JEO0d&-lhqfs4w@Bj38${3*ss_ueRBb!U2#>l(+U8}6*cCa(TXJ>Tw7Cy@2> z;<0^X-}lL4>If}^2&FGZgRSG;s07BAp)sNUgWu4PfYhNmJ!q;ii%qcZju+e~XGk^qQMf|7F3kT^}0vBJ)bCP0Jo2&_M<=L?7# zkRr=pF=OSN(@-&|apTn`MVh}v#oOY{Q?$%)_nQCGH%lk)Lt7~E4w)OnElfBqOvNm2 zmz$d#S?I}HSo+Kxej*mP8Karh<#*uPeL1#QsRq5opM^xZQ;Q^Ztz@rfx<8bu7!el- z^Dgj0IjU@3{(1ZAr)CxwUQL#_`$z3UESyv%eVQ1Jt}s;~eV)`d`K!{B3CsFNbWn?h zvPz-yl?+c#OFJ>kJtT7k$qaBkZmH z;w<>7XVSl!!>{IIRiq!or5QdfCG#zXo-c*Nxt;k_9@|?!nYTzgTB_Nfx3mA06Jq^X z#k#P1E|cP30{l}psrTN><$~;asvN(St{Xl7Z>tyMQfC{B-#jhZXIn>!*D0ZNt%}f5 z0Aqo$Wo54vj%j%Tl~t*|;CN-#biQ0`l%hac%VV~vN0%Kxza%E~?BlJKimUmW-evVf z+ln2V7N3>EwH5Dn+mmuOb!{HvFEECksr85fYt z6HT^n#26>%SBY12?~hhr`q#ZJv-!xm*15w|ab%M(yYfb?PM6MpsCRiv)~+vi?PE-i zjOQn~qJ5*=+MGRO8{DQwZ2h0DeeaI#+jjZ}{rTi6XaEtF;`0 z#q2%!n4o6O9%-CXUV3#I4V_gH3sWgLWqOudZL=G)ej~v05x;ZW47+Z%;4tHc&U(+&l;>Ld-ns?anUri&oy8Zj!6)>S{eu=unp6NmXQTqAo2dq%$ z22FFxi&O@#S;wgmr?WyE2368SOe3Dw`+)XUrj;N-%abGRmcvpn1BUWv60zmRF}>DsAyl?8}EWN2=y8h5{~H7p~^|tIuV* zB}3`MIo%MYi~_9E<~3O6e~vs3Yw~i|+{d<$EF8twU2hMsEch@G-4;H5a2VeC^qtd+ z{(4cETN)yI}V)%LTiOjoVxs2+LLBM|-dAOF;rl+}YTr5_hEK zeRZ(o6`j}@6&t_iHEl}gw9<7&fjYAqd)|LGdvFK8$z=oItqB#{>Ntlb;;zH6{kLA* zPe!i%q;~y|@YfXsHBuOeJ${(CV}@?0fyn zIUyZe9{f8x5&u5Cvp!P2d8BikWa0ZW%I`AG?{}%+<$^EF?Ym92-_^R`zhghr+k5}r zH~TBFO%nG9sri%NJwd|#pK+ete`_A=vihUL(!<{8b8SrR18!&k;Wa^u=b1_)$sI}i z@k-m%h8|_SCH_=5=HXWUR96qamw4Pi_Fb7WSUEIl!p)SJjmLE=?p-F6seF7oPDm}d z-JnN^(`$_`040}F^Xw5;p^2G-iP0F!Tx_B+ceK|RMGIs!QZIUU6&}?oDtR8SP*$u6 zRa@Ubl}P8Y&`xnbN{tA5wy*-X00i`ZN=j-mbE2(_a~S|lbyPz!w;sSO{KEwB3H%S`;YQGSP9L2Ll4G&;rH|W`tbg(!7-Bgk@_sy z){@Y^lE$a`;cxPZW~@;MZ~|*VH073CR?!nIxthN@?l&a!S-~4DhjJe>)ui+(2^$~f zA3IrOxrf5TUZ+BVAjvDj9X(am-QTPJ?46lK*LKJ!wMFiIMbUt;w*h6ZfgF6#UeZ7)b)UWzomYxD~vt~Z%HR> zCFOT#KJL1ap%|8@Nho!jdHnW<$V*8w%@aIE55&D+|AY`BW1Z(9&68C4%K_1|lu zR3NCmOGXP6UjmdYVdLsIZFYPS0%w;-Ur4bfI)L+rJVv2LYT@?Iktv@tmXp)lC{tEFW6R6*LTBr{%)S>l)(|s9G1aoLSOE{grQ32$88fKL&VQDp^FT{$t zrlB5G^U^e1-yBo}F$E(Yf}#6Q_2nn`SS-K~K9%GT zYtGYA{>8uU;$}mLLXFuwJ2$5o*#eB@)9Rx=IT;)-`pxr@t;x#z=~Bbe=Ygv~Mo6w% zIt~M{r)3MvaEDIizk$lRBa*lN+^r`Szu(ccx3n0E(X<;#t;~utKQKqj4_)nT}z(Msa!T7|F8Q;Z=R>XQ?IrIf#SfKPw6FoyKmf|Jz;Yk`S_?rnyJD}s;{;# zy(9cgP1B>pSo0|x@yt9*@|0GYTQueG1Zl95qslpTT7bEJRNGSHx2|XkhWBT=gaqjX zcr*OGp}ujLePW8XkJ%Y|TWac|)4h1wHemVdBT~POdn*deUR&@gW73QyI0D%stJUjF z4ioFPnhDOQ6y=KzBAw(a5+Z|GkR(>Ez@ z)!c=8cJz(yX|xa0Ty$!O{+J60=S@$!4GPZJ9WL}f`F1@@D%9bi*ClIIN1KWq4W z*CI~sB;PC4X!Uq!T@Uf&<9nXWer#Fq%vk~4#`_v9e0>UQ0f_>aPc`l3q?$Mba&8|z zT6|HJ6@Osd6m~5{pqau{Z$yxD8B`_RjF*JZr%XV&F9FQ;ZLl!oxY{urU4Ow?4eyA% z_nI@P?Ze$IeW^kOpLc2~4F=Co8pS2p{TY?fBP#eASH^q$G|;H9fX1+?f;fONdzE0T zFb!|8wfQL1(vNgAW$_%v2P7ynUyYE|8g=TBh|s^~%k+Q#LTQ?hJSJhp!5%Fq*NZkV z%_Kg?{!TS}2~k)jPI%OG|GBZ*__piD@=DK~lVfTFtpKpD2rG3*mYX2J@xd~;)5t9u zVJh~{W=#Ga<->qUe%%tPBEc{zB3Q#xG8ur{ogZYgOG^NSg&&dK`L1CZDAo6c2I53)Y*6_U z;J+}u3C9nqpHVn75*EzZSYBX5FlOSG{QMNXdq2u&3%1Ed{tAbWarzd+k?Fr_=SgmGaW$uPY^ z0Tu2gnogoVD11CARCw?+Ia?OMhg+h>ete1U#gZv+0G(yGMA(F^D@B}%R?}P5@6}l0 znpR^*f|uyRlAoHz(^SkdRZe$}GsyG1uu!?9=zwPCHRD~*{G@;#?nUc#{$vrSwPIfI z4}k%+epk&N;%yD2P3>p& zxn=cM=-bX}qo9iTVT0{=@p-bW1J%y96iX*t$R}6-RoQtfj=<^UR4jaPkv9tZesK7< zzK8cnN?E`29QHqv5oMr(%su)K<#AS%aD(3VJI4*?da^4?=$e#MBO_<7w!2}j{VN9Q z%6JH}D+7G{@6v(|@S5bC0Ur6wOQngz(-tq^do6N@E207;@d>V#t;c6uQuZOMeYbW3g7$-glRIF4|m6~yZZd=QqH~jMQUDyOA zkbZ4Z2@(4^t1KZLhVzg{p2su1D%S`o+&!l5$h|DoJgsX6TSkgHN6!y&85oem?9tnv z-QQI*gP3#tyz-v@{aEqiiu(4NttNQOH>ofqzU}>fL~~2BV3@HyvJZmnvyzEbzGlLe z^`UW3VT)u%8+4_c+A(zRuV;Pg=HJL@s&I6J3450S#yRyHm+E%aINB<( zief)Rk}-d^A5vgk9ZAl131q~r`<6eWox{%=Qv4TEija#HfvLmnfRZw?=(7@zPaC}o z15Ba}^H3BpN*j+WgVyVCRB<;QO;L5A*7a6JI8*6(%DHkiZo&J|e1l3bG7`-OfYEOA z-}z^fNf}UUqZ8SmQ{Y6O^^~m*9XCY9`G*@2niqKmA`?b|G}cTS)1Hh`t`6Z=hZX?L zWyfdb^lxXQrR;C;+?`P53qA`S0&g7gSn#XF} z!;Lt9_Hld<8&vx?AZ^Dg%w`pjuK=kQ0IPt81*Jma&W`FXG6pU&=gtzQYYf6m@5HR* zWD8`%T?BWtC!rPM{keh~_Epmr4x*etjVNT1>b()Md=YRvI$i}X-dGdsi1IC2%O&|g zU)1t=WVf<`L`|BV5p5Zs_e1##_jy%6RorCb6%Tio53CRrs8oGgNjgw}s(IZ_v2+m@ zzq`=NL%=5zBJC6HY5Tr0{O~|%9^0w*@)@4ac4PWh{(`I@P3g>3#5D0)1cS<*Ms6wc zYLmH|T;yWLU40boHHE9>c6rsFJ~J^LRh;>vAnhhMxec?oZcX7S`=%*@#OqH@A?=(@ zw<-;ftL`jsP0E&-cU9B0Z_ir9aaY9yWk#8NUCi=av}vkyTEE;_uT&1Gn(=f|X|2ZA zRL^Aa-Zoe>jON2MZ6$URqn_FTP z)vC^}I?KB^Pj`buo#$n#<#G6JRy@y6HA=k7pr$5({`vhtH!F?js`dho0@co?JpSMs z6@hf&@TG-zXF~55!D9ErDn*2i{gXd?PssN3jrVY14}8`b?l>DSydN#?5fe@sZR%cl z@;t`WBd-2Stc^!}RBVJ7=i-}+MgF;SyW03HkHm``v8OeO!h%T`HA!9j$>M^^<2AAL zyeZ53PgJ*4O$8Iuwq3W}mkyrWV{6msg<{6{A255Wan_OXU!TG2@km@%>aL~g2SxpLNvE~0QG#w{p2b_9 zrH2Qlr=HLL96TfQDhnSg4y;Qr-7cZ>st`V`koKxnI;_+qpzA3m1v;8kE*SO3qY@zm?Z zpTieq4F!|+<+r9y z{~f-vtS_-?z%A6qcs0mJf9-1XzFt>VB#G47ctx?*{6D__`m5>xk01XBW8^kAx*6RK zf^@fZ86Y7Dh;$1`m&6DGQ97ktM8MG@-7O^`B8-rRefNC5-=FjT?R(DtfSv8J$9e32 zyIwChqmyau_w0G-(8jv+?fTDmTo)9TQ+uG(XDYtpf-;GvKiwfa9VdL^#4f$s2fapB zVPr0tYPy4JTT*G?T{Y=nQi403@>OuiCI`^e&C!2wRoTEFAW2~>Icm-+?tDc`7e5P`k;;EW2V?)!t9u<5& z=lplh*LixsZ@RSjhu|-5T!Gn;%~>Xn`HH_w4X^V8|5}Dt+druC66K!_ubSnJ7AX)I zI|m|AEXt`vvLYIVz%x9QaH`<-wG@IYKnj5ExCoPP%yRkWw_m0tG=dUugrxoCH7(^GR=fL4jkw+C2?^) z;2V=03uT7TF3P=Kc^X`X+^%jkGf{gk3tI#0D>X)cGU$wwICp=Q_vqxAGMmDQ$)|8Q zjL9!5)`W3N-~By&nVDj*Pf$1vC$xta8G7MEK*R5O(E7;|&?rpaD6*`UKT0GQ1YrMB zU__z%ZNgcBTa&$-2(%MwFO1W=;ZSD;?YS)$_=QJ1(6WJ;v|a2pqENYN;pt=G7NcL77n%%)Q(!` zrRQ&K3vk3+?-A^BEJC}N0zzM=OS zb|vk5_gfLFbrg+3w&(g3Y^K(#?pTAy#&C7yVR5L)chL&=e@2qcR(MYs(h)Kw-m>&4 zaT;u#Q^``d=ktV$Bs#*xjzC#5l9V=#)EcMAV3Bi6G2pU~Pv%6!4u{QOjFxgkrYI~# zbmKpu9H}Vf#`N&CNnWVosbnNakQLn?7oEuo#~&`SXJHCIyIgrd3JEySUK9;s430}T z1Ggp_xZd*x7gcB%K3^1^CY%&cneH-_bN?S3DS_&MGMTtK#d2A6Z?Bx{pq;hC zYF!2F*u%3BjpO32fa-Y<8hQ^SNhgo?VfmL7WU-^I)Pgo56 zRlHkuv%FL$RAvsk3HT$#R<6odP6gPzHY_53Y%t28dN6x^NnQk6C{-cVV=WXxQcz^@ zdQ8Y=d?aaL#nv|${j*v~dt=yyBSrhWBkO9>?uujklsD);>!F!;w>CN@OFGdsJa28~~C{lD} zowufw{3<269ajBDgO3`27fKJcPrh*CH+PKdc)yPk@*$$74)?wv(8j)FM(5XZ7zZRv$ zW&_1H{(S>@6sjuf-rWM?=z+J9!WqhBFGu3nKbV!>G|`9tc?9MR=-~LRu`t-%I}kaQ zcMCaeYpSO~Zuo8TL$myK+2^kX6!GMWQGqKWwK|_l-cOGZ+&dqIkFF<-p9a4ZD{mOU zYvdYQyt?5L?;ZQX*vyQ4NZIeZ%ZRyyv)}pO$St?CpOMN*Nq?R9!}%4WlCQ6iJhd5A z#d|bCU)BZsFn9VBM6hb3TQ_(9#O)uc2jdUbCp3!G2ht?JgLP2`Ve)B$5CXac94dp` zT#W}@j8j}rvI9K<2@)Z?fJjmYeC)sM3!CR%P9FUUEE`q%6(S%WQ5N+{lnBEb80s9$ zX53{=E<%U)Dqk;<0>vDN!XN})5ga_~4^2<{B*Jy$Y3t6qH4PZ3-}LpCSLjfv(7Y<> z!ii;i^qB%=+w1wxD!~hHGM&|eBp%0sJ)G`%!;!b^VFq_nTnf8mfay!qe>GhuV9cn^#+RYKY;-Otjg3sg;-DT@pYFQw=-McDUXsp6&$-b9W0 zDbMg%x+PdM5&0z)eg(7&r74VG+m!K zA+;?;Y0oNBUai_zJb9dLtrPyO#`=~aP~7^;>HnDo|8}t^!IdyBGVlI;QJ=|w zPHUH8vviXyn%XKh3@_Dl=`+_1IBO{M5eiYBM~&Zb$oDt?4fJ8S)m~ibnw4n0N>Kh@ zA&C}ldVKcEOmMb_a}jxX zb}&_uFc4JvGd)?@OWG#8vFz&5J009UKJhIAHW zlG?Z6DPfOI3J9S1o$KCW)F*%Y;B16#&ED5y23omaQ3)lbOZ(wyM7r*2s4t+JY^IoHFu%&6a; z_EaDTZER<4qLF3Z@yZ;IuD}ZQCo0gAB@XoHT+&D2A$ASZV)`8KRFHEFCu_=}GB*+M z6B`j_kLK`jBN^-5C_uOf>k#?(&5rImTuzd{y#?ma-c>0mJvE4!+Kf>$iG0+}$2@a# zNyje*WwPE=rsMCDpa_d$3XN3)Pr<6V!C`pvgQ=e%;7NF@vVep_!+A@UF^Qz>C<1H3 zDM9|Kw}b( z81XJ$A68BExeU#~-|M3^3XPDlu7gTp_umAqqZEvaDQaoESqi6;rLkb=ye+vBjaLa@ zFN*LDZyaBAD6pY?4A3ox;xYa@{2ZS=V(!0Qws2%!>^Ok|is~PsXe~8(Bbr>Tgtz%c zBB>@fz6xO(yu6Xb{u+ls%3qH$TDX9vI4x78b$d|{lvUBOPRyTLE(Xn>2>-w2CyIgx z2(xqEoaR!1oZz^ZMtRT(5Yku)k8Bo)5eb#|6b`0D(_k+1p$_l0CF>9~;lkqh=4eYT zyY+_=t&}wmC6$&xBBKR+*FWG}m#ZWKCLv)grN9k*qVoAD>Xq0+ehEbp_pJyiZwKaR zl+yE2&9r>zKaPG??spWGk2=VDVMQ*avG=qS(qI#Q6a}Y}=qp35gce8-9$PwoiZQpl zG4KC(R>E#X}XBa(BZVV1NO!1of3a~Mf7K^ zNuJYm(RHJvAFkLaE@>d8`Pi2M5re=_J1zB>|?#<#ER6zG>G zGtQencSygOr`7x9>f8Kv^|jku`jvW2XG={<;a}Mp`qkfN7j27-J06vRlbx;??Y}ME z-u#sLex!F+QF7oMgrQ%@p_XdW;zYl51JJFZqxQ-cbAvy+pe1Bb)zxU zdE(2CKRzRYJrN;uEpLMlcrgD)-7GGWFml_o^0(vk-!E(5p8eKw@e3db-p~9Qyt{05 zh2r{oEj=HyDJFk6YySOj->%$xpZ?jw5!3amKIWq9XYip;@Xa4mg`3fF|AsHje^@d@ zei0po+|EBg1{eSm^)R?-OyLpW#_jfg>>^12?vnJn{pb!Qctd7z&pwV}s>8)Gz$K{# z%pe2lXFo7R|B-*Ma)~N$L7AD9X zyU(5=q%}BoHGtTUV^beQX>|~C1HvKXPCgR&cYewE?J4hzuk`rjLeyL4)0(MB`BMWzw5DK@v$rayIl0 zdkRp*gNzY=|6r2xPMDHjghB@i1Er8H8jv;`;JvIT7ZM>*F#J7LNBPu{)G39)Z4&TS zgqlr=iXKUu38#Gyr~2rDb|0sEc#Ibehh@USM-%YphGgXYaKFFnxyg4GNb0gl+93}> zCJsRCQzhJ_qF$t00X zMccr1Q^)Y{n0XinQgaM3g>A2l0aT_AoKqPn$=ID5?u%iBvWPH zIE%~_i6lEYS@(XH0rTtM)hKJ)qy{v;5&5AG$%z$qrlJ*bKEHA^=p27P*x;wj2(igV0!MIF@ljymF7k)Bl%OOz9A>u0L#J@Kqid!8)ra`_n z)3EP3O_fYacX5p9H{_47bolIa*r1q_AQ};N-$e-SBEV&V1OaFS z$7uT{h(&$Ksak9bNQvD6+*tsp`!L!X>!QO@CW}V6p{Xe*%yj6`R7eotIgH2_1rrv0 z;bHwkD@j90@Hxc#IZp$10$>Y_{b=-Fi2d6P@}~4ED3~DH`af3c4w03ilTqg^fo`+P zm^Ji41^cUlM={pq`HG5|Fk68KdxO4u#H?0gW3>Cjgj3=`$T}>ZhgkcBxy95-=#au4 zMR>aotVwxobN(7cp$~mU=)AGn)D*8GzVvr7bv+^n@^l@mmN2hEUgRbr- z_I?v-3=XrcBE4P#3GopKTEM)%@f{1NuG`bvu5T7QJT~njaCp#mpZ*FJ%6N|hzCDN4 zyjSwS3G;t>z8S5$b#}TrffD?Kg3IcW z#e2iDlpHi`n1k|ZmM%b>VIhC1-*VY+ai%j%7x)i_;hi{at+10`pz;2MYFvlW2s<*{ zB8(GJ+Wzx?b_m=>>aD#E;r1>gLR=awK3W<^CtQ=?TPrDeNPKIpaPRe3I*xH2hs0!K z(^b;X?*gc|!Q7OI5RGOU1Hi6l2<9+T@c1)kJ%74;r6?j>@TCO3`#PQQ9Aym)s76Ut zkdVN4gW1=H@LWkb?UFfzX3N>+I2A>CAI2nVOq+ble8Rr9KL29pg4qg1dRaivN$~Q! zRKftwcG5Ys3r&pAWq2NqB7_3jmz7XCM^=YC7%Xtfun7|p{LgYtkK8McIY4ypJz&At zZV18P@XvLlQi%9$!z= zjUVDmu@>C3XjE-%&TW8DDEfq7$z2O6iN|CtNUkCeYD*Dy5<@PxM>3?4fp#&7~x1cuA;(yHffCQx)3TN}J&2^akSfR+1qUW~C*1U=jlq#^IE1m{@ zQVgdNf$)BDwyokcKb8?LFe?UeRAGNOc=^=GcIyOi-i0ugt+p}$3l&X9J!0LWR z`3WfZ@lX(PA%#5W3)e2yBs#Wi`>cHgd(%66Tbq_SO4g*zN;O+A3p;Q|*h;Cg0#Ttp zp>3hx<@@PS_%TB#x379ni~k2hFPqPVDwK(MA(=&)8~Oal~I@M|}vNlAy_ z&gejTG)YqC9@AvCkK#*Rpw~oHeR$Du_W>cT^nuCfnKyemV;Fl)HjlhalYk6}3Itg> zV30@omGxE`+m&o-%_c#ZL4ZaN#+#<$wIOo4X&d-X&bztrq?S zE5j;ywq_);Q_a!JffeNl3wh(W3q0loGgye_p)bH2{6rtNGP(#Fl(w=|f@K6dcV#rS zyLFicZH701x3LJ;4Hft}=;J0&ZWK)_3czmjHG-}K^N~Te+nTY8w(w403j~%b$~zbC)T<0##c5R zJNYd(EBp*QhU_H>@P=n`{R7vY=DcrEgmw#0_Xq?q8l_6Fs_{g#LfAJOk-B0e_H9bs z(`VrErUP=7>luaq~kSERS1K>c|r-hd8!UbRf2#jDR;9Od?r>MrcD^X$#kAi$irN9wycz7#|$!98wU3h-xdwdX2F^nk#<9VBCfC+x2a4 zd{L+-_cP5Ye&fL`<5t{n;QStun>;6b`4{-lKRwNrw6T*`uPh;1{+=CgWGA~HtAC5f zCWUzuB@5EfR(~qp^?90g5CWJ}!Np!J;2ml+y(DB8qt@px!cQM+?;^KYWv1*-_PhhK3&%l>Hz5-(*1V#1Q|Sz>b^KmxCrW54@})Q#9GBI ztonBRMmCOl?~IG^xOPyjtsvuf0X=sod+{K^nTt1k>0?WHR+;VXt8dJoh!LMUS{+cR zHqtXcvlo{@*O?lQ+j*!DBir5x!m;In)z$s!3wk6)` z_dgEjYA5|9d1U0zAI%Ym97=^Wgv`$wd8GzeIOwlx0xqNHBVG+jQA8 zLwUsGO+I&{B1nY9QeTV+4uEtZ0UlA@M#3V|XbEeo>ZS12v3B$Z!CGH%w0p0V3e54Y zz~v*`U(xO18tz4!IxRZTFHck7WuF)mI+05Q4IA}m)1!tJy@p6J^ImIJP7uUmJ?!a5 zXoT4xFe@uXy{7jMf-QS*3)^=RoRcKjBby#KYKPVWjCwB^4%Ej-aWMxIul5xv(>VLH z2UJTSOQQT|Y)6qZb4>2#`tW5ayH9s# z@Km4t?>U(&F+1*;N1eAV;_7t*eKNI8cT_HDOcx;+zsr};;onFrx6XmaU(Y7I1*?hE zw80eemoU(`xi(M2Pqdk`DJ*4KRVTybak`#LG02{i5%GB!ug~DO-zr*bw85|X8VcW> zPN-79KAY6!sy>_2rAIbaY_#mdzl!1n*Oy~%r_bh|`ThMjZyh7x+n|qyhsMdxUmsUl zyplU#b{`P9Sn-~>bX%0sS%uH;G%z~P`4R|Tu18Y4`Y-rvFnTNnZ>9g+a#ex)E2VyW z9lD*aA9A_#$?x!LH~(GsWsj`>U$MSdGD!iyLK}0h_OoLIZw{K~UB4|9<-L~PGW*%9 zdyuJr?~f)Xa=ZOI$W?oLGV=1%o8NEpYJ4#hIRIvvoeu=h15Q``j_xkj-!Y|rF-WVC z)Cjr=N#dA$TGO#p4P?H*J)3uXdorH)-SGM|`E{L- z?;pm_ol11@0*^_4FRCG*0yxi&hYZKGTPgrpSmjeHpqAEY4Lfyoac2=kq^xF)fz4Hh zyf2c2XEa&du*Lsq;*@yyCtQl^Er@+x4@Q1gdZF$tKAHrE5BcWRhf@e)eigQeiDKnJ zLjvq(IZ>L&>d`^y&#%zCA}L{!XaF=S2D)84?%8pwKx>*sRW6cL zU7OF{DP%TW3;Vw-=g@3SqK&hHQ;3laVJ|kN0zz478$w&!E}0*Jd!i8!;UU`FIo(rb z<=c;&q`mDQ`?eD@MMbCl2Z5dzFRD0)@y8o%f$-Ng_^s9x5-#)AK$G~oN+42(XU>Gy zs6j;RBxw%QG{Atk7XyR-HU?kPJjF^<%$d_rb#_Dm>z&fdwJ?Q$a8EPcn2YN;Wpt!IPe)IUYa8y6B3AI3N3 z4)RfFBTms&Av>4;$iBW#Jh_LA8u3Q_9|#n;Ix;ds%rRAg9i^+pM87x`SOQgt88V7K zP08fNgMIuPWiRp+X-tD7puX@bQQST<8>@c~?t>@<8%Q{501Ph?VUiDUqdT71G5)Y{ z*2*EV{N1nv<}Vl^5PioQFI>c&RIb9H)R%m@j)L*0#K8AA6KP&NptG>EyMOqliVol4B?2mMP_2eNvu>YJVgl9U*-k0)jfa~x4G>{z%6CtcNWTu^ z1L{Iah?5`2?!j)kHRI@?B1Q8az6TxGskMqkv$rFNL$Zp(pQF~5{NKxdX+_3AUMav3 znO~Mmj)`PS+U~2D8g)~&p#9uKLBc^Mk6D@rHJdfz|HDQB@ah{JQY*?Ry!dD8VB+pX z>Q5KKM8~j~^|<)HGyt%aG#=IPWU^Iz0#SGpek%lV`2VRJ>pbvfs$wb~fs3!f)}J(I zO;}&Qk1Z5Eh<&FSuJ|7?iYH*iteF0DsadLDV(d7siL*4vTI!)D%phK>aICn2SY|y8 zv?vTD*bPGF(f$I16Xt9t; zbuOm9_M_+hgX(hh6~X&}v}XKvi4y%(|LomN!B8*vi2T7*7#jn|_~!=G7v*e0cwpTS zy*y1K4mRyQg~2?cGKTK;&61@j&W6Ef)DJe zVKW0~zQ8lKLsVG&g^V~RyqE=g1ArRTc}<*~I{@V#rK{L^!?Aqnhkj2FGiEJCipUcx zTwGQWcioS5kDDhRcQ<>9z~GcP!IiUAR8siII|0q6ff!Z4FyfRj;xM3|Mj$zyWFZVV ztO}12CXjRh7$E%h!~GGNaG8Y&1q+HT3OfFJqCZNw9*VR}!q!wNR$Qu-H=mmbOt(K5*3?RA zc}yEn4jbY|#)#r`8hZH}2G*~K#wa2cEzHHa;aGPTYn+aE(_xL%f!>t3UEqW?8AeoRt5Ar!4J;|5WJFq-hSRzFc% zn~$cP_`(TZ3pN|`kZ5Z>LwA!ve`Zx1qQC|RGkbsslEiKzAQcuuZb;%73JkSo=tbhi z;IhMpyrtBj5yJQmE$njkni!h;IO3EPVnbxgMGOkgLT(G7w0-*ll{s4wUt&)6=rfEc zikYb(Gbj$IA?owYh7)SxSI-UauudoT0AcnZ%t-RwMapJa_LJBIj+j*K-;~VxTJ;mY znOYQg=&WjWGc7H+wSmVf47mHnTgC}sAqo>V`{%oS zU<|zAz|(*qIz{X@W~fX+4222mBjLY7o$jnd4AJg>zun0Q2+yYQbv6n7Q0dv1JQI6l zByA+Ii)8Um@wlF#Lto-~M*uXtNSioAAPnEi8DO1_yj-O0u}*K>)8j$K5{Kc-aKX-| zvhiW%zqmh6eo1KNaej7@1t)yxMpx#gT})R1NyWieY^Bs0fQSgQRCgD1UKA-?l%%VX zmI%9W5SKxG6Zg$H&lGVxM3bA@a|yDdSfkXWz2SZ9z=G&Nc43V}qLg30x=V29dUr}J z!Fqw+e-bK8iv?I8ULo%v!+PC8oljsbeWYdUuYbgws2EfYe-IVG>Z>SDf&b~NJQ8rM zzRIvk_)!|`J3J0k(k`D&O}N5|vA`~6{>(vag^v&d;ee%t|A($lc$zr!AtykhDqx&G zLcCNW8w&~^)TfeA;PHf=*957MN^lA_a12E{CLAG~UE>PZU*?H%wZR*oBhdwrq7f3& z1`Y1rkP0M>g%AGZ+>CM~7rX(38NxaM_(@$Zd|L1d03{Y*ee|24&NThH0A`V20}2B% zC_{D8hH?$iF&MB;8Xm6YDuk-q4a_Q-Dot==i9yC=306dR&0%%}-*N*c(;1Mp2)F)2 zW%s8n?=p6bIdo3yeR^i{-?g0^3fkY z{*oW_g>15s^Bp{4!hrI)!5oPnmJidqfw9u$yzoRA|DiIggz=0QmU5e0zxMFjFc$NY+9NBQQ8#PdD}9*!b#bNQG2n_H%Czi zPO|E5P~2mu8mFvW{WPIY@Nsed3>L@iE?UJx;%}4mF&1~vKcAgx3MTmhr zKKZ%JEsQ`&7>{qUOV1Xtft_RKEpkiv$j#p_c(~?FdD8>M$X$WVL#wMka)8m zjB7uzMPd9<80cLk>~}rWUqe_bg84OoD?yt6&B{PU9|uF*8xvU`7TNAvIDtqgaC|4% zX@wb+(!<2?NFIr+C&I)ntEZCRnS<@OWwFb!ate<0_D;HM85Tb%?aw(F{`S$>d;*m5 zqrG>tokHZbWg6eN&DvQqfeo=}PayvE51}(;T*$Trrur2C?M|%WEbs$~JM%ycB@6E! zk@#c#;?Pq7*Vt~gXvE#P_B31Yax;E%M0`8ch#tRg#+FFdNo@5%YvPUIGFtKeb{xPs zfh#wGY!qQU6~W7yz#NDYuTDVkCSZ({IIGxQZIe{NlQcP#@I+C%)k&tiNd)5*tK1Zz zgXrcL&<+M+@0cQnsJ2V1eoar7oE+!3oPH2IEtNAZ-7zh@IxT-Ut@xkUF(dhRYJ0l! zazRS`(TwiujNaXh0pqNZ+^mV^tl6U(bph4ZZRIxcY4f{TYsNWSxw#jXa}L3CW;wIx zG!{gAO6c`jN5*+ixp{BPdEel9|GR0y>PF0~N4Yk59d5zUHRODxTs?2g4xtBbj#i-~s&PaZ9XRI8I2FDmvxCBqi;R+nn- zmg*Rn8&;iEu!ODwjz0iu$rAEe;Zn>3S%axwhg_huD1C^x$&!rA5mGF9H zN)8KGtj<}^CB7yfh6s*8c(=*;4gjn3a%1})PUykv+P8=$@q$K#)uu4hmZk#iw$npea*#Nto5V$%4 z!C@sBGJrMJK^E&E;s}B!BsgYmFS-*FYXIyFC3#?gpJ)Y4Uf)|Zz{f{}18aUK=R&%y z!9}j%0;YX@YuxW>l1?NL9|^%Z0nNkqqpWf3T=(AO@3$g>dML;;8qB$lR~xc7Y7Hod z?Jpv+aXj!WdJl9=g2`Xoo6IM|w+2rdKoSp$@D&Lr4-eWWz}?n>_R!rJD6x_7pVi#M zvYNw#&cnmCL-hUO3DeP;{L#79(PhZdb?(t^=h6Mz5dd?9%Z$cTK;u706TU?g=b^zz zN9zVqQs!gWb0`G{jo4V&wI)~V+_})?wb2vdR66#!hj{7ja(;&tTLTgi5bq=+&?KSD z1fl<$R+i#n!2RC1HAn&l`karKy9UGu0Bc?MTwrG^nBS6b_X3m7bTNB+Xi(=G#B&07 z84cnA z;^&Q&$1!d420cdL$Lfw2;|Z(KE;|O|8*<_wvg><)JN0~b;`#2}Psm#SZh+qITj*tA z?%mYelTEj~t+yv{vA?UgyW7uq--hgMCg07E6RGImEl%KjqwnhO!HWpU)K7dsisQ#G zVIU&cWln)*u}Hj*#Z;r}g065vfd?ZF`H*f`az>+D8nSK86b`Li@egFbwBHLn?)0W5 z$L#2SkZ@XS`ar&`mm?Q&e@08OXHcLPcgXKovock(`$^uXP0+H<2fff0!Iivb7I@Qs z@@IY=Wzk?inkzw{!K_ew)50lmAt2c5=KVYHW@ofu%?EdB-}?KTFJV10m$lFP zLoxEv438VOI#TF$)*KLcWveZ@%VvSG*d%)vZOdOUIPg zu(+$``OlSIpKEW*a+VjjKbKd96afSj!V0)J2epd5osJxJ-|jz>%Hv`F zHImi>mn+fo*Mu|fonVC-m?~U_-9wdJNA*~h()fjk8uio2V>Md4Vh?rtSG~vTj9%Lw z8q9C-PBd5|*iTe^YgAHmd@`E$d8@W3<11U{h+oO_O%hi!pSFi<%K?|SNEL6oM@YMg zC{<6DC8l3^J#t@LIa0n7w51Ui*{jJ|gITvQt9T=^)e!KV6a z#Dk@y()X=Tnib^+Hs6hhR0shbukc@gnPhqeq6ho$y#971e*@=8?f&NW9fL3H-bKLG z?%qSHA?wjc{j%L-fH_9ibBOEvn?Kdx&JX|8Nsg1v=>NcHMAv^3y>V|yrOi2U!7OT7 z`piF%k@H=AS=QmZ>^2~Gu_ChDanam~|Hdos=D6K|Vu*JcpgSk{=hO>K`0F%YX<#n& zD`cTGurW6#mw)b!=31y{Cv)ZB`XeGDhLd1{Nlz%0iVAt08VnmNMAA zCUNXHRgsD=_V3)J9S0N(1NL*fp!O5WbiZVn1co`~8tU07$I&3X?;;tP3pKYy`wgZ) zRY>^;Srww+DmgftG4g-xj}iwf*;eTs0rm-pw01*V#G|$(l;J8=FNmVgyM;4eecDPa zN2mx4@5ve@L{S-8$KXP&QC{LbfKh8ps+D6|1=*sswTWCdbqy+j8CyCia-HmbtB&P) zYUcMdd*QH$x;9j4Sp(t@qA6c>C#peS`jMRILMb)p(%Seu&lntJC@F7g@|&l(GyDVo zqwWnjCU%cw5RYF*cot7GCR=n_tRND-&|QE->s7|b7lcRl{nUCQ0Kx7dz2}7Dv=Zw; zIR$(DN_3hJANR+#!6E2taW=Zrvwo=|tv*K@Marrhbtwos>D&_I6}hUJ$3CbyrMK^q z@j;3}yMstcI(8h;ZLOj4SyKtv2&2N-`e?v=a`{vvXALD)8p(W+qAO)|43H8F11s$~@5$0lAj|6WzJu)vDhX>@;JFRU$O@ zDF{kZ!|5Tt2IyjJKF)(TrgJTG&9zalUF>C^F3ruge97T8_xZM5du}EhVUjP}y-3*h z*ZcKGyUQ~OGD&}NJvdE5G0mS&pEz0~e{KXUSQRj~m;0U(6T$fI=@-7KBWdp8p z6IrcuhbL^&&d&WRz2>$OPgdZhjqQQ_$N4_xuOE$C<|Q+|oNW3WCFf#Gy}U4>?%VLb z!^J^zd2u}2x2Z(#wX^y1(tN*fOLNC-SHI=upG-bgU2?9TnaeA?>V9onj4%Mp6&{Ef zfDho80^$MWa7b|ggctyXkOAwCcSR7A^FAA_E9i-VvHfr6sTOl__-i?9Ja-`Zbf;P6 z<=C@UcaF(sl7~k{a!FUBYu_{*OGiISdF`(ZrCFS~Xg%GXfULO2csD-uUZ`i@ zz4Q63)I8bq4wD@8=8Z+|d}F1?%XG=%jIFI7%>1d%zQvZ)^M4Pnz9_#v1##!=^_#}b z2VW*eG5Xn!dcpkh0aELc6h@IBJ-3Q8=`Dz}BcHiJ&A2yXsq9-8!z&gkq48~r)6h8K z{=Es=y<#coyZD?)OHaw+y{%;YfCakvZ+{0ZqZK)?ijWB#tqX|%FOZVs;Wz2UB52iq1xcX>Zgn3|`|YN< zn`TUysnDz1j+vt_*F^K;&VQmb$CyVMQPV-W(>_ccqDw;n3ovERcg zlQTPEJMffO*ZYvq*q!xt%i>af_47>d{h$ZMZGYQ=V>d@+qvB_ZN0CIg$FEsyWtFxm z+)y&#{;+MFw95#=&Om=vI{t=`7hlVNb0fWxKB}?<$evL2CSSH>o+55gd0x=l&5!z+ zyUX2L%>C`f5e5SQ=K}~d|2Og^)Xm4G9z@|wqr+ec`FLEKUBv&5JShx*Js9i)w>eWI zzy*XFgvzAS@e$aOCy{;Cl^wM#X|40$j#o&Pa^>K12xEMj8HK7}KRHRw8Y$+K92(LKJW0z3mvC!n4I5>jq?hZK@R|<|o3)+1uS+Q5f2sB3$qv>9-_Q@M>yu0rxKubsYs8lBG;2_|R5WvF#6kM>!$d+UcJaZe^OMu;g^|(+Uxr3q z15ZD$gUh4_w8lKMPe1MHmPyYKjrq2n=AaYGuz1FJ;L>UCzca~51s9c$Pcp_RlJ@aIuU&PiX&VoUO9*rn{Ac_;06i7k#VM1N_cm2EM?53h` z`2#{afm3OR-I+^{pLNyRbOPK>O1VZ=uf0D*)YqFz#7BRLge*<9{T8KCm2=|vb&4y_ zo+10DT45~LW?~8TsbG|F7JL(Ls)6o{r}&4I5xLJo%g7}4+Y(zR@?Nc}OiiL2@JbeTa|w3s&KXT6B4Lg&@t z=0CjwjFs_n`(#z~jgHf$&C)H^OJCf#&R^)5^XoV2{@P#t@ug6wh2W3X=<=7kjh?Uo z&rcNwbw<5NwjcISz4HeKdA7k+np|tuwryfIvyTKGX9ZkN$%eI zSral>GWtz&cqJnZ|L5OttsV()pLUl@OP?O^PB3ylhqnLS-&<&maX8FCIQ?C(kHENw zSk|4O_mZEMjGeY$ouS{E|E%$DJH5O#9@lso`u*_Y3beQAcSlLH;=V#uj(8dR+9c2Q zLV%m)d6H#|vC`I~@&c>#4}O-B^wH%RF=L}#n{kdQtsmpKTlU_^&o%FECKxO>(k1|= z%8Lxn%k7@Th*&i*CaFG9Geep{9&e|LT{)tXp>2`Hsk&H%%<0flli|IYua=P+Ng}zP z=VM#^(oDzrnMd*~pPW##`-)OIM*byEFEw3u$X_bG(c9ipyk6lcS6QVoaQwJZzO^Ij zFxoisk@#1dx%>s#*-3qgrWpF^lWT=RNoMr$ghKJT-T&@N;|it3Xa7IK-aD$P{%QLS z1VRD<5||wS&3yKJXJ2#8Gv$gJqMpes(1qYm^>z6ye0B5h^Lwi2=$+kK zrgw2BwY_|g;qu*l>(A;Zq=M+>CoR2AUyoipu6nn?EaTg>te`P=bB+Qgzr3y|H)L1Jf4y(aU7z z^P`W|z3N9l$HToJ0|>0h&q3Z7K0k*9N=dR6k*2+$!x94`NB_uHjz&@6s*c7KPxg++ zRj5Rd|Ep}}#`oioCfcIErY)>|e|@rcum1JFWGlaCU0?YAp7SWJ{yp#0^!v*ZpMT<@v$5 z^5)+!Tmayy@-Vy>oqiK>2`VF;NY+M{wQ^8!3UooV{QdtcY)o*J;;blNS8@gc10=6h zN_mWdzyI-UEVVnX+kT=amYO#g>Z#LXzkG;}{s^M?#LlY4P~iQ4qE=v@nUF^~*wfgL zAfAlD9&XEhR*Ur&NePw&ktqr0%(pQt?j8`53O&}bor8HC*DdN`6z>xgb4BolhMb&a zpqkP{cr2j|Eb9<9QfaC%lJ{-137r#?-# zDE|-Js5$i-$|eit9&y`$_?K;@`c%k5@KdGr+kebr&XRmf{l;*nG`~+(%iC|` z`CkL*3|kwvKN@QnI*hiy+x=Wis!t8u8oz&O4%}TDZEHICN~%w}jM|%jtPQ3L-yLgj zA=Rga`mc;ST7T`%zV-e(*3ouyuuQ5?xr{s8&yKb}R^A=&?D%tXxHkMs`T46S=ch-; zjpN4eiA3BFs%13A{&mMlFyHA+B(>buvNcpmU?s*%Q)eZXRqUPY$8f^K0>$)0?V?!7GEeCS!TT@vEkDd-;jV9b+0 zD0r#-Tfn3J?a~KN{t9~dN78u-+>gChvE>^lwo^v(+!gZlPBHQ-_e^)F*mlqI+Yxlj zix8@CeVy#J<6Qi*qQa@XW@qPabtg_p*r9IB%iHeVQiZT>%l?kHO~+rMDyuF!Zy(FP zYn4?NLt?u==A%l&)uxk1-o7TE94f1g=KOYj4HqMX#SB)Gz4!GtURH|fZrAMYYk%() zexvnc%=^CPucbux?K>pa zwO;(!&_@6*0Fq=Q{|4v(?eIhjPRhSuGVA_VaISYH5e+K-6P!Y(-T&NpM|1e@tu73a zg7c-q(|>}~qd#9ORmi@TNsx5oEu0DxdROtO@>;p`Kf$S1?a&k7M;$^6PQBp*`{9hz z`9}Y>*6@FV6CZT2v#2jAP72QV0Z@ZxfA#km#skf&<~qCnWS%#%A}#gSA2Oux_mP6r zV(g{*4Nj5PAnS<|^FJEZt-lOsYFv6^MB9Gr%{K-<>#c5kXgSpx{bgOWy;)%ysl`03qv;qxPBCah9pqhRhcYV+`+T1h_L(G= za}ZbZtYsXZ5ubDX(Cfhh8?nyNxp*lMi%XLIB5uu1W{QnFCkyRXHIM|O)yT9&k zb${?{KE?d0$vxT3Ip}=QFMQZBRx-R#*i63a-SREWTfF&P;iC2}T-ZRYdCSYTruVC# zo%p+rCHDVvz7L{kBPRopkwTOLKuhsou>F610|BHZV+1ggKH*R52rvm4f2p(1aOV67 zx}UEeIWMJ}twR#S_|nr(e7Rk>)@y&v5pcZq;IoP^ueoy?zhv=%0VP`tuctrXP_*1F z?vXi3m-(g?C{F+SJ|AGCT1>KbE|CF@<1N%Cu@q2O@AP8#JaAu+RPiFm# z{VSVz$z5m_kkQ5KpOUu1o`ii{JgX6{-N5MHmw&KNDrpaf<(Z)Hk5&_J{>8q-MWZDP z9bJvY+u`PavF|PBNoz#$AxAyo8VUP%?-zqfyAS3Y{>46MUNnj;z?sa{o%@6NU+lksq5co{gL|jm{Db{JpZ1pid+Zy(@4WnTdbIm>{5=W#0FVF)`^+B8 zBd#Q2V5|1nw7@lvzvHT}hcW_bEkBZoA0LK#7!DDw?{a%$jn&N6M_YsSF2< zV2QS4GAXl|(&I>(B~;{=VYDUO=@UWO=(mU_&#i@@4`NQ*D}d9)mCQi zixf~ZZC0D)aL-jAm&kzzePBiYQa2J^Q@i=P0Z#k&4cVAPRL+eyga~X9F;g}hC(!j-oR0vPXI>Wg_6>ImP=s3GcJQ9;ePOmBgq>Dr16K}m6A}2FPsSaz9 zgAahl((Tge3vL9NaVteUaxC}xP#Za?IfNJ8{G9&`a?cwqJbcyvgG5zO{m{=P9K}!W zE+t?P4g%$>;=7Y6uqz4dwbspq^+CSR5A# z-yytt3Rx%ZO&?IMTHy!ob%Vi^pj&^PAOa&Bl#Yj597Hz_C|7O|0GruEp1j3_^Uu@&1&`P}BAwS;h#=Y%JNK6K>Em8s4}=`6mEg5sd;eIK@#4 z7*EEz2a^ZNnDYscv!|QxL9O~uDO2%Q<_!Ru zVC-_rqf*7MlxM0Pk%Mcj;OR0lDfv#Lg%a)Uks> zz(V5hwbxpKbT(CT$&6^|co}n=*Llky!Pp|#fGO(f6`88!JhPvuxPsWH?F8Q0O1jXY zQ0nW@i3DDRD~ktf4;zu>$2==!^Fm4mktTqD4+^P;uee!2o>5&#FuFtRO!8}TdMRT64S+}b5xRYUEnuzlQ0NUOHjcy zZkP6UNex;MA=V7F6d;}3^QS);$hL?+|ztUn`01dRyEu6Uzu2b+R<&39Bjbm3f73Q8`kH^*g8o(1xDdDu(z zy1+|5Q+)Gc?PYc4SOt&_XLvx3+z&pp>pOdway1TST73Z+`2utdwy@09^b02pj- z!_9JzAK>s6V2Nl}E6-xJtv!^q2l}hSBwVyCsOl5$5em6J!g?uhtlUm`&W3bT;;QN& zrdPE?xxKU2R&J1Nyi2`sWv}pU9@P{Lc5=<;r-a7Ka~W9JRpaXQ{?V#?$Mn8-uW8cc z*yZ=OqZML`Cr^nA=_>ILw77c7-j1-6WB-^^acR6}4EDF4Q*xwG?_Z%5Ka501_5I9$ zzu*_@0+u%;tk~6te4@GnW@R|Xn+2^P@o?dHid0E{B8dna5X zMp5<2b5orzn*2jsk8$j^HkiZp+?8j&ocBZVcLw+nDG)DLa=WI)VwH?8u>SNaYln=m z>fi%vb#OO>(>Kg@1`pu_GH!-tXAm!nGA`vcn_CSm20^lBpGY76xz)8H?!eOPsqJV8m5-UWFuoR%5@mDYi{6pSQeXrx?WzrRA5#5|K&TnqoOtI-da zGPL;X{&a+V>1W*1W?VqXkp3jDB8D*&DtXN-r2XAWj)7j3XuANqJOa2q&_|&T&0!rS zq!z`O8Ff7>N@z9;(H$km8hw>KTFN?_SuI*FGa4QhtuPx6?T%JrjiDlsQL~OASBufg zjJb@A(VLAq?TRsCjXffZHM5T0SBidiJXI9p?8R55OunDI!A zmo;Y5#3g>kfL4``MjdAB?6^p<0-BOuD)`REB)(8&tb^Ptfj7yZZzHjKR#@m~?q=do zadCgzurk?Y7WjvsSiwPP`XFrH1VXM#Ux!w#CLoM!;1q7$on0)F8P9_&!UAjhH|dCm_4|5h!wcbSw}HQxL~POkhB+>oBwg zMJ3R33`U89QBEF;kD)1r8YJ?L$frG}h&pIi?bmXR--vK;5b170_wMoXAPQ-P;~R0#gm9Yg`xg$WILFSyQM z8jORjqf_v;zH)J?z|>n`dPIT9FpNL-S+u|1v?!U3%HBuXydoTBC$ z3ca=kN^+U%c$robpip7{UN8T4oswpw0%iVx5JWhv!3pg8{iNi zy^B_IcFN3gwMeIoNORQt;K?Lgbe2+lMOwx#ZIv$dB=z|K7kFSR~ zx&l%L1p;g3TBK|f3ykX2q(Bo8YdowJ;7UzKF9`!*5Gga2)b#67FqJ+S#$S~y4wkV^ zn@Dh7pP*rq7t0WYWgzs|5AS)psnpInkegBi3-z_vsK({YE1H%6W}$%Z>?z5)Z&MS`p~-Qnr!4r}h@7iy;?YjCd$a{v#J80Zz*h_VaXkZe&EQHRzio-PYFV3%{W zKRmNfET}ID^eb-J!zU_2<}^_S#b6*k?YSMo6P#|Mih(IK6uGyzNL6}fs_7L~&p<{T z!7tNtfvFHwMZp6Y_=#qo7l!iEBr%6rn+N{kLYfm``c53PL!4a>M^s}(+`dGBe^ zt<^F-m8qYTMO=n|ah^O(f!Z1Pi9Wp+lH>pURM4WjJigffdF6-VIzd>Sge%Y#y`c>Y zR=@LxD9U+rt!Cf8zQvftEfX=&I(&iWWI~Dpx$J;%8 z^nD@r6)=%vf3vh~o(%$YJfO-M2_^}rzY)aNL!`g)88XGw%f2J+*zg6yX?6zas~l-3P&|H$UJ_w8 z=1(a^A^V+?@>LJc1q+0E`gy{Ds0m8QY>liLUHSkx$6s|G5Bc&uE$Jk5`-O8k6Dh$r8}HrJ9RPx}Bnm{;;5h(Fp;X~MaHCcz zP5n88{YUx*39vtoF~0dlB2M)U4Ls^IrPbk6N=wI7kG5OQbTMR%=?GoLz}E`!cIqGL zzPH=yk;x6`xH00@PKMXCf^(rC^W)vSFsp5y5wAP<{&YTC={&so-WU1)`0;xWr}w9A z?~A)TF8;g+a1h892^4k&P&fgcOQ3EiKo{wjlzJ6sp97Oc%=3Iht(cGJUUIU|LexO@1*yTg$^s9eFie9@LaFgO;+ zDQQe?qC1C%@@L)B`ziwLWjQ^_e(*|fnta$&(};PnszT1oJ{Nt;)APqYDic^D>> zIB=850e=)OKKfv3cI1zjqL@bXYoQC>7R2Q)o;*nG`>RIF3m94c@_>o2CuBs# zmVKBi1(X3BR#K@HA{$N29i)CR_@!!ej-%(9!AOeY5Y$w3<}pJylr;GQ=RSfjz#z;i zy5BOBcTs&*5QUfxV1hH)n~~Pqu|Y{fig)c9Kz;;N>oQX%({>?_!UBmW!-nQ7o`sR<`Woz^NW8QBKz@UWz2nq^xa2amr$1#HF_>CQ zg`7V07AkQB#F_ZUt|!?paUpSVRb+tGcUtpFH@0eYsj4TTo#zr!&Kgn{&6+Xk>hlSi(X+VefPu23ms zY#^Su>*3{Q#E#$gX@#fi)O@vFeOB5ZQT zq8{g@#*?L+m(zO`Lpn))2i1dH9qpn))k=8*V9c~Sxl*va^$a0HW0zB!RZ6Nnqgik*lB(|ID#-K+>GRZn6 zPzP#A{%wV*1w->KntE8YY_nGkdslePA(w`*MF3>H(cg6~`*llYj7{#q5Ny#VF_`d$ zG%^M*bSA=pg9S$Q+*8T9BE3?e&!rR2id52#^be1})OUkT4&Nm(IBzD64CV>nFO?lm zgz;YD;-#P{*wgxefTO&{FL?#?=@gc(0F*@c@soa)MXNpH;?ghQuUd<+IHi$8(J#I2 zgW85)Pdm1r{NkCF^|jKRrRtKV@-xpaq}aEf^mT`J6w==wOE)ySlF~bb#X1kr`RoZp=k7z6O^sRTp>gnc9IC^QvIi<{Mpea;!tz0x4) zn7$kLcDG~ycBPdn-v8F84N+-2$fKx|d!o9W<6y3@UTZkm7~QY5-TYT$r4bb{e75kV ziJEDx?}8t|;EQNoe%YDf51=VDwPM(e=LtVG$XY^f@Iw5f#Nt$ufS1xXablAg@Vg51 zElUhGk=OCSk)kE%+w9`h-=9-JcpRlNY&Gf7b5HF}`w#5>C3^ZF*ah?C#-+KM3 zKZEY9P<%{zm3pRFxwE3MnQRC6r{|?!(r~R`*|k4t$4dV49l2+F7})NE4)+E+Fn9ki zDyLPAH*W8hUV7YZ-tydg`Mh#Stm+MyrRg2_3?glg?Rbg(eZYr1JsV*)#AT|tJi?QB z@}5KbU3U8Y&(-S_!sper{t~o*mT6t^GA->BfFI*3rSc?$Xo>m}f-;7Nk{vz!#v;)G zMyyVFP>j?_=3q0^?=o?e;eZZ3ft}J{gZL5$gJmR2nGCXFakO#j<4(K`9qfM>1|^b; zlf`RPUCk1CGR#2^Aq!h3>*^_V#SYcmKVJ8h+ZMW|-??4+xyI#n$p!UWujzMIeIeJc zHi%fa27h1b%dt9e=zMbdm(u5Rc4NeaT}u>d)TAk5v6ZdX4fiV2161Z>M@ zU+RTVttH2^-NdlQWk&i%IcRY|9K(~j;fS{0M@@;7O38;8$GbZ8Ch||)srKgw?%x?O zr2gDhRYbemIyYv`hAW0y^M`^OZj~-JxX7z62&hMe-aPRejG^TT`S5bH+JU1@l6*g> zB@jo*c(mKgrk;3nmrL27;8YTuakh-d6vR2v#l$}v%o2uG2vlKC=X!BW+=>IQk!5o@ z1cv+!%~sR9`XR?jB+4Bu(^#QkVtc6tsG5A#~7NM*@*?Ny`T zk65APP>389C`yaMu?aZi$Q7Hb0xGM-clEq$$_I13`^e|cg+{ac?dpc4W$gm18pwO3 zjc=W-zcp4qnBrqpXMI4a2n>?uB{FV9%VOdB$#H#b$un>n8Q{zu#dCwQq4n$TOfe8s zO(eHFqdLN73^2QtRV_CIjqAhfj093MXkDOV1d?%VGTGbKY{$%F(B=N;8XJ*=3_1X( z82Ei_S%ShI(~kQKRsBao3{wgPe9tvr?SL$8JZXa_)R6J_WHbFDd-3MCp)A~&D52lh zrFxPScmt2oglk-<*SE*vMBe5SZb(K#e-z2Z!wJiUK{?0qmspSMoqm#Dia$DM5>MJK zpnIh}^g2M?y&qLnh`wBq0-eh3?{>39X;_P8-tU)p&wEH(G4}G+>XFiNINjJpYfLB2 zmXhw~Fzm-(YK%wu8EN&GSLK_21@G#njB`%M=Eh;~+5x^cpSR;$H+|oIc5Cx(`ii;f z*Yd5T&9CjC|K|OUlgzVZXXPc;n}!h#8YBOmth@NUFy0 zYLP2n$DkTfFeSo5v4H!d^#DrtFqJxInTE^QDIFmPt@*8=z=fc-JVq=1lvv_^m z6`^s-YlyX+E@0{N(2{L6O%9nZi7?jZhBsTCD5joLVVn)M5tuj3d|U(8Bap z8`RlU=;H`0ODMw=GymM7++qD|&6e4C9!3hUVzCqM3EP)fykCiUJ5%Xf+m-}Bd@zV7 z+K1eV_KWI1$B-`ML_ADY;6`P3Na3CZ`lyy@nAO~ph6m-G2Um#~c?Q=khXrPs~3;0EM zmzaVy#gaxLKQ^9BTj}bRfOc0lUO={oXE(*_PUe8p%n)Dr1cP>wQ_mce2wxnVp>O9# z+@6oC)B*HcMM}Ep=Zgxb%ftceh`KnY>viINJ}ew%nLHv9I_ze0dN`Cb^hN9-U+V;( zRiKE`DmFglP0pf1+A5cNGw6mtnlnklwR6kiLoY%-2M>Y3%upVkM+hwp|S8DF93Ol!H z=pAHJf+vuJn~s((Dvb(GmCb6?R`hZRR@Ftz#fldADN9ag`BsY9s^&UuOIlgjF9BjG zvtHnslhs(Dy)Srwb&)toSy#zs^y%8$7?|H-4A-8IfM3r1FjJkQcFmxWmTfG8*!azW zWA4GtdEU+^VD|dqE_K4nW)>(~<-E=Xct2a~w^l$oZT|fTmv0r$$T$^hqur!K9#9J! z+=Be+Uj%!|s7f4|xJ}`MalM#Di}?WTLv`PVF2o1W=5rM1>1dHpelP5kYse}4-866! zNX$G{z-zLUG`sep1`MFNUG(lc@!12oE_sUQYwB$IOzN2iHymIzVL{Q=v%zuj!;a%8 zCx193XEl`v$)ML3FOb5XL;9B7f^O~T=Kap;M=VXoaP5f-X_&%dy z&1rBqlMBh2TmSttC(kBz;2v`NhUo8KFMnRGSvW`!gs^59+0=Rr0qmoo_mw3m1pL>3 ziZ@4@E%V0l<|7&3F2(xSInpL`@KB3OL_L2E5+F(7uih%zz44t2Z0~yAe#?NZxL4nQk79ZeEM->#p5=LEZc@-2!Rdf<@gz4c)@M z-6GT7qU+sa$0Q@+9tox%N!}hQnI3749vO=sS=Sz-Tu{%Am>yJGk9<*&LPJlQP_=@p zz{@k$_MB3s_MSt}7R4`!1O1!GbN)|Z0-Cv{?f5eDfUaoj-p_SaDsP3!$Tj*DiZya` z3_tV)cK6EXXw1#M7M{vqr73<}uiEC#pI*uD(_MRSxXUzNlghU7%AOpmhs!#MFD$AQ z&d75$;FU2)->9G_CzO{fT+UFa*G*BzhDpnPq!=&F{n)vaGxw%tVlCv0rssO?`mjVp zMX$H87AO0Fww}C3JmYO4-c)@acGo^Obw2wGq*|dsK&z5vz<_3V7vpm!8;z=)l}Z6c zwNj)N5)_;&t-aJN3U|M~$~}nqspC~R0^9`e4WUkhoC-|M>Swbt@!SzH|oyfvj#{P4vr9`r?RS5zxqwKCxqj*X! zSPTnW)jbcDH5n0a0B}|hxGmA^hl_mhoa*$5iwj}oH8oT2|mipF;bsD3&cytfX<>dVdwbgzWl6SD0}o zf{G!rGP%t7&pPh~hll`y4B#3yv=z(g1Xd>yJP71ktmIrO3^>*|KZR<=SEv{e@3qx| z9IR2aw<$Sv$aN8934rmV2b5t)IMfz}%oYXJEn}0ZzU*dGw^QnXS<}5x92e~r^47#* zV!XLd^aP$U3$0Io>t!&C(pEl}7=Xjslb-Ytm~jLa)OWgMz@)Y`vsQELYt{VAh4?2p zvaNG$jEXn|F81kGEKBBiFs}aTETzy@9iRjS$Lxz_R-pP8)`t*Tcv|JLg*7*+Sv#I8 zLro6#zxeF?gdi=@!+brA1`FkPeS8JH&Ki7ICB)Rt}HsO4#WjWPCvu4S|?e1 z$O1!U74Co_Y``}=AO>qJPbJO(rfl=^w!O&h1OSK!Wh7w>Kgv~&oM>MUkK`{*c$gF! zdXF~jofVK^6~cI%C}D$TI;=qETVh#fd_*i)*g!h@Ac7Rd-{JUsfGc~oGs%vzfM|&F zCB#{W9EgumMdQi>Wvkv&0Mf)G3$=iFtbDVO8-fgdM5gU=gI5$~I?4xs63L_jyIUTu z3Ihx1+yHvq4zALD2A+Q{dgn}GzNpxm;t9?gM~(r+JY0*9o}7QidCeU~sXiDxM4(bO zVb2kWH7biq>o9*b6l+F!;R2w!jRHz+V-1tY&*K$5lgPS~C`GogZySo82kRegBw_?8 z{~p8be<5yr0F!H5Sk%?-(e^Wu|=lTRWe)EPfKvCb=tAL0CBpVY9#v^ac8)p*^Y zDUb6}83nN`efqZ|#=yif?K`fM^h9@%a@n8q#YVgnEBPaWWx^qFKMc>r3i{d;87hJP zsNeC)T>k(a?Kw+zpA}erjun%jAgx-OPRLkUz^a08*MG_a*hCGArC6u;L1YFO;q77Ii)^g6;xTR5zl$JQ4~+C?1WF_0{BYU0 zNUEHBIo6gNcN#Zr`#0=nHtaV^t8X{%f;JtQH=X!4o#i%Nv^HHWH}AP^x`k}IV>Uf9 zHa$x=y&5;YXA0yGBUwW4sTW*b>~&j>8{4j`vdIS8n-&G*VW)u(AtN-wMq|Pr?&{>< zsy9CLLES&8E=?Ac1&+1JqoM;z%diAo4SQ+O%pOr0r^}DpIVZX=HMy9 z*6Rlqxo2Cp7`xS@YA$=v+%wo5^(0cYUj6A*oLRQ2Jv z%)LYwRtoo7u>KZ#2%1U+%n)%%W*&%P!M}g%A4BhWt9gO4mU%Y~;r&)?_o<0@W5}-k zs$SK?K+>>o4s>Ts-ZDCR#@^A=J$B|r=FHl=ne9)Oez9?PnuSz0Fw!lciB(*Uo4hZI zg3FQogA{pVMXY`ThN&6K6S}J(XYmZ?J5@5J`YZ0K&iAL*-)ADciPKR-?T=qglkfD1 z<>EQ#k_BvPC6>HK<1;(UJu6@e;3~5Y4#INSJOU68{F-+~9<;!uk6K z1#x+b#_s>c9?;$Y%X=`$X^|(#AG@yqiuuC|-+ou5ZA-CjTQS6W@JmPfUNRc{p4RR- zE83`*fDI)(nynw7*-vu8UHz4gM1YiH6Pe@=mgKU}$`u&UV$f%H*jfzBvhN$r&88zg zf>Q70KF3!|2X&ak>Mf?uca|IXmLC13awL#*0jMHbF{~;XMuPY3JI1V59Q1O4P=FH-=ENYkGIk2J67XQ&Ol0X~V$!|&J}#UcTa&`E!iIn9a!t}2>x9RhhwUOY8n;QOI($YO7N7i{uA#gqkSru^&E zp;B8>;LZDAZcQDHrmUHlyWpDF6y3}XCYg-L*h$S0{Yj9j7^PYUtDnLFru_F^ZK1{X z-?4KcKH?RBInptZhxhqU0&biHYM%sIodmm|ggiWXh&>5?aq_72B&_M=@xV#==aVPj zP9jcDo>HBnSxzGl63$kH-jFAF9FlP@n*mQE*=7=m4w?S3?x$7qp{@C+n1dwj0Zkk> zE)lB{K9)sDyLw<+8WPm~z`>@y)+l8>;a6hhei|3_Qn+my!z6$=^q63|A@MFYE{CZ8 zIG#H5#o6P1@Oy3;s^yGn>a4RCMR6x=4|?vO`#WqYn~Hir$xiFiPbjXFCeuC>!a4Cq z(5Ma&_QFDw9eFbw_2){{fIR#U^*g?Y+}!yrnwsH{dIp*LC*|v=if>xXs9YSM1E2<9iQE`$E$F8d`fDhz z@h(`MHHu}>38zCoc|B5R6D!#a$I8}95jRmvrjC+&095EV zdGCX&LE4>=CpMuv!m?e}_KL{D=KnrAs;lH~V&XPFmtX(5t{h=6;`HwKvn4ha@QrdA zfAEL#S_?QyI2t5=rwXZFpec}6woL5Q%laEgecMZ`^2$5*t@w{cOI`P3;EdHbx&-HRIm zvu}OhTRKRd{@j~y3Ov}qym@-KI*=-U|K){fCa7Usz1f?wJz{3w+rV1Lsy~74Ws znb{c42-a0)9;0AqZ=oqSvjn0=SLUP}@>7|kqr%Gu-K*fsQ#_f|6}OEPq{2f^uZK$z zj?k`2zPzCJ77UM19o(HWR+yRnUhu*v=Ieg(-18oV=sVON#os(z1xxe7&IQX}TgpIr zrw=Vskok*^27+f!u2+R=&9t8f^zu5Pd860Qp21ITen!E&Rwoc4kB6kGm_ZWiYPDLY z%R1&#YUT*!r9?)Mg-xQfKsfyoscwj}G~*=oWqY zcUH(45aQ3pM@$~;O)5X*Z=ttm`K)TCr;-^@JP5K}?Q3rR;0LS^JBLKK*J+f{ieHp{ z-y5Dh2pq;t5J1b-H@=q4HP(_vJ-uzZvd4-*JOj)AZT_m!J$g2h{yw)fxKO%j^@V_X zw#O*;_omd3frKji;K^~^cK+Di^P8Qj-tTXnEIxjQS4?;1oF>%+Q`ahM+=BGP5G~xh zK0Qz*{nNTLQ!JdQQj9hgMD>0QgN97f2LPh)DNTYnO6utECz8>Ex1*5jkub`*G22g4 z0A@Q4IzEX4?p*}gjdP^xE5JUN$Dw)vog^Zx_ccu*o7#<2Qz{lY${6l&M~ZDEVcnvX zOKHJQ6IP}IQkVe1(y(+N`C1jz#iEI`j#Q6-cEOA)xvOqE=~!f@Gj~d0q>DZ<-S_AP z8{tvW-E=`-z_;tJ11?@|b0hJe+t}E?8F$$(9cwk_-XM3o*UNaVIEF=ghKV}#>rGy6 z#`3`fi8bV5S&TjupI}(!!Zn>gC}!jYh-h|ZWSgTj5O@&>sxD+OSIy$`M@O6Wy0LLd z&{#VABZ)jrh1_FkJbbU0KfPto9dY3lt23dIdw zGUFG=O}okRFe!ud^xiuV)#FsL&^+!s+L}3>6=YcJeG-w z@}~<9zfr-{#Z$pIAH1`%9|eAFpAW7HzZ7-^3R?qFE>O@NZ`+hRQu#wZwaMS->{m{$ zwa>Am$|9N#>Ng& zzre~bi$5EiIxj{2qlFh%7@C^iOn{5a0 zoa!O3=oQ!pYe2qIPc*qIuET@Gx@&KiWntU4x@lTf2TA zvKXWcpnj4#COqMe2cZi#-9zu|1m@tEj6#OPa5ATWVb5!BeybA@nILl4hUEI9f{(LO zjJL~t(>$*|^g5D0x)^z?@pkO#-$4AQg>N^SwoPcS1-+ub{Jh8rR;|j$$I4I`!LxAZ zLiH)h;k+u>yY%!dyDN1R1o))OhYSPiQ{PeE6VMbKE4;UsS!U43cXtwE+|YgH4QoEL zfulBu2?sFXQvIv+s#X-*Iqv>ien#zf!#nH?Uf*Q|Z3pU#8qwhLs>=FL_D`0yE-FA4 zmGFftpK%WaWuE+8T;>7IqbO={CG4)1VCEx8V@y64ad5P1|8~Z zv&5ut#!(?7@sCSL#ENIarB(YSjZ@VQ|g}m2}iyh zq`$;RUoJoUd-#k9zysiTvb-3Ws0r}07ul=oqGMuMROpzi4v5q!l!r6@T9o*Ol)Q8* z=6p$guEA0}rCZb`Am%*vXsu+!)IFs~X}z1qU{IL=gb-+QFM8BI^uw>G*jK?=vK;v> zd1)H6jhUk952JMrfDmw+c6aXab>eu9Y8EPfO?1j251A*b^vYC~$^o9owg~s`Ecpqs z|8a%>NO9FLd&K=^O7ZvgQkmyuie|iqX4mbXletdu1yAwEGN>h*8D>782~R*aP6?C6 ziu3_Q=NQDc&F&vQ7bp8@j0bkosw#7*N=cggEHH%3$EhcE$^Kd-j`EQG1Sz97bn)uc zxxhQ?B-DzACEFUNkntI%h00UcpjS0>apAozqDWOcs14W$hkI;SrZX z8?Sf&clqmULIr#k1!6*lautP2LPc5?MMgr!mKDVgLM3h$C4NGsAr++&LS>kWvSgw1 zjEeG?LKP(y6*WSYjTM!hLRI}0RbxWcGZocKLN%KeHTyzuepkHtD^v@rtfdpKWA+Xo z?RpVw`R3Oac7y%pl^qy4bH4npw$yI*C|iT26P}jsMez(rC?=$;C$^dGg4Kr6Y*&~X z^CB|KLf4^)Rw(&p8SWa9GpWYZ;k9=Ydwl82?zlnayRgl+8s}FjRPSbX50TcjzieEe z?1qeVvE>49L8EOZKa|cccSUBG*#OHI7ur_cT0;a4$rlR%SK4Rh-)~kX{SZDm6&}gk z>!cQW6TJJXZ&Odqx;tb*z6h}LtGjxZGD=HT*{rXLIS(!$24ec^jxhw-3b#M|*XcEL~v{&cEvq*Hg-uGlh~t5=O7T*dS-+GH7EhUi6J_)J9Q z4yM=@sv7^KSj!)ClW43m+_<*PaQ7?UtGg)z_g3tZQha!lXAZIi)*|+%ME8@)IiF2c zuI+yp@ApWe^z$7f76>=8Oke3$HQ-c7QE2FB2%2cH+@aA9)rgO!7|!bD5U7-!NV={< z<_oQ!$mRq4DoBz?P+}yY2sgamR&Qzq%UN)f6tMUhl+^~7M zG?H%AtE#vR(6m-#sRb%JlEr-zV_%JhWMA9yWM7iYTX*u4{4M(Z`=-x4-%3E0Pljv4 zPX{`>wT++EOJZDq&BVz5q)e6@s!qLGmZ~LJ_7mA8&64Z^Y(H#vfBsdi{ksbrJ~5zv z-1EehQxC_5p4AfN)z>pAH@533hltuvkJxyqFG#6QaMQ(VbP0F?(d%6LU_Q$&oqJ`= znq!fmZs2Af(ICUl5fmT};pjbK>k|B=rY$u_(|p%8pu9~^;uuo6nvo&?K{$~C$-qdR z@c)o@mr+qiZP@4s7-j|-n4yR6t{ECcx;v%21?ev7j-ear25BUvBn0V@Qd$sHKtx4x z4$t$x@2PdpT4$~EWj_DE%vyWj`@XK9Zrzw650r~0?IB*uOI>)c+!)D$d z_phq4p`G})yyz~+;*6P+w3QC^QH!vOdg^4U#d~i)hfGjN@Y53gxE@u;A&$aj=^GS- zo5z0R!LvKm34iC8C1XKq!e!2PHc~9Bi5M?0Gs1P3ceH-;bbe!MZN+A6M{M~*x|cY3 zZQJV?i5`lh*%FYgLFEfY2lz`X9)owp+1}o?)x0YmSWqm~4&;gAIKhoCxp6(dw2hV{ z%68NR@NHb>UUjm_rDHS zErllD+nl#P#yZp>UFt~PN*%oqy!zB5e_RNWHc_yk9T}(sR8?1cGEEJEo&1HAZV87L ziX-(4Oq2>YxSrC9^|3`e8i^KBw4(`v$GN{(I2(QYL2qIG&(X%JYgk^MQk)GX1vE+d z@m2Fk6?3S?(nf!^1jk=fhw(lIVJwAGF75-qQvG>}6xw&`5f=T#NjsaFRuu3}FW{@u zI-Rp``As|BxtrL^>F9?o*H2v`San{^KyNb=c2^RP!ZmNfIxKN#E;ivZha)O4KN+M2 z*6;I79&)Wh+(?6+q=HIQ04Iz`504Ro1NJV~e>)nnV zmW_HVNK_q3?2fArQG%9W87TI`Gy~~^P8IL!95!hGl2nO-tx?h5Q~z3yZeJ!I9EopS z{JDKO+Hp&1?VHwmE4ol0`%-i}D&Xnu$x_5-p!=NbG7v=bGhVWGv!( z^4K+}f8E@+DPSmQt};(k3}cL1$wSjL=~fA6a!7beNI0Gq=<#f1E>Ps~NF)iZ=bo?U zG5BXYH+jju${pa%%kL|EAyHJIh5USzz~ zdR;<)yaW&C)-V6HdqPeBf*%eGGTI_+id~nlZdJY(1~Nj8iFot}AgBrjRI>O?vr#`a zvlQ6LuKQa3{1e@>E#&&-x9F(`KCB9RirK|2h-It%iu+iG^^x->{p-Vip4%8{43jQMV z7bDvBb~LzeT)uhY3Gj__rwB}!uioofXfuog=_=#aGu0#}aES)<&Iq-sapdMk%Pk=BL2XJT4LsT&9j{f1}uuE7EBj)hSop zrAI@I@7F^<+2g<6OO^8~v$(H;6z~1Ji8(pCayb&-m<*Q#0>vnXQx3pOab3SC)_T1q zh9NB8XDiarbiD43E_}%p<*8ZaRu^&p)$7ygK64Nm#F&Yu)BDn>t*4p#0%V5cgi0wg zL|uJFwdVs}oH63M1YeW1J$g0%>34>^){1{RTyj-^RRCjfj=4P<*NkC_T@b=%4Tkf0 z(doFCo<9N3Jtt8x!Onf6C?<9LQ^cv zh<(vO$w6e?1pDPTy^5$(^)}$A+jy1blwIzY z&PitXWRr<(N&N6uDm3%Kt_Rh9+0NRfQqQ%+Ham}XUy%8;D}{LNP1b5L;420Bo@rLf ziBaTo-(XzV8iWR@+3wc3*Ir7yZLy{p@fdbmJTr^i&i?$a+1uRdK^$l?thGAx_+m!( zdH$8r>=vD-A049)XwOxlfXn!G_zM2l(7|-#ljvi>DC^Y12vP&7gYrGCvlz8(#@CKH zN`6rhUL&?Y-m4}eqdW!m5@IbZV{!x4qqyt&vX~TdpOVKKa~ae|`012JnSDZIxk@lN_+L;v_vblMJQwOsN0YY399E};Z@Ud;8yly*V; zaZK^}pWzGzx?d_TZj$ZbI9;Re<^MR7K?%{*zst)}lEJ5F$<}j%`q9tP1jw$|kfzD@ zYm9nIOTokeinC|kmwUQ%%Zyv4KV+3>G{3A;Z+b95k>oAYbKzul7Hd|YcJ^<{aE);r z2Yt<&HvHu|RQ6oQEN!5a<_zk^Y6?dfbn_S$JBS5*QD(yQt#dJeSp}XjXv;bnZSq}( zMnS3=1P_8{BtxKy4>T2v~lQG07p4SV>g*{n<%kMfu*r zRjZv8i!YUHl1j7-P(XcpqouFq5niv@@tr3=bAa~jMk|%Fh(*f_vgn!Dne5NhdSskd zf<(=Tyic)HEz=Db<-p-4zaCb~5^Em<%*pbs9rNURIfxA%$z{H{3P_#;`dxj4P z9BQZ!#JNR*9v7=*FV8X3Ne^ho-o9!2WF1Dw&&7QcIgZ>LrK0U>6DC-N%1=ACB0|10 zlnVh+tzI(6nQ_T_TUlwB$C4j{J(C5OiOExbvel9C2HFy5^5O4X$f_SoOam5Anl6$ zH%uAv2u9K)Qx!H*XFv#`lJ?)LG!dv=kv$+fq8+)lWQLRNdb9u-IR#dCwG-(P)tN=3 zQ>75NRO;jok=+*YVv_sN?eaG;@ew&LbVn+T_J9%Pl|h^w1$Qo)f|Lmo$cWm;l9`ZN zz?i@YC=$5lHx6My%JVvq#4({qzzQRC&!NU>$6q!jCc1t%Q-~p*^=%{Qb_-?Dy)D0`iRv?V>iJ8K)ROJ-vkCb_-^@)@hW7wNB*;oL?Nsp+? z83t6%xV}0NcASin{5@A@hZ5uI*Lb!cO+y$3<%Bkt#=%)ylxipqec>Mp`Dh8;kAgJq zy#1}6e@rF`;;GEmTJySF{J*%_(wJ}7-h_5`e|hHJWTtYG*E^Kd~;|QyfnM*f66jc zsYa|u=#5|Cr$F+>lDjj04~HSuwx#E>gG&+?2KQchzyDU`GKzR^8^c~OI@_%m!$fQQ zpF&IWp368?i7laL!8qORWr7^79dSm%1e@qpl3s}&`OAVgd;wP}wzT$C3k8!RJy&Vo zCH8dR3Z@?4J`6T#9hhK+(@LV(nVBUHYyyQdS^?MD6||0AI)!hIdaiTZOC0$;3ui5F zuk%M~olqHtbB?0l3ztfqL|zuYdlvA$c%Rl;Vxe%}zvp}DRf+TCZ-ootx8Gl2(YeUM ziWcKUZz_mOU6c~~XhPWpym|h<^ho`V`}bV!VbqD8o)@@G*deR~+Ao(-MNKl0^RX_R zKdQSW=phLB;>MYzO1|9VM%@Zfj*d zGm+w(GIA}am2X8weRIcEK}MxdH@GxM7t;OR1BbR^e{K(swDOH0E!bkVDTIl>S+k{| zoU8KMcbl@jMX4{rB1-rugIXp~s+Qo) zIX;AV@Ra$-vVM2T;L3TY_W7!8!Vc3uSFb20*`97J3B(tlCMQ*0Ntwo*fJbmbC=i(+ zPst{z^pKHb$-?f~gi=4HW=ZUGm!oP#=jRNo zQ%A~K=djLDZONi`i>Zi37}Jf@2la7+AG@2y-J(Y749AGYu#Y!26MrkP#l z7gb4li_c|1*uoPIl!#HdlhZJx9OvJWh<_E7Ci@Jv`%NVkB!44mfzg0-2j*85B#2S+ z!P;Fo4{1+wJM962*LKs#?igcb_rQ%)1IHj=UrIsCDXku&W?28z1ovQ3g<^pp-n%9l z4LT~G!N)LYX7bD zyrAX^oZw4||Mq*%^Dl+oPP#n2uJwLrdjBSki+UWJ#a@v6P>{YdO5C0r8xEgv5dJqR ztb6zZ7%jqoiN)k4`ZNZUs4W(B$Pjjj_$McxI4+J>kPxqyD6_w+t&-HAXY8 z`jla^N@~7}5wpyaxpnyXpo&Jdyz}#js~01ln*h%`6YhaM#AlSV7M(y*El02D1Gkgs zj-?i>qhPIM9J&1NF2K{uDEWEhanIodPy#>@O#bLP$eu4S3OOXK0PirgPlJ8nEpRoJ-{VHN3B7dQ&aK`Koi%9m51Hr zn9&0Fi31z^)8i*Tj>aKuo)B!4*f=UxS>x0ZaD5HqQ-1lpHby%pd>}R)ppUPU!RGnt zcmJ_D2Fi#VFKZlMPEWW;zx#}(OD{jbRS%T4@S@cg$$a_H%0HM>*8j-Hn0wIGA0&5K)si_c5h85%{&Wyb+NaE^9z!LM{l#&*qdy5_XYE5LqQ9sl&-=u;50TfD7X|A|{7 z*Dln?{q2eSGPdt}?XwT;9w)U@7fvKG4xWv1z|&-QG@M`KfN?o;nf6GUfSE4aQI4L& zXE=e8bIK<^5>d3w1oeHO(@9k$<*fE_coi9Gh0gVz1x*D#SJTf2Z+kxioGhFj0!&G%`#+3NejMj33RK z7|jcb5l)Peg2akD#Hydh;#U$tqY{a53A8Jc#xfcAu(~;;aW}POsni(#>g6gFb0Rn& zz}G}5fTVu}JIVH?VPcaRgrT#Npj?e{*+v1xtg!785dYG;Qb3fPU-9>4bu1YRY&CtP z-Y{6`iPjns16L^E$_}&)!#Xoo$+2E^F(K7s0E_*N!BFzMfCDT^=E9&T%b0!;#V`p7uY2eNhPX4*|2gV$#aGR zEPOjge7__EJZ8$%YfD#{z}mMvU~;+DNV(u4*nSV%7N`ftCn<7rdBI_A=rYpStXRE}p&oe{J3mgGO<oU2Xn|L7GuDi-!8Fl?qb?A_0>C9&|e z!0^r9@ZF!``(hEtfe~lD5np~rT!}sZ5%~Of@ALbg&#}ZKaf2f9UPTfQgy3uF zm2s%SN^q2>y9h!2y%zDy`8aQ_1e)fJ2(6S@t)65;74#Re1CqtkgreXmkN$%f`Vl4y9JG{7YME)avGlWC<@2VxaE*Gr+<(80)O)bf%Ua3F(WYg zEA80VOYLs~2ekSlG{8zqt2Y4lYI}hjhP?N#8XPKSFtC*;HO5W=3O*M4gWn`co3AMO3ntnug)r|AJ;Y%9>bj3veql2HZ*F>x5g&ZXw6JGNynE7fS)ULm?I)yGL-b2hB7N-l>()C3i4IdNHN}rE zfh1WkVAsQQA#nfhmNd~nwd74L^Gu}ehJS)tYjSfik5+$+`l1VNU4CY%#*wRK{Kx{U zwGar}NfHb4rU~+n3#HeS5i?h*R0$U#nDp&M?9N2&Vkq*@C<3d*Qr}Yso{4AKOC%CY zR>w#-S8+U*GciFsK@O;`_UiaX*}Adl`6eJI?ey6p92ewI^7VVUqI(IV>6@tS^mAH` z)!SsqDnh$UVXn28RDM(aio0<3#|C?mTC5s5#4UC3aYe!W?f7SFEJDjRKEi0J9Hp6b zs~vHo&~Bv+;hd#EX=`>*DVK((qS@*AbZ%og?i@Pk)P+k{0QkodBubq2hkDFP&pF@d zBb5xq-?+*u87{YQ8^m!O?c)yGBHH%Y0$>Ti*>LXXoR7bo(}Z7}t_R3kcA>?VG-h$l z12H+_vA6j?Z9I88X6W{con#Q?KAqz}H_35QPWpMTc8N_~{Aj}at|ym5gG9I#al`LW z(xjV#%&*#|Ewj_YM8V z=JY}vtgS2EVnKI_0}TU1y~U!(xV60eZ5Yp2b2?OW#+@vdZst>UVMv;A&~$D?msF`i zL=a3*ev9dLhiS0uxyLCNX|NA$H&VHcEfR|$3_uICL)ewavF5ZwJXZxp`NJTIvGsAB zKT!N4aZfn$S(sRn*B_aT^uhmbJEL43baHhyLHEBqYzn1xn@lVMWsk05k@*T zkX*JO`#SYF>E*e*JuY|r*CJ5%%VyR6^~)@k;Xw3o%JxFp#zJo-ABmwqxf%XkXsoGu?fDiS5>gPXHu!Yv=sg&g?c(>p5T&JlR+hYKbUU5x2Jb zIpWek9x&TGAu+x6@qV1>AJ$mpNEDEOS}GA)F%}1NDkqZ2c+4DLX@7i^2AT0c zfCyHPJZIHNc6Yh1ew)jq))9um6RMp{-~#uTBnj2cmr8}+{lycmU#w6}p?;h!+^}4u zSu7cjFVeW$VAy0flq}M;-eNHja*r?C{Jz~`w&-z+XvR^g z4?|&p?(PZ1+xA9d323BK#oG_wq|!W!fJ$^6&E)Wy52s3Wp1do06#5S;*>$>9tx+tU zCfWUYt=W7ag78t##b%e=_Hf#x-mklZp@05a{(>VLr$AT?VV$2|AHoMRSw1h>)>#nz z!5WJ?WSP($r(53DLgyU3;yaKA6d zlKA`+_E>ZE!20?3aE>IH08|fO2Ba7>uGDyQP#Ve7SBQ=>5QKaxvD#Ey%3>s@;wS-Y z%{Z4ufW*s-2@cNo%Ac7T62-w>4Q6B`R1q_R(aM!o@>4m>Fqun8&TMQhEzZXmtVQ*U zw6grdQ&gW8h343Ww_Gw|b8uk@>fYu1m|zUQ80(8fe4rAadVj3*e^Tx|mF#QIJb576 z%>|zYX7g+w1(y{}hDZWy(utCHbI66-xUye;rDZ7r@ql>g`PZ_~cH*9cB87?TlUI^WA%4ByiL=A7k6X;Gf8zDnqZfYfKszO!#9et^I?#C&f(5vX zO(6-ZJtDT2O>tplZC9{<%NSemkiXhDaPlh=psi zg&XylVpg)=m(2_HC`Fe&bRM@3qf08s(?cTK4y7NRPkkVg${Ya8gnVNl{dku@K_K3o zzy7Zi$&&l4e@C)8C}>t1gSN-JUCUanzaBu^C9)}zt`f2We_s)W4Yge_2&e8GXtG71 z6_$U+U+9a7*y4An z1o2cL95tv+rhI@pe*99yU$TrMg|%g??`w9o5Zy=VP5!l(`QYTr(hI?awPSI zVTEx<`m&cu*^e|VQkP!h*HwnCNhM<)qCoafw|c0_heEYB}n$d@zmRSwgWpcx5wX2hxM1g? z8F-ZLR{=@?jmtGuWFG{3hMMj5*+l*$u^?KEMuEJ&IMHCA-Y*mWgl9XnI zX>TzuQ& z8{9Pba$1Q?-8Qj}58TI6G0COgj(0*7OAgP@N#MQG$1GQ`~(O<~N zP3GG~`Exe>d?PEG-ceIMA3Z?F-Eiscl)%A#h_z653-5`e!zIHmJofg3AO5qVjaM=J zpJe-OA%FP-S&wXD3)eS>=e5j&(XURv*Pgr5Nhmx4qeSE?F*u3WTMq7@RIyp|Rvsdl zG4unG84;eABq1ZVh)W0uQQ}i{#Khuz`Tl)y{9{Jm61!0Rn6Z9vB|c3S3tkeCLai(f z?Xo~X(5_0vvTPHnsk^qq+SXwAMmwOB<7}HUW$=P*N%`dA^9du*XyrDTA>g zoGBp4L(1Zk;Sn79y~TBjMB{zw=AY>%mB!WAmxI{@+|@J90tL+^qBQ2B$a{N8dy!DA z22$7!Ip{Y(s~$cCLOv(U|F0fxgF-*-hXW_;=%kI%AY@N(q1aun2Zlw5OEl5*4pCe`zu+dBU&eRFWxE@AQl`{--8$ z-%m8oj`KlzqG;ehQr3eeL;pvBB0egjA8w`jKQx&XR_COs#05lw=K6znc(zjilO%=B z&gJueHJLAdmLCm3r|%j>ihBO5$!tuoPeF+7*MHFemlbFm#kU~(uO{EAg zhgvzy|GOsh|DP48f6!!l9#{e7B;T7`$^s5%9`od$fx&@9u+A{)V2c9oPn zG6I%psPB?sVONfeT;dZ4LPS9A6^GL91Y@R@fJHkR7EEM#s#qLw*HDvBje&obvku6V zmy{2eP~nOdeae|MTIF7y`Jp=4Y%e_c@1r-$wbz<%s_ng#Y-})rbZ37uV*ino{`X;w}T0e zE(Tz7QR4*4$k7a}p5Ux5!tf)tlXPcg=|_Ahz_YI0N_H4bkltHvi% zQMz7D9M9Z<;=Hxw=PBzW$Ym zeYw>3p{aQk@B5#!Q6(D7(@GoPw3`9@sv*z!cHlv}_va8u@%T_bZZq|9*ONr1gy)@`QUx$qO zxV!A@E4A>i{}u~uxToxfZ99G9U@v+mWEs)lgwc>TNvpgUT@Dy{{(9T#gWby?ckpR` zQLKyz6P8E}j>s0^_RGd+X(Xz^P8NzYF=mL3 ziWV9JwK&c(f$RYZ&8ltbd8-xrg@Ez=>HUE`z&AH376=lPdYR#YF82a5ZC!gg)lm-G zKsemW2y8hOSk^BY#Dryu%*PbI&^gd?0j6Z)_hdEGV9($5Z)_LjOaI6f(EFxPuzdo4 z?T2bfcU%4Vn`~^*RyLaY4>FsnIa4``ciaufmG-ZRp1kxwd$U;e}S*#A^@V(5jIUVeNQF zgW|6%RWA#E!kkOS;C%%M>A&T&F2q%2rS-8J7L^#)s1X**8u1+zyfzuy`jVkHWei`0 zeGGTfro4S*>S(v@E1pQb#xmwzURFc0R2xtPBY#VDJS_(!)8OE-`3^4Bbs8o|u3&PaI=; z6GQt!vhl|rGA%sF9%}wah4SHAAM$GrFh8;)4Z2!lz9usm>#T?Ux~g$S@6q!3H~zVk z+v>+tq=^;bwZrXrKS^!llQ}f$;E%5rgc*!PV_sPZG&fB8KJm9vbJY2_96u>vD-`jg z^W$}`q|v814G$Z8<^4T9ym=}{%3_l#>H79pmL&%af4$yV<985*;);+?6xgr@q#$LE zu8S}x59ev7T9=8vIAu=d=~g%ni=lek-}kY^d&1yFb|fJx@r;~~iCb+^v^pUBVF&vN ztdX3A*J|P_Q7SeCfc+XS7Xe7XFJdHD7XeVw=$IjKw1py;UPM7mV}Q|;@aGFRUc%P! zJZ=;EPTe*wTtV+`=e6%|zDzrrfmoqfNmiP3fWOnY2X~_VTC&WftJ8}6!(Hi`2s={H zk}}(kMB0^hEWLDMsjU2TeU!usrsJwJkt9DC=`Z11M@Gf%om_iJh-J*`9-AyQIWij6 z*7uGixKr%HP^wx~2;{B*LGgrQEp8`x2_3N}|Lae*oImSg`0(P3AGm9ch=Y8iY(>qz zB@L#g*kUqUf9)Karz}hT>#yd!TLa&nTm8A)7$NFuOVGNoqxtiGTDzws|J{Ytqd%LA z={;R_T3?=;|Jiy!-_z6k?u$q0pY1)O-d9svUww*0cdBYNHkWtnC4TMUW~u({>r*_l z3I?w0WWKFpKHgUIbSBD6T$8ji;qHDrz=V^rLcS{bjru;g_`>|>s3%=!4A``fpp#`d zMI9cg;6UUo4t^YO>y#n@JYvRh1dn^(TvDr)u#V^UzIoGEm-@+s>62=d*zjr!E93|+ zohV0EfI5uac*ka$7+CykUy^oFn{m!28g}A^d*4${3L7$9CLg=8kiO5+uj^kko@Zp1 z@qczxbu+t9;r+1xaD1LUFP6CzAawl9)6mLh57c`+PUzu{8)YM8PT7~l4J0gG%x!E@ z$#`ypjW3TS{^*TEznu8EX5K0GqrIp&xvO#TpwA@1%^xkR>~4tmaW_`5FX zv4e`vZO7E(CF@Nk;R1gkFb=oSO+&bNo-V^%#``VYRIyXRypE){-t0Zebb+8;EQ(j`ei+KL% zAZmL+d-kIP@YCjOL3SbFgiR3L4fZuSlJtqFhYP@qGhtmeK?D)o6Bw)WE3%hTDLLAn zmcxiv*@4g`Q4doeo0nx|?g+6|f?LauKr>pk+{-~%8wB^*O#zT zS!}sAN#8{nN4)3_06Y$Wk;UTdTc5gil#$xELx1rA_^i)^%iG{sCKcw0vJ{G7Qd7D+B5Xu>;cdrYUhT}RE*e*Dz*E+*#>@dVnS`95gvE;M#Kj0i6in<{17gR z;J*Bb2J-OV`O&82Q4$65!3Bwh1<8E{shb7qzYEY*g;^4XIi`hq!G#5dg++aZC7Xq1 zzYEK$iqw4a4)p|+^$xVV(JNWDe_}CuFYC&sdFits#;q zGpeQT8v%Fz&ajgW6N}5MnA- zZ;5?j4VA!G9 z%kIF~6_SWL@zn987_davchVL6N5O(}0sznlICyFX_*4mIc}ys6BWYNKy}S>0-y-?D zh}*wO5~~Pv20*luC0c>FLCNed%pM!MCK6&je##E-v#|Nv! zJKp;DNW$0AGy_{r?7onZyGAgoIg7$$3>YVVn^+VSIW-ljA!0EZ;yn&dN={C5dHA}- zwC3zEOj{WCQ5bkaiC|S0m>IR9A_tuzec}K&y@7qY#JcE(j{dFzaj?5yTCY<#b>6{J z0U%O;11iNj*0^|vNJS$_1&-Ucv;%z(TqPou5~{ibJ5wnX!`2RxZ3jj*5@faq^}{zq z;0!zo@j@NNiy*_0jw3S>VZ%;p9uJ(L#H~#WP_hN@S>#96?nIZD=Z!M76wU&aJ#oxY zKQ<*_#c5I2BR3nO*b7OgkJR1@%Q2vnQ^q>q2}A75tEr1?v5C8IyrJTIgg8sELUgZM zxqdMK3~DE0xa8pa)6=x7J}==q>8IWR>}?U2^c{c)@Yn@4^~yBCBY5DEJg>0jUd5-p z^17@~8|cyv?8|iXP*By37SF!8ixqR~_Ek(w4KlKt%~Im*NqjGAh|mEcb?|d|OzU;P z13gxpx{JXiR7Sk1+d=+KPh0?ys8vuXK~v>y?I+A)Bd{IMc!UTPDW_%Dv2ls@?XuA+ zOV5~#jQ@u|itU9k?(1fQp^}uLEjPdpO+Ogbzi-~+XEyxFtxMGnaK1gft`7gD5n!DX z3My*7*-A7vPplLf9qkykOzBpwPYf{}eN%0OEtlltlOz$U^;83121!0UCT%%3$!6&t z+~_kwG&xvo~sDH($JM zlLB>U!n?y}MVe*@cjR8Xb09T{#x3Tinnm8u&7J(6d#7kurRfooT<`yLdhcicf4A>WSzpS%dCR(u~zPloQzamSwD*t#@(Q;Ked{wn{ zRefkxb9YtyepQ!lP5<$lq2=0>@HLatHM5~Li`_M=`!$V396s0Zm_5api1m@B2dV`!s7_prtYOe2aCisTpM;pR**S;v=0q=VT$f#` zxy6*bE(*hYm?gm#&QzIRxIf{IUL`@baI{wleg*zq?8c}bQ8*v59f&HF4sShHu5OH`-5Xi%`_115W1d zRvO~$9b_$cvU#MT@w<4O7`&d3KiVE|=1vnG+42o3F*Je?LK0>kLUZ9C>R80r-u{QD zX&r$)UnaE5!+TfqB+muUiHRIH*6Ph~|9=+p+OJD9% zShaq@kP7K67=1$)u$g7x* zoCg!JLn;LAm4w&Heu!Xf7_d1MBf@JP@oQA@`4tH(mi7B<^WH@@sSl+Jk|liP{y5VH z60eKLXb)J;#Vc&v<_!Zq>yV>Uj7hkKu{y{bqtzU=4F%1Wgm2hH-2md3=h=kHf{Mzn z^Bh_?insq=h{7Iyj?MImD9jYw8<)`l>`5z9GxRAm3Kri+;P8boG7?7E9+f!1JH-b9 z?h|@PwH)ukwrn6!3Bt%WaVQ?%F23oY&o@%X5A)^indlel+VDR}Xygb)AOb%0PB_Z} zklW=%C~{o9s`kPm)6}#N-K1%!{b7Yp3tLX>9TADR3xFRI!|e!o@3FJ6+BNV{D-5pq zbkIuqAJS*<0Na)@QK1;Xrpx{H>;Iq#E~Vkkdmr`)CGvE4Rv34qM?) zWKi3V(RY0T-PiEUgwT4pfb|JZd$QKeLzMfw*lWt!%kR645XaDAXGehTi_--MNSp$Z znt)yE$bR^vLoo3VFc#iJ42*UXoc53o<8&~J}2f;&bSL7Y`pr`0+P@}pH!S_btnjt7h`L`IoRf#`+z>S)KJ zRs>PNb-XgHXXnsGq3UVc{4GlOQm2-IR$QI%Z|}u8 zQz5AGO#$h+YWs7XQcL1HWUXc`=+`sBEbP<1f}>@`rQXzmtdp*t;^r0~Xv{(nepeXd zHLq3hY`1do`T(~84Z5WoBR-t#jyW2cK#aMUo5UXJ>(UjtLFA3RKS;;ZnqE7+&E>P6 zEHVA=G++AoIf%~e#$~xiF8`5Z;!>>#cq3OooPgntdM-v?YdaQQ@Yw~&4b|btnG zj97|kK<^7HM>1zVdheP4S$~nxq_cE3Ycj16sw5e_=wSOkQqa3oa{+u8wd7Thr&(}q z_AB>T$HT%J6Y=l<9s@?oVu4xPWEVWBCP#Xv&yEBidhdZuKOr|KaR|G;uYA>3x=M05 z+=EDkUQi#B52mAtQX)5YXjh`NPIadXf8uZ{sGx0IPorjY)ULwt94M&Dl)&1d%95cd zsK%D>(4ofhB34kHtFF33o#*9*pax&>QHO@WYoL%OYKpZ}Q)od^NK0hHp;JrjW2}(2 z#HZ>`?ML4x{ue8N0SfENf!Vrr6<|uj7(FFQ$1Xh;hB#q;HIAAteGP#(!UkGm$6W?G zGPoj!dMa$)h6XxHB1T5Wj@?Ga)^Q?FOr2}GpO|~T@qg>lEYvnRe{#7WN5^*V+G&^J z&TZ`I`6WK{gm=5Tck$`|j}{9TtSImRGhG%ixl^+Df zKz?ifDVFc1!=WE*K3Mixo6TZX3qIqPn1(sCm^yW;D!QK+=-=%-GvoNUwr1Jixi)Rv z{~!#sh#)LDO!YmbV(*~I4VSqxmF~EOlA|Fe&rW|&k#G{-ahzw&>>kI-mF#b1@xPA(rx1ao3x7YS{S7D>!lZ}a*|khr z{i)IQXuL1m`B_%+6TI;L%jjr38EwFm>bD)@q=lEEgU!#y1FBTR`6i}^xG%?DBg(M!S$o3Qk4>DvX zEqrBR{xmA?`2`E;MfQw{RXK$Qn!tLifSNSIDK_9CW@Im}`V(Nx-?Aydu6h$i0v=QR zD67YQQEdIU5g`+psTc92P^FOn&N5x(3>%U=E9V1iVs zu@jS4aYxKC=0Zdhr#_T?`v^FG9Amo=8B;f=2IO^AAKwY?5BD|@=YM!qGMwHpd)2;F z7;HAh&%ECkWik#&Vxm;|)v;)5cD)%_#g({3E2d)F<)KtH(jA zDlMza_``*5FL+>9uLD_X6VJp7YSmti3X%@S68l#{XkgcpxKLH7`AaVP12hT|-sQ-h z(m^D0;8{sNblN*CKKFZOu0UCe>s_A2a3$h1fg<9v&>W6XH&7Y&@wOkz4&%xI~; zV)jCSq~M7-!3Y3}<->$LakNQ6+==d4t{SWAB0=8Q6nYmU9+vl?pS*fYE-Bb>F7uW9 zl~Ze1&7Wv@3^h}-=5#+=8<~6|*O{=DMnwyo|HBn1_oM3gQmlLr%3fAMS=gC_pBYj=NVLY_;^iADi3q6>pomXSHPjyeP6^cIF38IgIFMuAGF7lu#w zN9I523{<dT|oWg)`IWr zYKaVACVv8s3LRdUfF*Na*t1c?2^DoY*862&qj)!DJSWo{>>P--Q-jBnhk@e>?-zLC z%}qA06J2H~sdxDqf&J&Q3Z1+XoYwJk@u;S*mH_f)?uZz3xL)lkFH*hO#fcHscLj=e zjEKUU#eOh)`LT517vf^pQrVI|J-M61Y?Qd8+Qb;Di!k2u`Yf)AFoR*qlY9v(pzKR$ zbc6D{^9QuK%RdF_3X!(iFzRMCK17P{*f!;e&!~zU-}uw4_z&<*Myu}$fbz@#t$r}` z1cg3{V~|1GGqE|AOtX%ypjJdl#6|zX5ybwcAX48CV#4GwXB}rz$=}|u#x_UGG~Iz2 z93$NZ*{__ldPQShLp5p;6u*R%eOU=8@`SFD3kaGd$XaX%bzq-0C4UbX5lG2k?=~MY zD8pPsWcd(Yr(XmF9UcnV2H$&pUz9^(^yI>#AGIT8mn{UtF73gjD(nB&N3t%8;`J}~ z^N@qnVLgN{rWvuyEM4J!K6YOp1S;R56o4=s$^$l~leeFLTQ(YgSX4aS;18+3ivO`n zLOrb?gReJgirxxff26AiVWBZqHO=^^xi{y{MS!b*mYxaNU`M_{i69YATA^PI+ z`tP%vXfKD$;FlJ@a3N>Z`;EQ{|JFe1r~19z07|ik_cF?o)VA_feVU60%fnAie#-BX zqSf-*7_Ll~iNv8kc3z3w>ipP+Dh2@@I z+U3`<*Dj>{x7AZha7Hrn0Vg4rZTjV@9Gu>qky9^%i=-6*jG=?155L|egxvE6Fl z#ulqi{IJ%Eg zfj*@WLhktxPNXK{jhpc0$iZo|)>Q#b`C7&jrh^tME^CB_XB z13j1?#iX2F=ZqZerNEV&#hLzHz??S5^OG=_<3WHH4og!5Bg!QCkkD>eu#dL@Q^f9U+ z9BoMwk1S9MD1#OuAjbf9+!CwSO#j#;k(C8?-v*Y%rABRo&Wp2IwH22Wx#%ToU#Hr# zMh09EY|)C07w{9^s3h7m>RBc=d>e`>03p@c;?WE=lk)vB_jl@v%y7+!?Tj~y4+EEq zOTrqL5WI8Syt!wR?8$Vy5{4a_*CNuAc<{s{3o)3?Q|FyD%`ORd6&(|z6ZNZ)yt?uy z6B^TN=!BC>^g(-kNNp>q-_`Md`{PIK69D0fV|@Ud&IHI} zg55s%EG1{DFirnpm{yaBX0rY*Ntj`@T}~p0*EtsUpwftz0x_$A6>W}JLKAj|A?^A@ zxJfe=p402ky`E{OPlX>wpfjH{Ibm8PQ_*JxHvmx*UOu66ua#dvk*m`2TWkl>M4owMUx8t#d-as z-p#is(u-Y_%k@)p+sz*uJZm4lqYp~g=fI$V(&}ujOPqPBz*`bbdwrVzHc(-mr;zF5 zXI;f?cCk3?W_qT$A1K)X8vA)*KvZb4H8w=JbRhZfQr6j_EvT`}xCWAQ-CM~yX7S9` zWKS}?DOvt~G9xOGaYcjfiz+xfFX4SsB;k`J%_r+$El9g0=_ra!EmGhzE#bUWV>Q^! z5|B+2EkKhXd<)Oai-O-l z#YmcfJW6Sh5}-?o-F4(cS?u*rj%H1I)gdS2`t9XENiD)qi5|3re^J>yyE+1*A91f; zMdWfqszVpsw~sG!Y|5k7>B?O|`S6!lD5kjUFJpft$%``)ZDx_(l-jQ%|59gl5s-@q zfUgQ}4t9!!cdk_tZ;URNpRExQNPy)UG3$g`#^$V}o^_6X-%PwFSG?;S9LXg9h8vih z5&m+%d!6qkhe2Zg*7xPCVMx2x8jvu4Rvp?-Xu zH0UK#Vnj~uyBKG`kX}8NYMZ+_vk>JgRQantKJ=yD>mAe2zH;jvW^t({a^HAQYeN-x zy`|{;ntH3nuq#k5q;|>Hdk#;Y;9~c7@qRi_@4rQ`2|u6vrbult-2-BArl{m*O<%xO zN;g*Yo(04`ASvjpDQKR3Mu!}BK)ynJCp7PR#BomXvn+BU!pC?+C7<43ufra?aPFD~ z#Mj#>9+OlOpUUmvP@w8o%=GVtQ{omb;2Zv?lPY6(9w5AJ zhI^B^*BBZ4kj;YX+AHqf-mj(a-JrJ5x18Kg<5*(K2V0IK4ar@D#{1PQJpnN|V*xOB! z5$(baf6s@R(`)>1gT5`!etWm}?dbi_Zy&&0OCnpx7JwDqt&f<EaX;1#PXxZhdBK zt>ZEb7o=hpYNt$Q&76-GG@aThW-IB_-5`FlCMfy@wqvjCIt zK^#!s-K8C&ynQa4m^=3rff!l3M4vaP5#)*Rp}RjzI|m5+ThcOBLvz($(O61~8yx%F zu{lagyp91P<6NY9c;q8e!_(9LsMl_1v-V$q7g~0+623&t#aX_9`36DaP~e;Mur&Au z1RMM7iDIq+m@qb-Gc!$Kzu+~Pr*NIF;n6@Nwem^3G2oX6Q9Cp;RjUS+Hk>K+;rl<{ zo%kM@L*nHT$lf@DA!f)t(*MHxG77u)2NuH)I#wpDE0{#${zqD)DS2Kd7?OZsH|wQ# ztMFj|Gxz$YS6UWzGBdI4_;irUP&gpBhtKAD8H84z3cDq#t(Io^GHODMn=!#agfI{_ zPN2a^Rlf9Ndriy9#5Xy-W65D4Tu1CH%ZLZXGu<^V1tq5(J9r+_>+leDy{5Sbr_W}7 z4P>(0y}6*yV8_9;eV34@vI<-g;8W{#`x>nTX0O(V2Yn}hUU3osobb%4_TyPNy}fvD z%(>>A(X*BjQBu;$KdH3q08RxGor0h>4S|tMsevd14C2YtwnXfbQW)7`&|%jt=h=Vl z|J@k8vhA7FzRft&4=Eb~d8&)Nxufa{>ffh%95AHQ9IPO=L~bNtpQaGwdX(lxGK?tT z=WhOK9r5eU*T(bXIwV5LHuqiRo5b5s8Dff@iDO@pY_Wpx>3m$JPAk9i^~f4}WSeyZ zVk6U|rp0xgetVrB)r@1{q8Q|zFV9}s{7Lezp|`tm&AWb*dBgntCuto|T4;LV!p)+T zBnhE1Zo+pjqJZ8Fw7kietsV@~8s5dAR_vVk=}l>2RH$&M4eA7{?K z)0!RWl!o+ufMl66l?zG@)vx4QUC#TQ_P8AEWLx@Fzgvf%Y?y-5(k9Q0`_Jpr$Hjir zQ11zT+(!$ae}9RNmm9}tbQQRgioFI0__?AMrpbDgWgLN9O{Tugsz7O zSf&7y__o1?@W>z(<<}2N{CLfv4`aZH_C1NO=jMI-39cRan|tSz_-fYbZ<#CARoWw# zB7sc4H!#FfJ{4sagiTZ5UuOC|ML^Iw9>G4M8OdO`zRC3+%wU#`RgOyNE_OIi>2!1W z#;)vWfoAYjo%O_mBEJ1Vtm|`9v6Ww?p}Uff#%yEqcH}Lkz;%RqWLliSJ~Vno?KA{! zk7v$cFc$?mG*X11InEEIdvDZfXZchGvd{gZ1TW=zgPz8tz59pD^>99YGSQwxb?Bqo z_SnB+;Y-p_Tq|{<)WMqb{~q^aoC;$UY(}wU3bm zC8yrzofXm}=pD|Ku6big)0sx>!dC-w;MUsCqQAwm`cX?UEUD5&@py%@WTlRE;_>3R zqwLjB%|nKNoc!n1su5k8%0)iHslcv4%_YNIH43+G3)*{bRD$y`OpgKFZfK2Q;I1U8 zE86e2u83G;ZDp*m{Ow1Oz&Jtd*Zq%NHBtiXWx&x8&oZkbxNVj$=EeN0+bV`Z_I^i5 z5XA8vr0kXHD8jthY9W4)&tUOJ#Vg^nERBJz)e3$ZA6RIl;+B*!EfHwKGAoN~2q3WW z(sb82dG*(;PrQurm`UfCMoey|o`qfRQ*#b@j1)i1nn>&<^^x&vN9@jx40?BHiWOUZPxv*(F!f#OV)4?++w$Lee$o*fCAF~=9;%e(M^-z8xLQa{Q36m$mDQm#MJcfkGD5X{~i7M`qK31@1G-60O;6gCeTO* z8==?)Yq~fz8!5-tQ+A9(H`Jw(D$@w3~kJCX3qOQ5>yqmHU;oEanx5^ta`n_JrN?Hy;hYVyg8nU0eq7;wXVM0DFpGPW^U$h3HeFo5bmrf~m9sLH{Ky zqmI)#y0w?{T3qM35xNS8o&A_fEVT2>lFgBxXRxC(34>a+*e1X`{@BpJx*0l>eQAk)w+KP$jq`H3A32<8C5-4_Qlh4E|P6_Um5w!4uH z+f)6~GT?!boD-*WW#1epE+^EFpPM;vc8-t?G2K$gWGN}@coZqFWiGO;k;IgwD*fM) z7vG>A<_*(K%WqqZx^(1_wYgb&g7(`nFXM6MrMt@Bp`t_|ac$aHeGV+bSr@eLFG_kQ zVOH$Nbb+LzAhK2;5SO`cbPOtTT*SQxtw&TgH= z@JVcR(14wa_7hD12E}v)PrfK_RRIqpr|A|?LpIIfuFoNhD&0J@D&$xxNNC3j{{G70vu%lV!;W6P(83#1GGI_ra{nd)$n{Hu za7NxQ`O9+G%Ol8gpwpg>L}yiY!!_)>%2n3;a~E3rL+vh~*NICF3jJsz+7w}0x9nfC zUoLb$S_ShTFfV3)P%mrnqZ(Ny;B>c==k0}Y3x3Ts`(s*HQDb=CGJk;d&7Y-U{d{0? zwhCwHC$+oVF7mJdvVV&h`q^EGcKc;WNkFC7EfmLuWjzRC*DEczoe(h zbY;IgN)r`bVs*>d3o5&rhMiR!4bU<2&K?^}h6OSFZKb**mM-Mf2l*F~R#i{$XA@i% z8ZI3)Bu)=UCE%<^07+jJ7G>@?2MPLk*bA{$rc1orvprqYSCx5f#eMBozxeB%x_5{# z@eZtd<$p&%pFZQ6p{~VId&%rNa+1<&@mN!<%W~!({H>msg5E)8{1e1i&xDxE#P(yD z==lh=R{1ZX4sB7gNVVwMi%L($+xNOMW%O>wtV_28B#m2ur~wvae55j+iu8x{*n!~N zqBfFi0#WinT{vd?zi~%pBg7O3c)C7JoB@90=e*J+wcCKJPk@%LJCMe z0L^oi`SQ597kPxAPcKcvc?fbV)PcFW)cqejx@M;a5Q1aQUh?)$_$V57(kI;U*{{^YSq3CrDW|jRZBrVR0){s{!WkuLBMEXykw!0(;gpQ(WSyj+-Yu$ro~cbbY$3}^w$N%{X=3_0Ry<0Tu=w@Dmj~r zOU`o|^2eErX7!o^JZo5F<-=apEI`5`9(#<=pG7z>gEL{E+X{tu>DKp-i9ygKL8B}{ zhqr}f1<*JPFR(c0A167#kaKtav_Bwa;nm%gzPtZDnScA>e%n>)Z_nMIB%=QWW|cd+ zR>0XCTWqSrZK@|yYO+!u9E;m(-ac}&X>>YMH#)3G;d-`cQ;#4wY^OXL_4PlK`jQ}J zUQ^htp2~LaoVndduQAFTSN5oFq&1qGLmbcsf77;2@b?(m=BJk>bEBK3&QGR3UrHU> z)mmqdsZ< zd3i)_hSCAx$EXFe4u+ZNKm7}U(zbp)nf7YXcg(IxEyGLhfiI#N;r;vwBQYjvTqT+D z1kJ%?KZ)cqTeV-P1I-ZA-;7$k_2Hh&qt5BicB1LHtz$2#{eO)-vv!15rikxk`n#p{ zsdXN6w~P;P!V=73x$V@7w@izEh9xN%P2`2{z9L$3Z$|SnpGcW8c{d8iE-)*Ahpz}y z*chNWc5n$7Q4}Y1_ZR&gaa+LD8 z+Ua};HIArkE4jE&9<7yLFJ!&@E4{~L&(2n!eJ^`%t@7NK?D?OS=l{w2fUA6X<$Oh| ze5K_4I=C6@24JE`(7Pk|7tGUln>! z?m|`7g@z!$82p)(Or6D3yT?X=y9A`s7-6OdUiW(Iz(sF!+DZk)3n)6MKfks4aY0Nz zY<64|dCDf-T)Tu2r8euVPDQ`|AMbY81G-U2ZalI#cI8wY_5801ISr0cZgr1mNIsM* z?OV3AIg!fO*#*yIyVT0sCEypX5=wrdAsy`J6y?eJeCp8k$SFRp#?M4-jt#cPDsI-A z)Qg|u+^J+&_nu0PrlQneh4s^WuCg@TLVo=n#ysaV?UpyI2(~}$ooaeVXzPK86zd>+ zK6DXoYz0SVEEA5&$O`LM-wU7m!cU2ROX1C;-D7FiAF;Auc-c;zw-1;$G-p%a2brk! z#>Iy`51ld%Sj4ISAO10|Sh4Taau+&bh&zByh}DH!2cuSDP<13xA0)ye^Q#P+3cYrg z6_zlk!gp`wBFtfnJ*Wx*6i!gL92JAnZ+Nl^5@F_XFen@p5#EFJ@DNz#&`UED=)?&f zbQ?BIW_|G&Kh_FV`KIxNX4huk)-*?&v*ZvxQDQi4I1kq2lzC&dpGLlAGzi^OTi3&B z!ZLqn=iOjZqZQNpI>3B58ecb7E9((_tX9_JPyb;d`q-Qx2k2GoOtOT525>o6U3do^ zo7T75#ySu-Ayn=F$S@3RoPDFFazvDa+U1TYVS9sh)$Bl3vq2h)uBc2Jd-I}CF@S23*TcKA^x!V| z-9M1tVnnOm*%R8_6#+-)az0=p;eJzP$ko5SNIUmjA75fLTX!72zFi^q*x}NqVw0dU z)X=Mr`!Huuzo82@$Z{8d6<+y8innKodl4d{&27x4nv%1eRvBnq_Cf4lHbqAD`x1UJ z+VMJ*j;=_1?Lf~JC+m4HfNKR4!%;7;KccDUXw?YXUcB_Iy`HWJp%wSPo3c23E!GMT zQ}m!uIRvWe=jIO6q)8dN^Bji`?B}%mRo4YTw)1IDQf6@4$fHh5HDN)Z!ltgzessXHLJ)SH6rLwyESTFHFjTmnJb<5=vs&X=h^0pv{o73v%8SC#o z+}mr6Z4rr`HTBjdoG6*nq;|>RZ}snXN&ZLgo&**d{gW5CHmq<)X>F?HIpA}kA?@=ftH&(gu9TXb(x33@~o<7m)% zZ7_eV_3L9=#1>wy6QGsdYEerasw?Tv9LY;*tJaVlJfHyPMyR$*3Zwyk+$iG|(JDG4I3y^SdA; z0$am{Q!b)@GO@v@!<`+EqMa~wT^yUqes9F{`m$GIXsKOeL3XSWuR$YKZ@bqpucsxt zM{N^ix=57Nd~)&+rNiurhvO3?{0Qjd*T6%(%%v36=sjCduV!4YrWp0+Z(IEvA`zWO z01V6wmgRhL9}in35|MZzr0_ixJJtd8e6pS*oq6LOc+!=Mvaa8#&v0ciH}uqroaWCfs~D1TP2asne~N zo$1l=Q7~&WpVa3uvwSrJuvk(ny+YGVm;l9VQQ6D%u$$?xy(?OWzjXHfS7&1Tu4_OQ zZa?X9%IRF6zFw?*zce;HM5RJmdFGXBO@F+^YK|FIn$Tkj(oay?Hu}neeqZ}nmw}vS zC_~uJY_d6K(Od!Mas>;zj5l()?qsRptg$%e0ayEl(yh4gjPw8fTV(4@KXQ~EjN2-H zG7@6xHWL)}=#^Y_w{Y6%ca*$Jp)+eZRjCE@-NV3++kmYeR9NbmwC13ekZt6_rd9aa zxfP31fBHAP2af!Rz-kqIFxWlTKEWNZgNpb5|5|~L%JYU*!5vkX46CnnRNpkLN$RM{ zG<(cwUcvc6I(5oSJp|p#}cUWRQ(Q#MJhSiVbI#9O>FqcnaA(z(1 zNzdv>*pWk%M8XlU&CB`r36aU{IG$v!J#^P@-brQoy?hmoG$1ygb_8fEZ7`H%?cLDXG4Vb;ki zXH`ExV)Z>@*YWs6H~;^W7`t@Es(VT9d}*RpOV-;=p@nsUn{Ti7)1 zI3Z_hfR7KlXBknNCS*nj%%`f1a_D zp7bM>&u2^UGLXtH(K_s$cOoS}kN%qbZX*wxPV0mlB$Yi@&@Ur=MX1_TXj|Ket$vn2 z0_W+Th2`M2SXSZ}r6)aYmv{2`1x(TcblM&V8_*bji{g1@6%@RQAHg?BU7Xh{!2fEo z{|4sleb{G24Aix1;7*8fEY;sf(g4)nm9Unah@KMF$WhmEnimj6MrueXtkKZAFm~hDa*y+T~HBMK^&nUiZHx= zdpH$*o_)uF_^}g%7yWQw^R#u%K=lS-?I}#;8lp@zv#z_0JFH@qDb-R;tFX%oL%l2bf&aosF`hwU#}HmVX9)tYW(qwv<2{4HhcwU+HHU&cx3Tozij@ zJzi+klcarm7AW+XSibRDXxYJLW9+8KE>rBy3ORf1rrI9S6_np?R&*20KTM7yp;}T6 zj*>BgxVdiM+c#sy{O;c@LoW{p=4hAXVuwqEc^k$3YNh>Vvvb5Zgo>G^9#1q%PB8!) zGPz+v+PI<Oprkt^_MJiN&^Za|SW1Q$t>*EVobY4Y*oB~> ztG-qwho6F4rt@0NBGG~kD`DvuEn>4l(=5lAe0&?6_e9%}?E(6xJ@ViPhtgAKVE^(Y zdQ9vuAF<%YJ_kG_;pcjy;fk+3_yS}GoTMFpM&i_&y?VWj8(owheh}cnM*~o7sp2&^bfK6DEb36|ePE}qd$UH0* zGiaVpv_n*g%rw*aV|NTAo{ysR+wS~@<(Njk3X$wR7}VLnayR=Oo2FwJb5Psk#Eo{o z8^EG7;e**&6`yYLn2=<%$VqjEQ5sr?;L{g^=X3AG#YitTMl@$ zwa(+v;z?cR@)!9z87QYqy+92996(pDGaL7L{fH$@BH>};sKgWc{&*klB&;|cVJ%P! z^lOC2u~6{kU1rvr$H2*WySU=LLBq8`GJ4f7+W9w8&tZ>xTs#lUXPWW%Y9<}{_Fr2P zJfGIkmBp5SA{}g2X|^6>Wpu+nBQ9R}znrA%d7oUF8*ik9$iSK#0e&!lA~o4)m%tzl z$IY|O3sD(`cvh*5DeTtoieL)?77E;{P3CVP@CvL?0(2JMSM-zbFj*)mISMClBcSHo z-wO`;3XTL)W0s0I3vyBu2NHAP)?QjFuzVx34ergN%lVe_$QBPGnz^;pfZXT=U!mhJ z?6n7OrItQ5Wibbg?`3*~We$r^O-c_;u_eBT9a>aa}A5608 zv+0zT{NQS|xb#FI%*5x&oVNDhM$-J2=^=@;c#NGKmBJzNo8tJ?a!waES_~ZaMdrFp z0I+*R$(0R$TvxQt34Pm&8m@u-*CTXPzg>XQ)Q2PRe2vTQBI1Gu6K%wsf0(Mo2y1J)3h&I?j#qco0f^2HfH>`ABfqPfL&AokssJcxRFR>$jP<@qy=8BpP2kc7QBN$(ZJg}V#&AxD4^)^%H{!gQ3&xk=5(1B?-Jg5 znCG5A4~F;sSI+ir7jevnje4Da7T5zE5}0C~FA{$~*6MQN1VXx&N%dBESP zmat;}kN8x+XCap&yef145wNil7pZRMUW^8|pMN_0sT(&H`YJp{vZ} zGe`BDIs#N8*y0a{!x#l(kEspmufbxYGP|^v9!DKe2PgUFpf0Qm>=IZ)*TFyag1;sV71V1L`CtQH=F2A1Wxd?!9deomU zL8)Kl<#69tJ5Vfyl}RIIxC~2qy?u4ke0WJ+5QqMZ7x<)-i9c?Gm=XXx$M7_l&H6-- zFcBrXj^>z1RwH&n-pi|Wk-W+`$lTfi05tEX}o{(JjFz)GbVjG1W+{Aru$)Il8+~l~!mMrwCM?{NH>!=RM6Ak6^ zOr2z)I9@qP-1CD?;oMWgZX0pQtpSV>$r4i~0?$eU?hWyg`Sz9kZuz<_sama~hjSn%# zE>Ye)g^jj8CdWR#U97W96xAk*s407PSJqckuE`eb=pwM&grQl<#R$}N@E&(M9YQp9 z^U)l2mktWRVZSfSJ8EJd+Sx=-0m5ArD6qW3++O3v0q-~Da zUNy7GD+ew%Yf~aTY-;>knt=jRE6$p#dzu6-Rh zI_^7*JF$_eDK(?e$TK;>*SNDlkJaBKHodpt!2~~Wi<5I=+&Olq?YmPDC334#_#rw zm$ghjMVV|oHu<(^vZH1CBg*vGW7EHTra)~RM>G!Fg5%l8@oSq2N1KVYm`U!Np|#DA zXBvtv=BoSV8rpcBXuLrS-gqBxrcJOAk}FivY~R2fEu(+aKNFmrB`m*j*d^o2P+*rO z^(cnr*WLM6Wx>yHcdy-EN%{pS7$h&U0k#lbTS6kLvc#ywMMU z8Xxyg@#t1+gKM;HV?v>v%QhgFD8IyW$Hki}E|v0b&J-aNe+oZ)H_gUMLdh&+CECGQ zMgReX&pTmstXx|t{1?YC*C_M~0_MyNpbiLg!0`CBMB~2cyZEfBu-QO1rSDD2JXIE7 zarr$fG!eOv$=U|xWyuVd@*bCeZ5xvoNdXyd^*@vEuiD1Byp}!V0R6aRrGXCv(@yII zSA(JI=>ZV885C+6WbT^bvx&)A1`+K-j?TF&$#z>Ol?d@V#-$0X=ER(-6jpWfB~p|H zxvafqVgy+_x@$f&2OF-Yn)NGMBI|BZhNT2b0V4 zSwBl?{0lk0W~qo_j~Jp`>!@>ixn<~%N9$agn`{87f`Jm5skR#ni1PDs%&)NCB>dXP z#;vYOBeBjh0mo($vCO{K!Cs?-QVfnjSR$yJY@%g)ybjD}NnP;BQ_9ESRR~)KZ!c#^ zy-e1o%&EB)Z_%LIG-}|JqqBp*Yc232Zwy`AMz_{c%4dVM%*;y#vWms(h#P7+u;Zv8b z%@g<%4T^gMd3U&u)K+=ZoDAlcg-{fJ2eid+-~Un6*mV1IB{Cv(Ew^tWRl4DbWf8V! zp?gY<;5G&yM}sD?U^@(9w=KQz?iw%;$7L}?Qd&F*rb29V#uXJ+RYN0-SC_OnaFOqN~!1sk7|Ib;J;{?x1I!vY!><1btWll zixq|Y9HSP4Bc0A%C4>+5hfgpZAjzk3u@3*^7YU+zC*C#szaks%7yFntg0oORV5twV zT8Sdv76Vx1Suf;W*Hd*0a;}-E1gbZz}ncGF9<=QsftJ2 zf!_c65^jf_%~y`t%}B6*eT_2g*;q-&7b=o`Q0_VB4>^3=TJOyI!h>FEjsduIJ9T`JVXf3hnCGEj-vJ zm{BPxHz1Q?_VC+CVm-PC*5kvUDDIXhCSxXbfEM|QP|ZJ9R{fXJ{7L$Y59O#JIf%FY zOe9-AmtX!iyXy{CzNoF^_j)GVP>vRR?j!ktNjnE-YHv%h1E3aj!E8+ZqjX)8V*;7( z_e+NHrFBB420XySg- zmO8Zf!Ik!+lj~hElpmJ`89?qS05ao3U4cUQYpkeRc(g;gg-?G%nQ{?6V%VgtIDa`N zI|_lKh;t3WGk%-{vm!KT!adtUcV@fqJ`s%Uf%7`_828j<3p>|(svW5xx|fMNZfVOq zpo{;NO0X{*s3iDyK9V^oO@D1AmEoHa*j}qR47eAoUoa2;_ZswLS>eCB~t~`I-k=)JLRE;kWnw~v)fqMI0H@wK*oDJg#(Y_WlI8?0tM_NRs zBl9ZI^#+sLBg`|JpF4n+*vEeiF93Hg+Y^djJn>YAcvJ=p^KQKRf^Sh^52wcF^6t= zB+z)fn{O#2*QQiZ3Ei_JEEQQQ#FgkfMB#7NdHeLbDC@U03Jts+7l&H}u%lBkK!IlS zcegn&R>q(52@*5(lRPYWrP3*LaoI-6Pt3#jp9)n1wk-b77Xbqb$WR=sV+8@{2BEt0 zDQN4h5DdU#uDG)=a|%F6pNSrVK(EO)B)DwC#`j^%ffFP4GM(BM;vb03Vk;l#xvw6} zg5U{h6SmI_tUL@)<$qrN3=$CJS?Zkc&Vpc~GbWy%e+wAg@FN)hAO$9nitgik`l_V- z?CPG13NMo-HR1NF+0P5_sSMwdR3-lG zzU?ZdGB-G}wd6!4S9EZ)wm6}yzd6VNw!>VUy zH(1%u#m&z8k-d}cfu;|{Y?m8bPGDXdn#5O1C8R9A@IJ9B62*PGfua#}aHe+|(!83M zr|Lfz*HKwJ`E*W9%$$#>ph2v#Zk72-W72*mYO>S#Gu$>xaT>yj$8~3!-B==nf`!h|oiDsug7Ua1A_bd$F-kJmg5oc8Iqr{4p#hs-N5BAiDzi68zN_sj*ZdjrXZo0-;n4 zcDt{DqjP#1qT+J1mFLa@Mexy=XZRwVqg|{V!7u>}@ye_&XFU%VnZxR9P9RRvlBLc< z8;ZlvSguw86cX_P(IcFrSbffrbKm?TZ%&lXqVNL~gDz?tQXxFzCyq09H6WjNqptIk zx~2F|PG_;ZLU7*5u%4~eyNHJ!1S-iHb}S;m+vW0WIkDhU0(ToGzrxs*g-)-H#(m5%9n-@ya8ul-u$|mgG^5xh!?6gL z1Jx;ne{z*$kVB5hy0_e1hP7)3${vLmUV8t_bcWzJxQ?p#|9w|Hw3mt2mY5h*V1E6u4FQfFNP;&apFur_yr{D#rW_PSu2 z6}*nAB~c}(~Z0Lm_5PfO7E4W}1I1+pr{6!=hhse)Dzh`>EN}`LD zSxX#?O*Sw_oQil4oS}wY5-6N!aeONmwRCb85{zp_=x^fuJr*g4B$gp6MAWL~jj-f^ z*`p)m<>+u zsjF1Ilsw}7CGvLX@w(+r=%^1@Q~^t+N+UCQG(ah;a5TJ1>pt{Vh)vX;nYt>SN6D|k zFGLkBZdU2NgpQF?qKa2lstv}I$D(Va?rw%xpZowFj~kA00x)c^sgO}!-WZFcR3DwtFoJg5WyAWND{8nRSI&2em2s_HV zFp*REgjl7sb$5OLjjs@sg+;GJ$UjT>xKIuI!J%DeKds01X{yrWsdC&9LYG z5CkG)wfF}Aq;!X?VkPak@2!yru2;;0HY=SnSb1I7zfb05dv9nnjC%cqz5Y5@nR=-I za4f{1al+eDZgH63`WR%1S4gy-{Bo*QE(DGbT=f$5qk97LlSAVuExZ~o8{68HSa+v? zo{|oM2-+uu6Kz??VjYBu_Q#DoEA z`M9}DOMeO!*7yy~z;D-?RYwe|5i4CX+J0VWx}{26_hsgN3V*7C-tqNX;j&4YyD^{W zfJM0Q;@koykAX}V*sn>%5yCFk$D7HG=`tOFeu3DDfD6T!H8A8gX{WAk?zArY%V8mb zIpGqme38Tu^$Ka9v>x$!&|Ku&yHj!w{PZs|slttF(0Uw@B}vJBw4s|65O;pbHM zE{z>IhIFnh(Z09!j5`&e?cRC8BeRxN4^bk#uu0tS2F?-BAmWjHjyhe4)!jPlA{{ zp%=~-s-cD8PxhTpHH*Q4jK}^Lb8i|Cb=bh~j@g+R^Be0}%82YSV<-E_PS(iQShABn z$ueUZV@V@R6r~WA3Xvsg?6hbs2~k5xw5U`nn&bID&x`Xp=X2hl_w(xanK$=+U*GF; z+MAoPuv?oJ=#ZZc3R~CPL20Ik&>;S>rI)WfCn1FMf z5Wl`+cd0OsXvDcJh>JUdP5}%DfDo2g0#mX_F8xIYZWDmeh^|37@*%&l?v7$^13(+` zcyQI1&@^lr z01*okj$cPl$%|gq$YcHY`7baIK4ir%TE@Mr*QnZ5(2PYlI&#VC z0l?cy#a#~ieK86%B{0m%<2LdCYbR`N^2jzv#OW%dNaDoWSkwqWCzy$m;v{;l27e?d z?}e9xpcYh!GH$=MLPk;_TDIw&1qU+fbU?~6YIzVB06?sp&XGWP?KP!8PACheZ<{}e zPJucRrNtN1(56}B%~(Yu^tCS3*5kyiN8y51LI55qN#@Ta!UL!fA7qjwsc)5=FG7@_OuOp)Z(=2486KXJ+d+KPQ|LQT`BI@BXmy$=q z!2_TpTvndM5}zNKH&8Gig~K$&0R=4V6hnT4!rMM1@Q7W;QYb)ysi-1egCjUN4nd>D z!>g(7&AgZf5|MTh)q(Q?9cZS)y7%m}6ka$kLo-KS78wDH5wD^^jb#!foe=Tg6}EI^ z|B%qS%=158_;%gS!KsN0n>?D}giAM7e`Htm=pmfgumq<1o~^NY9FD)qr>v)X_G{5U z7(J9NPyQY*X?md{sA}~(DNaLu(?kW5NGJe>_l^qGv0Svo7&}Ds7&4ePT+G-m?qBBn znt3o~7DFfCe(U6l#h@#yu_+qlr`5$C4DQv+5ulFfHC>N8A%;?JFRuq(1J&k%TFZJm zaCA_9O9&`#R_U%|Vty#-kz=)rQ!X4=fXNW{>=hRDERiZRoF#DebW)ZiwyF3GiMQ>+>#z#~~| znJFc<2mq!+KA<}1C*n6(i+X>6qg$|~=B8*#YKQ2&6hABw;8+D$k4>|Y{IQjiOv6QS2r%Hq&ejR!LSQ0@GAQZ%Ewj!Tu1$-L9dk-3>^h`8p={&QP=@uJ?u0eExS3L;;- zPegM4nzDd|#3K4(H2+%!uk`wfX-@<9ON0%MDx8H(`UWnDKGYfl>;jOD$#AF5K-*QN zCU7uQNR#ZMnY4s93xp~tU^4|^ne1B0Uh@ny1-i442SsmT6Z|JcJH$m6EC_+RWR`!! z`ab~@_2EE4eQ-rJ=7Ng}-8RDyp%HjcN7UB)HeSGbehmKzAN zV_CF@-R`f&+~`N%Wy?MV3_g`*{kJtDKX|ylAK2K`yH;~peM&5ABa#L_b!t}m+*vYf z=5SRX`a&^pw?)Sho`X>nyv1Z0u8HAvrr|!?;jYQM@UM59T#UX&qt+n2n#lwf1t~Us zuMpA-M#6e3%rb;CBHgTYhkTJxtbQy8MKXhZnlyjXh$)7PGw?@&sNl69-uePRYJ zxz3F;hK<~Ae{+K0%1R{26R@X4z++^UfaTdXBj|L6oTDAc? zc5GKmO`oV%`n;_}HnN8a=`D2Wu~|M;;OKiL5HtSMZXN`G=nq{Rv9DTY9W=1r2Ia~% z_9;K>JM^(n4c$-Li*MTXYen?y6!hyg_8)%MZ}_p_7(HOBGC;N)I1({nSukMTIAHs1 z!2aXFQS_jb%Akwgpj*VCd%@uG#zC)VgFYVzPoRhVRE7fVhE7Hd1s4p3KJ$7i@%X%} z^HVA$z{=95RKfm->*T7{3Mjm~#Q92_`-N&kymxl{qN_#rFzNy?^SAaGpG`)kiK%eb zAtzVMmo|kdglx21Fmx2DjwHL_?fhJ=UJ{~JhTDsHEfSCD3qxp@Cc!3Lo%V4|0;PNF zY4`IDlePkvXI{s{KOU-J#vz;#heSMU+&ooGJqTw#!L^=8ktPPbdJk243;GE5KY6~y zIuBQxOlDU-e&t3R0iMo#<}?z7eHzUM@>VD-`c&{l^H{{@W&C&-K+gouJLX2(oMedG&HJ?TRkWw^Y@@B{sTDe z4#L?4b5c_ew?B)w1SQsuZx_L|T_UuhTc$l8%WEI|5#UkPe4<;@C7$NP5BC$G6FwpZ zMxU9B{sc#d0AoA4TKk?C3PR+bC)@2B&qdJZ3kW=qr12JP-Yo9a`%1#xpwF8G!tp~` zBS*f!95jhif;M|;_IzYV%LXhG{-=_Fm`+0dG?m??;C?>Z?Vk#be5v9$g;Ylb6XN?# ztg3Jb{O<-89#}BpDcXMg)nyID{qg7pPt>7_#zxbe=Qu@sM+t_Z~~=bAsc% zwi*u(nVzhY4vrrJCL;BkO-yq@h<$l5=mtb>7|2|ONWaSZ7BTP^C^mGXt~&=+CQm||$$a@!mLc@97ZyYT1jXLfg%*t zLknDln~YxmVx`DsPL#2rzB(2Cua55r)k~iePkQGT2E0rV*^4?kI_A<@fR7C} zxG84gni}~Vxca!!rQtJiIeFFX#V$IhLfKrahI-7c;B%n6aR$Ms`=xoOsF2#?ml?0H zHtx7_6Yzs(^sW|0vHD~kAl1%S?>UAp0W`p`sN41m?GmR=^{o|=HoaS++y z*mNC)v*E^M+LFrR`mJB@s!Xv5JNAw!=rLkWdU>4KC{E20@s-6-0(qV@9Z)Y5nYovlV6uEEPviq{UW)zPf~hTj0SfC z5d*51#4W6^TPCBMwZo%?U%&Y@c#L}jIGWh*gs$U3sx@IN*dN-fM{+);jc@XN()lP5 zvUWAn%Au>A4*ONi%RKdEt!_aHt6;M4uqG9*yfsJHjcHbhV{}|ol+b`LWj9MYOV{|J2p4T(UYzZ@P zRq=21wLdXh2%6q!%HW?q9Q*uR(W1x2PcX3YXru?5x1Fhlboz2U=?gp-7w$z9?JzAL zOG((15*j0N&C!3p|Aqq)<;6^sk!_XUzgZ)?g0`qCi@Wl2*f>1tl?eG^;^35 z_a%K+fK4meLw|u!kI75QnDccsCr?nNtPUdnFldlrX<7vfDf`QmbEB-Si!!hnQLV&) zEDj=T?cbZkiZ)Z4kG-E_d3z|>?EE@P(Ud%yzpiq)DRQ(O{Pa@7;a{J;A@N@>4PL&e z=JPl~aSmp%JyqVptp=Tatu|RsvcBGxb$m11=W+SUzwaWjhB{FT^LGsqtQ@n9<_XGO zjRuvHdzVwaABKTiLu6_ZSI#&Ua{TsgHaR~RM?jv}E%c_XjhM5NlEK|CMevXxV;c|1 z=kIoJ@C}B>5Q?M2xExp{B-2y8JRp}7`5Ely5^)I79-M7^w=C{*t5EjWh1c)fN1^&h z337SY90)?Jhm@gng&sF$n$Ix;FGomNleA zK%x8V6Ah3O-qxU5TarauVtTMTR2!Ssn^A|_N?zODXCV*RP4%hUHoErx6Hs~ih$!AB z>ozu{oX7QjGq=o__)qVoRfca~s9g7-11~`qY$8EK<&WY^%_A!Tv8rkQNsHNdtMbOi zox5faj%LK>E)_}y2p2<>70kw{CRkdHUdDEACVQ^2|K4mQ>D%1}ytyW(4T53FFllqP zhmIGx3MtHm-af?ERJ3gwxFFq?>t9HR+7-W|{jql(R@GiaDijRt8xdC6@%}ZRwx=Dv z?%Zb};tK(8OwZBQ6tgeG0%R4=3Ds6Tn5WLF+`JrG|3muuRjM{X_UI?y(! z;vBdTn_MNf!v#+z&(u;O#`p!#yOHRIFtI>JJWC*-(E4;~>#B({=EwJEMxxW-{cJ@e zG}!hh5{}d8VrExTN4|!Wy7`MrujrPox3#ozq)jEpxXwSyOgladS4bNe$xew!*ciVV*s|-{55@AT2w^dpunPe(`2itD-i>sLwnV?BIX(gkecZVr?6uM!W z_jTr$2Ev{ zL)l8y|CTMF)q?D#es)iLYM!$AZ{SF^469n3_NW#rG)`H8fb-=(}W z>853?GMxx}QO$iRE)q*(*fUQwD8Jzc4CBu*37(puU)}P+-GyaHSS`|!LqsPvX5w_2 zIXr}M*evc{Dtx<`XWD5ruK|-5VUt;W<=Y-Mxtyiwz4#fqboh4nJ-O7UlWsrFaly45 z@xS=2SpVjd)LK8qp13>+Vge<{g6tQ+WW4*Xm}|oS-iWQ_ zcTUOUj`*{drKQdX1ujX|hvje2EFrEkm!=a^%;{@YO!3`^c*JqM((zyb_>^_b2Pl z$QqotD$yLMEGQ(7UAS)a1JqD7CyhT7vjQeJ5+O#dgc?~AAMMFl!$@o45-Ld8V zP#hiU%yej^(L+uBQtxusg@GBJN8$u4HGH2%pFBIgew^FdWqyYd;URk8MS$Y%=Sfir z5xXpssbQ5XNn!K?j)I=?bsVOoji8d4HS^EGK!Exp!#qyCNVC87|H? z?VOO?zaY-DD0t67QQT;ghu3cY+?7YHF~h3@6LkmOZeaaA@da&@r4CgJ0|Z#1g=kxR zZfweM1}-CMsif737n@)85t<8?0ns$FlXX?+C|Pj(`Ft-Gq$}xOKkWoHvs&%Rs(6nL z{a&B$dI4>W6pekpcs;N8sN$1}Z>B=k@ul_!G^wvMwYQ1S&Ix6ye8V@7v~)2uo}_kc zy~`Rv@SnAL^ku$(8U$&ZhzvZM!t76 zG4?-ZFECUH*}}RtnR_sWJW0)P=AdAb3>T|RdlLvt!OUsA zIsLyzFXXl7Al^qnz58O3w26$Tq~Xp1+FLVGviSfX2~1N5YtKG%lpNI3>lNC1uxI_U zqGY*r)TGV8EQndoNmreT(6F6LLQY1pO;9o=%ggZ&tFthqawtp)Nl?$STZ6X~dSY&w zvX~ZRD>a&eWmrkoo(;@|lJ$8{1xbaPfcE#y7?CNkBx3&moM7ys7FN!FO%!F#-0uV3 z&e1YaMaXJ1(~6N*u+=S7f@%rLPcXTcK9en-bS+^|%C8dA=m45j1C>FMS0Fu>YAxAVdX)LEtE8ff5~0$-veguIp$ z!Qz?ofFIV((1jdG*3GOEDtWn$AdjNhsM2)2^?e1tsBJ{FF1(AtGI4=LTG9A4kF1ln0d zJ=5G78^D zgf$!-lkVHB$Y-kLtA*x!bYwgrW_;7l!GY;xswbPt45?c z4higI+#srFlsmP=*s}+)LPF2OB;b3WMYN^*Vh!UYAdVkE9xE?)X&|V(*=cEl$gGNW zCnFlc!B+o8a|bC6gwJ|kX5)u zO3te_y+pQ}n^U0Yn|J~9c20AzuUmVb#TccuX`g9;e$jx=7f($ZOinrWxQxIsG1(K* zFjnd01V;aU^(1Ftrn44h1={a)O>mq9Dms+E20b#=fHZAj^2N?}uOTeT3t?Nsr7?7S zM$1+EeKH?iAC25NI#+F^-&o^zDV+tj=Sm~wD9|peOsfpAqcSScSq`&EFwS%90gzu; zD!ajF#bhc^0afqYu&R@Rnne4p=UMK)fEJ2VRZ7vq0Qb1X2 zx5qB5J$%4pAni?@A}Hsr!}nxVds48IR^ZVYSo1eX{-sQVv3t^#Yw47g1;_peeepLtUkCEeg} zo_tg5ZbO|KMH?&JNvD8+9vcx6wXUuZbMCNnFDlvUjs-Ymos(lv%(zkk`68VY zei!nPd@Fx~uof0Pp>C>L>L1|+w;GxCjXsh#0*gqoIQnP!KL+TT+Jp`(lF`GADmbYS z#>y2t-y{9jvuswG|uH+x8>+*2&eD)~=%kqC~6%J0Po;Kv=ck zY`Wtc+fVRk1VpMZ)VAC{Uo*>!vv23}kbrEvgGcKZm$rosy_6){CG@;ZCd=*hqdBU7 z{^#}tA~XfrCh>z9+@acenH}LZ#Gs)bm$jPR)_5<$IN2npSEDiC&oIwaIj;P1=mx{0 zKhIcZqH|1#>eJbqhD&Zbd}SjdJdUmp%sw-UoN|bK=^Hs675OSHa;7kH_Dba3-N@HH zk@I7b3vVLde2#qkFOtI_wYWcONj2)7QPi?S)QWG^YE;zww5YYhs1H}7*6&7b^hA9e zi~95?>htHQFaM%83H+zN?mzWS_0)HxQ(F$Fgzm#58(X>))t6DE*cszIBoZY38w%qC z!9gnjk7&46Q#CCe&V%*1IXA^S~Xw)|B8lp0)D31|LoE zxUb!`1SlN53k3Zy8eU%sr&gL+6>H`1x9@5V9V(QTC>Q+Gy78ZAc+|QYj1nc|`Qpv< zhwWe9O1<4Z{1cpcUcZZ`d}6Fy@6^q*3x}^d>_x--*>xx0jy-z#>-H=vohx;;=l_4v z@Wc-*7b$eb)$+iy(AA2N8#h-kMLhVhdO3PX@qK0dbm;r4q}7}6ucZ9^@ct?luC!L2 zB@(uFjUjhy?RtUs`dSUsLg_%^~KHR8GT>nsCO;=iPs4WXyzu9o(*7~i+ z2kYy%n})bb8;z~gVH$NOvx>>4^k6=5<5N3_uKc-Uxh(v1=h}_ipSwOj*!cW#b4dA1_ttdymq*)$AJCqg z4Rkm8PJ<~dL6^hMwHwrTZEWU!`rrEbb8=?)W}oD4$`p}|l4$*UkCI>zp;CZUM<1DU zb;ga#2@3JbP@@GeXcsizcT#I_iZ4`_hIt`mu#xI;SK7(YdGnEhQ&j?Jzy}f z&8@*1(r4@nrRgAlBpb4_>!d^9Dqz3BJ}3P+;&(sNNj@OZfUOv?8UMq~vC=7L6>=su zaYpWDRngq7_T5DDdGie10&KRb=+gm=3(E8j$obd8zJz|{2gxD`oZo}Wvt|6>`Z)m_ zAz8sV*Tu7q_Rqq42*m-$bfE~w>NDbEzodH-HbR~xS)($sasHZ$kex&?)EKPAO;G_S z1f**^?fJ26zIA4V$iSa7c>W>%yV^*0fu(W0J9pb3WDuUyzC83@aR}~3#fI&xr$S{M zocL*buD=4JxnjXFzP?iMe&{uye=0E@Ucd`b9c9SGp}bF+Z$P}1XfDU?!u7wxKu_n| zE~+Ln%!HGJ#EL*rnFBEevOwS2~eUSxKR#Rk>m;mZ2WxqE_csRH(8o@7fv!KNq= z;%K|+y{)$WE0>aR5{NK38ddV(Of~NaI~l}NX1HgsR4S(GQ;r{ zF^eQqbb%w{15DYk-73QXO~JhMxQ_ZrMTofifzr0Cg}Bi}sP5B%WyHCN>A#58fuYU} zs}`w})>@wFuV7-54F4knVVciBR}T+Dw5lw;B3dyq{=h}E-+`((S4kUsK*ZcKMN4ty zrq|{R&>TC*B++Ro&4XM;BbgZ6;F@S7Y|!7$XZm;&7n2bW5vUE2H<-UU7K=0sdWOGZ zcuoP36{p}Yvk*qw*ZPefe6O;E?l)Dsb_Aje5zx+uyn2#DGhL{w~iI%e)^PO z*ku1LdA*JT(d}r0#Tu+BY`in1mO`_rKG<|iN%;OJXN7v*Oyiq;jko!hC8dB3b=EaI zlV=Fb9!xc^RlhL=AK2rRLXP+Z71SC7v#6M!~sbgm!kM@}viFQDER& zv&Rw<#`D12_5A+15s#*k-uVUX&x8Vo1^I$9Gr_f;z}cqi>_=z@FXlUa@XzrVyIv5qWK%n8LV#Y7q3?V5s4?9uI**u=tB7U4PR^k?f=k=1YP2I0 zF7WeG4u(h!(10nzRL9H}V+2d0$_yd#|O>M)vx)MZ!J`RKC z?QuEVFAEadZp;6*_qeC;`mMp-1~cwN+e^c*FE2tbDGo?{O_RM1w;MoV3rgK>L%E>27+8~X}H!E?11E2eakk8j_`48;R zTIg-DsK|jJcfKBzh$NZ66m3ab)q6vj>o5~tA|eKgWH2OMelL`&|4Cs8N^R3ra_#T= z)T|evU?4~>g#$6hOSf*E?XA@5ZoOf6ju6}H_s{X(p9S$nhy~+{HDCE-p~`m~WTsxA zG($f&ihb$z+a7Ljy3rac_HE`R&ml?a@qE}f8PP16MdH13-mpNkQyU{$($@>eYzC6V zcSKPm7Qh$L^n-z*DU+aImcZ}!bf~EYz1mwoUiX9>H9npSXJIr;cxwVdWz-`DCQ;zt zBXky@8zSkr2=CR4##sTn3>iRN!F*qmRYkS<>A-|1&Zz$qCx0g}r6%fAL)wufOD$dP z*(r*|*AoGzskoxB-xmZoD9G(-k(LAz{rW8N-Ynlm%q1bntG(Pf03mVgoJIugSB1Bz zrvv=7?@Zz<0D7=)PP|7>Vp2|0c}{XiPRdM9+I9{V&&beaWO*>?Neo6gBd>!|FvBS1 zZZnwp+zYz7B}k=gSCQR`FukvIC=U@#Cc*^;Wu`qmJ#sC2)y-D{#rx_91I*O~H8fl_ z_#p9Mn#QFDl8vsZX>TyUw5EA6{XQd2=a&c6DaAp<-nlLrJ>9#X2uMw9SgnWhHpDu4$-^02eZGoMDo5Ke3!_Q0Y<# ze8tXff?G%Y*yXs18DMW(J5d%X6myQy4|Me(rcw+OC(r*@5JKkK_u=uw#RgAnjM?w3 z8|Bl2YYpdXj5snz%K=7fHAY=iM%HVjhnm3Fcks{qCgNut{`EsavL<)9ns8kJ62NkI zT7j^Gp|KEbP!e+cJC?!(&qc$fHhD^sW(Q=`zfGB+cxk3oV)e_MUvmJd?F#4(m>ULa zn#h_fhn$<8Hh-d3>UYN4DG(Gb3%HjYxoV!_I}qt_ZgB#t5>jjNNJc11^T_8oAjj1b z8Dn{-)pDc6EIkWI|6NuqWKNa^CRwFpj=V-eK>n1~c_Hg!SL=%<)_dX4w@{nw<~BF7 zY;FzM+=be<2-!c7_5PIzoNCi6)dn65*)6!)4VRo`nqq^aqyCJXhdLobOt9}kFm(}_ zBkTApt=!exq)k~zXsPix^P~N8fNc9wvuR^csjjG-BjR8ZA6F~zLE90WmXq+oDm+XD zTahKXA|Tbq&m}m|A9I#3jp=uaLC+q0AgE&9=K3epMYqlc(d&YRxrR?(0h=a9UUTFU zF-#60=UoD1(be&wn`;7)IOw~$<>B+g4U9V$;C3un`1-g|Xn%+H{n5zaY89LuAd%;u zyiyEt;wzT}b{bSZK`v5=fD;fm*Hm@E?7I}xe`Dkltv0=eTQ=cnSSCKT&-WJab zyvWVXY81}*ov_qY)e-KF0Nir z3o@--y&HW7_7P;E({=uB?S*5ax1889?DFu3(-DtFB3hG=);mVPqaz^KB4EAY^{~1m zn=5PDz*G=$;P2s_y3=qFn&#?L1G_Q0h27J>DoXJ!JY3FEF6NBrJk`7b_+GZE;FHxvVbE?YdeHt77Q{Ej<>Qrow^*q14;;y zj{(Od^w%c*o=n(C?C`ft97{~hElz|qCl>x~IhErO8{A2RswC!I=WJa8Wixi{On6+E5AXec{*yrel+I_ zs#&cCW+XkY-drx;vcQpsR7qzEWJ)RkQfr3~thxBaXWR>qQJlf-+j9xX>}fgrYFx9- z0yED+9>J?K4c0Psx@r3uy%>WED!_aCtmZ$YfOmr*4%flm7IN{(4vNWEyd~%y5oh}s zchoKqbF9dvTbQ+HPDsihIKbL>V@L#-6RoVGJe zl^n@17|HS;p{I;6Do66T-6I9_BZUP++RcNmnc91Zp5_yQHW0}o8rMl78F2&$*o9X# z>><74Y6M=K6G9|_ju{_qzK9Fn3oDIdY61jHQ%2!9Ot(&$CJ)w#&@5Oqdbw6`x!PKh zU>8{c14syE523#9(fwbEIGG$U4n|^vQ=baG*Z~Gpo|nmv-p3ccUIv_twTG^|_zo8U zohZjmur7d%C_mrKgaaQUq}Y{^UX0LB+%3>E5hqk^zWU+cJi42s5E63A8#mtc0!~7d z0k}9&ol?RJ__Y^eMW}ju*uHkQfD>Al0~sOr3eeba+8EG_QFH_Lh zKO5&--GewGbWOmYRmM@K6L@K?S~Lu`2pMT)f4Y6LSOZXVoZ^?}HQEG|9r+C8aMNs< zzNhZq|ODO`5fdL%U1*>Qe% z1S4A=!ih%0#e}|lzn~J~Y&$??7dO?91Eu1oSWlsg5V1$Ny|g!f)f0nAP^Qn!?`Q0N zMKci6EZ~HOFO1sl!!fIH3U?+vKj9K~ao@Xv&`mZFGnW+bQqz7)YJ5)Da}Kr0M+SVR zqmh@zao;v={)7J!Qv|-w83(=g#f1G9gm^?xfk}vy`*80;y#1-xDl0%T_xY=|JJZh1 zs4*YF{E__+$+7iAX=C58YGTFUq7vKL61~o1L*8j}(<>cJ$=X3333JKMNhFp7`#EH=k22mxX}i?@U!?L?#^>uFB(V<$%^)F-4? z+El4e0l9h+j~|DV7KMF*oaaCl2+_YR*2%8vB(6MBsgQ}Hqau0jC_Vhra}XM=N^2EX z_59oO5{ENV1tlA(o=G!y-scM@+K&MtFG;9TaCvTDE>6?VDA^GmAnEiI@T z;VEPsWle>+Q;a!K1uiyJO z50BvsZQ@n)0j48y%R~g39WzaZ`BWcA@o*Xfmf*fBx0oE%eihmw;rTbbfpKp{wbP76 z9~G5me`p{++A?}FT4}t6?Fmf+_d+4~$_p<^+f8;VgVWTde}0EKmBW55 z=zj+TkIuVGiW8TfnaB}gqp3vXh4sgJ_2%NYzN?9pT%C{J8Sol*G(Dw;{%Nz6`MOuP zf`90nC$W(havD>4XlAg9=IO)dsos)L@a>**<_tXmW%FKDwbCe~k#Hl8pHxp?0+mV~DC`rjE-%-@~~(${=mhns|tgC zQNE1DY*7_`q?E1yW?_dORpRr1ZaS52430c`A=8$U7u$c&KVY=(O46-dNAjynpvOtu5182c5)ZgZUe{k9fTHHUOGhrt zNYn9b&FdG_N2GcBGP3SR7vL{gY0;DTG7yM==)AFN7Z)vmx4kE?>tz{A8Vw?v(bbb? zFE+o?Dl)SUP9p=3zTT+zVdEkBuOu}Hc@ngUCPHk!p@`)h{wF`0eKRvp>;8}Y1KJ7i ztG!Omt<#n1(BG`Jm`l3EgV*}3d+p0zmf*cYIX~w9Di*`)?%(VB@L6Nv}9odVvL6=+$#$hn$f?Zt|pD4`umoqtf&-v4=L2~Tdy119?7JX-QvE--wa&MZpg}> z_DD7gnXuf`G}cIEA5xz{s%dEsFcgw^)|SWVs`??_jq&Pj%|5C~yN5Y4!Td7adJJ)u z%In{xoUy;(A9p)`?%lQfTjP4!$(HdOA zif1{uwR=r6Yd;%*d~JRl%|0*6xP4Z?-&Xv}`vZ_|yMq!_j`AEoX+HJyP!gmhTg5L| zI$nk^ZiJFndkhf$_VI{&jkBnBvk_aik>5BLR>{wUfc}ty4{uv5-gPy|6e_Z_)I=KE zknl>2p9rB=rWMZygy+i7YXqoIqFN@+Xq)4pO(K-v|EmsU(?RvIZSJP*tD>@xHwjS% zy|^QTof+|DMwe~wHE3OfW8p-6&197+odiAev4)JTD6!)w2_+Ahrl_q?kvXQ|y}R+! z22Iu>c<;G1-2kMQfh9U|92*O&A&gn|YW*Z3TMcB7HE<*HE%CU{vUsyokMs8X7SbT$ zc#imW=^jBBGd6l5OfPgk3%aps#8j{~j<6n#y&%JD@ecimKLfTJKLUEE@?H3g{~;PRm#ddGgR|G!k1e{MT?V%TBmAUus@2whDp~TT zQ6c+y_Xl3|AN54&{1nVE8VZ2*X84WtW=RPL?vo{~2H7PsqiQ)G6^>$jT3Z>O>>3Ft zO_q{ZC_CfXM|T5t6Gb}fd}Xgq)am(aFVPb&cg0y)sZAN*Ch{?eT_*JXjO4`T1d3>2 zd3@GnT@9YPAEoZjU1%e;Z-d_6Y8@i?R9C`hEYVGTwH>iHq#kQAbeh=NuSEjIj2g&# z4YGFr;&Fo9a(NBKAJ`C^;!7npqux^fui_dDi=(n{*O=rAzFSds$_Fnv?5%u_N966e zATnPH2zj1aQ|CT&LuSKa$juq48=lQ{fK}nqLlqk18c1ZIjeBN-ZU?Q|V-& zL14+JVdgfeYZOj9#17PM6^+r$o!&z!`4_T9%b))jr3A^hcfD!~ z+gGT?rpPHYJ_iLCwrF3cW|C^JHP8{|2uidxQ@XFf*G78g8Lb%xK3CG7uR`qo>3YxMi{X`?MS(NYZy zKF=42S_^~}+6!ATm){GvXp-8pJuW8gNdqCEPW&&-oLU(2&|Cq5&* zKFpe(d|W!WVsyIe-NBC}{NLxpO(Vsk^>)d34nKVyvai%vB5gC@pHIL2`xcSDJ!qWv?c&>=_m=5@UOrCy+5UF-OHTUEigEg%S8xCQ8czTB<8k`G zUvIfw1Pdg@;*n*6HCcPjZm25@7RZ9fvk+MUg5xAk$BTjkOSo#-J_W~OZty)CV%e((t$fB9%mYMedX(6ia1w>Jy8p_xXnf zYTrQm@c@}SX3}pWk)^KLLGz;1u3hj8!FT4vr5Jtx@?jPLbebX?*#O<3^qmKpo2oFZ zDA2u~&jHuIyOVH>O@*?J?Af(0@{U9}2%>Hc*|#I1%v+bfmLW7^MuSw9TGhGq<%i4| zynE7*I6inaL_mhD9?QtTtlWK-_mW+Mu-AvG3;jnb^BZLHGi4?DF94!}fwgnnxqhve zrJH&)s9D&MM;G2n#r&cE5^Ih&J8aGAlU9IriR*?A*u;@;ggo6)V&t-HI{d`pvRi*Q%Ut z-V-lhe7V=pQKxwgIOTEUT&qMH)9lBAoJg?@5Bxq4Td+058k0-2(#zJIfoih%-7MyH z5HAVsK;2%-iL;`muEF!IiYlpKNfTi?!tL}Vo>LhY&tK*Zx8f=4Xu(;}`h1e)T81963;Lr37Rly2VvEY9 z#eSnpXMi=s6b06*U5H?=lGFo(Og-uYMFV8V0LqO;dr~l3(L#^u=P@RBblSBjQy(10 zw`_RjxKN=My0H3<93KjltN_bYf{`~TsqmX-Iq+D zCCp@FJ>bFB`POqeFaIx|&c&U{|MCBu%{I(7bDHz!d^YEi*qo9xIn1dXbCz@RmTb&9 zMu?~!a|j_ssrQ_ToJr@2B2tu!PW$cs`CixWAJ}#6+I`=fBn=h0Ypr@i6qPV&Y@4om#O050FLHB>7O^}4KALyx?e$0Fyl$ak0SM0nlY&T`)CEj&EoPK8;9tY&RNtb7Te zRocCt%w9DpDarh-FZ*I#JbuyK_4)s*p;qM#8njP0J3X+(I%El&o{^c&8E}kd?^t9% zH<3li%-7~o?SU{ub8@;fFI8vO`e$0vp{d!lQ}6PF%0Zt>irKJomLVQ)bU|?1Hb?bY zvHB7EYfetdfp{$+A6m1hB3m@D;d*#D*9f{H>rkku$xWFL`Gt^u%L-Rn#ajxvmRgfv zPC*_;FYB0!m&-1`ILguXw-Lz|#sSaBpw!$c4(a#|&dH*>?x!nB!tH+?a{q8m&*k4d ze5TS-W=PPvlJ3Y_zT5BXw3E%Lr8IoAJX2-QEn%N>e>6{|xk!x5cX+#K@T*4%?J2Z? z871yq_buHH15vdCMZ+*JYUoYJE4=&U2FgKNxOwT4nqTx)s$(IanAc;`^dP*=$Ny@j zkU_1CP^0V!xrrG+nm0FhYwO#uhMD$zFtccdOMx%b(=u338`^*Td|Nc^Z87g%NT4b1 zKuCD8_aQl6A;(h>i;0y1AqBI`@*zWJ$SZ@s8%3 zbaID_2*$gIV=VK z%N4mMWcGZOH#FO)$(o1DV{`(0nj~7Q*6*`N$#mi`?5V7(RplDK8lY}i>9_Wp^W~Ob zaAG(8)E>xY3oJv)Cps>93UlUtbOHUr4@@`3jlMKV^OX*=#|)#-6uJpdgv=T&sPls zM>LCnIfdMmgWR3AU-iox%arn#>&k6-(@B&bHHJ+aLdBVNf4_N<7jHf(Lmc%xL>l|n zi6g#f-n@KSk@s&}!G8UrL;+X(ZPq*76#&(bXOc+_OZPYq`a9q+ZS5Nu+dBd8xZ0FkT^_w29NVcVcPmiatvhtp`KH#X$F0`-**1kc|NIKB^MT5+q2)vn9yPpoR;4#E zn}}!W7cvn0WuvH zAcYG*;uKD?I^B31UV8^`y<~sHqxHS4J{tTd^eiKwklmndddY6key0C7DZA7(NX0^I zs-YKF!4^?khXpH)_RCfL!M6g?1K zkKm^f9{1%E`CXw(7m}d$aRyO0o@f4xIo@~YH%Dv8o)(_}ZhS7K=2@0`E=4|}AVMLLM>jKe*O0k(tr^rMk`5~XDH7AY@Mcp;-SygT z&5rIL6FM3vJ&w{iu5>>NO3P^f#CiX1mXoXMJI^e;w2c3Xy3CdYfa}XPaOsWAQ=Hl4 zk-vPugBgH-y))t0mCw^XWz8xkBxL($(rWA=Twwu$Ax{TWAHX%0E%^M@^Lde?%(Ih3 z`3q1r630k((Y^FxqpsTXdrMl>d&v^{OKsJp*hV;4m(Jy&d$yU6UwE$2Iu`=BLv_)u$V+(*Q3@Z*v8*4)LXB11nas<$4@ENCV6e(NHay*@pXUGrqO z6r#jzMic`|mu>U*m20%rZ$+o##K{3KUJkhCBeIGZQmWW7rHn zYl5HqhPW9nQzWbpmnD&Wh|9+15~OqFt|dw5Dz)@U=c(O4l+M?DOpv*(`#edez+k&i zrttXBLm4`W+d#I+LiB=c@k!-=*(-L2N3tbO)&_E=uAUd<$~?mQ<*xc9AIX)o{BjNC zD}t_FkiQn%(l1{bdH+bhD(10)!u5pb7Zh$>*zQ-jdGY6wLN$fkQ1Smu!xif;8~#+R zFG>#KHENtcU#)E|tt%ep9m(w`v6AhUi`2~LJEO0(mH2|x+`jE5pjpqT%<5?h%kbKm zD>IFTYCl%-&O3>MWcNMP`m7gAUTp5?U*w(h-a*CHcr@Z)2{Bkdr%KO}t)7++#$N|b zK2cTUzv1)iVxZOApYsG5!Q&WbGrle$=58!jawArHdDmAUoRlcVke{eovVH1 zcE zmunzfDQyPjFng;*ls>C1{_LLRSn(x%T}C4v$K@9*cFsId*-M)tA69$W z#-q-wf{+U=;LG!@szs})X75McMb7kCE4v4B{SOWY@V9KS8Zy|@gg$xF5e>nlAFvCg zOfm<255w{H?;0pLK1_tr_XN8Ta139KfM?Y}5!R#;VHXS42oQ9s;HnWwcFmw{i{luR z!s#heovi8sMG(94a36;OBYTuLh#D(avg$k(do;Q9seJr+?{?V!&SQ*A4ST7$i}krZ zrCChR?5AxA5D4a)52#30^FhIB(*|XaP(b7WR+LSIBj0GyDPs=nHCD^G>r9{#iF=ka zP39_-MeM^?HUo8k%xH4{k>5ZD?S}NY$xo-;lBF1_e1IZg_XwFHS&s(oXC7DKFdy{E z70Uu_sSllUIH$TKrmD?YOZ#4EZQB_`WkUEwI-+>$> z3dbyz^kRH2#nLbhTjp}7#|z84>Yr40Wm@w(^HBfF+@B4r0iGu3See&fOqG|h;&UG_ zvM<7l1aZmUa6X-GzOKu{LS+sImlDWS#bG9{PNe2?>cNnp(Bz#|S1{D(P}n;|4#=UO zookytK4t?AP&F&QUBVk_QY5s@R7a`>kF79(_ z8F%B>w7SMxj@EMbY==>=2+v<`KYJ7a82SNOrNyKA^8PBnS)>!V!~V|y-aMaP;c|3B zA57x2$x?sHVmx97uksZXgYwq1jBPysAd|bhu&;HMtR+CQg;$ORh>(&T0-~0Hy*ioci%tL_7s~k#k^T3WuFDHgbShk?!oV%*5H|=0MQyyG*_a zXMRW?8?>P%OG4)ls>efY4uJ<9W3VwImz$*Dk+Ztd1nH0>EwcDvkn{KwM{iHYgMm?l zw3-})p#ws?Kvb~|TcB)Z`iZwnD&-jo4~*rLdLbf}ACm5Zr|RZhJ`u=qdx;HApb8z$ z8Cs2ox0(qAap>A+09(fz;ZJ3|xD7r!-qL+#5eQa^^|uhXy1V(!%XV@gdmDih@N95QmSMK)w4JY?;UqZPUVv z@!_?XqO?p@j<5$em7W=@YB~Q5ri;jt>MjCSfdrT=u`|<_k<~oL&mmD;5G5xo#xh4F zp49%^@=pGVpwjiy38AxF@D%(;h}C*NIbDx~OFs>W=q{iba9vWYKXDCae7JI=K=veC zuyI4y`c}PlyR1!bz0D(8+p&7v8CkoPdb`)M_V4TMKgl|LuXp$>>&Uh?Amp5c8k{8M zoaGyw)#XmPyz@Nj<;VhHO;ySC_~9a41#%!wRshn`jUzJ}I$n;7z{QrA2E}tT zZw~;xE{tJ$py-5onsx*}(4>=sDJyNh-}R6&8GdH1H8a+~xgDx!hd#vhRJG z-)ZZJ{|G*Sk(jHbcu;^mI|a1tp9}KdvXS`1TVG@*-|c*kJnn_fAHv&C5#aTuQ<^CN zcaLf5#L@dDdCD)(CjNbY>@iJ`Nra~mEn`RfeJypo8-dd#lm1b0mp~z>Mt6ZX-WzP9 zt=LFI@ZvNj%9~O@%Be32mQ7)3X*r%zeioBBdZBAXUc4zu7LHK0^|7KR-2$3_vAHY4 zNE6!fh66wNiBe`7lexzY_ZmljD`cjQW+qz%tfVJ>mVfWpbsCAN6Uxkhh??-9sv z1QhtBqp0r(lWEeW`7Epj%M4x}PWl+KSnB_A+J1L>P#nA@C_bix0Y=J_#IEgdta%HV zn~KT;!}mZ5M3UGXpF#B?>X0bvqC_T}anH?ecNgq`RM{2Jz>P4r8`7>xnl_scUcA*P zHz6-a2w^eV{jzdc8j`)at6^R80RwmPc z??i2|5i@#opym&#mkWmVX-(cJAtnQZ$_L_y1>u9Jmq3nCwWrB#K1s^GMxUN8YXJBCY zwa(9%5XH4)j9Dv=x>(w8OX+#1J>?$fzp0Dl)?sL%kbn_X)RzPep!g>iGygcGQ9FUz zF&njT8$~Ud^UXfd!y?4Nm-35Rb}@o+qk?(pb9=)=g>QM1V%&*eFtd(%Lw5%3J(F&c zH1eG!+@DI^RTsa|;YJg7{v8cKMmGY^6>vW_!JA$(2V#DMgcq`;@aGJJxWmjr0!Vkb zA$>F!<>A z@G(!eGYanQn9dc)=@v8Umaxpzk%4%GtrcPD=IhKnD?=vbYrc!N5@SRdxmkSI4xj9p zq0-J_0InWp67k;Z_)Z{UpVSx1pwRT1RQX>vdW!&j*1Wk7UuSY|3DU_DR)KlfXi^bF zcwdreT6#s#XIIX(T1j*D>P7c~xRA?kq03*77jo*S0Pe;Qx}nb1URb-V2I_U{akUBb zw)#YJ=^>x2e@BfU9A!M%r6LJsK<02z(2Bck4^lPZw9@#g6J{=(f=Y2Ln(vvO#_mtV zOCO99hXk2vm`gcQ2h6p9&l{5mSM#@myq~GK7_Apm*Acz2SJai0~ zIYgO6qkEhuZjZivem=vl90=ejkQ`C39>n-ktam~M;;W`5GcwloX=0Y{6U$$g?ELP6 z5oyB%BOI8HP{&jBv!dU^dT7Lk&YYUnW_UWXYWeKd7Zx8mUIejp$yHP-GRGaY;idQ= z5lOZu1m=3L|AEKHx2ZBfm`+gYrHm(u_E{CQkq@*HZUk5_?Y4jhRb66_c@Nz*=W zBdXv3>DxlqBM&jVn9+Z0?h(G78@C&V0;ZC_FQ&X$Y0NA2FD{aLIhgeikJHy=ck}KQ z5wK7_C-uCAL3dmF`GW|~nvRP!+U5tI4&IV>oxERe+1kGor4PEBfJel+a>d+2kxUT4UOTUc5@1fbqhY#c*h&X%>)B??m zF?fD&R@)8!%NV?BF!gkxrg&a0a6vCX$>(cw(ag2ldx=S%<^zjk17^v4nTaMNM1??8 zi4v-)DDhU-uV~K)jr@DDS%!&*=U?P4m22t8EBx?5n5`c_ZQ-K7DLy3f@r<}_|CLi% zF5CH&DL=P+ZfFm@Hv0bR4d>}ypW$8J+KxJi%m|5O)pBo+b^cM5&(l%3CVbG4UKFK| zJ56PT@kq=x>@DuqFWbp_Dw7^k>_*2+}ZXAwQ_j|@mB8dTyh$N?<@r&{6VRRCvFpT@tu%7R?#nJ zr9tGX;6;T9+m6J8t=`~cGk;SI6JMM~{u-o!@Z|!=0G#~Opovl+r!KyHt&EI9++qYW zUo$H?bY*kI#t(L)SBp`h;*XcULKQ#hSX_EKPww(_ZqE~vBh{-k%~&gDrsi$P*K>OA znRs?1dgVyj2;Xas$j4;*-jW3irtA`^C9D9u8-!ZoI(^PslVi+mOLGbk8J$hiltTMM zaxt~!EG#;JP=qz}Z|bT}9muV{Vz`$(mTeG?=cu9HAC!iua@Q_cQ{OY1tKmFv>6I(_ zRmBnMh|PqWjA(*Kqw%wWu>U4)72KKL|CM{-}bBbtW`c zdt0kEbr|ttIJiLw+@Q$O)?Ei@P*sNWW4i^qqE0Jdghb>Bwv8rHMRne?&mjiaXgcP) zfXh1NNi_u*;pAZYeswmd-M`WBgeB)o|I}Ey+-zC&%39f8jlrBJOY1vC(0enFO?SMcvkYd@0H{%3$;7l!qZJ@fJOp_D}n#&A+WS<*(|B z?2|X^N>!{(8#+CO!y4`c++%CRW(;@ci_1KB?hNWNvi*(helB&)kKGTInFr**x>N*7 zSB|YQeZJGZ-yZU@tH`(#n{s+p?%Y_|v(oSfcUrbS4KzNwwm*)$^m6~!ie9zQ)e1)P zRnZF%dFOm|7Mgq8Aq&eYcw5T?De&dG9I0Iy}dc2@#Z(GFf;hm z*JtP6{P|%q3r;?K;%?&Ldb;7vrLlK!OdP^DHcWsBdK#w=6UbLi8x=%m75B-(`jn)Ydn4!Gm#m3rf&BdZ%nzF z#3y>z@q;xa1!Imw6lGiJyyYt@HjjLn2X7i57N!FHjesNEv$Zu!=#VxsrR+hT_dj}^ zZ)la;iHy{}$7?{^(WOnfrf_FGO1%H0EXCGW6@$z6Q?wH+C3?wXfZ4|`Y85pZ=Idc_ za<#gPRuB6uNYzSDPEel|Z8B^u*y&<}2Y+k=YKbQrMRc{*3Rw!Qe1WdzwtXK8@64mf z3AlCNYCRS1daMCi%b*+m3E&T4o-h(;CwJaiVoIwD$G(E^)zo7p$X7y4vHQScmyvUC z??N!%Wtnb|E_*rEgq(U0aG)NhDLpdxRn4sEwufs)yIrU%YbMdMa$odAEy43j@2wSgDsc^-KyLsV=61&s->PwW zL-5bY@5m3Ywog@*PV z-|wu#gnEEDBzng$wulh>pNb}%Gjio|sitfwoKp{Ae)`J8)s0f@m&?G|7b9RP;$S58 zxP_=51(H`*f_JJU9OZY-N{1er7uHTh<$)CqIl#+XQK=6 z+UW#EsTp1oL6Xk>*E1`-Q^kiyklZ<2} z#%|5ecj3Un^+DzwY;#2zNe{?HoIY2c=}Rkj(1g3i`}6x7!;O=VRT7b+dPQ@w>h^=M z@YZ289A{bG(4RlN#G(2+8(c1c|RnGHP5LEQ}D5}X-&FX>-!nY<%@9!F~)P@KzSrK~tJ|O#d_Ep{K zM7?et_JojPWTUcd%ZUm9&*XmOE`%Kbvq|E=&miKO#0h8tEfprmx>!W1vvS>c|*w5R4R_2n;*gbaV4QU+SZo*i6Na&=*EirmuThU`245>NH>WwSwIhWbVmBI|* zH#vLudfO?kEdvmG=kSE;qYJtAAJ?U>Pi*@YtmQJyG|r@lim|SGy zV^Pk{cOb2dOyW27osD)z&vy0wx6SXTIk>&wJ2fGsSgJTk{0zW_&iOS^Xf5OJjn-|<=5iD6d3#3DHGdK2r&-Ik^#p?C3B zH8KUrXC)5LP{Zic445MybS6;3xcc3MA8O2ZsO#L*zkb5)Z}A%+j@j}FUM31I?zW!R zl#li$*Amgc>RzMPQI0aM;1di_O~VeR&_`1j*5AQ4*pQepL#*7-(QzIsPBE12kkY~l zU12&z%MDA;t;0+?{&|AR$8rNY@A%hXcmXIYROrvg5MG8*ux)t6G;Cmv{lvvSvygnB zX4hN9-ln;Rw8m}}N$z$^*SAY&(qUi6{%7PQjj@fKNiEpy8Ue!^^fmf46DMrFHf3EP zj-g12hYHJn#$)~5qH}q8iKySIXe)si?g+ zbFP?=?OE3IJ1{P)pwDWuWbr~B%w059aNI&3K-qupE5zS{iP4lV*TC~|Jyho4MSPV) zpOVMas3GwlPoJlKk0YbB7Z?xXUJ2hZ3 zsJbe(0)Izv9&m!g2dC~hY5rPiHLY_SHR!I#>?;}FGlLpe#o6P8d!>7yZ(y*^(pKxb zU2~rz(CCiHl$2QfjV}T-ds6pFD40L*SO4Ol6h01TgwiacF%~&Er`)*^3o$d{F*V*n z;;Xp%_GP}a@GV4WfaycO-qk{l?^?lRKa4n^K#aA(88Z>ik7{@`S=Br|KL=0A6L}0t ze!*9*nuw056D|ixGW}GN<7K%`Us2=PGz+UA^KFNNB40M8;+IU9-f^0@31kw-s`ig1 zHuFkOGga3y)mwe0k1IG#}`b#bNy06rj{RDQEbb7v~in-KS zS>s~L+p$bP!+kl3{7D1xZ-lI&NO1c50!tNcQ`HG+)iG19PE#?aujuzdu`%K(9BaQR z&}Yjb=i={`Z0)Q-bLQtb&SQG~DSw3OISv&Hcbp&pil0=|nolAHcQ_~*5iivfP@cZ`i zu|z+S8}XuGO47z4YA>J&M#ZR7Bscu{uj%5ZPZ})d7*4D?;)^UZY5y8CV3`pj#ns~H zDRxz(NVg!w*gM{JCTAwr7;b)ccBeJkE%?F;VB&zYosr-TwhXKnqJeo3IcFpF42fX? zUR4NSyHa$>KcyPM;MpinKmHPAERTZU_r0Ac$Mgq4341}!Za%6I=zU*0OI=xbs|foW z+mFbs2i)=i%ln{rLf*dX5W4Df=*OSWD0yG)F+quVQbraJ{P6Spxl1zrwf3;)cK5-v zB3M85e@J8SG$|^tR(pg5hZ=tqjz1|(LX}S-FGsc!C=fvE{TYXET3ZTydi_S|)ECvM znbs*tuGq9HzvvVie3?(NyQMc@aO|BT3#at0M=XEr!Y|e2ojn8#ht%yxvi1@T)r7jg zNHJ^p-+!_97DoHJC;rohPRk*Ng0Ahsr@&c!bYbP5dwLT%8O}lUEudZsukvi56nPM( zgSb$EG=@Sh3n zLtnw}VZlD3@LN*h5qlnfSO_$rb6%ix_0xHe=zIo6f)|QJ`imrvif{(Sau21;TRVgHbLn;nx&G7Xa7unJDjPs`bY@YV7BV}Q&o&%a{(2NM->h^5;ap<+hiuSWNiXgv!)`*Q^-9Kfu zItH=P2!zVF0@I7j=g+0t4k^7^Z$8m{=loUw@ZlMlOY6RU|H)jSF5(}N*B z(zftXvaUPNbE|lGZL6P)(>qM&UFqZ(1F%}d%kascF0Cf*{By*1S<$u^geiI`KjcpQ zuVATr(`afzgL|8R_YpqR&+bh69tM*%;m7}8YsGil5HWDF@0)-)FXPwvl4InAd}QkD zR_OxZMTZ)6S?H5k(JFPd#m7Sn7~mpH=Lw*oMv1+=QCn+St$4)Cc;vOajH$6fI<)(x ziwM1(N2EU?o3Y*3p3vc^81m+pIyw_~+|o+0m?^&Hhe&)EEKsl}{z+FA2xt1i`nv9_ z)?v$VF_5*yIRHG6A0ADWoJe;&4ZxKIY|!sZpM3!+256|(@T>wQJA7H+E3ng%QuCKF zDMS~!m z37vky8MG=?O5KKLM%JS-;BDRKGk5rFzo=_` z_0D^#>G0LIN-ZGX++lXb_3Ss#&)|iSI#f7qh@TQFTc=qneoodB= z-{LUfl`jJhcdD_~8qADjOv$q+|K{rPn@Vv-pLIZhE=Gf-uHUhzhp4>e^qL!U8@2kr zCNzdb(lFx4bh67a2efL6|Evez4?)M8*)}5ILo%R$_%l~zBv7L z&~~c(iwJ8IxL^QQvZ_Jx?;tX_TPW&Lg6FOT(ggQ91?Fu-bc}&{r`|}^6y&R&;!#CK zDPV%;=gyqL2|sFnBP#tlrsc|eDU}jz6OhNA-*sTH^UQC7hMPDu`z4iHL=y-1BZ*~x z|JrBeVrk6+0RQViP(>N9QApbJX6H&UE?*a31N3h&bXC^flQOZ~KneYZez^$@&;Oaz zTB;&rPDjc}s|gQU)S z3d&^rA&Ld!f=F%*>!M2&Ju*e3Cj7D_Q(^wuMg3hRz(&~j>o|#`bvjj@H{MqMCmj67 zWU7ifXQD8)!i)Wz?P6_?ZQFQilAx3=ZF=nQhOmP%P);EKx_F>f45VariPSD`=HdF; zm$U3@W=c;f8A4A$X=6HsyK@Sq$P6| z11pH^#Ly=iB4+A?k)9<^{#mq8`ct*PN+MTv3Fi~Y0Sw)l5y+Xy%MX3&+8PHVmz8Tv zsa}B$5eBbN92|U7Sb}eHp7;f(A=O0%8LkCS04+b11Ov&IA2>xDPooUpUkNm8U z^QsL)RzAQ`$X@mz-t-@4<)cOlII~0$q=_j?uN1 zyzkCpxe(o0)6qk0DR7aF+9e8}CWqIGo|}#tmppUU&i{8`SLsM*{Gx;Yt9+MJL@f0Xt|I4Uc8KzpvZnT+5IDP7r4gubnE}axvTwHS*p8y zVKqpg#Qq)3`K2bEF~M!+AvrN&97CsAsxP$`Pmy|yr7e0*Fo{@JD)il>+!Rm2G z3E1=>+$CH>&Xf0EI7|~`?h{#kTIO(fo$#~>Y;zc+BLINrY`wKUH`?6$C@r1uh_@Sg zNwdmtjregPYSbb7fb4;C#-GCwpj1vVP?&R$(Cc)mJIe$Np zTvF$quM?Uzfa!nX}_`^pwerP+m=2 zr1I&mS8gNb@*rj%|8?I{eDwE1FH9Prw-%B2T)EkxtF%yl8hEWbX_SJO$*Ul`i~F5Y zGGo8?Gw7%E-7q;f;9yK<_6Ytr!%(0l7Tc5N!d19c;c5?&T z)mOtk-}}P`=^Fo&hJVGDcA#tho2L`l+e6Xx_goDppCB%bX*PSmANRa4)Z?*OnF<&o z&Hy=C853ftT#E2B5zu*i`4kODn!X&!*3C4V>k96K(HYc`&qy5Xhbmhdu3YOY7gjal zvZY=4VU9PFzZCYZTsQjY@p3|3#Y+GPk>U$J;S$fP-(xbZ9C8;*TH+g2eL}4EI`hgN z$KTRvYqmR=yI8dy-)OYk>~M*DshT^X$y}|)sW5k`UOA!JHnQc^P449;>x34Uwieer zxy!9#3Aep>TipNUUg^k9Xbn`m?J=9X(%q8K77=;d>kaqQzQ+me@ol$#KIc9i*iN{U zvU~dsi+h#9o!F6~*6N4MTOCnO?97jB4Upn_HesFERnpcPq>=Y*IxO*S)oyFB3D5Jn z+{EsBwYE@)aF1Bxmhbh7b>%6(>iGzl(ioU1;Nl*~$%DyjJywN$i95o}V`)7GeoYSk zKV(;)4EBz`BBQZ^4wD;H<6@8N4$QT5BfAE%1ePK;%exY{WB)*pi0Dcdp{n)*6F&>C*8-MmhfbYnR*$z00avIN&Dg+1dGs20u^Ha%O# zLzT~eU=ZN#YGB5$VHLQ{=XEz^-)na137nSPrEi&MPz{=me@ZgVojQ~KE1p0Z3jCS1JMxnueps%ed1v8v`l^o{AN z#<%INV!jKdq1fY0CvF{gc~MRBn6Wosy0F&LwQ>9JU3?K0hOHF|X_$0A=jP3+CV!FU zd~n<`NO8cd)3a&y_b`=*dQo(M0h5rS-DtX{L)2cZ{C={w0{+?|T^3P6Kd6-fMW=!E z5Z8$y%VQFzqBoVe3E8GPeF5O)-vKC*jXkz$9sH0E;w50HhIM>2t9l%luA#-j?+$zl zdV!d*ycKb1$ABG>&IX4&H{bbMlJe+QN>`ES^>JfKyr*Rnf>_wwFyvBZ6?rJGxfsdq^kzh23G<)VbvAW1^}1Kth)nbx5irniZ`R zl1>N#n8w65?g1&nJh2?G2VGp6jtb2(DTS-Z5o}aB!Lo8Sr)(d&Eo3w8C>0Z}_WIuG zHE6CJ0rsaeFc`qupLK3=T!B@c17YM?D_*KgylhB8l2M%ME>s1KwsRA&28uT!jzsIt z{Irn?UX92O28^OOS%Ck8W7&gZcu*6v0-M6~bGhkn(|7tPjAhCtPWWetC?1v-D{Rw= z3V`^6aqoHMuJWX^Q02T6LgRi36n+_bR?yJ;b^F)8Frq54rX+2W?(1LG6pnR zzy&3s7*-FZ_#GLyhY7mpuL>-Y#+6tOVQ&-_nGe%C__81X)_+#YvGY7J)mfLuvy^jC z568d{fHu$=#Pw)S0y8%uO_0UpHSq(qN~bK7qi)1-_Uz@?tmg=iqx;h!UjUr{27ygA zjk1W@*s?S59(WuZrV2n%wX?AM#bC_~(5^fP-A4q7g>-O5V$mxoQHU>>Wd~2`g2+G3 z{1=a|q8rYJ2fz}rSjW9WrUDjKe7a4S*PTvR?c_1`EfE_|U0=NlafAv8qLaTzgx^Kp zi-u?bV70*F{ut#70Ho+1-bG1KB(#Fh!uClHC{_slHxNKh<6Losw)Z8#kN6RjXw7F8 z;YzXVhY=UQ<<}k}9htc@NxVjhsIt9SOJ5e4FvpM8yuP82x>znR>sxKE;OqiHYc*H( z8i-Egp@e8if`|9q(iI_@NU&%P%#h~p>$8Z02H+vGOrvAHu~C~PDW(qd`a+BMO8z008Lm}BDP>{JS6+?4@Av}(u*MKk&^{3!24v^kH=BjzU3%R+i?e8wN!M zKSFQrqdD(5)j^;0XJN~#nptSqW`4t;{C}1BkoQ7XXdou`cqagIyNqYg!&p%N=DVDF z7xRFlikm6#useLX=}tqzFLfNISc4&x^UOr(yo8E~XscOG2b;kSfU5Q$zgu=0#8-Rc z=*oX*XM25K-HS3g1kU^fs+_$n zpoH$kOKHqOZu+qRP90%-L*UR3?X{$C>D!XBJLfEh;QF^JM+L8esJ;eM*E{bUKH+9R z&Tl_6yJ7TRB%njQ2M;r&BcOb(Xi`kdm$sw$mbvcUx-sAAZ}^Lvnwv}!@NGYiyQ+*u zHl7kOQo;AEOYN1Z60=xbKpD*w2iJ6z*we&J;6$HUXWKM&-;Bj>mZ)B>iib|*G|6}Z};+lT{Kkl)?Mr<%j zMvst?aD1kcJu$;2lwfH{5kkM z9-o8HbzQIP{dztpsH_PJG-nTBmG>cw-)G;a(CO5jIFWx;qP{>`4oloAp|iEaKrXFe z(m@|N<=~m^bWYZW!7?^3^kjA@XfEcpOkJtWfnY%h(bJ9+@~f6+9tEyj6)Akf2T4Zd zZbHR8pvQPhX?R06!1WRZVJ^Pe(=llg@*=f=aNGP?{9U%)MPB3LcirvaeJmQNER+WD zBbY(*{y8n&d+Vh9L(#MS^&jRZ5#PG%?_M3=B{6Cma6yq5p>zwe$b$w&+V2&#Ud2gb zax&z09^}79$VhKDKq=^I%+ylRjo^{osj`NyHJ7-HN35Ov9K0=cq%tL3A4vZ?N zFR2aKnn<~eBX9X^uR8`ag@d54`&Nn)xa)|@A4qy+xvCkXgm?*vtTeWXkyo53(uUX3 zhagTAORIq_d?ET|9 z1iArmCg;deq}{r#rBF}g@P>>0r3anb0T`Z<-b%SyXoF2hprAU6qeGx2zM#aKbXop^ z;$qecW{4|zD5XBdhLjEiH&Wy(AAa^po<6V#2U|*|Dz9^Rss1)8ePmJ>qm)A%=<$vl zLPr?}g03jxje6*L-=E0yGE2%oJEh@J?Xu0%u2BMhSE3QLM#e!3>Yo%?qlV+}_cDcb z|7vt_+6ngin(F@dzb#EJj(_6=%S}J}T5E9qRh4)=>1u&_GL(97tenV& zS++2Gx=WvpygBvDiH%GlmmmjW1>4dLpnFE?mg3OAQ&zeULXO7iCTk&FQ(`y+z>}%K ztLenIlSdA=Q&Xd5C4a<<+|*4B-z!5yQXb0)%l>FF>TLPbS3Ns0G&{6A`x7=dDl+#= zZ|=9-++^I`boJbyp}D!;xdqt#qR9NR-u$ZD{CeE{X7&8`(ERT1{61{qKxE-aZ{e@o z!fD*Xzv_jHp@pm61tJVjB1*)A^zmfw_#46mMGc;B97Y?CdDCJ^eQnb4)*@+*`Gb6B z@2-o_uFe&J{BXI99icOd2PqKVv5mnt4}j(;T!J+m!h7_giB|J!i^JHd`|h@)txL(Y zWF60~+SM#3rHz7yf^U^~aFi|n^jT*7dn-0EF};pr?lH68^-3t6N`*O2#)9(JaG4YB zDmqYL9m7z^K%pP#(P|8lMt&+SsGjLs{ItsSsm@`*#@22`Ukv$`UBo`|)?`|i_SPck zA^t;B9fci^=DiO)j`*8zrB|TYx~_f^>h|Gt;Dl<8-UlnpDrPmM0G5j5YTl!FUWzRz zrIEtIe5Lxk_A$^+2g2zzgSSfFIZwh+5#F2x#DtR9qf<6V6uD^- z$PVe~v&W?JlgR5Z@&#FNe7FqxStkd2OZI@|SS*p0{Qo7uDjlnHl4-sGJSMy}Ndcyo z?@d|=H92@2^XAP+fTdBHse)OlFnz_g4JWY^#$G?&+JFiqpx0A~gL{{dccs}Q>L*C9UN(%-m*p0-TB!)b^rcv2>Enpe0Vc)mKajGvTJ za8LO$?$KIh%>FcteC?0!rP%&7quf7lNe8wBfk6yKEQZ2+6j6mke+yz?v8MR_R7uF- zrPwnH2X`6rI_mMC=O5C-5=E&5BRSu`VZDw57BbgR*9h2P0)Amw2aF6Aa!4ef}ekrW@ z<8Gc5XA`2Z%`o1INeN~W*XM++Fs-c+iWQSgyKbz^?GO4l%(+OMcVd0zUMU1;n>ks;Y*epSEKZYE#C z*zdzCnE4yR@7itbRcV`3zLwnuzI2?l`Gy!WGRv|9Xw;=}m~@deHox&*?Rj6kI7`IH zzs??HW@%5N;K%&TS7RMH;WqnW#L0r@l!w;5B@m%HLGXUyzZZ8xnM>5I&QO0S0|rjcmKg2oWP0XP1G%brx; zaa*b~Lss+i=+ua$YEjq8L>{1s|TS?MOY z%Hp5E5Ib^MZ5f{XdkX$1oU^s^=}13Y^3KY=Gb-m?1}k>khr)5yiHh|9m30NlUIJdo z1&4+#ePMzkMEC=QqYC6B?zEnDl%!?yV8tq6uVx=gkc1+KPGZ~_0%2!TI1)ukRL8BB zKLmSPX8ELL>U0>b3Y9k&?il}i0^XSm5@m5@9NjtI#1am)y0Oh9q?|>jT%`pmL4NtMJ6nzfW8qMUcB@HHK@*^$eL!8}~x1qX3rd%T0N2$f9mo%9fwA7^bcmr zu6)Cqs(6CSx(XW$r2UZbT$ZlAvWWEtQ>7XnPKqdvJ4_7!Q~31GPRZLwIcjZr+uMe* zaw*GlXHmc05SmP>#ob@4S_Z{B-K2P2>G!3>AJv=9@B6*%FUlzp4fDJ$><|uC7v6qd zR~}1p?um%1G88D8>St#0Vh(9&hmdiRJb09$aAq0I&iW*sM0T`hW|og^Sm?HmcHO6l z;{>i7(kj%7px^Dca;s+}6O*sPMyIp`((Ui_4I!2$^EOM^7XG59rf$>5mbK@TKTpz+ zre*hdB60JM)Yu>|gSFaUxdh|*AiiT7#%uZrWuHa3cehm0C@O+UbrWkf^(FtFafG6) zHSCFO0Vd0xS#Jl6tSaPXW5y>LLn(EieUZW@hSI9fBpCcms}FHKh~?9^Q^_eP4gPoR z_NHlh0l_E@N(u4E%1%P2_8Wg=JM?6oURVJ$%3*JWLFZ?XH7i?bt$%9CZo#T?W?8?o zxVq^0fQz#4z2gx(g`6uv6+4LN@P|pE6m7*OEciNV0nI|L|Mj4i?|0rwtCKCDszPRG z_K81ZN?(kSF#Maa@%^?8HtNw0J=K_K!Yx^T*Ab-M{0hqHH~_Fjg~@Lem>Slv!nX@G z*cz1*P32#4I{8h?YU1JoN2u$^BwTHbZH5fb^rd}o`qQRI32!^|ld{^BAH>MAt=)8y z@>s%r5T%Bye|h-lacHLD0r>U#HwVE28n)6pnisJoFeq1zXVP{ogM}Su=owCJaUk(9 zI$mRI*Ku%$&XE12R=N9qIY@=EFmM9>M*AcmrWD`<$-dpvvkyA@=e5A%ty(9+I1nMA)Lj z^kkMP%Q8)*VhJQX0n=Oqnjsgy!DJ!%Z8Vt3Ha2*Ff^@Sr`E=r+syHPn%l7EW)_Lnj zEFnaQq3HL2^W&niaFDR$)I`IHn+ncDB)=00R)`EKO3uQ*oa8brG>t0rc(SE~a-M^#U=j4~l)w$un ze%4E_!^U&#o*;zBM~JpAxyA5-4Vln`cHd#akJ_}a_4#zi_?ll??sM3v8~6;xW&(h8 zkkEe%$hx)m*Q6upPjWWoa}Do!4SCa~)r4pJ?H{S2qqcFHe86Ap+MOY^Z+GMG`x~|d z?i6m9reb-UAfa?5l`j)>!C18bB?Wt&c4^_p-8<2N@ULQ?~uF-ufBVtDpIx|zV zocQL{K5uhDgBVEYdl$H{5aO|M_uhm|N#IG()9YoT<1a0r<$u}k>>m-p?!%|fFQnrT z1fe2Ra6)A!z*q_>9IcG`wtVp;X)JM@o`S?esSuUQ1Q*RP`o<)kcoC|^&4RjkBX|mG zOBPpV2*`Rl62aigg)?ir6|0OBS7bhZ;7|s-UD0++Seadt-LLFFj#=dkDl~x=%`K1S z)kWX7K=Zkx`2)}bv1q{@^qnfSP%~P15G^u`7TrPLy+os+Dq?IZ;=(Et@+y+LD)%f@ z?z^f;1*k~Js>tN1$X2PyHLJ)EsyvugQP@#Yyi`$wsw%UoqJ>peFJ z0#r4Lv8q}*s@hemI?bxOgQ|M7s`@*s2A8TBsMIygei#Ne`4we>k{myc%rRdYvW8b+0T+ zqk35#F_vg)-JOn$gvsoyc=oA!rqQhJ@ljZyNm$AAV#TGb`N0{b3GYS>QsQmn1#~{-CGbv?6 zo3MHFh;+85ygL#%?90O`p*4@}`k;ttcqIC~&zw-F2?*1tjDMLyp@?L~;v!5p8uLtP z9Hhf_NABeYManNnSxDc2Vsq`R$r2hWgzQL_Bg3>cDL$CyvV~D(=2K*AYF4!O8KHPm zpt^0YN!r$QfgTe4T*<}ad}`%=PCiuWc(4*c7bK0nLz~QBuBnVE>{cn!5=#nOIAsk#kb}pnV5$e$bT@N`eFVdMID<0FF#0!4ff6xo$m(~jlhyMr8`4O z3|`O&?R`!m)e&{k^@v}L?GNua_5ZVwGp98KAq_LkEAj~jfK}veq6j9ptfEPlfvl@? zd|XHd2ETGGy1PtCPo@1<8G{jB<}` znLeV-HHCCYV0u}#r79nPd^=O%0VaLW?!iEL7HU>CWOln4;;)O=zfFl4H>+be|0H7m z`GNTtJ@c=Y=Jjso-`<)x#F>B3HE*moZ)!1b9x`v4GjH8B|8ZrGgITn(TeOQc^>A<}d6q*$gO&Mnd_{8utJzpA`w*}mHK zW5I3yoK=kJp+>lm;^)d4L!P+{Im-nh*@XOg>A@&jB7VMbDohL?;kWT%C098w(~|Km zf{i?^W;MlBGc><8j6sux4jFvOIJeiNxuhqyG}J>zVO8iNu#;PNGNiCUHcw)o^!J`s z&U@<?*F-`er3%H7#`{?;1u^%+ocTq0g{4ez8KPhz@2go1!36>kUYNDYo<_ ztvflrLoajX9Wfrq! zx<>6->qj6X64{&Hzlk=)^J@i1QB?G6qsSE-!ev9lVur(Fhhwp=WLK0D3ANa^Mg!*& zEA?Q=-W7y(n1ZcF_m>WN&IW4^F^n|I>X$a*W>5pG2f$|HV)spY_3g<0G5StylqJu2 z5?q@#5!f$5w4e<#m3;8~tC+frQI4;hIV;1CQ=3}{PWcl9=_vWaXOT|5TiR1w1)8DK zQxK1!kfY7mpX70)0&%}IVUq5VvPvL-X^23E8CiM4MK4XZ^tZ=RRx_O;zVu8{iP5AL zl;^cHm%ZNwGvlbIZQ&HSaf*vc6WPV!OFAZrNzT z2gB}}|*YGfXLf;W_Yj5A4Y$AV;^U3FT(&6axa2rCTopljzgyPZE<_aM)oi8#& z0Zd>6YlZ6iWhVW_(W+D=xjUxZr6X+&5e=8eW_W@RSE6hXYqi{Zgi99bCtyX>1aIr` zurJt*Ot7X0Ss;qE(lnwsXArO-L6VT1<;QSqhi;T484K{FHdx}5AHU)7~h$^<`Lmy8g@w=$y=l<;Ip0lMqJM(>YDM+MmhR3ttW z2k^{%u*_e&Tg3L94fhvRqbw9rY`(uYINiu!6F{S*U_U~n&d+1L$JEtMIv(=2No6++ zJDG7I_I*Bodh22qas*vTMYpN%%wC*`tdzYsBlxhFqKoCxh?d(_zu^cuqFnE!M)#1n zNJv7?x$M(cCYXVSZcms-<$1Wd!9$g@r0;#74}*Nu6Hl;!2m*6DY7;prmbXG_SGaNO zM>Ls$06V-NN?W)q4yhIJ8^*uRt&Vy%gl8PIq7>n$6@BOJcD=;@p>c87OPZ4f#qUGU zBX*xCbjm0rp}}-&yNvy5C%)hUsFwx%iusnlA{!P|;1^uZb^E^9m{vT*p$DfaDOPug z=a1%AA)1o&J|15qXTKjqi*4``U-eN$NZb$Q7CekBvVx@Y(mu`y>p1d;`2BKy@iHUu zFa6)_ecDk&2njc(u}lz>cz*mb(Y@{FC*fHvcuuJ(K%oK% z`%66fw@Tx`Dow`rJrykmcw~yT6ky0l&e>$#{ROM6-Xu#wMrvXPD)uMtJ^0ydz!ZeA z&(G!pfniP;4yZJxP;f%sr$_xX%Tw0j zl5b*8n<0=wR@D(VT^e`i$$9aV+Sm_oEd=w9ttLl{ZVaxcnlDxQY-}tZ~i~5X-1oUO@;p#=h3e^kBNbL z*%B}MzrXo>4SVy_qp#KO)qMq)t;4y7?9=XO`F}5_YXs?D-8cdj{ZiAI2fsSaDL50L zJ2w$=o=~UBtFCj6pVoY~#0irvvQ)OBw+V0RfRkcMeajK*8H|3`#((G1pPKygq3e@- zSlvM>Q-ev4Qkqz?1@Npe9N%0icy!Q6VDWYURj^tpLLtb9rw}Q~Y~72x^5Kb;0u62a z6u)XA%Og2r{u0ksBW(wlsq*XiDO*zJpv2#_)A3UhysD|M*c8^8#MOkrL~(6js*c9Y zA#g*nkhzTIcp2wqyLaGTyWUiS>GFtntCP1HljmS?3du?_Z79vlMCRYddBiU8gsf+0 zP-uSZzZFfWy5?bPWdG4wSr`eGT8^}OZQwu?(ONjAGrgKRd-r%8JqCy(}n3X3mI zg^%{?N3}HE>$YqiL^Kj_a>l!th)x4hEW%4$hSLqG#mDURaYQx~G4@Mw#@Mh=^#L>Ty4Hms)xPp}0W6cMZfSP>b z<%oO|5%s@Cx4*J^>lkCl+atN~uxFaWSk?9+6HxXJhCihE49*)u6nHzYQH5yl6;TCt z9HT6qmmz*18J^)J1vSvg$_k*j1IlWgaV2BA%kuEHBzO_sA9o{`27D;}9$e7ftJhghC@m&O9S-wn!No8ch()+Blr=v|A? z&8Gu$|A`zgB>(4+UyRukIsaK`b-lLzP0sb-X!N_C?eL3MS?BegPkrUz)`z*8{^T48 zjKS0|6U2{A!Mwv_&7!oZcM#qDi#r0+e$e)}h%ZRUjc<&`pIGx2$;L&Y2-~x*NQ$E^;U(6A%>TEjp_SHQ4Cj1d2tX*|=$A96NcqZ(=D6Zu;zvPJXml zv|$c6W2Ix4kgZsZ*(^6x(?-|b5V2TWHXh~y$8L#2u{dW79@ak_-BRsh@m@JR?Awk# za!X~aLc~)F*=`H!IQ1J9il>}8h|Vm%ju<&5uL82eqvbhNP_qs4NOr8=0|c3p z%+t�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%0DON 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

siP&Yb3RrUR$KVN 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 ^%+9&qYaLXE}*Dwuu#$kP`b4J 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

{;ez6z-23C^+9<_eYt>!01wG8 z*(JmMwLDU$Rk@bECC#`_*<>oGd8vrOnM6q`4QbVi-MrjqeA}={49&JK$#}Su%QwO& zy^vV^c4i5sF>_SP%59WE2158q_Kv!{&{X3>j0=Zm$@iMVQ}+0ZP^oCtGWB5hiX5NA z;5%K6cau*!V4e*f)be|PJ4I8tbsVe=H zJ28tNQPHkHubkBVch#e4x4nH%{`meODFVn~vEy^_K7>(9yWP$f{8}dAwz^$=z92}z z8!Lm1OizsEKH|V)d_f{Hw)&XxX!j!jf%%-js z{7Iga7hg0CHgmra1xvAV_Oi2m-4gad=+Sh2F|q1n+~>0^mhXRE-?^IdE#Ss_?VRSV zcP&5Uxr@%Qr2)cloI!9~USwsk>}Ppm*0?*vOSNAl<>Iaax!oxZxi4E8NkK2SM|B_U zm-h$s20jyWGRvSh{&X5L+V6=8>ro=2LNRzzQ;wqSv@}wB+a*_3nntk_=7#9L0S;=wJagfkz$`>Alljdb|3eqFhw0zZTUqsQ;$YwicZ#5I^VQce{^ zxuyU}ws@_E`2zM$;Brv$G-{gr4brDlNhz22Wl|*K$fu^QS8k-|dt;$rtvjYs!oL z49J4H5MuEP#@Wha)&y3s5;poo=-_3pvg$Ub-bSc@Lls+lMGT}85p@*p48rdvg(SqgDm$nzDCl+ zQA(L4|7J;knUu8v!4enT$+HjZrXAJ00GCVcM{mH0WQ;lu^ntpz({ z496Wu(9q2Z4X{-=%!zU5$63=<3?0;iglX7Xlaggu>sn0DvJS0`hbKeG5;0HbwfseO z-v}zFTmSW%!m5ChbT!4yMxDj0)ene(9yZ9S`L352@=(e2I7M zI}+uUb6nf@`&=L?xerpFm+G!|M1IgoonIwc)j$4-C(8POTbUOHPZ$|;X$o_I(f8f> z18oL8rUY@Sc$)5Qv4BB;Z8dj`+k~Pu4}iJ{pdYbX8?>%coBYyC-&URlBv#TyG1H#D zs^>!UY$NONn`*~JW8uU6~W_l7!49vEGc4}}BalR=U&>W=wq3=${_1Cea|WmS8ny89lEoD_%3 zIo_g*S_4)7cxwdpekaxdr*B)5>!>zB2^Me~NMHt2b^O870{{tY>fG)sZG9t4JX@5B zlq|&Sn+{Ob8wQT^IKV&&04PSPU#h`I28$OP+$^-g8@CZOIPbbJ^_HC1NL z6d>FmU%yK0v;j){M;BjLMpfFNIV@xp7)_+A3{s$pcOEc=g1&Ad_c#Bm(7M{BMXdYS z^UK;|I=ugO6c=U;@1jw=P88jfzWBUJyVOEC=mZ#z>~*@-hqxz$W@|)vb0SEBLNHhDRVpKxR`$vQHl;F}EdSIE=n+B&@hD2a z`52YIm>QNsz&)wgE~6Xmvq)k@b8D&+1&o^pS(bq$v0%$>5Ioy6@A@XS$xDMmwbYH) ztE8I}NoE6pDy7?&fEKoRizSDJZu611)|fWLzi@7uSB^7d0k4~&K{Wb<`+*!3(G11| zr4r%Uj<2cX-WEvzGDoGf8XvIpn3;?QbMv`qpW99l=@&qgXsol z+Qpnhk+SVK*@Hpx=WXfe z@0a?&*XqElsaV}tO0a%&)<);9K2dUqeMlIE>{Zt#SiPkFtm_}4v_UVn3CaP2)OR|u zt-$V9AZzENBpvn&n`b&Md8{2cyvzT*H`--4$zxaN;b-r@14QFn+<6<2WoW;Y@2L9R z9el-S3uz|#jZNlj_&eA^%; z-GF|!28bS*Co2RIc6S1mve)56bhpSNsOSNT&yu;0XZoCDQXv~W0|Jh+Vy{^N96z*GJI?;zj^Ia4_wF2$5o({iA16yKkJ|VJI>$NLU z#GPM;oE-(pSmzt4fn5|UF4)EJyaDlXsGcg`0trC732O^CMW)_*g&J^SNC?eDs@Jcm zNJL6p{`~V7KxN<}ey?Mc+$lPo;DD~4VHW~1O)>)GT;7r}@v2vyyJNO*eFv%Ya=Xq1 z_EGvjni$4Q*7F{oW0;rU4jjOn$Wk!(k~MIj4250fH#_nEhCNB&T7z~7K8W}~L(y}sg{oMf^_)j(n|09DOxuH#b zthHkpXMC0b!-4TcssR51SAizrpYKRMv#;6**mZQVg+3Dw;0@C>>T_qMVJBYGG~@;~ z#NI3PfGf$VE6KBr@#Vm86rU@8AnpN-z|A)E`W_Y|gd!%(L<)soBEZmulvKJXjG$h} zBe81G)ATnSZJyNPO-s#EmG=;YgpQHj+vV{r=*#(w~9H_}D%QOe$g^$zf0w!iI=Th>{@B60JQA8!~nHc1UJ>6;W4*uqkGB*5TE)8tak^*gJ{1RvXQjXldibdH3*na z88pYzs>}wY(4d4Ws%rXIkl%n*8=Z-7lM@xwj4%H*um;8$KyKt_oBla%cI-#vqyCf^KU3wb zCDSjOKQOu@LBDhJ-bq6nRN2+@61(nmdzW0biO`;^ji2>9Y5oMFSsl>!i+B z)>SQt^&Miduu$#$rd}I}UZAA!WES|R&JBXS2EXIkp1jLW9#BxS;l~0wB6`0!F7OeS za8We*GH??Yo0fh@GKH(x@Y@v&*MnFQVHu@<4_odkClQEoXa2bE{VwO_WzYB6+)O#T zL%Yr$@O$+oC@G`_Aau-bbZoin${#fP-oQ1D0dyVStdg#ZXfb8BS^9#d_fnt{W(F`k zH5DY$?PajgH!%oIFz?^FKCPA9i(g1h4FpSuYT~eX1eL%G@4eOcJTTlMEjo|~*)$C6 z*Q%sLHb9pC;5A~pp4%1&^n@+(w{xz;GUFGX_;>m}NbUyM?6`j0w+EKn2g?;elD0JR zHO*#;2bQXzo58>1&)pTiI{nL1f`o{smM%TM#It*4M zM|pyI@%)>PCC&3mZkVcX5DmD?O~`1#h2$OoyBDvuErezd`gNVkVk{YFAQOWJ3%Igo zsedZkEk|~gT^Sj&r`AU=YRPdH=8ZP{cRsL|w&$miFE|jq0Vo2s=I359=AJTiN?qL@ z_A_y{xJqp{;?hH%2xcA+ojP}5fgnvSr)=@4LYK^K2$9FIP4`);p0DLZgM^i2oKC=62 z;;Q}-lOUxy<#(Wq-R3KLP;jxP@v<|tE4^7>y;g;bsGf4 z34x$Rn~lY75YJ) z5$Tw>ax)2#_wlyIO}-aL+L>ZydDh`Qf=F!7+fY@fHf9J^GhS)fY3lwnP;;+_mCQ@=*m))2~{-lNKbv)%s_@|m<61-M;tO!SaW==h+%x6V$oW!#f` z;aNG=^{UrXY4AJBH4a~XQS2k;lhG4;TVTJw8+f}#cmvV1rUH$N)mI@ZqWX;|B(E8+1VQ8hZ zU2LHT=G)Nu=62@sb%UqxZV7AFGDFl}wvL~PdA{@d>c_i(|GiylB=}iGu|y7MkO!m! zE58iMpF@8gRx`8Oq6*(Ye;YG-U-@nPAQ!#It|`76HF@-~{D0HlfmQ##4p98m`6BQ} z)%Q1X&*XnBB%c2pvY5%0-{<5gUQcHn*5OrG%LA|fTtCPa__cZK#`RwxTAnHV-tKyT z{rAojuEL+)LB$(?zP>!H_;+t6@W$Woi{}*o?XTUqk@ZWgRgwGWzxUi5+<$+$iWHzE z2O#Kc4IcWOCE&#Y$!Oo-W>TEV%DYf3(Iu2d|%rniQBc<*a zpY5%o=I5OBM<ma5Cp{~6iMQ8!8itN}c$Phn4KsYPWtR|Nn)iTD1N%eEEo*ABay>L$ z`KE(C?M+AZk+KHDk38PH-!6Ta-n5%M?UEx~dQ(Yi%i+k0sh1U!x3s*s9FGh2#3TE{ zMhl2FCr)@?dp8|(i98rQY9N5N-ZIplqi>vP(jCUqHH{8c0{_KL?TWgq=O`w#vKHS{GA%Y43QxYm1@$L0P~vR z>{;1WlEG=WA<`MTY}9@V#LIU~(+=jOO`6XT>i}mcy#>OyD|~V*L?Q4sPxsS*9rP&YT4Av8>2#1(9SQLCS64eucJ?R> znCpO5SLmteHCrZ8`ip5oPg0D6XV~kT?_?*6uITGjwEKiNEK6E~7q!SG!X)HU(+g&= z-t9zw`_ND*&vb*p6(ALGcvQD_cI&_>xV%b5cEp+w2;CMIJxpkTl+gL%V6cYjO_<0& z3?o!aIo)86AzdX~8YB}1LGCn3Fv$GH3*@Oxp!z*{fCwll*RRlychCt_o zaxF{o0Ad>fzA*=Bq`snvKI#`w*@vOLl&+YEK9_I$G!)9wmL*vC$u~xyG425uHg2gKSt-m z?Y@t^cg8~B$sasVuS=wWHJxuie!Vc{t4D#3TV?KCYy`pl1NlM50Koh4PlxEwO7Vs$ zfY|i7phB+jrgOvvwxz=i-YmbIMf3M`tMRtXeAk__!8{?iSGPvH%Nc!L?(pFysM`$FIg6Y^)c zI$RuB9Dx6cb1{Sqqvr5p4V?Y29Kjb8!p{(}emB_j64(nitSaGmy1<`SYRAbPqu}`U zarUoe3_RUsm#;=RUE`kz{4+F2P94luUlBvG0C(V!Ln>0g3XDGJZx6L@qj&FQ^#T)* z8ZH3%7HWjjIif4@k0119t=aP5cRu6#2ePn#U3zyBu3voEUofIbpU+0))qJNn5Ny{y z2iHR^mWYa|bpM3p6R2R`#D3&?VYQX-!4Ys%s?lwwy{lV4!d>^736Nd9VTBv~u9#e> zyWE2da*xDBz(WPBgv}(9j9+n&?u6Wx0}>2txmpsG@2-le63V3p$NObZb2reV7^%{w z-haF30U^lKnyu@-AUhq|eQ+4;|i+`#r1E`=6*U1tm!VO2MVnYBp zx#Y_@2lo2rmlKGu3reUDEWNz1&wBv;CI{TuK@wgEhW@bR5dWQRwHhLql#PNkr9q)Dc|E7 zo+?5H%~Ziwj&v;*2~cWfq!?L!2xL{qo2HbX5Y%AcAODJU?_I*cconNx@~l3?dn9%2wKXcy zB*P7iwn(*vofN!h)abs7U~5o)VIMBNPk>CZw*w`_unj%Jyyr-=)fh;}x)(cWsv6)x z4wB#tgPn|bZ#xzBH+i z9HC$8N4$C+JAO>Qxh(iKH6nNKYKHW6)zOl8B?$XVz9Vn3P~}sB0z;xA|9_V0y;_xf zb?6}s0>(kA_Ug7_Ec1Z^Y-?n=KAc^R9w))!z492K$aoE!*-O$?gIg{mSa`W=YuV4- z?`sx77+*LHb62jGpRBjiWrGlEEyy$P$HY_RYk@+@;E;%Nj9pz&u&*5Qm9goMyhWw_ z!w+m=l)@sq-kg$LE6a+_f|`h~sk$}q`jD>Y5$tTsw z-R~}Vw$I3-hnx!m$ufE%BNa!np@cEV>F!B|3DgsOwmDN)OlSy%ET za6O==T4(#qOVxUNm5g!nK-NCBX*+)dBxYJha zB;vZ6OwHnMzO_v8%XR+1p9D>ZidK|wzJZf z)wu^kXkT^oqH2}K8afUP-<)|R)7_o<$rK2n58fzarTYCgebL~3y; ztOmZQBwbNmg$D^x`lXgRQE9CzUk~_v`~Vx`2o>_Gm(u=K+*%LKexl}p{8xg7fn0rg zGaO=jTIP)`quSn1PT0}!jzzykJcw>^qR^?Q(DIC*=`lGE%hUE2ZH4*V^% zHDuPnQTN;5r#uX)MoZu72>Y#WD(%&BGbsL1*a|>M|2K?xIlb!8=ql5e5ZqStrgNjE zZX`Ri-4qg8Ag^HA@!*%b!|#r+4`@?4q0rOKRc{{G2Km6MQLv?sqrr_&Vy;edCU@W7 z+j`T!{U+G9{+fA|K@R}-f4Dl+cqsqy-_LGrW5zo6U1J~nShI|=3)!+Yc3CpAmeOn( zvWFU&`U}jqWm#@Q%a>(hr0(0i<;y6GdjK5# z=IS&jbSkTpI1jGj1Q>FZcj#>t424vldEOTZ>VNCWh@#e+nFlufmUB94cVFmM4SIm2 z4L&R{Vl9*)`@-WSS&deOt}_2{0D5l9@Xr>LIRU36kJ_*bj)Jod54LkX?m!Bjw%PrP zSTvE+M1SF6HpPwl=Ktykv`REX+@$fU+7&>SE3a{WW&9FSEl*9!!79S` zl2(zF4f}HThK;_*q3VT;fZKmrIQ=mEpy!;@%KT@%$~#YwYs^2mrXHiUu)C`Ar2?Jz zC(Zqspf0u2=5Ne5+an|rF{ZdGrM~J|v(C}(+g(a|&*LXKFJicWl4P1lFe$7EV3-Eb zwD(%A%QaaK@7IdZQ!}N?3!qz(pm#&{Ptl&TyjNvgy3lCzS+!MFP#^a0+L(i>jOFT^ zSA!C4$>@^+P^0(zL?E(addfw?Z;LfHDekfN+mq)7_`+i)rz-}dw58I)&JS`ljs zfO~U)bdu;5cTG1Jd?9*;)a!wv>vrIeFA0WGFIth8l!XNo*jiy0;=TUg| zVY!T#aPzg8|XiK=`Jtc8h_T_KCVF60S|LOY-{=22G4ywG)zYbU2QT zLK)2y23V}2rq3$%yVnd-0X21Q2E&z!Rza^fL~3S}ud@2>b|jsnC%bc$?Q-q7wWaS?%u*db_=_yOcx8lbxr|$9AS#F6-aKJ?@8_RlV za2^G(;l}d5RJKK{l5IrAzzwuU=)!PQ)t+ee-gSl`t;$uR{nhqwyR%QiK8%;fdEdv=5Lyz?uA1L6 z?aR|S^EATd`{#EZk>?Mu{cZgAE}QG|>F%V0{cl5JHhy!rmdHQ((08d@i|-_oU~01; zt|K;25tH!c!FR7J3C=D%@WtU)DEybUiC4Kp6a1)9SfC_LR4imQ`8#F!Lp*M?X8M>a zon%>=^2O0z(p0e5!WXX&+c{518@cDuO{o~M%rn}*By&Eh{qnncx^Vb>x|h(-y>usq zVwqek{hBNz1sBo*}!s7Ax8Mafj6T{*HX9@9^MxK z)mA-ys?z?5p%G+LUq9H6*{|Nb^8R5*{gon>=ZuC#>Bgh)>>)Q~3bs{WfNr@Q95dmk z9%0=9s(S~0NDHOIeq5}-r7p7qND%14Kt=`&Ie0T=_8h{$j9?xHrYW)&Xs{q`*Fm{# ziNptgfT$j!2}&7?#bD{UjZywTzk0)Jnmr=jcT3m3*0Yc8lN>ip9hX^NsOV za^hVKE=}qLx=)aKUa#j{iEJTTY)?T3s3~T5u+ftk6P8a;fN$0hGc6K$3@3CyjFqvQ zg#gx&GPy`zPV`Ine2b-&TUQ-ET=%U1wP_Uy=1_dVar4zVcf}Z(gj!P{jjeXsi7>Ad z3r<;u)N)%aMC(8ZL;TmIGle`YZ?>sxgoANN7FN+SlPwzk2__joCp(Tc&#af*zK5eC z4Yn5IU)!4c3wrn8`p=Ip|aZkxNWMLMmZ71;$(!JWPOb2oZsQ1trM*mMLs- zB-`ciKGvUo$s2KMDL+{u2=8Iv{q_4NgQpcCSSvwvkPK@TBns$`tti8KGc<<7B`?qR z8q3|%xd6utdKUHYKl?!!#F%kvlu>~(CdpW_aX`XZI)6PTXOt6i!(-ttko$S-AnGK< zdN6407nO1WOJ}?6E++ImC-sy=Pr5UQkZ{+~Frfl+_0chr@V=-#{j5yA;sd6M3f-6f zNLd>8yl9ZGWHUpu|D-c$yl9fJ47sojLV+Z`1QUpD(K6D43<)yiT2F8A#2DaGBiV#_ zQqamT2YzrMVu%h4u>~u7IDJBYGEVL{F zb0KVsj7;4P?H9Vj3zr$uLHdT+96_;VDi5sy_RAH(FYx!CoXfV9;T|xwi79Pe$N`d|ieADEY0r#i z!CEE&h3@A+U3@;YAP5SEM6DXf1?L2YYe_<`t#On|;%Lt@6N>Lp%q*HLyI(QWDH>!U z=+>ax`0^8tVG&W`OK&JKmFy>qCS56(v&G}Y%b~Nvhq&FTRUrWnUf_A9@s+G{`{cZ_ zgZ!8WHj5um=NOS6F_`3>_dF=RL|WjJ{l%YEnHRCae(-t5AhN|X1060U z^uT>Efu*M+I$x4+WSe*|kd+pR{UOMo;I01qkujb)C9v;M%7)8jQ)y|WvOZ^OODHc} zJ%1~Jif7?UIN-3?G)5c}SyXRQ!s9i8uIhXLPJGxZjBZB55O}C+_@IGF9C$7x5S`bQVHLxdb}`Ol&&6E$h+NFKL_>y9p+?ru5$&Uj&SeJ z-nwT{_!7k;UIIkS$EGS&EYsBBUQ(9_U+ZGGdz?9RZ-Ewck0J2rcv3IffSFL)Mtr7V z2^QnZDA%`C*#UW$v2li&-n&)~VkfPjT!^WfkRqS7&PJeb{V%yy2Sj=!nA@KWUd}|Y z#^aaEE^HGX>AflC0^#rPEeIL^03&J!(* z)igAkNk8FEEn-oVjjUQ*DP%N*ieuvJ)hbWRgAF5#i{-s!^V~ zu${S#$@;R50tsfa6(gnIVA&}u1s0cIzqw&cf<8xb_54A2=#;4wXED4Am`&7~#1zk|CU1 z6uwi42D0FgV6_|wIG0^N4b_hXLs3uy5?o0u@Qx}}{fRn1f~@^jFo^_r`Xfup(Ct3` z5F%@E4kQ-I=?{SV1MmaHTw)F+y3FE4Nk}*_vO3G**vP(Ld1jCmN+YW+V_9sG&=hj` zJ2F&_32{Jj{&i)q(qTEAVqJx^%vy>~lJ2-Iv+YmZ+*k%5oGTt@BGyMBo9B>B0L+X8 zO={(EK!P0r&|7p^4Fp<8x^)Ktt9~AIz4)$G<6Vea5kwCHt2_D35I5q@5E9$T>Y>>9 zUX>0k36k9*aVP2^^ZL1xV*;Smjuk<{LS}G!zuN94g#akJMKAz|dk)0gn8UOHW(0s{ zkPti`<$@me%~t24TUeu!P{)JY(avQop`1}fh%Eqqix)pXQo1AvUfuz(p0nS$d>6J{ zhWvQYji4z277E_LlDf6w0{XvPy<#8#%Cd=)&+?m89FH@8?QC2;N8k}3I6(BtQr6vVA`R$`8rKUrgusPl7}JC>BXZe_G=jT$F|pED6B zl;ks*TT4uCcLz2elSlK+%cNz5-VS0-!7ok&g}eP2x=pBs5FvLOIhH0k zX-Lj32bO(!HWh$)UZ8b7?a}DyBZwM{e-7tP4*TLk!=c_|Qgr23KL>6?ZHNe&D{D*v zAeJ52WoeC|sHz9I>mG*cgpi@@m275ZHAW8`QymbCC$nT(<};Pur_L`6T|4TJ z170=+>pvPu&j-g>3`_Xa|q?Ct7pmQ4LIp zh^b$=RSZBFtT@2oKz4U@;1E@RIx}C$y}~jd*deF`IZT0(NH@0hP!CAZ6FcQzSr?Ba zy!)ZA+cM&N`s3dUs7(y&DHAf%L0RYs`X1G&eU9DA)BYR{R!6^QL0g?VIH}Y9o z`wVRR{>rsOd|M%hHBz+5EhNjUP=NkN4yUx{WfGJ$Rs1&wnj(SB53PkUA4R2uSuVF5 zqU2R7+Sx&h0I)0v <41%dN5fHm+bIbo8b@NGfap&gHNcKi#=$(ZTbPZ?hGT6|%XWh|yTmn_wIqLO9 zjAVQo)KnLq_*fzL@fPaEeq+zKT|@)NOQX=nqwOc9%a=<^ypN+H=RhVLW^`z-7qj#n zLa%tFbqrr%jqET$c5^&|Az2)lBf&Y3?;u^ED?Jtp!(hkZsWB#fcR-ufCHXyb`eXl% zk&c>2qa`ITLAhg18GS8E$ma$Vih+Q&g_pSo{Se<*eu5(wN=V_oiO#F|+=bp;dE|p| z0Q;-aTUU{;21xfKXB-LY27taQ8JwEXet?DjPSeN>1*9%#!I16X6)@jrC}Cpa(jHH< zpQ7ZUY=W(_*J^=cMFHC+l$e9?qo@UViAOK9q$(lPN+_AOT|)d&t_)b%CcNwh^0T6xj|n1Pz~f>2p)<{Wbi&ob_0>s_8Q#f2#apAQJ$D1wuJ2v24^VmBjX(aO+^1d>%MtQQB6M83N zQt1Lfuyg@No)?Q4ec`OEUk`si3*(#}AR!(@+7c$+wH8Fu+KC`f$d;aJb;(DI`=M3_IhF2yvKk@2Oe2Gn1J%`A)<4%s)JSmcUE@~ z8#cAv+orQ$>Y{Kb`iZr?FrBKwc|)h)@Q_z=M9e-AfE&^!`iYl6Kkc@Fo=J$GWR zj)|DTTL0&s4Rct5WUQdC!WNl`hGh<1!>ggkG`Bywzdi~tb6T+ z?a6uBn6T3q{JRrje^EHnnodX53Nm5QIjr0&yc@)mD|cWy>`m#=$FAb3Iiph&tCv0@l0SjnjAOSX zS>2FOf3ow|Z>tL*!HMn%EU&qfKBn%yUjsMwsI4LTZP&kTBiLRah|8n?xT8c=HQpgv z%&?HCWeeAfoZeWNpaHYGg*7X&^!&cXx1`V33dp62Pbz;i1L4{rS+?xYm-8H}C`pM&2xW=<&VYhv+_SjEL19#j$`*dIXd;i)W zw*z8tGN(A9#Qo53@G4j*MdaL?SH6-mK2wsS_<=JbgxIyW1#-V>QL z2Bl_j_k(Y>sCTQ#+U5;X4Ky7_6tWGbIz=R9P<=lbU*A}xJr@paH0R9nI%v(|PX=@{ zy_y^fAd8p!VVB1aEal3pq72L**nZVx=j)7_WRuOzo76XX6!S*Se394U)Rson|-Mk?4mK#SmZT)lqAE<}1jeQ=|qtI$)Wy!!F*H-~EOcg~0F+@o=l5z}5QBO-47 zy7eynuGqEMiz89sF}K-sfAiltl5ck2@{L`DKAjEyli9iu_-8D}HyW7L=*QVHT{IGY zhM*f*25`aHrmy1X0wY*m+k)<>Qhx=N#&6C|YoeFrFTY0VbvU2NOB-?5+HgQ~g} zeqRt?MvG2~O{;dip`)=g>HVf7Yon}sk2sFy8dzEVd&dHYsASD6C!K-bS zxq>l{1e7_9>M7+N^0K0n(!0t$zkO*93Jm(qxBu@yWQgt+$I@4IN!gfWXrvv!E z_EX5|R}x&L=v5wGlVo89e^@1;mnTLNY5tSMK1%f2eD*+B&Z#Hu(feK=PO{!H*d2Al zgO{O6ut?r1f1MTIUpX;7#1_<;C0K`pe%8FiX7UqAUP4;x7COH8^NS+5N5(5dnlrit z{RALKi)Qu|nisqep6W^9xTuz?i0cK6qfI$TSjegSytZOYxOf} zU@_bi1SDQAqw-bz4j7!wea|4_U&|=?)+RGf=V6-E^u*xSNYs_t-KB3cJNWqCDS+id z%J(m=4k_BsrzV?Ibc~uU!pQWK^c}2S^COC+ktu8WYz3&BuwHmTVv%w_K=~&H z)R=d@QqQ<8@6B<@I{I_?+q2&&;VbLHum2nVuZ-fFLzOP+m7uL( z^u~SCV~rewZ*)zcA~l*AM2Lq%OtxjJ={A`~%EQ(?7H8<@s{PbOow|V5H$qZ`Tv!|jbclj}QadZ|r zM;fv|{f3?3u8oMYY|w{HCLiNON509*OTUN(w3cRo*O{7V>!o$u!6x`<&v8TWm#jncB>Y!L>`$u!PtHBlah^< ztiR(Y6@5ZX1z%SPL1%t4d!LjRxi(+AX*wV=cPt&@-Kn30xfD+*ZMt~5Ut1Od&7$^%Hp}aRcgQ`V5=WN{(8~6k(ypbr1Vr!h~xn(9wg803|^I zh%sJWY=u1@&2@S7M(SgV@}4Zu^Wx%psua`0{K@9qn!VXx{svagnt2DoN$F_qST(lx ztf}<$?Z@BmV%*}!quD{OyU6Et%T4W$iA3{7Oz-pMqz4_(FHb-<)#F1f-4<2_h7ty~ zx}#oM3r+2Iw4|A+%nKy03w`|$TxaI(PYPcR9cT1MJX~Zo!Bd-y6)Z%ql3+NAccOI+ zD%W6HST_3C>8)8Xt8Wflja2rfL=p?jvHYpj-b+-vL76uEl#WZ4V(E@}uCI!Eb;hJ_ z?xO3FufgU+-QIRH2Hu$-C$2yAM`$LMy+N^S=P>Bh`0@?05igYPDRnh~YjeGUG@NRa ar*bG!L@On+>Q$@UG6`{+MXA2 zVs`>hC(gfH`kp1nioFz(^R_vw0+D$~&khv4Eb!sy(7iN8_Z~CKk=VcklK7W<-#N`i zp2)nZ>Hhlk#kKt~{I9X&F5tND&i<_rM_U%Bf5*PapwLhM{hWIJXd}`h5_4T(3;>g; zJbnG&j}OPkkwRe(-QS{;|ALudJQL!4Y|N+25=MlD5xb#EJgmF|Y%NT7O`{6=Tv`nc z?NE&wh7>=!S$2+Lp;nwWoPu5!&ZvP(lhQ8fGMtFii^hyg461bzgGYol2n`}mFg(a0 zIpeB|WfSpExaP1-TBC``7(8-9*Txubg9g)zXc`U-sc8ld3!wq%CwMwV3>0kH!

QE%!aScFPNhzjq8yh+;KsLyX%cHZy)c17(mN>k`F zA*%VqQKLVDrn^59UoQYe#6w z-t_dya&U$^<(1cgzl;j%NcDr()uY7isgzf!wWzkgpNuG5^OW7qy0)d?FDSd)6iTL+ z8;7@M{%>CIv&<|cgpG`_v?FX-6vL)B!;Bl-Cc;ei=34T`7I^d3yK`+KJevroqmS2B zpZ)djM`wHl=zX~peHk{Nh%6xoxP4E!`f~RBG9$i1t}fCuh|X_cr9`jO3jUhf{)nr; zcA~%T44#VHj;8+r=^V%JcILZUZWsj=h8vZW;LJgCV-rGM<3{Zx2V5x#xIrJ-bQRV1 z8`(z;^nDU|Qz7swccA&E_dU_T+uA{1`2j9V0e3gOIX8o%5}slz5W9X)p?jWQR|EBC zf|Dp$pXy$Fy7nnJ?pjE~QSW}NgV8nK(%Kiv)V$fUq;G3=ydxLH({b4JK z0ZlV*zSEIS`@{2H!$)U=b8uAJ3L)-mG&)!PY4HU5Bm!fh7fCdtLio};j`{A6Sf2p8^1f>z`~?yyfYZl>H(0u2#-pCe=UM{(N3ME6BSbqI2aE za&X`or#fSfqf5h5v;+@+SQ{TpkC%0QmS|1Aj1Wrq)9tDg_+mf6UZIWZGP#$EuUKpQDH$L~kn3VkQ`DmI;ZwWE8t@=7|t`W|OBoIOYT$ zY&DYdvo3aH40FvA^-#=N!{)K<9L9*4wK|5u>3UJigcy-9l-TV3p}53^oRuW!TCP+< z^~^vqFD^@J#VyYWv5cJxR4N^Mm&m|Mq_UVxIpdabchKLkKBJ@(TM)Q!S)C=v*ozUH z=A-_Mk$|vb>2kcY)R&PiOFq$}1g|-as4feux5W;LF?Ik&piE&1Yc#+1qq^EL8$^a( zb<9mSzFlmdy%fdUU8e!lkBcF8&Vm~9v2t#r^yX#;+ z!JGb1AGa%Gv1CU+)m%YTsMp>N|GPX^4(r9SjJb*T;$Y1DKAo7T6HA+v8NZBTT`PXd zlf(3$y3wv=49+*r2SxDVffJ-RO^%9@BxPSeS!da6VCWP_?}D37%v zs?H`R+oY)5;@L=v``gP?Y*7(9EN5*|$WTSnKzYVoqM1qhPaAxHa<}H(G8d+!>=r$;sNeR}(uQus49l0$H;jNz$WgArZ z&3JW&1ncBjS|0oal5Fe7v%iDgKnX9`MCWaT-3qPRDXLWuO)^VPjJ}>8UsrxcqOyE2 zb+;YGg*?Y9XFZR0mdLE^!Ka2YREbJtqfz)XE7kGxSm&lHQN7BDI(YFE9Q@Cmiylm1Ao zQfj5qmnm*yHbF)mI7}6ZuOah=9`hji%A)j+sv6)JG3K;T z1+j7IopIa_o;70p1jYQNoD{pb!H{HWw9KoQYCA98^~dE^Cp66`IHO-4Y#CE;nb3F0 zJMJ)HEHHUKVxn80@mO-KLP)Hx0shDQL~=rUwm#lTow%sOGGRHIH9Z-dPqj=MWGJBzHc^(t!UYtM~%#G*GLRWTjm}L^Isdw53D4$vv@TAx$nUbi4`2oQLd@0I<^>IOU zJL-fTbt3ID>g-(NZbi#^lLJfwZD_Y*L0m_yX|7~+4tq%UMLXh#a2)%5=2iZM=&P@l zhilYrQ)5!Qq$)f4h;PvNy?X(}27}E8ThgNvR1$$?|ZIUA@UWt}qo5ZQq7 z%?^^_`Zr&Dt1WH+tBJG^y6J6GBSbP&9Ags;k4o1%5_cl(HLcIchEuWhP+y4ofdrEb zK_Wv{s&lsvORzd-UJsu`WQb>+iI$&QE@Y6Ju}pT(s9H0r8&!O(|nbP z7My=>v$%T2_HFFZ1ow)sg%Sxx%^iP3n*;dqn{F#y#TC(l`FHPsIi!mZ5zC`af3EZU z3*pIEyh+`(GG0VtSmf`g2h2GoyOkbcqpUb=@Mw>q_ct}WLdV&!(|pTGK_7Zv|B(L1 zcFEymBjrf_uThD+K}lQ>2K-ioS5>iGZw4A~yjvZ68y!>^rHcP#*t2X?J;Bq}%|ll$ z{VZNSLvAJgpbECgzM8Ieu%a2oX^7RZud^+FYv_i(_a&G8Zjp~&VSmcHjLP@#Ofw&^ zCt(+!&oSYbnBVZ-#}+L-KYHxDPw|gLiPd8kn}Hc@ms&d1@vlatqebkR``ibktqa|e zKOTDPD^D9ML-9ur;Q7}Eb5>WIQkrQ-*oQ`Qzr0RRCv_4iKV!72PHS~atgf;WzQ#^} zD{1X-NO3NbScrS@hh%m@z@*|v`3e_d{WH%mv#0A5D|IeLJ#u`TG{tF4t3QiX-Zn-K zj2q4UrnqmurtGlzOa$p-ZzN|&VAAuHsG@iW1XruAbTOpDcPG*-b^2ew_=+*jaOPY4 zW`q#j5p35vmG4?FIyL<1-fyOy%*r^$%5b=7O>2af;79m-`O?w@K0*+mq!V zg~6&f^ojE&R+GF_Z?0uMrO>MJJu?}KNILmoabfnSH7WCK)DiQ!b(@L8%jI`p&289C zNfo9!Qyd)+1qE?`xo?cGSUq=v@9v#QKjZi3{OCBY-hFL$q%R$t-8*S7{H52E`-Ph1 z62|rp@u8IF13O{qCz)L8R=?Xl-d|t}mYqLb?{jyV>1fG<7a8x=G_}=MBW;bP84f8gF}+JY zvs8t-S^fPS|Dy>fEkXD7?|q!#Vxt>aF3k|-79YnHv3bc2Yi4R|vxh?`e=ocYu6=C&c;4l=&Vx74p4@N?;@ofU@pJOY z8|}%`-xl7~T=lPA>Et$v?td=3-VEe3tQ+?`6z^&kD)GF&!Czp?^;YDcjo%krrPKHK zej5$-Yv(Dr}i3*e@xw|Cm=DEYjfP*T*N^x#k^+r@n5I@vyZlge2en>zxk`%h77O> zNq&{2&x{mT$>?1UQa3Pj%Nmau=Nryf6<0P_Oi)?SmSM8LXVda*;(J0|(AL-kY2sF; z1}>1js^!3@VI#Bf!Y`8989ME6)+GU*ej+0+!VI2{CA6Fjn^je@3`a8bO}I%n*eh)XoV!NgwO8}B#_ zJnmm&J^hwiCm@mLad(K;pDfl>)2Apm&v`$}$$n3N55=k`BW`okQUfP@Ld3yRb(mp6 z;~jfY`tV)h9-k1F&FAc)%$QJ-Zb za;nrZNxrJx$C)qb5*uvM%PHGh-!H8$$r_)&gzUGadcw7a9AWG1i|mh)cBvHN&)sNK zI(IQy&~N7Y5~Y`Ik)L3SwSBFlT{m3N9wR>ytY^xaG^h~nbSOT2(ED8#=bw#Una?`? zJ|)>a{iIw;HsQmaa>o@yxX=4{X|T&;sD{qQd^|R9v-nmLiDOwB_np?ko?hSVp8Ot^ zMr&~Iy5yX(wIEaSOA#BLJ{PUm1&;PQ{x?iw98R^#!fYLP&1kQt%<cZ!bqw&P=1W)KOBnL$DHX+lDl zzc6d`==DY`Hp&v!)05NEA>FpNc4;E{uZ=@tgmqRS*^`kBe}a} zF{p6!v*LX%cds_ZG`?5maF5xS6p+QVQEYL0#b9;K@z9*i;JH9+&0m)SU!w2zPYV;_8aH}8LG=`@e6(e+8O0k&uT8gyw< z*ROC28|xZ)KBy_nUu!hy%%3^=Y9}r(_2S_q&aXkH5AR8KaEe}1qEk~GWlv$3^;Of@ z=M$ndm6m=owoi)G}!bee9eo_4ISFhRJw}oLH{Rj*W59oJsPcb7A&poAdc5lg06Dg$6sz zNLKP>b>2piIg6dyJlkmPqD#5W(-kwiChMwSE|n2GOQ)GkXPrfURi^FON2A*IzOljiNw#tSQVf4kV-zVEtH()7`8?^&dP#KS(* zH?1)vXz}Cx)Nf45#nh+tT7N%vY`xI+=Gl4q4uP+ZeuvE7g)jf^lJay4KkWXFPyT9; z%&rpwbM`&|QGCTj?HVE9gUogeKVWsBc(=k7luUTi*~ z_z6GO^X2CgI`hxPI$IS~_niy)QUnbw+$Qy2V$K++9p8NwIM}@FQW0dndh4kB?1<;% zntbywcGm9muXZ2T_nCivl&}1%t}>#~?$xsUZ{{g#Dn$4Xnt=|XAd-7;ZjnwZUnFSn zb3z)YfRmP$k(QE`-aGySEGQ@_ z$n9wbbv3oqr_}ez!YMudQ+k*GAs6)iAs37djPwl8pEJIwcj1!pC6j;p1(U1SE?hUi ze*J2sNx&Xna5H=CXYLto9(?77m6e61r(m6z$inFaSdE@5|rOs#FgZ9;C@IqW%w zB>QMbhx;}UoDCn||2La(U-Qw!8;@M99zC{tgolO-G*qCW0u2>ts6ayn8Y<9Gfrbh+ zRG^^}a4Ef#iMPOVKkR5G@7GN^QkKXnjRat4z) zLPbP=Lqmn0R9q5Tgl$Klp^~k%XAZ@yoKkA_?8-uosdShM>4h?Gs?#`_)_KooOEXnN zL#0E}1XY7;mQ$kdBv75;#jurBF7u(zlQGpP*~?*FY-_C3mPPx?m{ww&zFGDjonRRc zLsGG!GQ85~tD&L7>_^57laZr17EfPpIs(-wXqe7C%jm zF(!pX$L)xmGQ%u;ux3F+1sW>QP=SUDG*qCW0u7aH?;%ynt^FRxfej0>Z;fv3DBfC* zRwx*5k^1~@WZ-dwfEbM|G*qCW0u7Y`<)M2w4;k+l?x|85u(NP*H=P%+lFCqoh6*%P zprHZ{6=+k31m*5xY6BrU47#I>1d?7f% zB{(!JINItzIw+UJLu|t%(<0IuBdT+wv+QHy_VOncF{RqE5n-{<_6jKeafy-fiLnVu ziHY&qNjWCT@t(;kVae%n$tfMlO?xSn^0cz}bYfCQwj(h;Ehm33e^QW}7nGMnC@drv z7F!qPwG_4PRZkw4mb@#S*-M_}mseMomj_f z77P*?Brr%|kiZ~;K>~vW1_=xj7$h)A7&lSOPaNil5XOBbXfH-XR%i8a6|k}n{)y$g zzCrVblF2GHW%bb*^BKola0T-b`{Xsr3Jema@N#J zD;udp+O{o>k0zLnM%K9VI3pM&MXt^@#!#U_GV`doBwdz0lC?k+Dn$3)9ZB&P3f5<$ zGiD6<+cBR)bwilph7-a~>ia~ZJC7ZGyNbLS0)u4Jc4VQM4TqK9>Y6E@(`@NFVcS;Y zjlzjDWUKZojLafNRM7o z$fGiazt#ffjw#15>o1A?dfR7rBu>LIk?w>Ssq-k~?GP|XV35EdSy*ST{&?OX@n^ZA zVm1Cl$(WnX5doGrvS5(FAb~*wg9HW%3=(vZz#xG^0)qqw2@Db#Brr%|kiZ~;K>~vW z2B|ijG#2jJd3x%6grx@82$luM5PR!;%ovH;>SnAAWq^6im__D#?1*LTD2}Vcm~pb5 zS%U`*5^iq}3Sr+HMZ==lgpdt<#-D}^G#16)4h9Jfl5A0~fL#T9N`;Dht+aS0n^1)% z6Bs0Sq)8WbORr-943ZKV6WWd(CS&~9vZk>ZgTKQv$z@lVd&Znt#~fLi-tM~$28nI0 z=L{CLtW1@~+(nr0+8f;2U({NPLq89nVXv5BtB4H!g6XuMVIyPam9r1~wB`ja}&lQyB4Hg!F12A@_+VyqEj z&N?6SAcWtEGN4>F7S^ebP`4w@>Ihm0#jcLfv?FX_kg&4p=V&5_NsR158C1#0RuWRc ziz+HgF9m}H1_>D@G|7?}{jk}i^OcGwm}&K9b}&fGO+6dND22IvFi2C50@Dv8xB_K* zX8AcR#u$(M?Xly}KD5>{GvB4@Fy#AX9~h+fvTE;7+;}e+$wpSqJ|r}EOlfS|81|2RE5>Q4;@2@Db#qyVN` z%W-%9Wvts*o9glG{SS_Ms+rzavI2ty1_=xj7$h)AV35Edfk6U;1O^EV5*Q>fNMMk_ zAb~*wg9HW%3{nO?7PZ-s&p(K;7Uijc{qbpH}U8@@BuC5EnY5G|$UqW#AJ0tSh`T!`6rcIy5P7$j2X$*qnVyP{uqt#8w^52&Db5hffXQ+nE~*&W7w z7j~Q=7$gI%WhCm3el`ad^JOhdTpHDO;}x4R3f=McMCgc3>-$#RO6cqEaKq1=>EE_m zzx}fNMMk_AkFGogf?-B#@;>=-^CC+ zS$La!@ddE zUwE^0?bM$*i$C!ctcgWo<<7$C)wz`N>A>V32@85--`^%#&T=5v|n{v`QU(W~W#-{K8A9;N>?SJv-aZhFu~5*T5hFg9Hpx zC(0T3t_PPs*2z!ArT)Qfvt7&()5$su3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~40fPh# z5->=>AOV8}3=%L%z#ui#t9M5@_W3vzy*R0a%)Y&>R13Zy7MAEKQ>Ve;+VAH`XCU_p znTrwim%E^l$t;2?Y#kURb|=VF8UD+nHcu3$$n2anB^IDsWox+~0)qq$(kSU%Cw!77 z{bNjChmq&YC`o510E2XaulY*^$8!l7Fi2%wgd8!+9wFwKXBW)s5fT04t9J}hX!ZAQ z!4`IOG*FfZ43a!j|LvtmxqK(t7w+auC0=(sjkmZ_^q|6Fc64aze%WKpE7ZcB?;S34 z?is4O_nvXQK6+#O?vk^?gLsE)UBDn=1Nd%45-8~7t_7F?YNSPcKv1V%tR1!}Pw}Ye z^e2Ly))PJcR{L5qfkN86na$l9gzYM%x8Q(50tN{fBw&z$K>`K|7^H^^C^N|tZtdDy zs?BGip0C=?hk6?S?@o0b6*!CJ2Bw&z$L9z_i8|)iW6<)Rvje&#(O!c?y z^?&>5Zv%q_3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~40fPh#5->=>AOV8}3=%L%m}Uzu zcoU4D*|zVYq`3B{)a)ZLJ(s}|gDAmn%j0|sY^^3u>gS-C#g#6>`a{jRvM)>(Pm#`vAn1a$j zZA>n-{LPoE_|(-LzaBv|OCcUEH3yxIc061O^EhBw&z$K>`K| z7$jhjfI$KV2^b_`kbpq~1_>A>V32@80tN{fBw&zK5x)KHJr;ewjwZfpePZH$4Xib? z)KAQuh$O#9kj{Txg&Sm;r9=8v{ttG!o!fk9$og!^l@mKZDIu-tAKA}f>Y zad$Rv^RY-^kbpsQi=I?bX45OlJPvKig*RJV-I7HDgH&O}uN5tYTUP@H=~!*7>)qDO zt7alk8n(4aen|m~53mYt^CHbT=>H1l@?C;}LHc?XUW97iF(Va8$R84mK8$*KMo8^I zV%_yUF(_d}VO>F4f`pc@aXGt@;STqUn*9`v*X25HxGArq0}n!Vru z%4?N){h3X}3>Iy5&DpGbzwPqKk8syTfzEW~fYOYAiQ~sJ=>AOV8}3=%L%z##ovW$dff_oI4q9D4`HBoDD*P3mIAXH1MU^8+XUaLM!GH_yAb z&h&g=YKXo?LSAK)5l^eCqX7$n_+C_*ca^t0)k)o=YY@+yZb&91ognSJ8{28nhO7qA_5!c_N(6ExFK`80L&oq8OqXQ<-s z71^u*jojpbq_`eLTfFGehH<93@S?G~*WRvoN-P0`1Pl@|NWdTgg9Ho`Fi3w8y{B(| zN9mg6>&-;o8a37vU$<*vh@{%mpT4~R4TJPvTs%|aC_&;3QQ}ypP)co=}_rYVbU_er%(N(gVWU2yLRigw*H+Px9{lQHPkbDU~u2$ zj)_^UNl1vPzqgsA??dmvhp%GI!|p$NeDCqofXBW;kNsagarS=dWn%fSg{77Izb+50 zY(kzzgxPvT*@mXt#ah}sJbU4M)6rhj`MIsL+uv!U$1d*iF40$9U9Y)1J#_Va;_7MV z>Y?N2e9_&-)!hs49+Ko9f7Zjzz{4fcBl?A>my4GV&iiGgcZ{2_-@R9!9ZPBbzW*yb|2Kqy9IwEj#K8E>!1UWe0sg_Ez9C_*q2aNi36|j@cO%{eMnvUB z5UnC34WmLsqVVZa>9tYics%}1Tp}f|SUWz-EbU zW=d{EDj^{?y)?bVF5|5;A)|%Rkd~eECNDcGFDE0fz?GC0P0EiWkunNP-W5@@i;AX- zhiyuTP9;SJC8c?#6jCXrwzQsJO7wMPmaMj3g-w0!8WNT=YF~S%d z9H0C-&SZ^GexF!mO^lCxo1FYMRmJ?)%l!74ImTj+4NgukO)afV&5cdZPR-18&CX8G zE{uJjubZ21o|_w-n`h0*voO%j;t+ zYcngWzgKoyD{HLPmHoB#&+BVH)>k&xS9aI;#(({q`Sol0{~bH4zkY4}+L_zhncn{W zV|#03duMECYi4KX$IkBf?#`FJJr;`vK@frkHED0$C?hllA`Zxyb(Fnt3E?}glcr71 z`Vb*}(RQqZOl*&l)C?EHQL=II1Mp*M?UbDEx7ep$X}I#--c&`G#j(!vypNe`fk<&3 zYW^ppcD&5PE~<^LmjO{HUFXHAp~8F5CB&>9B@}I%o5RI*D~m?Ttv{0@-%U){GgJj+wsSBGxTaGv)#!T?MlR6$Tb9Q zWXVnF)lwHe=ie~( zOgdNkZYVq|e<}joCOsY5OrDR4kpG@P9j&Th{K!9bB-A2C>!8g{Y~fHyN|fTUg_(GR z>tP9TdEA|Z1Y@g$oJg+qgz=N9jyDK?$`5L0-&yB&K34ryeGGYS+=olbZ_R$7(_Mb& zqW+aa!=r(`mmwKzg8#l}i^RI+y}SNaq=k7R{_3HRr_&8bJI}A;anEvGx(1_A7smJ& zd9#y{i~0VQM?c<-TzBus$F{L#mWm2HpW5W4rA?t6$TrA$x3s<+ zm37WPPRn&L@8oe#jYt;{TNM^tu8oaypGq7M;LWIy<1w##nPNKO)|$kRxwaeJd)4(W1B(B_ zyU)wNxPDFl-t;ge@^sUn1PfKEs?QL>j4mG>+x&d;k!sa==2z>9N*C=@$bbJfPjRL3{tMrbCZ2Ddr%NMbsZHgY&2>NPr!uO?1|OB~ z?_#XZ*Ig_Wd9CEp)!x#v-51!mI3H2I!eaF~W#-Uli|VP^AG&KB)hx~HzvMT>x5;!gA57sihW9W|*{@wfyjnRS zRqoFV52^hAI3#G~69<8%^)lY4W;Ils+QZ?!RX%@D*IoiXhNf|lu*PfQ#ywfQDXR*j z!$G(+dRfBl!-B%@QGzX@H#*bitKLD&oB^rrnU;LTc~^cKx<(r1YrW4;6ON7aLs{OI z-Hs?#lCxik!+m$~i&zQ`;KxU1OSSL?YP$!TtHOwqmpeNN$)8NAc+QN87AkySC%h6r zqH1)a{7A|qXXN&+BmZeDUwK20ukJa)1gV({>$k+U{VH|Q~w?EJC z)|44<(0HkN7UFBuW`6X5^p5n!I|&D+C04C9Bz!6|EX)WfeWwtW!7r!1s;3Xn_2(XX zFg4^D^tA9^Si7JqA1b@{mtJ;Sf%>5jG0M_M^FEujp0+q{#NO0$IBfg6)^rowQTz5n zUxYeljC^M_^thlnQ;n;&>?Z7!=D{;eh|_8{GPD`uyrdp1nk{$0tNJKgV(5*7l72`^ zZBkLMPoaIRW`8G3en@SX5Gb%cdBKAz7%x@GrK+7DV=~ATQL4Cg;uv4#&meZ>;STzf z&$|LI)zo>awlz34VvU@0jv?vEaIOiuandjwTPnnmmh3kQ>?NZ395q#M`Av+`lk&=Y z&%4>4Ih=xwI8r-X?5{(9BiGtg8f_7P?y%tT5Y#|kr8ggRZHhaKS5q+m6>t&{!JYKZ zT%NQDQSoc?S6}_vvdI^sXvpMvsaC{hoERpm4Z#G;=m!g>I8ZXH@UDN~vuVt8!X*vD zJkuuG1f(^NPv7Re1ovlq5L)~y&n%nKcCw20W?0^k%qctEqFhe!KjC#7VKUfqD5T&2 zl*w)MFx`)Z)L$bhW?|W#Hb0py_rnp@q6hM4G|*y*Yn~78z+1XzgdF^!BNzPptPLS9 z|7r*|bK4p@9Ka#S2frfYAEx8ME)t9J>2E^p5DtA?pX54= zcRYA?JMhx(QH%$jcu>BKvyGbP4*M*a)ezqJ0<)eR4xAvpD0G_T_Xuy z9q#^{6e!XmQQF6)x&?Fap--cYI|i>#I3Yy({ZPZh?N_aw#=Q6R^(+)S#!# zFl$XlM2#L^+{|ena#I0o2ywJ^okXbP&F$$?$Sw0zpT_C!CnX&hl<0nJ;gU^aQr(t}=D zB8A?r248SC2s!_n$eEDL`DcnecF!YH()*%JTCpbSUgA8 z4PGn+b2?+%NCfnU1ZcQlQ zJ{?sC!vy2m&*M1__%Y`o_W4!;BZ%!NmhHI3lMP8;{#Do)C-i6=Ow@wSUJbp;_UM`d zrU1`&i~v(r;|=A$;;R;z9lp>8BX|Gpe}CgK6J_WvN6c>v@myA#}jL6yiDl)Zvjk}tN6I1+CQ%1 ztH*fRHPO7*#)AfOp2CrKl#tRJ2cq5@?9uP;5}YEXF~11nn`M|nSMhZ|l*_8mJvnQ5 zAo75P;RYYt{F>~VBm4T0KsLg`Ruk>whcX>{wgE-VJ`pe5J|bKGVnxHhIXT8l@d`(~ z{DvQTo-VLRK%a%-$#Qr$9G;kr<~WQe=Hn6E&*!mtc2A>uHPrJ<=;?kmd)VLGMvHU` zW6{%Uv1p}O-cDoA9X$6=+=fLQmOJiZ0X|5Q`z*^T?rBbpD)&)gYh67ex}Ctg z>4$E|qSqu7v;;LM%qZj)#cW_!gmxp^%< zcjL@76XJpJ$bLw~6XJs2A+dN~$9IeU5Q2bSz`w(LLL%=VZbB@=4}xl-xG*%50EsL> zD2o)tY6=e)U8Iyct(HPjO36_|a}l7VFmxt&TG2wvVi{ENF13CnMIh=kiXu3^y}bjTJ5AzA(DQ#&!UN@z|$$o5^vQbESN8ib&ur}-d6KYF7e zW7;ue3YWq3%pBiIAID|F!ZX>F(QJ;;Oaa6)hLDTtyk!Jl6Nm>(m{iJ`sDXr#?`==N zA6J5qDe00(amIrKi+J7%3<6tsE8TkoBi2Tr*!!t>lndEXN9h}$ve`0?-sJhA#M zt|rd__SSnhFNj6L<2*ymMGCTEx!fB!XEcOl<&5vf7K~8~Trcb1UK4oVRS@Q^ukh)9 zW;jXBEj@0Ol%QUaC_^Hem@o_r-;F-YCy~l^UQ$RTrB4MkuRA5mMMbbeZlZpJh+u7a zq3nl(+}#6BIz;Z?%6_s^-@Wt`q+h}1G9t?cg;h~6vX z6D13%kOfW22ffL{sbmovS&TuJ*dt4dQjV!mq)aI%y(!YE6d4-jEQ2DuN5P7gUr;HR zH!W9Sd6z4umMhcBRT<@1_sZ2osTwL&EmP`sZ>n}GRfk5^V^DAHQ4K^Z?x<84npPNj zR~V;On9wTB7!~Gw6&9kEPgE)`O)IUuE3H#2ZE2PEj7o>SN=MNuXO${f(<*oGDv#7E zFItrkqw3XOm7i#JfJ$|cX?3u7b!cjJIITL8Q60TkjTfznQ>jTXtx58(NlvXvq1B`@ zYBKg}2%@!FDz(|BwYlE4`Kh%eT5S=dwq&oiOq51Zp;1j~mEN@KR9Y>KR>z<`~t5KBNTfhruR!htFrsKS9N9H_#9DjcZ7fhruR!htFrsKS9N9H_#9DjcZ7 zfhruR!hww?u(1R-mcYgm*jNG^OJHLOY%GC|C9tssHkQD~64+P*8%tng32ZEZjivwN I8%rwx10mlWlK=n! literal 0 HcmV?d00001 diff --git a/resources/images/scala3/scaladoc/documentation-snippet.png b/resources/images/scala3/scaladoc/documentation-snippet.png new file mode 100644 index 0000000000000000000000000000000000000000..31ce6087fcb99c20e576048691e09ed66c7242ec GIT binary patch literal 83733 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

AKwH>499n-lFQy=0`yWlj7Ng%CYl{o-midu=;wQ z0t{Z~^JN|o!#>ei%yv4 zm%t^t^11Ar98-dUg+^Vw^3Ua(nr}u02EH^Ij^9;5cU^~XdR?Uk7huc#x3i5-f5^iB zZKyLUg7A|ibL6WxO^$<2s!kHg6XU+nUUAIEFF11%A8N6SzkXN7(3CJ1oA*&Vd3BU- ziq81~w<8DkP_s$7N+$swkND^6yjdNaSofw9X56ZGs@eO8>;I3vvwo|p@8Yx~D&5`P zaR8AxbayIUheo;^q`MDYQX<{m-61F)($d{Eo9CUm=ACE$f%##6=DPH-+53C;TI>GY z%P87YAtXV2NI_D=ZGC8s=D~b`9Z2#zd-05=cZksNs`)1>V3+s=vyqlU&03Z8^ z;;`x&v2OX@SAcdnp7faH(|$oUYm)IH8^(oM_2cHdTsEWoiq8W-x~6V=Ir8`OY^9yT zFxc1nLX7wKOxjyjRaM_wKO8N$cthUr8=rYj3~}1}&?7Ho(?on%fCdj_)5!W}GtECE zxc!RYM*`FbPNf3(r}U9`Ec)$B#sD-*Tr<&|X{MambQIJTpBYClU053zKSr2FQFYME z4f77#?of81+uEJ6FZkczE#Vw6;xtlJpRDP?I8WO>G}hBH*)1wMw|gj*sq`jkB*!fs zW|v-J^va+pr!uWXs>RzHkw8|*9jf_LdHn`~0q>9#_j7fb5u8ge<*UOHI~~6%c@G#4 zB2$n+d*Jbt4y{1oh{~5e0gLJ8ICQF~*@|?^PedD_L(i!6Pf#&wX?5PI*aq!TveIHB zbaGZEyd<^qg}-prJTO=g?FJi87C|6j$lX6bFnK;*6kl)D@^C9|gNwhE^AhfMy$En= zx9JkBHXEVgISSX#L|(*K$u;(uBYE&DziS0r>P_W{`!EqGwLrg)PZLKxRddl5NW68k zHyp-e{C-NeB^Y^A|L%Xk-*!U6gyP^aEYj6wyl%e;Oxl?Z&$UeJ6dunRMe+>6etA{$6K%w6vtP`s>$+A|;=Wpq%oJ;>}|&(qgxDZHC=eKeMOq&!($y zMS5>eJ4QI(2y)J@M*A-O>gwNWoH*UME*#T#sBFAy_EX@8=|G2%y0ahHYE-{1JpOn> z`F`S4n5;|^3fEPFw5{M_M0bf{i_78OLCYLto@C5b5bi}j(A}IW)#Ly~6Ir9F90QIn zzA^V=3%V{5M821Y@y*UPrTQPh>RKzMftMx^H>d78O%CFbC%N_;{WNbcFAH-SraOo{ zGc#*UBr+5X1OAf@|DW>`p(+Wo<{w`=tXDos|5%X1up}X;k6M(~Neyq$tshPKYlRUV zw`aCQ#daDtzUVI_y_L|+volU;jUa?c^I*b+paBoW`wg#nbX=EHX(V+*RfcJXHO=bK zKN>ff>#5I_FWct8sUNTne1J+seSu3a$;-<#UTR#;jGCQ~PmQCN9)j<03v+1N32MLF zQ^&k+_hjX|XO54T8M1D0PTJgjyeFUm=sXSa^-O*oP6reBy|Qb>^rVng=b#6+bz%!o zP1K_Kbq)QD{Cuk2m9~~8w~eUw%5LtaoArpyt5q^0%A6umeM~c>z)#?H^VD1U=#q3W ze??rqd{m1pB6F(sN8CDO$v?@OWQ2sy%y{- zHV&Fzqf-C-c`}Wg8KT3q-lxvSCj&Ty<9A5l-PtH67+*NTZ1C(WDSt# z^N?8w*~rO-wQ9}DyL3{lG_U>^ln%S6(vRG_jh{sUK5A;u1;YyWE1CgB(v*+ zrFRoz65AYchW0}AP_T86|2v#uCq;<{cwEX}F&Qaj?*A^?X+?3C_9H+$_6lV2-Z2$c zI-xDapdOixjjUZZT+V#h*t~A`@h)7tK+>!-6fI|B_$HR+||F+M~w8OqVo((j0IP`1KaO$*}31 zuJjz3?Tl(ju{3RB%-5JHip^h+DC2&meO*gu2aiPi={vX91 z8j&AGjno{)bUmyuCMsdMDi=$GGU6p(WYKCRc>@}nbdHxQ1sZuJEF-Iumn)us*s~AH z^Rau;lAdt;z)zQ>hVgN_i`TNDK=ge%w15juhpeCA5l5Gp`$N$(GM{JH#^dF#q=% z_;LggrNLn}Sx)E7Ta_jLtC9l#byzo2CB7kb|Zc<@RKJwBD|%qMRHvtpFAZD8b^0E|I7XCGg_AQjq3 z**gBFr0859h_@LjCYcuM8L*=68d(KZ$1hds=FHj;#*)9=czJ#uSF(NXiljLJ^8}y8 z-fRV{QGaCI+1AKTli8aWrPGVGh>B*=vFen9huw#P#51cmNhX|1({H_>3JRU8j*C)v z^;1^3R~_G{W0MX$GI0On_ulKV9hkQ^9ldRF1E!eX78n>9XJQ+-fF_Dw(M|b1)Mime zW~Nx}N8cn0I9UfkP_xe3H{)f!ECBeHNYMg;V0Xc?g7X~1QPs)m&(@z5qv$vkVqUD; zAE8sK$Og5=Y9}lDQ^0>9!``G3k-K!Qv=Sl`F3BhReS+2H!)2pi>{VL3<-0YR$VxqE=2Ns z2b<|_mD(e25gi-1hNZH-ceI~+G+9|#cvQldOdIG;^$PAXbh~g6-4!Vg`2GSK8;IFM zNGiX-cEQ7+o}E_S=leW%UdDunWB7phfN;l1qU3NYt;{1jtIY3qu1y4>(reRkTMMeT zn5LoEtTrz9yjpMEh{lACjuCvCdzWfdM^lz>v!Af}cU)aI>_(;OXg=a9d6k0Lrg1>e zgSVd+nxq|~7$1vS}?IIQG>D39|eI_0t>2bD6T7JAGZ5R8-|ME@$JDBYI*+NB9)kQlz ztbFO9HXQ7HmOgUpzu5I?T1rnp6sj$61=+6?_f6&pTaon1vDSDZFi=!KH92TXOAnRl zUQUovQc|M6(Yy;Zq5?B&%hY{2Ak_sL7*t>|Sg{eg5y)McJU!e7pH@SNLYAGI?2138KSd|0wTm!-gHAo}Q!SGJ_MXZnho;7PpI?ZaZ|FuihBMlV+} z=11fkV-u6DaP?~UHvx*f366*pz2^fQ>fIELe^)y?T7io|?kM5;f^7sxZunyEvmkoQ z$ZU2q;=D;Ycu~li-}>He;XWUn>rjq%8vyO3WA`I$XCXi{7KnBHNyn)ukJrV`6p)<~elRBk1cedY5km>IBS0&66OheCaF<~Vd{@XMP}YLJ0Ve9X zUO?Oqy?`-%@FfHFNNl1&hA?{#Q^1n~$+_zS8U~S5sC}dzKr<-4IJoB<*&+P_kY{wJ zN3k&K`CKiR=c00->x1!`LeB*ZB_}mgdm8;Caj-}S<*z8}1^HeD1L?U@S z;S{O0wHlk44%M#ifN93N#tk!j20LygNaq{vTRzy8q9igDO5L@~HCY+kC{x~B9H z;l>nZH~-9k^xVeS^_7vK1<&iEb|lX|Orn!4RaURt}E-Q4S$5S!sstZn;k zzaaM}CyTr;iTiTze5GBqmy@Tu{sRWJ><~67Gsw-X+lO~%{nwQta=k^Pv-fEK(f)Yd+1&9*R)pa~LWQ)(NS4`?^Z2lo~ z%@XeQE)LdAXD43nZ(nPN0sdyZ*0BFJYtJ@M6o@r zh7lvEb)}Hacq;iTIX_`>cw4c***1jF45NGR>tttB`Xom8}jN)t2+C)izUT39WbdT+;KDU}>wNsrWk9&p5tw`Ysh&W=FqU&g`XsWKjmP_&k$H z>vr@8CKu}{66jrLSf!sQK&{=2jSp667zbL(z&MYPBaWvpJR33gy*DzY^Pg~#+ZUxf zel4M1u?|7jr`5}n`5kdm=~{dqbmJ8)k0bPoA=X8A28#1{yKd4=n{r_eAO3**y;#$O zqvNK^(q#)))bntXYnym>z2SQ@sK8oRrOUuD@svT@De$;V--nc@?`cuv(&c!?8fX8w zVIzk$3G*??H(pYzjg@dl}n1@ zWgjh*O1`%cNN?X4g{%tIBEjN65&&^U-#;T({pa6x91*m|7=E;@%6V zqH%4d_c2Cj0G(3ehKcfp;0b#P91jC2SIa=p56QrL0jGN|XYK9#;Su8CSicf11k%z$ zJ$M@2yJhHD$x&$6X?~8Z*vMhhv zymaU#-bD9hvAIp~U#D1hmr-ZmVvwUTv&-OZt24=5pkjRl@E;Cu^RYBef9GoJ#rk(G zFL}rmNBnz@@Mfo7iWeUoPlG?F8YvV>qlk%Ft5z!QW7N`~O<7Q!R(cHInbgM9H6YHI zXSj)`L#%SLUTRdfYx1*;$@*Xs54ll}?&WoS7b$41Uu75+7C?=*&vT}Qc$&s?D_Ap67Wfa1lT;UtZrAIpUnE-u0>V}9k#9o6K+OwjH7{a zA0tJXz@zVh_$L6zB>f{bZfx%@C@r7#X-ap2cQT^TqN6{a3bWi_Fqz`yZbK_mgxEL%Qg73lmG9?micCn8=Jddf=0uAb0q%Xq)<& z!Nx4;-jB3rrkfmc*-A@jeJQ`_V!69$pVX9F-;4&Y+L5?q^c-w~40?UnPxtd>emk74 z{ISiq$sC?Kh30KmkMIsp=I{ix=*&}D{HhEt)o2oa*TyZQRsSO-lJX77?O>He{$LNP zbF%9yA+6(1xgGE2xWVT^>?}KD)euNb+#!l8^q`SDad%GbW9z6M$qzY9isDn??C z1!ygI#$z+JKhEWE59SB$i-FWjb>jH-I*qAG7Da}2?7oy^6%fqCvG2H`;g#|GP9y}X zjrSfi4NlG|V;b+EPUkOtT{ONXtublo88kVTok$dz69*pwza z;cGSJmQorI#jHn)bzADKR@;{WsEk^L0qn0Ce9XJjq#!$7bq6i~DaKIWqNEn%sq4ax zFuSJak7fGvpI)zieypMn%ZW*T9(mo8oz+pjW~d!9a6ICB)^J=&YfNw&o@}r z^+Lz0#y_3$ z)NxYa?yP=zGwY31p4NlCZ6^+bR4&^|+?U#iU5^jo+6#;?pR*GF-eAPriHRmKji5tk zk=(>F7HgsGnTiQ@<2=wRp9G%Z`w+y>Ggq0_-b*p@Q(GUT&3{T=jb@OtXinZoZVBCg zm3s9ii`2S-+3IMiDVW|g8)g`dD@Q(LDA)ps5!XO+Q+LQxh)dBy2taBbB4k+#X1%@z zfKS+WEr2+)zYqF0tB=IvZ%#;L#9!bwk}6VJCu|P&6cDzi+;=^#sSRgg!=l0xq0Z+KQvhnL{$3axV2QtEso1=AlAhJV%q}(WAXj&)w+k^wj z0Yd8CdYpkpCFRY-nvSdqJdWEbY+=~j1Oo&;czu~zk!V!rq%d>-ZxJIsNo^v4^Q;9T zFwYU%2~0ahhdF9zWT0@MY&fjOMz$l!y1khL=EOIE;5s5x+=26ggT}EJ!ZGKIYMjt6 zXaSDafY;p0W|iGz(d}H2ZrBZ!7ortkJQO<=Py5%K2vRL~#?4q?L&MymiKIS$Cg-(5 z*;T}3$#3_3vi+PBV+<%tAIatdztE1J?-phsIpPl#p8!hH)TaOg^it9}-VCQH=_Z|b zfGTjSa)aiRxA}V!#`D)W->->rh5j$kLuk#y1UXEzI(H^D$YZ<~O)Jw16=3v2_1Z;Iyu^LWi#?mROaWeuL7jIwXT~C0Grq$-JE~)hG`f&;|0y`1MTbTC z)Lx}1nX8|%-pRjLjfqiPfPmT4lsWcHBV(a9K2x>uei+fUyBlNh_v?3P>aZ#C-4u(@ zmASX7a`RXm?|Bl!@_AK87jhc%W!wUCoQ9P79sC#XIP>}7c-bi znLcc7ci0-%IlSX zyKGr`c}^L^Ec{xVW!`hq)PSqmWl5!VK*Owa^1P#&z_t0Dq1l0UWw20&W=QewHiTyB zC_;3av`8FAzO}=%%vag`@3IZ%%N@yM_+^N|*HUZ)t3UqKsIM_-R@zf&J_%MjQ?+^Wo9ZD*=In`T@v)(K zpi@;okUiWn7WtQn`wgRTp$05Y=7>fK^*(e(;NScdr0Zx@1t2&4Wa^NsQeCLy!>oKj z#GDw;f_cbK>3Arm0{b<`^-(%g~1RdVhDQa|+Z7YX` z7(T~tM$?FQ6A%*@S0OqqNl#+d-)Uz$aqs>qPwl8){He7$qBoyPTCNG}oQ5dH&(3&E zgGp@03Wr6$@jhYISNIFDb4C^KH*(FZ0mZW+e)SO9?H2vH_UHD3$tWr+N$9;nS^fq`-Y%aDD+yZ~FPU>!3ovf{TOB6-+u zF)G-+4(qF!{x2b0HZhcLthYB1$(vDhy`HT)Pm}T7j4H;ub|4x`OQ zmTeqAQ$4SxKZ#^i%$ZA)ePwq!xC*kbwj9oGD#z6N$TsVVyQ8r*MFi<)OcWS$r$I?{ zxN3!3X$;ugk3y$t>!PJ%g|vI~_Z30RN%p55>R7YsE6zIakN>i8W<6)y&o1&^$PR>q znuNqpzi0m4oQl4roFAobBu?V(ubRY;)rfo(hr7+7#LEgX*L8P9R(rqwZFjnG1jxc1 zQ(LsJcY@X_HeC9Q1;jD&qU|{C5vf30daz*tf|62N0t6Nw$SQ*^=#c#B%hblur4Yly z4a>#XVDk_+A{a4Xjm%Cr=SAT(YTs|qX?=$)M8zOopNEK_b>D2P2P0C>P{AVL*`?TX z`4M-2o%KQKxd&Pw`0tK@m*GC+93k^VtdG2fp0}V)D^am=lhkr+v8ARaw!% z&HApsqWQjJkw7fNz!Lo$CN9|>uMdISKpF7)OU2>S9gFfa<Zt18#-#Gj>KK`Dl zQfz3g@5!#}NHd*@=$n{mq<|qd@^t-1_gqU#N2r=OCnw)B&pE#5gEeuR zegYvKGsL{~Z)vM?;OjL-d{4(cg5(q`3(qUd)rXCy3RfE)#tMBOf2yQ1vR0A$K22QN zgoKGWcfshfuq#{9JVV*Wgxm3-lU;N`URU57VhpPxd1fi;MZ1;Tt?15}+<;6FNwQ26 zBABNfa?i}Gj3SCnoL}BmtW>Nix)E{gNfWK4d?$A74=a!bqB-B@N%Ijj{JAc#{RGXd zny_~q`Z;XRTJO}Pqns4wrIIVbZ=~m_bN(Qpa@lKB?XYCov<}-c=+Y!S&)u5;O6G^k zs>TII#v_&@BJPd|7+|&8I`o% zsX5du?w+{4J}D~E`wCROo5WHH?F)W$p+woRr&p1cM&?;MNJIl{M*fj`5`*3D#-bXmA#-H*G&tBFrIk+;bLqE^ zqQrSq3bHZu)#P5+Jm)jGad!dPJwzs*)9WMi9m{|>mnz}AVB z3UChR>GLJk`QcS5clwS4gpiMwZ~X*|Dc{joK#!JFusz`6xRdFc#!sdeOP1+u;&83+ zDgcG=f5Iw1USkPtp-7*>AJGfreVc1{*ozQ~_WG)^?9}UVCrt?ORcSs!{6KK(q|baX zy6?3kVET}`P&o$HP(qzik=EYY7ggho3Ay7GR>m?y7Pb?k7sEE5?Dsf>EsCAG3)<^V zz@8LyAgzA)Hp|@wW_dTmOPZjwve1$Wfo1zPY5RN)Gsmlk&!$GThn<8UtrBJ=x#CU7 zzJLjrq8+L3VN(St2MpIsbYc^TqdVh{8h`4{^+CEZiC3Kly3wQKGt{MWHFba9+iSYd zs%|G&ndU(Sa-19UpUsZ>{^ZfMb3ciowo%Fp3B{pM(1l~60~=Dr(3OQc!?9a(=Mb;% z8gP4qk^90C5OT2y#l?h*VWvDoo_*f$EG-@!9_nH^kRNY3&VS?ppQl$>jLB{C5M%3$ z2x@(>j!#7!(+M@)VnASI>C5|0n@Rn7pDS73Qf;`@R)DQ50*e(ttls^Rpm3#LHp0d` zzmoEsn|cKVgGgXdZ38C^Zzphz4-t%1^yscGa~3h)dto?6$c=ZDBriA)QVXoTpimZW zVAf&SWhTI5jNz(Ke*N4=x6ldsL=3S@wfxZaC zERK*Lc870F4*%LxI9EUTB}ZCfVYc+3MUsz}t}^g@nOoG{VA0BmqZE@^)YR%)X2Q!9 zUYw3oDHpcc>eq|Zk7u#MwH)!VYMYL-l{;&6(Rtz-+J7aENRl|wbh;&$s5Bt=H-_K- z0n{|@9RNH@_o>=^5KsTM^Zc}TnSzAvmU#P}satm-JWZps_ZrM08>!pF&mvVOgd_tm z4Vpw!g5%0SPf>uC9QB+x3y5i0qz-nnS~Z!X6+sDPq?JR!bRVk8*5`kE{HRETPYC&I z@D&1MFH4U6kdgX{FxVeNCeV0JA~+mYmBbIC1D~Ta{bVsnqp$f~e!^@NZ>3?V2ir|} z+D71s$F%a^@yLcUf2`MeC8DmUfC{^mtO=_zSH98$OJ3AU|Qb-qyVtK0ZpX#pb$&pg~Dpmo#>SS1CHUPx~P{EqMDW z0bSilqsR;Tfp8}`F_>qf15FK1OLj$ja<7;_AJfgR$)&kWXWJqrHjfW;IzMH`bk<;x zKZJ5lceuQly?KDLNXm2w41jq%_!S10DUaI(yLJu0^1QA~muY+tf5gu=HJDh6)l37d(G`Zxp!X+46&<$YC+tmq#uz&+j2w!=oa< zW>`t<$tzg6{@RGxg6}}q4}YaZxTg&=Jh)TPXYsf>i9$PaO_>F?%_612jlNNnQNLAm zba|Y6TWvH#<6i0brpQ~&lV@$uGqNDSl_i^B*XQ;o>c{N!*=hRJ0d&P->+kN_MC$d`H9fQn(9}1qNPcfc!Nxno^D21-ZNW9=`t!ao?U`wQr-Gz z?=jA2mvRkC#t>h$rfuWHd!x~*`~%llnD=JKmbqD;tTF)Rq!;}bMzy`*a-&ct40ACs zt96)a3@9S0MZIH5kYJDGL1;%Ntm@Ca62m|$yM}exuIEqBCK$QLIL9t^cpSl$E7kGI zTE9i-iR8Ss$&|t+^C?Cwt4ap5_9jo#WWS??wGYELi5pU!?NNvMOuoS)-ntxZLPb*c z=$4V1t#mshD>u2k&owNlDA9m^-Z_BLEu&yE!6W{q_KVf_yFO3ci3mXdE-W4ea%((yHfnB-U6CU)@_Hl^El!T04jv zI(%F5Ii8bJu%=;juFB|Ch2BL>RrB)h@8F}D;$*u?a3?g(7c>N7xyjx5;wM<+yi4v) zV{^^|i(C5>6k4xmfKh4J9EKfz!f)yu`4$l;Wvs^Ss9cnAm6&ygXY~EK@WCD%sIgJH z5gwNjuN{~z5C#VcAf3xRoyc$R{0_t*{r-!8BEX&inWCJ=JUq1#CGJ`ShYYjxoE7IC zY>(lua$PV7J}zWHo`+|~V;}aAf38t?77*wq3#Tjc+3LWu1@bbfWpLcC$dCFNz^l`2 zQh+AkF|P?mCyq=I1S-K$+Ne)f+jkQ|=Ez}(#g?e6me>>#$%n_M!>$E%iqLX_>gknm zi-|uk46KcOEl21h{gQR8ylUz<6qFg5^*-ELxv%%OYG6x@|dPUtt6ub^F=mHD0kcdn!d5ZrJ~)D8>k&XGO+Uv1+J z&luqi(B{b)0e1&g;vhBQg(cJOxA@oV50=hD|U+n zzlfn+8^gC4YC1WNi?0_RGaQ+4QfBZ|ZeKOSs|$9te+|l&nlG;Qew3N7vrYiZe4j|= zQf?O3=BeEOe72vdD^fVH`GrP~<0n7*@Nwh$7OU=*`R3#LTAIHLp1&sI2F0s4=JFT6 z!jf|~dZhJbf}9uVal!sOtb20dPNg5hFcKaQ6t29e+K{079$p#{C-NnW1C34GkJv{! zKgD~7Gv1`6c#CViPbrKIm3`+fN*Ou>R?9{m791r@A_&Cb>Ose%9pzBV?G_KIqGP11 zF|t-7nJnEf4cs?Fn>L>Qqa7-X7|E{X_z^}P7Tj+T$i0-_nuJ92kn0?C*;eNs>MZuk zB$0aR#Kwt$5#{=Dj}PuMTp1*cho)Bh!|@T1L9OHhjtF!W4?z)T+h?M?eUUJly)(vO zt!Fqr5vwFa^EO&+O6H?r(G{~y{wNRnM<`hwCjPYROXN(djKe1WVV61+dvZov+RW?* zIePKeL&LF(`9HL+lm%=lSy!vS7<|DS1X7yo_22~Jz~NRI*^muscDRX55Fe1ukrsHmF*-MT^x>-dX^^7ZvTWbFL%mQN z+g(>IzKr5w_DN{=tt{<=SG84k`dm-1K+9qM;!@1n60o2ql7Let4VYx?3}l=2lNAq*xihnciCdL&IQzpj#Py6^YNmZWW#+qB)wVSq1jYa#^rYPPY(0 zoH{%(ZoSAdGd{1Khfl8Z%2qY$nH#FMeu|e`(m19P`c23Rr5Hb&WX$#uor!uR#|Y8& zgT&4o#EgY4_4aFRW{-``d9ku$?&sEUFtucDn;PQI0R&nauWPc=#owQ%9GutuE~2JJ zeQq0BV1?WrpghT&XBulccgWohL|(lejdqwy9Z1zJay^)%k3n*m*q(T@Rlo4gBt2WM zbH}Aut*ve4TdS+=i_Jq3P+1`Hs+CLOU~?iu{zvd3WFuzKQ7!ed`plH;WnLi+c%B!E|;`#aB2X-{Ur{P^bz(t6>-?{pL9xvnfH-&VaX(ypriRiQGWx2OD{8@)3~s9uZeMHlk2Ic7eb_#AxE z`37|mu-a_`^a}@AtvZM&t#^RLb99Lo39PjOkgCDEJ9mJnAsP7Ua%A{NKhSx08u+qP zt?B-#W#edaP_h9~a?*?g{Rf*A$q$cQ%T5VRxEHK+f&fa>_!Dcx)c+g1**MXQw;?i# zQ20;temN!+IVcd&k2X{;()ud^t^7?uKE_V)s|N)v_tAF6s+8KmC=A)#04tg4R-!?@Kym@5oQXh;EX@qc8Y)BV3WaQ| zcicBQE-_oK+-WeZdd20>meFf(Gl7&X`F#sZ@7KZf&N`Mu>dpC9=?xl5I?rFRN;MRU zS6oszU3J)9n6&9txEDOoE>CZW_^cZGm`%gPz#}-kUEGu@}WF+a>^=VBb9f_iyi^ zi=?1|mo(H6g7)jV(nT1MjDENkQo6s}ufX)K!$$?eV350Wz)xbMb81LE)jp!<`fDww zjTxIE*|n1H&qKIuQ@DxoZ$V4BTH~{Goz*t$0=KwzcI#6l3!Szco|W^{H!6)nkf!5E zaK6e=cswg}cIis3M6mZ==tGlXdu{1&5f+{+FZxdgw)#FMoi#M50jsUTYBoA1qt%y|5MaUEIq?aEx3=3m_8R|}q*zB4hO~xiv>t$$PQGYq? z$2ry9cl`k6sgOTtlfN;1|tNFIOk`Emv(p#9$5K(tR%e)SJC>_j{4@w$J%>0|>A7Wi?!Ks@H8dXG{c3^B~9*fWInqoPU3o_#xWq zXYf?|YNu^mU=#z7Jn%#huL@ZFh*yH{d=JnEQmO1Fa)e)-cmVOdd^3Rml#sQehui>2 z85SN+Xtml8r7nXIM#8leOSBjSZlsYT`Sd6>;kmdDb6PHDu#h_hDtxKJC6HQL8jJ{x@Fcn);ZgU(&F}9_NT=A zfr$9sor|}3Hr-`cXZpE4s^%Ew5yG^BDUw@Gc~}9c%Z~=y zcZBg^F9lr&j80Va*x99V=F?4HSKnFI;` z=@A8J4?+HXJ9#oG0IF!0N-u&33=Mtd2wqm30%t^!0%|{2cw#nix$tO0Krg5tFqm1m z;a0`jwjcr$Ou>F+Lw6k>R~A@>K)OH< zCT)J0>CfUKTg+`Z*o_w^vw&Z_K6Uzm z`fAS|!bmJ^jr^c8Iry|*n;NahhU?yG#)21S&}j;JrT$srd|H_^yc{*j^&c9D_6z$85gQPVR{lV_GJoO|H@nfF*3_tNJu(W^6TC#Sw5m?tJ8rrsd=pb~#+3Zt!)gz_0L0SY3`8yQS3UqX)Yl zLtQSTTLOMO4Qo>iaq5+80Fl$)`%Nd}dp3Y9XM&MHWuqVUu=pnvJ;|hf5BDeb{PRXo8 zPKJl19Qa(A{#}^{V;tp~yA` zeR#7!928im<)~KW4__@ttl<~q+1s$?e`{hR$G6Z1smUk4$^Mp{)IM8WY3co;KAlEB zMux$+%1PRh39XSwxP>TcFU$HApSBx^PG90Ik%{H)a1s<@$Ax1i_M!)6OSwMI1fc^s z>yeIss1$@ZnJrS!Dbs39`|tJAK!N*%AlvIKOn#UMI5sSzTeC^Uz!C;kwJ+P^N*66X zdsU?Ms~!XIFBF;5pwt{=sWihO5U}Eh%f>(`Yyb;7&7dHBg=i z0FfD#KJ6&Lj=c3(#mm)aw*jG$HLf|B-$Pn&(r0WP0_Xgv=2NZs&u*1fI_<6fXDV(h z%9|9Z1Or3r51smBGQmXOeU5KrpX@XlQaZlz?KcWwGbkxN>DBy#LkeV#t@w)miaSQU zQIuJ`Vbp8np_}Y0nV67eL#ZPywC!+~we&xlFtP@U*hBxo?C)sr@D0T&U=dhPyLzcm zdjf>~I`|j9q)2ybtJ5qYK7_h@s5g>lWI_=*_NcozI8ewt|Lj5N=>!9X?@fzJ8Q{3?{jifNjNW!1%~TY$g0QH^Cn4|HlfV`xDsjboLZd6OtiC0ZLZp|mO(%fcb_ zV7^`UESa7Um>yQA)&lhAp_P2rX+*Xg!v%i-QKVskw`l}wbu5hD*l|SGNk(_$`hN64z~lF-3RA=HE$+yKMo72 z9R$sK85}OXr@=e3*9RKXxOs;z_)EJ^;AJRIDhakeT>fgjnYm!vcJe z5M$)q;V-QLX9U~$EF_J*r+QcFLP}?j@8J`YkZYbs!VG6BkL~?8U73(fJYC}WwHtI^adz`kj~}PL)gr6Spw7b@P_x=h3( z*`ABGO|vdE*xK5rQg(ynXv-yg^GL~;TEgr@JmoybnfmtA;cPaEufee3;WtM%B5std z2FE1Xa6Ktz19Z`W_6e(vxbNP$60A6`4Bhm_*FxZlDqG2V*-2p=REFg}5p%0Zea%QJ z^r|GLGH)e_Tj~;lRnJ3diO-s%@k5G};B%fs7;?WRWV!Go4Z&t)bk~{HngW^BVbiRD z7KQ#tfi8^?v zwRgy7L4`R1`Tf(P*W)#IG*SJOOt}AP7GE2R-|)A%j70az7R;f`oBZDQTvTp#GUP|? zhWwq(F*U5T76t8J2rjU9Q;pW?>S3*+nYID!e4P4x?cq-Wsqd_FjYMs`IbEg&EHtMa zuL*Ol8_O(PF-H)(Yl%hS1}NT*mV9GU`}!^OPme9UFmd&H;lbm#Jg%6)x@*Hr`M?h# zvr&jYXCNVN5>|>+%Qx8DklS~j{bG1_vUI37nudCam|M)ZQJxS`r8_P0__8;u39?NB z5H6~!kp4S}U}xaZ?x&Att~?q*x+#9P+J$Gz?%`E`jo26cI{(7JVWb70Zh6>Re8 zb(icQ(zCIdDiD*Z4mxdC3o?wm+uXk4S(RP%ur{8#wC1iF-f-KC zhcaTHYOOWs4&KjX5|NtJ-p`2lJTkS68*ROZydL8(QOx;yJ^r3tu(Y`M(O7^5WNRLT z9^7i9WUk%y8uteoIe81nzED;-=d_?5ZKbuBBZa%eY^5?xC+~N`Bh`A6$Q@jjT4ygYvYTFeNal)leP7+eN`}=Ld3Q<86vM z{nqKD#q#)i1Uv6WTGg0U#no(eHu9_36wJL#Ut)!wPeDS_2pIQoph@lsHKct{N_xxz z6ljQkOEb83VMfs~Gwh}L|K%-;#e;c^fmoi?1_uh8Y}Rnk-mRmEO-38E_U<~$i%;H@ z8Y%u?X+>jdAPqSv^MRB3zvII%rEd&bEM>{ZEp)58lz+z|eIkVF;V@i!N*-}InN$AN z;*1?YAH)%+h%o{rxBqIGUU>qU$hqSZ4a9%zbdC9e?k?5WU0@@O$;_!))T6ifL0y*~ z#^e1pSGr}>>c|Qbusz*wRc6=GrOvcLyF<5eemR3Ul)eyG-{r^#;MGM;z(55u7W@@n zeBr$x;I!!*e8Rr}fMxW;eLPeS$ZvM$*~+^_@xO4{Ih`!R@s z%Z3SfX-}Yx;bRw#tJO9ADrWmn7&UeuZE{N=^G7uzYpas!Xi6N!s1Y_^ikmLIpz5Bb z#c(2xbHoZTfkGsA+r96H2jeIY%b@(#qO3Q{C?7GLY)jv5^ak4j`b&1fk2sFDl>^*EWcqz~(Aivn==TPC&D_{bn7}6D%3?qJ-SCJ8sWd#z*MRbgkLoXb}P4E050DlE8iNqdIY+0{fs7Y-$XA`&I^9&*KQBcxE`owV)uUkx<6Zy46Kad z`$BtPDg~yUYTPexc}eP<)<{9$)N;r!urOo%r#2*W1uS}EgLeTIA!}^_urAU+=ml~) z6IT^9pCnr)?jMN6Hwugx?V!I`J!Rvs zB2`JC7}_5D-t@xW&oeIyJnWE~6*`7IU3WaEQr;^WbGAKREsB64vxm<6Gt^MNjXoPQ zNoQDR)-Bj0peX%-5CD{`E9u12buOvo0Uo0NX?c=i!O+u7eS<%6{53z-zQXp>I-0L^ z&RYVOL%p<%Ud}3>JQG)XmCDeAxjNDI^!tDZ+k^9Jvk4M<;C)zU_Ex4y{T9u!-E^9u z>86fxYykU%M?J4DFZfj2aktsTVOH{bBpjJh^mUNsSiSWkyH`H2A;6yg(~sDn9{|)< zX?rx)D5d6QTZ0J=+F=fhmUd(@9Rr~)_N=Ap;Hox?S&$bShP&EQcTWG$C5Cq=}XTl_WoV3_!| z%Xadc-x8pM?N1EjZO~e)8RwM+ny^fbALfaBfNEFqMei(s_vaD-)`kGW+TcTPuQ#xh z6-gAy$O;~rjzGCK2aX{%=Vi4ITs);jB#7X^c#1*4z4aw2e zA&Mn(Ab1S8m954t@}SOhm5?(aw~^{1@2$e65w-pko;Jf^s{XN)@M$wa@ng9);Jm#S z2zQs)2Ud3p!uCTQx;s@@mC)V^d;8V@D*nuvGeP2cP$lx*PXQznE2IQw%5^P4QA=?4 z7|?7W!#=Q?{RA&?K_9KIV=qp%1*{jE`V+G54^R>8kfFQ@PkQ{Ngv0Yc3fk`$0W=fg z_!XvP1GqF2B3gJMxNa~(6#e&AE+e|n1YV%xCfX;pKiPt@y% zax*h$w?6eOvRm$273nu+U06Csk7_>^da<1|?ylsP{Hk#HfzCT)yG(YtR~PqT2bK3~ z(q*dbmY#iY=jYk|YK@7|V!MNI%ag;7C@WypF(o6>5u}LGA>g4lx?7=D4AlI zrCz4>Stf~zzM}0a4V`zAAeX=OY?#pmAocq>;jQ^*fk&1@6Q9@V2P6aSm0gEW&yh>c z*VncH-TU(ZNUZL^jU@da%)Mn;mDwIQjFfu|NJ&d~Z(5{7KmiG*TUt6KB&54Rx)DT0 zy1Tm(kZzFf27T6^GiT0>^S+;-=M&c@xZ|$1{=ZZW1CZ7f5Wov0VN=Qc0{w&>h`pzi zdNvWT%Xo%g;Ei^3;}~B^^~SSW6xtaia~g+WVRoWhv56x}P6eV9y+Y0c2n|U<@-;*S zt57@s(hFLJJXkH#;@G^?imY0w&5yGX;CtzJU+6?}CB|gG>v7}hgjOfws>e@o27662 zJWOW2tQ#*)UJL=iwIa#aoB0`Gb|Y)q{{2Wr?NhZ-McmztmQw*e@VlG8hwh6Ri z?LKTt=8aZCc8KuuJ%Ai5kOM>OhFp>_46=pRuhQZH&4Okn)SjP38%FSVLh33Xp5y=x z>5S}xp`vHLMZrTj{}6UIrXWI^WNL8D>w%P2rQ7fpiiXoj)Z0E_bS+rTwKw979f0NY zm51I;kmAeKI2+d;U#UN{KfiVzejn?lEGofpWem9E$n$%f*y;v~|zF92T0g<1}tkv*>u)mwRer^PbbH1Qh@BxEry1@hcY zWeBC+vkR9Zl=^-f27{^8Zveqzq`Il4cKHuEPid@{={qk1nrc&qk0f}~pe6lQ!P0PG zx`?6#4u!NY$?9c^qZrOn4ne|JF|*jorW#c8$wkCx6oe=Xs0x~cC|xwNStcGE@{Gf= zMT6mDWl_JbUVjQ~KLG=~jin9KPc`7$3D1;ztRMO&^a?7m7)IND&yM##x&R_7BDsTS zGjVIJs9U6TEWHB$dIQBHDn)&BamD+s6#4AceN8~Aj&2nRw7#|1^>|)jhKwU$&SJ=% zi+zWj1c%Y}U!g!-4<4qrVxh5Ra(g}M;13*<+a&CaIpvTI={G22M&R7=Y#V%CbkL{!Wl_UM7W|Jf5x&$F(NA~M>X3kR*i}g z-HR8|^Q4wsOg~xw;N1V2sR+Y;NpFMJ&M)-T9ynBF4_iCd;!M(VEy~!AcK26|r(=>z zN9^8AuR#d-8r-x39NT6^snH!aq^wI^59k82h1P_sGt^)CTr^Us`Y+v@ttL5m z=S|C-1!fg9<51GHB)UPvndI3 zE(s*}Q`oo0SRwvB3iaii(yR2ADNjTz)H%EEiFIfSxT^hi6fvDW{>&|jdWiVz5|Nfb zMC+Bj&Oz+APwF#CmU9yjH2KebF|~s{s;G4833BY_vng-Mr(R&Ou~Y!Q?LLc|4zKkL zg9z*QFH@|_w(N$F?Dl9rX>TEzyUCE?esn*yk0`c_2`4`9URC4vhdt93NBW*6akotM zG4rTPMc4d+_KL$0jR9TPvUsyJP5=VND-%cp)V=%gvT-e5E9{M*E57w(uoW3F(m8K% z*^m=|BBKdFrzDDy10-scmXl2LyCj6eMnq*UuC^kkr5yW)c&x}&vl)r?yLr?Rk6Nqm zY3vqVCoS+Fqa`Bm+%74%*ZYGK$)p;X-^#QC#ewYPe4Br#P*wZn<(msE)z zWr$uP)2?(!T6Yr4Z_j?%HqrOs=q|H6R^o4ocS;8=Y z?rcU{i;Ib-l!~-gL$@Ee)emoABP_3Vk@8LOZ;lkI@q8uFzH{kgQqP#lpl@0Bn68uR2lMdG zb>XEf^U#ldtCueZE@xiM$7 za|k9BjCFhmUVpmfRo$=TwdC(|*FhrP<4nUL@>;c9W|eflxc}7aX<575a5X1;Hi$}- z@)8YNngmfGH7gMUVdKbXSYbLjQsGpxZ>G6@A}R$v4P<6)N*naPtDoz-ETQDE=H0J1 z=ir~ye0ekNMV`LsbUjkcC{iTWMmD_zRzqF)zlw&h*bRX7p0$;xXg;_Ca}?k zYyM0+d#W9wp3l~BqCCdCG9EloCqEgEMWF?@}V+8#BB zNHZYsXh)?M_RW6Va3E&(X!>J-cg6OO!>6&A@K+aWEzFPIa+NBJV7_}yies$)qQSC; zM-YHNtwx7Ty!u_r zrx6S~={17$@^b$Rnf>{CtJna{>ZZo~+VKa;{sy9ooCJe{*n*8wL?XJD(61K!05dNyS`j- zA#v(ABM=F_EeBq8A)M4>piAmSA<(9P2QC};#Xm{6<9xIAlG+F!VC4x;XTIs%e`i(K z5P-vl{3Hd8Z67{+xKQ~-VIRSh@!{glY)fTJrjS38pW z&rmrAM8;5XLKwApk~x06K`7q9^__3Fr5t|0EIzQnwWF5fW}Uy?o8I4^fMB<8Ur7d% ze*e^^AgVjMR3(S#?`=r%ldMbt&MpWx;x_&5Lj8Z>%TT=gq?{X&XMKj#HwEgt=;6^X zAZ?4eB#2UCqc1@rLg-B0e4(+SK(pc*c-{~YmH`RhXpx=>|II;LF1WXj0GRW{e?tRk zjRuYZo}~m(Jls=3E&@<991ETY!fgUvu_jJkLg01;7aSX>$JNP>r^@K&80yveK0D|o zN_hA4l77=snRXcjIWeHzdl2=WSxu@mj&!#aXlU%)v8B6#&Vzct$ATW9cX4pQRT{R~ z5T*s{ZTe1&$(_C%*mqL~b^}AcayCniUBTRBv&tvsC(ngWU-JLR^j!rT?#Sz_7non@ z)iNC8!jcX_{9(lmpZnTqhjHH->7eu2x!r6E#ut@1O}yT2J&OtH*7czTI&$qP*}=!9 z(ccQyRXc}t30>n!=_fO0r3yFg%Uu_)Uzqk3&i#5{v3JLKt;FGR-wAD>@o6V3w8>Mi zvTtX-0f((#>ib6svL+2&m%F6a=zb}aCw%pTx(4LCQcv>Raf0lW8h~eU)nCCYAwggo zYujx>?IF-|_2wq%GQov2!%tU~MzWu*fgq%Kr`_qEB-8XH%11-V04Ph`pn4KwjvyDL`r}94B z=a0k&h0e9lEzV|+)ps*N4ljRz7(m56x-w_gp{A*JQqRJzrZ^_%K}3Lf+AgLepd`D2 z7|`Z{76WeUaDIko!kd(;UaOB4Ls&P(n(s+XezCY#zEf*EIk!*zY4l@t{q)1RQg}{w z-qYk&S=rc`c@pMxPj2C(9ghtUatvXCEoaeB%h4NR^!{l0QS^gCPd~@8MN@t+j%qs9i$tW;w{QOWiI9}*uYZvjg1Cz-0R)hCfuHA(I zA%H%^fvFzc^P`QSrlO;bYcfL8D%%wjhESVqR?tUN?bQL0DI%s*kbvBcr>0FgsqGLB zM&)6Edn>T!aRxt}iQ5LYx4O!?vhJ@S$>+Cb3vGQO-#N2@Q#xz6FuF0^XHjY5X) zW?J^}_|cA#ZVw@Wp1y^jEU_D`(eHRILlVMVBi`po`Hw17HAKmrC|b<7)V&(nUQkG2 z6>xf%hSb}0($Qy#a@>$Xy30xL!oJX&`(vQ~@!8#bIN!#B{1sWAL++$Ae1xk(DBbYSU24|)qqvs-}?YScfp^n6SqLWnn^V|9>XHy*L6@^W2DUi;eGv$0XO-) zxm;q^9P}Ld@aO~Zy3<~4o??ChjBB{>;C|%NQnL}NW0oJ}n;M}lAa>o-M;J)&jzAA- z;`yb4{sK{)^)MF;9?TKo(6Ipa?grvilU{hk5#eM8h~c7Qs=fXR#OTZr_jU&@aoe6h zdhkG!k8;Ip6^&ZQPoLOB?_4^S+AIK2VV^S?(0K;_HTZIC&{t2_x7Eqj~bJR&< z(+xDFY}JS(bU@?&YS2!g?rhqEy8p{{T3>=RW?W(mcBw5k(h!In)UIDUTi@tqE<(3- zQ;&PK_7ODQ+fV8^_kemZrfLPt`T8k!La+>Pc*uX_@$kJ8YtE~$)QKSE5T6I-Bl*Ri z1mF?JyZ;sNE5Qmg?F~U!q2u>$V{3p$MPBH|WcfS4L{Ny;_v`1mNXi(CaM$Ml;uWe#c(sL*Sg>McdT!El`z_tEe&$nRtGW`~xJb6XkS;Qhxyj)_1Y2quG z`#&ZCH&h^T)MWTK-;zj#iSs|GfUm@U8%=B&DM>qQ^6CjuDP(on76fH`0GE%wGeqmKh0%b zzWdPP3`m5j;->-UrPj@Lo9q%+X47yQ-}78C4GW0*Z0_A+UIE;e%B9o7jm~GNDYJIn z&6meV7>$E%x@3U<6MB`?V~>le5)r968}+X-nM?29w6d2D7!*s(rP9r5@kXtXOh&79 z{(99qKhfY@;Fx$Lai4*Gye}cf>VD4re$u&d-B_2+_Jl6+%ObPAug)xF)l&XhO_SD9 z7+O_Hnaru>1VulGNVilA=pt5Md{pLV)F>~OORkgLBNdvzG}(>r8r)@>u(yje)X0>J z{dFTtX3K(Y08RKP$vEXiv@OKn;f4}^3uj%Lxn_aDoo>bjsrk4iMa*5ocFLHgYb|Y` zaRIGSC=BzU0`Ndlo#E%2x$ttZ;{oUv+JO%c{RM8yhE=%iG`sl|UCZaax2d>PES4Snrw#JLAD@ZMhZI2Ga zP}>$e^~nN?JDVBAAsF??K%fkpEP=r=V{fF}Y5*dGetZLnl@xw*SbX)15vXO7<&ob8 zktX>Mc;F{62~2QXJFG0cgULBEjAo80IafnPQ$bfFH%2~Ciz{bKO1;==disPke-bP` z3ueRmW;HF+?(Yu z>=ehov&<6rM=$H4Xm3X1+M@G=Arto+LcM)CJx<5fq#$LxIAUDr99Wu^UYJ7t z!n<7gq~Gfs0sFCzwimgHob^#c{DcygmdO;h8A+5g8 z6L#MadYLH#4tsz;-GI@wZlV*y%8$uk%Lby2L4B$C!bY%gC)`9w z=W7r4@wm_0B#+CG$F|A#YdYUY*zkG;a5mpaxRWd8ajJ4!A7O}%U>C7xmWv(ery2{2 zE3T6~FxjcPJP|+*Z-Xndn<&UA%;d^1ef9jvm+NpN&pzKn6u+|vCy@vrplb59SZ3oH z?IHM4cvptCF1Zc(Jt9=05hpZYntN?Ax9KMYPlt6SSH+Q=@x;ArH&*Pqby1oVoeGAd z5n;|pv8b0O`VzzXUQgPHB+85Zk|T-Y9iwmk_9dSZ6kjM!7>d3!}ih+Fo_;>)2gWm(MI0>>Q> zVp_YA6MIM8)>QHO^ffa9@JbohW?j+Tf`NZjN^gxB(>r5Ty}06b)gQB$O0 zSXjx@k4yCgL{lIwevaD{1F!^0&+bEvycGR<^97j4iGpmk{6Sg2UjwlPPS|c0n3T1WsEfw+p!AsjFsh zak6Fv;wiYPY$=2Em860t7AnPG6g)O4coHNkipt#W$=+JoAVa4^FZO1@hvr6q^}@uh zZ}}PBi8-V63Z~Vi+QG7WonaD#>IaIC*sYp&10)$K+t7C`oLv)dFys80CwuE&oV~t? zw6ayCaW_$j7qC{baTjT$8N2?GXRrR1>1aleIc)9Kc$2k8sOnd|b)g-!Udy_Zb&iiN zMVTcFDbh_AE~o{VSne?i7i0#P<$muUhMcl4Pp$UE4mh8Koe|dpxeIYzR?iW_VdoMB zy3ZB4tN)FQS0=~EQ5%E!l6L_?+x)kiUtM@KK>_i|^7O4wB z@zG6#bv9XyJTLCid}NY5`N4= zbn%CbqP(jrD&j#q3gcb!q-P^ijmp<3qZ5-$V&s#2>>lOApgSXBLBuS=s}m~FPxK}= z%`XbWiaJ^g4A39v>xvPCc3E{2YU{T%%C39Y9o^NxVN<*7;E zW`cqnyXvpdK<{uH)~vH+?{rRT$C;9F=j!YC7~4Xq28$Tm&bxdQCMI(I{e*tYs4a2a zSTbf7l?q@1uhgCz*)SaE*%v45wC{|pjNt6B(x|#TB2$Vn*p=3AUV~=uv0jcthit_R z>x;$xForlRXB@hg1i9Yq$}{hrP7k=vg@)iU{ir71y^X-L*G}X8x$R^$mUMdl%#E0T z;_FM*y#8O2BI?W4^mxn0Ms2(n!u!8>gsy)3+F%Jv~t0I{voL&8nz$W7=fa-cx98OnwSGu@H=p&s1y2azAJI@g1zzC5LLfNE7P30 zSnDS>%gOX0J!8fn8ZgRP#?6H49d^6%`)Jw%o`PQa53qt9B9Y@4+8<@T-_1Zb; zO;%5y(7Xq+N%{n{8&S=CdPa@>u!;n6x8rpSz&kC<&3V&jLVPMQS~F(%S4>wfNPVYu z6+JCAdEcEq-r>mC>3r5UL86J#ck#VgY_~Z8`k0D)c#i?Ix=niozb#6yu3s+g;5iGz zP50g1P$%>@3!M-`>YFQe*G};z+TH-HmJi~y3xw)P`vzU8y`oJeep+cMiEXWsH3Sfv z{tU6GZcF}H^Sg(z;>!SUM_fcfKVFt@<&B6H;YfdP0l5N)rrLV~bXU1aNgP2X$eqL% zD5|Pe<4k5dfh_?syT_hu5C=?FN{=O=Es2K<({F5N>|@VUTIwaPFz^|~6RGt{I*{y7)T2-mGYRuas8jGtMiV+oZ8?>`(fFFwUYkt$}|^&bWAT*@|-1H(EiG z6En5w?p*J;sF-`Ao1m4h!lcrVE!r9$IA2~rSx1^qgFhvGS*F2=w|%SODq?0C3cnom z>g&P7FSv{Af=(9JrF%~~|A6#JxzwX257#deW5pSrIMC1lEALmw@}1UiP*u6vwgZ_` z_XfTB8UoF^5XaW$4YKm#pPFM^PwCT)%7-T0gUy4)lAqcodJ!Vb;V`oY+BIXKe0f6U zCmA&C^ORtn65Rkt+BdQe7m0h1re2`zfuFZLi5QfXkyyRxB*X#-!>2w<1h($mD-l*+^vPOTiC7H0jIh0+<`iQhL#b%UylI!^n|DAaySjTx(_{eY z#1cbSdqAkUh0tV*>gBRaA$N75|APF(?sy||$GJs9(kI+&w!}9_zI`d<_#BE#*3+0) z{+Nh{zG;`FQOdel{gAZ0RJZD&&8tc53ozt#n5{Jp(6+gfr6IoL|dTuUeO{zE~gE~Vje4ZNYv5B zCe+rbfYJqfkIJ5r9SfK_!gf@>D4H%ZOhHsl@uuc4enQeCGzUwb5g6jdkq;g^4&7UA zRyZFRtKi;Dc~E|#Aw|?=y`1y4LL4>rrNJ{+jV94Vx=??Qb>X8Waq0-Y$0FrRd%?1M z#q$o2$;pMb{K$>yiMdK5O;riSWzkKr-UQG^yJFrHJP9yOebMB8vBQKOH!dLJU95ZW zwVT*w$;Cms5lH2O5M$2agOH3Lio`~PUfw^ooUZl7Co@1R_7t;A+5gw0xTH$y z8};4h^-!2DcnV|eC!kt$tj<-Ex3*?>=1`z7cbxVGHV~M|oydyJ6Z(aIed9nQY)EoC z*Wl(H`;htb@I*~l*QE0Bcbnr>xeNs`jUTqTbJlG=*c}xp965uwT`1@+UVClRPatdHB$nVu4H`5UZXDx3yBpx%NzOs( zHnMQxnarZsG&#_hC;f=sW69FmdCTB*0H;t;ww?GesO$=70yF-YNX;8Sxpf8woMn6BuL{cR)0=uz-1TLxoJ|m z($UxN(5Jmj=e^#?mPSM;U)}`aQGZzfeYr0@&$h(}g(zm3XupD7$_4>hbX4j{9-N8wA{H9=jvlZ z@yi3<={x<|w9}}XjC{tK8F-(e{|n!B`}19CwnTQ@Y~n`p5h~KBCC3shSpr?9jwV zSS`u*2MoI0><;&hn3$%QGVk`EG^rbkxaRJHM@1~FtjU!)=RP{u{jRp=KHtElJDe}* z_v}rADVCnYcK8bw)p3ULsZf~K1Q9Pb5AD2{K00LIF%o*6I~(XlD!FsiSW|?YyiyBVe&W%B$muXQ<&H@xeIp4BR4_q6^}l7M|%MF(N!&| z=Zf!j$do@qY}kk*&0{5@x}%&;CPV|QVGaiLXaAu)z4ejLXfdM<@q_gtC!c=fa55nu zI1$~_lwR-$CiDG97KviZ@WUCV8m1BS-x;P)k$_?Pq$iy$@!Nl*SOcLRRBN9lx&H7q z{8>{5|M5W>(N4|k_2`G-spbG3RShWBniT+-lB$N*1>#a;k z2Io`;D~xA82Yc~kyyWE?6NU@rjBlxPiVvq|mVkgm)@jkYL z9{{IB6mkVP?LGkA8*%&32LfGhJUr}Kouz)Lbma@bEpyalHjtIlk%wXM7q>)y|+=jM;W zXEc1OxwvCJU*~M2cZUNa+L;78DQKBwtlKF*Bm9qEU44ao&u>6rdPd!^g9`r^_^FRT z+=h`$*cs7RPBuDFp%(*$k3(ib(4cLMFg9!6>N>!~b-+Afjh1l}nPNySpvd8DSE}p= zpnJwL3vNixX+XjMJOrPW2{_?+NtUuU?^8Q|`>Lg8U4JMgb`4#M;BYxu>}Iwddjwn% z;rJP)nY*61r<2q}hG~nMzTmLYPpUoWm_h)F9e*Z41Cy8x+`& zD=+6hHl%+|xB@_J68USu_F2!?GO2u~FE>IFXEUZ5QAr>Dardno6?;BvsO-+aZXbVQ>6>enTkww7fp`-X3kE;g zSiCbrg~G3Zl8W>Bu5 z2bW~D8DSwfGqKP>h+&a{CJlylMkBjFw;fM{8Teq+>F3#*)_`Ud4{?)vl;daagyUHf zfy8t@0X~OXZUnq!)dHF(d%v`A!m&nYwd?k>gL{zmAtj*y81i03n1RRDa8S z@(yU5`+9fM7)-XJtTJ6 z51-=Rp$o!i(>C*?u_1(M)j55wxox>i-VKcWhP~QwesdUJ{pNGu%4n|k&3dZExge?g zZdU{;Gb9G04oi*i=6XaKR0BO1M25<)Mi(#M({Kk8agurf^%|#-u=Vimx%Ur2WUE6# zn~W~QHn8cL_?a+&kCrNMYA*ZFsW_5#Lw5EPC={kx-@lN}cI^k)iE2fhVR!BT*>!lY7`U;J^X_0gGUAC% zZL`d@3gplNyi#)h$QtLSj8_e(`#ur15NA>=?=l7?( z>b8JVqk|*(1}-iAIL5w9fy2!?c2&f;prMam5K5}&L}-c3SF8ol#huxjvFeZdj9|ua z*!hwZ0lWCdQ~30v%5Yqi!l$SFQVd}wkhV*{9trJ%F{5_1Eh-;N>!?%u+bu@i@Jk$c zSkwpW;#W&f8)Sd{^I8*216rijI{1ct|yv;GfF{VTiYO*W3 zCo)pd0gxszn@^X2GCOe8ZoxOzGoeCNs&`3#0>yI4 z$MqmB93y`rH*UU_n;bIe0_agZmbkY5$_!D9(i2$x*=W6=w3)Jc4!QuiL6gw_UJ3+|CNn*4;czZ^VEDU?k>67fe1@ z596LbSNB81X+Nsfr5k1Q4x#WtB{3mL_y{}Zml^vy(1C}HVWVD(ct6=5`3|HH^8~04 zdV!s4pyrx<&$t9)LN0qJo`}%wX5*8dR;T*mj)xze&F!?QXKRW_=k>6@p-1rqW;$j0 zbPby}wNZ2gE8jUqk-h=S-D%pNzsjGm8{mm8HgEaz^vIjdmb8{66Iw-)v*|cB2I>iP ze>zK-TPQc~s1^5k!N%fc5EMLFZll_gZ3U|ecsfIp z%)8{Eba>8$i5_RnUSdubWOk8WlyJgoM3+ksk$|pGy_sQU9{I(VboFBM2~b6el)id^ zE)w=|--Pp1O45mJn@6M&fqr+AJ{m4`#r!KGP$+T8aXRo053XF{nrv#YFs(uZpa%C? zh0ysEGso9R>l5rb`H5PEn9(UeIQ|%JfmNtufe^1i*oYiq@x~lPSI!fKi{**BO(GiN z3P$W;`xHK_X1hFr8f@JX_7uMpM{L;YX;1>fo2MQtXUnE@!Fc4`$S!Z^BAcU5^qop> zV9<>Ej+`2Y4dO3Yn@aQ$M%~sUAFX7!BVGgb-LNaKDbkI8ojZCKQ0VKs{3G+RyD9i+ zz4!O}%OJAfn2kFc(7iv)r|=r&NVQ&`UUo|eDg9-d^tKeEkY>Sw^_gA3>&sp+ly}Ol zSF}Ilxwyy~*|7G0AMC`Uv#ZDEoey(MIN?u8CS>w!2)|6Gc(472zQ}AtYxy zatS{-IQO8;5xJUDo`@Ae;my;vORg|q;Dt~&5P3=Mq{5Q!%eo&pWwd;Kb9u}amxNwz zXPZ&S)pg?sjDS+AcUrev?}_Oig(@@{zR7%EY}rm#Y=`Ufz`@KiZSnJZXGCy^=Pp9l z8@;M?qw74@qK<)3Z;w6a4^5?1@mAaFOISyinjpdFReNs4MRnRzZvaYLj9y07(BGSd zr+h_|bHo;6g`VF1c<(sqj7;R+_WV+~_cpeH{=?l5>aCe}(l7ROJ-SHvCU^=NKO{hM zBs9&kN**=OUSeNTTCLyDG=A=9ISuy(_Yx$(Q`G_fKBe{n2Ho2JISN5*t^yWGjk1`0 z%-&@50F9)`{yhH*lwG%iN&;q&WktQ<<$Jyn@6q`ZJHJch1S7ySAFZzK3LMD&e2;8bB$8bVnbR=wnxpEbpv#WC%Xz^j|ygYD#{ zup20jF#@%kjYB7S|9z|f1UJr$Q%EPgYXA;PxMYzN2we2Ofz~Q<&{q;ryi%6iJBb0J z6fxsaHWpsl7(dFJETUdx|G~K3^pmo!ER*DY(H=Vq{Vfwor@|@5dICA&5!c{8le`uW zw;h|%E$TwG7$19`RpvJfZ8c%SpTX{j^VOM|>r=xYi{6LajpN$@JCS%Ik--?#Jy%-m zdez-z*?ln~Dxaz8@$FUryHeft8fa8@V9Ov4?<910-jK?#1I|vrf!Xhm3D30KeV? zx&IiY|2(UikX2UXWlb8;yv+;@Kshf9)JG_eulJk!;7}`nn6Rop$kpou1@kCYXYlC2 zK`0QC5Xb~~7Ko`EB31SEo^U@M0k@NO2& z1u3AnjK-e5|LNC_{Rei0>q0Y?eLiT`;UUV63Ve(sjk&ALsxQwh=jh%o`~;j*nJ5$b z56X@iGPcW*2l2`u9iw9C$*4j6Sd71~b!dC!`;4lLYti)~U84dVtH-qK&;3)BezlnP zRb|{#>?%BFIx2LbUvR(jpy^J?X^b|kBcl$#FYN zxZ)8v(+}`H<#j;4pcELdxART4`_lx}?hA20ejXtDUzhTqqGA0eX^KJ$yB^vEnP{pf zs~|CtuM0#XvLN<;t(s?g&!iFq65V9OiFrVjOyy{fG^XqJ*DAS0puLs_o1gH2>xxO; zSfB_dqFez(NF02A%Q6HKF1i~~$4b3vFa8$jIYVm+)?aOU49S+Xkv#oW*d>LcP^9(Z z*&B2EFS>6Pcz<2hJ+NAawM85teRZ`7vm_LF`Wc;+CM9n$?oCctZ~Cr4_HtKmq>hkTzRxGC=%E z^=tBZWsNR~Y~+6Zt@}LbH-U4v09+UiWGu$RULzo2uvRXqR4oS>2r6FpfFrmHkNq;x zth6-ugEGq`rVNVsMO_}}RII_P)6ikWwxb8iAh<4!w#`jso(Dg`=RGqr>P(G&c)_ia zHckKFxP|}19;txwMuwz)`T_K$N=P0Fbjwdn~iPBFSzm>GcG0?RYzT<4;S{HffI4nlA=diNh^oy5G8{)6K zG{oog+n4&zj@?aA^b&5rHh2hczq&kV!(2;s801h&#B6^3tju&Mf~Eur`Ad8P8=z&I zcvL%OnbewgiRT5`tPx%%hjkgb+D&60CM?=MY|Z)RiYCQm#SU%VpjTId^zr@sv=-?ObwniYC? z){1_ZDAxd%fAsSjrQBzD)Cixkme3;q@#!gsD6rI`ni1{5?0pZ{GO1`7Y?8r1Qf#LL zvgFxB;uE=AwD0ome#hRWTJ`L7Ey&d&0HdUKcKs5UL&HsU!rD-}T5kxwUP9|#mG`9| zpRhY5ugB5rdHXaLb<26e#k`vntZ$XM*4R>Y)dy?y>r!2R&YOl~7P0TvJ|uO0*YNgq zwS4S(EHDpC@3|_h|0?NDk}cJ_Z>7n%6}=z;9WJ$U;Qy*XKy<#@p2#doDRTo%$x543 zXj^W;)qJKL`Og*3^#NSxj+@z+z|M|_&k_Y%zzFZW8cG*JWusH#vzU<6cTsq}NyDg= z?N^kd%wlO53!f;GOqX;HgYbN?)NkBR$L`_9weozCx_#BqHqWm8rS^fvyy)4ZzFg}o zyMXRNotSvtc46KwE3|}XZ$nW#m7~|ywPznNi#&N~ka?EHlj~U1z^0$7R;b%Ussb{f z+=1_1|69Y%T_K8ubkBxM9lQ1L^{Mt66 zoZGGLzMZBf=h;9*ou%scO|7C&KW={RS&Db|V z!^m(E((?}r^FK$mkJ%>#w16hp{5j(I>zDCg_8J**ejagI$B_=+U_rd^hPEYg7*Y-G zLcds18VMe@~7NXZ#(6sXHpG?8y#h=;QbMDL0iBxm9q(+hor~+ATyyC=^G4Ypv zBGXiZGaFlJHnmR$agMxgZ52JTNv`xhR6cWHZQPevO=K_gynV~%D%>W~@K2jY)JH4` zt;{N;WNCG=^Q>K<-NLK%p7ntgiH{NM?|@pjlk)&*GW{Z?n~fHdhGn^n|G5!LhnLz5 z>fCC&{0?UGBWIgFpic)!-$lIDlMm|0NfD|fQX*}PIohY?$a`^v3?*BY~%J^_6O66;A!{5)+7Ti{|H4(o4 zFI$ZUob;IbJQDUlMDss1#wWO~=93m*GS}~)+8Dl@H~u2U^)Fiu8{Af7J!dxf`^@lv z|I3IL;?hJ2>^(A{t34Hd0tZLpLGTLfAPsJ00X^%;0X+kl4v6P3JDK18ycq=sIYwY} ziZJE+GNTKwzEz;~=WPOO^Bfko3c18{E9RS5N5+|+-H=di@QK;@@a#;DTh;8@y!xf_QfWTyknP^u5dG~mZ$i?$Tk5hZ%TQzm zc6G)0!a0V7#;cN@?=^k1BHP^oqhH>{$`C%!W7lNki@4$3(k(#iRh+;kPA9!Kd>O@) zQrW#3*+3h4Cag4yh8Ons?A_TQl5og!=n6XxO_txVn{;6Sl~fSn<)rwf^`Nrr?UmEf?E8%#4DztvC^l(K=?E7;NH39q zbInbSyRTzIwf{?2JZ6P=JW4n(#ML^#eN~j|?Z7{rqVap*78rREb{yzE)K2_Yn3mBU zZ!aIe@n!;M)&2+2*arKxX9|aAkdbBZglxIQ7GMFyLL@u_W_>=kyGwqd(Ifl|mgXGD zRZ6;UZeZ1S^77z;R%^g-G5B&+!!(T+m@4W)^1l>3&DzWZ+eQCz zYip~VRtCVQUr6Qk7ka^q>fl*NFgF4n$LMma8P&7>1$K2RmI~`RO}H85#ooo?igB~o z9o}cfvx?-cE)*w%emU|MMJyXrrqg^SnB(2-tojz$AE?7 zytDv%>GDvR86ZcF;6ik_cfZWWK=3Lve0v>0!}~D&(aIPYAzO@%0XBmu3{EZ2CJ5hR zVsAK!(U0Ez_9<3UQnDK;F4w?y-lv$(w?{-J;cf;JZz%G00n6HWU`*7d~2eUjS33>j8!_B^h4t4y9tNlT}kdtJ8I^`!~` zB68qSkzSMT>+#RV>#X~$V6q@9?*$CV)x%h@kw|trCOeoaH;;8Kg2M*Dd7~g#^KBQ+ zdH!@#*G(Q+XDRwwSt$BdZ1;z=d<6kTYf`|_u89W5=GR-0X?^;Zbs^}{RCx_ijPCRg zZvLHmXT1UK)&8&4oHs=%M@JO|&*tvs8edN6(CrrAEqb4UUl1irG9JDBB-?nr^3kU7 zjj6frml#1i4U6CqNJ2-7lMw^outW?s_rX*~3{zn0W4_J~x0p$m7vl5vH4Soljk;|4 zdJ<=}xiY_kxmGhOwANCmRX(@{I?#O9znVPFm$rso*4`&$7g#xW>xDS3p!te!^8AH* zK~TIO@{6`P#xtuu54cat1Wbh=xozeJKfFPN1;Dme;hASWkyy6CSChg^{qko2-7hY= zJ#ZglAVrc_rxbKPSVy8n6c6$;AO?IFI+@^i*i*odl?kK_UBjJ0Z_jqjk?;4ekOd6M z$H^wClfp^MwxF2{kP|QmGk6kea#9fy9?ru?1$bDlFl_ZXTZzZG&A^$ri*byc1HG^A z$W1d-p`2a7FivBGXe%D~fM=&rxS^L$IoupN=8*WjV0 zQOBi|=v0)TKi3w{IuwOMQu%bBW6Wq|{p4|-^CLB)(# zF|GHClwZRpVb84dzJSoQQj1A8Mxb9X=ry<+hTWxRVLe#^b*^+G=jsTvphtlPZm!O( zd9o6sx_}c;SYG!N@&&3I2DnvO5EUq2D$7>WZZ;L1qs{%z+6ScZcK4?X&E$-~`FPlv zA>drtb&IsL2Q=*XZcSQnw?Bk(XB0e1}vvqt`ICZ>}+$N)25Cnk3L0TQyf)H?6gmozG2 z#``ET49`mB3<*jpHgkHdp>1c;`Vn9GM0rz?_wO>raTu_*9UOa77Z|AcAud_ZZ~=2` z(j&X|G&NWrD=Vj+&y9NfZnj!*6g?S}<=c;Q_Dp6gQ?=n$ z#lU|~@aD)9wrO)|u_kqS6zN(Sq+R35XtG}&?dET0Vjb5%u~2(t`@@N9gjDdJiV8PpP~ zI%~pIIsId@KnF~cOLzLkb`0;>z=Qxa26!W8?NLJDt``_l(1U0g9yS7A1^nsFjXC2ts+xipQa)YsB_hmc)mR9=EIP`W1!CVZ7JyO(kZQ zUdsdOT5d)cNn*q$q6m*zj}e}gdJd?2#NxzF?31I;zMfl-`E#=JHxjUHq_L++W@xM! z%bZ>cM{)dbKk#m`$^70DsO8)ae84mFh*i+S(@}%n2-l$T$r$w0#rOjjskh`}Y_ru< z>v2lT#O~1l4Ka^-5#$0CYQ8CwaENo=r0MeB@6IB4*~yEAIcGsap0Tpj>O;0Uo)(>r zU7-fk`|c5Yw$Svw;A77sZLiJz3@V0@M=4gNKchYgzXzmGg)lm?-5`X*1jLzcCgauhi0|?$<~4i;Xn6IR3gX z0n;hf=(RZFf9Rn1-8vMXEG>EW%n#k_BjU&vwRO2&8oOiEe6?U_!7cT-VZeoPmcNfiT=QwNObp?7gR(Y-rxRSbjZ7ZULWx+SGe3N zQQiX0_fa`sZ8|cH>z3<)tK!!BnyXj=DF(2_aP} zhjYP!qMRAtPNGL**BxwxCsbY>=|)pawu|YICG1*)=VE#Rc_!Im?trnDO&}@Jt?xR@ zKa;_u_f)d^4LSis2DjOL5urCS)^}zfJLn_ps~#|)gvhMwQ5(L-C9Ht0VywwpY(3<# z#zo-Xs4iy1;y2HmfwDeyTLRF5K9-jcb2K?6kzKLvJ20OyGMeL~ovU9BUXOVoEb|jL zs~=w~@tUo$Fyj(4Gzb|~S6jZ?(pI6Hg*bItGT}P75X-+4+7@YWq{&%!HabBGO0tfK zh8Vup)iNqqua$;A-&rSxs zn;t3pY41u_9A$Q8+L$u>gR4E>XvpF&SGk=$P|FZ`?$Fq6R*u@YLQqJ|iu z%C3cw+*_0MxZ?xaE%M0c$)ngBCFJj%?ri2J-CUlBWKI4)8;-$!{o8u2XFhn9^HbPA zG!U;KiHvTo%d3wg8b&rTM@Hi+9$3><1<1WSi7$emb} zVV5P#o1e42Io3M&M~$m4Z&g`FM*i^X)wkDSf_xng(6MqeZ6 zvKtORWTnYI>k$oB`$2Es%k*4mj+6GcbicOC-S$_NAdd&+1jhm&-!y!;QDmc)qJZ@w zIji;>JS{P3j4PQC{aZ_+a>5-TdPd`v<$jz#G^Sv)YPMtcYBns*^}edKWMORD(yL3g z9`PI&2X{<-z@t_rGOW%2pQw|-k5s)rms0nZ-;E2&xv=vqnpvDgBQHYEU`JM{M07Uq)+FxV?+h0yc#{4=bB21>-aJ7B!=ReAdd z-i8T*ks8Q5Ina;~Mt=%~$E0wrkJOC)pLN-PmuEugKr33MBiGtX`s1wg)h?)KMEmx0{F~6lk51(^K?U(NVp23X=se(+{D9(=qe9i zIai9tYTQW#3U|#?=?PbkExM@Iw*gmV-0mz@y0LeuFj3BB?#(p2qt*E?6f^ zwYHibDUAVpbu%M_L;F(GJoH1o_pslT0W0JoqGvCW&iczi#(?L5r9hy%;U3Tz_n6G3 ze;iOdXq~;Szf%dTzM>FzDZ&$JzuY7X8XRJQBs@BaIT46^2wKNRM>t8u>i1q8$KDH` ze(bT3NS%au?kOmoo2B_9o?b>y4m0?EIF>g7Dzgh$z96+Hyar5E=m)PPp>?M-1D17} zGmEICvvy>YZTAsf?m<6+-$w)ZnmUL8F{mIIY4LkMZb?#dbZew$4A|nZ0!837E(rz` zf;)4nbSGDM2dtub%(>L-rg?O!)mc!?vvHa)|neXA0>>kq6P&!6NGFd{| z?_jK$g7Scrgx%!Ts}G-F2LQut=FmB|gwhpIi7~T2gS9%)-3-Gd{^jrca^+&Pe}Jq4+|dHp(GhV*Wg*Ni0<710%b&Ih`H!qz8vbyA8B z=l}y+$p|XS1KHbt$^gEsfGat%Ig`n9!^TNdbZvFe=LUB&1P_NA@Q$GO7uBWF?>kT& znw(2JNI}{^{C(A=&%rIHI}2m-IWTdllFs) z9fPQGF@gvyaK<=XMFB~E-O5+x1`T6Y=-W|LuR(1|2KO7vR-f}Uu(j@AFUEljSCBfI zdktbxvdTg=*vdpd6pG{pPRS?_rNlcF;7~1uPxBo#rOJ7W5llc-#(`2Bk(I93BsztW$}m>k!3E3e(lxnz>FphBkU{$OrNlo`chNqLGyw5EO0WI_2I%y zr$g{!NawtugmZ{%p=V1;?f!GVaG1A3=`L_0CIfeKmNkjw5VVm|<)eNbydbhy~o2ikUI*!w~=g&0Io)f@T#PZ}c!klw3Kv7<6@K`~E_# zzI_&P0Y;{y-}aYU=XH_i`0r5~f@3`0$mlJT-B?4;E7cQUgn9nJ@?jvAg zF(PC?Spg+@omg0Sj<^ye2kH?mXsWv3VKlHX?>P_mG{@?NM6=8tY=SNBU^CAQ`*3 zPF@I}9SLsNqO{3{xCC18MTI8_5073Clh;Fc@lH~>Wiz%Y&Q%1DD7?l!$N&|O`Q$D* zo!(jEN2MD<8`#-LMn+aC#2o6EYS5n;AII_Nm|hI0vRY3sgRS>?OS4$GBAnJy^??fr z*SdZ-sDw5Y2HV!r z#;^D0c<{u0FXhxSxH=gUgAh?kQAlNHM-Q)e8Ak}9$XkG=D4>l%;>;D|%#A3@$`r^s zXG}tawu`-QGpqMY3`i52oI*5QRk)OWs7iRs53{tK&henc=LkAG;fg6tW^*qoasq%; zC(QojhSpB@KihKNG#8d0xtnGyk>mWEDwlhzU{XyKdXn8#o1n?1)KVSCm6|Q zTExb1I@wAsa59E{mXUW`>$r{x#n?q$3zN;iL^C^my z$f~X#^TjY+Ph5N5H7N?wl3%?uC75V;z9ftpeg|Gkes`Oq5VWxtgXu|G-R;TZMhnk| z${XrhZ-V6qKnOlX;!X1npqh|C>(<4uR@8lvIiGes@7u69S@zcl*fAI+v1tM`pWyW8 zg8U9b5AO_RHVtRIF2pkLj)!q}c?Zd+P(p^W3f(Yex#nQa1({(Gs`#(csKZLRYGOxF zNP~is60b603?@=YD9WNi1Qm7(h3w~S(-<=i>I~`#YY+W^Tj_*K@vGXb>G3prS zVkek`1lRs|yU1Futy$__;+KmY-$I#5sC_{;Z^@u6WE2PS2g5=V6|3}InP_ag4;TFt z;``!gnOrut&A|VH@|0B?HY{<^G>9#Ra!(2^7&aL%0c9WwBkd#KC0>SSs@KuBZC za5RBR5WLSHA-IwBmnPCi!G7)TdQrr@Hx)3&QD_@)m zZIfGRyg;rHC2B0ewEN`*F=WAIL@)=h*+!JC19wdXk4E255{`CQFg?2r70fe7>R{(` zzx{K3V3GUwnXJ8=h ziG=QN^I6`T0FxHzqmKSumsL|q3L zPWOYCpb+SSC@9vQW<7CS1$Ip(T`5ZFihE94F1&R6_7hiQS_dI@uuLE9GZk(enIMOz zc=pnDR<6hWJyA!$J0|s~cwJskJHkDB9aBsnnFUzRIU{)~eebw{Dt_N_D6VmgEl)Ic z^wcakl|`F^b#!K!qdy}-x61v+vE2M*>8LFaFRxMvn6K{)sFz!7NL(r3^s6idBSV1W zjVFyOdo2A$_yGl!W13OLby`dJ<-$e9v&yZZoZhIA7Yq|(LdGYH^#=c(d~t-#uN(aZ zYBtK;8{H${F*^5Exk%DXlMY?s&a(%aectGX8EjJFM1hoABseBe2D}n5;=IaxTxfb> zmh+x0z)8?`w+zdJ1d|J5pu2Tp)XmrNQ`doggf<4vPGADR``-HN-C6bPZAaSkT1+!^ z>Rt{T*>5jzgXnMS%p_VDp&en!-(iH$7Or0|IS4Q5@ZHpA*AY1OVOfP80bwqcnM^hw z`Jxl84}&4moo5>D=@Rs7sQX;ooTvN4?q0O82Vt0o<@C_l`y`^!nVmTGAzz8I2h{f_ zP!}pD4zFBFsUO>k>k(@J-2En-`KOf1PzE!I0gq?z3%LS1yvOl8E!L15(3X-@OF6 z#u1N$kKv-Pf0!OqQ3WGf7?B~4B3}8FZ~1VM^BMmoR)6o2{0`Hl!=;)yG+4GV#9Q!h zWh0fYiFS|0i6J%PLbFLUL!jP$X`bng`2_CV{uzeAJ1BkxqghG60mjIzV_f3}eaq~b z86rwZt;ZKc&8YfW3~{b!H5>E@xb0*dc@xsRqPy~CDA<|+x1_nGz+N=Wy7MPG&HKjuM`hjboiO}2{v_6odz4O zJ`Lj4MlF|fY``IN`m{vSrCe=={D1>m0t1@zCdD56yneL=#X0vtMWN{u6_tAa1G&m$ zM>0$|=6qJazO1k`lKV-Qy$c;1{i6BIUv^F0myticvB`WV>NI7!9n9%R?X42rKI-w(Mb8e|`!I75al^0dhfD=%Bzh|L)l#QgS zBKXKEm&n0_!r&Qt*?qfMwprv2nC4vW()*Aqi;)_hWp?qiSG%T;yfZ(^B`*VenMur^ zKl9x535$0VJxLvJR)x9>5LK?En9rCYXQB3+w_WeVhyB+Akpn}63X}e#?JvBv>7H0R zS=$>Yx<5*1dy!Zd{o0mQU!3p9{$ily9%2m2h8M4F=W(H#wA7B8osthzHgb*)iff3= zq?&JERZ{`An|V6f-jM2}TGYMf_Np@-2Ct4h?qQ710`pW!^SyDCJkJdO0|B!KQWID` zBbTo*T?1S69PCt=kWKauu}@~yDnrp5v;_`)!TkXnx5MSf3KP2wQLeMuOC-U?mA zkofe*VQX*8iQxH7T{u7Wchgk5yGgI`lf|9|bGAi8}mF^GjOi z1*Av<#? zpTzN(Yug>}C>MQiOCdvrgZI5dfd1dFc`S<1NFz_krY)-|&`P)bi~p?!gjt- zag{qV`+OL(=On$2udy-OUo2rCW7{9p%WA1~5Wf-O>Z}dQl5eMq)^lfume2z%2Es}_ zLGkV*)xe5h-Z+sJM(k2eFluwlaU4xv=%vs5!=A+?A=e&>sWtO{GIu{RMXos?G(iW z@jZp^(G^7I>iQGSM_o5h2px6h6c;9*3AAVUSJ#Lx0$1@XRS!qd1urU8dcQ`Y-O8lMu$Xq{>4y;UsSf;&zYhcjKp&WNgh=ajB03;swlPSf&&88`|lWetUc(k6EU# zax+j&W%ZGlUU`}1PW4>C_q?R%lj6*fps#NcT}3u0x9Xyq8M4Lo0j=eAzKPe+nFqm( zhLWD&zp}~a(oJjUP#gABGBEWAmhww7+2}txa)ui4C56npD<-DJs(h<&KvA4*Dc0CY zW2HMA!le5dAwLxM@$SO_VO~9>@rCKBP)Y_JI1@gTgzc-6%$r{Ven@b z%;RZ#h^V_#rcXus+pT+$Y8w@6P%hByOo8;`8&7Pck zmL7J6XuNlKQ!s8EEBeU&cZ)_^e~zy6=YNQm(e-oSGlV3=%a+Qj@*;@{PKQY{WOUD zpx>Fy$S8={YhF}f?jY1+o&VD}pi=q;gzxb27_ZF!qbCaWXIB%tJZIy&ruz-8r?#pe zlD~b^9nZQqtqpq$g4$U6^-mYNF`!C&%}cy%ZTq`A7F#i&HTGK!LLtgZ3$(pEdC67w z*5w#F9~hZM1+B2oy`z{6B(V?FcqEaYmy*?I5aLyw;+t{H6kpV(lWh7o)BY-E({q?i zY1|b-2mC3~s|Sfvaq58*X=H@jY_d`HLQ?LcCy4iJE>y4`RRgf!6%7$vx17agzk*Ws z#i>n}hc-U{Xb9;ga#UFmG@Ud%5kKBmJ6>QW!E7_-rHiyY z$_X6j+PyNRMdn^P&7Gc;lzPqE;Xkh}>bCC_4(@Ek7ZhB~EwUe0W$;?fy3}}YsG?xl zF8}hC0DnG`T=RoHJt3J@V&$ZZufOHHr{>X!V{fx>ugBzW8aP(vkDq%K(3aZb6YEW+ zY~3|%6ywl;#p7Y?6`8)rhA}Tr@+ugEzk)F|Td?}GaGRsg0cPQ8Tw_6_v|zczkW%zK zt1mXCa&m2M^G3(c1K|orYU*c8z9%aA8#lm~E8g9T=(j?#2}*_IR*6TFnEGiTOv0VE z9#JWFZXbI--N>;RT?I04{t8DG30{7x+BDdgMA$B})`WA=gh9wo69+cb-{OosV+i)& zrdXC)`m}d4&_Tv%Tw@*8mCkN&n(1yX;lWI*%wOrYB zLRHIlbmgbBxuaaBb%m0oD`FmgvHSEcV|XspfOHU2$zyf5?p8#S(a z0@Ehf`GkM}%X{=rMrIXnZlvxB<)pD#W|=r3Pf^o&-$i?ZZ-ZdN(rmmx* zgDQ?E5{O4%Y>Yi^3(~t?ipK>}lwVOuP*<6t;V~&{G5U!Ewm7;b(N7 zNyX**`F6oQX8of>O=IM9*-Xf+R>n9hr9uxK0cm!#CgsZ)t^Adxpf=}tHsdk6XbvNp z3kg*B@?<`_f(Q>b*%vevsa+enbrf+4cn0m2=5BKi3tzDxe{-6=y7myFR_HRErWAD# zUnStRn0?Ayh-*=<7Ke-=$oNBj^1kq@E|yC)cDcOAe7EHT9t1T{{#LMPa;nK73M$gh-~ z!uSdGgqJMDn5pEcY+xtGC8npIQdcu3u*J^G1~qog8s_Fb_uOx4~^meF0Z{l%oHsN_?wFS7NEWYW>VCx4h~nj+K< zdFPVxc{RP(eVSWqAc;Si-MWw*g~Uo|;b?11eBo#jCskwG$t`0WrDW6$839{vg2qe{ zRMhF`=K~ubwT*uOI{pkNA7(kLJ8T)^@WH09!m}H5B!^1v`0T4j?JKF-lLM#ffHi#P z)sa+b>o;y(QTaFNdNUfUSJ?Rbx+IEAuN(1xNkUFUzQag+YejWB^4Tq<=*P-UV=&T` zo;J|T3Hx+m(7j1XY_Tb}byeQ28OaDwVoc#96D%>%i6X+Z_rfe@Q~CEww*!b11v0@X z_E&H6wYGmjb2fi=nb(cL*q#w_v`7urH4ZMEd>T~Rwxc3$bxkhXTiz|V)ny3RI3qJN z+bS=N`FR%`oonQeqI6lGn~OZFlX+uP=P^!kz`Pr=7M_=g@ILal66`j_OyhEov3TxX ztI9wSeVN5FXMh!3Uq3;G>L6yi0<$$E{f|n>N8ufs4cchN_lEJJPqyRh1EE$Dul|$;EjiS>tiq2h;CvYx2%C0jxP1+Isl`=(nxsVcP zH`nxhTd2m4psRa{zFinI3@5XW<63(JV=hX|`n55|{dLMq|Ag;!Wipn<*>Qdif3c+~CGFe%R zewrJNFgpGan&owj67{OzUt66tx)>8$!vgueny-uop|2SJz3e>34XOl`kt@?Fo|y>b zH=ZFU#XB#aSag=Xu?yr)f6WKwDO7rq#wYi!a$i->ye6Q3y5J{@g`sJ+x-zWBG&?uH z+^NMwTa|-DzxI9Q5@6x~LS9?4b=l2K&TwjG_Y*ZDUWt3e%g_)t_FT9;oe9@iy;7T6 zc^zdXi%_q=sK|bH>g0%C7l3zh&bo z*gt>%oRpG62e{%!X=NbPQ=s)hOJQ|wZKEVR4&#R&hdl4UqY}Vsc^U0KkATmkTATahjE+fA?gujs%1_wK1NLP8yMw4C;7R4a(e zVLo0V=QYm{~`8&VfDYGBfcRZM{sGyR7?HG zdv-*IbZ`^UMQMvlz0BP+uaV5*#WQ$UobqH#Ka$N@oK;UPs}{^Pc&z22qSg#d8%{{@ z0UOAhjxNWFp?qZho-^UE(Cx0l_u>8c+*?dprTHd@^{BpdMc7GPJ_{j%(XW&rytgg& zdW{d zXyU;)QjM+`22_S1{KJZ$m{>JGaY`f%GxsR4XQ*)Q7SUJ@!>+#Uy?ZuAF^=^41*>AQ zNB-CZv>P=ixmlF*$)1Q*(Tr4qzYEnOa6vPHaalSbu6S>ZESanJ6$PGz=nM)s`uOCJ zL#O8BiDbg$hKwAV2Cj^DEobXfAAMlgexHE_Yi<9jG{<;^ioc%TtGTYu@z_4&&D*sL zTp~RBPsS&2TdtJ?X6v1r-_aA9vko|HEwLr1-DEjk`JQ>HY<%EIR~*#n-58Gy7>r=!~VmL&-KPUct%=99@q_bb1t#tA=BoZ2*(d(ym>lU zbRgBu)jrzVl3_xR@lf!j>{;=YgxK<@@E+oLZoTvo6AsF@ z8$Ipl&%dHN6e2sgYve76o~WvGkZ3Au`(9PD{a&XAOFynMnViFIFp#ug39MEFEdv?9 zEX~gaEtJOnODbSyYw-Ogy~9ji!Vbq@dqN70xwT9t%M*dAPfwPWxkkVJTA#0;y@V28o-`#rLvwjaL*7Ez#qXZpz&`KAa7cVs?K2tmv@zu2&H^!!=tN)t?z%kx_ z*hnt!+tcH*=bZ{LX=?627g$wD^R2p!16-lXnLKJDuZ0XK{ECtZqvDbf$Ko$V{o1)# z>YacqE*0bj-hs$Mf;2G;4NlyRrnYK6)6-M0Ic~p)2|n#PGzvcMgO&Xig4@U%GH(fqnxD`$&?j2*P!4N6Epa#Md^KHUDZa$s`v`5O;F)_IXdpVXPtEe!w%; zhy7RtjW|1%HJ97}crc;KYkk6O>eKt*NJU>%=GW!tp4+LZUJIM|Vc9Ogst{#7QCKyM zV-$L~_8$tf;lC)Wh7v_5uFw7+s&6wHz_X^%hHT18UuvKvM{z!-3D5Os9Mxl+zkYy? z{_ZD(_uVmLvG!~h!!@hR~YRjiD^WJQcALQtGli=2}dq?HCv%$%tlyG6Hso{XdTFcR<4Tsp#kj~HF z-((W|9WwjY!j%3HJG)Z?4|lQ3RboH@?Ng46*>z0lv&!I;;e}}6<##;;=6?R=ZeVc1 zoPMn)HX^nv0SG#~A|Lud8^t0QO(9#EGM(ts2zdcgz_1aa2Zq8fh zN~Dx7eO`%-znt2BfhRQoJCx3yj{B_Y;P@B|{LZ=SZg%fcs#?RCt`wvlSxO!nv$a9^Uf|#DUE5;(JWa&0xQHm7tnS^$CYT(X z>Pe!HQrsA_T(8wnU61Z;7qWdvLS3j|=W_fjS&%fSWQJABa%wYob2j;NBRuo(`5Ud6 z;UIlm>Po3FPEc`__~8K2cnd2%%ZubACrZmAvw9j@+FbFXhR;S;?gwUC(QpAG;4GJJ z)PSYeX@_ZyGlyJNA(g#VJf(H5LG(vT0ixe%p zY5nQ({FQBln8&w0uaXT?ru-{(tGf6$fR|@{qNs%=`A~ztXhQFl{w{qRU+}_*dEsrM z^lxjTxud)E>f4XcN*;)!`q}kaoF76S&8_dQ0C$9-vOrAzHLuIMyvZPM=z}{u=&$Tw ziHEclMqEP#?Oq4kUbA>?R^@s03UQJ_KH@eBh|gVIs?Ba754$DLLGVH;6oY6TB#kgr zMhW_fr-9u@U^fOA8*GjlKtAcD=ej9V#O;GLux}wC_mJBGd}NitrQ!j0;Q`l|3F~$o zZa;Ei^Ayp@9OJgQmIJi=%yImi)2@zukdgSMI8m*l!ay$%$$&@grol&uoCKPEJ?U&3 z8e`?t(hMRMrcx#G2{m?n$s(3^mP~?WIH*aQF}R6eeTxEquA&wPt>xeKQc7)1*_z0A zgWaDS_rp-FFRfe4%)9O%lPOG|tZ}(eJ`xnZ1%TD1B>uSG+G~0o)R3<|YgYAMd&HnaiMCXuFzM%f zHdPh&asgb3#|}u-q3W4-qK9h;xdDE5ADEWbnOu$PEg1>YU{-B}EILyV1ARJf{_HHZ zt}HJg`No=l4os@ANa^NK3Pb;O^2xk^Q#QhLFBT6(gL#s78kUJO?B-9%l!9s5TJB^; zq+XYpXWC2@G`%ab92Oj~=vQ>U^NP*o{9Wp@v9TqeIa!r=;pM6WVsY(5GbU=ugUL(o zH{Y`d1($Ca5K-gOyFv>=badP$BR;r~<#~f6k(#*A)LNvP#pw?F*>mqU=d#B9cGJ2q zWjZp%?8es6*ppm$kevh-eeU}U+k@s#n=yBiJN1py6}z{kgiN~X45vN{XZFU{g~*$j zqZfC#*H6qEA<2jHk47o%Ifm z@edadZU_#Wbc-ht&n(+T<#PWF$XnGDm3+#6vL89HqM~}$2!iLDKEReZI!8R8(n6YC zy9cSho_{U)F-g#bAvAkBecjS7<}1CgS`)*s?|mPs!^e0;fl8-Nq$=7|gdSTnfK*-&6t+xdi+e z9!V=h!yI3*ry9GyiUoV2?v`o z+~YUpK|N&U}PiTqh1%_`OIn@_UMS_Y-5Uk z$ayv&`wgF)Aue>*2tMf7m6Jp6 z%5hgX$}-j%+eXcr*w_u)o|EQ2pAr|rlFeG{bDmgdvg z9Ni&#wwn3Q$pso!Ltb(l2ua3B=8AORpvAFl4n^w%ryGP@g3WB#N^;}WlQ<;s>OuJG zS;nEvn(+aLk=$rP%7x$Yct*@V3ry-w=%|B8B~9+7(ma7v6o)$BMZAIP9M?(NeV5*o z0|om_mdS5;Ot@@Gt5cbLLq^pWk(cX5*d|`ClWOJi6LWQs9&Lc@^UG=W6Cv@BQS8oc%UH~Pn ztky^vLlN<6`R4*E?w^JmiVZ%lCasD!Yro)lK1irj>WRF9*!iB3Lg)jQZoBBMXar2U zpFJdWxAQ&7jmb_Oz$E9A1C+S4>7cqr@9MOIX<0ptDNGDC#D-`Uysvk1h(R)8#2dP`io1) z$8Rm1CXGvfz_6>Uq)te!y*@CA4_OMIO2ZsA9^Xf3f=yjwn>eCjKyfldCp zc+x=T`xhCiaimDXEji8)DTT#%@y^zYuI{!$*nI~)GpYIKTnM3F1EB%)4F`~K7hJ-( zujS?|UrUAICqL%(-`0?8@39lAP}G}6kNlPPHh0lE?bE`#%@qa-^~)~k?6G_P^G&Z+ zXoE7Dy?#Y$oY!2odw;PxWXs4e$Nl2WHOxyGYz|s$vbM6Xu-p!n(*`nLPM$5jvz+T_ z5Zg9=TLIe9tQULlKLV3bMzMZDxtsLBds}SZ4zuC)hJ7>VK%qa+?h}1^w0^Kr{cb5q zsp&NB>?>?|5X$3-9r@pqayVt1@!k2!bNcjNQJz=xXVHJJH}|LW>4ABr;(* zlpH;%G&l3j0Q(6ZhpAxaGX(aR1WaCGLeZj_CVqH!k6Uc5C9gbI6Q0Tq9PhEV7LJ~* z{5ItCmAyhA84dki9|cX3b{(F>v16}-?6YES)8_DVFZ~)`9UOBsN-p;A^&S(64&P|2 z_fTlSQ&V6f@l1DP%c~JNuWT~(+DP5hZ1eRpr|v`OnVvxF3bHwA`p7^!JYUcduAqGM zcGJT$eC>)9W41Jva?_Y;?=+R+i&sa}=R|4lTqNOsQCDKiOHX>;+YI!oS2~fcdav!_Y+sLw2WW z;RQDxR82w->0Tv5NNx0JDDtc|Upciw14W%WQrSUy%`2r`k<`%MugDnC!SSc#0&`P4lYZ8ArbtYu`m7KbT?hef47h`vph+Z_>W#P?^AtBOjT%PWac*JAu$quE(xf4HG2_jz_Y3 z1o9Hx8LuxttpZgXL`@#08OJ0u{0_U5Cc7`9Ys`1drnNtLMO^bO>x5r7!KlG-&s5Kq z(BzGxaH*TO8<>8v>y0ePiQ0`K;K3?9h(Aw>L+`(@uQ4u+?S?hl?l)a(e7kgfIt2-- zwvMWNVjCXzP)Rxn?U_#tt=YRGp=^jmKPI9_cI!b6@44s9V7T2jaCO@+(JmYXqvL&P zUBn|vA|HM^d1t}vk+`3Alcs z+{8w1RGjkp>kGeG&~*N7W5Gb#dug<6yk!zkcJc(J%j4^0ofSF$8H3{P8GDTS(H3U_ z>d;#VxEwavOB*!NxUwoJg z-ZmV;zh!M5p1IuqgY|UIn4!#C#Z|{){}C+{>xS$L7S7ZwG0WqlPjAgPgjO>uW)?Po z-98<1dD^8Gr+wS~r@3d1%6cNB1bL}s<+QqlxKx$LhqfT~4_P#qs}2z__iGz6 zsj-SZ(&YS6&b&&1@#dK$04$7T@-n8ZKbnlm{+(>-GyTHFKXLY zdW*-=GIi-Qrsm2idcyj}>u~t(;N*KnDX-yK=Gfe2N6OdvDbeh#i{z~7^yOsTcUMDV zE+wNgyzQyG*(S8-G}poRQvnv&)(?77;j>Sj1c^s=IFK+4A<#<1K zT@QO8%0u|P-X3CJs@v>t5Oyem)2`|zw{-AS-}DY5C20yFFlet9@Ai2NgQL!67~WG&&p$9j`aH415!?>Z{t=^8kvyE|B`5B|_Docpb5wEK zJnt;eXCG4kYtPxxC@{|Jo!Tmf*SYtvA7+5^H`B6i*)U5?lwPoRG+#qUw`G}qlRAoU zgfF9*5ppj1gaEpyJS-ymqewUyKl;G$b0jqA)7cgu+enptjp#($gZZ4?>`51W!-2~a zvi(_Goau_=-eH9ta2tEP+JZh)6E!AMWWgARJgY}tzqOd3K-XAjMbGMHr!Pa*PLr?| zEbYJNsXb?j99d-^|7yNE>9>~JaFgI1tK9-y1d8(=Ip(Sf^SvkdMCm+u)Wng0`M%H#LYfmp}DT*dWGHB(v$Y@^x2z z?(Ca&KOc+zj5j+?raM{JwS@&pIj*LS`s$F()#*YK`cBx8r1*i?*ryQzGp9i$1a!)Zogwz zr=p_`lPvrD%>Q$$7`YKvs;a75CAXIW$g&tL`?|8wp-~`i4oy;-`sdgFceW!WCXBM} z^8xkMQ9(r|6?AWCSdC+^nZS(gE>k4Adq)V%5x6?o@xHaB;!nr z`=u_D9}kWU0#eWrz{W3lfvfPp;mLpgQGJfo^+EfiH=X)2aOQDbpC66b22$pT!T_2O$32+MgFg|AU|cJGwZ7;o6t~=f4d!z)i7E;j(0ZereWC;OD*Fypa9Rugftz$lJHACyAc(b#TF}F zp}?$`m~aeDg4egFffD5bI6YCp-*9T32&KPHQ{Ssiy5MDR)MTk9W2s(E37bJZn++M@ zGONNjs2gx}9LPvAc8hv%7pE(N>4D0^Sgxq$!BXq9;o$@HADSRh`g5*scN}VW``7bF2i189m_9A;|)b z>Dm}XEGg7tU&7%{*?C@@naYEpC|kR6Gs})AbgMrw=Vb!rb&QqcOzcD%UiVHfA|fJ{2QFyzqaJ?Hmm;+gdF2d(S{Zk+`2e1?sl}(QI)7v4 zT@ZsJBtpqWUdvYszy>jp9Y;4oI@baOuJ$c9+W>x90{|46jaxiRU^z$~11TIvB8)ON z#xmbiB<`_-W{}~AiPGFMf<1TyCP@+4bsSp3|I z6cL|u{Oh_4x`_txH5zeoV-~IVrqD<@IShbU=ymCw<>mnAYWu6lvLB@ftdC|?KoJw8b19l!lIb<>e@E`ERyOyKf785JxB z_44=>6da|cr95C_a0xKZDsF%n#Xkd{k`_DGfIPSXoYy?J-)gMmi;9Z}L0g06;rC7k zHFxgAnQ?%79RMh^Y;+tC&jOL#R3*C&ZcKzSP zY}Ey~8a@F5Ft<4JxDsMj$_A44GuaFNZZqyBM*J6F@-PSn|gFRtv#csv9M-Jz8789Et{mAEv(32!E3*Z+c&$+`mi z%j+8{c`PD+{hZYlzq?q&vQ-t`*Q9ZLA-bpc3t%EIu5Eby^r`V1B4rX8aG z26LhZQx6Iu(|XpKOi=O+lvNN8e%x)^7_e^E!gLM~$xA*^7DCcQtU-}F15Yfnk{0v+ zxG*zrbcCC3H%#&YO!HXhdm-Bl0VExScW{(h3?BksOidj&^#qs{j9Wi7n=4JfIyAE$ zMcaP!^W}HPPv=k8Ou6eJrm_Z~p{Qk3n@4Uk(Qy)i`QkBjCnIN}BBnomz`DEwHq$9B z#TEN2yPmoLj#4wVlA;bc32fo2{{PB54}YrvH|`q;=a|Rd>)06`BO&dBC|pMKxb_kP^}!R>J#9y-VQROj>gT<`0;-mmNV z0yCjo48(kHi}ye>I1d^eNqEf60u%3G0hJ65DhSw2xeo1M!>byj>~*0ZYni7zzXJ4n zOXleL@H?1W3ykM^`mhG-c=wHUGL~Y?rpfV^LUrg!H76zS!Tf5o4We@6@%^p$Q^tZk zA2wVAKKWa=ZCaos2-?}~vUVe78^PeW=J|uEFdE8>Q1$M!?s2iP+t80w$6(MOwk{Oz z-W-%e)j+eo1)yX*Ml_lzea@U)=P$Fb90vRJNhJRPi24`{a%BixBM9ocd75#M9)VFc znMMZ+aoik^z>j{k76_>^Q-Gn69`R+;k(8Rl0fWXg0!NpT3kn0$Omx-#Fc>V7c4qQv zpF*>uT5*~K7+FJ?_sQgqyrdkjLY2a0P?~+_c_Wc9zEd#%x+22VhkwlQXGjLwB5QlQ(mx*`@vBnZ@w~RUv)EqCBV>X=27QGZ=l3gPYz(#@;wzR z*}#?9HX2>&5;4+-UD)+*qYD-wV^i=dtWcwpnKhm;&kcV4PuXqB*Lr=Wu4(qQcR0IXa)Ti1Lcp zBRT;}zBoEw7Rh)h>D*fh4WHtQPD8F`MZdF#f~X&8Ntq!f=<+nMnQ%d>7-AcMJqOG) zZZ~ROS{DkM%d}q3&kY)B${Ttyk}cI83j=@6;{wr{6auJ|P2UH+**9!w3;Drq2kYT1 zMbxPxbKpc|SIk`#0y_jTQ5X!%b+HU<%os3Y@q5iHKB_L0iWJ(WVdg0&1gU-L-Tv%# zcqw}j4~7O)g$myxl|zbN+S6I5Ar9w-$U!2H4|ksyLuFEfcIXS}3%b^xYbe75#B7;~ zpMLwwC`!1d2(@*1P@#{-=04M8=PK+)g+gv^0s_mi3JJYRrs%1X(~nO0cLP_|p{ z(uHEDgt%RA4fuu}O;EmXRL;GEZ^_eoAq#}f2>b6b7?;?!}~I;wE~j>6x$+tekzoH;~U zmd%^R=qSE_W2?pWUUr!G@X3ekk!L%j1^b?5c}#SNUg%}!(^Bk)+^x;p%LQfv6x>H` zcj^7{wqVL7ec^6FJRw+ZoAR!VA&|T#E`zz?sKo>^BESqTV>Z*yDq(5({~i3lEGsQ;0B~>u+>Yt>w2iG z77ct2aIH&P{$$D9aePY{r4M1;o(2sae}WhxLmWjMn46x|1-olWuwW1Fjzzlp$bdbsk%wJWnvXua}Dkv ziBGfB;F4RsR9D7_M(yootz7r?yG zFO^Mc#qyX7^_xgem{pa_&u6We2b$afI%lBl_#0$o+N(mM6>-S70r1ysf#+BS)k zoDXBBu3iYGou86wKcKsa?3%p9#>B@bGa%tZS#{w-;x7;lHhYs5_h0_#rqpf3pkt=dO4rt;KMEhfZ?(SJvJpA zw8F75){8RP?k(AuuM>}vB8~o;2i3QOG;=H{SiJX_+Wq`RP9`6!j@))o6UQ0wIAB|E znozLYm$l}lYdCy7lN9VkPMO_Q>B0$a457irn10WfTi#bM%Czkr@g>xLI{pA7ZCoN3 z=(c>8GpC_T^J|Ja?9QW$Ruvy!r;dO{k4lyXF56do$gVXS&eNvAwtH0Rz5kSKu*>Rh zxbi~5)4o>g92M-gU^6cGyeKl@<c4G+*%}z8hWp1OYfzs1z()3ma+8*qdcBV7~TX-b@uSSn}XFC2#uQVtR@_B)C+s zvC6^Wz9zw28ks@orbn84HVPr02?#NV)#RM(K90wKza9HA z6yFw1O&q-cPc8q~YaQ?qqKKBWAItMczn@+Fl;swt zWJ2xw4ph{NWS;(r&F=-Efn!&6oqEZt=@jJL3x;|^J{6fav6pdEEz^Oi=eOgo`{N$d zH?HDt$zD8Lh8J**$R@Xpsqs>?h+Z#RYUTPOijbzAYE>8xo_b{X}6LK&Zztrap z5t$#f7Wf7QvZ^lpq$~BF$4i0>)El9R0zDP{`s^=nyIHNda|O%wpE#A)wc{~aLPefL z^@lAS)G1)BTHLn@SVVf#NsVQBkSjzL+NPW@VdY)-`}{MLtfT7Nt+#*I_t{Vz(CP_= zwBZ=yfZYSw$dA2}U*#4A8k_lG8BL!7U)`^O5p6t)-gCv9c$dh*qB(BDVmRItM$Ehx zsh(?}bD^fTS`+f^mTkwpLuC(W4Z+o*-F9_y02H(tph$z;YeKe zQjroU<})iU;de1N+u7YP0|T@^`j-@*Z%til)g3GTyOWyv8X6wN!zpp)1R4{ed<$&K zfVSI(^xXc7Ee^ak_?jO~Fu07r(0=Fy#rx1^K6#p%DF)i6mFS>vU=GgHN_un>3~{jn zFj>%FbS$jJB4B-{0#H{MNF+cnQ(SX^GrG^P-p3`xuyuxTdSM3?jDfGe1K76LkI!um zKYviTumOWaymAqApGk`J-rV_eCCib*Re+3!OD2_&iY+q60Jn-PL@pp#WaA;IT~H1`J;4S?sa2Cjrqm=d;}WH4QAGW~ z_9rf3?ipz}&?Y;DcEqw;%j^vrzVmXt`nl=kpbM%{JR7{P^?iEQu3FT%SQtE4M9YuP zK%a<%I>iRwswNO4j*--YH?GyrQYR@H1i~ZHA1XXdtxB}O=KnpJ?x1{~l-MF}wP|1? z-Mxp{;ME4)sjJXMc_XzxHEdYjIso6{dCt{gN82RR!IJ6@JXC5D5Lu`-^aY-;M*AWC zYmR}>wQGC5xEJ{xL$)GU{_`ftaCMq^&xClx=3ZD znL{9e>77C5gLcH0!z&ks^<_{s@&dg|8X(TGk+O(81MO%-(tc1)=}l7=QwT+i9n3{8 zV-=9xhVx)GccEO3M{_{9#-p1iagGSSW@<{uGj>&G7Ky{F>V~ncR`aOUD2u`P-#DpM zMp0uHJGO4IemR!=g&>@?S6ZJt02RikO@tRROj5&L-S6S!$7#R=x(<}Ilv`tUp7v(m zk)o-Hb~cl2cGp@Q^1Z2fIsfo4p5UJqS4zc$72MzFo^_afKT)pTF|G=YFg@E3j95Pn zqwZo?T~AMr1uu%8;;U_>t>i8M?KxMH-g(RzJnmgF%qBSb6hr?T;S|QXMaB!WiX&Gu zG=AhCTy77W4nKfB1ym~70%tIs6mIVC#$q;kuAQHubM25>XCy=O-~9@GF^H6>LPz#7 zQXkoloOT#OI}cAg0#0y&PxWb)UC-tS9gEhuHVPp=OPa(Ui>fY(p&7N>^ph?->CEm0 zxMwx6a45B?%v#BKeK$zrAaw@yaC$ftfzC$1cn@2xn)pIy_w{LCwYukG?>Q5hP2`%X zAy55NI^|) z-D4RcZ@G}T&gAR4ZmED7$wYws*f~mOMr{&vfwHFTr{~N0$u*hz$ykEvj(15T+o)+K z1eAr<0P>Ghs^wd9c9_1C+TS1bpPm;G;i`+9tDB1VklIwq}- z0{*MwT5t+0W&kThG+VUWZy~S5)m*-{x8!J`Jwc-AHiZqj6KHmCr^Vv-qTf~Wf*XO^ z-+3ns%W+wx(W#Q>MVYik&z!j?N*r)e)Kjv-(=-CKSf4q64mz_<5b4*kAu-KtHdBzF z4>RUME=)!GLW>OAgH!k$t`d_{8dwurG9{n$s0pA6IzDC1YICCFA^iOaIZO*)_S!G& zGl9NB{s=CAyhYB#!)~ueK|zr+a@E*4HG?*?333JFrAihm1rdej8xsnihab?>(IrdE zZK_N~$umBu(sG-)JNml8lcQ!fT;+E02-dotg-8sd6@GLSB*5QdPh7PHhuj+pU=ls! zKo2=Dd>ykNsX{FXlv8;Dq|amSH?uOU%IO)(aW(Ro+S%A>ztn#=NZt&BkK&xHP>9k2 zSsO)fEh;hv0sXo`5>igd`~GUy#ZLcW^U)pZ0u+WbYC!2qS2mQ*gw9+SV~tE@al=gS zRVrkswJ$;Z6x@_3Ws#g=bdT;&-LfS7+!b)({grDkELg5xR7uGKwyT-*&Enbe*D{k; ztZCk3;|qB?x2x%k6xs=*ypnPCkW+5Rgb?Jun4eb8i!k}gKxb$$LHyoX4NcA0j8wwh zy|^W%jh)j)bLRES!4U1=kF~2rzP1`f%~E!I-iMyfT6e0~Bdvv z$h~(#1sk^UkcKE+-LiT6$3RL;k!w5=np02+Lv!NOcc38#W=p9x#q_0t8py$4YD;fMD;%# z$QyhMX?B)u`{aCa7J*a4lw1dXsy|wzpS}&Yx4uEN&V2FUOu`NM_xA$Wd=Q{-otZaL zNVd*LWGp%rNIZXamk+nZGhl_?Huo6FBnDi2gBY4s)rk#GEMpmFJjAcBbf9J8{bh9C8xQAjrKjjC*5^jlu!E*7GwNo|c*NXsbY`&mX~EhJqI@)cSFG#U?< zM4Rm2e2n}1&A%_EBLOTU?7<^RWf+K1|2~2tNrZp=@%Kx6y1~)mO|6)${~SO&Sd=b^ z?0;A0Ki`jpz)?@rDxG=Ktg1Dk$38 zqOqpljB~o=-+7 z-HewH3zd~b(`xRYWo{Zlr}w;8f`1^3>r8$TPg5jiO?EO;S^V3OmUirEjOhfTgaTk`Ax=l6+L|oYI{C4{g>r@y2W7WpgHT8S+NS*Ye?Z-?;4|lhU zycPULYU@MV)R&&Kt;?5_1TTXP#V@LM@oEi!o-ycoB42NfTu^H)4O)mUiHL}RriYS0 z@Bx1IBrJ2y!cF(>YHHru#_5bH0YMpFW3>z=RCay|ubBe(aL@~i%86N?7GO#3# zmI2#@i6d{_vH;N9&_cbhhf#VmytY6WYS4AdUz8BQ87fUW8i_TZ|NgZ6uK;XWp3*=sn3_o2ntn+R( zqF!vA5neA<;y!zFg?ja@VG*69(vkGb(DeQ)`mE%h({aS(ouwJS)VDEUW}!E6zU!Q& z?%Qsyd_A28hE=7xhi~5r?|IZug}EQJvW_&>Yma(8l(SXxUP@+*0h#0o*h&?llGD)8 zpyPIvn0@ky_OFQYJFe_15tc=_0#C*lz;8*)f751X3}}JKlEL=vWsp?a0FNg+PEK*W zz`D3tZ2x=SW25H^-b?swYLIdlkh%r<`7epE;$3p)=I2H7t$~~8nNxtb<=mMe+Ign@ zV3J|6tEb}T`sJQvS-QlLo@6Dl(z;9A`e_5YCLib5cQ41)WFU)0l%e(}^IdImX8Aw2 z%|#|Ew0aj^k~f#-uFOxo>2P4OIWyJL)7O7|qx1`R@s@6)O3s|V%Zp<^7lB5XOsV71 z+BGxo=MKGqYgCPG_$Z&L6lk0QniCu)Yq~l*F8~iU)iIX;e{tvccPIzZZN^6rA3`;V zLr-Xwk9fx3etX`pX#>gU8_A$K1-L5L9M>_SNrFdq!dCZAi@YLU^^Uk}{ssB8+h)kEm@jydk zEHBOXB%;N0aqU&*UYzZd)wfy{F4FZ1xG*@f1Qj-cAPSf^7g% ze0Spv9S28orVn5`uNMLXZu(qNt^odUJ$nJQt6SSKH}68%Qy5Df$lLSXPQ`a3chfNQ zRrw!_==1N`)PDM6;uBbD$tGx`Q>H`Jb2aDsTZS+3n5f)*$1UNk(ds*n&l@&cjnb7I zLt1O@NGL@qu3eY6S(@B6{E?ZMn^{k@s=RWIx_1x=r#&BO;Wb$)MA`z)bToYb4C#Ulg>^?1Wzn?fraB3MvDd&pO3y*cI9rA^H#47{M zfz%_9_@<;o`mGZQWh#GF{l;S&m`neqrC)Mxo@_66glg}c>(Uy(9EkVlJ3dH%meIf7 zS8m`xQ%5M}H@I5enhd$Te*AEDAAk;?fMG6O;0eapyFb(SKv%}{$ueCQgS}2=fS}Y1 z9~YtHtTpkcjl%Br>I@8zfY@%tDC>UM&ql8wPwsbF{+&sJODcpwVCqIda{7z)~O-l!VvAWZnYqWFLfv=r9 zRh)x7UtM3Xfw7e4Wt@}xasdeY@ogdzSIspJ)(h^H2eI6W8u=wRPa?!D%ReX5oCuDL zjC8JFdJK6vO&_TQ%+G zGQ54TJZhXfs%i^Gy4-5;tN27PZ5EOe4>V&sH*cncY_7x52bg0Mc_N^#K*+8rool}O zZqVzOZhS-SdCX43Ap5A<(stlDEqA>~<2#AolbCRaMG2YAjaa^tmARYpZ&su`lq7mf zdeb7UpC^CUkp5D7RhcTVKXI*8>2k)v7I!-0Kn3jg_{dCTHLEQvn)q(HA=^IO)@kgI% zG7xeyr*Md{qUqfapFa7%SY{q}q0ng$C85|BK6&y-rUDTT$tL3t+W55@N=7i8E~2Pt zUZQPk8#b^58e}B#11YTUeAgv_;xVne`^rF$7vnw6gc@;YZ6kG&3-^p&4}N6E+8e)6 zLOO=JHv+$}bfv%=OT7+}0n-##8HWUgCY)*Q?Ywt%rJRvu1A>e0LZ8BOp>3|9m(lx$ z{K!_qyf!;?(SnXu_3s=KM0~gbBiWt_feU7-L(=*Jf(ZlOf?~PZY2>;{V4@KuA}}LRb~$*|vld z`Onkf_TW>|KwwETCj|aD2v0~SkBUaFlyD{We|{Z`#2?%lJ7V#lrwb{;(`UjE%YSAi z_(Ov`&jIkjrxe40e22!_A>B} zl75kEUv`L%y}j=3+s|i>oRV>{uVCFz%FN^dexPL>%J;{Oz5w!j@{GwI5+O=bW4ml;9mcNi` TFQt-80KP73=wB*TLxuhyprFOXez7)!?EPM;Izd> ztEZyoK0#Tl+X#I`f`!#Xjx5pCQh?HRgqo)i6O@3Sw-wyC1G&NmrNKc+p}!*`*&tL} zLe0bU69x;i5NJcqb4y9C??{>zHj}k&tnY5*VCd-U8t(|T)#v&~PkqJ0I7ro&SBp(b z|Cs#~gqo)WKiZ_vM*>d?ODTeYAfG6roTXgO@4!-*jusTvD%gxcVUUuV^$1f{t0z{2iTKRpQqvVhA?nZftXk55lW z2TxB=pL^Qc+)xUyh@cj~X{&zkc_jtRtFnQrl%cFF)H~oB1O**v0tE+LK?9$czz0}@ z=m020;2T&8DA7!q|CGXFWy1dF8hYaSK_NvEspke2^=u3bENqP}?d+v8or$Fd*>k%PT}yjA zJ_?HG7yb9|U;Q+2GWp+|ENuThEMS0)&n1jZ3}D9pwhdI}eZI>rZ{lQNrY34)4ona5 z4t`d4cHY09|34-Fd*k0~s{XGg2j@R({;lNCnxAY9Y(y;0fmhn`|8Hgf{o215{<|VC zHWUAv=D+R&^UROT%lO|l<3~Og3m}Jr5`>Zx6;g77-cLhx!WF|0kVE#PqVijD zm4Ft5+xPl9CsaY3nVlUpcT4aSM9kPY&*ZSRLKF4 z#r0-%_;BRIgTsJH715_Mt!Cnn3UD~kVuG0RfBPbXfy<^0`u-93&jLYAFsP6$i$v%j zk3UzY5Eq0G4kDj~`|3rJ38I1d+n0~u<^OFbhyWUwiXuP;`yY?~RS_9$0rCHKNf%Bj zGKhd#_K(Ja8t){HN&nvazsBMngefmXq1(sm{bzTc2jKqC@&5lb0Nr;=g<#forBb*z z8E%zICF-A)%d`%V=^G}0|2F12>B7#FPGG2XJ~N!JG1urDTC6sq+)j5bC3fD7Qm8Rg zQ>(YhWAw;-AGdir$jEW^lGT{Zc5CQlnf7Z8xBYJ4+k#Yu%^R1Z#d)I)dV_)3C^RB= zr(ln%^*ohppdH!zTL zacL;H&Z5BGc2R70u`g1s(5(n-mp_!=(q+=Pr||{I z$=jE{fBGI@PT+YyF45vDX6~eKTFYs_4GnCG^D1DBFzdbHN8kgbu zsK) zGwL@zJsf#He|ecJnI%3maSStDLlS3_Aa{ApiYwr`7cM z-CuKrg8~DA4^FXY=m(!lNlBfy!J_x!YrB!JdOkH5$%u=KS11h_ekGG{adWPJyxlYC zkABV0xoO?uhtzR&P`f&UkKVK0Lu47dXwfLk?XaJCYM`;9W(sa0Qp;9T>Qm*QQfExj z+!>vn`>e=qkK$y-WDt6&{{H@a3$W{>j2bZKVR*05h6JAODUBTyH^~UDN9z{1g|x7D4CJXI+-r{P^)>KK~|UXMnbhH3TRBbm52T zAn^GGNZSBGD*zczitTy>uVf@b3{Mx<1YUa+wGA`(^-a%aM53F50N4- zm|k+8zT|VM9&aPpIb9kb`iO7ZuM_oSp&r->K3H-19=6b=I##o}u_@E-k+dx}^`-V-KW4R1=FpKBt_+8h zaVupOh=QCP%35x}{qzuO{(W?AuyEl2LEyn|@{MGOZhQDRzx!?CW5=0a#m(8Mz^|6O z!?R&T@b@|=rW)t;&Hyx)hZyF&t0P8L3o;x$ORmtg*Xe|#eP6=HyP_En(8W|i6>y*J zr$13IWD5D_0(v9PCDcY}lnS}!*$BD~Cu9*94<&%CBkZ{@=?}di<{S&)Be z9>qcjg;z>|kYkT}eg;jW%XE-E5yXH;F$P|5y^&rUs6M%mFiNwJH_1rja0;+6RV{46 zFKxX`Fet0gLVv|OrvqC9C=#$Lh`&^HA06(ieid7( zF!q}dtf;SK-o^02iJY!_II6%6)pSOtO{{9KUueN$+4;E`VUNYfHf~ZjgULwrO zf@${2At(Oi-NX@Uuhxm(bXIh<3Sr|(8U3JOSS|sPCJ=(@8J=jqS}{HKxLS4$Yg7z; zL9*F&Ho{VCt(a4qcnqO}#1~Ve^gtOV`eO^rS9K5zBVI}RS~3h_GngwI`&j!3`PTQo z^fR3o!~d**isav(V%cJnPA~JC^Eef9O5YwzDcB+E!-m2!`cgc|0}49?L!8?KlpHU4 zHN-NS$Uep{&1>X0-XHU3(DkU<2#(>@r!BCVtr|W*cpIH%*T1y+QaxuFZW3s99+U`P zh;L(-7od?@MN!G8UwrCg5!V~A&1v-#&>Nv8&z)#>GTe{(rjYkl>U|4XzdC~wH3m1d zJ+=9RvAbp68bW8aZ`tb(QjcrMggLm1utnspA@tr(S(me9qA2+uWc zSe>i7b%H3DJpUbvszO;qc#KRCD_y$M+8$Q$3SUI`(@?AoDSiF5!+mlZzp8O~a;-5GNQFu#4&x^`*VKHBsH~!d3ljCo>-0;H$ z)|#AvxEQV-ME_E?%`WREa4s<{QkTsP{MiieN;q*9;s<%b>Er#n9D(I~y>O%#VOs)T zJ3Kke@Xb-{lSTCX^+p7{Ngt&Q_}6FKVYUDvPQX}&DQAe*A(q!^7=Gm!(pY9N^ai(e zbfZH8hJQT1G)%;WV<3<(=88q~?O2!6B=CSkda|1e4jVokzVs97edSubBL}L*h(}5< zOZhDg76N%Ili94IJC3BIf-egM32Z{n${FjdI&Y`(wjZ`cZU@+o*V`H?O8B|F<;zSO(k;pV5j8l6y~v(XTdb=$t)9TG-HV*J5w8}m0Y?F&8Z z*HC_fTlqS5*x@?%TS-RA6=PLKax60~x4X14yqY||B`AlLuotjb?oYN`8Z+@)%`P`H zh>paJ1`QjwAGCG(AgMWpg5!d%;^kh#7kp(8%lezQy{Utbd_AxB5b%WjY|FaTy)W=X z%&ZUO&eie53IIci$N?ipAz8ON=jWyKW7oJ!HFxze4B1OSO$WadBu! zCTE-p8vY)!6O>~K54+?}wiLxFA=r`T9ZZBkSi%bvfS+BmiS|)@DS^xnla|aHt?H*( zq+lodneLUIDrz6>RuFf?>I=VLUaT0U2;ddvAh7qVC$&NNaqDT}lu&sX2VNsM(Ys=k zsz&p6Fi3?J=A8v47*xkA6st&(?b$)4<^wI!W*>8)4c5`w^~Yewe2;i_u*juHh0R=P@&$&nIRj z0UZk(8m2(C!MDz4OLgOC1j(DKudN;+sANMMA4H#yCq{Jkgdw*=oTxr=gbXAM=J(}w znKId)*-lv{S+`n+kFUPT_+b~H4Q0{DCr&P%nHE+rRmHp0eQC;z+*V5D$13G*E_-%f z1i^4k){^ZCPeda=#6dc#W7V4O7t_ujS_FZDH<*UnNWtu=x-bERr&sg_J~cy8!M|^N z*P*Hos0lu;Yv7Zo2>e=kr0uJ zqoImb+BrGE7;k!cJqAz!!waE8qvx;`X9Vo1SPq>q72WTp5GP!KqvSO6#+} z-qN1f%}wx@{CJ^4NZqr9(e;Z?Yz0FbUDXjZ^7K_Xzp$zV`4+6SKOsuit@m&%nS`I= zcQ0~xs`xjT2FIGN=f5F1WKB$<)8|Ej*+E%Amn8Zs97p&rt-02CoT6$qkUzu<6@JfE z>$Xw$NT3#SU`PU|GLkfjB3zdzbm)wbhd(2K`suIuG_wwq21|%S^)=+fv4(-J9z}O; zb9oHW5Jw37&`So!eO#~mW!tf~wMSo~sOg?X7Yc$lw+#fHdPr3);+x&@gNTi6n`EIs%2Lt|!9E zQmw4hw=%1=#z{J;7OFEkiA$l9g$)a?ytJC}PI{tOd89^&bs_8JEBB;|Ft4F1F~I=j$&rq8SdFr5 z-t|giKQ?XAiB7wPWS^#jJLUVj@n6fAcnf2k%*nTOy~2aRO#j6Nb4_44oyk?)ZjL@bHe= z^$$xXXxm0lKW1Zm^O`&L;tb{?=tD}d>%H;!*N1AA=9Lm1)*ppXwj6$WtNAUR$Ow9Q z*3Gvijx%UZW1wQJTa8!7qb)$!pKTBx^I|YxucZqGg+)V2IBlXPv(V z`R3p(TEANjvykym36J@NjYP9ky+owzT5QEkHI zGg>vuZ|Z{~c%Z7&3desz>Um!Qsi}Csz>C@C+;b_*V+=8WrSEstj7woo+T|W${od1X zgI5Me;FOAvcuibHz_2*7r{qS=tF5FT8AkQneoMTSdjwYyQ&$MI)ws_-BDzSJzx)N- zEV^(WntcSvKo(AU2Nc1abC_M06)qVn;}o|$W%Q@_M$;Q z?zGJs1SOVy=1Fz6(}glbf@<-^9A9d9Iwq#mK0`(FQy@{UP!FyC%tC3aQ<1$s1f4`& zR!uP>W1;b&jyBbV)a*WdG)xqd(5}biAo{be#n`d0^D3VLOwkE+?7gF2D5-#Zf1s|B zV?^N%e>3niBi@B#IWlb6Z?=+vBd<2yCxr+xAa{K6yBwjP!x3vSz9=WigfP6*&62SF z@MO(ms&&d}yhgf&1t=hfZcsndNi(F>|tDinYpAiRv|y;@sojPjLSan0bHg^T|z-Fza-g# zJTcO7=_|Rr{krr3aVW4@(VIqf6=ixA_SeRX&d(7o#Kw;fy|x*P4beTw$A@<=rT>bd zMRi(1Sa(%Ic_nmi)c^u-47ne#%Mwxowngvg5GXvl9y+3GYs&Ut(XtJ%qpZB0_bYls z_bBeX=Scl3DF`|>u@*D!|Bdm{B!Rj(Th>LS4X0m(t7j#3DveSb%ly7(p?wQjynb;g zQ;?;Ij}`8@XPmjzH$HWT;!qGqoy%G{?$CR+=-m?gkN*M*X>LG;V%eJllqFezplkB$ z7&J4r>~VE7U;O_MhLN0GNL3V;T_DBUh8`Sdp!@)?%<3I~*Yg%ckZ z{R493tizze^np9t-rAdO3R!;I>vAKn2f}H@Sw*BVbt`DnGSXs{NPi@X2m9I2Mjn?r z;_d74@m4D?-L*K#@7<7Q9)#L`wiI!8u4(YJdl{s<9PzHn)N;EL7H&WbA0^9Sqws$+iL_)NK62*w>c2eDhI0xy@6D#ZElR`Rq4oYPSS;q&R8iP+1zA*5 z=q;ALFnoeu}HoyWRmxE|Mm8{u6yzV^_YAQux-;eFt8|Mj=vPM+(Vcjnd@ z+Fk-1p)98cpHmICXonaxf%Y-iL{1S&-Q=&^D72Nfcu=}!*S5%7UJeoWNYGs&!he^m zwOICp|B-1&b|;j{jc96=Sr_GZk`^uqgTE2`s5;e^I#>Fchvm}89nwH%`Vlfigkv@| z>E_%-W8xX%pIz)KbgJ8go0nZk_K-<-aT%S@I*h2-6Uy{eeoHX#2@j@1E5#N7S)@OF z2xqli;nj{#W;4Z8m4=&)jf;DYIwE*Jr6?z*si~Q%0gt>vo9pI$BWOyEqI5$c+0}bw z(R3nSe^9dsC+lXC&vRHOGFE!AGudl=5{OEuo7lbXQ6M0Lc(lp*V!a;j_SV%pUXA!b z5cV2?Nc)f1IzuS$+?)ead@uLsDFJ7o@n+qrrK=kQqm&<>zB2d1cm0b|47IHOa)Uj* z|J!xDArgsK&bdpDtL{RRc>473hFok9e#|B_M&-28zF%0?%c9xS!a98?DL_-|l8}Gn z72!CN%r>Z6)OvT=xb7o*#s>v*!lKfdxxSvbKG}dbskGmlIRyX?l$SA4loBuL!PWp! zX*&tmGIPHcNE%@FLj65!eBFNCq?X;dSf%TgMZ25RcA8@{Z#!5~aZw^AXu*x>T{Dx+Pe9`)L(zHr1x% z4ix9;x=zSaqr<_wii(P7{MQ>=t3p>S{o0%11NRQqGtB7UZ9HFT;GCVgB>26X8}jaWPT;s(w!5%A5dc>;U9Gq}pB}f8$?b;SVLKnrRdn*^v_9Sr;f_1!ZxVa#sd{?PAb1FIFVYy$XzXf0l zjzK!M2Yag%JbG39E53}8WW73aGggq{@nvgg)#GlMX4$92 zQ}hKpUPqX~mX9|qVsb^T)tWHmQ0zLH!!o@@xsCGd`KlIQfz8T5K1{6a2gl5DVc|R8(|7V{>MXD8H;VUz|zp$G5z}i^oDOkmm03+^?r+YPYtNhfC@~K5JY=>|+iHmu$OstrT%gaa0nz9K z6w8v}1)hnAR_?G^2wqYhn0eD=k{Ke1ij#=ma!o9GH|P^2z=gu+JLkYlz?aC`g5`cT z%z+X^i}J$n=johYM3QawOzaJC*pjm6^SD@Jo&xDw+G$7bf!`vfhF?R;LZprl_7d9n zKb|-65s~zMYmbeJZt)WQ(X#cS2C{Y_5x%SEq(3@rv9wRbE_ zL^l0W8@wbk-J6eQcdlTVX-9{}t5WOLJ?jz^9ql$=!A%a;Ip>2Nf{yJvn$8!7(GJ6F zFn}{UQv{r6%%3O4(W)SiE?=r~6)C=%EU^ATfp!5`o8fWWFB44{w7*xkSK8=i zFXk%eiHPp#d8Lrgh}{|^Z&1m(AudUp%@0y?f3hbp)@p9psd|RI>Z}jq(w(;meNkXQ zD6a_AdZ3`En|piRNxt#N4y(4kLq0=+?X;zAPT&gK7Hn>VHJrp62#{uMo&sHjGL<`; z<_3pA4P5K;bMF;b$q=XTkBv*a7a~3&wxgMqu(406(#Qz386ZNZ@H=#(aS#}WZKL^j zdT~z8dX}Qij>w;Zoe?OPaCTUR_=?d|JFn}5`H6lf;n=;f*(UkTJEe~EEzSS4WnwE` z=Rqm{SC%WcaIh~FivKtCE8j49#*K&{zX5B>VT*5|5Md=sL{KmkMN=dxLR#I`BCw?x ziyVqb;0c02L2$)0oTDgb%;lqf_K9P0B6w~)WJbn0Ld`5)4 zch_E=RpMc;wmwUgj#q^$ZtVS@2!DHz4?X4BwaD9^IYD{7X5aZv1q`H$((;vx8oS?P z?Nnk``C-Lz#oEtEETc3JK7^zz83lW^j`y%`W2j*_gy1Kf7=;f^{O54h4SEO(BsFWw zmtZu$sCmC~5T?Ockv%@z>cNYBF6?B#QSY;NpmogC_1VG*W9$7yt=9ZK0nyqF1rf*G zcq@N5A1OFO5bY%^xGB0(izZVo5C&=V(8)#X6r*p{9=?#$msA>>S}Iq(y2W^6DR~a6 z|100`1Z|Ig6@+9XYDBy*enfcgwObt8KEeo@ga$15p?K;@)fmR8Z73y_$rRM@uRP$Y zX^mrrk+3dhIpQIe65j@ODCPVxQy86@goMFQQ{-6WK6c<wx8Gz^#?eH8x^i2oSnw=QVxKu&f1jtIHr@m3%-gNJ?S0@B?Ffx-^jFKrI zI+3wzGUn<_X)cwSln9lhz$c9Oqf7p&m0@bK#fXNyVjJ%2bEE$+!R@c|0^So z&Jb5!>W2*e{VuTKZ@_u0XKmJ+B6Py?TvL;D`aN#^cR_Pw9g?ZxnbH7lA)2ose36V>@XpY0!!ITWrRdcDop8pvy?HWmEDabCUbcGwgIV% zvF_M`=1}iFg20o}UW9AiZQbCpz?FKwCpR7_{dK;oG+5u*cxjVS)hdDy+rp6qPOvNl zey8)okpugK8%UNTbP-oY6H+>E(dbWxO|Y(A#|-=WLcx#>f?!Irv4Z8^K-0IXyIIpW zcMm%q=z1>EBMg2A;y>5hVz16V$G)RLV%*?YT$%K3^ zx<*J2t=}hGU66mEL1ulldea3T?2c2+^=J?<5aAliw1OdJo3D90t0hp2!u)Z6;YZeX6&H&~c?hKGS94-Y2Zp>Y#eZ{HbR4 zQdNBmRzsVo7hyre_cihCPwR~yLg=ylalL*CG8K5j?DT7R7QwNG4Uyr94+jp2HxE~< zXjM{6lGINa-FVk{DOgFr6a7x40*mj^x54u=`gDbK1j;Cbd_ln|2ty5)zXAdtBW{v{ zLr%xUtJVe@1aubsK6Xzbu_p%i3lO&tk!SuKftw5oNqC)(DD##mILV8gj{N$gu-VrF zI`$~YjTdHavxTs{ZnOb*-E^f7yfCaU;rACXiTKDW8S>6J)iS4WrgR)XeJ|4-WNsa+ ztO}WT%IL;GZlL!To*VKz`+Tg~s_wsy9v^ypP6Q^7bT)t6?lV=Y8$UU4Pjo-qv#ir*I!K2-S1hhlM`g_8pl%!imTV}Uk zIFV;ZtoCFJ?~Bm)z6w-4PCO;~E*+M3p{S5PH8p86+FstaUvIn{Ox9brZp!^(J%``U z-Q{BNV|>WJ4x8MVtoV2xiB_jg=5$G|vz(cXvx0rGo*M_Dj!E}Ir^V{1Hm7sUAYCA*qwmfQ$yrQ;sGi(7^4Uv4_8sriQ6l`_`>HoI3(% ziZn@JX|0oOVBPWNr3w@`jKDoo$&Zfw;PbwG9`;=Ij_Saf#O{^o>B~9Oa4?O`tIJoY zT)xw?fFE6w>abvP3a|xGVyI@|q`|WorLVM*1U~p7y79In4HtdRJn1!pF|e+LffM$^ zcRM~2g%WZ-DErmJ=KVlwQA&WeBA;%v$Fo;pLaH?YhzI9rnqX0)s@I+iOVr_Ko1$0Bh9!qyM|fnQ^{S zbDM>ZIw6sf(eDm3`RES%D{U|Rwjxf|TrLV;;97c>;X%T&fvpjLT->|oyc5YfK7k&(fZmQW!d>Cv_Xhi$y-hIklC1QH@6 zM(9FOKGHcjXGV{)1b1{tbF<)Q$qPvt^tUoxHe^0;4;5_zb^|^i3p~fX%OoNp}{U~ytN)?+NgLUI{wjQUP{6gc1G41UQ6)#(GmNHT!|in5WchS zM>mG{UA4pt3_7_)cJ?e?J~Y-3UtxWHMmpOUezG+I6Fz(Yuz_pD0|~Njtzd|%F-w1Q z)?%=0&e^+OjBbidWMgfAT5Hp|r!)F7ove+FZtO{(v!R#Z3}u6moLpX`ZZrhNO3mQF zPLT$+yb$5tXugp}ry}&P$;V8q=O`~E$75|*k@yVys}h}|#nIPw2MLgu>f_%mQ;DGO0V2lqSO%Im^9S)UQgXzQdVutVHNt;qcGlh@$-lpyApt3MPT(bF$RRz>lhINs{ELhA zUs9&L9muIt@*Z%|PXS~Dr2RwG$_o1^&ST9VAN6cRrTk&19g&okRIG9L+xL4*+(9$PI=(_J)&~w($3>SXlyasKUHqOZ0nzF?5vp zf!=~R<^MY&V=E0DNn3{(Jlsn48VPRRJiD zgmzyeKUZf7uzpqSPN!Y2Kt-`P@wG>`s4&H^u&ScA==bq@buc%))}idrxaD@O!c# zLf%NTqAitsLc*ygs}TG^rqtph_czep+ZPFX6fbxk>en-!&XoWG?WI0}F@d}^K&MRm ziyzoa>e&bI^z;W}-}BS)Mb!T=B4% zHb7nYu%i|xoi->+Dl#Wj67DJR_9Z{VXBBPtAH^EABj96@CU|d+hM#|Be?w3*i=U8? z5FmVNYgg(3-rI`DojG3hfq<$v&x+jLf;e zwNGTV(da8uN`B8rH``W=<%Sj~ouI`zA9$2d+<_jUyHUOtodH|F`m6Ww2Z+@hfO6o_ zX%S;$FaTI-c{g4@so$_B<$pyP5NxYRGK?s(Y#JtSB)@r4y^;JC%a$8zxyv+?RR{Ln zY)HV^f`-q>QUGAF+nErvYW0q?9MAU8OhOlXj^6<~>nDJ0VuQvwf zlL&u*0)VS+>m)$b=&u1aJ<{ti7luQpd-Dj4ic@=RudLOg`u@{*<>Ag_MAPjW^F3)!59J-k?Rc>8X?=Y?^b-v9J7Qd5_=6fpf1TC+ zn}BUqPG;2xheTkRD4S?iy=A=W+&Ou^Gl_O-9On6OG3zzz%^^8mro9RxizgJ9CJooA zwro6L&$(HxHi?NuNFZPoP1?tIy4@*2t9k%*du+B*eHn6LvRu`pAiCxMOF4(&#d={Q#oxtwr> zlP+eBkB*KWDtcN>@woYgPt;9}$y#nTl*TiwsVGn@82zSlRSa?q9Up`($2(r<2Z7I8 z2H~td%e>}_i}pWc9^M<4S`zBG@MF$UggXY<9~SY&ITDufqjmqu8+JGjE3NHdabm;N zW_WNnILgAOKA_%SvDM>YXwS5)ZXFprRDAJ?Ug_}q(3bsx;ylw?BD2jO!SQ9{DZuti zc>o<=U#6-=BIH~iET(99`w^BMoR1QDBj_^r0~FRx&qYl=@}24L3D$b+XtMDb`szQv z7|_v76&Vc1Z{gvAIBrnzKrgzs>jlAQ`=-{|Wxt-mhETT6bk{@c)pzm&nP?!)joyd^ z0LtzG>8Og_-$6h0tx_l@dPEkiyJY>xTmn+vCKM{@@#)3`1~vhQKswR=QmA}w-U1;X zxyopi{qEHW&k=7YRi!ozKJ_4tE__>ak>}GRwCT_aQlbZe-d-|nX9N$fK~?*#Me2)0 zZ|$GJsT19&Z%R=>N0S~fjVDSzK^fv1#_TV zj4?X!QrhVuCOX=|PqfYeja$)|kwIO@ZYM7x*=XH?w#xaM^hOJjsC@pr4S*nCuj0W` zvL{qoFUkV?suOW6tkLHic4T21PVd{y24b%h$ji-5{0Yz(Qp#TaJ&%EN4zuq&`$~i{ znPBExZHm|Y<{dzGyZh2c6f(w|Groukssu2b&#>gCwHn5uLsAzxB zfcQx!Mm8{>zRkTz3I#Prmebsu!9OQ%q8SlXWw)cyNwe@J`*Tl2IdBL=w0RRWh;sw4 z`%}cg2Ocg2R>p%Yn}2h7G39>Q6Q=tLOF7ZuG@iDYp^my;-}N=?wN8uE$$AjD z!oP{(vzv0S0%UHix8Cai`20`z;j17M1>mJFXspc>_qlW5<&+om{!t?nghL5~xbJIs$evftt2|L#9AAAA<%!ak z7IDX0qwrO~;DAZMv2ON^dHS8SZliLg{ZfQ;G+=fW-YFN;xCtID*^Um|GR}1a%pscK z;NVL0MfNq6`9FN2uYx8LZB=9+9}>^7#?9<`J`?_AQGP!tT! z;=U?eMQKnq2uJsujtZa{43{UoenU$ux3b2tuE7@dJ|QDTF7l_IxnjYG3wQsYW6Yd-noV z{Wki*LW|-xp$%NXep=&e_lw(mOcB3O0;Y~SX|z|osz4qMDMkLupAo}*gy)P75^1Bp z=vqYSlEYcaq|-S4n_l#kWTV5meN!RL_iR!YZhrgfY!b?xSJ=BX(S?P^64x}e8jr+p zG`8<)3}}^NT((i;UHB|xUgsRLo74^wGx8*iME4}{lNr2Iy8N}BC!?)DD#}3dhWP zkt>eFQie;EB&@s~=#t2J5{9F@Tms)~<}F08fk=OS+t=G=sj;-7BTS(hl-i>%GiaE! zdUbcy5|mo)e)DU8IJU6T;67&{*;PBTIXn_l)KS!%;*PVI?l}wBU29H`L;`cFz%85Y0w^PzTlvb85AsyGs*5fLm7Kf>pGf z{om05yqN!nPR~=3hX6gg8r8=X&i_$}C_XNJu&a@B>d>RaId88x&~@N`7GYq;^Gd01 z!;c$XCEs(Qc-b|znSjeM=0~$izA{?B9TLdz4h7GzLW;Xan4%zHVCHRl*e`a^s|t-; z3!8R$d=SHj|GQHN0y{;8>5W-0eNkzbO3Bf_NYKetP3Y$$tPQgX!yJchkq?pAU(k5- zs-ln;3~!sdqo;nv%%4R%Inf4}Xh}K9BwJLWx-4;-2RJV(4!rGsueqFjH~dn_{}xE# z08+4`0AC)iBxB|8HsqOn^BxN({c}pqJ>SQ7uN*2_8!rv2qFfHoR5(ea7PlueVq!c^ zPaA@dBs)V6W7r+t7`V9RD`#(hYszRkYu_!d@Xfr5RXVUMJznI0!dE+el*fLfnbZ=h z`DQPJ^sW7?M%mp~_94H+q$&3o?y$MBCjt36x!3FSP*uTX? zs~{;H0tWe8j?)zU+C>c7ElvB&jVdnZzcFb-+#t_<6ifYuX4l&D-D%oY_kUQ^zh;66 z=1we<#yr#5{f`|KT8xYpCjCm%Z$$j)-5=8OwXNL`zy=T}CueH@EE9V!5rfM${8N^R zWk7zoR4>`S*n!uw%>U#=;XtE57xQjref-0w0tS~%1W3a4-S;-N{iBoK*@8N)$XLJj zYU7cIdBl_~Te3fAsl6$3n5tJ`&l49ld7_Pq;MyX%*{>R1U?$g@#b!eQWi*44J zb(X!&2%c^A^i1M&tpNgWT+@`7FFXaa)6h@hvtQ${P;sfvds~o1mM7P0y+tBfgrjra zV6hy$Eb>Gqg=zZfgOUsA#woA^z=sl<=o|!E#M{X3ZA;bsN*jHBF-Usq2j37BPD`7s z{d7&#kuVka_j#ci2JNc|Q7B{%6bzuo^Q(KH4iobP0qBpS*uKQqfHLt>(?nMy37AXv=x~hlOers;d?E zB&A}d715iG2!ET!gEFpCq4Co`5tV_pK#nNmZMW%fvdq7G@L#jp7c`x(3l?d&26Xi% z#J!fDdGCwBrr&$HY;)kX4e+1nPcP;Wfz5Y#qFhK8Nau?$YkB+xum!MVJX<{q25y=^ zL^2!bzNY2T00Q!sCFj|c=(IGwLv#YG8oS*wVRo~ncY#05bvs_UZ1UYa-VshT-$mJU zw!OmAX7~V*uW03XFQSk*qEbE6cpT%;&+Q6IznewIhRMa6N<2}a6nMPR7T{OS&d&Mu zt+pj$xhO?{GxJQQX>(H_NdIt@QLjGLqS4#H!=~qMN#!y$TcFtaKIJmRHE4(1jQO&x3{Y^VlS-VexdReh&&+@Vn$u?;oVRJml( zpx?`IQ)Fg0i*FdQ{aW&IUa5A*9rpEN#o_+r1F726{vx%^)87q>`~pChU${(L>9Y`#p=>oB6}Xby?cn654xo6C8LlsoV(2)}dneqr2(F|KNq z_x(GiK3u!(>}-Rn-=z9&ZQBM@t^$$;;q<>Iq~%UORVZ|yDinP9WHM1#6Y6xQ@#gSK zysuEZwE?x|0ETi5wfX6@+7FkU`pegLA9iQU7y&AcEn@#l^=IabwC&ts6MV^>@Xwn= zPke82O=lA-B9^y8@DD)vK=5e45UC-t8U|}s>2X5LRlUg75*=~CC)sA!f28OJ!F{I$ zzMxlOPzgF&rrGQVpd6VO01h{lp!hL?FeRGGV0R{Rf6Cm)^^@lEZuG>1lj323(Mt41 z#0!pXqCihN)4&$86bbjJvJWr+9yAD=2xY3$W8tckP`a|y#e@lLH>Bng*F@Bp&J+c< z8*fJ^VQDuit|w(cWGbK@FLX%(jCRQACRx1>Gdf@xPXB7Xhp zyVCJ;#>uuYA)iaO+i^QpQlGs*;(z`Z0Qixq_o}7Y?R;F{`Qf4>IuhdzkWuaj_-{R` zuah~-_N0yEELtvb)ta2bnqwP}8oE+P?@cSJjX$awK2;5Yh~98sRNIS7w_59Yc;2q| zhDL7nrcpEpG*gco4D?+a9mP#e54t%QyUe3g?w*R1E?jZ3UD+}BT$l7;h1HH`PufwH&xar};X zm2sv#q5APk#?GNfkB8G|uk&TrSSK!aKgAGlk0N8X45h{B_j0%|-)dfwbZif6zcp9q zI2D_3kRSUtflN`HH?Dxctm*W9`d)TJTQ)3^ z9nPv9-~G|>vW7%FD6_n{geOm?#P>{A@1|`A>VIb8dX!wg*hlnsD-KJgJ|3NQDT(=N zA3RIA$dRGc&+zHpQ5BfgPBZTQVM_#8 z&Q1DPD#!7VcHO{!qhJsL$03LF{t5cj#swcuhKn)^+QGSKg~Z ze&P?mb8MHt-%n~^UpKx;H&I}JtHuq`N2!}13mK8iz8(PBRMnAggd30o-*ViMUTr)s z3}95R&$fnRxNNtaMh?p?`6EBzf2Qp{ZxNbM;269Wd)ky5Oo=OR2_@oS$e>k855m*} zXunIjnJte>ng+KCdS$jYwL?LZQf86=z-?%LfJE_)hHFPssFB!Gq;!`>sPb+;D%1#n z(zezx{9wh7)GK+QSQ?*LC%SDebfWNZjgn@&9mejTd9v}uiU(f|hek95z9TNJ%Wmw) z#LtfX8f>#$MB;}wU-JLhJIl5z-*(#zg3>A74FWO&rMpu?r8@)!=}zfxq(fSyySrPE z?(PsKo%`bdtaYqsJ^Ksn7yI=*IGD_N-#6De&M|%i{VTos^iidvALB(3RkBRwX9vIG z$+0n|(_zk5ZlY2BFZH|$N@QDhJUW1&4tbJDW7(4?m69z37EjM~`nxFrNn z(ls^lwN!pwhf^b$H3uielz7Qy+u*y0G3#AtC9i_{8!6q?oE&QKOpeq7+31$CEH3Wj zCTQx#C3Zyg?8zO>wVOf%b%uRa7nhr5o2c}^ixkkLhK$@!D7 zzV#fg`c)*B=c~y4|>yY74fXxbtGeJy6#V~?SrA!AiD_(tvZ35{GvzFt21gL zYz)O8%$iNedR->IS3Tl(IbUK`PN97Zwbq!Hh(#1`RjdBowA9p6`%}d6-SP@|4vQ5}^B!QW_s{s>s*lhZRhceaa8~KX!{|wVL8WoK&!^kg z6|9exxIupu1o_tpjq~#R=Ulv!(8rlGPVBmN-~DfLi%`F)UTYo4_omP0;s1WZ|7T|X z0YP}RubG1MfmOcnKcoSASQKHlhznQmad}xAFpsJf>-|kulaxNLqm!X0>P4Y zY;zfKXG8_T2mjo`f0~K0Qlf}4-Hl@kr6$o#q`RlIsbp$fsS+4INc4aOwC7VwA%Cq< zwe(2VZrS4!ULLxYVl@C_MhV-V+l4P=YlSaUbnWHj(%mky#-iz@3b99P5@>GlHFLA5 zoen>4I1qE&=CohMDhQmUUILZabo?nlaXtRDwrsgtLoU#&w{3CbSV=UDh#nQVl{4_+ z!y{sep<2)1i#Cz5a95`8N5bKx%}ni53A1QwKn}B=%dq{d3g$}tmxEwVKHR@_*qi8o z(x9^=1@>fPqoSf%2uEwd7=7Il%KO8;w??@{raFf<2B_yU~Wj|*@lq9zCvp-s>FB2D!OK(WEAD6b>{H`j~?0VjjSNyRcrj!H> zVLE+R8%{uL_6x(_9p?BthoDC4FrkD=^Aua!1kjxjderDp^OEp7%9r%*05D{{^}`2O z;ik0pK|>;vltc-4b1)%cRPa%2uI4L|QbSgRoR{IysbMh>egPLNm!i3nnR|q{YB&aS za0oMFb%QpI4Nfyl14E!=w5TN^!zZ3pW}IX^{#b&nhHFb2>aPCV<3)yWqL(FJA3w(Z z^<4!co^|>e!(wD?4;eq>JFEQ!I(I-Du^r*w?#q);$pN3Z%h7Bo__#DMxR$&gJ&24V zsx_*<2OLHwIP$y7Ce>Z>T^@8R;psA_-7Z?P@RO`#4GcPD=gU<0F!O^wNx`Zny6m~I zhloVD)uh-jEj#@_E^o`JrgIr-o)V8AnzSgzW56-J*?|n*BGF{%=8Jt{B@oBL9M-YX zA4?O}V|KFEUEy)-NbuHFvBjR_2iUK%xm{TF4-8ZY`wK|$uIFEvJ*O^_aqjt9<}cnY zCYz@3o6|lYDRVy^Al*3~i0CXXqhxH5YkORoD;NIDC8nphcQBq=Q*K$e`pc(uH`FvX z0!G&UO{m|pO)tsmiZ6OHYy5UkD;@y*1ZvrI<9J)*(4%C=yM7a=|K&RA5;IY6_>=zn zh=zDh?#r^5Xp1$G-Ytop?_*u5hosksQY7uuk-(>5YI`i-Ks>W~xi}UQk?7Giv26nSzyB0nj6_3Q#vnJ~{^^riE=ZGej`gjzkiw^*e(dG|O! z-StmZ z7faj5*Y7Sv;zDD;Jb!Z%#}OlS=E2!LS5;)*dtY0m6H4KVm#9-C`4e5SHdz+VH$)@q}6mSu| zb)QD4gy6T{Uud?tb(2`{WCjxM({xOMlZ8jOf9DE#H}C8S<&<+irrLeYabS?Uqm@sV z0#Pu^5d&a9c?!!t1=y(GoBKxs_>g!U?q(af?!m$H#!PHCgzEGu1LY-|gdNmz-YjH> zW~BDh6XJ1WpM55J(rX2Dp}b$Kz~1Q=;>!G5PFu!xPK^bp=yy@H;NRn~AUr!;_4Pv-`}L*zaaqKYls2e9TI-SKOz_7+9L9W_$eJbi{vj zci;luaxmWEPmn$*#F77<%00MwydNVbarbJ&`TDO7C)cuj@X(tcTNmGJc8}Hu8^B;T7cFmSqM>M&KvgqEi zZLV#`m>ODBVi#j?0Y4}&Q)}-iwpdI>1D=2JuU5zxe5x>d*i}c*x1x23Jpc|k2JHD)=3`^ zozmk3SEYg-6Bm$79KLUSh)g*6+Guor-mcxHH7m2mdT2BnR*&T*Whl*)nQif)S9I&x zXGcp>goc2c+K9+Zfs)pm*F5GgO0&4zS=c&k+?0Igq2>7IR(49B&@5(JVDn3Xvl?eG zv#L(TWnTZ9Q$SzIBy^}*B0+#2vD(i6cemBz8?*g{#J^X2;W@iF3IkKzf->D4bTV5d z#TBQa`Np?d%flW$y8I@0tP%LS!48@OS(vpvy9vp+?GH5Ea_&99&MVwTD6x&VHEbuk}pxBCeVAO2d)=s2FAWwJ+8f+eY=Ouu>7D{!10swi;Z+fO3G3KWJtOq z+jw-TT5}w)G)7GF>izv`AcWy!vFBGUK!H`NJ^mG4vR`a;;v6*xb}!rcueFD=AA>3f zw$my5O&mG6E$**)rSHFFvDDVhP3F#pd*sSBC(|+=j?PwGjIHLCa#$DfDwU6%?bdm` zbLUjGUg9$dvv^#^)4kE7JBhHSLyK)b{Db&D`T>@^=e#gjb&ADOg&! zs^(MR3Q~vR-7uG}K#(O2rRczbh8j;DwLW@MN$D?Ey3F#yk_duKV}|ht2<&hu=>SXL z^-<$-n04e<1;C5ZDpUnsgI$*r zE=ybjvGXoOJov%8<1?7*^3aRbD<#U_J08r8={cL>TP_n$+Rw?V* z^NoRF{GJPffYO8U(VC0J)evQKsD2>H=Y_|X#|Jk}_+?CEiujUnB2J_?oES%AAo$CM zA~+DOW-{{aB>xaF2_ZIRa0dJ@$@YA|cd-r7H|m)l-uON9-DFHH(@H!sd5yC{c2Dw4 zv$o_n9neF_u9qJlOnTr~!^(vY52i~qQf&tqU?r+DY=VpfuYX8Jk_z9#xQLt)-Du^! zDiWyj^$hvs0n)Zxsn?-bj+P)`Ca!_L1|ER(TOh=hDElb8AszJ-?8^gPH0bu}B4g(A zbyD*0AzYh8Ro^FdTX*d9mpH| z=??cDvB8b4u>CV!%7xxo)OoPUrq|`Q)6SS9F)VYs6=apG@4Gi%J-BK+Ca!Hf@pGYF zyTBmkt+|GzO3?!OC?BuHT$QC?7?tR;*L1l=PM^o+MKtHqoy69N_Nx6JN&BxTI=e-vqwTzNTfcR}O>62c4*mW~bJ@{bo%nt$J_f+DizCtGn914d%kkeAgQynq zMf2;l8PSl=YP?SMFi3xOB2Ogc&(4D!1}@euX%S76H78sndWRwBSyr2d2}0NAgPVJ@ z*)51Iw;TIu4!R?zc1>7Z!G}&4S~MsgbA+OevzQOu922dj+=63PjWIB==>mt{XBLlM zHik)(cBVg0B->i~bekF;1Jh;{pLo-#3R_*&Yj{z-Y-6dqf)7GvA5BUzV8yGbzG;Rq zd>GM6C|%Zw_d5GA!B?L#!M7`uLEe5fI8&oEb^o_!VsA;;U=53gheMUC)&-77LY1Cn z7m9mpXO14; z`R3{-b>;`nS$4PRoO^!V*V z0I!rkYX~FeErr0<%5yux8Nmga*-D=kZ=vV0d;T-|-erC`hrmb1dd_oL^=IheHNJ31 zS=~1nyS}bqY~#*=h59KF1H8XIZf*WZqmX*fKTXN>_UqionZf{w!>n-vxA~Dco5=_< zJ8gN#nL`n4n9_oDJA$y!1;saJwX(Ll%hej^r=03mEWa-TF@g^yhfmbJSS6uRF66fej~~2OR&llYGzb1SY=;+&3kN%Hz=Fql zr1&IkDfy{+2bGKSmtAFkuN6VNrlX}zzOztY=v2mwXaWQ+7r2JeN+T`kLebhY@_mY)7 z%W5=xmkar*a+Y(#;~Y%vVNsof{Y%B>xwg0LaKf;|zplBHXPLI$r<38+Ph<+BOcRfr z(K?~ix}hY@qguLi5~${VLrI}&(qDZLdG~&**cwcCdicP3Cnc$m=UbKJ{S9TwOL8tK z;57!z#4UFq{?MY^t*(;IEf!6Djj6Y*J-BxBrna}HE#(xrh*Ea{tXb&&H?A)@uEji% zDM>&nqTw%L?^iks1vV49z+>0LyVi}+KwFO&h+4c}@fMo30}HyXD^}_P?6vnTa3hFm z4S)#X^ZDmb1Z2^qWS9G$d+5kQ+-uF&^bO>Zg|#!x?S!;wh9n}+!SwEW4MJT%47y;n zPC^_K8eXp?GozosrnN1qx@RN0I~g+%MH+V%)XZU-aUV{6v`s9Q$%*o}wa>;m-Xt{7 zpCZ{GofWot_G6NI#?G96C-H7>t^Y(@|BJwDP-2mWSCu;+)g)5@tZz8XMw>gd4gn}m6Rp$eB6lSMiISeAADL9Y81`%CWF;2iF$ z-YOSa+ib2dxcj#yI?Pn`65}TQgX$wF1B+~=ck0rOa4(Z)Z=2uA_QVhPF3ub>JEZM?lq?aR(VE&0$9_wMgZ zUrgE#L@bCc(@YcjGXn*L4jHbFmt@5>4k8p?Ew2}7Fvawy68{`FwSZMS-{F}LOnex) zKLQFRT5fOMO1=V~uuD3m27}N5Ula}zftg26@cx-T(!NiMb%w00EV~R*Izg4?A`etF z$@gMpFL zJBuo`emZ*+%bAbkZ*EBML(T&QzCAsZZI=%W*<{`yO8-PqOMy$79sS^ z*m8LjdEIDxLhw|JuF6cm)^5QnOS_qd|#l-O}+avf#Hdv*7^1oe0$u~uT6v;aj|aJ=`3rXG5?cp97Lb;O6Su9 z3OJ^@=XMs%AN>Bj3`RdWD5G@Izq7IF^v5*Ef`v!n8mdcaL(^|F7YtnW05J%Z=hKZ& zR?rI?C(qRpOkB)2zL@9M$e3N7KF>&Tc{>0h{3{dcneGyy{{`_h9>n9cpU$5jhUWXv zMw)bUW#yQ9l*#vN-pB*wOj1DSa1~2-PM?3mhlQToqkJM`EAyCK^je%EUxU*Ot-}jy z8tSB1X@dy`R#l;pAt9H9jj}SIu95F{^7renCu8_iRAk&IZ(1&layQ@S@!~#EGWNFY zAhU#EGhvuqHuW}X??zDI^&2Oo@1WF?rPk6MIPmC2P|a??-;4W{YYRWS)k}Ohlg?{% zJ-xZiJ$mwK$av!J_+`UZbyVHA4K5K;?rDjA>OeD@d-n`lPDPE5-)dv(F4+jrJ2KcV zH>RpB3}SMQm-0QJk=rdx{rx(wSaR$9g-_iEEKwz@DVr0U^uzu}}O3QTwz&|w*z zqUA_$5A&P0{_WgC)#;X3BcIv-Q1kg+!QR>IfX8U`A$DGHH;W|kivgt^F%cZ%T3U`w z$pnSBcG3}*UdT>t12c^rb=9vw5-@GFqK6R4Yn@0P4f2MyF>Fw%XyT=XE8;P8Dp6=AOR`fR?1=RAKeF^a4 zm666dynKT5me0>AVlYZYjWn>;-5Vvb6c2lZh5ei|KW-8lj*Tc2;Z+T(u>r)#J5=7do3U(FlpWTWmm(? zfWJOy1uZadR%PX zO`lW?C%6cd-teu|bTsVrohxu-MOepeG>Kph?}Z4X4-9CMvbGMrBg(xiKkTGAUo`o# zCW{}WGL&q|Ay$b;S#JAoHC%Rer|b_)%v|wYf60VAo73qut!w>he~VFLZ9dQF*V3xv zS;;kGnC{2JcNRXKFK53jxFdF^{^c3v3Z$qOeB`8oml^3f>v9a_!v8#2BKVnzQRJh0 zJ)hE_gwpR<7lHVUkzU$RvAavkRg6F-2fucQkrtF&ImfU^^|fS9`^3h-qj44oJ%d6W zB(aQhh>z3nk2Ef7skz)Jths;fHH{>OAH`#R;lR|o$H$w;;~9O+_{Ro$U_a*bx+{N0 zd5Zje6I+dYnu>C^Ia#T+ac|BpmS$t}-(=;5?^uxz9C^IAFdbt$lFn_D`QzdyiQ7t< zz5S~(iMIz7A?8{NHJrnnPHV!j!J1Aug~5I5+=q1LqchIPZR_f3ibrY*S^x4!aBpKRLm>&f+HtNpI% zddvW{7x=UowXaUwMw8^LbwK7g=cUsCqS#A=l1(D~sizFC zc;0^{T)o2iQE)fgQyXs)TqGE$p2%e#tSdE^`I2Iu!Z zHyw!`s6h{%$sJt2_;?4L`g|*;k&NM*eH{s;0U0hQzY0r`)Mz_UOMVnZHU z+iNF5*h>zcTPo$phjtR?HE87sm&}`EyO3kaY3L9*_pyNt;{U@QwF%d!X z`8CVQUbE3QvnX&}1_;-zwnx~Lw#a%DEb00NxOG~Qp(b2xYrSD^OlSBb(M%s3DEQ`H zQa(CPdX=fg6a-N6oD_bBmg3$f=^uI(RH zufc$B=*F<;qQ_-%O$Vt5XGdyRtr@KYY3m{$qxl~db;rZzr#L}sc=j#+`=v#6=6$Dp z7iRP7l-p$U2V+aQ@AAi<3b(mDK&s60jMI_#L#%FIW_^SbEZ`tne=y({C>`_u-0ONVhmdLK#M3tQMTIvf5d2Ma*|-=2ePC+HV(*lUv}wd+kh>_3jhH*!PBUDp$IZG8gZ>P${m?C)7v&3fD z`|#a7XQdz2c-_rVN@zqO{KL>xZs1u`-Ebp@)^CYU@;O&; z>9&qtS{1I2%fx$DuyOm$F}haYi1yXpsYz-ZLN@fWys)=zWsP=~R;x(w>gIgk1RwVX zGQ@b@$(fX)iY?=wsC>zX-edMQs4n>j!{;>~u_Y??Z*tE@Tcz+ZP(qb}z&UKBlG&-q?qSOAR>)Pgg4&gR*Rfysq(bBWUWPh$u2`@Kqr(-(}0Z2a5)G@$YBs^2;$r465n?S@)A;!koecZYeNC^+PZl;;7x>?Z-{Q_*Eg4qXB)XoRdM;h5 zpY!yatvuTFD#^67mDVHSBs8ZyT%dNppRP}vGE*E!|$%KREl;#4Yn&&XZ#r}*?X z$__TacjF7K9QznQ>A-FsbdyP?%XH&@Z8h1)5#L80d5!Yfb5r@ViQt6H^-gJB89#?P z20UJ$ZKf5u5c{IHCs?uf2k$T3shd&abY0!m^zA7Y%nsBx@HjA!GRMR_2U4FWCWcWK zJsZjkX5{5x18hRVbL5aSo%Vy=m4keKTy;Y;xkXj z!UNeotXj*rCL!O1zj**orUe~0v3YMmfiBlz+e2pGKUS@%zX&Te{_t!xg>V%a2!$(p znN^`M)b8Hzd_#md#6VQSLTy*W=zp1_K$@c(VMFRGEaAV$fd5rrRY3;J3Xj-I^0|^s zPQ&0oeoP3{nhN7Xl=aIgyZ`GIMK~cLc*L(S|J~&J&l|+xgq2JqS8Db2sC4Arugw6E z1)JwFL74O}_xtnhZ?D9dK2UBH07mO6$QC4%?O!$qhrjSWm^+ME=Vw{S3f?HzU_EfG zateUA*DkZq8m1e(s1N3sJE#QK+j=tNM!O3F;2*Af3#gUz-}(7_o0YO9l2HG!VSVJ_ zVAA=Oc+AL7CD=j`Y*YEAV8B*mc#BnJ*YKaWU%>(E?N~D+BW|=F4{!z}2g(DqEKi|a zwToHA*l-KIh9;r~KX|zx$Wy=50jse>ehiB~RGp2{(PR|VCP6INi_5ed($d1F`S|1< zhjs9s2xQOsbZa6rXx$P@kh;Uq-ot*}@k-mUa|~SiyLMaQaL1C#b%2E8JM_ZM;{66K z#}wtGg-*|w+ia2=URs*|?D<R7{2bHQvXx^*awIq881MSdJZ^qb1^SVmvHJ~|XieCiMEpga_63tRv$552+SaB` z>mSIq5T= zUhCVu_i3*I7sGC+m+)4x$YzwK_{SxN@@#v9d-s^#J4r5SXioHv7W zS8H0(eS0x%D3V!fm~ArG@mk|T`ClD2ASp{3b%YyiUfQgZ{MO8%#-R5OjsM|lolU<3 zjvJ7Hha$dP=tt0=0Hn~nOT^BI`1{*SPC3D8WL%~w&-)vj*Hn@bZwb`|(x3RDub*HQ zLnMUPJMr{N9bHc`3VqVCvt_W{-_oh_8assoBPW48t0gVMYtW_>1A4X=P3tk?j+&tF z+p%Cpub$YqjUJRcz!)P*>i$D=Or*Kqo=^*ch>B!P;D@LSNW0Ay7cLXRMlwbrXdBXhh%~u$Qj`b)X0bqy- z;AWV@F;&$*HH94ue=ysxb~;`fuP~PN)%HiiF#=h{ErQKZ3Gq>`NeDDW!egHpy?+b6 zHO}@@hvnK_C3-P5KI!KtT_Q@&)>~(4KodQynbWKI%i3Gg*_&N12G^zCwV#IF(P&xX(&y}cW^=mWjiA<4^@G-tB*%Hs zi&hW7!nt|?V|@c$U*97IZlp>Y_I~|zh#7AY(gz7LBS($y8(Xl9lr7P!NAbM_BxQmg zLPpB_1kW?TJQ;wFlIgzlr zuvuzy$wZ# zM#(xCEYkiRfJ!7MfHC2DwHoNG`?bdx%qfWvcOc_VpxPuAoa#A(=`^uA8WA_XDZ{O{ zVe9FiW0bU3ags4it08j=-NTWblgV`VH@X<8S8i3-wsXH4?4_|PX*%8MMwgnUG^UnR zMw_j&t3Q%%hErYcJe`rD5_>V zluB4CRnT$gO(2Z0Vu%c#0VopnX4h&y(2uj#S533<>T0FKzOpm-b{)~qH(&@$j_F~n z96^7*yqA={eFUD+tHbP60O&wa*O zdx@!@wqY(Wpkakba_>ejj+a>=iG#xAEMPLFA-~l+V5$(V5U-h>%=1)e!L__#q8@o%)} z^a2@)Ruj!JLT$NG1~bzd!!U$rJQyE1lx#^pyngkrz?y<#>RN90ol|*{+u5ht+g>ba z(b;!AX=QKs(^2;0zIN0U8W1$k6)dfqv^0ECgzdQUj5AVR?g zDko{8`W&N6t$ha~9e&}^&H1Vv;a7hbhMYiH-?td2A7raE9S>+00e4t&Z>pG){y9i? z#@@wR`I&ABfaXCN{7}VbO~4QKS#FK^lBtId&XALWI6Jzw74TZ?$!^mnJIOU3?dWPi zTjPhvBe(Jqb)Gx#m!uGABgmBMJ2E@~bW64btZPN4A%9pGaU*d9=lWDG)j-hX^q{V6w1z>_zipJK=?KaCdbbvXq_;{06*p9(GY z$q@oyEXqGs%IQn#xi@z_L#ayOraS_xN~-}MMfl8ut`1*C%wT8Euog0JRR^*&CYzX%%G9 zd&BCt99wuMNrd&XEHd~$I1VS%eOmIIcoFHs38Ut?IDbnGnutUEh)qS^laElhCNP4&6yMijS>ECrh1>L!dv%tKymULDu4X&5Qo zkM*1AUq^cgECHp|Ul77;zW z7WGB`1G}28x0nj)?`&(MuLJZk^(`!lUUL{BXaHoD77ne-G{>J24$jwGR*}g^{e

eoK^DkV)E!-VTedyb;H!r_=xG0v5@_nQ8?BKo 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%0D>*ne~{Cj@Q%$?&drum&)W4b|aEeYiJp0cJo zFs<=fY%=n!Fv%EDYtdI#so!E`rY~#mZ_O8fQ$=PW(`^ zt+qAZ&6O{X37LseFVre)OhBX zJA;^xj$7Sn$R-*uKNq%wi(ky+g{8~f=Ei@rrg&S#~O! zTgxa3E-b|%?~6%l!~6R~8O|KgdI}^ZT^B|m!qd|kCMPEijg1}9*X7c1xC8{C{03Q4 z3sZH$9Dv5vbah2guq!yV&*T0*1Onggk$9?pTq>I$b^iO(3RiHW7PS=y=(pzn9-N$z zulS7G8AZCIoPYm!hE)hE{NN~Bm%aeT^bD>(KuL D?~Yob literal 0 HcmV?d00001 diff --git a/resources/images/scala3/scaladoc/hiding-code.gif b/resources/images/scala3/scaladoc/hiding-code.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3e52712beaad96f7598b7e25681d3f50b637034 GIT binary patch literal 888930 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

d3P7GnSc-YA7_((ZMQBN+=9A& z%Ba>!Ja#?au}R#fw`L_$FV@~|HfP~fsQC4VNWphEhJkZK_dX!*f4UO5!|qdlQKiDL z9;k4(VmvNnVwHaeqa=WYMu7ey~nRV?tAi3TS+~+F#cwK=Z71&%=Ge7>ujXrf?UrVw_=+J86J-(y&D;g{FUs? zyT72X8a4!2W|S_KCir*>Q#tr7eA|SU%5-TxT0{;F52Q%iJh8j zU$^Dxtlsw{TfGOqy%`9Fo~&M3Y@jP#`l?q=p#!t+^^iyP*O}9pgRz@a7ScEOOJ0>C ze%qeVl6i6Hp~jGvRq*P=VA)=`0peB@dUE~Q%TurSUVDC6Jn`}8{UhB?O+dJY)z7aD zF%Q&`@6Hp+OaM?20Niu8y;n^pE}|?l`-{TcnU(_*C0mQPRWYk_?Zoud8Ar43aXF#O z?C((9`v)|$(*v0|YOg+e;U^tNBoYA-I1T`OXN2F{n2z*R=Gcn%{@n6Xm90}`MO+>% ze{=N3te&b1sdbw*Ci0#GLgA|z_-T5Aou8Z8<&@~u_1GAphLYq!((fzpq3793$}S7r0hsZV*-)gF5yX^cF2sOv!vGAp-DPIS^vif>Kr zk%j;e{aE{II9AH}Ogp`i zx#KJq4|(Wl%;R@1>~1qyxu99Z!>`fNmKvhBBLj%u?9}YpXhg|ffT8W0Pv=;6ZJxJ4 zqG?Y03>I~FXokPINLj=Vy(rO8gp7XXHGZ3zY1AF_n%U>m*VQY|t!6Gq8ZWcl;@C5K zNBZtd*px+2sfo+@S0dKrLv2n13!SS2W1fWI?u@TqZ+r z&DBLJdLa~XY+u9<~U>9>w|}8B%h8LcS}c@0gHM4i-JesfsM_ zh*l5L-DQD!I5FV%?dhr6Ynk7Db4}duTR*Xj0f|&!Y^&H%hX)Ma2Mf-=O8+1d`<8i1 z%nA$>$N=Mt=zL=yFy&Z6z>Y)b1Q$rns1uHeoy?|(GM|iJj{_en^UlN6Pnk(wB|E56 zjBM8Z+K;@Gz-V+ZOVVj}(oXE~+IS+aXQ>rSBnRxv_TYQ0VIZEW{ovDe&s>Vay~FNAmeIpnXFOl_T{+6wOR-|5sy|sf5ggw6>7SA?NRlo_i_tl9yGz3 zAJ3V@suQ6Wod%%S)flaSXK;t?$+SC!PjXG<;f(iQc?+~a1jZWCr8+ITB^o3fO9zhm zv!S|UhV0MuUWW?)>Sw1KB~+jC;1XkW>erm`k8Vf!G-6OfxF9{5`T&zRnI&T!$Qw#j z*uHwG!qD@Q_G zb&R*wDSZ`t5dPEQ5K#g}Lj}$xvu4z{H?u zS6<;@k>aCGj02U_Qr{i|4(zT6I-MO-N=24~#XS_4V!iJN61e-H{M$4`5 zOweo{qLvF;r+U3k+$~o~h4gcz6LfmR<|eExr-#+(x-k}h=y36 zj^)OvPAR}&w&~8P7IDc^8P0{>_*3XUtLDpb%%+doDiip9afe=5)pAZ(tfo&+d7N3R zg}pn+JZ!mQ6IB+w&&yHmy=tGkV9p{qHe9bD_y! zK>$a2RWgs=AbeklZ(|!d^yYOE|Lve`VBn1H0s)&#wz3?;T~qZ_ej<7Lwbyjh737ao>T}o4*K#jGy&R$?Lm11~x>tBw zB|+6>MNphl&rRs03xk}B@_9($z>WBCXNMHySAPzI0XYnx*vB^d(J%KmI?H1wqe zyhYNh1TVk-+Nxgq!O)<8F)ZMTxj&=qgsBXsnL%EfiWu|`hxP^3IYtXbn-HB5)f5-4 z4hu%?8C{o%&H=<-Qp{ZzOmjO-M_&uB5$4APKQx)dOi_^biMmkY!IHomwt{!F$;ub9 zMWzUt;_85RK>^o{NC^m;QdFg!oVaQ>Ei- zC&AupE%8{}__mmRdtIab^2J7SRICHz&W$KGRr}!?z;?J@yeby^&BJTN`(d=+K?C`D zHp*67*)r(i^bYNEufQ#k8IwP`EQmBXqwI8FJpK65QLt)Tx!*1MXvouqJ31+VCbf7X zvJuL6$txCbB1F$C=1@HuB(} zEVD_tM`H3AANB_G@lT8WG?Syoo0&oi@mJ(?>~wP;>EHu9rNz6_*K7RZ)C5GjZpgVk zzBi+M#X57}31PJY;m4|msDNCGVeVNK?X*n(bsS#HSG3M1&(2WcOj(Z6j!e6eqhzFx zR!q(@olFO0PUrT=ywz+I!-9h7pCb#rfk?i2Aqc}oM^GVngsYU-^u8@ih&u=z<;meM<5MyCqzLqp`V0uzx{!*nuY zsz#)4)68Hf$5aL5!!jS3-ZhlG%h^b$fd)4flGU@!*R1|4Xf*9@O}=S#!HL>*f9`dZ z5B~xQ?ni<@r+FJ}Aaq$Op|!*fj@1GkTXxZBk&bo2Ln`fU&x{mF^_OlC5~Aol4RWT? zxoBN)z<%1jm@@1p_30V~TR(EcaRZ~t;eoMX0&}HrbmTwcK)dturi4t#S-@SmbJwyk zGjz;}Z9eP_5j{x6q$3rUh~;lcPu^QtAT2R!&a+oDK~l?) z1>J#1d=%KXg5&j|Vzh$gS4gNJyn9au+JuG>o5pOgkWq|M(%`+AXlx1tQC692U;(;D z(Oe{B>#0z3weWoC+6*NC77^{U$h zWaW**S5Gmw$*8X+g_Cr^qINlz36P~$nOO5mumL4wyweDUHvlMxQRhX|SY#n!EJV`n zeHMjs-5CYPNAu>o3eK6zm&s^tkCv{GE1g!*{CI>#W90_*DR7{4&wT01HVwPUgc~rh z8yuy#EYJU&IjTvG|(lc#To;%Ixn)pz=71sXz^12~9B_Jc6T>zs@7^@&X zt3M?Dr03l8U^eDC4%kR{NWmiy(SR{Kux!fna~F}xOi(TX%b{Vd$lx3{)PQ@D#6mig z!MS9l=QLWMhJb8gK5dhb9(eG3g8XL|$en_Uq9B&2m~uS$I0@Mf$1*4YI7xkt2D*$F z&1E9Qaik40M4yOCBtl`%$O|+cmp3AwwCbE_YyulNir4C*0M+S8djfcofzBa-?C8i8 zeg&xr{$@JBw-~UC$}g=C>Tl#tAVQ1)4GRR6I1!#phfc2XX0U zQ2U8)%?&o%kcF&_#~LuIZV)dy!#{zbezchV;eB> zB?WSs(ePpu5=O|%>Ve|#h;FdZ;>4aidSEpc@*|P3frHDF-}Lak7FEY4a)6_3%vT0V zoPpY+!o_gSn{?16I(D9@Bl#I7?u^!)g^m02uP~tl-!=R4vDXM-d_AU^^9w97so2jP zU;?hj8~}WriBV$rdQ@bnp`g5EUdEPL3>$y~!1RSZV0hJ&J)_3yX)j=HmY*@Tr!fcV z&;cuiG7e~+9w}JdXQ_fE{OFT-4o;?FpW(pWxc(3v*fXYy@chN+F{JiBtpx_c5C=X& z$!$5}ALc#N_U0b>Ep?JDz>y$MDg|>Iv9)c%TCg!(@!b@?c*5 zEM4#nXu5;iavM*kW1r!{J$K$2048MbcjS;7xQkEc;K836r3&NN8aDVSqjVDwnSNe+ zJVwYw4Xeh4YW0YG`2j2-VXxO=yJ-+{3i?j?yR8%Q4|?BTm_RRDv70FG5I->+lv$ZA z@#IMHr&NHbxCEV2&|eUvinYM=@Y660gfC7c z%yk^FkS4!^=W)WJC)p*NG;}YS`$eJUd){v_P~?Ljb8z4q0(uxXZa{|D&`?zj%ojE~ znE~#lU^ZxIe>VCp0eTd#wZVZNVWaC=n6ap4^%(vQD(D0ORm?&TQ!%4--n~r31kU6> zgLjz?6=csnI)HkG*O15sj8|j2aPYkZR1+QB#R0w`%!)BYlOBTx7^rz7ztna#@GMN8 zyjjfQU7=zoNKmzH7J7_^Jvf2xCh}Zkh<+i0F0jybWOtp*(0hAP`7{8EhO9*0gVCzZ z4KPmtE%~f%3trqE4E`4E72CjP>3kY#Z((bIy1sRZC#cRWPzXTZl-9}cJfWcRJE_onGt@=bkDZ8tLvQam_X9saR|21ZzE z)TTHDnc*Z3uwKqD$vq~BHr@?c>CbA<@f-1hH;y`=DHgkY%iOiy%JP&%)!o{i@xf-; za|>((Jr;1f&6}X_!=(BP=<I6NhK2_-4YL&%hM`TN2e$74K>QRU4@#ZG1WtC} z&rKB?x7gbVR_qY1+RTc4_8NyFn zZnfxKG7YmFlQ9Z>J1HXy!TQRI32rGCo4m3J>WeR^-0tNLy$5LobnG%mEhyK z(6Ie8sNOvD;=<>?IM55mG6AgkY}MwF+K`v+k-t{&H$pvpanhD*Q=VBr<>Fjl1vx%E zO0pd~G}tR~ZRZXak*~H`>us|B)8TN+Qu8BYpP`)&XOD`!ess=}=c~Ql>C0tyS6>Li z?Db9ug~o!|tMJ#&ZzY_0-ZH*KW!(&kavrtO^Zs_)XFBfYTkv1S@`EX+IXB-$4i@nb zM*{>%LXH)?TrvW#ID|}=9+;AM`bL%s$p-s!RB0;9^O7(Pn%KQAN+}STR zE3a=~d$AR{E92}`M)H*gl-74j%PY*c#>SjIu*DXs1V7I%12Hopzb9WWrJile|NhG+ zMW;NX_n2KzQ{KMd{rcq1AKq`A6Yks?b+7tyWBmH?ottlOfBSKh9k~0h&s4b9PoJ3> zhr72vr0jm{F?g-%lGj{e)lXkg*6`ii3w7Uq-sUv#zUQ~xt+nm9I^b~c&eyS<+jrKd z6YkyJoUhux`+a5j-o2k&-?+a(D2WQ%O9rBSh+r9#|F6NY=sFQ@N($JSO@{3AG2p#O z3KX6pC%_J@|DRpc)l|F9I`Vq9v*;HeGyMg;<30IzSap#KV zAFe#_ewoXae{YqiJ-xYH>FVjl<;s7wO7H(WtTH0$AFVRtKeo!)|ASWf2P$hDn18d% z?538#ab?LrvC6JLR$1Tm@()-3%_{49SbwZC=Vi~oE8%ICE|VmZ37{5P@Wa%K0@ z`X8%&zq0mvb#-Fx>pyU1)7Q;^%9VqgKe=N0a_hgAyj^&tVZpR88@=q1s{rfduuhc&~I*}PHY`1W#*6>SYYl_4E*Y`KN zELQ&OR@v2h+p+gQu*xPQ``&Y0tDKAq{zt29|Ie&4W|)xv-)fbefteB7AD&D{>VN$- z{pi1Yjn{v$%7jzDtnxYN)gP-|{1>Zytlw!+z_xxQnLI`Z?{b?fDC&Y>)k}T0dAc>D zKUB%(MRrNCb9y*^nAJ$WDbO8PVRoTt}sWBE#Vp61MH zg#WV28QdX8$(u-Rg~G8LsD)NR*_#$MGa*ffit9{UT_khPd`lGF7G0&V8TQN*Succ?sC~AAE!>q8BH5ymhrdk!|KYPEK^FZ zL63~658gkkg);TdMnGFU^3EwoV`-wn;i{-6K}@;yz=sR?Hr_L2Z4$_K>`SzB5n>k=+Q6m?2gGwz4bLum^hMq zes<6JtYKMfCF>(b$pk*NUSvAB$r# zeaN)^%bVa}<({l$a)-fDcwmTD`6LMk$2xURi8`g6$&KZ~zH((=G(42CPiZMw`b1d( zWW8x;hD$hq^fan9nMeI?)O|GEIjY=x^5tC)kLAcY(2&nCyd2t466FNS7JQ_ni8noW znGJhVl$9n|feW8qN<2F?z0>HNhPtI0t*<~#|6rbx*pZ{>BYCIBl&nQRq-OHHtIL*t zRb|m|!D(m4liu=5KmcK{BwC69(zo1bxAQHCSS05tYB9DSp4`ZHuL}rW>A#icz*#YAiY4dmm>{YJ5tYI2)#9)WN9RB zc}&5iB2ct>w9K%h#x($+H5_Cq#T{^5SqM*YISFG$JKCTG06BNZf~33pQoS#;p`Qwl z>F?0=PgLIi(2`s2`6+%y0^J z1ZARRxDua?L@VueKs-+zly(9*PMKQWZTTEFP|$T+{&ZYmP4<&zsQh84MyJpN{DmKN z0iBOBABxPl&F^@J9L~JJb9(GnyMQJ+K>ZU*M-5^iE+oPHYig<_qdE|w$&4UT0mXm4 zAqwu5hB=-I74AIUqS%jrb#Sjb|2e?rh1CsA-wPv*jCPQ;W;d@7*aw$R;;|V91_(2! z_)p$15gkQ@C++wauc&P-V-E<(R)tj`nqYc9lqh|3?i?t<2c~7p;IidZ>DZ^%e`QPC zFC~eORwqVJHwji0xj2kK?Wy?*+eH^A9JM-u>Y$F{0N9iLeVS2-TGQ@Uo_hCiD@3?Y zeKY;84~(Bkbhx#enWo;>q?hP1j3!)ySPIUFX>yPijm;&NE(Q3_~br+$s7AWTl0l)vF$TJp*Wz z)PL%4YF7|$hFD3g`jVx(^^pGx|Kj$28}7Urhp0D4dVK?R%m*{$a%McKejt*8=bVm< z!jGe~i3TBOqdh@wfo2+-Tq2{=ky1rZ?`knHPhFGvU+{nS&Lz+CZI)pVYe3XNp`yhYLpasc+WE5Ul-QdW4)~Bck6zx)267cBe`dQ z7`f{*5qiVrqFu$yFS#E(#%7wp?cWnCX)4I#j4T=b9Tv~Mnw_uUSqZ6!q2Ys36~*BD z6VC%H!&Z{5br$hFpH4iy=)ZHEZA&?VaKbBRw~=d9;mxA!u3~W~eWN(I5UN_q^&Jh- z_UZS(2z0Rg4XOp%$JG7v&-Goy)dzH1B!s9JO=`a!5=qd4`O8*j&9nrvaT^*yLLCF> zZs)w(PfU?!aCBTxX_=1<_1{Q4@;wh*dZU_>>ZlX!ZL<#-^t#?I+o#Q%kbdmlIDR*{ z_u$#(k*&Ao<=|}@>V(o&^MwJ$bys=NK~6xkfa?jFlM-PJ|CI%p2#)q8i1Ez7hH2N0G|+qA2&FPeFK9UacI92f-Zo=3b=gB)WA64wI_wIRk&fGPk| z&wv~t7-drhxSV4QAp#Io8yknj2C@pk54ZIt?&ty@)fHSQ~#NXSosfHP_j2iEVnU(!pb z>2+l&?!9!9dg02-dCMLk8a%AOpQxltMLlyObu@{PJJ9QWD1RAH;`?(gl9sVkKHpa{ zaz?+n(puB@7*Rfly$rw66gXiUw z+1~@d`0SHRRbsf@h6HXvD}jo-d*i4&oTQcL-O{0v#)fHc&%*A|ViI?H1yWS)c}%fNdVH0y#nx^BAzhdaV+AfjCcnD;dKbg0<0L0pfjn8Ti!(>t-|YW&fvMj1BV z2dy!$=?9{1JPAXGdouivwWGa`neMkx@QT&!tq`T$Qgh9>l(vb6HU`M+B#QKl7~5)` z%)hqYsOT9IxMCAwazTET=phxF(A6)u5G}IEz*KW$=LS%t+OeCt$K?4*x$>&0;N*3c zknlaa^`2@Gc2-9DN(%5qh(uygQp%kj>Ip<-2m2ytDXvUCCYy_v08}L&RZUIpsZp)u zq&ng~EeGWAAkqx?1T~!`vJjkY>V;S^^j( zRxg=yV@AFyHrXInAid4pDMwyC)==a`Iwy>OwI-dBlx!iT;$oNFr>=dsCbLXkGDA{9 zSV4HZMr2Oait1&^!=qB3Ej!LaCUB4jVHp-cgr`sDs51=gMql$hZrPQ+a6Eoba?Zt? zoD<18n;u!GR3BGb;Hu@5wc*E{4KjPAV&&A$r)D#rsb@WXnia+qqppkJw`mBB%dL$* zU~au{SW@+lZuDD7u7hMQ+B)~5TSoUbU!E=~_mr!5yz7&**@>19_E~Pmotza|&Oc`1 zp_wEkk)a^_SFNAcz+*`;cBnt+RDpV)LY_%xBJNm9*ons^6QjgTe!VyimZzwxx2@)d zz>Q~mf+utxHtaN#MVeT0+3Z5?oc$NP5a|@eT#d+nldGmCRtk0)ANrBh>0R%VcU>&k ze?fyE5t22U%ea|b!0;`3KT={US$NK}P{ZbNUKs!4Z@R2!8<{R)9@9bMF=E|n@|#r4 zMJBc~#D~NDrI)q#rrUk@!lN0RlwW$e51QpYbU5T9494Nv(30O`Vx`@&>-bbHDS1OT z(0&TwE;|ER_i&>Xqq5EP7`BexSc(TH$M!{Ex-J**m)NR^H@j5_nA4-q|6sH0e zaB;6Pu!&T}^^`m8QtE95&Zjp83i|$%vTo1#_P9UGO-Q=B7_uy zRjyvrGJe)IDDJ|pb6Q}w}F%H;~rtqh;Ho-d7QLTcd9vC&{Z4kn2X;$wrdNSagRN*Ak! zUvx=F@kl`;f79g-C5Y)Z1AH6+nI~e0nV>jEEr-cVRf0@&s{Xj;;@`RDd#+p3G&Z?z zNqMUE+byrcu#H4Wq9W|kAGc)Q9Ls3jti;4}-ID%qZW;HlZn=*a3n#-K#pEp!u~!M8 zSS1Z20DPKuvIGSZ1VAbom_!0ti~usBB6^l!a8mIy1N4B(BS31kmB6yem=DZfbonM; z*$P$R%LKF#`MJEg)BDi*di8M6wuOSdZbhe`&OQ(3VCwNeCI?f^Kx8q&dkFH&c+5L1 zt6VxlpNw3^VK*6IQxftj4*ZFODcL4KP07eyvdcRrC<*tJL%`(VV1`r-S6~h>pj9|T zEFL>eL>bZ`Ii!dsJPJ+&JaWeBFroeDkf|IXI0tLb1U;i7&f`sTNlT|8~ zYWFX`{6uyi7$Ci{2da2Sbd#%>%pNYY8xcSyOw6tVtUrw> z>ZQo#G{aRYLY#_Tq+n|~z*+|OJ{x$T2dhhgerI4H!nNk-&^oiQ55D}XOz8M$rJhD6 zS1*<7F(tqCQm_d7i35zq#c}m=maCVPR}7uZzfe##iMMuMDTV{!1;EU2i#AaJI@iZY z7<|oXiOZK=+8+MW%jVMvWjye7Nu<>2eoF(aUU9z?S1-ALL#|#jf9Yk&hX%a^4Xg7= zqbn|pfAo^TJ5rB5&W0-0>+AV4FOm4?xmLBCNLs}4nh<#m{GQH}8&4U@Bd)5Z3J)() zuvHx3b0&7zRhRE1a4|0ljw?6k0w!ZFjDiR|{R=SBT)<@h0!(o(VB&{4r0GP;(_esz zpU*rz%CW4dLctgF`HfL9UL1;UiL5}ETA%rH*F%5QUUZR;-a#I(BVs2BKnDi4fifN| ziJ5r8=rHah|j5=-~;%3qCPk@YP8U9h-fy zeA{D=w!H&|Agv&XKuy~zH9Et_SpGX>O0Dq4C;G@Wy8CA;FqYNOGYLZ$s~Nk$`heHw z(EhUI0wxP^id~^)gnTwe?03SHvj9}0$szHpukU`X^8e!8wXZVy>?#c`NdnGtFq6vA zPXyQwCNjwoD~X5p(a~m6jA1sfDIGD)Zg462a5??uAHW=8{TpB|`~ge?_qh14fJt`Q z{0*3OY|NN-OME>4CKoV?s1i1EgoSzY2QV2)T)^bcix6baCm%+=B5TN20>bxV=jpuu zM4k#9?{_+HI%bXwn0Z{lq@(7yiTnZRVhg@zdE!r9MAnl`qWg7qdy?ynSA{ zSEAR>*H6a0dMfLs-mOLC;Y7~Rdp%zhA246Pv&eI?$W_Py@bcWj{RezW{Wl+m;wle( znwe^nN%0Ev*APQjW3VZ4HF&zd=n%`o1vN`noS@1ujU zpP$ghwu5YX18$1kjyqUv_*j{@@e^MYP1uufuu;27k1DHRnI-zJM(3d~_W6Mv>+Xyy zL~}6KC_UpdW;*b}6}g7JRE2A1ASkaG%N36H5B!9A?;rM#ZE!z)s>V3$`&1MxRYr{Z zC^DR6IRmhvOSu^$6)QM~ylR6KBaDg?OCmdY$C7-CQh7wi%?^ZY`pqsC6*1qUr#;fK zN?9;5U&o**>FJq_&=e2MsP$vf&Sq;f-;O;WJ7PS?+FC={lQL;oY;>qO;(GIrT5tOC zOKKr^$3M_-&UEyI$aw_8G($+S3YOjJ;}IYXj?ya|OYUB3ks8xCPhS1rgBBvxOj3Ea zukuEGl=Pm_L5O+c2w9f5rc_|*mZCfmLxiZ?%HBYpppRU{G{0Vsu|4K}%>JbJ+A+to z1<}TQDUwmLcCM*Wri7DIpR7UtL;D9pndkF!ELBeT4jd2L6)k;H`tnX)g2yk!^z*K; zbUt4D8hehKS^0+N$LArrt1sk2-yG7Bga8dMxZTuIm815KTyo_%jl6#8;o4a$NWh02 z5SFabaw4Jj89BsxS?$=pYY(aoUC(z`$;1X3T+9m<{`$u%hXP|P9rJ_D>~GD40T+CJ zTjj-M4~32Mu^9!oK02N(VO>i9ZIy@@dp^d7+m9O3(XaDobF$)n=eF}79n^6xC~vcM zFRA;w>F!v3M9`hl9Y1urV!;0PmE@L^xXYD|A-Y#<=PUItR+$ZMER=ryuyu_Ix~FmN zWYqFWO3O|MKaaM~I~}`kQEs>`wkcM9_w3m=jgtr}jn7SOR@;5YtKTZLM#ObFYW%UM zpM1O5FRT1Y>o&+u9ZEBt*!|C~^5)N5pRy9}{y*1vy}SA9`dJ0>(cf07#sA-6m8Jjx zTjh+i_z$jCLTzY)d(TUtZXn@ zAHY=EtNizXY0vE~NhkjMddq(?OuzqEy(Krc^a^?KAHjN`46R~ zS8UQh#FqbK0rTI-mj3{lze~%m@|Mm&v1M)BFTkwrZ2ucz)_1f1W|;p0VD`86|L+6l zt8w-}#FqcwFvq56nrGg>ocTUA^Zw`it=Atn#y`$+4YT{x9G5YTWH`KP!1N5f1^*I$SG#QM_? zK6vuC-g3A8tLp9kPQ{Twy`{pVC*0oh!Qb_k9_G4kC7h1w82#9Tb&3b;pf3A-O8Vmq z{wn+z!?cv1v2W_u<{GA))Znu2>A&@s{sK8o&WO6+HqaNn}}&9TDk-^QJ> z;zBM!3bR)s@9PcDc#}VrW;vSQ(0k$pswUYk(|jlnyq#9nN5$SjwN_!C;Ny;36|cA1 z3BN>XooFvE%{tQzdv#!hlX0s%HWTftBtm7Bk4J8fDdkL44HpD)`~)TdLL`{7D|Vuh zwenjx)?>r=FVq!26h=Q#i4tzrc>klIN90d$X`L#{`IupK@Y@Ym(+WcJJ`v9yzxy2p z0D(j@Lh{+b-Oj!=M$GKu`8CY;cRy8!I>lErXY9V7mMyL46-o>MWDM8LK2#9E<0h=v z&2(xTr37XSiR)lu@p<~vn*b@n!q(onG3TP36)&&d)T)a>|SKFzT*EZtd&TLTw) zAw2~m6D77qj`e|;`)quL%cslD}w zqrpZ|d^}m$GsJvd7rIcJo^yVX(eK{!DT^u?m;n^0M_*wyW{HKm%IrDF$L}~Wm`jl> zt_Z#wdLZJAomhuIUYT??&is}3a!8An?@pc+-cvH_+&j-iD-<38l4KDARGC?^_fikn z_N+%9tF!@)FykJ-2-z0@;GY>$!jdi`QcKl)?*||77gE_hC+&Py^twTe#C>d(1}UAlR#<9-NS1NOr7=2{ft8W>DhzfeVzQ zMH!*zN373WcSK_EZCcWMtnEo7U(@p8F&U)dXe0M;RrgH!Zy7C#=%;r!hbQxTiQuM8 zhcqJ(**OJBoOZH!c=5Got{q5IFf{wdF03(y$Y%j)L<&X?o}76Gw${ENbe_~~8H*S2 zR0qnw{T6wNBH@4Vjf9@yIneV+16K}1R{vDkGY?+-(zIW_B{RGM8lY3p0m2W_gEbWl zp@r{3lSCkK&$j;8_?NeWm8+Zsw3!89Iy(SCB!pxioJKYu=GiZEAx!YoP}M7&F54{2 z(=vy>1FPy4u1Dt$IX%xT?3>SAVis86xnO%`9Pc2llJpu?^33H{pvYJS-Jg$sF0@Bp z8othi1AZkIR37lhHGe1*pRZlNtUE4PB6-RmdUM&IP6q^@nYi@oCgrQB z2f<%L!TR_`?sR!P&R8~@4kR%^U`?M^xeCU(ZuZJ9!rGO64rKV@A^>>1XP=D*>6CMe z`wa&c5&yRFAzu-Z?^%btW{7p=Nf$#@sehMOVfTBf(^WU(32m=sswRq#Tq_h}xcD@5 z`7_Q8Y}a3y2{~@i_4ca}`?;}Nq2I{G`@8wOp)w(}ic?FG)UT7G#sCAI_l@CRFV>NZ zWauex=%ZbGB?^66R7HFz2EA7z-@n@Z!10<9*cKA(rvZjTe_(t>C4@!TP5PIIT!nj_ zZCvFV_4!jDTBz)=>*>29TUqWed7X;A7F;1}e_-B&O5{sp0i+b9-)3E|>3;LIF9Brs zK-0~E78qn^(m1A*Ly7@4_{F=tnvYqv&jfxsCaJxoq>e3lc{bLmO;D3`3XhWS`jxHSzmuhSx3>(qxpxHY zyv=Ua6FT#bylcKyKPT2YSjp7m(WGd-y0Oi^ACYoqaL=Gbl6B3E%7pZ+ zD+%s*-Y-v&j<@EoEJPIEk3I9OYFZOFGw-~;r(ID&1zM4-0VvP9S)(2mc3AikEAEag zJmhH_6)OU^{%x2g0`2r_RY0I9$5kw5{_`CUyzTD(BQpXt zb{!_pIYdaDDIqNPu)VN@d}cVM=+}7*uGzUfc2r;b&sxXfp@;-2|5%Y{}4<`U5 zb^+kHBlFjT;XVtqGV;JegD_N+zA3Ns-*Up1?DUB;WA56c6VwTtW(JSPpf5J2Y1CL)!ad9T6!EVTU2+xQWx!xg8z zB%GZ-s2|o@_ZtK9hyVkpk*%DEm`6CnPXg&4ndBN2ReDk1pz6T}x=(- zBgbLDG$gl09VRCYSX9qKWMB-S$eE#`1yiTS~S{Aq*ZXsI4tG zxdb2&nVxM8fWG8|x7hqjE*}qD)oMJz+C6BM4k)hxn)1jSP=W1@BEn{~Nz z%#hNXPIwqcKvsi9yHqeU#MrkTc1y&#m#ShkuWRd3aZ3{N8bPMEA9v1>(Ql;Wf4;U6 zX%$)4@E#`}dHX3k%h2qMyuxKyvmXEW7Dvgwt~llU(E*(jFRj%b%HzD(<5UngTHsi2 zd)c8anxKl^Aq%(ExcJb}cG%jaiXH3Uj9M6od+wy_y{e=zn2?nplpQ9{2}&R&C3E;< z%lAf*TLSJK$NB3d){e*;IwP{FynvlCjG9DyErkptWGM;tl!EFUN!@RYV%>ts3n+ic zN$OX@XiX>K2M~|0>pr#9_ujZc+s;g!+@s7jOf#IBGjtbF%Bnl_kV|&*jQr^;3tUZ2 z%KC4{Y{WYZEytbA(?4CVw#v;f=@D?Zy92RFuV;70HDSQb=pDKl{3kL5d@~?M+O8|< zXJ+JcTuFwp0<`m23+0nV9we}5(^p4u-&{?f?zMA{GVHfD`x2Hp-cj3{ATA{OvJB!-qIi7b;~&e=wIT26Z z%yB9Z*Y%Yqjt0nd+Udfx4o#;&axyL1n*!iQhk`d?h*Y_zCUfy2)J0ytAjkB1$tY z+45a~o(#xh+f}EBPr*qjcd%2_B%;sKA=z|I#=@n{~{57n+UHXmzXSJ(rF;675UC3%m&?jk%2Ae zN+tt)2>_}3@Nk=t8s5*?AScl1JWQXsmj>E5X3jx5JU_JLHyK#@lh|*76pP?Q4hgiM z47h{O#B2*k#FSxF=pMs;CQ^eoq9mZp?EX0tW{$pVnS>c2px=|PUfPQ_N#Qls<1e8C z&X5X31MfU26A5=K4RcGW;Ywz}FUbt5gk8o1qi9zZ)UXWz*aGQJOcE-P;NIhbHlibR zauga3h9Eg^96{_XZojldua!m9H$U5fQpY(|Bo6?y7?I z0)TuG*cCjJe|qOPCT5fUE5$^PVZ;Fll_HT>6u`~jnE5Nkr0rT}!z8H4YfQjdN`=CC0HlT}zp@R0L{cI81h^nC#DorZBtkwDux}WkSk5oc4CRH4;j5F#V0{)S ziGvxYau17OM+&sh5Ob6bI~jvjBSVF|H8ly~zc{CRfV?)W8V^dRF^y+00qj>LDt;>T zGXWt^M^{17MtHb75tPg7zzIx|yA;5P0#=vyE5$seziSzQc~8Qi=%6{$72^VoNeT=_^my z>d))4l&_|?>F#JpOd2W}y$Ir9>TtjY4yKBR$Yg-`;0$NnU*tF;6B)m1%q4DbYe@p< zu%JXLW|4(-BK^uSgFc}3=!jh?>?8?E!GS*zkhxV(+ zw4ozUb!e(b@Hf%{k-uw9&EGX6W(+gK%qT6gG{{a3BB7edlC~iw z6^*6E+SszSj6GXTw(O04O=HO}W8XDGL^KG6GLcI9=KiSbciq>1|F(1P-+iBte}Hq$ zIL_xWujl)~#(~Sq*hkC{q6+85tBv%|GT_UM4bq$d2ALdQ0S0zcI+1XJQ1Su~ZsYVvmSNiq0|x2~7Whb#)a7T1Cf(u%WuO*!^V0 z8WYn2!)ApGzNALqViXxDV;xAn*)Z&;1%wW+X@P~>$wshP4XfnlXik;EZ_7GB(44+2NkWu(<@NGxM@oCH^hT z!~s={ej_S!m4+rV_|zK`))0>5AqaKQ2x-nfp#ei=h3cUw4rWa>3w zMkvs;D;OpLzKhZ<+=UTdP>WHSkl$SGBZ~b(M(<>z*Ekb_Wzz9kqh5 z{LbJz$AP9fVzJK{v0QV|)S(epy)cFkvyPbr7Rirqm##zSXvDg~QTWiteI z<<`hk`_T0t2qVrEhj}VAnqA-B$Ftc<40;-~ei5S358q*5LKR^-W59jX%#@1ARP3>8a+p}So zC?XZjV(`D@hX+y7m1Oh+8#6{l8nOA}?(>ed?ZkzQ185di4WA8Jl*BI3`KUy$QV8D~oi8VKLoy52 z@55L$^a4>ZJY~=JQ#^9iwZ{cs87y@wUNczm-lC zP2wLJrqua?cYPVkSHFbKK7W5Y_vfVYQ{>_pFvVnFOsO!?fh!ysu8sbB513-wTz;0c z&z6UV*KX{YnvmVe5UDSkn{Nzg%e*;!1Mb&lW4T)_(39wrgEpGPmlr*Q1z+aDk{2fr zsIvT|PTcrC#f;PXHN~VU3CCiKSKivJSDi#T99Eo?_1YF?Ha950G~Ebs9LMw3$ziR4 z&o67kJo8IT<(Djy1`AiZ`=b**lD!jvDJCAiql*JfG22^TptOj@z5Wlj=>*6p)^Nn-G#j+3{WZ(ayf9zBcdHS64b>eY*7Z z{Wl;}Ksbu$DB5=_O7ljl)vRi0aCdf^=j6M>V0rJr5cSY=W%))u**^*cFc{iN*|=-- zE-g}1j)sX};2%B+t*iW+V+uxuNP4_AN2a=9WF?PzPs;J69+&wZsDqXXbCU{21-5O0 z)m~dJ#r-l&n^=#t=dX5d(%YP&BOrU$rB=W|#Rg?(!X3KunM6{;L_4gUrBZ0Adk6pGJDZfv?+o=8u&dq;T&bb!P^XjCo#5ClHQ`pxkWoi1! z5jz(?>3bg6AA6Af(dysGfe)&mHeY-+qGom1VN=-|KhJy(T|4Xd`()z$56|R;N^a~e zkEyQ?1|``K=Y^cQvHCU~iCMjz=up0TCE44^`*K`f=j!Zvn_kj2dbs-cYncM$3A1t0 zH_q#(Z}}oOx1Li_{(Y|Cp=Fg_Va-gx1EXoHujBcr&hZW<{pDwz%13XkIVE@ZZgHyY z$gXy-U4B_}rRvmY@5SOp#7#;g`q9(t773ePQ(A>Rf4H>wW#w-3_KKTZY*!t+>DJ40 z^^8PtMO<)li`KqB+y_qQB#78?ieK+^^$|Dl*w|ZsiRw5UoII3eUAOJ;_Ll$9Fn{eW z*T47q-a+kr{cCS|Xzzb*Z&~&~)-Y`)MOO_C8;y57$h4Ibm5Y=){vs;rZ6;n>2=~t* zQwdmNiYqBg6O=XdepO@tG{d~`yBd4;k~L6`z3^8v%#CX7|J51hUn%B)OEUKViehFx zt;&1)x5?PjU&+{vy1Kuw#un9g|FbbBV407b|JE}9VL0~BkXhTq`fnd&_WxTo_CF1o zQ}ZAG8Z!Tw{P1b)c(K(ZsRm@R#wq`Ohv zF7H{RZoYQRJ$Y;{6LBszv&Q-BwI^YnbNPoDz4jlg!lSG^s^dOOoVoBPsi|R}39!Ge8&*`*(Hkea_d_!(gj)K9eo@@ji?5y1IiUxy|WwpTTu5 z^ghLag{^J-G?kvVa?X{6_5q7bxz3|bV|iscnx4-Od|7yKcG+ajtIrvZP?8YoISWCyJ*z4GG(lW`N0X+ zKln|y^@nrJ(8K5v6}JpqYQyL4M;?@q(C&R~c+DB86Mf2wu+7d+YMO_7qi-w9s;T5N>$>{4{zrU6&4<3d^0!ln*gC^0 z-DA##;U1wazO1WLp_zsZ&2FI(sommGtmdcCO}GSJkDSo)2lgiOWW?kyDL#Edq@Rhm z6_c(9G-UI`XI!jyM3>4r=frhN$C%#9=i!OVazV4STquuM_+`p7B{zF?lLgdC1 zZ(XFQc8pZGXMB%O=={h#0<}akTVQM4J1%Hy`%x&4jy^pwChe%4H-9$+-L+wwE_eBO zC8Gr9gtUEFTtXoRBTc z&O5S z+GX*pu=PD^&jRAgyNT+i(>aU@8J`TpDTQEj1uUd6QuX{5ogd%2!;It-Pye{YEV5HF zR(b(@{p0mM8S@U8>=5C3d7|cibI6TNAMF=M?rHSu%Xv|3ZU?m!_f*EVM%T?=h)eJ7 z_=yal+VdYcsPxX=e#bMuU1j^xYLafLu_?1ISLKzzoQVbyvF_@y5fVSffc+63#f>_8fRf5L$6C_yYSK=3V(>X?a znUIjU?S6_2hW;maeH48@+z9h!H+c}!5kXsE`*v}Yyk46)Oi~=J4v5PgtEF!XZ6S5lgoJwFR5|UuyR?Z=CO70-9elhnZFCyRRTftkB!vigk&u!Wx z>*#8b6;tTEQggI1m)B3|?2HE1H@q97*lmA+Fe&p`>axNnV|ygFGdB9`Q-v4gIdv~v zahSM905+lD2)p11^euPoRv`r#5BR}_$gQ&4te0Z8Y;=@AZ12u9fqUh-+tzGFI(G(^=eCOqhGT|G&3fh!m9WQ3zBJ-g@ zNwJ?&w~blu)<$jVpkRUSrp8zCrk~qKZKoPxFynEim~EopiJ^&?^;<)D1SdlI2FQT4CmQ^Mb#N8hf#eRVWCTOgxN0 zhp7eZ`xp?j_WIl%tI)|l^W{MEwiVgd&uzJ z?#CD;IiFbj=p~FF+es$JnoI5US;C=|D?YnPh~#aV7H+9l9c{P8T6nn@&#a= z_#jh_ptIY#&)o&SFX_wVfrG`Ea)=oZ<8ZPd1j#&U@h~`!9;`d1tE6gu5W*Wqwu*zC zD>~wZ;lZ{@!7~Ub#M>(z4mYG#q#L&{k}A)?k1LLhwkE<9*W;j9Am}jigz%yGfSNP%jlat>@Zg6A>QqMHqi)5KR5+hcj2qk#V?ZY#TKb zC+$f8o%0m62sXqv{xA%8XSpKSp%S?itsiZ|TXW{zn=2tfrV8HM4~8NMmq^MbUrW?grhgL7CbeizWQ7-RSHS>W<4a+0F-M~nI- z5pxcC|H~$<-Fq$F{bC2E;sEBS@Df5${3u*JL}+_87N><7BfF z9m?_D4G*n%Id{ZIYndl(e<5NRtw!n4&yi5HX$$=B8hPxp+%g;ZsKc4-FJ+%ciR6c% z=i~QEx@ioR#z!FKygx@?G`xPEu}M^+Q`-$Vbj)1;@2%c+**QqQiFY+B@03WR{U7CM!as5gZy$DRK8GH&9m{AatQ z0rN*zF(R2{xW|!XBdfTlNaF?-`bD?ogAbCs6X@F-MdliJH?quLEhR0#3R*RjU(bT> zphfPmzw;(Dady9;S`Y!Pn!f3Dx>P5>Y(8Q8X{FkjN2#t!HA08&T;eR6lAJat9F0%< zVn^SslJIj?$6heuMSHxxti+n24SFjc4L@Cvn{%NZDdMMMd zk2i!jc}N`VPEFgRs8E^2v!WGHXlnAAdIsI#1_L6cpnwPz)@fsAS3YUlK^%-))@dCZE&t zUg>OSfp$rrg?~<}5stni|3Rpnk$|a1Q+lJP%8>EtF^S~OURiRdPk%8vllObGNqc-S zD~IE?vDy5iN`#$gczor`o+FqWkW<4`TUHad*iUIcqwreG%Z#J4TIKS;?3ZXdD%II3 z)jgNN)0GP_UjUsafQhy@6I|pVHOMND8WUG>M*-%n5B3I_^9qE!X=^Ti#}mm-C96~e z4h|`cx6vCBdA8o7E`J50#H2>21435{Bxk?wKSM!c_p-PUOdeJFl3dA~3mh)#ec6ra z`md>JH|_TQ6?3v~B}!n;llabS2|l4fEa(NMQ#U3y<#pNTB#z`^&`LK-iFR&s_p^B% zaL_2qbtP3SlY{t3x*e|q42^i}TSbNl@FariDlpjO6rbky19G#8bYy*8E?yqy#LNZ? zl~+iW0CPU2@$4(GMzTff$WT!hbSstXncA<`ETfW=Q0BOH%?S^C;9liTKsDWX3=B5C zfz~Wd-<$@4hd#Z{fJiZ`fWhWY7KAm*cW4Ke&F1E3)wxpiQr5|k6h;kgsvM`1;UY}m zrdOe{dL?Gb;l6r_xE3}%NgY^9MbQKoY1mbE=}0y9kV46C<~#&2CsApf0ZW|Utog3= zN0-P~Ry`yc%OPO@pm5vKu}SFS4rS~<62j0FI}c&@KEMLxvr2G;Ir7Rduv=?I-5J$G z#h3;Pj|dwT)clJ%35PbAlYm%bsP#N31DMl|&9zSx3(-Dw&;=M2VL#Ha-qF|(Ea(GL zbLS^M1er${ijk&6c!|&-BRo5)C}#%5lJWFLm-;LXmO|o_WEPMJQalWQ0B+ z7D42x@6S1?jCI7piY}@hWWz47FSO2cZDqql0+5H9P-VhKYxWiyvM7(;PX%)3Q0IRG zP81C`$F@9^k1-GDK>@(|fVE@A;FhEOr>JMpu3h{W#Df-;zH0F*dSrIpY^ZpFKCIcyl#!it?*CD@vlL4~> zaWC#yOYlQ-{|CO5+g`8a_a%+;%@p#0t4a$bXb!%9J!l<^3 z!NxG5L!4`!B&Z4lWs3U+oH&>X12s9MVi+OVNQ0!NK!7WmMj{)zSpYZ>lN%O^Xi+?G zHWe`s04Edb#6Yh_@!go~)}uOTli zdW?1}Dcw9nhcDB4wgH<>065n@s*$_@TMjp}^7MgKxo*PZ#d*QGTSO%il2rFQ- zNrottwz2AFEYq~F1{*9w#%GwYYsC6kCKrx6`$v2KH#7j8gSr+2M`_4aI{FZUPjCGM z?;*~$ZN~@s7nsXz)Wtup0p?HSz>X96K9SjGOoZM|%iCg&Ky`M61SPLv8VGO+ddr>~ z%x*sQ7?nw-(=}m$aZ=EtEWkJ??*qn3?Y1g?1w>~igBhxiYWz|tk)C0Gn`bN7q=vuS21rO zP<9=9nbdKHj;+Uy$85rUJ6O_{5iolTy|ZRKfq|`tz(0MMI7E7*S=pHdX_8FBWP7Ko5!IAB<#cW0&EwBTa?iCg)_19f?Ub& ziO|RVKWZi$*b{`0Z|i%@*2NdT37~mcpLy_5+2tu^e91BZoTRtMk1;IZSB?uzVNt40!4TtAg;4lE)7b z|CF2k$l_0+0lC@l!yKM57QYn>em@TD#DtGA&>tD1mOt!{KESF|xy#t7A_o6Q3V$b_ zE1Axpf0eh3g>fW9UmhGSgYchUZ?Z@9g8Ry0Xs$Kw}If4%Px0$DwxzA{Z-hN{@>%m)9U^B)!6*{lYga>tXJe9xm7Wwhj;ZT=%Lnl0L6S>v10 zp3|kn@b*{KK6IejlaR>a8$P^N>d@oq=(EGHiBJf=Gmc7$xo+lepjV`+FSBQ2Dxo;AvAA zy{#AAKk03^aWvMAekL)mUz%wD_-WL*fK0O2xcJpJubJZPr|Gxtozj7y#Z~s>25!1+ z_fdHyvl5WgA=UEgN*8~>zf6+2vVTaD`!!obF~w6ii%u-R^uCfZY?P=X96avV1mV9% za69G|p^(>B*6kSCy*|8`Mb<93t#Yp`Em0&!-0o-6=c=o7Z}nlw%2$NchXW7VWW1V- z4Nv^SP16%xS==-tDF)7NfmMG~RTuJISurCAY`JmHI?_b7O}L}eMcy*{h)RcM zXnN=Xf8H&|VDy|wSgxr#|EZTY#ZO&jDW^mRYBgOZ0`BW(ik>;)6mtF{)~ZNn-vxe| z$Z`eeYCO;ASv!dq>hWllhPLu9!l~CT(SnG3x9%(5untow|7IOgq4~1aw&lFK4edc< znOSIxyt$s8tzCTHqrk)Z`44pCysvCP=1^qAoJQgO>t9x9qUG+bUQPc6nU6YwSnqSA z@9(Vx&KldV=K_#vU#M)E_&&Ati;rHu+CBM&CmZ3|(u(mahqBS4Fvp6iIA7;#W78U& z^7)se!*y$4fHCI7YOPnbuqVRKO&ep(be^_8yVm#m+OC}n6&KI7#r|Qx)TQQ5^1=>R4bNZU*gvkiW;V>a-)a98lsxt;9P1#>Bjifm zQ{Z_i{cp#Z{~{dw+0N5a@n+PoaBRq@+yCBhZ1?|g$kaE9iUuH42^eEuF^NukYb$eL z^(ZM=h4un>S?k>73Ni_uR0s&1|LP_t2%Ig?`~E9q&EHE+5IFy9wOL@P z2?FPh_tOu_!3k127lQ3(60T+E&4k&Ana(6qTIFVw-RB0g4{v>$H=8PS<10S&-&LCh zffEEy5I8~L1c4I-P7pXj-~@pa1Wph*LEr>|69i5WI6>e9ffEEy5I8~L1c4I-P7pY4 ztkrE_?^6TMP^7LT5qkex4!A(5yp3QcUcQWdL7v%Z5(>c)_QZwww!QM_TbdUgoPZIht&=mEa{Vu-oR+RP zfQy=$OB$(bgtZ1|_CMB&Ikg=f)(b6eSn_>vNj!xdqX=4L9>12ju0m@;U?a z>r?Uz?F$&xf=OmUeOh5rYEf}+5#xSw@vGwg_|nqU(ypx1vi#Drtg@<-vWkwf_JF6= zz=-o<`Lo1|(df!*$Ex1PRkgm=mB5bEr?zLJb`;ogmON|xbB#8GIi1wa0<-TQmQ`Iqy}<_+B(+_SyQJSwi78gza&_BJ`;K;lkB~W78dRqZ9x*WRr7D?WCaQH{&F)b||$_q7i`@QI;!G{~^;qU4QC)8L}(b904do!rk= zi@cUP)fcHbu^F_pMy9uQi(O$n?a~DcB`%*eji3(bLu5UFOO|2 z+AICEaJkpxY=xS~6zyTS$3&erfB9HAu?(l#}vndcdT zo#&W-awI>LeN9Mf@Ro2~{72dK&BEi1oFX_M88TBthV0g$!gr3(&b2)H`AX`7 zbYNt~i{;&~1{QADcPiDo#{P}CS#OyM3%GL|Bs`^%Nasuv_70p(m z$4sdKqzG$neMIA!U886A(uih!TBRj2L*SHxL_w?90WVtPX3I6}uP@sx)r|}^1`UB4 zs13iqc9TqObc|Sq&BJZ2ocmW2t=51Ar!W^OB*~wrD72fQ z?c~GJ{f9-IFLN1FCg9@u0Mkc)-0$SmwprE$^6}NYHj(2_zrepIs(R$0rKNkKO-mf? zd4A6~tLu*?JsdPn*duGQ1*5$z5|6!k2_)h0{KK{<<#m}M`tS-`#k&I81qv62percu zrGV4G1zWcG#SKj$+=V8>_6|g2#ozhMHj>Y^tSpP>-ZBt5N#Q*f7$?N3wB!B3MoMjW z7ZqnVDCqZbFT8}NKB;`~>e1n^>*&udPLX%JCwvBDIJ8~lZjls&2|ZjJAPii8m$Ww? zcKWQ7T`_!Qnt920xBsCDyB>hMAdAQ;R2yZ5|IELfMZ? zNp2Gp_EO>f204v!9Klo|zG&z$c~4R30`Z$9O}ZmyT;~mYf+br--Up5sJGc2o3`m=f zqq(d%U5=Vbdjgx=p~u6gX{Wzzk+-{rPsNcOzprJtc7B7OX00Ur^gGLYZ~ESNWPa$% zGKY-=hCY`Y*|`Q{-m|(UY-zxEoyoYD&+e8@_G~%-rlHeyl2pK zmXNUj#e7oi&rD6{cfs(+>BCnP@ zQU2#@Gaks-EbA%n6LhU?++-UsTHoPWa|e5JbN1E@*KvXKzQOcuqgItox}>XK@kGRx zy}5juS^zb67>6zBuMFg79M?HA(ZrDZv__CH9;QDmm)EZ}&q2AyLKd%{ zgwi1Io3CDJ_qcX#@9-`;{8spFChz7e$WN40enS)v<)Q{2#nkf|6+rxK5$VS7yT{py zZi7mbkxz+;eROLPD&omHlec2UEb;59+-!I^jxVjn4^Mz);87}cqe1${d~+Z7$y*RE z3l1us%5B8K_%omv8D!Vf7klG;!**Hd4k@YRT1hi5-==INYE4P#ZgxnwjK^~W>Au;3 z?sjqFU2VeIBhGG?C;q289d7D<)!vtmp0iNup*X1fz0tXz3|~F|H^jgkv5SA&->+DF540?jRY&> z8~fTT1G?6SBQ(9m*Zq`&+>j#`8e`Ex-^4E+O$)@csiS?!TdbH{OrDeP_Z!agoUq$J z^-guufYKrXlg_-#I1QOTt>qyTxY}|xgMb+vP`bGn^Ok&l?XBu3W?cQ|lN4`F7onYX z*1CBrku!%eFBzii(G(8-VNdZb%4ItTTf3X?2YmKM8eEI#a30#J2~IW!Xn7}ao7^&5 zM(GFbwD;Cr;?`!*Qf*G(UL;_7-}0QEzH+}&>7a|;JZs-lg_gu;j2%*bx!j-p1>pJ4yrxMooOKhCnq!>6O zw%Aq0cX|gt^On~%C(u_a-=}W!M!bBfn?BB=Ey3nVyaOnG|F(OYP}-|Mw3Nz@hc|6=ynJ$e>~p@0XPx!W>Un?Vs87Z{_vB+ccCPJ85z2aW zZT)bTY5ume@`qN^lP;XkRT+>|ACZkM2|Af?`dEiPACh%I=dLAJZpS-m{_mn@)yZkD zu~XuNdq-oSdim-3rX}Yy>Zi79pw1o@xcW5lR6R;&!Zz=+ZF2q#^<7apRpx~aJ0vql zq_V@Jm*Y(J(&WCBr_310sDAgAbrVgROpLepx756zG@17@nm#1XcV7oJ-g(-gLjNHf z`4CUB zsV7nLd8bt0`OH5$k_L@7(zUht;x}KBS`?MXbB|Yv$ALj7Q-5R7c@4+iT&}B|>=zv0Qfo#lzv=f_}`!y{C15VZM(J>X_8F z`3kh=uHIKC5pD#X0J;0W>$Q}}FO;!NpkB)`eW{79BJeVSStkjegfm@bp<-wyCYNtp zMsLhInOpM)&%>NK8DAObYlN!b^;%;1uURJzx|0JHVsLSQdM(W(LF=K(g^DNd5o*Na zSp_`lM90_PMds-|lS2p2&>%3maw-ENORv^D%qOwVg1jE((+AqM5ClK%nLAA{1t3pq z?H!+rHYw577xRWak3>K)@ z0;f1>*k-);;kAxlnxrQkq!}=(4M}def1E~dp9>Sr@ z<**aX%6p>?BpkOf4GqMzjXAvLY*+xj$(Rg3M&l+iFw0c_10*C1jqPT48q@i+3XleD z*daP{k-~3|hXXe$uMw5rlDO{>Wmbu>tF+QFf0!N)eyCZb0nc48%=3(oTb{(FNA)_a z-F!q5xs%4j>pEa%t6^B5VP%|ZaT zH-Uz&4H=$8*_e19U?5e|*hw;qLV(Y()!wmTu4Hr!9tqs^EG59r$*2mFXfZJHWN5F@ zHyXA%Od#D#y5PipfQSbE7jkq%U8ZyS01aDO%~&)x3TW5@6Hh8sjgC4?gmW1D*~E>8 zt)G&d*{_LbSqfweRnYwS#>6uV&wYf{xY4jB@#fGGhuryNel={}K63}vj3-Bv8UK<7HkIM_=f%KCMTUOmdx$I zXgm$v@gD~6pi%*g4sPHNj)3;&W(UAkio@BhS@8lrtlZp_Kz0+f}ect0TD)dFtn;8zwp2&<{=Wq$o-~FL6 zh%5xwqc6?t29E*jP8wQ=!FR!;;r^9I`<@2T*C^Lt%T8T9{3NjKWK1{#&lBKV_S{4O z%g$F+=)FHM4J5b}t#yA5=76^PL)WP&m0G$e_A5}YrK8sfZ-Hf}9;?T8^C+@$4n(tg#V#K)tpYWAFod5I4f1w#L&+foq%yl1|@&vHSAaX+|BDoMt4xc%2Sm zunRKrofzFo#ZzUH(_|+lnl8g{%}Ieq1nK)vx)#m z?4Hu0vvZK$*_I4;njQKUv7T`MNKcj@4ZY2w+n48b`963yVIj4EZ)>TtG7(|9x* z!fSry>-<*Ey+@~Drv_eoCLSel3DPi&v`%X>#tlfZcLd70f{(dE&XA1)M~-}xQr)_%08{W;n90kt?*19WSD zY;Es|vm~?35SsYG=APwGvX>a5%%5}1lT9H&x7LTRVFBpY?kw~@;<8?$ zV6-4!{_`0+E-U0d5U#CTU{dC*w~J}pwiCN7g0W%;ZHLSGJ9!p-mXvK}E?4ggcG*T1s)?Xa>mk5uzEjrEZ3*R7eJlLUHz z@RIxH)DI&5FP>-z)$~_lG?}NAg3EnX6$nadM-!1Jq!xvaRJ{lOqF#)cmGyX=he~xJ z&z%;dvnQV7Nt6NQQ->xx0{ezo?hF%^V>Ir*uFwk7#lE;O; zXD&XjT=h?Ozq1l52s`(|$a)QU#+v5+e%d5nV|(k%^BXBz+nCe0(WASb)`ee)wYk?d zC2p{_>xx)bXwb})?VAunrN?8vuWc+i-(52=>bhJ**8gso>9X7W+MgDjrP9ajvXf?x zIWQi_CbktfsjmU&G*2eX7p0tC`yke3S*2JtQNHF}`{_!OUB&X3(e`@SHXub?Fg7~< z3~lx!r+V8)iWYt7;%Kv^S*=SKkfL2Kl)1Fz&?|-AIH%b*vh4J}@wNNQ3!Z;?46hsm zZf{n+x-zrfqj_F8w;E`71>`>iN%8v|oiSzkc+`E=ZC5(6;z8zHdZceUks?Oft8U*I~XZ zqyXW!WcL4?3r>@mj9tKj)7!{2+a$ICSa4db8lBTI*-@N%S;;~!Qoj2|T+Q1oSr;%{ z`#1MD|AsrkRVTRWY-gl3h2SKOk`0T~Tf(=i+P`iu&S<-j*9{XnT9Vlj&7Flj(ovGt z^^joGnS8V~yC+G*?Vd>PfAjrK5Iz3|dV;G?Fk1^|Yr$+Sn5_k~wP3au%+`Y0S}#hm+3Vdrtep!hbU9duHes*>rhcvXk-?yAz+=XBk0 zu@lv0?|WW=cR9gqEqIp`yvqsR@{ef)lbH1(~23w``nQXxi-~|2a>JFCVHmA>h z2G_aJ`xHUo1c4I-P7pXj-~@pa1Wph*LEr>|69i5WI6>e9ffEEy5I8~L1c4I-P7pXj z-~@pa1WrSp6Q_=y`3HA7FI;o@^HEM)2M6FN=U<-Vv~cwR&T-ngx?8w;|Gvoizt3@c zc>g-bdCS53W{l5+LZ3{cukS@)AIF=1IX6?E-pn(-UFv$>uRjA9O6h-!dTJ z_c>0tpiqsFyN5yoZ9-xaLlRBz#$LD^ZFe`*_iluJX!!B4B$Kd2i?Fa8VUafB5&y@F zoM58%FOPC&^>o+vu>SHiCzz-O6SeQ7k3|m=QlF%=0y1_!xl`}W{`tq(3)DV=;WxLr zzdywL^Art{y-Vt@zOm;!kvkT&{Yvgcu*i*f6CwCujV(9y$IRZ`lE}`T3{xzBHyKW7 zefKbwuOlEmLSrU(>YnzOcT@L|_Epj%iCgX7J}{KddmD8LnTLCDTwiWF#`LUR){T?W za1c02%03`)HqV}taa*ikI^M4beKVB&ReQTF8O2*D_Kw#JOw@vjS};)yCThV%EtseU z6SZKX7EIKFiCQpG3nps8L@k)8-8j4HDAM=MZXa-VQ;;f;Tup;Jhb~&1E9arDoPRf4%l3taC2^ z5Tn=rV^w&Rbw_pFXNi+H&ntHt<~I1uUsM#%72Se-#Ab*KY@Q!|SL0w;^hs81X=cy4@0 zn}&pmEmd&pfgYk;HiGXn1O!eHI6>e9ffEEy5I8~L1c4I-P7pXj-~@pa1Wph*>t-y$ z8=T+`PVfdNc!LwX!3o~r1aELEC`l?RiYqBg6O=XdK;Q&{bGWmAaAn|A+Td`_;LDc5 zR|Oz&hKYc{2?8ewoLva9&yH2DOp~>H8mW-o!7y$<91)7S+pwD*ID2qOcG0M7Wy)9$ z^MeztfAE`Z>ksFcp@-2UDsCCJ)P~R7k31+Jq22q~@R~DFC;F5VVcj8)!Qq$?E;y08 ziivo#wszCE1XBwu0)bOV+Xn|69i5WI6>e9ffEEy5I7~1upn@PzzG5;2%I2rg1`v^XI%Q3gv5x1 zl-h*KphOTjLEua_EKY9;->z!^y1h7~?LJ-?1Wqtfs~rOZCkUL!^TTIctae0~%1xL~ z;nr2}s|kMMdvv_$vX|-We%UhGy&lf}OZnnIw8bMtZaneUMT%<2NQHaG_xOa)kGvyL zOC+-ew#L2Vf~K|~h2rSw(*tADj>>uScQepkVU4QeE_eBOC8Gr9K;S%C;Q|6@o822I z&nCgfP4vqMZPz&{(TfXt(jtV%9)bpe69i5WI6>e9ffEEy5I8~L1c4I-P7pXj-~@pa z1Wr-QA0TjozzG5;2%I2rg1`v^XYccZ=P$q;oZt;k@CK(gmviT9g#&?PM_w^o`a(%} zqqtq(vqs%~5I7&ogTM&_=a1L>WXwBUvO|RD<%yd6%^^27eY9U3xu?;qFXu(ExgFF_ z+*29b8eKPgAuheQ<0mqJYR`Y*pwc^c`yJ2tc9rc%t4X@0#-_}=T$NWY%RRftUi%wz zcbc%CtwBX;&(5&DmorAG8Z`zWaJoQlfxy|fH%ZIDp;uIH^4z$n2}Nr)->o5r>!h}% zn<)sKAaH`f2?8ewoFH(5zzG5;2%I2rg1`v^CkUJ%aLP_Mfxrm@CkUJ%aDu=I0w)NZ z0lb^#FM_}c0w)NZdp=fHoxzTy`@>&+kR9eUxSdk>b;r0hIDo*3It2nJ2%K3lh0ZHA zM;mi_{e;fWXkdNAyCI6*_6G=)GLNM$D{L~hM`Al;qrW~?ctM_1_p%j-iE9L46Z(y? z3w{C!#a+8qNCCzJesCdjtE@KbrI;-n9pw+({iKP1R(^8JRpzXih-TOx!L1;09ud$1 zfzvFN;k31x0VQ^8z&d=}Gz~fS=kAJMdO|B10D%((P7pXj-~@pa1Wph*LEr>|69i5W zI6>e9ffEEyLor1VI6>e9fm1v)!zr~#dH?SloTg`z&F-BtzYuES?{9hQ>?P}4 zRzBvom&vwQj@pGBv5!A$PrK;gM08BIb#f+Cu0L{#KjM1*n5(O)>qAS|8#b;U4sIUW z?(VwoZWiv|Htyab?tzCr%It3VsCeGE?0wV0`(}*KgF>H7qOb2oUmwStemOT&pWe(f zyg*rn<{xw{z~3?;fD(}G6A9-$YJY84S55E1DSnSU$tf%d(OtF*=(T9*EUoU;!y+#bX_ zM5Q=HN8OH&3yhA9jE*@T8|@Zb9~hfp^NTruS85~v-Jx3d+=A%bhMReh1M>1&d7Xjz z^(py<_5}=T!6dVwKCQ4QwWv6^h;hHT_*HR#d}(QFX;)ThS$=6*R#{a^Sw%-#d%)A` zyr)$U%bz7yj7C>hJ682RuB!E|t}Lyo^{MTds2zP=*I4qbvE~``L49{p{aglfI8leJwvwOy>n zuAWETU1{AfOS^mDbdSI5o_gHd)7U%K{!2HTpZB%A80>#B+&S>~2RKJkhG(mXM|*~c zYDT6yM?Ut9jE#(pmW-~~jLtWYzJ4(}R`~k;%&c5$@H`hG(xp97OV199I{=?M# z$FhaB>V?(*g&)fcE8`#j82h+1_3_i($Hku?e|9deeO>(4{^`g3r^WA|eoQZ~y!`yR zb!B;M<=eu_>c^EYoRyWOm2cBu*1moD`u5wG_uszEe_Q?h?fcZ~+Q9dpufP9zz4o>1 z$2#x@fk1fIAq9rZ1`K)w2%LLTZ~4Ce9}k>YO+NM5&6+yxu$@S``6a>1^O?{)nPl&+ zWwZ3V(qTyf=4zfDQa>!ru4*rlzV>FtU-7ZajA~rYrM~Y7xUYTiflmy*qd|s!7bS0G zng$nLpPMTz>*Ri}TI99VslG_fiOry$H8Q=eTkHzsX_qcoC~^6$DaYW%%RkS`>Xfw4 zg2oLMl#aS|%4d`{&fPD38t34gk$En?NUAPEHILG5@uEGKu9G9OPn1Gxc(z$_ei30& zJO8fsg{8gIllfiUJsRje+PzIU14WnS$%xY~Ey&Hj&W@8&HJ{q>GM*jPb774Ur3L!a z*Cdjyhj@6-yxY{(y|>Td7&z~~(-?LBalLTu3-lbco7uAnlZCYHV^xvWe}pXXXn zbJq*hBzjqg897C8J~Cvch78%QL51&1 zzlC22nw)ES^z)U}1?j-ZiWkefUkxnYCR{xIbHpq>CyQX&+n>yehxzl@a*5ex=#;G& zW>xjA;N%3{Ei0O>LXVkJ14t3p-1>;dF}p_3?4=RS__Rt(WQM>g1&M-IuLEAR#?6*% z)?Z(?SE?HsXbc*{*Sl@_^|hO1VxwckDr_EZYvtU(l4!LCBx;4ZNFho7JSDfcHw!w4 zxC_5C-(>y`b?l~ifN_Kb^cksT%qe}VWlgWfGn%5j_LOKSn@ZSfkhE2WhnG-kDyl(> zRH^QZla%1*F;q@HM}b5(vLU#0tF1!D*TltOnJQ0q8REjy9V%k}7kl>^)C9Qqc|ReA z^h62RC_z-ZMr^1Ep(Ch-qKExnsXsmb14k+}=oUvk?P%J-?b=QzC|KL9UuudoZ@du9tc$l*14rbNwrq z<|=gP2%Gt?+x;<@lGCmA|BifQ>&kBR)L{;~Vcat&g7UYurb%BZE`z+;dl5S7tX}cJ z_3*5Kwqbu4zD_C_)-rkOC;f-?3H;?l3jU%bC&6%KPDBywtF`BPYktUn`J79RLlba} z?2J^6yk%nXsRBJS(>u89>H{_gWoY69`bmf7%98a?r_I;%OeN;hbTL19c0Vta!TqLma-ZufZL|Z$vH94YVu6Udjve({{H?q z&973X4r)tYxgcW3oPo~3XefDti82Yjvq{+CjQTA=Z{O%8 zCCh75HW)!HJb~W5*YMuMyEjivW)?ib1|E| z{7t8@eo}9P9ZXyp{c}KT>*r59?Qw_fYgf}0wZ9|s&iHf{juXPha}>mSGGaexm)5zTg=0+IB6BSj=^^x)T;Ti zlq5aa60!SqPWRW^jo0Foby$-lXFd?~#^Zz0V7OeD7DHPexB@9lP3R_%Ul&#rSn!_q-DbNU zTfU{H9XxTvkV=$&Om7Xr5SkATjZq0ALmUD>2J>L>_;>NgSm)H9L)ofT-rnn~LoY}^ z{o02KKHZ!buhg`tzxx2$qoIAhW2#hZuTRrW;t8=ri9C-N>(2Oxb2d!bH+1OIFJ4cj zA)WRX8in?%1Hth;`|-+k7R%<9+_jbBgUr6YGk` zZxtu%@||sMZCktSlGop>-#Rx#DMqY5dxo_<)|Mwx08^gYqtbvzF+RPkU1_A|EaWgd ze1)e)v5|hJZ%}r{vVz0s_FF`U!X$;dT03AyJe`_vm^T|NO0Ovf3ombvIKN7^IL+Ii zwZl(Eln853{mf&!uv}<@eQ9bidA@!ugRc40t?7W5xp=@upW{)rmWxbGljBMJmmOmh zA+jFcrzgDUbFU<+sf>&V_Ae4##j!uRXfcw=X$H;Q2w|ZfwuJ&Sm{cqoQ~e;scqBtU zUpxV2L*92@bn5ZGbZPJ8HbsgA{00vt=7j#jG!2?y3Yj+Q6bw(_Z)zR#ZuSrnidzr2S~V_t{@5(mPf&;af}~x;2CuM0mO+w zh={EalgmOF3kktos129lVPP|L$3J?Tt?q=XTCx2O?u8pnk$f7)l8zk^L=4D#4;$_n zc^fj&BTI|apq|pZ;%WE7hb)l4L7dq2w;j5LB;wj-)+2JFWUJKKp0Ln8n(2CwFF&t3 zHK0G&7$`qF8;-c*S!_J;1$S-fNYoCSdVvc1vC4owYnmm~Lb7R}v!;Zr6nZHp_9*WP zQHkJ*oVsRV!BUZ@V62{;>q$Tk%Ay47uu8sinf$Rw`nM)$gByCFdXFUAd~Vl?UvQ)n z+Nt(t*ADbFg!HdY#vJmMT@6wV^F%+ZSAU)uwj_J*Xig|az?vFC2lA5wd7>xYA2fO^ zdffTo?7Kbd$5lU53AwzBTnosY#bIyx(B-a+c~rvVan*pmgx8F#E3fx_;oWH!JHhll zoQP?+MpkNm1V|rdM#=(=XASWRnuMZ1OLF+`omkl5uDLVi*<%w zwHaRKN#^ltKOAr0bxv_y+&{fROX#lD^Ij}DEirXDv$;y?(d>a8a!E0ZDwEc620=;r zeC&M^ww{T-zslV6+8TSB>d@+ZVA4EkmWjPf%{V%Xt`}Odtdsg=ue9{0dd;S-9NgNg zjWJ>xUO|dGKS=HK4SndVbm+9)5IT$Cx8-}n&JX4p=l0MqZ=*holKB(nX;v5e*ZihZ zV$LQ+#s?l1*MV1v&Rv(7OIW0;^ySX7caM9RwcB%UJvizU#`jJ7U|i97OY5eUlsZrd`R&bFRun|H^}HrA(^j`?TZpndmD1z9-A# zSLAX>%|xZRyTk=Ky&~|!Lba)!tcKo{0LP;1enoyRMZaVVP6ZbXzIQt6mlx-iX|h>n zWn0#!g6vDH+69)S8%`-{eb3D}d!|@zTyg(1h2-k66Q!0FI-Cy?1xIuu?L>-u-|fKv zlCo;d%<)K`m8HfVO@iu|=9XGkpUG>Tl~Bi=I=b%S{dCh-jQosa$py#E($W3f5{e#J zm$z+}%YU}LFgkJZj-`H%;*YwlH-_?ie)%hSN@cuCPjv~lJ9IVURmqb?&V(%Pwhrb+ zpM`6^L5cvKLgDnARmx#12VBUnnW7){^v=!PJEN_aK8uZFmt501)!CQ*z2wlg^~5FC z0TEYKXIa(3bh+Wa?IUOM|MX@&Hb(i=P|cL8mp{>mnQ9gD70a|^pSeVyfv=EDyhK8D z))}nESG2EIRWI{Xlei+(A9n_!S^=Twkq{X6-M(L3qTyNM4_cD>z7!!7MrA+(nFT8T z*{zQVYBZ0D9G~Sj$t82>&7+F*bizD|J4eNj(Fx&whF__5y|g;r8H}h9A&#vOLG0>2 zSYGOA>ZGPc~T_Q1^gXT$;JU#=vBFy{A#a^O5nEpbj<%rU5okt5KTi8$;A#@X0 zM7T$4neCl+IK}*I{k`|deY9f*Wumz>x9MM!A2_0~CXSqBLtu(^EG|TW)2OeF+q%k! zOi$qqN+kslB%b}yi>;rcM8hWDfISiSo3{)hF7k=i z6wzPo#-wPOMGovD>BM&~fw&;K%q1+aiJd#zA~_-}^!6z;(FgugA4s_C0%!%@2s=Rh zE+Dvh693TQ7q~?4F-h|biA9R&Zf4Pr-#oWju^(K*F9BhhdtjMQkfEV1%O!^y5FaX8 zz!t%qu>@Ui7iQD}*uzY=o(Jlq>p~i#`m2YLPH?io_XSL)=sworExBV^h?KWbt z-X&x}yoLFceZ8*~8NO;TR50`!0()(7asNSU)xn=vNTfL8bd7(l= zGYQHQ66!hV93FhLU|(?z@5(hy8Xs0fC4ONOO&IV(K2nE8_{_&RFyKW@%$xpjS8;&u@sZmf|^qi1$DqMgJcH8elVu zNjDp#qBpEkpLd;ybbaT%##3H;m->xzT73}5s6>Ab^b?J@NW!y8&}Ig&wE4)g0I$o( zblxHAa8SP(*dtur`f`*3m)P>P|A^qF$$erWANB^~_EG?|rsDo^1k#xZS8lt-cSIDU zV5%8;CUEUL6EDLZ7BY!?G*|_Xuqlxk#1Y{QN@fh|EV9=A6!4#!#0Ns?0}e4#0KL#m zJj_I{a0%&q_<<0OCxWCvI@fSF(Urr;nRHyC!7ZB!6+-A02wn?Ey!acMKx#G;K)iDa zsi$a71H&ipOk%S~EwA_>+N^;b2#&uW#28_4$L2VpE1~ z_$d0vC?>i=Rdg?1XGMV2=Mtx?2!_9*nxtn!R(C49X5b3~N!J-U^8B_EagN)-$L${vFv33u3UOaf_`toF0%WqIK)=Q%arv5)XVA#&-CAyv5Hth z8h7odDIB?TR)-@fLJt%QJ5)1>g;e-EcJ(5c_=kl(A%rWgHWAJEGm5TCB~==WG?**5 zd%*pb3o0*HI=R;O-V*zx!2Q!YvLxNrIMf)fcHE=Slc+M(hd; zKg58ivG6-=-lyDsUv>qf!@}}8_!U)nI1Agrzactw?-m)nGHKb#a8e!&jf^tRSs@D5B-$k7sascRR{oXxtX=zP@?!DYo&O__D_Z)c$*PYqY`kdZj?H{_T;4|GPKf!B5LZKK|8HLmDIsJJqpf2uRg}iB<{tOBp<+Wh zKHX^fyFNYcYIl9h*L{)=4|R2xR;n6M()4{ZV<4H>Ibe89bOt)s?_TRZrr#=f+HD*x znAwpfcRbqqLV5d+iR`980xoRBSFy~OT*lnfrdrxDgP)<8JKGgS?* z^WURPRo!cwTXGF;QhJ;bJv|QZz0VQ%-pBYnd7@nwPt!1^{?CP z7GRIYDu1=Ul$U(%j7wQTo#~F`fm^*bnR6Z{JJ((4D>`edVpVufOlPlh;q~v2ABJ&{ z9~dlu^?Z0VoYYcqTXX%Ui6@#9gV8TFL#>t1d7s^T(x#$eIXKhn=JzNv?DR+D^DAp_ ztU12#=gd>pH+DZclVGxc*)hrD26k%O{gzv2lO5vvXJri~`kkZ;qQc(X+qfRNspeR+ z@1@*Z`+vQ=WL?>Rp^0Je%Q@eDr}d@P;fd-k7*@E0WV6RdwuNajP9W zk@lf7>(t6e>3+KhDi3DrR<1OEamsM6U;HuE(+b-Vz-%vjJ~j6cYxTRRaf8oq_a3a4 z%~YqHRkM5lo{50Pa`|&#U5B<41HDE~9z9#U{JwqK>&aQ4Ki-qyO?o!?Ha@|AoAjIr z^m$?H^Caia@}2O^$NmTYUVoi9kuK>hta>iv5g=>mJ6~4+_g87Jc6jF7@8@4^5O!?1 z8Su6Lz-qv^F{_(_Kc;+E1D9q~Zr=Fyp?>wo@5PCmH~+5uT)hcF(pf*Z*!}zzOkCJb z55hW9YH>?6lmR_hET4f;y{?UOqK9mG%@BwlS<)tj(?jL9*`tqN*C7|u!;~HEv9?P( z8@uV@d-Cn^m#^zezM)4Per-<-T+*c=%_4QTonIGwU2oeCvnUhC^I};`dI|<+(H8mV z#VfAst2mk6I{W(khL$CLYPea9!#0OagVzoA7MjJnIy!85zGR@@Z5HR5?;!Q@x}nA! zv)lf!9c2D28PbsE?2v7avUp!3y&dN9w;Ubiq?V1049pV}^BuRV`W`*zWS*Gu+EM<< z@=@plJ z3R#7ytZ@&dTf`0$vG!F8RGpye1XU+M&;K{j^KGWr{NqAxi6jyH}OUY=jz%(ehkJIp@-L_xWN_b%LrBMYx^I9?_Gq78?<$U3M<)7iSn4zl{@BejXvZV8i}y!m9bcFVOPWew(} z&h<6)g7QSwvqy1^B<+q+G$Jurm%ZF8Os)wE0h&UYy-Nm5)cy&axickl!66I=Vf~pf#ouKLj zRVS!ALDdPWPEd7%suNV5py~uwC#X6>)fwA152{X3bpqf7zzKj804D%W0G!oFywA`9 za01{YLds+JoN?0my)+PQte9@``y8**S=CH+6ac4(AplMQoUnZ%2R?-)txTW3Y1a5O zEGmB8=w-jq+dYut!$!3=F`!wP2l&6**N)FmA$xQle!%|q@&Qh1Qz&TjxX#Sj(%II(jo17@&I zJp9rK776#x+IPM$*Es2XRO44Q0Gt3g0dNA~1i%S^696XwP5_($I00}1-~_-4fD?+p z4uBJ!tp#UmheyHLTCmFr&enpnwcuYY%Mrj3(nSp zv$f!CEjU{X&enpnwcu#fp zc}!NWPd48)r!Fxk?^0fFdS1RyeqKyrX?kHvQc<~E@q_>AQ0Ko^I$g@k{})4@_t%Cx z|6`@I;QoWPq0Z#`=Cz?tkB0vLSm|7w=*(+rSzGD!csN@9u;V|5IxAZT(s`Y0bDe8j zo%#R2ts;IF{O^Z43kC<82l@Z~TxZum<~qm!G1ocvKhAYN z{nuRQzrEG@>i=}B^ZES8f6aBye)#yGwmM&Z{IWLJ`G33Bxjeu0l)xj6l^1 zs!sS$FB2|Z(J$F0@hc%na9O_SyvRO_Q&g=iC%>JdM0k(tXFl^1%jF0)XqTbL*-q4n z@18@*3u!4({R4`fZ;dwbjgEdNEHW^y+r($h11C0wDpxz%9#H#GXt`QIi^jR`mTAYh!eklnkm)P<4W;6I7j`>I79M zs5(K_393#|b%LrBRGpye1XU;4og%_4m3=pAMj^ccaGt#S1OR7(YLlh>G#`^9#7s}* z8;zhMP?;05L@!p(W&oT3I00}1-~_-4fD-^G08Rj$05}0~0^kI|34jv-=g{*W0Gt3g z0dNA~1i%S^69DHe`zsM}0Gt3g4?XG~2>N3^d7}NrdS3_tI00}1-~_-4fD-^G z08Rj$05}0~0^kI|34jv-Cjd?^rwsrn08Rj$05}0~0^kI|ndNc0MI7OKrj*>^oMnl@=WyWg?x$ha()b~H8Phcib^E$#2J zjte<$v?tZYQT3Z#zItDt(Ndmqw1ilrpXh9pf2!h0cj>iBvtwI5C0^kfS zW2zM>j-6YVesI97#8auL>%Ho!zA}yK65HUSyT&BW=F<2mMdNjrwjH_cK57$Y7SFe4 zid`>Iw6OSLezGK8vYoGx&#urcC=y;r-({lzJdhNm8y)-Zv`de04PrVuE54jA?lP+Z zfb%?B0Dv=*_>m8dr+4;!!66xz!hX z66`Xs@CO&`L~oe>Lb%TsJx~UKlTGvmz^ToH?xw<1d6Iz)$Y&+uK^AHU4SGdG{40b2 zfD-^G08Rj$05}0~0^kI|34jv-Cjd?WoB%iha01{2zzHQD0>BA?696XwP5_($IE^2( z;28io0dT^-^)ij^@7zb5wW)DzJTo=pGY8T*8`>oSaF(e6-~_-~^SfX2C%+YvNfc6v zf0zho4lx5;)w`Q`fQ~e>Bz}PKhT@4Ic!XuD8_W$Q&m~GUOL=h{C#nc-Oi@VzCakmd zH=X#2s`Z0U)TJU}4;`Y{=a# z$a)spSQ0kchAW{Uv>9!mX#hAOBhdgj`}0EH24ZEJUZin}jS%>kk26~Imxmhq3LqT- zI00}1-~_-4fD-^G08Rj$05}0~0^kI|34jv-Cjd?WoXLJ_05}0~0^kI|34jv-XUUrx zjbZ?t061%&H4?Rys~6eC6)sAPLtLh*zTm>rKZpU~BuoI{1i&e^%)v`BhJ*~F_F8$% zBWz40-eiiD4oZf7)LCSqrI`573}Pc6+Q=b>^Ps1iiR$#VYs`eg(k3H&{IOn9h(CFe zgZ$xkV8E>XG6}BVOsM2TFGKKD9P#utG>O_|Ab<#S2}%Gsmo%#ZaN^V0@FC`}NulU- zKHi=WzkP>znFoK)#eU)f-~_-4fD-^G08Rj$05}0~0^kI|34jv-Cjd?WoB%ihaCV#D z0l*1>696XwP5_($IE5lR4ip051i(opPI6$$)Mg#Jurem@)nw& zPlcx&%?X=taPkZ+30F9fDrQ+ee|l!BBQm@$ zIRfAWzzKj804D%W0Gt3g0dNA~1i%S^696XwP5_($I00~C;@$$_1i%S^696XwP5_*6 zD*^li08Rj$_`^&@2cP);2=Nya;lgXPe2j>oW_On(0dT&$4S*8>XO0dBa&k|23vL@L zVkE!UqliSOJvNu>K7x!%(nxbZh1RP%r4YHD_`(#ue&cAl_4qrp{G-V`FFYH6Z&7Sk zaH8PMlxE(! z#G@Uw`}Lj#GunMsnQUR{t}k)c>x=$I2RAd_#D`ly7}TV@RNPN^u}(ho`U}~MkFLL| zD!iY2!{u_WZ?KAo!l&11065w4=>RyFW>aq7_~z_mrxK7bar5Tim547lAV@k3wv7RR z696XwP5_($I00}1-~_-4fD-^G08Rj$05}0~0^kI|Ic}W|fD-^G08Rj$05}0~9%2w$ ze*oYFz_~(yeawXSkvesm>bAguCNbIu+C(w7rM3V#zd8Zn1i+c7r`CHYDmQ8zUlPcD zoH#ETU2JKMH+|wzb>BmQX(~D1e8_z!)+t|Uq=-(P za^Bj-I+lo0*Vw&{YC7$nNJhp5-d4SKK3chM>3mH6p(ovrU1#L0LYn zj|G9qF2m8HkX48ZWbIeCh#e$i?W>fMik$LJX;n2j)wK_k+J0R_4FhAHW5;!mo0*)n z%C?G6JRNOjZ4+q|eA3oF*zQK4z28}fixG|?HqLIEF1dOxX(lc)M_rSg+%D%{Nq4yF zZtR|;=W*58!^6zO-Oj_y!NWVtBSpv4^Q32*v!}O)mzR!LwVju*gO_i(SE%zfzkNQ} zF8Btx`UceamhAGomgpB>=9j18@2}_YYZl;d6X5R|aKkY$#Vs)S^o5T9 zjzy&hM8!Bq->QwS)W3Dt{8pyTtr&+}x4duNJ{fZ>EGFh)Y>s1WymxF_U~GI)T*Bqs zjaS%-2JwYf@p%{Gvm6ozToSTE5|U#R5^p3X+a@K4C8c>Lr<>eKJbx#zD5cOOwbCLr zH8d?NIxVv~t-&X~(=DSoF(b?IZdT&m+_ z73B#P{UMc2S(R0Jl~pB`+{SxNlibnFs{XrG-K|yavDH;6H8uG)b!9cR`LzxGwY@j* zSBKrNPrBcfdjDx@-GiX|&dU!5D;_laH8!L*wpKSb=QmCGH4o%Bx6L+BXS6I-wzO3| z9IScR(e#j)%X?eOn~ZPgSGRXJws(YgjOKN8RCaXT@8C~&JgeyJtLf~$-PM`a)mhXv z(Ad@6-qkbTJvY|-q_(fWxo@znf2_TKFneGiZ{SJWz+}bH;QgVQ-l5^QL$kHRV~xY} z9m697!y{!Qqs=4Z8Kck2N1u0%jyI1#?;3yFH~!??_?NyXPe-3j=1)8sn0R$}@*Q__ zbzpL$;^~{tXH&h;J`FybZkl@4JT>)rYI<^Ns(pHPa9Z$Y`t67558UTdqt6AaFIJzv zocTMq^5@f^W#P)_Z{Jr}SJyuLs8z`Dw?)H$8#q_cdcD;J{V7z3zRaUFg@YODo^g_q z-0b0OS_nqUxVCsC&nQvJwy(BitcadxoMn8!^l{ng8kgsN_sb^kF{%uHZ@O3hwC2)S zscnB<#Z*0WwlB-1zVdm~^~L$;{q^@=wz6PY>0=GtnU3o-ZOSWSIm6fOs zpSs8O#lVA_x0P(Eo6^S{Yu}F*Ta?)iHtrh<|3hiId%UUc<5Yv^hZnYc_jXJ+hhSw+ zG&g*iZ42B5k86Ig_?Dk%l6}SUfzF%p8rPRYElofBo`{`aT|M!zd3o_&Q^aS*!!0X6 zg|q!uEq?_|%S($NUJjpg2@Lu9U0%R~ODw&(sd)dQAQ-p*9mNB+o-7CS!qvP8VjkUz?lp^dNM_EbLqPqO}LuZyNo52lJ6J< zRTrAia2Q2qNq=AC)5;W_`#Je{8n>z6(hPg&eXel6)VH8+RqSMuPSAN*6rGXoaAzx_ zD<eFZ3msF>@OcL3QI+t##u9#1&q|Yim zr9nj+lvxm{jS3CsFnYE$FD`EJGyV57`HwvcTi)(2HCZ=p8b>{|`BS@s`hfET?T_uZ z8b7)$cs6bFTBs^%*KqB3+W8AUJd&^*pENdUa7v9OU*zV^)ZJ5()KC2>x2F)Vg&Qxr zZsS%pES?eT_N3r%yBhu4I|aIy%l@dR>kcfzdkgIkt|kWWq1lVI@BYIRYhP!c*E9b( zM&{AAnr7)_9TYV>mujB&%w{}Q`=FBc@TCaNT~qm(#9efcd`^UNSg62It1^`0>U90X z;DOWAIxlVuS_)YgPFu)NE(ts0>qbN8czSxNSyonI=P6t=gq!be-iT$>QmoGPq99t zjW<48Jci)TV@Q=b#IU)RrXxT-5m%-(G3(5!GJE>PFnZt?D0t!#yo ziz2_%nox|j|COht;DKtx{N?C0hEWil$u7KU{zExx$NIz%qV;~>p`>?h^0ymowN9}` z&M@*wH{U(luF{Ls2&IMZ-g{2#uORp&u7fdYZh_Hr$H}a(MChg_N}bqie1s7qab!N? zr3a~0GL+`?Vq>PrIiK6Qzw9?Sp|nW{(qLy;d04{Qw{iFGm<>DTVkFPxsXy)6Z#Svx z$0TF^{*uM~iNgB*Fkxs(db2d%XIwXtY~5XtG!LjOSAiI~xUs@vwh{SwAaISIHA1Yn?u9-%*_$kL<-FZD#IjPvGL65py!}be) z{$v*X+tI>L>$->y!M3Oc2@#`wGM?rR6@~QWH!-;Puz$4N}O~tj5Fs3i!Uf4pvkXyKPntZX&GXUEf^9!E}ZV(zaOFb>n*{n zl#CDCQ&RkVfIm<|-Y!+(w7Y5Atb0T&Z?!=}VQOQz%tA@kwRH^0@WO2Ir|mJ9HzIPl zCfeh6g%&=4^AQJ0J5Z@JArs3qA{ifTA0k2|Pl^{EIDWw>&?AQ2z$4tCK^ay#)7j;; z@JXI7+MHfYVoNBbOc|gY=VQr}->MZ)cbVF-%hY*`@{icMm*dYr+gtdfE%D1~*+h@2 z+&hAPZrR7VmJK0I97q%QS>=fPW3yHgX2pZoHmO=)F8w(3{LPeLw*mG-6uQ@5&feShnjvLvo4YT^Et4Hq_^ zbmE$=AZFCc?i^zWlhaa-?R_zbRfGa-WT%HCa_{)^(6yn(EHjerRO2Q|lqKZq%`!+` zf$xTh@T8U<({nPc^WwxK>9>4bo;cbCZ5o#%GjSM(nb=#RHunk%I$A@ef{kOG=k0{yp`hFnr8IJZB+T;zK9ACjy*?=$?G*-JN&f;Ca!jSNb6uQ?p6#&s-hjCZ7H_d z<8`nTLe21kUKrM6FZ^hbcTn(ZV#zPRumzRX*GT#&(fwK04aS(!!Aa?w-nv20K6dnm zSx@7Jmy&O@DRN{ZB0?eIit-*7<2_P8dML6TXN2g7AU3j~3f%qshW$5u-x8M|Je1+~ z^Y;Q{Q_}6QI8RQ@S;Z5pmE(^;CPupNv!-aAXpM5XR=X0Y9BG%Jni)?l#T`*#Y8t3N z+fBF{1CzXcQ$u|RG44{|9|em8ed>R`d}vZ~pL^U5B%;TDwr0FgI(laP)4YV`-29|W8;yQQW#3T&vCUg50WXJZ{}BZ^*PX~p9)4AD8Oprh_LOxw^&Ea*Kp zIhjR%$-rpK!u7?-gM5sUEN=TG`3McA^Mw$_B2Nj?+GZ#`g#1wmm8ObF^F<7_uj&Rt zRyT-8@nO1O(Dw4=Y%W3D9eH3$>^Bu7MuHvJCMuDjBwE<9c+qwIumlLXhXvW@804r< z-iQ(xXJJp}U@S>weQxma5#%i)*@%gvw_*0uLrj;%J`2!t9Q@mDcdQ4Ipsc86`EhZmyA7vG7EK;R1# zYd>{@cr4fk27C-c-pC0zs6t+#BVP)|E^x4y>4>e9L{}=pf{%0+iW&29+Ga=x%1td< zoC62$z`$vaAT5OO%cKx3cciX5S(_HA<&HQ-LLll1W&-Gb3X4I7sW1>)Lb3e{IlW=s3H{%e6-M_iy;!qyRG>})XAE)ix!27B$5Qk z%m(r=5^ggqT}vB};s)-t4iqFAoD(AcaM4H5X_+C6gg9+&%pOjJ&KK;DcVa&n zBA@xha$bsN6(W!n`f?-r=mv~n6It{iIdtu>$Q~~zK)rsCrNtxGQ^>ys@!LztD-;BY zPCTB2BMBfe^aLRba@i+iEG6UUy39X(c!)sk0S6|*gGn$5T3-^4b|>jS#r~n8ZJ0fA>5vmHL(%pr4UCOxuaD@I0b?2y6BWsbXY3se5od0`;t#QF{DeZq43jEi9t4^vB(Jce`XJ;Xdd61c z@NMa22~y^Pr^F33(LXFg`|7e-R}}duAFuTVzW*0~;wiC&m-mMQ=Tpc}6v=N%$n%0* zM)PECDq459NG_V}L(2X`$M~YizG$-l(-b*gXaTFhOjw}3u25H-fFYG*NNKveIXWYv zA)Cm<3=zz{m^6>0)s~=BMO5QJw;#nDRuS7EP){zg;=P!|B{D&QK;Wa56^nw-1cgMC zZI~jGLa_}z(LW@#1pk(%yU5pQvIQegGY65Jo;NLozlD%ZIheOhLc+XQ3kN|n!)Sg% z=FN*ml8}EG`I_;NEljcrM0A>ie+D7%q2aW&F`6SNX`$FKRb-A*=D#FX0D;Z%LjO=j zsy(u`R^w4dYxgG6N|hEAbx=9myia8C8Sw}Nb!bHlMKacsB|PRraCE%Z z2m#HnMr_1kInZ7?;a_KqJuNq1)M&5)GAx@mL88N~;RJkpcB$ zz!m4k?y;a7`1QK7aAP6dm=4!8gE#Vt0#<{TnP|jRa)vSDC=C%g)nLqq8$*zP1cVE8 zxG@cZo+5sw#_CgQqJ1yZ*1>o1LZlfsGHc%^{?(o8B6TJqT2)AC0W{%onQU!H#o3#m z1<+%cFtt;}6Nf}(SdGz7vro*RYCb^sE}?l-P|dA4;(KWCyjUw8CP%-ixoR(p5d{7r z!M4mp*0IrA@em?|?90s|k)TRKv1S&;(S&@36(&YOznsUgF!git_0l3}6kUX}Py9eI zB$d8-yO2YlB);^kqPvpCo)PUYWf*8@kWoBnxu<2v*4HdAC`SC~hRC~BZTd5~&CBGQ zwDM!x1hIj(hWBmlavc_Jb*1M!4&lfm%^jM*I~XG!G>uL@H*p=CPNU4uWA2^C)14<& z$j5$nnooC{X>^@B)_F3Z>r8V8^+A^%j%WM3>wG{);l6IC-yON`-7cAx)$!etU%Hu+ zk32LUdD%R=7VzkL<|Du6M*#~PqT4p^Rgrep=qV}|3lHdt%Ae%so0{31-rSox-Fx?UFGsR3SEDcArmrxduQ;=>w7IW*y07wgA6K%!TBE<# zroS$rzag`~vAMr_y8q$texBq&yT(AL%|Lg+Ku_jCU-Q7g^uW;X0lwtmsK(&9&ES)O z!O6_QXU&7t(}OR54+|DGQH`+FE7#TPlkhuiXzf&3N89#jh-_h(QkhmV&US$||uX&vc*@ye&HDyO0% ztGas!b+@{{kR3r&qmn>2ipanI(PmbFMF3h z-BZ_I^GrNEEIm?eJ-pXm^PD}rY(0I~-tlz3Jl7uaBD_Miy=$GlebxT)ju*K0j+f*Y zU+$Mr^Y^#$_j3yfDhjxJKcK|&Mvcdfppz`tmEbVX;4qVrV7rhIW=N)ANT_F6lzK#@ zRz#>nL{fT0x@BbY*~moa$bA3E7?-G9$D%XLqtk7pqpwBBI^2rUkGX3flNu5e>m6IV z_DrV{mv@ofUc@dih%Y)7pXV8$%#M$D{l_!i9oNK!wP(6x$%&rHt)U=e02#x-{mNJH zKYQgXrrtI6qrG32{I9Qk>+yZHiWUWHuY7;r*DCQ#PS+6byPPbuDzPcMA(gSW+@ku@ zt@O+3b(fp(n?BDC+hY02rcvi(TvvwGt|yU8Jx3Sy|MAKfDW+^U&`>q|i2a{m`Gz^V zxBmIcH#pkU~U;?l}>=>Ko8e1lE(pI`E-+I0sR`?y`IE{p(|pF@TH#WDFo<02u?w7(m7VG6s+_fQ$iT3?O5m z$NPbd0b~pyV*nWg$QVGzKxm`Fw}OlTWDFPjeU#0cE^K|)8S?f-_r}YOZ`%BwSjRMC zK*q3j3Sp zlg&5HsY}esyOfuko|o^FpBGbDnqF9vR8;O({J^WYEU~yPprj(Cq?BLM7h2kyRa(v} zd&Mhjbtx~;DX+X+Syf!gy zcb2w~uXP0v+W%1$M0Ae-D<_ES>g?$1Y3%Mxc=W8P=TUlp@BRK)&HaOGAwkZ-lbV5{ zmjf@}4a^n{4m1z)*NTF60Gt3g0dNA~1i%S^696XwP5_($I00}1-~_-4fD-_xT)+YV zP5_($I00}1-~_-)sb17o1i%S^bI`}lZ)IrDuHh>$nQxq{={dTjOImN6-mw61D%kcRo|n>oXit5UOUPkSw2b+S7VQoE+`&f zKI*Iy1b`D1oB%kNe$6hgjQ{#O{pz%f2qyK|DZJ^*3t(;)^R<~Sy z>4H06{5))o zZ5lt`&E7sb(!h?TNjSfbH`-D1I^i6;gcN_wKyfa~@|1JIwG%twbICT>-p{2l!qc|v zoDFw=lXj`FFsj|z?u9904D%WaH19zob#{VzVClG z-#P#7`TWQB5A)+6KF@ymSi7*&xUf97@OyFL`-_i%UVZ%X{L|O@PoMvO`rG$;<>%+6 zo-e;YeEIzA%kR0x?@zvc>;As@{QJ_v_vKIDe+a*S|N4Dt?#If~kDsrXe!O2=o?rU$ z4FD%NQ44@`=N3muNq$y$&HjQP%?|yIR?4f@JLMMaV!sIt9nJ&b1i%S^696XwP5_($ zI00}1-~_-4fD-^G08WG+8vrK&P5_($I00}1;GEQ6sc{9s34jxJZ_AYqF{=RgT+v4( z&fV_~G(7s0>upXy0>HVU1pp@iP5_($IKc)dC^+X_7QQ^{wQc{@m`AN~ZK3b>>#3hO z^2iWrHW}PMuy+{OKgboR^*vN5`~AK^INjLGm)mgp+lb*+5$pk#kOhfH2M(#;?-rh} zjvBdVxks_@=;h}nwMB<~hL8MMh}V|*Y~%m&nw#J%)OPB0RL)2GpzDZfw1$fsl4as*00CL^r0^&GJk4pbYx&q<Tmq3`QoIvsV6&~r&W>cX~hy-ah-Q=Y5x8;{(k?Cbb5tHt4Bm?MT9y;B&A2BTSg|IjZAco%=eFsaf!NhEIPwHI^8xp z+Tm7=e#~9_nADJ%Snt@6(z`nwW4S@lI%Ba%^JKvE)S0 z1F6C)3iK(;C9kvtrV-u4EP`WoA`omd9k}`egG>bLtXv@-F4&rsw7ROZq}fTeC{bUCOwuvRAya)|~RnyOmYNmE7A^RZpwN zQfq4N*7O(D)RxxN7SukduC4E_?FqTxSaSbCO5MZs`l-Z*Mz;q;6%U&I8yjkxn*Evw zXPT!fTH320wl_WG#kUS*w9e=8=JMOxC)*~{+B-|z$E(}BAGCK=c63K{j#qT{)pqvA zb#-=h^)z<(B|Li8)br^6KL28Lb^ym&V-TQM})KJ>h2Xt->6 zv~zf*YxMEh=w#pc-QH0;mjoJA0oq|1)!*IdkTD&Rk4xa*>;rWUcii>-}1v?{xL_e)IH7 z=k(0*^lbUe=T9?Bt1~Mj@8|a4?@xbVePeBv%zdbxTN;~NSe;wT{kSzfztFL;II!^R zkib!josYgJF5X&+fkrVEy_1!-_h@HTfYJy89R(`oDS&&RfPC z11?LZ9!DMLvhRIQxAS|!zkEC^fUkCm9xWN08D??TuSepSjoB@gP127y1!+!!F8PV= zTgBARJz)=3)E)&U(|g*Ev!Xeq^-OahLi=C7l-Kq`-zrr4Z}y&BrxvB;(XQ*625VM% zgW=thWvkU*+e%UlcAE6tf`VQ#*8*VbL|M(WSFdzlZTpvp<#nlUo_YD^xs?*FaSA1r zew*R$V!B3=;CUemsqF=~?8-XKre$ThW!To$Jiu;|IQT ztty<)XZzEqqZ|ta!+o9 zfXCZM`rrK7onlG>bGb*rze?;hm7bTT;*~>?u6wRLD)~`FzpYOdn1?4)#ZLo)KpcU% zvv3vn=j-a;8gjaCCDJvybkwN4<*VeSk~* zdSahj;60@!TN%YQ)DcT~GhKldzHukFOuzI{9vNJ(yr^@@LBI zK~Vw0_RUDvU>Z1-vjud_B~PPvzr3Jv=o?Oo>$Yuur(KM`DK(4~XAivuYoB##_bc3- zQcBBdutnx^U6m0nd*!d{PiyD4-LwBO-raCcPe*Y~7qZ{)z8|2mMsoh{N&KTClY29CklK)>YDY)<+E*mqxga* zE3Gmw6vLtt_;fP)PQwv|22&wLQvB(rp;R$ZC|psxq}1>z40y<>}UV4`#HR{mV9&>%srzjQt9i*ruNu+aW9 zv_{hu5%tla47hW6Wln_Ti@!`i=2=_@_;ltLaM(q$qR~xxo<%%-u8Z@zP$;-{^7;?b z_hVN$J(Nz|h2xx9Z!2@6im00wK8Gv@!_FPgadvz&0pSpt6RJ6GnpAwfK+EWAD%xMM z-}+J+65D83^9Ua#jv%rOuZE0x%nXK05Ymk?ho}V+No9+jJwU;@JhOH^2;xXiIF3Q* zGH%tjGbBb_E4722s|`omhrH h$Q44?8S~fVfxYaVZjH`5T7Hg4-QZZ3JFBaIVDI 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 yT9(@M$h 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 WzzG5;2%I2rg1`v^=l?x$YW*J;mYkRX literal 0 HcmV?d00001 diff --git a/resources/images/scala3/scaladoc/snippet-compiler3.png b/resources/images/scala3/scaladoc/snippet-compiler3.png new file mode 100644 index 0000000000000000000000000000000000000000..3982bc782fd7afd5be91100f60e4cf0d6a2aeab1 GIT binary patch literal 109096 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%0DG|-|uc8I5I7; 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 literal 0 HcmV?d00001 diff --git a/resources/images/scala3/scaladoc/snippet-compiler4.png b/resources/images/scala3/scaladoc/snippet-compiler4.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb2afaa154f87fe0ada0bdc98e4eb006d2130fc GIT binary patch literal 35071 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 T&e!VE;6KUdvZDFI`ab^$U4J(E literal 0 HcmV?d00001 diff --git a/resources/images/scala3/scaladoc/snippet-includes.png b/resources/images/scala3/scaladoc/snippet-includes.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9db043d63d310977561370ac4318df0e2a33ca GIT binary patch literal 119517 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 Date: Thu, 12 Aug 2021 16:56:01 +0200 Subject: [PATCH 0194/1704] Delete redundant word in reflection page. --- _overviews/reflection/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/reflection/overview.md b/_overviews/reflection/overview.md index 2a8cbae7e8..3de78d0525 100644 --- a/_overviews/reflection/overview.md +++ b/_overviews/reflection/overview.md @@ -262,7 +262,7 @@ precise runtime _types_ of these Scala objects. Scala runtime types carry along all type info from compile-time, avoiding these types mismatches between compile-time and run-time. -Below, we use define a method which uses Scala reflection to get the runtime +Below, we define a method which uses Scala reflection to get the runtime types of its arguments, and then checks the subtyping relationship between the two. If its first argument's type is a subtype of its second argument's type, it returns `true`. From 046491609a7032f567a900347256f55c45e87c8b Mon Sep 17 00:00:00 2001 From: Maciej Gorywoda Date: Fri, 30 Jul 2021 12:06:21 +0200 Subject: [PATCH 0195/1704] A Tutorial on writing Scala apps on Android This tutorial is a shortened and updated version of the tutorial from my blog note: https://makingthematrix.wordpress.com/2021/04/07/how-to-build-an-android-app-in-scala-2-13/ I focus on a basic example that uses GraalVM Native Image to create an Android app, but in the introduction I mention that there are also other options and at the end I provide links to more details. The link to the tutorial was added to the popup menu just under "Learn" -> "Scala for Java Programmers". --- _data/doc-nav-header.yml | 2 + _overviews/tutorials/scala-on-android.md | 146 +++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 _overviews/tutorials/scala-on-android.md diff --git a/_data/doc-nav-header.yml b/_data/doc-nav-header.yml index 07322bb3b2..60624cdba8 100644 --- a/_data/doc-nav-header.yml +++ b/_data/doc-nav-header.yml @@ -16,6 +16,8 @@ url: "/overviews/scala-book/introduction.html" - title: Scala for Java Programmers url: "/tutorials/scala-for-java-programmers.html" + - title: Scala on Android + url: "/tutorials/scala-on-android.html" - title: Online Resources url: "/learn.html" - title: Reference diff --git a/_overviews/tutorials/scala-on-android.md b/_overviews/tutorials/scala-on-android.md new file mode 100644 index 0000000000..a6299e6bb3 --- /dev/null +++ b/_overviews/tutorials/scala-on-android.md @@ -0,0 +1,146 @@ +--- +layout: singlepage-overview +title: A Tutorial on writing Scala apps on Android + +partof: scala-on-android + +permalink: /tutorials/:title.html +--- + +By Maciej Gorywoda + +## Introduction +The Android platform runs on Android Runtime which is a virtual machine based on JVM and, although not identical, [it's very similar to it](https://www.baeldung.com/java-jvm-vs-dvm). As a consequence, it is possible to write Android apps in Scala, and in fact it's possible to do it in more than one way. Here, in this document, we will focus on how to write a modern Android app with Scala that uses GraalVM Native Image and JavaFX. At the end of this tutorial, you will find links to materials discussing other options. + +## How to build an Android app with GraalVM Native Image + +#### Requirements + +We will use Linux. On Windows, it is possible to follow this tutorial and get a working Android app [if you use WSL2](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux). For building, we will use Maven. + +Download the latest GraalVM, Community Edition based on Java 11, from [here](https://github.com/graalvm/graalvm-ce-builds/releases). Set it up as your JVM by creating an environment variable `GRAALVM_HOME` pointing to the GraalVM home directory, by setting the environment variable `JAVA_HOME` to `${GRAALVM_HOME}`, and by adding `${GRAALVM_HOME}/bin` to your `PATH`. If you are using Bash, add the following lines to your `~/.bash_profile`: + +``` +export GRAALVM_HOME= +export JAVA_HOME=$GRAALVM_HOME +export PATH=$GRAALVM_HOME/bin:$PATH +``` + +When you type in `java -version` it should display something like this now: + +``` +> java -version +openjdk version "11.0.10" 2021-01-19 +OpenJDK Runtime Environment GraalVM CE 21.0.0 (build 11.0.10+8-jvmci-21.0-b06) +OpenJDK 64-Bit Server VM GraalVM CE 21.0.0 (build 11.0.10+8-jvmci-21.0-b06, mixed mode, sharing) +``` + +(The GraalVM version may differ) + + Type `native-image` to check if it’s already there on the path. If not, install it with: + +``` +gu install native-image +``` + +`gu` should be available now in your console because of `$GRAALVM_HOME/bin` in your `PATH`. Also, [read this](https://www.graalvm.org/reference-manual/native-image/#prerequisites) and install whatever you need. + +You will need `adb`, “Android Debug Bridge”, to connect to your Android device and install the app on it. [Here you can find more on how to do it](https://www.fosslinux.com/25170/how-to-install-and-setup-adb-tools-on-linux.htm). + +Make sure your `gcc` is at least version 6. [You can try following these steps](https://tuxamito.com/wiki/index.php/Installing_newer_GCC_versions_in_Ubuntu). On top of that, you will need some specific C libraries (like GTK) to build the native image and it varies from one computer to another, so I can’t tell you exactly what to do. But it shouldn’t be a big problem. Just follow error messages saying that you lack something and google how to install them. In my case this was the list: + +``` + libasound2-dev (for pkgConfig alsa) + libavcodec-dev (for pkgConfig libavcodec) + libavformat-dev (for pkgConfig libavformat) + libavutil-dev (for pkgConfig libavutil) + libfreetype6-dev (for pkgConfig freetype2) + libgl-dev (for pkgConfig gl) + libglib2.0-dev (for pkgConfig gmodule-no-export-2.0) + libglib2.0-dev (for pkgConfig gthread-2.0) + libgtk-3-dev (for pkgConfig gtk+-x11-3.0) + libpango1.0-dev (for pkgConfig pangoft2) + libx11-dev (for pkgConfig x11) + libxtst-dev (for pkgConfig xtst) +``` + + + +#### The example app + +if you reached this point and everything seems to work, it means you probably should be able to compile and run the example app called [HelloScala](https://github.com/makingthematrix/scalaonandroid/tree/main/helloscala). HelloScala is based on [HelloGluon](https://github.com/gluonhq/gluon-samples/tree/master/HelloGluon) from [Gluon samples](https://github.com/gluonhq/gluon-samples). Gluon is a company that maintains JavaFX and provides libraries that give us a layer of abstraction between our code and the device — be it desktop, Android, or iOS. It has some interesting implications: for example, you will see in the code that we check if we are on the desktop instead of Android, because if yes then we need to provide window size for our app. If we are on Android, we can just let the app’s window take the whole screen. If you decide to write something more complex with this tech stack, you will quickly see that you can use Gluon’s libraries and JavaFX (maybe together with [ScalaFX](http://www.scalafx.org/)) to achieve the same results other developers get by tinkering with Android SDK, while you are writing code that can be easily re-used on other platforms as well. + +In the `pom.xml` of HelloScala you will find a list of plugins and dependencies our example app uses. Let’s take a look at some of them. + +- We will use Java 16 and Scala 2.13. +- [A tiny Scala library](https://mvnrepository.com/artifact/org.scalameta/svm-subs) which resolves [this problem](https://github.com/scala/bug/issues/11634) in the interaction between Scala 2.13 and GraalVM Native Image. +- For the GUI we will use JavaFX 16. +- We will use two Gluon libraries: [Glisten](https://docs.gluonhq.com/charm/javadoc/6.0.6/com.gluonhq.charm.glisten/module-summary.html) and [Attach](https://gluonhq.com/products/mobile/attach/). Glisten enriches JavaFX with additional functionality specifically designed for mobile applications. Attach is an abstraction layer over the underlying platform. For us it means we should be able to use it to access everything on Android from the local storage to permissions to push notifications. +- [scala-maven-plugin](https://github.com/davidB/scala-maven-plugin) lets us use Scala in Maven builds *(well, d’oh)*. Thank you, David! +- [gluonfx-maven-plugin](https://github.com/gluonhq/gluonfx-maven-plugin) lets us compile Gluon dependencies and JavaFX code into a native image. In its configuration you will find the `attachList` with Gluon Attach modules we need: `device`, `display`, `storage`, `util`, `statusbar`, and `lifecycle`. From those we will use directly only `display` (to set the dimensions of the app's windows in case we run the app on a desktop and not in the fullscreen mode on a mobile) and `util` (to check if we run the app on a desktop or a mobile), but the others are needed by these two and by Gluon Glisten. +- [javafx-maven-plugin](https://github.com/openjfx/javafx-maven-plugin) which is a requirement for gluonfx-maven-plugin. + +### The code + +[HelloScala](https://github.com/makingthematrix/scalaonandroid/tree/main/helloscala) is just a simple example app — the actual Scala code only sets up a few widgets and displays them. The [`Main`](https://github.com/makingthematrix/scalaonandroid/blob/main/hellogluon/src/main/scala/hellogluon/Main.scala) class extends `MobileApplication` from the Glisten library and then construct the main view programatically, in two methods: `init()` for creating the widgets, and `postInit(Scene)` for decorating them. Since we want to test the app on our laptop before we install it on a mobile, we use `postInit` also to check on which platform the app is being run, and if it's a desktop, we set the dimensions on the app's window. In the case of a mobile it's not necessary — our app will take the whole available space on the screen. + +Another way to set up and display widgets in JavaFX is to use a WYSIWYG editor called [Scene Builder](https://gluonhq.com/products/scene-builder/) which generates FXML files, a version of XML, that you can then load into your app. You can see how it is done in another example: [HelloFXML](https://github.com/makingthematrix/scalaonandroid/tree/main/HelloFXML). For more complex applications, you will probably mix those two approaches: FXML for more-or-less static views and programatically set up widgets in places where the UI within one view changes in reaction to events (think, for example, of a scrollable list of incoming messages). + +### How to run the app + +Building an Android native image takes time, so we want to avoid doing it too often. Even before running the app for the first time, you should invest some time in unit, component, and integration tests, so that if you change something in your app you could still be sure it works correctly even before any manual testing. Then, to check how your GUI looks like and works, use: + +``` +mvn gluonfx:run +``` + +If everything looks fine, build the native image… but first, for your desktop: + +``` +mvn gluonfx:build gluonfx:nativerun +``` + +After all, we work on a cross-platform solution here. Unless you want to test features of your app that will only work on a mobile device, you can first run it as a standalone desktop application. This will again let you test some layers of the app without actually running it on an Android device. And then, if all looks good, or if you decide to skip this step: + +``` +mvn -Pandroid gluonfx:build gluonfx:package +``` + +Successful execution of this command will create an APK file in the` target/client/aarch64-android/gvm` directory. Connect your Android phone to the computer with an USB cable, give the computer permission to send files to the phone, and type `adb devices` to check if your phone is recognized. It should display something like this in the console: + +``` +> adb devices +List of devices attached +16b3a5c8 device +``` + +Now you should be able to install the app on the connected device with `adb install ` and a moment later you should see a new icon on your device’s main screen. When you click on the icon, it should open approximately the same screen as the desktop version of your app. + +Installation might not work for a number of reasons, one of the most popular being that your Android simply does not allow installing apps this way. Go to Settings, find “Developers options”, and there enable “USB debugging” and “Install via USB”. + +If everything works and you see the app’s screen on your device, type `adb logcat | grep GraalCompiled` to see the log output. Now you can click the button with the magnifying glass icon on the app’s screen and you should see `"log something from Scala"` printed to the console. Of course, before you write a more complex app, please look into plugins in the IDE of your choice that can display logs from `adb logcat` in a better way. For example + +* [Logcat in Android Studio](https://developer.android.com/studio/debug/am-logcat) +* [Log Viewer for Android Studio and IntelliJ](https://plugins.jetbrains.com/plugin/10015-log-viewer) +* [Logcat plugin for VSCode](https://marketplace.visualstudio.com/items?itemName=abhiagr.logcat) + +Here's a [screenshot](https://github.com/makingthematrix/scalaonandroid/blob/main/helloscala/helloscala.png) of what the app looks like when you open it. + +And [from here](https://drive.google.com/file/d/1SV5waXjyEYSSlo-mfj28WF34mcMFxoG7/view?usp=sharing) you can download the already compiled APK. + +## Next Steps and Other Useful Reading + +If you managed to build one of the example apps and want to code something more complex, there are at least a few ways you can learn how to do it: + +* Take a look at these articles about the history of Scala on Android and a discussion of other ways to write Android apps: [#1](https://makingthematrix.wordpress.com/2021/03/17/scala-on-android/), [#2](https://www.scalawilliam.com/scala-android-opportunity/). + +- Read more and experiment with [JavaFX](https://openjfx.io/). You can start with its official documentation and with [this huge list of tutorials by Jacob Jenkov](http://tutorials.jenkov.com/javafx/index.html). +- Install [Scene Builder](https://gluonhq.com/products/scene-builder/) and learn how to build GUI with it. Apart from the docs, you can find a lot of tutorials about it on YouTube. +- Look through [Gluon’s documentation of Glisten and Attach](https://docs.gluonhq.com/) to learn how to make your app look better on a mobile device, and how to get access to your device’s features. +- Download an example from [Gluon’s list of samples](https://docs.gluonhq.com/) and rewrite it to Scala. And when you do, let me know! +- Look into [ScalaFX](http://www.scalafx.org/) — a more declarative, Scala-idiomatic wrapper over JavaFX. +- Download some of the other examples from [the “Scala on Android” repository on GitHub](https://github.com/makingthematrix/scalaonandroid). Contact me, if you write an example app of your own and want me to include it. +- Join us on the official Scala discord — we have a [#scala-android channel](https://discord.gg/UuDawpq7) there. +- There is also an [#android channel](https://discord.gg/XHMt6Yq4) on the “Learning Scala” discord. +- Finally, if you have any questions, [you can always find me on Twitter](https://twitter.com/makingthematrix). + From e58884bc65f62b2e2788605a62aadf9b377017d4 Mon Sep 17 00:00:00 2001 From: Martin Jaime Date: Wed, 18 Aug 2021 15:31:34 -0700 Subject: [PATCH 0196/1704] Clearer grammar when talking about type variance --- _tour/variances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_tour/variances.md b/_tour/variances.md index 1e6b83c73b..bb685dcd96 100644 --- a/_tour/variances.md +++ b/_tour/variances.md @@ -32,7 +32,7 @@ case class Cat(name: String) extends Animal case class Dog(name: String) extends Animal ``` -Both `Cat` and `Dog` are subtypes of `Animal`. The Scala standard library has a generic immutable `sealed abstract class List[+A]` class, where the type parameter `A` is covariant. This means that a `List[Cat]` is a `List[Animal]` and a `List[Dog]` is also a `List[Animal]`. Intuitively, it makes sense that a list of cats and a list of dogs are each lists of animals, and you should be able to use either of them for in place of `List[Animal]`. +Both `Cat` and `Dog` are subtypes of `Animal`. The Scala standard library has a generic immutable `sealed abstract class List[+A]` class, where the type parameter `A` is covariant. This means that a `List[Cat]` is a `List[Animal]`. A `List[Dog]` is also a `List[Animal]`. Intuitively, it makes sense that a list of cats and a list of dogs are each lists of animals, and you should be able to use either of them for in place of `List[Animal]`. In the following example, the method `printAnimalNames` will accept a list of animals as an argument and print their names each on a new line. If `List[A]` were not covariant, the last two method calls would not compile, which would severely limit the usefulness of the `printAnimalNames` method. From 1900e6d10ebf2422e16097aaa3660d0bbf393dba Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Thu, 19 Aug 2021 09:56:45 +0200 Subject: [PATCH 0197/1704] Update dotty docs --- _overviews/scala3-scaladoc/settings.md | 48 +++++++- _overviews/scala3-scaladoc/static-site.md | 103 +++++++++++++----- .../contextual/context-bounds.md | 2 +- .../contextual/extension-methods.md | 4 +- .../dropped-features/delayed-init.md | 2 +- _scala3-reference/syntax.md | 10 +- 6 files changed, 130 insertions(+), 39 deletions(-) diff --git a/_overviews/scala3-scaladoc/settings.md b/_overviews/scala3-scaladoc/settings.md index 03fa538159..16a0e879a2 100644 --- a/_overviews/scala3-scaladoc/settings.md +++ b/_overviews/scala3-scaladoc/settings.md @@ -15,8 +15,12 @@ If you want to know what is current state of compatibility with scaladoc old fla ## Providing settings -Supply scaladoc settings as command-line arguments, e.g., `scaladoc -d output -project my-project target/scala-3.0.0-RC2/classes`. If called from sbt, -update the value of `Compile / doc / scalacOptions`, e. g. `Compile / doc / scalacOptions ++= Seq("-d", "output", "-project", "my-project")` +Supply scaladoc settings as command-line arguments, e.g., `scaladoc -d output -project my-project target/scala-3.0.0-RC2/classes`. If called from sbt, update the value of `Compile / doc / scalacOptions` and `Compile / doc / target` respectively, e. g. + +``` +Compile / doc / target ++= Seq("-d", "output") +Compile / doc / scalacOptions ++= Seq("-project", "my-project") +``` ## Overview of all available settings @@ -120,6 +124,10 @@ A base URL to use as prefix and add `canonical` URLs to all pages. The canonical A directory containing static files from which to generate documentation. Default directory is `./docs` +##### -no-link-warnings + +Suppress warnings for ambiguous or incorrect links in members’ lookup. Doesn't affect warnings for incorrect links of assets etc. + ##### -versions-dictionary-url A URL pointing to a JSON document containing a dictionary: `version label -> documentation location`. @@ -136,3 +144,39 @@ Example JSON file: } ``` +##### -snippet-compiler + +Snippet compiler arguments provide a way to configure snippet type checking. + +This setting accepts a list of arguments in the format: +args := arg{,arg} +arg := [path=]flag +where `path` is a prefix of the path to source files where snippets are located and `flag` is the mode in which snippets will be type checked. + +If the path is not present, the argument will be used as the default for all unmatched paths. + +Available flags: +compile - Enables snippet checking. +nocompile - Disables snippet checking. +fail - Enables snippet checking, asserts that snippet doesn't compile. + +The fail flag comes in handy for snippets that present that some action would eventually fail during compilation, e. g. [Opaques page]({% link _scala3-reference/other-new-features/opaques.md %}) + +Example usage: + +`-snippet-compiler:my/path/nc=nocompile,my/path/f=fail,compile` + +Which means: + +all snippets in files under directory `my/path/nc` should not be compiled at all +all snippets in files under directory `my/path/f` should fail during compilation +all other snippets should compile successfully + +##### -Ysnippet-compiler-debug + +Setting this option makes snippet compiler print the snippet as it is compiled (after wrapping). + +##### -Ydocument-synthetic-types + +Include pages providing documentation for the intrinsic types (e. g. Any, Nothing) to the docs. The setting is useful only for stdlib because scaladoc for Scala 3 relies on TASTy files, but we cannot provide them for intrinsic types since they are embedded in the compiler. +All other users should not concern with this setting. diff --git a/_overviews/scala3-scaladoc/static-site.md b/_overviews/scala3-scaladoc/static-site.md index 36a3bc11d2..e7516ea09c 100644 --- a/_overviews/scala3-scaladoc/static-site.md +++ b/_overviews/scala3-scaladoc/static-site.md @@ -7,11 +7,11 @@ previous-page: linking next-page: blog --- -Scaladoc is able to generate static sites, known from [Jekyll](http://jekyllrb.com/) or [Docusaurus](https://docusaurus.io/). -Having a combined tool allows to provide interaction between static documentation and API, thus allowing the two to blend naturally. +Scaladoc can generate static sites, known from [Jekyll](http://jekyllrb.com/) or [Docusaurus](https://docusaurus.io/). +Having a combined tool allows providing interaction between static documentation and API, thus allowing the two to blend naturally. Creating a site is just as simple as in Jekyll. The site root contains the -layout of the site and all files placed there will be either considered static, +the layout of the site and all files placed there will be either considered static, or processed for template expansion. The files that are considered for template expansion must end in `*.{html,md}` @@ -32,26 +32,34 @@ index.html docs/getting-started.html ``` -Scaladoc can transform both files and directories (to organize your documentation into tree-like structure). By default directories has title based on file name and has empty content. There is an option to include `index.html` or `index.md` (not both) to provide both content and properties like title (see [Properties](#properties)). +Scaladoc can transform both files and directories (to organize your documentation into a tree-like structure). By default, directories have a title based on the file name and have empty content. It is possible to provide index pages for each section by creating `index.html` or `index.md` (not both) in the dedicated directory. ## Properties Scaladoc uses the [Liquid](https://shopify.github.io/liquid/) templating engine -and provides a number of custom filters and tags specific to Scala +and provides several custom filters and tags specific to Scala documentation. In Scaladoc, all templates can contain YAML front-matter. The front-matter is parsed and put into the `page` variable available in templates via Liquid. -Scaladoc uses some predefined properties to controls some aspect of page. +Example front-matter + +``` +--- +title: My custom title +--- +``` + +Scaladoc uses some predefined properties to controls some aspects of page. Predefined properties: - - **title** provide page title that will be used in navigation and html metadata. - - **extraCss** additional `.css` files that will be included in this page. Paths should be relative to documentation root. **This setting is not exported to template engine.** - - **extraJs** additional `.js` files that will be included in this page. Paths should be relative to documentation root. **This setting is not exported to template engine.** - - **hasFrame** when set to `false` page will not include default layout (navigation, breadcrumbs etc.) but only token html wrapper to provide metadata and resources (js and css files). **This setting is not exported to template engine.** -- **layout** - predefined layout to use, see below. **This setting is not exported to template engine.** +- **title** provide page title that will be used in navigation and HTML metadata. +- **extraCss** additional `.css` files that will be included in this page. Paths should be relative to the documentation root. **This setting is not exported to the template engine.** +- **extraJs** additional `.js` files that will be included in this page. Paths should be relative to the documentation root. **This setting is not exported to the template engine.** +- **hasFrame** when set to `false` page will not include default layout (navigation, breadcrumbs, etc.) but only token HTML wrapper to provide metadata and resources (js and css files). **This setting is not exported to the template engine.** +- **layout** - predefined layout to use, see below. **This setting is not exported to the template engine.** ## Using existing Templates and Layouts @@ -101,24 +109,43 @@ Scaladoc by default uses layout of files in `docs` directory to create table of ```yaml sidebar: - - title: Blog - - title: Docs - url: docs/index.html - - title: Usage - subsection: - - title: Dottydoc - url: docs/usage/dottydoc.html - - title: sbt-projects - url: docs/usage/sbt-projects.html + - title: Blog + - title: My title + page: my-page1.md + - page: my-page2.md + - page: my-page3/subsection + - title: Reference + subsection: + - page: my-page3.md + - index: my-page4/index.md + subsection: + - page: my-page4/my-page4.md + - title: My subsection + index: my-page5/index.md + subsection: + - page: my-page5/my-page5.md + - index: my-page6/index.md + subsection: + - index: my-page6/my-page6/index.md + subsection: + - page: my-page6/my-page6/my-page6.md ``` -The `sidebar` key is mandatory, as well as `title` for each element. The -default table of contents allows you to have subsections - albeit the current -depth limit is 2 however it accepts both files and directories and latter can be used to provide deeper structures. +The `sidebar` key is mandatory. +On each level, you can have three different types of entries: `page`, `blog` or `subsection`. + +`page` is a leaf of the structure and accepts the following attributes: +- `title` (optional) - title of the page +- `page` (mandatory) - path to the file that will represent the page, it can be either html or markdown file to be rendered, there is also the possibility to pass the `directory` path. If so, the scaladoc will render the directory and all its content as if there were no `sidebar.yml` basing on its tree structure and index files. + +The `page` property `subsection` accepts nested nodes, these can be either pages or subsections, which allow you to create tree-like navigation. The attributes are: +- `title` (optional) - title of the page +- `index` (optional) - path to the file that will represent the index file of the subsection, it can be either html or markdown file to be rendered +- `subsection` (mandatory) - nested nodes, can be either pages or subsections + +In `subsection`s, you can omit `title` or `index`, however not specifying any of these properties prevents you from specifying the title of the section. -The items must provide either `subsection` or `url` but not both at once! -The only exception is `Blog` which is only a `title` and behaves differently. -You can read more about blog [here]({% link _overviews/scala3-scaladoc/blog.md %}). +`blog` is a special node represented by simple entry `- title: Blog` with no other attributes. All your blog posts will be automatically linked under this section. You can read more about the blog [here]({% link _overviews/scala3-scaladoc/blog.md %}). ``` ├── blog @@ -129,10 +156,29 @@ You can read more about blog [here]({% link _overviews/scala3-scaladoc/blog.md % └── sidebar.yml ``` +## Hierarchy of title + +If the title is specified multiple times, the priority is as follows (from highest to lowest priority): + +#### Page + +1. `title` from the `front-matter` of the markdown/html file +2. `title` property from the `sidebar.yml` property +3. filename + +#### Subsection + +1. `title` from the `front-matter` of the markdown/html index file +2. `title` property from the `sidebar.yml` property +3. filename + +Note that if you skip the `index` file in your tree structure or you don't specify the `title` in the frontmatter, there will be given a generic name `index`. The same applies when using `sidebar.yml` but not specifying `title` nor `index`, just a subsection. Again, a generic `index` name will appear. + + ## Static resources You can attach static resources (pdf, images) to your documentation by using two dedicated directories: -`resources` and `images`. When you upload your assests under any of these directories you can reference them in markdown +`resources` and `images`. After placing your assets under any of these directories, you can reference them in markdown as if they were relatively at the same level. For example, consider the following situation: @@ -154,5 +200,4 @@ For example, consider the following situation: You can refer to the assets from within any of the files using markdown links: ``` -This is my blogpost. Here is the image ![](my_image.png) and here is my [pdf](my_file.pdf) -``` +This is my blog post. Here is the image ![](my_image.png) and here is my [pdf](my_file.pdf)``` diff --git a/_scala3-reference/contextual/context-bounds.md b/_scala3-reference/contextual/context-bounds.md index f6f9764ce3..5c7ea5cd59 100644 --- a/_scala3-reference/contextual/context-bounds.md +++ b/_scala3-reference/contextual/context-bounds.md @@ -12,7 +12,7 @@ A context bound is a shorthand for expressing the common pattern of a context pa def maximum[T: Ord](xs: List[T]): T = xs.reduceLeft(max) ``` -A bound like `: Ord` on a type parameter `T` of a method or class indicates a context parameter `with Ord[T]`. The context parameter(s) generated from context bounds come last in the definition of the containing method or class. For instance, +A bound like `: Ord` on a type parameter `T` of a method or class indicates a context parameter `using Ord[T]`. The context parameter(s) generated from context bounds come last in the definition of the containing method or class. For instance, ```scala def f[T: C1 : C2, U: C3](x: T)(using y: U, z: V): R diff --git a/_scala3-reference/contextual/extension-methods.md b/_scala3-reference/contextual/extension-methods.md index 3fd2980d51..06364baa50 100644 --- a/_scala3-reference/contextual/extension-methods.md +++ b/_scala3-reference/contextual/extension-methods.md @@ -291,8 +291,8 @@ to the [current syntax](../syntax.html). BlockStat ::= ... | Extension TemplateStat ::= ... | Extension TopStat ::= ... | Extension -Extension ::= ‘extension’ [DefTypeParamClause] ‘(’ DefParam ‘)’ - {UsingParamClause} ExtMethods +Extension ::= ‘extension’ [DefTypeParamClause] {UsingParamClause} + ‘(’ DefParam ‘)’ {UsingParamClause} ExtMethods ExtMethods ::= ExtMethod | [nl] <<< ExtMethod {semi ExtMethod} >>> ExtMethod ::= {Annotation [nl]} {Modifier} ‘def’ DefDef ``` diff --git a/_scala3-reference/dropped-features/delayed-init.md b/_scala3-reference/dropped-features/delayed-init.md index 3621f66959..5673db5dfb 100644 --- a/_scala3-reference/dropped-features/delayed-init.md +++ b/_scala3-reference/dropped-features/delayed-init.md @@ -1,5 +1,5 @@ --- -title: "Dropped: Delayedinit" +title: "Dropped: DelayedInit" type: section num: 71 previous-page: /scala3/reference/dropped-features diff --git a/_scala3-reference/syntax.md b/_scala3-reference/syntax.md index ce1257955c..85d4670622 100644 --- a/_scala3-reference/syntax.md +++ b/_scala3-reference/syntax.md @@ -265,8 +265,10 @@ BlockStat ::= Import | Expr1 | EndMarker -ForExpr ::= ‘for’ (‘(’ Enumerators ‘)’ | ‘{’ Enumerators ‘}’) {nl} [‘yield’] Expr - | ‘for’ Enumerators (‘do’ Expr | ‘yield’ Expr) +ForExpr ::= ‘for’ ‘(’ Enumerators0 ‘)’ {nl} [‘do‘ | ‘yield’] Expr + | ‘for’ ‘{’ Enumerators0 ‘}’ {nl} [‘do‘ | ‘yield’] Expr + | ‘for’ Enumerators0 (‘do‘ | ‘yield’) Expr +Enumerators0 ::= {nl} Enumerators [semi] Enumerators ::= Generator {semi Enumerator | Guard} Enumerator ::= Generator | Guard @@ -400,8 +402,8 @@ EnumDef ::= id ClassConstr InheritClauses EnumBody GivenDef ::= [GivenSig] (AnnotType [‘=’ Expr] | StructuralInstance) GivenSig ::= [id] [DefTypeParamClause] {UsingParamClause} ‘:’ -- one of `id`, `DefParamClause`, `UsingParamClause` must be present StructuralInstance ::= ConstrApp {‘with’ ConstrApp} [‘with’ TemplateBody] -Extension ::= ‘extension’ [DefTypeParamClause] ‘(’ DefParam ‘)’ - {UsingParamClause} ExtMethods +Extension ::= ‘extension’ [DefTypeParamClause] {UsingParamClause} + ‘(’ DefParam ‘)’ {UsingParamClause} ExtMethods ExtMethods ::= ExtMethod | [nl] <<< ExtMethod {semi ExtMethod} >>> ExtMethod ::= {Annotation [nl]} {Modifier} ‘def’ DefDef Template ::= InheritClauses [TemplateBody] From b24a174922259390f6d1e42a4a1c9804bbe875da Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak <32793002+BarkingBad@users.noreply.github.com> Date: Thu, 19 Aug 2021 19:10:25 +0200 Subject: [PATCH 0198/1704] Update settings.md --- _overviews/scala3-scaladoc/settings.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_overviews/scala3-scaladoc/settings.md b/_overviews/scala3-scaladoc/settings.md index 16a0e879a2..23295989a1 100644 --- a/_overviews/scala3-scaladoc/settings.md +++ b/_overviews/scala3-scaladoc/settings.md @@ -18,8 +18,8 @@ If you want to know what is current state of compatibility with scaladoc old fla Supply scaladoc settings as command-line arguments, e.g., `scaladoc -d output -project my-project target/scala-3.0.0-RC2/classes`. If called from sbt, update the value of `Compile / doc / scalacOptions` and `Compile / doc / target` respectively, e. g. ``` -Compile / doc / target ++= Seq("-d", "output") -Compile / doc / scalacOptions ++= Seq("-project", "my-project") +Compile / doc / target := file("output"), +Compile / doc / scalacOptions ++= Seq("-project", "my-project"), ``` ## Overview of all available settings @@ -149,7 +149,7 @@ Example JSON file: Snippet compiler arguments provide a way to configure snippet type checking. This setting accepts a list of arguments in the format: -args := arg{,arg} +args := arg{,args} arg := [path=]flag where `path` is a prefix of the path to source files where snippets are located and `flag` is the mode in which snippets will be type checked. From 72003cd75b8210371b135d91c9e9cdaaab10c684 Mon Sep 17 00:00:00 2001 From: Linda_pp Date: Sun, 22 Aug 2021 04:58:23 +0900 Subject: [PATCH 0199/1704] Fix deprecation warning in scala-for-java-programmers.md --- _overviews/tutorials/scala-for-java-programmers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/tutorials/scala-for-java-programmers.md b/_overviews/tutorials/scala-for-java-programmers.md index 8cceca1bba..52c988066e 100644 --- a/_overviews/tutorials/scala-for-java-programmers.md +++ b/_overviews/tutorials/scala-for-java-programmers.md @@ -675,7 +675,7 @@ empty or point to an object of some type. class Reference[T] { private var contents: T = _ - def set(value: T) { contents = value } + def set(value: T): Unit = { contents = value } def get: T = contents } From 2a045e8b0934db0e4b0ac6f4da66f0c3d4766107 Mon Sep 17 00:00:00 2001 From: Dmitrii Naumenko Date: Mon, 23 Aug 2021 11:16:55 +0300 Subject: [PATCH 0200/1704] update export.md: duplicate changes from dotty repo duplicate of https://github.com/lampepfl/dotty/pull/13327 https://github.com/lampepfl/dotty/pull/13339 --- _scala3-reference/other-new-features/export.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/_scala3-reference/other-new-features/export.md b/_scala3-reference/other-new-features/export.md index e5b8c47a36..49a190c4c9 100644 --- a/_scala3-reference/other-new-features/export.md +++ b/_scala3-reference/other-new-features/export.md @@ -63,6 +63,10 @@ of one of the following forms: - A _given selector_ `given x` has an optional type bound `x`. It creates aliases for all eligible given instances that conform to either `x`, or `Any` if `x` is omitted, except for members that are named by a previous simple, renaming, or omitting selector. - A _wildcard selector_ `*` creates aliases for all eligible members of `path` except for given instances, synthetic members generated by the compiler and those members that are named by a previous simple, renaming, or omitting selector. + \ + Notes: + - eligible construtor proxies are also included, even though they are synthetic members. + - members created by an export are also included. They are created by the compiler, but are not considered synthetic. A member is _eligible_ if all of the following holds: @@ -76,7 +80,7 @@ A member is _eligible_ if all of the following holds: It is a compile-time error if a simple or renaming selector does not identify any eligible members. Type members are aliased by type definitions, and term members are aliased by method definitions. Export aliases copy the type and value parameters of the members they refer to. -Export aliases are always `final`. Aliases of given instances are again defined as givens (and aliases of old-style implicits are `implicit`). Aliases of inline methods or values are again defined `inline`. There are no other modifiers that can be given to an alias. This has the following consequences for overriding: +Export aliases are always `final`. Aliases of given instances are again defined as givens (and aliases of old-style implicits are `implicit`). Aliases of extensions are again defined as extensions. Aliases of inline methods or values are again defined `inline`. There are no other modifiers that can be given to an alias. This has the following consequences for overriding: - Export aliases cannot be overridden, since they are final. - Export aliases cannot override concrete members in base classes, since they are From d99b052db991dbd41bf4632c3aaf61c590706956 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 25 Aug 2021 15:54:08 +0200 Subject: [PATCH 0201/1704] =?UTF-8?q?Add=20link=20to=20=E2=80=9CLet?= =?UTF-8?q?=E2=80=99s=20talk=20about=20Scala=203=E2=80=9D=20playlist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scala3/talks.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/scala3/talks.md b/scala3/talks.md index 1792d78366..a26eb4034a 100644 --- a/scala3/talks.md +++ b/scala3/talks.md @@ -3,8 +3,15 @@ layout: singlepage-overview title: Talks --- -Talks on Dotty --------------- +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) [\[slides\]](https://www.slideshare.net/Odersky/a-tour-of-scala-3) - (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) @@ -17,8 +24,8 @@ Talks on Dotty become familiar with many core concepts such as `Denotations`, their evolution through (compilation) time, their transformations and more. -Deep Dive with Dotty --------------------- +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/). From d1be7c2bf326c8f0791d742633f8f1b807866a1a Mon Sep 17 00:00:00 2001 From: danecek Date: Sun, 29 Aug 2021 10:39:41 +0200 Subject: [PATCH 0202/1704] Update soft-modifier.md Add missing 'as' in the list of soft keywords --- _scala3-reference/soft-modifier.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/soft-modifier.md b/_scala3-reference/soft-modifier.md index 60d16e7738..23ac18640c 100644 --- a/_scala3-reference/soft-modifier.md +++ b/_scala3-reference/soft-modifier.md @@ -6,7 +6,7 @@ title: Soft Keywords A soft modifier is one of the identifiers `opaque`, `inline`, `open`, `transparent`, and `infix`. -A soft keyword is a soft modifier, or one of `derives`, `end`, `extension`, `using`, `|`, `+`, `-`, `*` +A soft keyword is a soft modifier, or one of `as`, `derives`, `end`, `extension`, `using`, `|`, `+`, `-`, `*` A soft modifier is treated as potential modifier of a definition if it is followed by a hard modifier or a keyword combination starting a definition (`def`, `val`, `var`, `type`, `given`, `class`, `trait`, `object`, `enum`, `case class`, `case object`). Between the two words there may be a sequence of newline tokens and soft modifiers. From a2f2639b85e69709f40217edeebbf386115bfcb3 Mon Sep 17 00:00:00 2001 From: Henry Story Date: Sun, 29 Aug 2021 13:42:49 +0200 Subject: [PATCH 0203/1704] Update matchable.md The type has to of the method has to be specified or else the return types will just be a Double in both cases and the tests will pass. Strict Equality has to be set for the compiler to fail. --- _scala3-reference/other-new-features/matchable.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/_scala3-reference/other-new-features/matchable.md b/_scala3-reference/other-new-features/matchable.md index 12b33e63f1..1b2996f662 100644 --- a/_scala3-reference/other-new-features/matchable.md +++ b/_scala3-reference/other-new-features/matchable.md @@ -122,10 +122,10 @@ For instance, consider the definitions ```scala opaque type Meter = Double -def Meter(x: Double) = x +def Meter(x: Double): Meter = x opaque type Second = Double -def Second(x: Double) = x +def Second(x: Double): Second = x ``` Here, universal `equals` will return true for @@ -137,6 +137,7 @@ Here, universal `equals` will return true for even though this is clearly false mathematically. With [multiversal equality](../contextual/multiversal-equality.html) one can mitigate that problem somewhat by turning ```scala + import scala.language.strictEquality Meter(10) == Second(10) ``` From b8117aacf7a8445bc05b3880ea9f00564f910256 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Mon, 30 Aug 2021 15:29:27 +0200 Subject: [PATCH 0204/1704] Update link to Coursera certificates, and whitelist 403 status codes in htmlproofer --- .github/workflows/build.yml | 2 +- learn.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4d258f897..77f6cdc359 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ jobs: # # Checking for docs.scala-lang/blob/main leads to a chicken and egg problem because of the edit links of new pages. bundle exec htmlproofer ./_site/\ --only-4xx\ - --http-status-ignore "400,401,429"\ + --http-status-ignore "400,401,403,429"\ --empty-alt-ignore\ --allow-hash-href\ --url-ignore '/https://github.com/scala/docs.scala-lang/blob/main/.*/,/www.oracle.com/' diff --git a/learn.md b/learn.md index e692e44287..af22827c96 100644 --- a/learn.md +++ b/learn.md @@ -19,7 +19,7 @@ four courses and a capstone project. All the courses are available for free. Optionally, a subscription gives you access to a certificate of completion that attests your accomplishments. Learn more about -[Coursera certificates](https://learner.coursera.help/hc/en-us/articles/209819053-Get-a-Course-Certificate) or +[Coursera certificates](https://learners.coursera.help/hc/en-us/articles/209819053-Get-a-Course-Certificate) or [edX certificates](https://support.edx.org/hc/en-us/categories/115002269627-Certificates). ### Effective Programming in Scala From cd4abf4750c29a9c609195aff8ef43ef849ea477 Mon Sep 17 00:00:00 2001 From: Ilya Surkov Date: Tue, 31 Aug 2021 18:41:08 +0300 Subject: [PATCH 0205/1704] Fixed code example for derivation with shapeless 3 --- _scala3-reference/contextual/derivation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/contextual/derivation.md b/_scala3-reference/contextual/derivation.md index d7ec09c370..8039cfdc1a 100644 --- a/_scala3-reference/contextual/derivation.md +++ b/_scala3-reference/contextual/derivation.md @@ -332,7 +332,7 @@ given eqProduct[A](using inst: K0.ProductInstances[Eq, A]): Eq[A] with ) inline def derived[A](using gen: K0.Generic[A]): Eq[A] = - gen.derive(eqSum, eqProduct) + gen.derive(eqProduct, eqSum) ``` The framework described here enables all three of these approaches without mandating any of them. From 6d56e7c82e1ad73901490a71733cc1e70e45b2ad Mon Sep 17 00:00:00 2001 From: Cyril Dangerville <1372580+cdanger@users.noreply.github.com> Date: Wed, 1 Sep 2021 00:21:00 +0200 Subject: [PATCH 0206/1704] Fixed typos in "Dependent Function Types" --- _overviews/scala3-book/types-dependent-function.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_overviews/scala3-book/types-dependent-function.md b/_overviews/scala3-book/types-dependent-function.md index 6cc8e09a29..e70ed26045 100644 --- a/_overviews/scala3-book/types-dependent-function.md +++ b/_overviews/scala3-book/types-dependent-function.md @@ -69,7 +69,7 @@ type DB = (k: Key) => Option[k.Value] ``` Given this definition of `DB` the above call to `user` type checks, as is. -You can read more about the interals of dependent function types in the [reference documentation][ref]. +You can read more about the internals of dependent function types in the [reference documentation][ref]. ## Case Study: Numerical Expressions Let us assume we want to define a module that abstracts over the internal represention of numbers. @@ -119,7 +119,7 @@ derivative(new Prog { #### Combination with Context Functions The combination of extension methods, [context functions][ctx-fun], and dependent functions provides a powerful tool for library designers. -For instance, we can refine our library from above as follows +For instance, we can refine our library from above as follows: ```scala trait NumsDSL extends Nums: extension (x: Num) From 027a863c63224a58a6821277470001cec15b0892 Mon Sep 17 00:00:00 2001 From: Hussein Taher <6496177+Husenap@users.noreply.github.com> Date: Sat, 4 Sep 2021 16:49:28 +0200 Subject: [PATCH 0207/1704] Fix small typo --- _overviews/scala3-book/taste-vars-data-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/taste-vars-data-types.md b/_overviews/scala3-book/taste-vars-data-types.md index b90e73cace..36b7445a52 100644 --- a/_overviews/scala3-book/taste-vars-data-types.md +++ b/_overviews/scala3-book/taste-vars-data-types.md @@ -186,7 +186,7 @@ println(s"x.abs = ${x.abs}") // prints "x.abs = 1" The `s` that you place before the string is just one possible interpolator. If you use an `f` instead of an `s`, you can use `printf`-style formatting syntax in the string. -Furthermore, a string interpolator is a just special method and it is possible to define your own. +Furthermore, a string interpolator is just a special method and it is possible to define your own. For instance, some database libraries define the very powerful `sql` interpolator. #### Multiline strings From edb5f5927eb0057fd37911d00dcddc61ef5a44f2 Mon Sep 17 00:00:00 2001 From: Alvin Alexander Date: Wed, 8 Sep 2021 16:10:49 -0600 Subject: [PATCH 0208/1704] Added a numbered/recipe style --- _overviews/scala3-book/tools-sbt.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/_overviews/scala3-book/tools-sbt.md b/_overviews/scala3-book/tools-sbt.md index e5dd291293..29aaa9d731 100644 --- a/_overviews/scala3-book/tools-sbt.md +++ b/_overviews/scala3-book/tools-sbt.md @@ -338,10 +338,11 @@ See Coursier’s [launch page](https://get-coursier.io/docs/cli-launch) for more ## Using sbt with ScalaTest -[ScalaTest](https://www.scalatest.org) is one of the main testing libraries for Scala projects, and in this section you’ll see how to create a Scala/sbt project that uses ScalaTest. +[ScalaTest](https://www.scalatest.org) is one of the main testing libraries for Scala projects. +In this section you’ll see the steps necessary to create a Scala/sbt project that uses ScalaTest. -### Creating the project directory structure +### 1) Create the project directory structure As with the previous lesson, create an sbt project directory structure for a project named _HelloScalaTest_ with the following commands: @@ -353,7 +354,7 @@ $ mkdir project ``` -### Creating the build.properties and build.sbt files +### 2) Create the build.properties and build.sbt files Next, create a _build.properties_ file in the _project/_ subdirectory of your project with this line: @@ -380,7 +381,7 @@ The `libraryDependencies` lines tell sbt to include the dependencies (JAR files) > The ScalaTest documentation has always been good, and you can always find the up to date information on what those lines should look like on the [Installing ScalaTest](https://www.scalatest.org/install) page. -### Create a Scala source code file +### 3) Create a Scala source code file Next, create a Scala program that you can use to demonstrate ScalaTest. First, create a directory under _src/main/scala_ named _math_: @@ -420,7 +421,7 @@ With that compiled, let’s create a ScalaTest file to test the `double` method. {% endcomment %} -### Your first ScalaTest tests +### 4) Create your first ScalaTest tests ScalaTest is very flexible, and offers several different ways to write tests. A simple way to get started is to write tests using the ScalaTest `AnyFunSuite`. From a6184ebb65c310f27ccb8be4a4c154494f4e06fe Mon Sep 17 00:00:00 2001 From: Julian Mendez Date: Tue, 14 Sep 2021 20:31:27 +0200 Subject: [PATCH 0209/1704] Fix typo in syntax.md (#2179) The lower type bound symbol was ':>' instead of '>:' --- _scala3-reference/syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/syntax.md b/_scala3-reference/syntax.md index 85d4670622..74d5537674 100644 --- a/_scala3-reference/syntax.md +++ b/_scala3-reference/syntax.md @@ -116,7 +116,7 @@ given if implicit import lazy match new null object override package private protected return sealed super then throw trait true try type val var while with yield -: = <- => <: :> # +: = <- => <: >: # @ =>> ?=> ``` From 21b8d56be3d211dd3a8760e137a54dfd241186d6 Mon Sep 17 00:00:00 2001 From: danecek Date: Tue, 14 Sep 2021 22:30:44 +0200 Subject: [PATCH 0210/1704] Update union-types.md // script.scala type Hash=Int case class UserName(name: String) case class Password(hash: Hash) val password = Password(123) val name = UserName("Eve") if true then name else password val either: Password | UserName = if true then name else password scala> :load script.scala // defined alias type Hash = Int // defined case class UserName // defined case class Password val password: Password = Password(123) val name: UserName = UserName(Eve) val res0: Object = UserName(Eve) val either: Password | UserName = UserName(Eve) --- _scala3-reference/new-types/union-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/new-types/union-types.md b/_scala3-reference/new-types/union-types.md index 7b2922fe34..0d3df4645d 100644 --- a/_scala3-reference/new-types/union-types.md +++ b/_scala3-reference/new-types/union-types.md @@ -34,7 +34,7 @@ scala> val name = UserName("Eve") val name: UserName = UserName(Eve) scala> if true then name else password -val res2: Object & Product = UserName(Eve) +val res2: Object = UserName(Eve) scala> val either: Password | UserName = if true then name else password val either: Password | UserName = UserName(Eve) From 16fda3bad7879d2169e2f0cc86d3bccae5e33e3a Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 14 Sep 2021 14:18:14 -0700 Subject: [PATCH 0211/1704] Scala 2.12.15 (and JDK 17) (#2181) --- _config.yml | 2 +- _overviews/jdk-compatibility/overview.md | 25 ++++++++---------------- api/all.md | 22 ++++++++++++++------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/_config.yml b/_config.yml index fa2723f7df..1c559d1ec7 100644 --- a/_config.yml +++ b/_config.yml @@ -16,7 +16,7 @@ keywords: - Guide scala-version: 2.13.6 -scala-212-version: 2.12.14 +scala-212-version: 2.12.15 scala-3-version: 3.0.0 scala-3-plugin-version: 0.5.1 diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 5bbdea4e87..325912be69 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -12,9 +12,8 @@ Sometimes new JVM and JDK (Java Development Kit) versions require us to update S | JDK version | Minimum Scala versions | Recommended Scala versions | |:-----------:|:---------------------------------|:-----------------------------------------------------------| -| 18 | 2.13.7 (forthcoming), 2.12.15 (forthcoming) | 2.13.7 (forthcoming), 2.12.15 (forthcoming) | -| 17 | 2.13.6, 2.12.15 (forthcoming) | 2.13.6, 2.12.15 (forthcoming) | -| 16 | 2.13.5, 2.12.14 | 2.13.6, 2.12.14 | +| 18 | 2.13.7 (forthcoming), 2.12.15 | 2.13.7 (forthcoming), 2.12.15 | +| 17 | 2.13.6, 2.12.15 | 2.13.6, 2.12.15 | | 11 | 2.13.0, 2.12.4, 2.11.12 | 2.13.6, 2.12.14, 2.11.12 | | 8 | 2.13.0, 2.12.0, 2.11.0, 2.10.2 | 2.13.6, 2.12.14, 2.11.12, 2.10.7 | | 6, 7 | 2.11.0, 2.10.0 | 2.11.12, 2.10.7 | @@ -37,7 +36,7 @@ Additionally, you can also run your scala application on GraalVM which is a JVM. After Java 8, Oracle introduced the concept of LTS versions of the JDK. These versions will remain supported (by Oracle, and likely by the rest of the ecosystem, including Scala) for longer than the versions in between. See . -JDK 8 and 11 are LTS versions. The next LTS version will be JDK 17, planned for September 2021. +JDK 8, 11, and 17 are LTS versions. Scala provides experimental support for running the Scala compiler on non-LTS versions of the JDK. The current LTS versions are normally tested in our CI matrix and by the Scala community build. We may also test non-LTS versions, but any issues found there are considered lower priority, and will not be considered release blockers. (Lightbend may be able to offer faster resolution of issues like this under commercial support.) @@ -66,29 +65,21 @@ To track progress on JDK 11 related issues, watch: * the ["Support JDK 11"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue * the [jdk11 label](https://github.com/scala/bug/labels/jdk11) in scala/bug -## JDK 16 compatibility notes - -JDK 16 was released in March 2021. It is not an LTS release, so the remarks above about non-LTS releases apply. The next LTS release will be JDK 17. - -JDK 16 is expected to work wherever JDK 17 does, and in most cases wherever JDK 11 does. See the [jdk11](https://github.com/scala/bug/labels/jdk11) and [jdk17](https://github.com/scala/bug/labels/jdk17) labels in the Scala 2 bug tracker. - -The Scala build and test suite pass on JDK 16, and so does the Scala community build. We shipped improved JDK 16 support in [Scala 2.13.5](https://github.com/scala/scala/releases/tag/v2.13.5) and [2.12.14](https://github.com/scala/scala/releases/tag/v2.12.14). - ## JDK 17 compatibility notes -JDK 17 will be an LTS release. +JDK 17 is an LTS release. -JDK 17 prereleases are already available. Since June 2021, the feature set is frozen. The final release is [targeted](https://openjdk.java.net/projects/jdk/17/) for September 2021. +Scala 2.13.6 and 2.12.15 support JDK 17. The Scala test suite and Scala community build are green on JDK 17. -Scala 2.13.6 already supports JDK 17. Scala 2.12.14 mostly works as well, but there is a known issue with lambda deserialiation; a fix will ship in Scala 2.12.15 (see [release timing thread](https://contributors.scala-lang.org/t/scala-2-12-15-planning/5152)). +For possible issues, see the [jdk11](https://github.com/scala/bug/labels/jdk11) and [jdk17](https://github.com/scala/bug/labels/jdk17) labels in the Scala 2 bug tracker. ## JDK 18 compatibility notes Early access builds of JDK 18, a non-LTS release, are already available. -We will ship basic JDK 18 support in Scala 2.13.7 and 2.12.15. (The needed fixes are already available in nightly builds of 2.13 and 2.12.) +We will ship basic JDK 18 support in Scala 2.13.7 (and the same support has already shipped in 2.12.15). The needed fixes are already available in nightly builds of 2.13. ## GraalVM Native Image compatibility notes @@ -102,6 +93,6 @@ A few sbt plugins are offering support for GraalVM Native Image compilation: ## Scala 3 -The Scala 3.x series supports JDK 8, as well as 11 and beyond. +>The Scala 3.x series supports JDK 8, as well as 11 and beyond. As Scala and the JVM continue to evolve, some eventual Scala version may drop support for JDK 8, in order to better take advantage of new JVM features. It isn't clear yet what the new minimum supported version might become. diff --git a/api/all.md b/api/all.md index a1f8ed297b..0d7023b578 100644 --- a/api/all.md +++ b/api/all.md @@ -10,14 +10,14 @@ includeTOC: true * [Library API](https://www.scala-lang.org/api/2.13.6/) * [Compiler API](https://www.scala-lang.org/api/2.13.6/scala-compiler/scala/) * [Reflection API](https://www.scala-lang.org/api/2.13.6/scala-reflect/scala/reflect/) -* Scala 2.12.14 - * [Library API](https://www.scala-lang.org/api/2.12.14/) - * [Compiler API](https://www.scala-lang.org/api/2.12.14/scala-compiler/scala/) - * [Reflection API](https://www.scala-lang.org/api/2.12.14/scala-reflect/scala/reflect/) +* Scala 2.12.15 + * [Library API](https://www.scala-lang.org/api/2.12.15/) + * [Compiler API](https://www.scala-lang.org/api/2.12.15/scala-compiler/scala/) + * [Reflection API](https://www.scala-lang.org/api/2.12.15/scala-reflect/scala/reflect/) * Scala Modules - * [XML API](https://www.scala-lang.org/api/2.12.14/scala-xml/scala/xml/) - * [Parser Combinators API](https://www.scala-lang.org/api/2.12.14/scala-parser-combinators/scala/util/parsing/) - * [Swing API](https://www.scala-lang.org/api/2.12.14/scala-swing/scala/swing/) + * [XML API](https://www.scala-lang.org/api/2.12.15/scala-xml/scala/xml/) + * [Parser Combinators API](https://www.scala-lang.org/api/2.12.15/scala-parser-combinators/scala/util/parsing/) + * [Swing API](https://www.scala-lang.org/api/2.12.15/scala-swing/scala/swing/) * Scala 2.11.12 * [Library API](https://www.scala-lang.org/api/2.11.12/) * [Compiler API](https://www.scala-lang.org/api/2.11.12/scala-compiler/) @@ -82,6 +82,14 @@ https://scala-ci.typesafe.com/artifactory/scala-integration/org/scala-lang/ * [Library API](https://www.scala-lang.org/api/2.13.0/) * [Compiler API](https://www.scala-lang.org/api/2.13.0/scala-compiler/scala/) * [Reflection API](https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/) +* Scala 2.12.14 + * [Library API](https://www.scala-lang.org/api/2.12.14/) + * [Compiler API](https://www.scala-lang.org/api/2.12.14/scala-compiler/scala/) + * [Reflection API](https://www.scala-lang.org/api/2.12.14/scala-reflect/scala/reflect/) + * Scala Modules + * [XML API](https://www.scala-lang.org/api/2.12.14/scala-xml/scala/xml/) + * [Parser Combinators API](https://www.scala-lang.org/api/2.12.14/scala-parser-combinators/scala/util/parsing/) + * [Swing API](https://www.scala-lang.org/api/2.12.14/scala-swing/scala/swing/) * Scala 2.12.13 * [Library API](https://www.scala-lang.org/api/2.12.13/) * [Compiler API](https://www.scala-lang.org/api/2.12.13/scala-compiler/scala/) From 0356a59371f41abca982c6059e80c40466429ba3 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 15 Sep 2021 08:12:44 -0700 Subject: [PATCH 0212/1704] update Scala 3 version to 3.0.2 (#2182) --- _config.yml | 2 +- _sips/sips/2017-02-22-comonadic-comprehensions.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 1c559d1ec7..cf24669011 100644 --- a/_config.yml +++ b/_config.yml @@ -17,7 +17,7 @@ keywords: scala-version: 2.13.6 scala-212-version: 2.12.15 -scala-3-version: 3.0.0 +scala-3-version: 3.0.2 scala-3-plugin-version: 0.5.1 collections: diff --git a/_sips/sips/2017-02-22-comonadic-comprehensions.md b/_sips/sips/2017-02-22-comonadic-comprehensions.md index 92db697c41..3e29121f79 100644 --- a/_sips/sips/2017-02-22-comonadic-comprehensions.md +++ b/_sips/sips/2017-02-22-comonadic-comprehensions.md @@ -218,6 +218,6 @@ don't feel at ease with). 2. [Implementation Pull-Request][2] 3. [StreamZipper Example][3] -[1]: https://www.cl.cam.ac.uk/~dao29/publ/codo-notation-orchard-ifl12.pdf "codo-notation" +[1]: https://www.cs.kent.ac.uk/people/staff/dao7/publ/codo-notation-orchard-ifl12.pdf "codo-notation" [2]: https://github.com/scala/scala/pull/5725 [3]: https://github.com/shimib/scala/blob/5e257cd4b371769deafba2be1ae3932d772ca67d/test/files/neg/cofor.scala From 6de9262a1070869c1fe1c63e1e91433e0f68c590 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 16 Sep 2021 17:57:32 +0200 Subject: [PATCH 0213/1704] stub out Scala 3 guide --- _config.yml | 10 + _data/scala3-doc-nav-header.yml | 4 + _ja/scala3/contribute-to-docs.md | 9 +- _ja/scala3/new-in-scala3.md | 4 +- .../scala3-contribution/contribution-intro.md | 10 + .../scala3-contribution/scala-features.md | 492 ++++++++++++++++++ index.md | 4 + scala3/contribute-to-docs.md | 7 + scala3/guides.md | 5 + scala3/index.md | 4 + scala3/new-in-scala3.md | 2 + 11 files changed, 548 insertions(+), 3 deletions(-) create mode 100644 _overviews/scala3-contribution/contribution-intro.md create mode 100644 _overviews/scala3-contribution/scala-features.md diff --git a/_config.yml b/_config.yml index cf24669011..f21616ea6a 100644 --- a/_config.yml +++ b/_config.yml @@ -116,6 +116,16 @@ defaults: overview-name: "Scala 3 Migration Guide" layout: multipage-overview permalink: "/scala3/guides/migration/:title.html" + - + scope: + path: "_overviews/scala3-contribution" + values: + scala3: true + partof: scala3-contribution + type: section + overview-name: "Guide to Scala 3 Compiler Contribution" + layout: multipage-overview + permalink: "/scala3/guides/contribution/:title.html" - scope: path: "_overviews/scala3-macros" diff --git a/_data/scala3-doc-nav-header.yml b/_data/scala3-doc-nav-header.yml index cc6fc6fd6b..2054baca9c 100644 --- a/_data/scala3-doc-nav-header.yml +++ b/_data/scala3-doc-nav-header.yml @@ -7,6 +7,8 @@ url: "/scala3/getting-started.html" - title: Scala 3 Book url: "/scala3/book/introduction.html" + - title: Contributing Guide + url: "/scala3/guides/contribution/contribution-intro.html" - title: Macro Tutorial url: "/scala3/guides/macros/index.html" - title: Migrate @@ -15,3 +17,5 @@ url: "/scala3/reference/overview.html" - title: API url: "https://scala-lang.org/api/3.x/" +- title: Contributing Guide + url: "/scala3/guides/contribution/contribution-intro.html" diff --git a/_ja/scala3/contribute-to-docs.md b/_ja/scala3/contribute-to-docs.md index 063941db1f..2902ff1d2a 100644 --- a/_ja/scala3/contribute-to-docs.md +++ b/_ja/scala3/contribute-to-docs.md @@ -34,7 +34,7 @@ Scala 3 の高品質なドキュメンテーションを作るためのいくつ - [Issues](https://github.com/scala/docs.scala-lang/issues) ## Macros Tutorial -[Macros Tutorial](/scala3/guides/macros)は Nicolas Stucki 氏 が書いている。この本では Scala 3 のマクロとそのベストプラクティスについて詳しく説明している。 +[Macros Tutorial](/scala3/guides/macros)は Nicolas Stucki 氏 が書いている。この本では Scala 3 のマクロとそのベストプラクティスについて詳しく説明している。 - [Sources](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-macros) - [Issues](https://github.com/scala/docs.scala-lang/issues) @@ -45,6 +45,12 @@ Scala 3 の高品質なドキュメンテーションを作るためのいくつ - [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-migration) - [Issues](https://github.com/scalacenter/docs.scala-lang/issues) +## Scala 3 Contribution Guide +[Scala 3 Contribution Guide](/scala3/guides/contribution/contribution-intro.html) +Scala 3 コンパイラとライブラリへの貢献と内部に関する包括的な概要が含まれています + +- [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-contribution) +- [Issues](https://github.com/scala/docs.scala-lang/issues) ## Scala 3 Language Reference The [Dotty reference](/scala3/reference/overview.html) は Scala 3 になる予定である。これにはさまざまな言語仕様に関する公式のプレゼンテーションや技術的情報が含まれている。 @@ -54,4 +60,3 @@ The [Dotty reference](/scala3/reference/overview.html) は Scala 3 になる予 [scala3-book]: {% link _overviews/scala3-book/introduction.md %} - diff --git a/_ja/scala3/new-in-scala3.md b/_ja/scala3/new-in-scala3.md index 1fd71af96c..eea8ee14ca 100644 --- a/_ja/scala3/new-in-scala3.md +++ b/_ja/scala3/new-in-scala3.md @@ -13,6 +13,7 @@ Scala 3 は Scala 2 から大幅な改善が行われ、さまざまな新機能 - [Syntax Summary][syntax-summary] では Scala 3 で新しく追加されたシンタックスを解説している。 - [Language Reference][reference] を見ればScala 2 と Scala 3 の変更点を詳しく確認できる。 - Scala 2 から Scala 3 への移行を考えている方は[Migration Guide][migration] を参照。 +- [Contribution Guide][contribution] は、問題を修正するためのガイドを含め、コンパイラーをさらに深く掘り下げます。 ## What's new in Scala 3 Scala 3 は Scala 2 を徹底的に見直して再設計されている。核心部分で、型システムの多くの面が変更されより原理原則に基づいたものになった。この変更によって新機能(ユニオン型)が使えるようになったことにくわえて、なにより型システムがさらに使いやすくなった。 例えば、[型推論][type-inference] や overload resolution が改善された. @@ -37,7 +38,7 @@ Scala 3 ではひとつの強力な機能として`implicit`を提供するの - **Providing Type-class instances**. [Given instances][contextual-givens] を使ってある型に対応する _canonical value_ を定義することができる。実装を公開することなく、型クラスを使ったプログラミングをよりわかりやすく書ける。 - **Retroactively extending classes**. Scala 2 では拡張メソッドは暗黙の変換か implicit classを使って書くことができた. 一方 Scala 3 では [extension methods][contextual-extension] が直接的に言語仕様に含まれているのでよりわかりやすいエラーメッセージを表示できる。型推論も改善された。 -- **Viewing one type as another**. 暗黙の変換は型クラス`Conversion`のインスタンスとしてゼロから [再設計][contextual-conversions]された。 +- **Viewing one type as another**. 暗黙の変換は型クラス`Conversion`のインスタンスとしてゼロから [再設計][contextual-conversions]された。 - **Higher-order contextual abstractions**. 全く新しい機能である [context functions][contextual-functions] は暗黙の引数をとる関数型を第一級オブジェクトとして扱う。この機能はライブラリ作者にとって重要である。また、簡潔なドメイン特化言語(DSL)を記述するのにも役立つ。 - **Actionable feedback from the compiler**. コンパイラが暗黙の引数の解決に失敗した場合、解決に役立つ [import suggestions](https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html) を提示する。 @@ -99,6 +100,7 @@ Scala 3 のメタプログラミングについてもっと知りたいかたは [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.html [contextual-using]: {{ site.scala3ref }}/contextual/using-clauses.html diff --git a/_overviews/scala3-contribution/contribution-intro.md b/_overviews/scala3-contribution/contribution-intro.md new file mode 100644 index 0000000000..6603b40318 --- /dev/null +++ b/_overviews/scala3-contribution/contribution-intro.md @@ -0,0 +1,10 @@ +--- +title: About This Guide +type: chapter +description: This page begins the overview documentation of the Scala 3 language. +num: 1 +previous-page: +next-page: scala-features +--- + +foo diff --git a/_overviews/scala3-contribution/scala-features.md b/_overviews/scala3-contribution/scala-features.md new file mode 100644 index 0000000000..aae42fe144 --- /dev/null +++ b/_overviews/scala3-contribution/scala-features.md @@ -0,0 +1,492 @@ +--- +title: Scala 3 Features +type: chapter +description: This page discusses the main features of the Scala 3 programming language. +num: 2 +previous-page: contribution-intro +--- + + +The name _Scala_ comes from the word _scalable_, and true to that name, the Scala language is used to power busy websites and analyze huge data sets. +This section introduces the features that make Scala a scalable language. +These features are split into three sections: + +- High-level language features +- Lower-level language features +- Scala ecosystem features + + + +{% comment %} +I think of this section as being like an “elevator pitch.” +{% endcomment %} + +## High-level features + +Looking at Scala from the proverbial “30,000 foot view,” you can make the following statements about it: + +- It’s a high-level programming language +- It has a concise, readable syntax +- It’s statically-typed (but feels dynamic) +- It has an expressive type system +- It’s a functional programming (FP) language +- It’s an object-oriented programming (OOP) language +- It supports the fusion of FP and OOP +- Contextual abstractions provide a clear way to implement _term inference_ +- It runs on the JVM (and in the browser) +- It interacts seamlessly with Java code +- It’s used for server-side applications (including microservices), big data applications, and can also be used in the browser with Scala.js + +The following sections take a quick look at these features. + + +### A high-level language + +Scala is considered a high-level language in at least two ways. +First, like Java and many other modern languages, you don’t deal with low-level concepts like pointers and memory management. + +Second, with the use of lambdas and higher-order functions, you write your code at a very high level. +As the functional programming saying goes, in Scala you write _what_ you want, not _how_ to achieve it. +That is, we don’t write imperative code like this: + +```scala +def double(ints: List[Int]): List[Int] = { + val buffer = new ListBuffer[Int]() + for (i <- ints) { + buffer += i * 2 + } + buffer.toList +} + +val newNumbers = double(oldNumbers) +``` + +That code instructs the compiler what to do on a step-by-step basis. +Instead, we write high-level, functional code using higher-order functions and lambdas like this to compute the same result: + +```scala +val newNumbers = oldNumbers.map(_ * 2) +``` + +As you can see, that code is much more concise, easier to read, and easier to maintain. + + +### Concise syntax + +Scala has a concise, readable syntax. +For instance, variables are created concisely, and their types are clear: + +```scala +val nums = List(1,2,3) +val p = Person("Martin", "Odersky") +``` + +Higher-order functions and lambdas make for concise code that’s readable: + +```scala +nums.map(i => i * 2) // long form +nums.map(_ * 2) // short form + +nums.filter(i => i > 1) +nums.filter(_ > 1) +``` + +Traits, classes, and methods are defined with a clean, light syntax: + +```scala +trait Animal: + def speak(): Unit + +trait HasTail: + def wagTail(): Unit + +class Dog extends Animal, HasTail: + def speak() = println("Woof") + def wagTail() = println("⎞⎜⎛ ⎞⎜⎛") +``` + +Studies have shown that the time a developer spends _reading_ code to _writing_ code is at least a 10:1 ratio, so writing code that is concise _and_ readable is important. + + +### A dynamic feel + +Scala is a statically-typed language, but thanks to its type inference capabilities it feels dynamic. +All of these expressions look like a dynamically-typed language like Python or Ruby, but they’re all Scala: + +```scala +val s = "Hello" +val p = Person("Al", "Pacino") +val sum = ints.reduceLeft(_ + _) +val y = for i <- nums yield i * 2 +val z = nums.filter(_ > 100) + .filter(_ < 10_000) + .map(_ * 2) +``` + +As Heather Miller states, Scala is considered to be a [strong, statically-typed language](https://heather.miller.am/blog/types-in-scala.html), and you get all the benefits of static types: + +- Correctness: you catch most errors at compile-time +- Great IDE support + - Reliable code completion + - Catching errors at compile-time means catching mistakes as you type + - Easy and reliable refactoring +- You can refactor your code with confidence +- Method type declarations tell readers what the method does, and help serve as documentation +- Scalability and maintainability: types help ensure correctness across arbitrarily large applications and development teams +- Strong typing in combination with excellent inference enables mechanisms like [contextual abstraction]({{ site.scala3ref }}/contextual.html) that allows you to omit boilerplate code. Often, this boilerplate code can be inferred by the compiler, based on type definitions and a given context. + +{% comment %} +In that list: +- 'Correctness' and 'Scalability' come from Heather Miller’s page +- the IDE-related quotes in this section come from the Scala.js website: + - catch most errors in the IDE + - Easy and reliable refactoring + - Reliable code completion +{% endcomment %} + + +### Expressive type system + +{% comment %} +- this text comes from the current [ScalaTour](https://docs.scala-lang.org/tour/tour-of-scala.html). +- TODO: all of the URLs will have to be updated + +- i removed these items until we can replace them: +* [Compound types](/tour/compound-types.html) +* [conversions](/tour/implicit-conversions.html) +* [Explicitly typed self references](/tour/self-types.html) +{% endcomment %} + +Scala’s type system enforces, at compile-time, that abstractions are used in a safe and coherent manner. +In particular, the type system supports: + +- [Inferred types]({% link _overviews/scala3-book/types-inferred.md %}) +- [Generic classes]({% link _overviews/scala3-book/types-generics.md %}) +- [Variance annotations]({% link _overviews/scala3-book/types-variance.md %}) +- [Upper](/tour/upper-type-bounds.html) and [lower](/tour/lower-type-bounds.html) type bounds +- [Polymorphic methods](/tour/polymorphic-methods.html) +- [Intersection types]({% link _overviews/scala3-book/types-intersection.md %}) +- [Union types]({% link _overviews/scala3-book/types-union.md %}) +- [Type lambdas]({{ site.scala3ref }}/new-types/type-lambdas.html) +- [`given` instances and `using` clauses]({% link _overviews/scala3-book/ca-given-using-clauses.md %}) +- [Extension methods]({% link _overviews/scala3-book/ca-extension-methods.md %}) +- [Type classes]({% link _overviews/scala3-book/ca-type-classes.md %}) +- [Multiversal equality]({% link _overviews/scala3-book/ca-multiversal-equality.md %}) +- [Opaque type aliases]({% link _overviews/scala3-book/types-opaque-types.md %}) +- [Open classes]({{ site.scala3ref }}/other-new-features/open-classes.html) +- [Match types]({{ site.scala3ref }}/new-types/match-types.html) +- [Dependent function types]({{ site.scala3ref }}/new-types/dependent-function-types.html) +- [Polymorphic function types]({{ site.scala3ref }}/new-types/polymorphic-function-types.html) +- [Context bounds]({{ site.scala3ref }}/contextual/context-bounds.html) +- [Context functions]({{ site.scala3ref }}/contextual/context-functions.html) +- [Inner classes](/tour/inner-classes.html) and [abstract type members](/tour/abstract-type-members.html) as object members + +In combination, these features provide a powerful basis for the safe reuse of programming abstractions and for the type-safe extension of software. + + +### A functional programming language + +Scala is a functional programming (FP) language, meaning: + +- Functions are values, and can be passed around like any other value +- Higher-order functions are directly supported +- Lambdas are built in +- Everything in Scala is an expression that returns a value +- Syntactically it’s easy to use immutable variables, and their use is encouraged +- It has a wealth of immutable collection classes in the standard library +- Those collection classes come with dozens of functional methods: they don’t mutate the collection, but instead return an updated copy of the data + + +### An object-oriented language + +Scala is an object-oriented programming (OOP) language. +Every value is an instance of a class and every “operator” is a method. + +In Scala, all types inherit from a top-level class `Any`, whose immediate children are `AnyVal` (_value types_, such as `Int` and `Boolean`) and `AnyRef` (_reference types_, as in Java). +This means that the Java distinction between primitive types and boxed types (e.g. `int` vs. `Integer`) isn’t present in Scala. +Boxing and unboxing is completely transparent to the user. + +{% comment %} +- AnyRef above is wrong in case of strict null checking, no? On the other hand, maybe too much information to state this here +- probably not worth to mention (too advanced at this point) there is AnyKind +- Add the “types hierarchy” image here? +{% endcomment %} + + +### Supports FP/OOP fusion + +{% comment %} +NOTE: This text in the first line comes from this slide: https://twitter.com/alexelcu/status/996408359514525696 +{% endcomment %} + +The essence of Scala is the fusion of functional programming and object-oriented programming in a typed setting: + +- Functions for the logic +- Objects for the modularity + +As [Martin Odersky has stated](https://jaxenter.com/current-state-scala-odersky-interview-129495.html), “Scala was designed to show that a fusion of functional and object-oriented programming is possible and practical.” + + +### Term inference, made clearer + +Following Haskell, Scala was the second popular language to have some form of _implicits_. +In Scala 3 these concepts have been completely re-thought and more clearly implemented. + +The core idea is _term inference_: Given a type, the compiler synthesizes a “canonical” term that has that type. +In Scala, a context parameter directly leads to an inferred argument term that could also be written down explicitly. + +Use cases for this concept include implementing [type classes]({% link _overviews/scala3-book/ca-type-classes.md %}), establishing context, dependency injection, expressing capabilities, computing new types, and proving relationships between them. + +Scala 3 makes this process more clear than ever before. +Read about contextual abstractions in the [Reference documentation]({{ site.scala3ref }}/contextual.html). + + +### Client & server + +Scala code runs on the Java Virtual Machine (JVM), so you get all of its benefits: + +- Security +- Performance +- Memory management +- Portability and platform independence +- The ability to use the wealth of existing Java and JVM libraries + +In addition to running on the JVM, Scala also runs in the browser with Scala.js (and open source third-party tools to integrate popular JavaScript libraries), and native executables can be built with Scala Native and GraalVM. + + +### Seamless Java interaction + +You can use Java classes and libraries in your Scala applications, and you can use Scala code in your Java applications. +In regards to the second point, large libraries like [Akka](https://akka.io) and the [Play Framework](https://www.playframework.com) are written in Scala, and can be used in Java applications. + +In regards to the first point, Java classes and libraries are used in Scala applications every day. +For instance, in Scala you can read files with a Java `BufferedReader` and `FileReader`: + +```scala +import java.io.* +val br = BufferedReader(FileReader(filename)) +// read the file with `br` ... +``` + +Using Java code in Scala is generally seamless. + +Java collections can also be used in Scala, and if you want to use Scala’s rich collection class methods with them, you can convert them with just a few lines of code: + +```scala +import scala.jdk.CollectionConverters.* +val scalaList: Seq[Integer] = JavaClass.getJavaList().asScala.toSeq +``` + + +### Wealth of libraries + +As you’ll see in the third section of this page, Scala libraries and frameworks like these have been written to power busy websites and work with huge datasets: + +1. The [Play Framework](https://www.playframework.com) is a lightweight, stateless, developer-friendly, web-friendly architecture for creating highly-scalable applications +2. [Lagom](https://www.lagomframework.com) is a microservices framework that helps you decompose your legacy monolith and build, test, and deploy entire systems of reactive microservices +3. [Apache Spark](https://spark.apache.org) is a unified analytics engine for big data processing, with built-in modules for streaming, SQL, machine learning and graph processing + +The [Awesome Scala list](https://github.com/lauris/awesome-scala) shows dozens of additional open source tools that developers have created to build Scala applications. + +In addition to server-side programming, [Scala.js](https://www.scala-js.org) is a strongly-typed replacement for writing JavaScript, with open source third-party libraries that include tools to integrate with Facebook’s React library, jQuery, and more. + + + +{% comment %} +The Lower-Level Features section is like the second part of an elevator pitch. +Assuming you told someone about the previous high-level features and then they say, “Tell me more,” this is what you might tell them. +{% endcomment %} + +## Lower-level language features + +Where the previous section covered high-level features of Scala 3, it’s interesting to note that at a high level you can make the same statements about both Scala 2 and Scala 3. +A decade ago Scala started with a strong foundation of desirable features, and as you’ll see in this section, those benefits have been improved with Scala 3. + +At a “sea level” view of the details---i.e., the language features programmers use everyday---Scala 3 has significant advantages over Scala 2: + +- The ability to create algebraic data types (ADTs) more concisely with enums +- An even more concise and readable syntax: + - The “quiet” control structure syntax is easier to read + - Optional braces + - Fewer symbols in the code creates less visual noise, making it easier to read + - The `new` keyword is generally no longer needed when creating class instances + - The formality of package objects have been dropped in favor of simpler “top level” definitions +- A grammar that’s more clear: + - Multiple different uses of the `implicit` keyword have been removed; those uses are replaced by more obvious keywords like `given`, `using`, and `extension`, focusing on intent over mechanism (see the [Givens][givens] section for details) + - [Extension methods][extension] replace implicit classes with a clearer and simpler mechanism + - The addition of the `open` modifier for classes makes the developer intentionally declare that a class is open for modification, thereby limiting ad-hoc extensions to a code base + - [Multiversal equality][multiversal] rules out nonsensical comparisons with `==` and `!=` (i.e., attempting to compare a `Person` to a `Planet`) + - Macros are implemented much more easily + - Union and intersection offer a flexible way to model types + - Trait parameters replace and simplify early initializers + - [Opaque type aliases][opaque_types] replace most uses of value classes, while guaranteeing the absence of boxing + - Export clauses provide a simple and general way to express aggregation, which can replace the previous facade pattern of package objects inheriting from classes + - The procedure syntax has been dropped, and the varargs syntax has been changed, both to make the language more consistent + - The `@infix` annotation makes it obvious how you want a method to be applied + - The [`@targetName`]({{ site.scala3ref }}/other-new-features/targetName.html) method annotation defines an alternate name for the method, improving Java interoperability, and letting you provide aliases for symbolic operators + +It would take too much space to demonstrate all of those features here, but follow the links in the items above to see those features in action. +All of these features are discussed in detail in the *New*, *Changed*, and *Dropped* features pages in the [Overview documentation][reference]. + + + +{% comment %} +CHECKLIST OF ALL ADDED, UPDATED, AND REMOVED FEATURES +===================================================== + +New Features +------------ +- trait parameters +- super traits +- creator applications +- export clauses +- opaque type aliases +- open classes +- parameter untupling +- kind polymorphism +- tupled function +- threadUnsafe annotation +- new control syntax +- optional braces (experimental) +- explicit nulls +- safe initialization + +CHANGED FEATURES +---------------- +- numeric literals +- structural types +- operators +- wildcard types +- type checking +- type inference +- implicit resolution +- implicit conversions +- overload resolution +- match expressions +- vararg patterns +- pattern bindings +- pattern matching +- eta expansion +- compiler plugins +- lazy vals initialization +- main functions + +DROPPED FEATURES +---------------- +- DelayedInit +- macros +- existential types +- type projection +- do/while syntax +- procedure syntax +- package objects +- early initializers +- class shadowing +- limit 22 +- XML literals +- symbol literals +- auto-application +- weak conformance +- nonlocal returns +- [this] qualifier + - private[this] and protected[this] access modifiers are deprecated + and will be phased out +{% endcomment %} + + + + +## Scala ecosystem + +{% comment %} +TODO: I didn’t put much work into this section because I don’t know if you want + to add many tools because (a) that can be seen as an endorsement and + (b) it creates a section that can need more maintenance than average + since tool popularity can wax and wane. One way to avoid the first + point is to base the lists on Github stars and activity. +{% endcomment %} + +Scala has a vibrant ecosystem, with libraries and frameworks for every need. +The [“Awesome Scala” list](https://github.com/lauris/awesome-scala) provides a list of hundreds of open source projects that are available to Scala developers, and the [Scaladex](https://index.scala-lang.org) provides a searchable index of Scala libraries. +Some of the more notable libraries are listed below. + + + +### Web development + +- The [Play Framework](https://www.playframework.com) followed the Ruby on Rails model to become a lightweight, stateless, developer-friendly, web-friendly architecture for highly-scalable applications +- [Scalatra](https://scalatra.org) is a tiny, high-performance, async web framework, inspired by Sinatra +- [Finatra](https://twitter.github.io/finatra) is Scala services built on TwitterServer and Finagle +- [Scala.js](https://www.scala-js.org) is a strongly-typed replacement for JavaScript that provides a safer way to build robust front-end web applications +- [ScalaJs-React](https://github.com/japgolly/scalajs-react) lifts Facebook’s React library into Scala.js, and endeavours to make it as type-safe and Scala-friendly as possible +- [Lagom](https://www.lagomframework.com) is a microservices framework that helps you decompose your legacy monolith and build, test, and deploy entire systems of Reactive microservices + +HTTP(S) libraries: + +- [Akka-http](https://akka.io) +- [Finch](https://github.com/finagle/finch) +- [Http4s](https://github.com/http4s/http4s) +- [Sttp](https://github.com/softwaremill/sttp) + +JSON libraries: + +- [Argonaut](https://github.com/argonaut-io/argonaut) +- [Circe](https://github.com/circe/circe) +- [Json4s](https://github.com/json4s/json4s) +- [Play-JSON](https://github.com/playframework/play-json) + +Serialization: + +- [ScalaPB](https://github.com/scalapb/ScalaPB) + +### Science and data analysis: + +- [Algebird](https://github.com/twitter/algebird) +- [Spire](https://github.com/typelevel/spire) +- [Squants](https://github.com/typelevel/squants) + + +### Big data + +- [Apache Spark](https://github.com/apache/spark) +- [Apache Flink](https://github.com/apache/flink) + + +### AI, machine learning + +- [BigDL](https://github.com/intel-analytics/BigDL) (Distributed Deep Learning Framework for Apache Spark) for Apache Spark +- [TensorFlow Scala](https://github.com/eaplatanios/tensorflow_scala) + + +### Functional Programming & Functional Reactive Programming + +FP: + +- [Cats](https://github.com/typelevel/cats) +- [Zio](https://github.com/zio/zio) + +Functional reactive programming (FRP): + +- [fs2](https://github.com/typelevel/fs2) +- [monix](https://github.com/monix/monix) + + +### Build tools + +- [sbt](https://www.scala-sbt.org) +- [Gradle](https://gradle.org) +- [Mill](https://github.com/lihaoyi/mill) + + + +## Summary + +As this page shows, Scala has many terrific programming language features at a high level, at an everyday programming level, and through its developer ecosystem. + + + +[reference]: {{ site.scala3ref }}/overview.html +[multiversal]: {% link _overviews/scala3-book/ca-multiversal-equality.md %} +[extension]: {% link _overviews/scala3-book/ca-extension-methods.md %} +[givens]: {% link _overviews/scala3-book/ca-given-using-clauses.md %} +[opaque_types]: {% link _overviews/scala3-book/types-opaque-types.md %} diff --git a/index.md b/index.md index 776a881de1..37ae355c30 100644 --- a/index.md +++ b/index.md @@ -40,6 +40,10 @@ scala3-sections: description: "The Scala 3 language reference." icon: "fa fa-book" link: /scala3/reference/overview.html + - title: "Contribution Guide" + description: "Guide to the Scala 3 Compiler and fixing an issue" + icon: "fa fa-gears" + link: /scala3/guides/contribution/contribution-intro.html - title: "All new Scaladoc for Scala 3" description: "Highlights of new features for Scaladoc" icon: "fa fa-star" diff --git a/scala3/contribute-to-docs.md b/scala3/contribute-to-docs.md index 637476a7c5..5a2a336440 100644 --- a/scala3/contribute-to-docs.md +++ b/scala3/contribute-to-docs.md @@ -45,6 +45,13 @@ a tour presenting the migration tools, and detailed migration guides. - [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-migration) - [Issues](https://github.com/scala/docs.scala-lang/issues) +## Scala 3 Contribution Guide +The [Scala 3 Contribution Guide](/scala3/guides/contribution/contribution-intro.html) +contains a comprehensive overview over contribution to and internals of the Scala 3 compiler and libraries + +- [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-contribution) +- [Issues](https://github.com/scala/docs.scala-lang/issues) + ## Scala 3 Language Reference The [Scala 3 reference](/scala3/reference/overview.html) contains a formal presentation and detailed technical information about the various features of the language. diff --git a/scala3/guides.md b/scala3/guides.md index dd1905feca..dd33c3480d 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -18,6 +18,11 @@ guides: icon: birthday-cake url: "/scala3/guides/tasty-overview.html" description: "An overview over the TASTy format aimed at end-users of the Scala language." + - title: "Contribution Guide" + by: Jamie Thompson + icon: gears + url: "/scala3/guides/contribution/contribution-intro.html" + description: "Guide to the Scala 3 Compiler and fixing an issue" - title: Scaladoc by: Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak, Kacper Korban, Filip Zybała icon: book diff --git a/scala3/index.md b/scala3/index.md index 9c2faa947e..b6d2ca8621 100644 --- a/scala3/index.md +++ b/scala3/index.md @@ -40,6 +40,10 @@ sections: description: "The Scala 3 language reference." icon: "fa fa-book" link: /scala3/reference/overview.html + - title: "Contribution Guide" + description: "Guide to the Scala 3 Compiler and fixing an issue" + icon: "fa fa-gears" + link: /scala3/guides/contribution/contribution-intro.html - title: "All new Scaladoc for Scala 3" description: "Highlights of new features for Scaladoc" icon: "fa fa-star" diff --git a/scala3/new-in-scala3.md b/scala3/new-in-scala3.md index 3c1cbc28c0..7501d9f086 100644 --- a/scala3/new-in-scala3.md +++ b/scala3/new-in-scala3.md @@ -11,6 +11,7 @@ changes. If you want to dig deeper, there are a few references at your disposal: - The [Syntax Summary][syntax-summary] provides you with a formal description of the new syntax. - The [Language Reference][reference] gives a detailed description of the changes from Scala 2 to Scala 3. - The [Migration Guide][migration] provides you with all of the information necessary to move from Scala 2 to Scala 3. +- The [Contribution Guide][contribution] dives deeper into the compiler, including a guide to fix issues. ## What's new in Scala 3 Scala 3 is a complete overhaul of the Scala language. At its core, many aspects @@ -110,6 +111,7 @@ If you want to learn more about metaprogramming in Scala 3, we invite you to tak [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.html [contextual-using]: {{ site.scala3ref }}/contextual/using-clauses.html From 17ce1d6e4f09b2d8cf6c1418d9e089a855320bfa Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 16 Sep 2021 20:16:59 +0200 Subject: [PATCH 0214/1704] add type system guide --- .../scala3-contribution/contribution-intro.md | 21 +- .../scala3-contribution/scala-features.md | 492 ------------------ _overviews/scala3-contribution/type-system.md | 140 +++++ 3 files changed, 158 insertions(+), 495 deletions(-) delete mode 100644 _overviews/scala3-contribution/scala-features.md create mode 100644 _overviews/scala3-contribution/type-system.md diff --git a/_overviews/scala3-contribution/contribution-intro.md b/_overviews/scala3-contribution/contribution-intro.md index 6603b40318..1f418667f9 100644 --- a/_overviews/scala3-contribution/contribution-intro.md +++ b/_overviews/scala3-contribution/contribution-intro.md @@ -1,10 +1,25 @@ --- title: About This Guide type: chapter -description: This page begins the overview documentation of the Scala 3 language. +description: This page describes the format of the contribution guide for the Scala 3 compiler. num: 1 previous-page: -next-page: scala-features +next-page: type-system --- -foo +This guide documents the inner workings of the Scala 3 compiler, `dotc`, +and is intended to give new contributors the knowledge they need to +become productive and fix issues or implement new features. + +### A Note on Compiler Stability + +Keep in mind that the code for `dotc` is subject to change, with no +guarantees of stability, so the ideas discussed in this guide may +fall out of date, please consider contributing to this guide +on [GitHub](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-contribution). + +### Get the Most from This Guide + +`dotc` is built with Scala 3, fully utilising its [new features](/scala3/new-in-scala3.html). +It is recommended that you first have some familiarity with Scala 3 +to get the most out of this guide. You can learn more in the [language reference](/scala3/reference/overview.html). diff --git a/_overviews/scala3-contribution/scala-features.md b/_overviews/scala3-contribution/scala-features.md deleted file mode 100644 index aae42fe144..0000000000 --- a/_overviews/scala3-contribution/scala-features.md +++ /dev/null @@ -1,492 +0,0 @@ ---- -title: Scala 3 Features -type: chapter -description: This page discusses the main features of the Scala 3 programming language. -num: 2 -previous-page: contribution-intro ---- - - -The name _Scala_ comes from the word _scalable_, and true to that name, the Scala language is used to power busy websites and analyze huge data sets. -This section introduces the features that make Scala a scalable language. -These features are split into three sections: - -- High-level language features -- Lower-level language features -- Scala ecosystem features - - - -{% comment %} -I think of this section as being like an “elevator pitch.” -{% endcomment %} - -## High-level features - -Looking at Scala from the proverbial “30,000 foot view,” you can make the following statements about it: - -- It’s a high-level programming language -- It has a concise, readable syntax -- It’s statically-typed (but feels dynamic) -- It has an expressive type system -- It’s a functional programming (FP) language -- It’s an object-oriented programming (OOP) language -- It supports the fusion of FP and OOP -- Contextual abstractions provide a clear way to implement _term inference_ -- It runs on the JVM (and in the browser) -- It interacts seamlessly with Java code -- It’s used for server-side applications (including microservices), big data applications, and can also be used in the browser with Scala.js - -The following sections take a quick look at these features. - - -### A high-level language - -Scala is considered a high-level language in at least two ways. -First, like Java and many other modern languages, you don’t deal with low-level concepts like pointers and memory management. - -Second, with the use of lambdas and higher-order functions, you write your code at a very high level. -As the functional programming saying goes, in Scala you write _what_ you want, not _how_ to achieve it. -That is, we don’t write imperative code like this: - -```scala -def double(ints: List[Int]): List[Int] = { - val buffer = new ListBuffer[Int]() - for (i <- ints) { - buffer += i * 2 - } - buffer.toList -} - -val newNumbers = double(oldNumbers) -``` - -That code instructs the compiler what to do on a step-by-step basis. -Instead, we write high-level, functional code using higher-order functions and lambdas like this to compute the same result: - -```scala -val newNumbers = oldNumbers.map(_ * 2) -``` - -As you can see, that code is much more concise, easier to read, and easier to maintain. - - -### Concise syntax - -Scala has a concise, readable syntax. -For instance, variables are created concisely, and their types are clear: - -```scala -val nums = List(1,2,3) -val p = Person("Martin", "Odersky") -``` - -Higher-order functions and lambdas make for concise code that’s readable: - -```scala -nums.map(i => i * 2) // long form -nums.map(_ * 2) // short form - -nums.filter(i => i > 1) -nums.filter(_ > 1) -``` - -Traits, classes, and methods are defined with a clean, light syntax: - -```scala -trait Animal: - def speak(): Unit - -trait HasTail: - def wagTail(): Unit - -class Dog extends Animal, HasTail: - def speak() = println("Woof") - def wagTail() = println("⎞⎜⎛ ⎞⎜⎛") -``` - -Studies have shown that the time a developer spends _reading_ code to _writing_ code is at least a 10:1 ratio, so writing code that is concise _and_ readable is important. - - -### A dynamic feel - -Scala is a statically-typed language, but thanks to its type inference capabilities it feels dynamic. -All of these expressions look like a dynamically-typed language like Python or Ruby, but they’re all Scala: - -```scala -val s = "Hello" -val p = Person("Al", "Pacino") -val sum = ints.reduceLeft(_ + _) -val y = for i <- nums yield i * 2 -val z = nums.filter(_ > 100) - .filter(_ < 10_000) - .map(_ * 2) -``` - -As Heather Miller states, Scala is considered to be a [strong, statically-typed language](https://heather.miller.am/blog/types-in-scala.html), and you get all the benefits of static types: - -- Correctness: you catch most errors at compile-time -- Great IDE support - - Reliable code completion - - Catching errors at compile-time means catching mistakes as you type - - Easy and reliable refactoring -- You can refactor your code with confidence -- Method type declarations tell readers what the method does, and help serve as documentation -- Scalability and maintainability: types help ensure correctness across arbitrarily large applications and development teams -- Strong typing in combination with excellent inference enables mechanisms like [contextual abstraction]({{ site.scala3ref }}/contextual.html) that allows you to omit boilerplate code. Often, this boilerplate code can be inferred by the compiler, based on type definitions and a given context. - -{% comment %} -In that list: -- 'Correctness' and 'Scalability' come from Heather Miller’s page -- the IDE-related quotes in this section come from the Scala.js website: - - catch most errors in the IDE - - Easy and reliable refactoring - - Reliable code completion -{% endcomment %} - - -### Expressive type system - -{% comment %} -- this text comes from the current [ScalaTour](https://docs.scala-lang.org/tour/tour-of-scala.html). -- TODO: all of the URLs will have to be updated - -- i removed these items until we can replace them: -* [Compound types](/tour/compound-types.html) -* [conversions](/tour/implicit-conversions.html) -* [Explicitly typed self references](/tour/self-types.html) -{% endcomment %} - -Scala’s type system enforces, at compile-time, that abstractions are used in a safe and coherent manner. -In particular, the type system supports: - -- [Inferred types]({% link _overviews/scala3-book/types-inferred.md %}) -- [Generic classes]({% link _overviews/scala3-book/types-generics.md %}) -- [Variance annotations]({% link _overviews/scala3-book/types-variance.md %}) -- [Upper](/tour/upper-type-bounds.html) and [lower](/tour/lower-type-bounds.html) type bounds -- [Polymorphic methods](/tour/polymorphic-methods.html) -- [Intersection types]({% link _overviews/scala3-book/types-intersection.md %}) -- [Union types]({% link _overviews/scala3-book/types-union.md %}) -- [Type lambdas]({{ site.scala3ref }}/new-types/type-lambdas.html) -- [`given` instances and `using` clauses]({% link _overviews/scala3-book/ca-given-using-clauses.md %}) -- [Extension methods]({% link _overviews/scala3-book/ca-extension-methods.md %}) -- [Type classes]({% link _overviews/scala3-book/ca-type-classes.md %}) -- [Multiversal equality]({% link _overviews/scala3-book/ca-multiversal-equality.md %}) -- [Opaque type aliases]({% link _overviews/scala3-book/types-opaque-types.md %}) -- [Open classes]({{ site.scala3ref }}/other-new-features/open-classes.html) -- [Match types]({{ site.scala3ref }}/new-types/match-types.html) -- [Dependent function types]({{ site.scala3ref }}/new-types/dependent-function-types.html) -- [Polymorphic function types]({{ site.scala3ref }}/new-types/polymorphic-function-types.html) -- [Context bounds]({{ site.scala3ref }}/contextual/context-bounds.html) -- [Context functions]({{ site.scala3ref }}/contextual/context-functions.html) -- [Inner classes](/tour/inner-classes.html) and [abstract type members](/tour/abstract-type-members.html) as object members - -In combination, these features provide a powerful basis for the safe reuse of programming abstractions and for the type-safe extension of software. - - -### A functional programming language - -Scala is a functional programming (FP) language, meaning: - -- Functions are values, and can be passed around like any other value -- Higher-order functions are directly supported -- Lambdas are built in -- Everything in Scala is an expression that returns a value -- Syntactically it’s easy to use immutable variables, and their use is encouraged -- It has a wealth of immutable collection classes in the standard library -- Those collection classes come with dozens of functional methods: they don’t mutate the collection, but instead return an updated copy of the data - - -### An object-oriented language - -Scala is an object-oriented programming (OOP) language. -Every value is an instance of a class and every “operator” is a method. - -In Scala, all types inherit from a top-level class `Any`, whose immediate children are `AnyVal` (_value types_, such as `Int` and `Boolean`) and `AnyRef` (_reference types_, as in Java). -This means that the Java distinction between primitive types and boxed types (e.g. `int` vs. `Integer`) isn’t present in Scala. -Boxing and unboxing is completely transparent to the user. - -{% comment %} -- AnyRef above is wrong in case of strict null checking, no? On the other hand, maybe too much information to state this here -- probably not worth to mention (too advanced at this point) there is AnyKind -- Add the “types hierarchy” image here? -{% endcomment %} - - -### Supports FP/OOP fusion - -{% comment %} -NOTE: This text in the first line comes from this slide: https://twitter.com/alexelcu/status/996408359514525696 -{% endcomment %} - -The essence of Scala is the fusion of functional programming and object-oriented programming in a typed setting: - -- Functions for the logic -- Objects for the modularity - -As [Martin Odersky has stated](https://jaxenter.com/current-state-scala-odersky-interview-129495.html), “Scala was designed to show that a fusion of functional and object-oriented programming is possible and practical.” - - -### Term inference, made clearer - -Following Haskell, Scala was the second popular language to have some form of _implicits_. -In Scala 3 these concepts have been completely re-thought and more clearly implemented. - -The core idea is _term inference_: Given a type, the compiler synthesizes a “canonical” term that has that type. -In Scala, a context parameter directly leads to an inferred argument term that could also be written down explicitly. - -Use cases for this concept include implementing [type classes]({% link _overviews/scala3-book/ca-type-classes.md %}), establishing context, dependency injection, expressing capabilities, computing new types, and proving relationships between them. - -Scala 3 makes this process more clear than ever before. -Read about contextual abstractions in the [Reference documentation]({{ site.scala3ref }}/contextual.html). - - -### Client & server - -Scala code runs on the Java Virtual Machine (JVM), so you get all of its benefits: - -- Security -- Performance -- Memory management -- Portability and platform independence -- The ability to use the wealth of existing Java and JVM libraries - -In addition to running on the JVM, Scala also runs in the browser with Scala.js (and open source third-party tools to integrate popular JavaScript libraries), and native executables can be built with Scala Native and GraalVM. - - -### Seamless Java interaction - -You can use Java classes and libraries in your Scala applications, and you can use Scala code in your Java applications. -In regards to the second point, large libraries like [Akka](https://akka.io) and the [Play Framework](https://www.playframework.com) are written in Scala, and can be used in Java applications. - -In regards to the first point, Java classes and libraries are used in Scala applications every day. -For instance, in Scala you can read files with a Java `BufferedReader` and `FileReader`: - -```scala -import java.io.* -val br = BufferedReader(FileReader(filename)) -// read the file with `br` ... -``` - -Using Java code in Scala is generally seamless. - -Java collections can also be used in Scala, and if you want to use Scala’s rich collection class methods with them, you can convert them with just a few lines of code: - -```scala -import scala.jdk.CollectionConverters.* -val scalaList: Seq[Integer] = JavaClass.getJavaList().asScala.toSeq -``` - - -### Wealth of libraries - -As you’ll see in the third section of this page, Scala libraries and frameworks like these have been written to power busy websites and work with huge datasets: - -1. The [Play Framework](https://www.playframework.com) is a lightweight, stateless, developer-friendly, web-friendly architecture for creating highly-scalable applications -2. [Lagom](https://www.lagomframework.com) is a microservices framework that helps you decompose your legacy monolith and build, test, and deploy entire systems of reactive microservices -3. [Apache Spark](https://spark.apache.org) is a unified analytics engine for big data processing, with built-in modules for streaming, SQL, machine learning and graph processing - -The [Awesome Scala list](https://github.com/lauris/awesome-scala) shows dozens of additional open source tools that developers have created to build Scala applications. - -In addition to server-side programming, [Scala.js](https://www.scala-js.org) is a strongly-typed replacement for writing JavaScript, with open source third-party libraries that include tools to integrate with Facebook’s React library, jQuery, and more. - - - -{% comment %} -The Lower-Level Features section is like the second part of an elevator pitch. -Assuming you told someone about the previous high-level features and then they say, “Tell me more,” this is what you might tell them. -{% endcomment %} - -## Lower-level language features - -Where the previous section covered high-level features of Scala 3, it’s interesting to note that at a high level you can make the same statements about both Scala 2 and Scala 3. -A decade ago Scala started with a strong foundation of desirable features, and as you’ll see in this section, those benefits have been improved with Scala 3. - -At a “sea level” view of the details---i.e., the language features programmers use everyday---Scala 3 has significant advantages over Scala 2: - -- The ability to create algebraic data types (ADTs) more concisely with enums -- An even more concise and readable syntax: - - The “quiet” control structure syntax is easier to read - - Optional braces - - Fewer symbols in the code creates less visual noise, making it easier to read - - The `new` keyword is generally no longer needed when creating class instances - - The formality of package objects have been dropped in favor of simpler “top level” definitions -- A grammar that’s more clear: - - Multiple different uses of the `implicit` keyword have been removed; those uses are replaced by more obvious keywords like `given`, `using`, and `extension`, focusing on intent over mechanism (see the [Givens][givens] section for details) - - [Extension methods][extension] replace implicit classes with a clearer and simpler mechanism - - The addition of the `open` modifier for classes makes the developer intentionally declare that a class is open for modification, thereby limiting ad-hoc extensions to a code base - - [Multiversal equality][multiversal] rules out nonsensical comparisons with `==` and `!=` (i.e., attempting to compare a `Person` to a `Planet`) - - Macros are implemented much more easily - - Union and intersection offer a flexible way to model types - - Trait parameters replace and simplify early initializers - - [Opaque type aliases][opaque_types] replace most uses of value classes, while guaranteeing the absence of boxing - - Export clauses provide a simple and general way to express aggregation, which can replace the previous facade pattern of package objects inheriting from classes - - The procedure syntax has been dropped, and the varargs syntax has been changed, both to make the language more consistent - - The `@infix` annotation makes it obvious how you want a method to be applied - - The [`@targetName`]({{ site.scala3ref }}/other-new-features/targetName.html) method annotation defines an alternate name for the method, improving Java interoperability, and letting you provide aliases for symbolic operators - -It would take too much space to demonstrate all of those features here, but follow the links in the items above to see those features in action. -All of these features are discussed in detail in the *New*, *Changed*, and *Dropped* features pages in the [Overview documentation][reference]. - - - -{% comment %} -CHECKLIST OF ALL ADDED, UPDATED, AND REMOVED FEATURES -===================================================== - -New Features ------------- -- trait parameters -- super traits -- creator applications -- export clauses -- opaque type aliases -- open classes -- parameter untupling -- kind polymorphism -- tupled function -- threadUnsafe annotation -- new control syntax -- optional braces (experimental) -- explicit nulls -- safe initialization - -CHANGED FEATURES ----------------- -- numeric literals -- structural types -- operators -- wildcard types -- type checking -- type inference -- implicit resolution -- implicit conversions -- overload resolution -- match expressions -- vararg patterns -- pattern bindings -- pattern matching -- eta expansion -- compiler plugins -- lazy vals initialization -- main functions - -DROPPED FEATURES ----------------- -- DelayedInit -- macros -- existential types -- type projection -- do/while syntax -- procedure syntax -- package objects -- early initializers -- class shadowing -- limit 22 -- XML literals -- symbol literals -- auto-application -- weak conformance -- nonlocal returns -- [this] qualifier - - private[this] and protected[this] access modifiers are deprecated - and will be phased out -{% endcomment %} - - - - -## Scala ecosystem - -{% comment %} -TODO: I didn’t put much work into this section because I don’t know if you want - to add many tools because (a) that can be seen as an endorsement and - (b) it creates a section that can need more maintenance than average - since tool popularity can wax and wane. One way to avoid the first - point is to base the lists on Github stars and activity. -{% endcomment %} - -Scala has a vibrant ecosystem, with libraries and frameworks for every need. -The [“Awesome Scala” list](https://github.com/lauris/awesome-scala) provides a list of hundreds of open source projects that are available to Scala developers, and the [Scaladex](https://index.scala-lang.org) provides a searchable index of Scala libraries. -Some of the more notable libraries are listed below. - - - -### Web development - -- The [Play Framework](https://www.playframework.com) followed the Ruby on Rails model to become a lightweight, stateless, developer-friendly, web-friendly architecture for highly-scalable applications -- [Scalatra](https://scalatra.org) is a tiny, high-performance, async web framework, inspired by Sinatra -- [Finatra](https://twitter.github.io/finatra) is Scala services built on TwitterServer and Finagle -- [Scala.js](https://www.scala-js.org) is a strongly-typed replacement for JavaScript that provides a safer way to build robust front-end web applications -- [ScalaJs-React](https://github.com/japgolly/scalajs-react) lifts Facebook’s React library into Scala.js, and endeavours to make it as type-safe and Scala-friendly as possible -- [Lagom](https://www.lagomframework.com) is a microservices framework that helps you decompose your legacy monolith and build, test, and deploy entire systems of Reactive microservices - -HTTP(S) libraries: - -- [Akka-http](https://akka.io) -- [Finch](https://github.com/finagle/finch) -- [Http4s](https://github.com/http4s/http4s) -- [Sttp](https://github.com/softwaremill/sttp) - -JSON libraries: - -- [Argonaut](https://github.com/argonaut-io/argonaut) -- [Circe](https://github.com/circe/circe) -- [Json4s](https://github.com/json4s/json4s) -- [Play-JSON](https://github.com/playframework/play-json) - -Serialization: - -- [ScalaPB](https://github.com/scalapb/ScalaPB) - -### Science and data analysis: - -- [Algebird](https://github.com/twitter/algebird) -- [Spire](https://github.com/typelevel/spire) -- [Squants](https://github.com/typelevel/squants) - - -### Big data - -- [Apache Spark](https://github.com/apache/spark) -- [Apache Flink](https://github.com/apache/flink) - - -### AI, machine learning - -- [BigDL](https://github.com/intel-analytics/BigDL) (Distributed Deep Learning Framework for Apache Spark) for Apache Spark -- [TensorFlow Scala](https://github.com/eaplatanios/tensorflow_scala) - - -### Functional Programming & Functional Reactive Programming - -FP: - -- [Cats](https://github.com/typelevel/cats) -- [Zio](https://github.com/zio/zio) - -Functional reactive programming (FRP): - -- [fs2](https://github.com/typelevel/fs2) -- [monix](https://github.com/monix/monix) - - -### Build tools - -- [sbt](https://www.scala-sbt.org) -- [Gradle](https://gradle.org) -- [Mill](https://github.com/lihaoyi/mill) - - - -## Summary - -As this page shows, Scala has many terrific programming language features at a high level, at an everyday programming level, and through its developer ecosystem. - - - -[reference]: {{ site.scala3ref }}/overview.html -[multiversal]: {% link _overviews/scala3-book/ca-multiversal-equality.md %} -[extension]: {% link _overviews/scala3-book/ca-extension-methods.md %} -[givens]: {% link _overviews/scala3-book/ca-given-using-clauses.md %} -[opaque_types]: {% link _overviews/scala3-book/types-opaque-types.md %} diff --git a/_overviews/scala3-contribution/type-system.md b/_overviews/scala3-contribution/type-system.md new file mode 100644 index 0000000000..75250fb175 --- /dev/null +++ b/_overviews/scala3-contribution/type-system.md @@ -0,0 +1,140 @@ +--- +title: Types in dotc +type: chapter +description: This page discusses the representation of types in the compiler +num: 2 +previous-page: contribution-intro +--- + +You can find the definition of the `dotc` types in [dotty/tools/dotc/core/Types.scala][1] + +## Proxy Types and Ground Types +Types in `dotc` are divided into two semantic kinds: +- Ground Types (inheriting from either `CachedGroundType` or `UncachedGroundType`) +- Proxy Types (inheriting from either `CachedProxyType` or `UncachedProxyType`) + +A Ground Type is considered atomic, and refers to ... + +Here's a diagram, describing the semantic types available after the `typer` phase, derived from [dotty/tools/dotc/core/Types.scala][1]: + +``` +Type -+- proxy_type --+- NamedType --------+- TypeRef + | | \ + | +- SingletonType ----+- TermRef + | | +- ThisType + | | +- SuperType + | | +- ConstantType + | | +- TermParamRef + | | +- RecThis + | | +- SkolemType + | +- TypeParamRef + | +- RefinedOrRecType -+-- RefinedType + | | -+-- RecType + | +- AppliedType + | +- TypeBounds + | +- ExprType + | +- AnnotatedType + | +- TypeVar + | +- HKTypeLambda + | +- MatchType + | + +- ground_type -+- AndType + +- OrType + +- MethodOrPoly -----+-- PolyType + | +-- MethodType + +- ClassInfo + +- NoType + +- NoPrefix + +- ErrorType + +- WildcardType + +``` + +## Representations of types + +Type | Representation +------------------------- | ----------------------------- +`p.x.type` | `TermRef(p, x)` +`p#T` | `TypeRef(p, T)` +`p.x.T` == `p.x.type#T` | `TypeRef(TermRef(p, x), T)` +`this.type` | `ThisType` +`A & B` | `AndType(A, B)` +A \| B | `OrType(A, B)` +`=> T` | `ExprType(T)` +`p { refinedName }` | `RefinedType(p, refinedName)` +type of the value `super` | `SuperType` +`type T >: A <: B` | `TypeRef` with underlying type `RealTypeBounds(A, B)` +`type T = A` | `TypeRef` with underlying type `TypeAlias(A)` +`class p.C ...` | `ClassInfo(p, C, ...)` + +### Representation of methods ### +```scala +def f[A, B <: Ord[A]](x: A, y: B): Unit +``` +is represented as: + +```scala +val p = PolyType(List("A", "B"))( + List(TypeBounds(Nothing, Any), + TypeBounds(Nothing, + RefinedType(Ordering, + scala$math$Ordering$$T, TypeAlias(PolyParam(p, 0))))), + m) + +val m = MethodType(List("x", "y"), + List(PolyParam(p, 0), PolyParam(p, 1)))(Unit) +``` +(This is a slightly simplified version, e.g. we write `Unit` instead of +`TypeRef(TermRef(ThisType(TypeRef(NoPrefix,)),scala),Unit)`). + +Note that a PolyParam refers to a type parameter using its index (here A is 0 +and B is 1). + +## Subtyping checks ## +`topLevelSubType(tp1, tp2)` in [dotty/tools/dotc/core/TypeComparer.scala][4] +checks if `tp1` is a subtype of `tp2`. + +### Type rebasing ### +**FIXME**: This section is no longer accurate because +https://github.com/lampepfl/dotty/pull/331 changed the handling of refined +types. + +Consider [tests/pos/refinedSubtyping.scala][5] +```scala +class Test { + + class C { type T; type Coll } + + type T1 = C { type T = Int } + + type T11 = T1 { type Coll = Set[Int] } + + type T2 = C { type Coll = Set[T] } + + type T22 = T2 { type T = Int } + + var x: T11 = _ + var y: T22 = _ + + x = y + y = x + +} +``` +We want to do the subtyping checks recursively, since it would be nice if we +could check if `T22 <: T11` by first checking if `T2 <: T1`. To achieve this +recursive subtyping check, we remember that `T2#T` is really `T22#T`. This +procedure is called rebasing and is done by storing refined names in +`pendingRefinedBases` and looking them up using `rebase`. + +## Type caching ## +TODO + +## Type inference via constraint solving ## +TODO + +[1]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala +[2]: https://github.com/samuelgruetter/dotty/blob/classdiagrampdf/dotty-types.pdf +[3]: https://github.com/samuelgruetter/scaladiagrams/tree/print-descendants +[4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/TypeComparer.scala +[5]: https://github.com/lampepfl/dotty/blob/master/tests/pos/refinedSubtyping.scala From 28047b8316708abf1cc82812aac9290da4613d31 Mon Sep 17 00:00:00 2001 From: Vijay Lulla Date: Thu, 16 Sep 2021 14:25:52 -0400 Subject: [PATCH 0215/1704] Simplify the example used for case objects. (#2172) Co-authored-by: Julien Richard-Foy Co-authored-by: Seth Tisue --- _overviews/scala3-book/domain-modeling-tools.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_overviews/scala3-book/domain-modeling-tools.md b/_overviews/scala3-book/domain-modeling-tools.md index 8f055115ad..d4da1beda4 100644 --- a/_overviews/scala3-book/domain-modeling-tools.md +++ b/_overviews/scala3-book/domain-modeling-tools.md @@ -685,14 +685,14 @@ case class DecreaseVolume(amount: Int) extends Message case object StopPlaying extends Message ``` -Then in other parts of your code you can write methods like this, which use pattern matching to handle the incoming message: +Then in other parts of your code, you can write methods like this, which use pattern matching to handle the incoming message (assuming the methods `playSong`, `changeVolume`, and `stopPlayingSong` are defined somewhere else): ```scala -def handleMessages(msg: Message) = message match - case PlaySong(name) => playSong(name) - case IncreaseVolume(amt) => changeVolume(amt) - case DecreaseVolume(amt) => changeVolume(-amt) - case StopPlaying => stopPlayingMusic +def handleMessages(message: Message): Unit = message match + case PlaySong(name) => playSong(name) + case IncreaseVolume(amount) => changeVolume(amount) + case DecreaseVolume(amount) => changeVolume(-amount) + case StopPlaying => stopPlayingSong() ``` [ref-enums]: {{ site.scala3ref }}/enums/enums.html [adts]: {% link _overviews/scala3-book/types-adts-gadts.md %} From a4c3f13cecade0e81b1166ad3baa6cf8afc4af97 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 17 Sep 2021 16:46:39 +0200 Subject: [PATCH 0216/1704] more types --- _overviews/scala3-contribution/type-system.md | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/_overviews/scala3-contribution/type-system.md b/_overviews/scala3-contribution/type-system.md index 75250fb175..a2104f5d78 100644 --- a/_overviews/scala3-contribution/type-system.md +++ b/_overviews/scala3-contribution/type-system.md @@ -15,7 +15,7 @@ Types in `dotc` are divided into two semantic kinds: A Ground Type is considered atomic, and refers to ... -Here's a diagram, describing the semantic types available after the `typer` phase, derived from [dotty/tools/dotc/core/Types.scala][1]: +Here's a diagram, serving as the mental model of the most important and distinct types available after the `typer` phase, derived from [dotty/tools/dotc/core/Types.scala][1]: ``` Type -+- proxy_type --+- NamedType --------+- TypeRef @@ -56,16 +56,23 @@ Type | Representation ------------------------- | ----------------------------- `p.x.type` | `TermRef(p, x)` `p#T` | `TypeRef(p, T)` -`p.x.T` == `p.x.type#T` | `TypeRef(TermRef(p, x), T)` -`this.type` | `ThisType` +`p.x.T` and `p.x.type#T` | `TypeRef(TermRef(p, x), T)` +`this.type` | `ThisType(C)` where `C` is the enclosing class +`"hello"` | `ConstantType(Constant("hello"))` `A & B` | `AndType(A, B)` -A \| B | `OrType(A, B)` +`A | B` | `OrType(A, B)` +`A @foo` | `AnnotatedType(A, @foo)` `=> T` | `ExprType(T)` -`p { refinedName }` | `RefinedType(p, refinedName)` -type of the value `super` | `SuperType` -`type T >: A <: B` | `TypeRef` with underlying type `RealTypeBounds(A, B)` -`type T = A` | `TypeRef` with underlying type `TypeAlias(A)` -`class p.C ...` | `ClassInfo(p, C, ...)` +`p.C[A, B]` | `AppliedType(p.C, List(A, B))` +`p { type A = T }` | `RefinedType(p, A, T)` +`p { type X = Y }` | `RecType((z: RecThis) => p { type X = z.Y })`
when `X` and `Y` are members of `p` +`super.x.type` | `TermRef(SuperType(...), x)` +`type T >: A <: B` | `TypeRef(p, T)`
with underlying type `RealTypeBounds(A, B)` +`type T = A` | `TypeRef(p, T)`
with underlying type `TypeAlias(A)` +`class C` | `TypeRef(p, C)`
with underlying type `ClassInfo(p, C, ...)` +`[T <: A] =>> T` | `HKTypeLambda(T, <: A, TypeParamRef(T))` +`def f(x: A): x.type` | `MethodType(x, A, TermParamRef(x))` +`def f[T <: A]: T` | `PolyType(T, <: A, TypeParamRef(T))` ### Representation of methods ### ```scala From 36f1dd428a502164f50074306ff6f89ac7690b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=B3=E9=98=B3?= <260893248@qq.com> Date: Tue, 21 Sep 2021 12:27:20 +0800 Subject: [PATCH 0217/1704] =?UTF-8?q?=E6=98=BE=E7=A4=BA=20->=20=E6=98=BE?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hello, I am a chinese. We usually use “显式” instead of “显示” when we want to express the word "explicitly". “显示” in chinese means something like "display" or "show" I tried with google translate (https://translate.google.cn/?sl=en&tl=zh-CN&text=explicitly&op=translate) --- _zh-cn/tour/basics.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_zh-cn/tour/basics.md b/_zh-cn/tour/basics.md index 55bbc97a4f..c46e11c857 100644 --- a/_zh-cn/tour/basics.md +++ b/_zh-cn/tour/basics.md @@ -58,7 +58,7 @@ println(x) // 2 x = 3 // This does not compile. ``` -常量(`values`)的类型可以被推断,或者你也可以显示地声明类型,例如: +常量(`values`)的类型可以被推断,或者你也可以显式地声明类型,例如: ```scala mdoc:nest val x: Int = 1 + 1 @@ -76,7 +76,7 @@ x = 3 // This compiles because "x" is declared with the "var" keyword. println(x * x) // 9 ``` -和常量一样,你可以显示地声明类型: +和常量一样,你可以显式地声明类型: ```scala mdoc:nest var x: Int = 1 + 1 From e52d3234ac86c51a3e21184e8cf2f77044683d12 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 21 Sep 2021 17:41:31 +0200 Subject: [PATCH 0218/1704] more types --- _overviews/scala3-contribution/type-system.md | 173 ++++++++---------- 1 file changed, 79 insertions(+), 94 deletions(-) diff --git a/_overviews/scala3-contribution/type-system.md b/_overviews/scala3-contribution/type-system.md index a2104f5d78..e0d9c1e3cd 100644 --- a/_overviews/scala3-contribution/type-system.md +++ b/_overviews/scala3-contribution/type-system.md @@ -6,7 +6,85 @@ num: 2 previous-page: contribution-intro --- -You can find the definition of the `dotc` types in [dotty/tools/dotc/core/Types.scala][1] +## Common Types and their Representation + +Type representations in `dotc` derive from the class `dotty.tools.dotc.core.Types.Type`, +defined in [dotty/tools/dotc/core/Types.scala][1] + +### Types of Definitions + +The following table describes definitions in Scala 3, followed by the `dotc` representation of a reference +to the definition, followed by the `dotc` representation of the underlying type of the definition: + +Type | Reference | Underlying Type +------------------------|-----------------|------------------------- +`type Z >: A <: B` | `TypeRef(p, Z)` | `RealTypeBounds(A, B)` +`type Z = A` | `TypeRef(p, Z)` | `TypeAlias(A)` +`type F[T] = T match …` | `TypeRef(p, F)` | `MatchAlias([T] =>> T match …)` +`class C` | `TypeRef(p, C)` | `ClassInfo(p, C, …)` +`trait T` | `TypeRef(p, T)` | `ClassInfo(p, T, …)` +`object o` | `TermRef(p, o)` | `TypeRef(p, o$)`
where `o$` is a class with inner definitions of `o` +`def f(x: A): x.type` | `TermRef(p, f)` | `MethodType(x, A, TermParamRef(x))` +`def f[T <: A]: T` | `TermRef(p, f)` | `PolyType(T, <: A, TypeParamRef(T))` +`def f: T` | `TermRef(p, f)` | `ExprType(T)` +`val x: T` | `TermRef(p, x)` | `T` + +Note: in the types above `p` refers to the self-type of the enclosing scope of the definition. + +### Types of Values + +Type | Representation +--------------------------|------------------------------ +`p.x.type` | `TermRef(p, x)` +`p#T` | `TypeRef(p, T)` +`p.x.T` and `p.x.type#T` | `TypeRef(TermRef(p, x), T)` +`this.type` | `ThisType(C)` where `C` is the enclosing class +`"hello"` | `ConstantType(Constant("hello"))` +`A & B` | `AndType(A, B)` +`A | B` | `OrType(A, B)` +`A @foo` | `AnnotatedType(A, @foo)` +`=> T` | `ExprType(T)` +`[T <: A] =>> T` | `HKTypeLambda(T, <: A, TypeParamRef(T))` +`p.C[A, B]` | `AppliedType(p.C, List(A, B))` +`p { type A = T }` | `RefinedType(p, A, T)` +`p { type X = Y }` | `RecType((z: RecThis) => p { type X = z.Y })`
when `X` and `Y` are members of `p` +`super.x.type` | `TermRef(SuperType(…), x)` + +### Method Definition Types + +We saw above that method types can be represented + +```scala +def f[A, B <: Seq[A]](x: A, y: B): Unit +``` +can be constructed by: + +```scala +import dotty.tools.dotc.core.Types.* +import dotty.tools.dotc.core.Symbols.* +import dotty.tools.dotc.core.Contexts.* +import dotty.tools.dotc.core.Decorators.* + +given Context = … // contains the definitions of the compiler + +val f: Symbol = … // def f[A, B <: Seq[A]](x: A, y: B): Unit + +f.info = PolyType( + List("A".toTypeName, "B".toTypeName))( + pt => List( + TypeBounds(defn.NothingType, defn.AnyType), + TypeBounds(defn.NothingType, AppliedType(defn.SeqType, List(pt.newParamRef(0)))) + ), + pt => MethodType( + List("x".toTermName, "y".toTermName))( + mt => List(pt.newParamRef(0), pt.newParamRef(1)), + mt => defn.UnitType + ) +) +``` + +Note that `pt.newParamRef(0)` and `pt.newParamRef(1)` refers to the +type parameters `A` and `B` respectively. ## Proxy Types and Ground Types Types in `dotc` are divided into two semantic kinds: @@ -50,98 +128,5 @@ Type -+- proxy_type --+- NamedType --------+- TypeRef ``` -## Representations of types - -Type | Representation -------------------------- | ----------------------------- -`p.x.type` | `TermRef(p, x)` -`p#T` | `TypeRef(p, T)` -`p.x.T` and `p.x.type#T` | `TypeRef(TermRef(p, x), T)` -`this.type` | `ThisType(C)` where `C` is the enclosing class -`"hello"` | `ConstantType(Constant("hello"))` -`A & B` | `AndType(A, B)` -`A | B` | `OrType(A, B)` -`A @foo` | `AnnotatedType(A, @foo)` -`=> T` | `ExprType(T)` -`p.C[A, B]` | `AppliedType(p.C, List(A, B))` -`p { type A = T }` | `RefinedType(p, A, T)` -`p { type X = Y }` | `RecType((z: RecThis) => p { type X = z.Y })`
when `X` and `Y` are members of `p` -`super.x.type` | `TermRef(SuperType(...), x)` -`type T >: A <: B` | `TypeRef(p, T)`
with underlying type `RealTypeBounds(A, B)` -`type T = A` | `TypeRef(p, T)`
with underlying type `TypeAlias(A)` -`class C` | `TypeRef(p, C)`
with underlying type `ClassInfo(p, C, ...)` -`[T <: A] =>> T` | `HKTypeLambda(T, <: A, TypeParamRef(T))` -`def f(x: A): x.type` | `MethodType(x, A, TermParamRef(x))` -`def f[T <: A]: T` | `PolyType(T, <: A, TypeParamRef(T))` - -### Representation of methods ### -```scala -def f[A, B <: Ord[A]](x: A, y: B): Unit -``` -is represented as: - -```scala -val p = PolyType(List("A", "B"))( - List(TypeBounds(Nothing, Any), - TypeBounds(Nothing, - RefinedType(Ordering, - scala$math$Ordering$$T, TypeAlias(PolyParam(p, 0))))), - m) - -val m = MethodType(List("x", "y"), - List(PolyParam(p, 0), PolyParam(p, 1)))(Unit) -``` -(This is a slightly simplified version, e.g. we write `Unit` instead of -`TypeRef(TermRef(ThisType(TypeRef(NoPrefix,)),scala),Unit)`). - -Note that a PolyParam refers to a type parameter using its index (here A is 0 -and B is 1). - -## Subtyping checks ## -`topLevelSubType(tp1, tp2)` in [dotty/tools/dotc/core/TypeComparer.scala][4] -checks if `tp1` is a subtype of `tp2`. - -### Type rebasing ### -**FIXME**: This section is no longer accurate because -https://github.com/lampepfl/dotty/pull/331 changed the handling of refined -types. - -Consider [tests/pos/refinedSubtyping.scala][5] -```scala -class Test { - - class C { type T; type Coll } - - type T1 = C { type T = Int } - - type T11 = T1 { type Coll = Set[Int] } - - type T2 = C { type Coll = Set[T] } - - type T22 = T2 { type T = Int } - - var x: T11 = _ - var y: T22 = _ - - x = y - y = x - -} -``` -We want to do the subtyping checks recursively, since it would be nice if we -could check if `T22 <: T11` by first checking if `T2 <: T1`. To achieve this -recursive subtyping check, we remember that `T2#T` is really `T22#T`. This -procedure is called rebasing and is done by storing refined names in -`pendingRefinedBases` and looking them up using `rebase`. - -## Type caching ## -TODO - -## Type inference via constraint solving ## -TODO - [1]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala -[2]: https://github.com/samuelgruetter/dotty/blob/classdiagrampdf/dotty-types.pdf -[3]: https://github.com/samuelgruetter/scaladiagrams/tree/print-descendants [4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/TypeComparer.scala -[5]: https://github.com/lampepfl/dotty/blob/master/tests/pos/refinedSubtyping.scala From f84e3567343c2c835058a7939c3b0260d1d26481 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 22 Sep 2021 18:33:56 +0200 Subject: [PATCH 0219/1704] restructure, add lifecycle --- _overviews/scala3-contribution/arch-intro.md | 18 ++++ .../scala3-contribution/arch-lifecycle.md | 24 +++++ _overviews/scala3-contribution/arch-phases.md | 18 ++++ _overviews/scala3-contribution/arch-time.md | 97 +++++++++++++++++++ .../{type-system.md => arch-types.md} | 84 +++++++++++++--- .../scala3-contribution/contribution-intro.md | 21 +++- 6 files changed, 241 insertions(+), 21 deletions(-) create mode 100644 _overviews/scala3-contribution/arch-intro.md create mode 100644 _overviews/scala3-contribution/arch-lifecycle.md create mode 100644 _overviews/scala3-contribution/arch-phases.md create mode 100644 _overviews/scala3-contribution/arch-time.md rename _overviews/scala3-contribution/{type-system.md => arch-types.md} (57%) diff --git a/_overviews/scala3-contribution/arch-intro.md b/_overviews/scala3-contribution/arch-intro.md new file mode 100644 index 0000000000..27997522fd --- /dev/null +++ b/_overviews/scala3-contribution/arch-intro.md @@ -0,0 +1,18 @@ +--- +title: High Level Architecture +type: chapter +description: This page describes the high level architecture for the Scala 3 compiler. +num: 2 +previous-page: contribution-intro +next-page: arch-lifecycle +--- + +This chapter of the guide describes the architecture and concepts of `dotc`, +the Scala 3 compiler, including answers to questions such as: +- "What are the transformations that happen to my code?" +- "How do I run a compiler programatically?" +- "What are symbols, denotations, names and types?" +- "What is a compiler phase?" +- "What is the compiler Context?" + +and many more. diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md new file mode 100644 index 0000000000..4ae61347eb --- /dev/null +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -0,0 +1,24 @@ +--- +title: Compiler Overview +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 3 +previous-page: arch-intro +next-page: arch-phases +--- + +As mentioned in [what is a compiler?][1] `dotc` produces programs that can run on your machine, +first by verifying its input is a valid Scala program, and then transforming it into a +representation that can run on one of Scala's target platforms. + +## Intoducing the Compiler's Lifecycle + +More precisely, `dotc` divides its work into [runs][2] and [phases][3]. A run is a complete iteration +of a [compiler][4]'s phases over a list of input sources, where a compiler is an ordered collection of phases, responsible for making new runs. During a run, a phase is applied to each [compilation unit][5] before progressing to the next phase. Compilation units are the abstraction over the compiler's state associated with each source file [Read more about a compiler's lifecyle][6] + +[1]: {% link _overviews/scala3-contribution/contribution-intro.md %}/#what-is-a-compiler +[2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala +[3]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala +[4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala +[5]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala +[6]: {% link _overviews/scala3-contribution/arch-time.md %} diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md new file mode 100644 index 0000000000..74372cd054 --- /dev/null +++ b/_overviews/scala3-contribution/arch-phases.md @@ -0,0 +1,18 @@ +--- +title: Compiler Phases +type: section +description: This page describes the phases for the Scala 3 compiler. +num: 4 +previous-page: arch-lifecycle +next-page: arch-types +--- + +## Phases of the Compiler + +a + +#### Printing the phases of the Compiler + +``` +$ scalac -Xshow-phases +``` diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md new file mode 100644 index 0000000000..2c7c10d31f --- /dev/null +++ b/_overviews/scala3-contribution/arch-time.md @@ -0,0 +1,97 @@ +--- +title: Time in the Compiler +type: section +description: This page describes the concepts of time in the Scala 3 compiler. +num: 6 +previous-page: arch-types +next-page: +--- + +Conceptually, the `dotc` compiler's job is to maintain views of various +artifacts associated with source code at all points in time. But what is +*time* for `dotc`? In fact, it is a combination of compiler runs and compiler +phases. + +The *hours* of the compiler's clocks are measured in compiler [runs]. Every run +creates a new hour, which follows all the compiler runs (hours) that happened +before. `dotc` is designed to be used as an incremental compiler that can +support incremental builds, as well as interactions in an IDE and a REPL. This +means that new runs can occur quite frequently. At the extreme, every +keystroke in an editor or REPL can potentially launch a new compiler run, so +potentially an "hour" of compiler time might take only a fraction of a second +in real time. + +The *minutes* of the compiler's clocks are measured in phases. At every +compiler run, the compiler cycles through a number of [phases]. The list of +phases is defined in the [Compiler]object There are currently about 60 phases +per run, so the minutes/hours analogy works out roughly. After every phase the +view the compiler has of the world changes: trees are transformed, types are +gradually simplified from Scala types to JVM types, definitions are rearranged, +and so on. + +Many pieces in the information compiler are time-dependent. For instance, a +Scala symbol representing a definition has a type, but that type will usually +change as one goes from the higher-level Scala view of things to the +lower-level JVM view. There are different ways to deal with this. Many +compilers change the type of a symbol destructively according to the "current +phase". Another, more functional approach might be to have different symbols +representing the same definition at different phases, which each symbol +carrying a different immutable type. `dotc` employs yet another scheme, which +is inspired by functional reactive programming (FRP): Symbols carry not a +single type, but a function from compiler phase to type. So the type of a +symbol is a time-indexed function, where time ranges over compiler phases. + +Typically, the definition of a symbol or other quantity remains stable for a +number of phases. This leads us to the concept of a [period]. Conceptually, +period is an interval of some given phases in a given compiler run. Periods +are conceptually represented by three pieces of information + +* the ID of the current run, +* the ID of the phase starting the period +* the number of phases in the period + +All three pieces of information are encoded in a value class over a 32 bit +integer. Here's the API for class `Period`: + +```scala +class Period(val code: Int) extends AnyVal { + def runId: RunId // The run identifier of this period. + def firstPhaseId: PhaseId // The first phase of this period + def lastPhaseId: PhaseId // The last phase of this period + def phaseId: PhaseId // The phase identifier of this single-phase period + + def containsPhaseId(id: PhaseId): Boolean + def contains(that: Period): Boolean + def overlaps(that: Period): Boolean + + def & (that: Period): Period + def | (that: Period): Period +} +``` + +We can access the parts of a period using `runId`, `firstPhaseId`, +`lastPhaseId`, or using `phaseId` for periods consisting only of a single +phase. They return `RunId` or `PhaseId` values, which are aliases of `Int`. +`containsPhaseId`, `contains` and `overlaps` test whether a period contains a +phase or a period as a sub-interval, or whether the interval overlaps with +another period. Finally, `&` and `|` produce the intersection and the union of +two period intervals (the union operation `|` takes as `runId` the `runId` of +its left operand, as periods spanning different `runId`s cannot be constructed. + +Periods are constructed using two `apply` methods: + +```scala +object Period { + /** The single-phase period consisting of given run id and phase id */ + def apply(rid: RunId, pid: PhaseId): Period + + /** The period consisting of given run id, and lo/hi phase ids */ + def apply(rid: RunId, loPid: PhaseId, hiPid: PhaseId): Period +} +``` + +As a sentinel value there's `Nowhere`, a period that is empty. + +[runs]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/Run.scala +[phases]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Phases.scala +[period]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Periods.scala diff --git a/_overviews/scala3-contribution/type-system.md b/_overviews/scala3-contribution/arch-types.md similarity index 57% rename from _overviews/scala3-contribution/type-system.md rename to _overviews/scala3-contribution/arch-types.md index e0d9c1e3cd..d5463b5429 100644 --- a/_overviews/scala3-contribution/type-system.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -1,9 +1,10 @@ --- -title: Types in dotc -type: chapter +title: Compiler Types +type: section description: This page discusses the representation of types in the compiler -num: 2 -previous-page: contribution-intro +num: 5 +previous-page: arch-phases +next-page: arch-time --- ## Common Types and their Representation @@ -13,26 +14,30 @@ defined in [dotty/tools/dotc/core/Types.scala][1] ### Types of Definitions -The following table describes definitions in Scala 3, followed by the `dotc` representation of a reference -to the definition, followed by the `dotc` representation of the underlying type of the definition: +The following table describes definitions in Scala 3, followed by the `dotc` representation +of two types - a reference to the definition, and then its underlying type: -Type | Reference | Underlying Type +Definition | Reference | Underlying Type ------------------------|-----------------|------------------------- `type Z >: A <: B` | `TypeRef(p, Z)` | `RealTypeBounds(A, B)` `type Z = A` | `TypeRef(p, Z)` | `TypeAlias(A)` `type F[T] = T match …` | `TypeRef(p, F)` | `MatchAlias([T] =>> T match …)` `class C` | `TypeRef(p, C)` | `ClassInfo(p, C, …)` `trait T` | `TypeRef(p, T)` | `ClassInfo(p, T, …)` -`object o` | `TermRef(p, o)` | `TypeRef(p, o$)`
where `o$` is a class with inner definitions of `o` +`object o` | `TermRef(p, o)` | `TypeRef(p, o$)` where `o$` is a class `def f(x: A): x.type` | `TermRef(p, f)` | `MethodType(x, A, TermParamRef(x))` `def f[T <: A]: T` | `TermRef(p, f)` | `PolyType(T, <: A, TypeParamRef(T))` -`def f: T` | `TermRef(p, f)` | `ExprType(T)` -`val x: T` | `TermRef(p, x)` | `T` +`def f: A` | `TermRef(p, f)` | `ExprType(A)` +`(x: => A)` | `TermRef(p, x)` | `ExprType(A)` where `x` is a parameter +`val x: A` | `TermRef(p, x)` | `A` -Note: in the types above `p` refers to the self-type of the enclosing scope of the definition. +Note: in the types above `p` refers to the self-type of the enclosing scope of +the definition, or `NoPrefix` for local definitions and parameters. ### Types of Values +The following types may appear in part of the type of an expression: + Type | Representation --------------------------|------------------------------ `p.x.type` | `TermRef(p, x)` @@ -43,21 +48,64 @@ Type | Representation `A & B` | `AndType(A, B)` `A | B` | `OrType(A, B)` `A @foo` | `AnnotatedType(A, @foo)` -`=> T` | `ExprType(T)` `[T <: A] =>> T` | `HKTypeLambda(T, <: A, TypeParamRef(T))` `p.C[A, B]` | `AppliedType(p.C, List(A, B))` `p { type A = T }` | `RefinedType(p, A, T)` `p { type X = Y }` | `RecType((z: RecThis) => p { type X = z.Y })`
when `X` and `Y` are members of `p` `super.x.type` | `TermRef(SuperType(…), x)` +### Introspect Representation of Types + +You can inspect types with the main method `dotty.tools.printTypes` from the sbt shell, +passing at least two arguments. The first argument is a string that introduces some +Scala definitions, the following arguments are type signatures, (i.e. the return type +of a definition) that are allowed to reference definitions from the first argument. + +The type signatures will then be printed, displaying their internal structure, using +the same representation that can later be used in pattern matching to decompose the type. + +Here, we inspect a refinement of a class `Box`: +```bash +$ sbt +> scala3-compiler-bootstrapped/Test/runMain dotty.tools.printTypes "class Box { def x: Any }" "Box { def x: Int }" +RefinedType(TypeRef(ThisType(TypeRef(NoPrefix,module class )),class Box),x,ExprType(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class )),object scala),class Int))) +``` + +You can also pass the empty string as the first +argument, e.g. to inspect a standard library type: +```bash +$ sbt +> scala3-compiler-bootstrapped/Test/runMain dotty.tools.printTypes "" "1 *: EmptyTuple" +AppliedType(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class )),object scala),class *:),List(ConstantType(Constant(1)), TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class scala)),object Tuple$package),type EmptyTuple))) +``` + +If you want to further inspect the types, and not just print them, the object `dotty.tools.DottyTypeStealer` has a +method `stealType`. It takes the same arguments as `printTypes`, but returns both a `Context` containing the +definitions passed, along with the list of types: +```scala +// compiler/test/dotty/tools/DottyTypeStealer.scala +object DottyTypeStealer extends DottyTest { + def stealType(source: String, typeStrings: String*): (Context, List[Type]) = { + ... + } +} +``` +Any test source within `compiler/test` can then call `stealType` for custom purposes. + +## Constructing Types + ### Method Definition Types -We saw above that method types can be represented +We saw above that method definitions can have an underlying type of +either `PolyType`, `MethodType`, or `ExprType`. `PolyType` and `MethodType` +may be mixed recursively however, and either can appear as the result type of the other. + +Take this example as given: ```scala def f[A, B <: Seq[A]](x: A, y: B): Unit ``` -can be constructed by: +it can be constructed by the following code: ```scala import dotty.tools.dotc.core.Types.* @@ -89,9 +137,13 @@ type parameters `A` and `B` respectively. ## Proxy Types and Ground Types Types in `dotc` are divided into two semantic kinds: - Ground Types (inheriting from either `CachedGroundType` or `UncachedGroundType`) -- Proxy Types (inheriting from either `CachedProxyType` or `UncachedProxyType`) +- Proxy Types (inheriting from `TypeProxy` via either `CachedProxyType` or `UncachedProxyType`) -A Ground Type is considered atomic, and refers to ... +A Proxy Type is anything that can be considered to be an abstraction of another type, +which can be accessed by the `underlying` method of the `TypeProxy` class. It's dual, the +Ground Type has no meaningful underlying type, typically it is the type of method and class +definitions, but also union types and intersection types, along with utility types of the +compiler. Here's a diagram, serving as the mental model of the most important and distinct types available after the `typer` phase, derived from [dotty/tools/dotc/core/Types.scala][1]: diff --git a/_overviews/scala3-contribution/contribution-intro.md b/_overviews/scala3-contribution/contribution-intro.md index 1f418667f9..038faf5da0 100644 --- a/_overviews/scala3-contribution/contribution-intro.md +++ b/_overviews/scala3-contribution/contribution-intro.md @@ -4,14 +4,14 @@ type: chapter description: This page describes the format of the contribution guide for the Scala 3 compiler. num: 1 previous-page: -next-page: type-system +next-page: arch-intro --- -This guide documents the inner workings of the Scala 3 compiler, `dotc`, -and is intended to give new contributors the knowledge they need to -become productive and fix issues or implement new features. +This guide is intended to give new contributors the knowledge they need to +become productive and fix issues or implement new features in Scala 3. It +also documents the inner workings of the Scala 3 compiler, `dotc`. -### A Note on Compiler Stability +### A Note on Stability Keep in mind that the code for `dotc` is subject to change, with no guarantees of stability, so the ideas discussed in this guide may @@ -23,3 +23,14 @@ on [GitHub](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3 `dotc` is built with Scala 3, fully utilising its [new features](/scala3/new-in-scala3.html). It is recommended that you first have some familiarity with Scala 3 to get the most out of this guide. You can learn more in the [language reference](/scala3/reference/overview.html). + +### What is a Compiler? + +A compiler is a program that takes as input text, representing a program in one language +and produces as output the same program, written in another programming language. + +#### The Scala Compiler + +As an example, `dotc` takes text input, verifies that it is a valid Scala program +and then produces as output the same program, but written in Java bytecode, and optionally +in SJSIR when producing Scala.js output. From c8dc386fa61ba17c4292821031515eefe2d7eb61 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Thu, 23 Sep 2021 09:14:59 +0200 Subject: [PATCH 0220/1704] add procedures chapter --- _overviews/scala3-contribution/arch-intro.md | 4 +- .../scala3-contribution/arch-lifecycle.md | 2 +- _overviews/scala3-contribution/arch-phases.md | 2 +- _overviews/scala3-contribution/arch-time.md | 2 +- _overviews/scala3-contribution/arch-types.md | 2 +- .../scala3-contribution/contribution-intro.md | 2 +- .../procedures-efficiency.md | 22 +++++ .../procedures-inspection.md | 22 +++++ .../scala3-contribution/procedures-intro.md | 27 ++++++ .../procedures-navigation.md | 46 ++++++++++ .../procedures-reproduce.md | 84 +++++++++++++++++++ .../scala3-contribution/procedures-setup.md | 19 +++++ .../scala3-contribution/procedures-testing.md | 32 +++++++ scala3/guides.md | 2 +- 14 files changed, 260 insertions(+), 8 deletions(-) create mode 100644 _overviews/scala3-contribution/procedures-efficiency.md create mode 100644 _overviews/scala3-contribution/procedures-inspection.md create mode 100644 _overviews/scala3-contribution/procedures-intro.md create mode 100644 _overviews/scala3-contribution/procedures-navigation.md create mode 100644 _overviews/scala3-contribution/procedures-reproduce.md create mode 100644 _overviews/scala3-contribution/procedures-setup.md create mode 100644 _overviews/scala3-contribution/procedures-testing.md diff --git a/_overviews/scala3-contribution/arch-intro.md b/_overviews/scala3-contribution/arch-intro.md index 27997522fd..76307ab0d4 100644 --- a/_overviews/scala3-contribution/arch-intro.md +++ b/_overviews/scala3-contribution/arch-intro.md @@ -2,8 +2,8 @@ title: High Level Architecture type: chapter description: This page describes the high level architecture for the Scala 3 compiler. -num: 2 -previous-page: contribution-intro +num: 9 +previous-page: procedures-testing next-page: arch-lifecycle --- diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 4ae61347eb..4f2882af34 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -2,7 +2,7 @@ title: Compiler Overview type: section description: This page describes the high level architecture for the Scala 3 compiler. -num: 3 +num: 10 previous-page: arch-intro next-page: arch-phases --- diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 74372cd054..bbc62f892d 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -2,7 +2,7 @@ title: Compiler Phases type: section description: This page describes the phases for the Scala 3 compiler. -num: 4 +num: 11 previous-page: arch-lifecycle next-page: arch-types --- diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 2c7c10d31f..e845282258 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -2,7 +2,7 @@ title: Time in the Compiler type: section description: This page describes the concepts of time in the Scala 3 compiler. -num: 6 +num: 13 previous-page: arch-types next-page: --- diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index d5463b5429..376ac10d06 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -2,7 +2,7 @@ title: Compiler Types type: section description: This page discusses the representation of types in the compiler -num: 5 +num: 12 previous-page: arch-phases next-page: arch-time --- diff --git a/_overviews/scala3-contribution/contribution-intro.md b/_overviews/scala3-contribution/contribution-intro.md index 038faf5da0..ca39679251 100644 --- a/_overviews/scala3-contribution/contribution-intro.md +++ b/_overviews/scala3-contribution/contribution-intro.md @@ -4,7 +4,7 @@ type: chapter description: This page describes the format of the contribution guide for the Scala 3 compiler. num: 1 previous-page: -next-page: arch-intro +next-page: procedures-intro --- This guide is intended to give new contributors the knowledge they need to diff --git a/_overviews/scala3-contribution/procedures-efficiency.md b/_overviews/scala3-contribution/procedures-efficiency.md new file mode 100644 index 0000000000..e4e4b4ef1e --- /dev/null +++ b/_overviews/scala3-contribution/procedures-efficiency.md @@ -0,0 +1,22 @@ +--- +title: Getting Efficient +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 7 +previous-page: procedures-inspection +next-page: procedures-testing +--- + +At the Navigation and Inspections sections, we have covered some techniques of working with the compiler. One repeating theme is that there are certain things that need to be done repeatedly and a lot. These are, e.g.: + +- Navigating stack frames +- Printing variables in certain ways +- Instrumenting variable definitions with tracers + +These seemingly tiny and insignificant things take a lot of time. They also reduce productivity: if the cost (in terms of time and effort) of navigating to a stack frame is high, you'll think twice before doing so, and possibly miss valuable information. + +So, if you're doing those things really frequently, it's a good idea to spend some time scripting your editor to allow you to do them fast. E.g. you can set up your editor to take you to a stack frame when you click it or create text editor macros to instrument variables for printing. + +An example of how it is done for Sublime Text 3 is [here](https://github.com/anatoliykmetyuk/scala-debug-sublime). + +True, it takes some time to script your editor, but if you spend a lot of time with issues, it pays off. diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md new file mode 100644 index 0000000000..1d9013db66 --- /dev/null +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -0,0 +1,22 @@ +--- +title: Inspection +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 6 +previous-page: procedures-navigation +next-page: procedures-efficiency +--- + +## Inspecting variables in-place + +Frequently you need to know what a particular variable's value is. The most robust way to get this info is good old `println`. + +When printing a variable, it's always a good idea to call `show` on that variable: `println(x.show)`. `show` is defined on many types and returns a human-readable string. So, if called e.g. on a tree, you'll get the code that tree signifies as opposed to the bare AST. + +Sometimes you need to print flags. Flags is a metadata attached to trees containing information such as whether a class is abstract, comes from Java, what modifiers a variable has (private, protected etc) and so on. Flags are stored in a single `Long` value each bit of which represents whether a particular flag is set. + +To print flags, you can use the `flagsString` method, e.g. `println(x.flagsString)`. + +## Obtaining debug output from the compiler + +There are many compiler options that provide verbose debug output when compiling a file. You can find the full list in [ScalaSettings.scala](https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala) file. One particularly useful one is `-Xprint:` or `-Xprint:all`. It prints trees after a given phase or after all phases. The way the compiler works is that it parses your code into ASTs and then pipes those trees through several dozen phases. Each phase transforms the trees in a certain way. This flag allows you to see exactly how. diff --git a/_overviews/scala3-contribution/procedures-intro.md b/_overviews/scala3-contribution/procedures-intro.md new file mode 100644 index 0000000000..86a0192e06 --- /dev/null +++ b/_overviews/scala3-contribution/procedures-intro.md @@ -0,0 +1,27 @@ +--- +title: Compiler Procedures +type: chapter +description: This page introduces the compiler procedures for the Scala 3 compiler. +num: 2 +previous-page: contribution-intro +next-page: procedures-setup +--- + +[Set-up the Repo][1] + +[Reproduce the issue][2] + +[Navigation][3] + +[Inspection][4] + +[Getting Efficient][5] + +[Creating a test and submitting a PR][6] + +[1]: {% link _overviews/scala3-contribution/procedures-setup.md %} +[2]: {% link _overviews/scala3-contribution/procedures-reproduce.md %} +[3]: {% link _overviews/scala3-contribution/procedures-navigation.md %} +[4]: {% link _overviews/scala3-contribution/procedures-inspection.md %} +[5]: {% link _overviews/scala3-contribution/procedures-efficiency.md %} +[6]: {% link _overviews/scala3-contribution/procedures-testing.md %} diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md new file mode 100644 index 0000000000..f1b731f47c --- /dev/null +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -0,0 +1,46 @@ +--- +title: Navigation +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 5 +previous-page: procedures-reproduce +next-page: procedures-inspection +--- + +Navigation answers the questions such as: where does the error happen in a codebase? Where is a particular object created? Where is a particular value assigned to a variable? + +## Navigating to the error occurrence site + +Is done via `-Ydebug-error` compiler flag, e.g. `scala3/scalac -Ydebug-error Test.scala`. This flag forces a stack trace to be printed each time an error happens, from the site where it happened. + +## Where was a particular object created? + +This question arises, e.g., if you realised there's an object on the error site that shouldn't be there, most probably causing the error. So, in attempt to rectify the offending object, you want to know where it was created. + +This can be done by injecting a *tracer* into the class of an instance in question. A tracer is the following variable: `val tracer = Thread.currentThread.getStackTrace.mkString("\n")`. When placed as a top-level definition at a class, it will contain a stack trace pointing at where exactly its particular instance was created. This is because, as a top-level `val`, it will be evaluated on construction of the instance in question. + +Once you've injected a tracer into a class, you can `println` that tracer from the error site or other site you've found the object in question. + +### Procedure + +1. Determine the type of the object in question. You can use one of the following techniques to do so: + - Use your Metals-integrated IDE to determine the type + - Use `println` to print the object or `getClass` of that object + - Look at the context of where you encountered that object +2. Locate the type definition of the type of that object +3. Add a top-level definition `val tracer = Thread.currentThread.getStackTrace.mkString("\n")` to that type definition. +4. `println(x.tracer)` (where `x` is the name of the object in question) from the original site where you encountered the object. This will give you the stack trace pointing to the place where the constructor of that object was invoked. + +## Where was a particular value assigned to a variable? + +Say you have a certain type assigned to a denotation and you would like to know why the denotation was typed that way. A type in the denotation is a `var myInfo: Type` so you can't just trace the creation site of that `Type` as was described before. You want to know the *assignment*, not *creation*, site. + +This is done similarly to how you trace the creation site. Conceptually, you need to create a proxy for that variable that will log every write operation to it. Practically, if you are trying to trace the assignments to a variable `myInfo` of type `Type`, first, rename it to `myInfo_debug`. Then, insert the following at the same level as that variable: + +```scala +var tracer = "", +def myInfo: Type = myInfo_debug, +def myInfo_=(x: Type) = { tracer = Thread.currentThread.getStackTrace.mkString("\n"); myInfo_debug = x } +``` + +The procedure for figuring out an assignment site to a variable is the same as figuring out the creation site, except for the step (2) where you do as described in this section. diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md new file mode 100644 index 0000000000..407734c163 --- /dev/null +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -0,0 +1,84 @@ +--- +title: Reproduce the issue +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 4 +previous-page: procedures-setup +next-page: procedures-navigation +--- + +An issue usually contains some code that manifests some undesired behaviour. It's important to have a quick and well-defined way to reproduce the issue. + +A good way to run an issue is from the sbt console opened in the Dotty project: `scalac `. `scalac` is an sbt task defined for the Dotty project that compiles a given file. + +## Dotty Issue Workspace + +To simplify issue reproduction, [dotty-issue-workspace](https://github.com/anatoliykmetyuk/dotty-issue-workspace) was created. It does the same thing for sbt as shell scripts do for bash commands: it allows to bundle sbt commands for issue reproduction in one file and then run them from the Dotty project's sbt console. + +The procedure of reproducing an issue with dotty-issue-workspace installed (see its README to see how) is as follows: + +1. Create a folder for an issue and put the files reproducing the issue in that folder. +2. Create a file `launch.iss` and write there all sbt commands needed to reproduce an issue. See below for examples. +3. From the sbt console opened in the Dotty repo, run `issue `. E.g. if the folder name is `i1`, the command will be `issue i1`. This will execute all the sbt commands in `launch.iss` file one by one from the Dotty project. If you've set up dotty-issue-workspace as described in its README, the `issue` task will know where to find the folder by its name. + +### Examples + +#### Basic + +The most basic usage for the `launch.iss` is as follows: + +```bash +scala3/scalac $here/Test.scala +``` + +This will compile the `Test.scala` file in the current issue folder. `$here` is a magic variable that will be replaced by the absolute path to the issue folder. + +#### Defining the Output Folder + +Compiling files form Dotty's sbt shell has an undesirable effect of outputting class files to the Dotty repository directory thus polluting it. You can explicitly specify where class files should go as follows: + +```bash +$ rm -rv *.tasty *.class out || true # Remove any compiler-generated artefacts. `|| true` is needed in case no files were deleted. +$ mkdir out # Create an output directory where all the compiler artefacts go + +scala3/scalac -d $here/out $here/Test.scala # Invoke the compiler task defined by the Dotty sbt project +``` + +Lines starting from `$` are bash commands and not sbt ones. + +#### Specifying the file to compile with a task argument + +What if you have several files in your issue, say `Test.scala` and `Main.scala`, and you want to compile them selectively? If the name of your issue is `foo`, you want to be able to compile `Test.scala` file via `issue foo Test` command, and `Main.scala` – with `issue foo Main`. You can achieve this via the following `launch.iss`: + +```bash +$ rm -rv *.tasty *.class out || true # Remove any compiler-generated artefacts. `|| true` is needed in case no files were deleted. +$ mkdir out # Create an output directory where all the compiler artefacts go + +scala3/scalac -d $here/out $here/$1.scala # Invoke the compiler task defined by the Dotty sbt project +``` + +You can refer to arguments passed to the `issue ` command using the dollar notation: `$1` for the first argument, `$2` for the second and so on. + +This is useful, e.g., if you have one source that reproduces the issue and another one, very close to the issue reproduction, but failing to manifest the issue. + +#### All together + +The following template also includes some debug compiler flags, commented out. The advantage of having them is, if you need one them, you can enable it quickly by uncommenting it – as opposed to looking it up and typing it in your existing command. Put your favourite flags there for quick usage. + +```bash +$ rm -rv *.tasty *.class out || true # Remove any compiler-generated artefacts. `|| true` is needed in case no files were deleted. +$ mkdir out # Create an output directory where all the compiler artefacts go + +scala3/scalac # Invoke the compiler task defined by the Dotty sbt project + -d $here/out # All the artefacts go to the `out` folder created earlier + # -Xprint:typer # Useful debug flags, commented out and ready for quick usage. Should you need one, you can quickly access it by uncommenting it. + # -Ydebug-error + # -Yprint-debug + # -Yprint-debug-owners + # -Yshow-tree-ids + # -Ydebug-tree-with-id 340 + # -Ycheck:all + $here/$1.scala # Invoke the compiler on the file passed as the second argument to the `issue` command. E.g. `issue foo Hello` will compile `Hello.scala` assuming the issue folder name is `foo`. + +scala3/scala -classpath $here/out Test # Run the class `Test` generated by the compiler run (assuming the compiled issue contains such an entry point, otherwise comment this line) +``` diff --git a/_overviews/scala3-contribution/procedures-setup.md b/_overviews/scala3-contribution/procedures-setup.md new file mode 100644 index 0000000000..e243f52bab --- /dev/null +++ b/_overviews/scala3-contribution/procedures-setup.md @@ -0,0 +1,19 @@ +--- +title: Set-up the Repo +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 3 +previous-page: procedures-intro +next-page: procedures-reproduce +--- + +To clone the repo, run the following: + +```bash +git clone https://github.com/lampepfl/dotty.git +cd dotty +``` + +You can use [Metals](https://scalameta.org/metals/) with your favourite text editor for things like code completion. + +You need to have [sbt](https://www.scala-sbt.org/) to work with the repo, as it is defined as an sbt project. diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md new file mode 100644 index 0000000000..05f2f4e260 --- /dev/null +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -0,0 +1,32 @@ +--- +title: Creating a test and submitting a PR +type: section +description: This page describes the high level architecture for the Scala 3 compiler. +num: 8 +previous-page: procedures-efficiency +next-page: arch-intro +--- + +Once you solved an issue, you need to get the solution into the main repo. To do that, you need to prepare a PR that includes the tests for the issue. Hence you need to know how to work with Dotty's testing infrastructure. + +Tests live in the `tests/` folder at the root of the Dotty repo. They are categorised further by the virtue of placing them in the subfolders of the `tests` folder. Three main tests categories are: + +- `tests/pos` – tests that should compile: pass if compiles successfully. +- `tests/neg` – should not compile: pass if fails compilation. Useful, e.g., to test an expected compiler error. +- `tests/run` – these tests not only compile but are also run. + +Individual tests are, by convention, named after the number of the issue they are fixing – e.g. `i12345`. + +If your issue is reproducible by only one file, put that file under an appropriate category. For example, if your issue is about getting rid of a spurious compiler error (that is a code that doesn't compile should, in fact, be compilable), you can create a file `tests/pos/i12345.scala`. + +If you need more than one file to reproduce an issue, create a folder instead of a file – e.g. `tests/pos/i12345/`, and put all the Scala files that are needed to reproduce the issue there. + +If you have multiple files per issue, they will be compiled together by the same compiler run – *joint compilation*. Sometimes though you want them to be compiled one after another, available to each other via classpath – *separate compilation*. To achieve that, add suffix `_n` to the file name, where `n` is an integer defining the order in which the file will compile. E.g. if you have two files, `Lib.scala` and `Main.scala`, and you need them compiled separately – Lib first, Main second, then name them `Lib_1.scala` and `Main_2.scala`. + +`run` tests also have `*.check` files. These contain the expected output of an issue. They are named after the issue they are checking, e.g. `i12345.check` for `i12345.scala`. + +To run your test, use the `testCompilation i123456` command. + +The group tests – `pos`, `neg` etc – are defined in [CompilationTests.scala](https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala). If you want to run a group of tests, e.g. `pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. + +The above is the most common test cases but not all of them. E.g. REPL, scripting and command line tools aren't covered by the above. The sources for the tests are located at `[compiler/test](https://github.com/lampepfl/dotty/blob/master/compiler/test/)`, so if your use case isn't covered by this guide, you may need to consult the codebase. diff --git a/scala3/guides.md b/scala3/guides.md index dd33c3480d..d7215df2db 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -19,7 +19,7 @@ guides: url: "/scala3/guides/tasty-overview.html" description: "An overview over the TASTy format aimed at end-users of the Scala language." - title: "Contribution Guide" - by: Jamie Thompson + by: Jamie Thompson, Anatolii Kmetiuk icon: gears url: "/scala3/guides/contribution/contribution-intro.html" description: "Guide to the Scala 3 Compiler and fixing an issue" From 0eb5757b725d398c420290ea03ee02fbb42c9a4f Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 23 Sep 2021 13:31:00 +0200 Subject: [PATCH 0221/1704] enhance guide for inspecting types --- _overviews/scala3-contribution/arch-types.md | 45 ++-------- .../procedures-inspection.md | 85 +++++++++++++++++++ 2 files changed, 91 insertions(+), 39 deletions(-) diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index 376ac10d06..b954bb850c 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -14,6 +14,10 @@ defined in [dotty/tools/dotc/core/Types.scala][1] ### Types of Definitions +> In the tables below we see the internal representation of Scala types in `dotc`, +> in fact, you can reproduce the results with a helper program [dotty.tools.printTypes][2], +> its usage and integration into your debugging workflow is [described here][3]. + The following table describes definitions in Scala 3, followed by the `dotc` representation of two types - a reference to the definition, and then its underlying type: @@ -54,44 +58,6 @@ Type | Representation `p { type X = Y }` | `RecType((z: RecThis) => p { type X = z.Y })`
when `X` and `Y` are members of `p` `super.x.type` | `TermRef(SuperType(…), x)` -### Introspect Representation of Types - -You can inspect types with the main method `dotty.tools.printTypes` from the sbt shell, -passing at least two arguments. The first argument is a string that introduces some -Scala definitions, the following arguments are type signatures, (i.e. the return type -of a definition) that are allowed to reference definitions from the first argument. - -The type signatures will then be printed, displaying their internal structure, using -the same representation that can later be used in pattern matching to decompose the type. - -Here, we inspect a refinement of a class `Box`: -```bash -$ sbt -> scala3-compiler-bootstrapped/Test/runMain dotty.tools.printTypes "class Box { def x: Any }" "Box { def x: Int }" -RefinedType(TypeRef(ThisType(TypeRef(NoPrefix,module class )),class Box),x,ExprType(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class )),object scala),class Int))) -``` - -You can also pass the empty string as the first -argument, e.g. to inspect a standard library type: -```bash -$ sbt -> scala3-compiler-bootstrapped/Test/runMain dotty.tools.printTypes "" "1 *: EmptyTuple" -AppliedType(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class )),object scala),class *:),List(ConstantType(Constant(1)), TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class scala)),object Tuple$package),type EmptyTuple))) -``` - -If you want to further inspect the types, and not just print them, the object `dotty.tools.DottyTypeStealer` has a -method `stealType`. It takes the same arguments as `printTypes`, but returns both a `Context` containing the -definitions passed, along with the list of types: -```scala -// compiler/test/dotty/tools/DottyTypeStealer.scala -object DottyTypeStealer extends DottyTest { - def stealType(source: String, typeStrings: String*): (Context, List[Type]) = { - ... - } -} -``` -Any test source within `compiler/test` can then call `stealType` for custom purposes. - ## Constructing Types ### Method Definition Types @@ -181,4 +147,5 @@ Type -+- proxy_type --+- NamedType --------+- TypeRef ``` [1]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala -[4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/TypeComparer.scala +[2]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala +[3]: {% link _overviews/scala3-contribution/procedures-inspection.md %}/#inspecting-representation-of-types diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index 1d9013db66..13e5be1d66 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -20,3 +20,88 @@ To print flags, you can use the `flagsString` method, e.g. `println(x.flagsStrin ## Obtaining debug output from the compiler There are many compiler options that provide verbose debug output when compiling a file. You can find the full list in [ScalaSettings.scala](https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala) file. One particularly useful one is `-Xprint:` or `-Xprint:all`. It prints trees after a given phase or after all phases. The way the compiler works is that it parses your code into ASTs and then pipes those trees through several dozen phases. Each phase transforms the trees in a certain way. This flag allows you to see exactly how. + +## Inspecting representation of types + +> [click here][2] to learn more about types in `dotc`. + +If you are curious about the representation of a type, say `[T] =>> List[T]`, +you can use a helper program [dotty.tools.printTypes][1], +it prints the internal representation of types, along with their class. It can be +invoked from the sbt shell with three arguments as follows: +```bash +sbt:scala3> scala3-compiler-bootstrapped/Test/runMain + dotty.tools.printTypes + + + +``` + +- The first argument, `source`, is an arbitrary string that introduces some Scala definitions. +It may be the empty string `""`. +- The second argument, `kind`, determines the format of the following arguments, +accepting one of the following options: + - `rhs` - accept return types of definitions + - `class` - accept signatures for classes + - `method` - accept signatures for methods + - `type` - accept signatures for type definitions + - The empty string `""`, in which case `rhs` will be assumed. +- The remaining arguments are type signature strings, accepted in the format determined by +`kind`, and collected into a sequence `typeStrings`. Signatures are the part of a definition +that comes after its name, (or a simple type in the case of `rhs`) and may reference +definitions introduced by the `source` argument. + +Each one of `typeStrings` is then printed, displaying their internal structure, alongside their class. + +### Examples + +Here, given a previously defined `class Box { type X }`, we inspect the return type `Box#X`: +```bash +sbt:scala3> scala3-compiler-bootstrapped/Test/runMain +> dotty.tools.printTypes +> "class Box { type X }" +> "rhs" +> "Box#X" +[info] running (fork) dotty.tools.printTypes "class Box { type X }" rhs Box#X +TypeRef(TypeRef(ThisType(TypeRef(NoPrefix,module class )),class Box),type X) [class dotty.tools.dotc.core.Types$CachedTypeRef] +``` + +Here are some other examples you can follow: +- `...printTypes "" "class" "[T] extends Seq[T] {}"` +- `...printTypes "" "method" "(x: Int): x.type"` +- `...printTypes "" "type" "<: Int" "= [T] =>> List[T]"` + +### Don't just print: extracting further information + +`dotty.tools.printTypes` is useful to to at a glance see the representation +of a type, but sometimes we want to extract more. We can instead use the +method `dotty.tools.DottyTypeStealer.stealType`. With the same inputs as `printTypes`, +it returns both a `Context` containing the definitions passed, along with the list of types. + +As a worked example let's create a test case to verify the structure of `Box#X` that we saw earlier: +```scala +import dotty.tools.dotc.core.Contexts.Context +import dotty.tools.dotc.core.Types.* + +import org.junit.Test + +import dotty.tools.DottyTypeStealer, DottyTypeStealer.Kind + +class StealBox: + + @Test + def stealBox: Unit = + val (ictx, List(rhs)) = + DottyTypeStealer.stealType("class Box { type X }", Kind.rhs, "Box#X") + + given Context = ictx + + rhs match + case X @ TypeRef(Box @ TypeRef(ThisType(empty), _), _) => + assert(Box.name.toString == "Box") + assert(X.name.toString == "X") + assert(empty.name.toString == "") +``` + +[1]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala +[2]: {% link _overviews/scala3-contribution/arch-types.md %} From cbb372f97cdb725251446f0888fe5352b930cb1c Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 23 Sep 2021 18:29:12 +0200 Subject: [PATCH 0222/1704] describe phases --- .../scala3-contribution/arch-lifecycle.md | 73 ++++++++++++++++++- _overviews/scala3-contribution/arch-phases.md | 66 ++++++++++++++++- 2 files changed, 133 insertions(+), 6 deletions(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 4f2882af34..387ae3f796 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -11,10 +11,69 @@ As mentioned in [what is a compiler?][1] `dotc` produces programs that can run o first by verifying its input is a valid Scala program, and then transforming it into a representation that can run on one of Scala's target platforms. -## Intoducing the Compiler's Lifecycle +## Introducing the Compiler's Lifecycle -More precisely, `dotc` divides its work into [runs][2] and [phases][3]. A run is a complete iteration -of a [compiler][4]'s phases over a list of input sources, where a compiler is an ordered collection of phases, responsible for making new runs. During a run, a phase is applied to each [compilation unit][5] before progressing to the next phase. Compilation units are the abstraction over the compiler's state associated with each source file [Read more about a compiler's lifecyle][6] +#### Core +At a high level, `dotc` centers its work around a [compiler][4], which maintains an ordered +list of [phases][3], and is responsible for creating new [runs][2]. +A run is a complete iteration of the compiler's phases over a list of input sources. +A compiler is designed to be reusable and can create many runs over its lifetime. + +#### Runs +During a run, the input sources are converted to [compilation units][5] (i.e. the abstraction of +compiler state associated with each input source); then iteratively: a single phase is applied to +every compilation unit before progressing to the next phase. + +#### Phases +A phase is an abstract transformation over a compilation unit, it is usually responsible +for transforming the trees and types representing the code of a source file. +[You can read more about phases here][9]. + +#### Drivers + +The core compiler also requires a lot of state to be initialised before use, such as [settings][8] +and the [Context]. For convenience, the [Driver] class contains high level functions for +configuring the compiler and invoking it programatically. The object [Main] inherits from `Driver` +and is invoked by the `scalac` script. + + +> [Read more about a compiler's lifecyle][6]. + +## Code Structure + +The code of the compiler is found in the package [dotty.tools][7], +containing the following sub-packages: +```scala +tools // contains helpers and the `scala` generic runner +├── backend // Compiler backends (currently JVM and JS) +├── dotc // The main compiler, with subpackages: +│ ├── ast // Abstract syntax trees +│   ├── classpath +│   ├── config // Compiler configuration, settings, platform specific definitions. +│   ├── core // Core data structures and operations, with specific subpackages for: +│   │   ├── classfile // Reading of Java classfiles into core data structures +│   │   ├── tasty // Reading and writing of TASTY files to/from core data structures +│   │   └── unpickleScala2 // Reading of Scala2 symbol information into core data structures +│   ├── decompiler // pretty printing TASTY as code +│   ├── fromtasty // driver for recompilation from TASTY +│   ├── interactive // presentation compiler and code completions +│   ├── parsing // Scanner and parser +│   ├── plugins // compile plugin definitions +│   ├── printing // Pretty-printing trees, types and other data +│   ├── profile // internals for profiling the compiler +│   ├── quoted // internals for quoted reflection +│   ├── reporting // Reporting of error messages, warnings and other info. +│   ├── rewrites // Helpers for rewriting Scala 2's constructs into Scala 3's. +│   ├── sbt // Helpers for communicating with the Zinc compiler. +│   ├── semanticdb // Helpers for exporting semanticdb from trees. +│   ├── transform // Miniphases and helpers for tree transformations. +│   ├── typer // Type-checking +│   └── util // General purpose utility classes and modules. +├── io // Helper modules for file access and classpath handling. +├── repl // REPL driver and interaction with the terminal +├── runner // helpers for the `scala` generic runner script +└── scripting // scala runner for the -script argument +``` [1]: {% link _overviews/scala3-contribution/contribution-intro.md %}/#what-is-a-compiler [2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala @@ -22,3 +81,11 @@ of a [compiler][4]'s phases over a list of input sources, where a compiler is an [4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala [5]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala [6]: {% link _overviews/scala3-contribution/arch-time.md %} +[7]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools +[8]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala +[9]: {% link _overviews/scala3-contribution/arch-phases.md %} +[Main]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Main.scala +[Driver]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Driver.scala +[Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala +[Run]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala +[Context]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Contexts.scala diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index bbc62f892d..34ff4eb0f6 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -7,12 +7,72 @@ previous-page: arch-lifecycle next-page: arch-types --- -## Phases of the Compiler - -a +As described in the [compiler overview][1], `dotc` is divided into a list of [phases][Phase], +specified in the [Compiler] class. #### Printing the phases of the Compiler +a flattened list of all the phases can be displayed by invoking +the compiler with the `-Xshow-phases` flag: ``` $ scalac -Xshow-phases ``` + +## Phase Groups + +In class [Compiler] we can access the list of phases with the method `phases`: + +```scala +def phases: List[List[Phase]] = + frontendPhases ::: picklerPhases ::: transformPhases ::: backendPhases +``` + +We see that phases are actually grouped into sublists, given by the signature +`List[List[Phase]]`; that is, each sublist forms a phase group that is then *fused* into a +single tree traversal when a [Run] is executed. + +Phase fusion allows each phase of a group to be small and modular, +(each performing a single function), while reducing the number of tree traversals +and increasing performance. + +Phases are able to be grouped together if they inherit from [MiniPhase]. + +## Phase Categories + +*TODO: edit* + +Phases fall into four categories: + +* Frontend phases: `Frontend`, `PostTyper` and `Pickler`. `FrontEnd` parses the + source programs and generates untyped abstract syntax trees, which are then + typechecked and transformed into typed abstract syntax trees. `PostTyper` + performs checks and cleanups that require a fully typed program. In + particular, it + + - creates super accessors representing `super` calls in traits + - creates implementations of synthetic (compiler-implemented) methods + - avoids storing parameters passed unchanged from subclass to superclass in + duplicate fields. + + Finally `Pickler` serializes the typed syntax trees produced by the frontend + as TASTY data structures. + +* High-level transformations: All phases from `FirstTransform` to `Erasure`. + Most of these phases transform syntax trees, expanding high-level constructs + to more primitive ones. The last phase in the group, `Erasure` translates all + types into types supported directly by the JVM. To do this, it performs + another type checking pass, but using the rules of the JVM's type system + instead of Scala's. + +* Low-level transformations: All phases from `ElimErasedValueType` to + `CollectSuperCalls`. These further transform trees until they are essentially a + structured version of Java bytecode. + +* Code generators: These map the transformed trees to Java classfiles or + .sjsir files. + +[1]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}/#phases +[Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala +[Phase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala +[MiniPhase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/MegaPhase.scala +[Run]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala From b785fd6ac97a2b26cea96c72c8f6f1fc37ea3cd8 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 23 Sep 2021 19:12:06 +0200 Subject: [PATCH 0223/1704] add to inspection page --- _overviews/scala3-contribution/arch-lifecycle.md | 6 +++++- .../scala3-contribution/procedures-inspection.md | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 387ae3f796..a441ff9e86 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -26,7 +26,10 @@ every compilation unit before progressing to the next phase. #### Phases A phase is an abstract transformation over a compilation unit, it is usually responsible -for transforming the trees and types representing the code of a source file. +for transforming the trees and types representing the code of a source file. The primary phases of +the compiler are the `parser`, which converts text that matches Scala's +[syntax][10] into abstract syntax trees, ASTs, and the `typer`, which checks that +trees conform to expected types, and performs other operations such as implicit search. [You can read more about phases here][9]. #### Drivers @@ -84,6 +87,7 @@ tools // contains helpers and the `scala` generic runner [7]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools [8]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala [9]: {% link _overviews/scala3-contribution/arch-phases.md %} +[10]: {% link _scala3-reference/syntax.md %} [Main]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Main.scala [Driver]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Driver.scala [Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index 13e5be1d66..f05676b4c0 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -19,7 +19,19 @@ To print flags, you can use the `flagsString` method, e.g. `println(x.flagsStrin ## Obtaining debug output from the compiler -There are many compiler options that provide verbose debug output when compiling a file. You can find the full list in [ScalaSettings.scala](https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala) file. One particularly useful one is `-Xprint:` or `-Xprint:all`. It prints trees after a given phase or after all phases. The way the compiler works is that it parses your code into ASTs and then pipes those trees through several dozen phases. Each phase transforms the trees in a certain way. This flag allows you to see exactly how. +There are many compiler options that provide verbose debug output when compiling a file. +You can find the full list in [ScalaSettings.scala] file. One particularly useful one +is `-Xprint:` or `-Xprint:all`. It prints trees after a given phase or after +all phases. As described in the [compiler lifecycle][3] each phase transforms the trees +and types that represent your code in a certain way. This flag allows you to see exactly how. + +## Stopping the compiler early +Sometimes you may want to stop the compiler after a certain phase, for example to prevent +knock-on errors from occurring from a bug in an earlier phase. Use the flag +`-Ystop-after:` to prevent any phases executing afterwards. + +> This flag is particularly useful when you want to inspect the effect of a single miniphase +> of a phase group, use this in conjunction with the `-Xprint` flag. ## Inspecting representation of types @@ -105,3 +117,5 @@ class StealBox: [1]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala [2]: {% link _overviews/scala3-contribution/arch-types.md %} +[3]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}/#phases +[ScalaSettings.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala From d6491a22bd4ba52b2113edbfc2d0a344b56606f4 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 24 Sep 2021 12:08:22 +0200 Subject: [PATCH 0224/1704] enhance phases --- _overviews/scala3-contribution/arch-phases.md | 83 +++++++++++++------ 1 file changed, 56 insertions(+), 27 deletions(-) diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 34ff4eb0f6..5df3b0872e 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -39,40 +39,69 @@ Phases are able to be grouped together if they inherit from [MiniPhase]. ## Phase Categories -*TODO: edit* - -Phases fall into four categories: - -* Frontend phases: `Frontend`, `PostTyper` and `Pickler`. `FrontEnd` parses the - source programs and generates untyped abstract syntax trees, which are then - typechecked and transformed into typed abstract syntax trees. `PostTyper` - performs checks and cleanups that require a fully typed program. In - particular, it - - - creates super accessors representing `super` calls in traits - - creates implementations of synthetic (compiler-implemented) methods - - avoids storing parameters passed unchanged from subclass to superclass in - duplicate fields. - - Finally `Pickler` serializes the typed syntax trees produced by the frontend - as TASTY data structures. - -* High-level transformations: All phases from `FirstTransform` to `Erasure`. +Phases fall into four categories, allowing customisation by sub-classes of [Compiler]: + +### `frontendPhases` +In the main compiler these include [parser], [typer], [posttyper], +[prepjsinterop] and phases for producing SemanticDB and communicating with the +incremental compiler Zinc. +The [parser] reads source programs and generates untyped abstract syntax trees, which +in [typer] are then typechecked and transformed into typed abstract syntax trees. +Following is [posttyper], performing checks and cleanups that require a fully typed program. +In particular, it +- creates super accessors representing `super` calls in traits +- creates implementations of compiler-implemented methods, +such as `equals` and `hashCode` for case classes. +- marks [compilation units][2] that require inline expansion, or quote pickling +- simplifies trees of erased definitions +- checks variance of type parameters +- mark parameters passed unchanged from subclass to superclass for later pruning. + +### `picklerPhases` +These phases start with [pickler], which serializes typed trees +produced by the `frontendPhases` into TASTy format. Following is [inlining], +which expand calls to inline methods, and [postInlining] providing implementations +of the Mirror framework for inlined calls. +Finally are [staging], which ensures that quotes conform to the +Phase Consistency Principle (PCP), and [pickleQuotes] which converts quoted +trees to embedded TASTy strings. + +### `transformPhases` +These phases are concerned with tranformation into lower-level forms +suitable for the runtime system, with two sub-groupings: +- High-level transformations: All phases from [firstTransform] to [erasure]. Most of these phases transform syntax trees, expanding high-level constructs - to more primitive ones. The last phase in the group, `Erasure` translates all - types into types supported directly by the JVM. To do this, it performs - another type checking pass, but using the rules of the JVM's type system - instead of Scala's. - -* Low-level transformations: All phases from `ElimErasedValueType` to + to more primitive ones. + - Some phases perform further checks on more primitive trees, + e.g. [refchecks] verifies that no abstract methods exist in concrete classes, + and [initChecker] checks that fields are not used before initialisation. + - The last phase in the group, [erasure] translates all + types into types supported directly by the JVM. To do this, it performs + another type checking pass, but using the rules of the JVM's type system + instead of Scala's. +- Low-level transformations: All phases from `ElimErasedValueType` to `CollectSuperCalls`. These further transform trees until they are essentially a structured version of Java bytecode. -* Code generators: These map the transformed trees to Java classfiles or - .sjsir files. +### `backendPhases` +These map the transformed trees to Java classfiles or SJSIR files. [1]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}/#phases +[2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala [Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala [Phase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala [MiniPhase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/MegaPhase.scala [Run]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala +[parser]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/parsing/ParserPhase.scala +[typer]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/typer/TyperPhase.scala +[posttyper]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/PostTyper.scala +[prepjsinterop]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/sjs/PrepJSInterop.scala +[pickler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Pickler.scala +[inlining]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Inlining.scala +[postInlining]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/PostInlining.scala +[staging]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Staging.scala +[pickleQuotes]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/PickleQuotes.scala +[refchecks]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/typer/RefChecks.scala +[initChecker]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/init/Checker.scala +[firstTransform]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/FirstTransform.scala +[erasure]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Erasure.scala From 4ed3de34332dcc553462f419236a378eaa5c7c3e Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 24 Sep 2021 16:28:40 +0200 Subject: [PATCH 0225/1704] improve phases, types and get started --- _overviews/scala3-contribution/arch-types.md | 33 ++++++----- .../scala3-contribution/contribution-intro.md | 2 +- .../scala3-contribution/procedures-intro.md | 9 +-- .../procedures-navigation.md | 20 ++++++- .../procedures-reproduce.md | 2 +- .../scala3-contribution/procedures-setup.md | 19 ------ _overviews/scala3-contribution/start-intro.md | 59 +++++++++++++++++++ 7 files changed, 99 insertions(+), 45 deletions(-) delete mode 100644 _overviews/scala3-contribution/procedures-setup.md create mode 100644 _overviews/scala3-contribution/start-intro.md diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index b954bb850c..ca3cb45830 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -10,16 +10,20 @@ next-page: arch-time ## Common Types and their Representation Type representations in `dotc` derive from the class `dotty.tools.dotc.core.Types.Type`, -defined in [dotty/tools/dotc/core/Types.scala][1] +defined in [Types.scala]. The `toString` method on `Type` will display types in a +format corresponding to the backing data structure, e.g. `ExprType(...)` +corresponds to `class ExprType`, defined in [Types.scala]. -### Types of Definitions +> You can inspect the representation of any type using the [dotty.tools.printTypes][2] +> script, its usage and integration into your debugging workflow is [described here][3]. -> In the tables below we see the internal representation of Scala types in `dotc`, -> in fact, you can reproduce the results with a helper program [dotty.tools.printTypes][2], -> its usage and integration into your debugging workflow is [described here][3]. +### Types of Definitions The following table describes definitions in Scala 3, followed by the `dotc` representation -of two types - a reference to the definition, and then its underlying type: +of two types - a reference to the definition, and then its underlying type. + +**Note**: in the following types, `p` refers to the self-type of the enclosing scope of +the definition, or `NoPrefix` for local definitions and parameters. Definition | Reference | Underlying Type ------------------------|-----------------|------------------------- @@ -35,27 +39,24 @@ Definition | Reference | Underlying Type `(x: => A)` | `TermRef(p, x)` | `ExprType(A)` where `x` is a parameter `val x: A` | `TermRef(p, x)` | `A` -Note: in the types above `p` refers to the self-type of the enclosing scope of -the definition, or `NoPrefix` for local definitions and parameters. - ### Types of Values The following types may appear in part of the type of an expression: Type | Representation --------------------------|------------------------------ -`p.x.type` | `TermRef(p, x)` -`p#T` | `TypeRef(p, T)` -`p.x.T` and `p.x.type#T` | `TypeRef(TermRef(p, x), T)` +`x.y.type` | `TermRef(x, y)` +`X#T` | `TypeRef(X, T)` +`x.y.T` and `x.y.type#T` | `TypeRef(TermRef(x, y), T)` `this.type` | `ThisType(C)` where `C` is the enclosing class `"hello"` | `ConstantType(Constant("hello"))` `A & B` | `AndType(A, B)` `A | B` | `OrType(A, B)` `A @foo` | `AnnotatedType(A, @foo)` `[T <: A] =>> T` | `HKTypeLambda(T, <: A, TypeParamRef(T))` -`p.C[A, B]` | `AppliedType(p.C, List(A, B))` -`p { type A = T }` | `RefinedType(p, A, T)` -`p { type X = Y }` | `RecType((z: RecThis) => p { type X = z.Y })`
when `X` and `Y` are members of `p` +`x.C[A, B]` | `AppliedType(x.C, List(A, B))` +`C { type A = T }` | `RefinedType(C, A, T)`
when `T` is not a member of `C` +`C { type X = Y }` | `RecType(RefinedType(C, X, z.Y))`
when `X` and `Y` are members of `C`
and `z` is a `RecThis` over the enclosing `RecType` `super.x.type` | `TermRef(SuperType(…), x)` ## Constructing Types @@ -146,6 +147,6 @@ Type -+- proxy_type --+- NamedType --------+- TypeRef ``` -[1]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala +[Types.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala [2]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala [3]: {% link _overviews/scala3-contribution/procedures-inspection.md %}/#inspecting-representation-of-types diff --git a/_overviews/scala3-contribution/contribution-intro.md b/_overviews/scala3-contribution/contribution-intro.md index ca39679251..eb8a82b613 100644 --- a/_overviews/scala3-contribution/contribution-intro.md +++ b/_overviews/scala3-contribution/contribution-intro.md @@ -4,7 +4,7 @@ type: chapter description: This page describes the format of the contribution guide for the Scala 3 compiler. num: 1 previous-page: -next-page: procedures-intro +next-page: start-intro --- This guide is intended to give new contributors the knowledge they need to diff --git a/_overviews/scala3-contribution/procedures-intro.md b/_overviews/scala3-contribution/procedures-intro.md index 86a0192e06..40a40f2017 100644 --- a/_overviews/scala3-contribution/procedures-intro.md +++ b/_overviews/scala3-contribution/procedures-intro.md @@ -2,13 +2,11 @@ title: Compiler Procedures type: chapter description: This page introduces the compiler procedures for the Scala 3 compiler. -num: 2 -previous-page: contribution-intro -next-page: procedures-setup +num: 3 +previous-page: start-intro +next-page: procedures-reproduce --- -[Set-up the Repo][1] - [Reproduce the issue][2] [Navigation][3] @@ -19,7 +17,6 @@ next-page: procedures-setup [Creating a test and submitting a PR][6] -[1]: {% link _overviews/scala3-contribution/procedures-setup.md %} [2]: {% link _overviews/scala3-contribution/procedures-reproduce.md %} [3]: {% link _overviews/scala3-contribution/procedures-navigation.md %} [4]: {% link _overviews/scala3-contribution/procedures-inspection.md %} diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index f1b731f47c..65f373f308 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -9,9 +9,23 @@ next-page: procedures-inspection Navigation answers the questions such as: where does the error happen in a codebase? Where is a particular object created? Where is a particular value assigned to a variable? -## Navigating to the error occurrence site +## Increasing Logging Output +Sometimes we can detect erroneous states producing an error by analysing logging output that is not +normally visible: -Is done via `-Ydebug-error` compiler flag, e.g. `scala3/scalac -Ydebug-error Test.scala`. This flag forces a stack trace to be printed each time an error happens, from the site where it happened. +- general logging within a phase can be enabled with the `-Ylog` compiler flag, such as + - `-Ylog:,,...` for individual phases + - `-Ylog:all` for all phases. +- Additionally, various parts of the compiler have specialised logging objects, defined in [Printers]. + Change any of the printers of interest from `noPrinter` to `default` and increase output specialised + to that domain. + +## Navigating to Where an Error is Generated + +Add the `-Ydebug-error` compiler flag, e.g. `scala3/scalac -Ydebug-error Test.scala`. +This flag forces a stack trace to be printed each time an error happens, from the site where it occurred. + +Analysing the trace will give you a clue about the objects involved in producing the error. ## Where was a particular object created? @@ -44,3 +58,5 @@ def myInfo_=(x: Type) = { tracer = Thread.currentThread.getStackTrace.mkString(" ``` The procedure for figuring out an assignment site to a variable is the same as figuring out the creation site, except for the step (2) where you do as described in this section. + +[Printers]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/Printers.scala diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index 407734c163..4a47e61392 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -3,7 +3,7 @@ title: Reproduce the issue type: section description: This page describes the high level architecture for the Scala 3 compiler. num: 4 -previous-page: procedures-setup +previous-page: procedures-intro next-page: procedures-navigation --- diff --git a/_overviews/scala3-contribution/procedures-setup.md b/_overviews/scala3-contribution/procedures-setup.md deleted file mode 100644 index e243f52bab..0000000000 --- a/_overviews/scala3-contribution/procedures-setup.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Set-up the Repo -type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 3 -previous-page: procedures-intro -next-page: procedures-reproduce ---- - -To clone the repo, run the following: - -```bash -git clone https://github.com/lampepfl/dotty.git -cd dotty -``` - -You can use [Metals](https://scalameta.org/metals/) with your favourite text editor for things like code completion. - -You need to have [sbt](https://www.scala-sbt.org/) to work with the repo, as it is defined as an sbt project. diff --git a/_overviews/scala3-contribution/start-intro.md b/_overviews/scala3-contribution/start-intro.md new file mode 100644 index 0000000000..62cb831bee --- /dev/null +++ b/_overviews/scala3-contribution/start-intro.md @@ -0,0 +1,59 @@ +--- +title: Getting Started +type: Chapter +description: This page describes the high level architecture for the Scala 3 compiler. +num: 2 +previous-page: contribution-intro +next-page: procedures-intro +--- + +## First Steps + +### Required Tools + +#### Essential + +- [git] is essential for managing the Scala 3 code, and contributing to GitHub, where the code is hosted. + +- The following dependencies can be installed with [Coursier] CLI by running `cs setup`, (see + [Single command Scala setup][cs-setup-blog]) including: + - A Java Virtual Machine (JDK 8 or higher), required for running the build tool. Verify that JVM is + installed by running the following command in a terminal: `java -version`. + - [sbt], the build tool required to build the Scala 3 compiler and libraries. + +#### Nice To Have + +An IDE, such as [Metals] will help you develop in Scala 3 with features such as goto-definition, +and with the [VS Code][vs-code] text editor you can even create interactive worksheets for an +iterative workflow. + +### Clone the Code +The code of Scala 3 is hosted on GitHub at [lampepfl/dotty]. + +Download the code with the following commands (shown using a `bash` compatible shell): + +```bash +$ cd workspace # or, replace `workspace` with any other directory you prefer +$ git clone https://github.com/lampepfl/dotty.git +$ cd dotty +``` + +## Verify your installation + +To verify that we can build the code, we will use `scala3/scalac` and `scala3/scala` to build +and run a test case: +```bash +$ sbt +sbt:scala3> scala3/scalac tests/pos/HelloWorld.scala +sbt:scala3> scala3/scala HelloWorld +hello world +``` + + +[git]: https://git-scm.com +[cs-setup-blog]: https://alexarchambault.github.io/posts/2020-09-21-cs-setup.html +[sbt]: https://www.scala-sbt.org/ +[Metals]: https://scalameta.org/metals/ +[Coursier]: https://get-coursier.io/docs/cli-installation +[vs-code]: https://code.visualstudio.com +[lampepfl/dotty]: https://github.com/lampepfl/dotty From 1708d9aada4f122e5940f54654f919db20fd9166 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 24 Sep 2021 17:36:11 +0200 Subject: [PATCH 0226/1704] add cheatsheet --- _overviews/scala3-contribution/arch-intro.md | 4 +- .../scala3-contribution/arch-lifecycle.md | 4 +- _overviews/scala3-contribution/arch-phases.md | 2 +- _overviews/scala3-contribution/arch-time.md | 2 +- _overviews/scala3-contribution/arch-types.md | 2 +- .../procedures-cheatsheet.md | 20 ++++++++++ .../procedures-efficiency.md | 4 +- .../procedures-inspection.md | 8 ++-- .../scala3-contribution/procedures-intro.md | 2 +- .../procedures-navigation.md | 4 +- .../procedures-reproduce.md | 6 +-- .../scala3-contribution/procedures-testing.md | 38 ++++++++++++++++--- 12 files changed, 71 insertions(+), 25 deletions(-) create mode 100644 _overviews/scala3-contribution/procedures-cheatsheet.md diff --git a/_overviews/scala3-contribution/arch-intro.md b/_overviews/scala3-contribution/arch-intro.md index 76307ab0d4..d402d185a7 100644 --- a/_overviews/scala3-contribution/arch-intro.md +++ b/_overviews/scala3-contribution/arch-intro.md @@ -1,8 +1,8 @@ --- title: High Level Architecture type: chapter -description: This page describes the high level architecture for the Scala 3 compiler. -num: 9 +description: This page introduces the high level architecture for the Scala 3 compiler. +num: 10 previous-page: procedures-testing next-page: arch-lifecycle --- diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index a441ff9e86..a2d18ac83f 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -1,8 +1,8 @@ --- title: Compiler Overview type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 10 +description: This page describes the lifecycle for the Scala 3 compiler. +num: 11 previous-page: arch-intro next-page: arch-phases --- diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 5df3b0872e..aa07e2ef7d 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -2,7 +2,7 @@ title: Compiler Phases type: section description: This page describes the phases for the Scala 3 compiler. -num: 11 +num: 12 previous-page: arch-lifecycle next-page: arch-types --- diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index e845282258..670f6ebb91 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -2,7 +2,7 @@ title: Time in the Compiler type: section description: This page describes the concepts of time in the Scala 3 compiler. -num: 13 +num: 14 previous-page: arch-types next-page: --- diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index ca3cb45830..f75078e769 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -2,7 +2,7 @@ title: Compiler Types type: section description: This page discusses the representation of types in the compiler -num: 12 +num: 13 previous-page: arch-phases next-page: arch-time --- diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md new file mode 100644 index 0000000000..ecb3ac1e5d --- /dev/null +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -0,0 +1,20 @@ +--- +title: Cheatsheets +type: section +description: This page describes a cheatsheet for working with the Scala 3 compiler. +num: 4 +previous-page: procedures-intro +next-page: procedures-reproduce +--- + +## sbt Commands + +| Command | Description | +|-----------------------------------|------------------------------------------------------------------| +| `scala3/scalac sandbox/Foo.scala` | Compile the given file – path relative to the dotty directory. | +| `scala3/scala Foo` | Run class `Foo` with dotty directory on the classpath | +| `repl` | Start a REPL with the bootstrapped compiler | +| testOnly
dotty.tools.dotc.CompilationTests
-- *pos
| Run test `pos` from `CompilationTests` suite. | +| `testCompilation tests/pos` | Run test suites on files in the `tests/pos` directory. | +| `scala3-bootstrapped/test` | Run all tests for Scala 3 | +| scala3-compiler/Test/runMain
dotty.tools.printTypes
| Print types underlying representation | diff --git a/_overviews/scala3-contribution/procedures-efficiency.md b/_overviews/scala3-contribution/procedures-efficiency.md index e4e4b4ef1e..782b9ce712 100644 --- a/_overviews/scala3-contribution/procedures-efficiency.md +++ b/_overviews/scala3-contribution/procedures-efficiency.md @@ -1,8 +1,8 @@ --- title: Getting Efficient type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 7 +description: This page describes improving efficiency of debugging the Scala 3 compiler. +num: 8 previous-page: procedures-inspection next-page: procedures-testing --- diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index f05676b4c0..a10535d611 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -1,8 +1,8 @@ --- title: Inspection type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 6 +description: This page describes inspecting semantic values in the Scala 3 compiler. +num: 7 previous-page: procedures-navigation next-page: procedures-efficiency --- @@ -42,7 +42,7 @@ you can use a helper program [dotty.tools.printTypes][1], it prints the internal representation of types, along with their class. It can be invoked from the sbt shell with three arguments as follows: ```bash -sbt:scala3> scala3-compiler-bootstrapped/Test/runMain +sbt:scala3> scala3-compiler/Test/runMain dotty.tools.printTypes @@ -69,7 +69,7 @@ Each one of `typeStrings` is then printed, displaying their internal structure, Here, given a previously defined `class Box { type X }`, we inspect the return type `Box#X`: ```bash -sbt:scala3> scala3-compiler-bootstrapped/Test/runMain +sbt:scala3> scala3-compiler/Test/runMain > dotty.tools.printTypes > "class Box { type X }" > "rhs" diff --git a/_overviews/scala3-contribution/procedures-intro.md b/_overviews/scala3-contribution/procedures-intro.md index 40a40f2017..278cb73cf6 100644 --- a/_overviews/scala3-contribution/procedures-intro.md +++ b/_overviews/scala3-contribution/procedures-intro.md @@ -4,7 +4,7 @@ type: chapter description: This page introduces the compiler procedures for the Scala 3 compiler. num: 3 previous-page: start-intro -next-page: procedures-reproduce +next-page: procedures-cheatsheet --- [Reproduce the issue][2] diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index 65f373f308..d788f46d99 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -1,8 +1,8 @@ --- title: Navigation type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 5 +description: This page describes navigating around the Scala 3 compiler. +num: 6 previous-page: procedures-reproduce next-page: procedures-inspection --- diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index 4a47e61392..78958b2048 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -1,9 +1,9 @@ --- title: Reproduce the issue type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 4 -previous-page: procedures-intro +description: This page describes reproducing an issue in the Scala 3 compiler. +num: 5 +previous-page: procedures-cheatsheet next-page: procedures-navigation --- diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 05f2f4e260..a208da3151 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -1,13 +1,30 @@ --- -title: Creating a test and submitting a PR +title: Creating Tests before a Pull Request type: section -description: This page describes the high level architecture for the Scala 3 compiler. -num: 8 +description: This page describes test procedures in the Scala 3 compiler. +num: 9 previous-page: procedures-efficiency next-page: arch-intro --- -Once you solved an issue, you need to get the solution into the main repo. To do that, you need to prepare a PR that includes the tests for the issue. Hence you need to know how to work with Dotty's testing infrastructure. +Once you solved an issue, you likely want to see your change added to the [Scala 3 repo][lampepfl/dotty]. +To do that, you need to prepare a [pull request][pull-request] that includes tests that verify the issue is resolved. +Hence you need to know how to work with Dotty's testing infrastructure. + +## Running all Tests + +To run all tests of Scala 3, including for compiler, REPL, libraries and more, run the following in sbt: + +```bash +$ sbt +> scala3-bootstrapped/test +``` + +Often however it is not necessary to test everything if your changes are localised to one area, +we will see in the following sections the different kinds of tests, and how +to run individual tests. + +## Tests Overview Tests live in the `tests/` folder at the root of the Dotty repo. They are categorised further by the virtue of placing them in the subfolders of the `tests` folder. Three main tests categories are: @@ -27,6 +44,15 @@ If you have multiple files per issue, they will be compiled together by the same To run your test, use the `testCompilation i123456` command. -The group tests – `pos`, `neg` etc – are defined in [CompilationTests.scala](https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala). If you want to run a group of tests, e.g. `pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. +The group tests – `pos`, `neg` etc – are defined in [CompilationTests.scala]. If you want to run a group of tests, e.g. +`pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. + +The above is the most common test cases but not all of them. E.g. REPL, scripting and command line tools aren't covered +by the above. The sources for the tests are located at [compiler/test], so if your use case isn't covered by this guide, +you may need to consult the codebase. + -The above is the most common test cases but not all of them. E.g. REPL, scripting and command line tools aren't covered by the above. The sources for the tests are located at `[compiler/test](https://github.com/lampepfl/dotty/blob/master/compiler/test/)`, so if your use case isn't covered by this guide, you may need to consult the codebase. +[lampepfl/dotty]: https://github.com/lampepfl/dotty +[CompilationTests.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala +[compiler/test]: https://github.com/lampepfl/dotty/blob/master/compiler/test/ +[pull-request]: https://docs.github.com/en?query=pull+requests From 7bd146d8d7c2b4fbfaf50b9992ac38ef867bf80b Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Mon, 27 Sep 2021 08:03:03 +0200 Subject: [PATCH 0227/1704] Issue reproduction example added --- _overviews/scala3-contribution/procedures-reproduce.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index 78958b2048..c81d25e5ca 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -25,8 +25,16 @@ The procedure of reproducing an issue with dotty-issue-workspace installed (see #### Basic -The most basic usage for the `launch.iss` is as follows: +Say you want to reproduce locally issue [#7710](https://github.com/lampepfl/dotty/issues/7710). To do so: +1. Follow [steps in README](https://github.com/anatoliykmetyuk/dotty-issue-workspace#getting-started) to install the plugin +2. In your Issue Workspace folder (as defined in the plugin's README file, "Getting Started" section, step 2), create a subfolder for the issue: `mkdir i7710` +3. Create a file with the reproduction: `cd i7710; touch Test.scala`. In that file, insert the code from the issue. +4. Create a file `launch.iss` with the following content: `scala3/scalac $here/Test.scala` +5. Open sbt console in the Dotty main repo. If you still don't have the Dotty repo cloned locally, run `git clone +6. From sbt console opened in the Dotty repo, run `issue i7710` to reproduce the issue + +The most basic usage for the `launch.iss` demonstrated above is as follows: ```bash scala3/scalac $here/Test.scala ``` From 95dd9a3886b3fe392909218abca6298811736f63 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Mon, 27 Sep 2021 08:03:22 +0200 Subject: [PATCH 0228/1704] Debugging tree creation site example added --- _overviews/scala3-contribution/procedures-inspection.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index a10535d611..b4de019083 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -65,6 +65,14 @@ definitions introduced by the `source` argument. Each one of `typeStrings` is then printed, displaying their internal structure, alongside their class. +## Debugging tree creation site + +Sometimes you encounter a tree in the compiler and you'd like to know where that tree was created. To do so: + +1. Run the compiler with the `-Xprint:` flag (discussed above) to get the tree in question output and the `-Yshow-tree-ids` flag. The `-Yshow-tree-ids` flag will show the ids of all the trees when printing them. You'll see something like `println#223("Hello World"#37)`. +2. Find the id of the desired tree. +3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace pointing to the creation site of the tree with a given id. + ### Examples Here, given a previously defined `class Box { type X }`, we inspect the return type `Box#X`: From 3c4197904290e2db84b1ef58bfe77cb04449b0ca Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Mon, 27 Sep 2021 08:03:34 +0200 Subject: [PATCH 0229/1704] Intro to compiler procedures added --- _overviews/scala3-contribution/procedures-intro.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_overviews/scala3-contribution/procedures-intro.md b/_overviews/scala3-contribution/procedures-intro.md index 278cb73cf6..6eda47a3ed 100644 --- a/_overviews/scala3-contribution/procedures-intro.md +++ b/_overviews/scala3-contribution/procedures-intro.md @@ -7,6 +7,8 @@ previous-page: start-intro next-page: procedures-cheatsheet --- +This chapter introduces instructions on how to do basic tasks when fixing compiler issues. The tasks include how to reproduce an issue, how to navigate to where the issue manifests itself in the compiler, how to inspect various values encountered in the compiler and how to create a test for your fix. You can find the instructions of how to do the above in the following sections. + [Reproduce the issue][2] [Navigation][3] From 11e2cdc1c57799b2877f18ff4cb0567a2e06458c Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 27 Sep 2021 15:11:20 +0200 Subject: [PATCH 0230/1704] enhance test page --- .../procedures-cheatsheet.md | 4 +- .../scala3-contribution/procedures-testing.md | 175 ++++++++++++++++-- 2 files changed, 166 insertions(+), 13 deletions(-) diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md index ecb3ac1e5d..c3a01b9650 100644 --- a/_overviews/scala3-contribution/procedures-cheatsheet.md +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -9,9 +9,11 @@ next-page: procedures-reproduce ## sbt Commands +The following commands can be run within the shell after running `sbt` in the dotty directory. + | Command | Description | |-----------------------------------|------------------------------------------------------------------| -| `scala3/scalac sandbox/Foo.scala` | Compile the given file – path relative to the dotty directory. | +| `scala3/scalac local/Foo.scala` | Compile the given file – path relative to the dotty directory. | | `scala3/scala Foo` | Run class `Foo` with dotty directory on the classpath | | `repl` | Start a REPL with the bootstrapped compiler | | testOnly
dotty.tools.dotc.CompilationTests
-- *pos
| Run test `pos` from `CompilationTests` suite. | diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index a208da3151..fb15132cf8 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -26,33 +26,184 @@ to run individual tests. ## Tests Overview -Tests live in the `tests/` folder at the root of the Dotty repo. They are categorised further by the virtue of placing them in the subfolders of the `tests` folder. Three main tests categories are: +Tests in Scala 3 are divided into two kinds: +- **compilation tests**, [described here](#compilation-tests), these take source files contained + in a subdirectory within `tests/` and compile them under some conditions configured elsewhere. +- **unit tests**, [described here](#unit-tests), these test more specialised parts of the compiler, and are usually + self contained within a single file. + +## Compilation Tests + +Compilation tests run the compiler over input files, using various settings. Input files +are found within the `tests/` folder at the root of the compiler repo. + +Test input files are categorised further by the virtue of placing them in the subfolders +of the `tests/` folder. Three main tests categories are: - `tests/pos` – tests that should compile: pass if compiles successfully. - `tests/neg` – should not compile: pass if fails compilation. Useful, e.g., to test an expected compiler error. - `tests/run` – these tests not only compile but are also run. -Individual tests are, by convention, named after the number of the issue they are fixing – e.g. `i12345`. +Tests are, by convention, named after the number of the issue they are fixing. +e.g. if you are fixing issue 12345, then the test should be named `i12345.scala`, for an individual test, +or be within a directory called `i12345/`. -If your issue is reproducible by only one file, put that file under an appropriate category. For example, if your issue is about getting rid of a spurious compiler error (that is a code that doesn't compile should, in fact, be compilable), you can create a file `tests/pos/i12345.scala`. +To run the test, use the `testCompilation i12345` sbt command. -If you need more than one file to reproduce an issue, create a folder instead of a file – e.g. `tests/pos/i12345/`, and put all the Scala files that are needed to reproduce the issue there. +The group tests – `pos`, `neg` etc – are defined in [CompilationTests.scala]. If you want to run a group of tests, e.g. +`pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. -If you have multiple files per issue, they will be compiled together by the same compiler run – *joint compilation*. Sometimes though you want them to be compiled one after another, available to each other via classpath – *separate compilation*. To achieve that, add suffix `_n` to the file name, where `n` is an integer defining the order in which the file will compile. E.g. if you have two files, `Lib.scala` and `Main.scala`, and you need them compiled separately – Lib first, Main second, then name them `Lib_1.scala` and `Main_2.scala`. +### Issues Reproduced in a Single Input File -`run` tests also have `*.check` files. These contain the expected output of an issue. They are named after the issue they are checking, e.g. `i12345.check` for `i12345.scala`. +If your issue is reproducible by only one file, put that file under an appropriate category. +For example, if your issue is about getting rid of a spurious compiler error (that is a code that doesn't compile should, in fact, compile), you can create a file `tests/pos/i12345.scala`. -To run your test, use the `testCompilation i123456` command. +### Issues Reproduced in Multiple Input Files -The group tests – `pos`, `neg` etc – are defined in [CompilationTests.scala]. If you want to run a group of tests, e.g. -`pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. +If you need more than one file to reproduce an issue, create a folder instead of a file – e.g. `tests/pos/i12345/`, and put all the Scala files that are needed to reproduce the issue there. There are two ways to organise the +input files within: + +**1: Requiring classpath dependency:** Sometimes issues require one file to be compiled after the other, +(e.g. if the issue only happens with a library dependency, like with Java interop). In this case, +the outputs of the first file compiled will be available to the next file compiled, available via the classpath. +This is called *separate compilation*. + +To achieve this, within `tests/pos/i12345/`, add a suffix `_n` to each file name, where `n` is an integer defining the +order in which the file will compile. E.g. if you have two files, `Lib.scala` and `Main.scala`, and you need them +compiled separately – Lib first, Main second, then name them `Lib_1.scala` and `Main_2.scala`. + +**2: Without classpath dependency:** If your issue does not require a classpath dependency, your files can be compiled +in a single run, this is called *joint compilation*. In this case use file names without the `_n` suffix. + +### Checking Program Output + +`tests/run` tests verify the runtime behaviour of a test case. To make a valid test case, your input files should +contain a main method in a class called `Test`, this can be done with +```scala +@main def Test: Unit = assert(1 > 0) +``` +or with +```scala +object Test extends scala.App: + assert(1 > 0) +``` + +If your program also prints output, this can be compared against `*.check` files. +These contain the expected output of a program. Check files are named after the issue they are checking, +e.g. `i12345.check` will check both of `tests/run/i12345.scala` and `tests/run/i12345/`. + +### Checking Compilation Errors + +`tests/neg` tests verify that a file does not compile, and user-facing errors are produced. There are other neg +categories such as `neg-custom-args`, i.e. with `neg` prefixing the directory name. Test files in the `neg*` +categories require annotations for the lines where errors are expected. To do this add one `// error` token to the +end of a line for each error expected. e.g. if there are three errors expected, the end of line should contain +`// error // error // error`. + +You can verify the content of the error messages with a `*.check` file. These contain the expected output of the +compiler. Check files are named after the issue they are checking, +e.g. `i12345.check` will check both of `tests/neg/i12345.scala` and `tests/neg/i12345/`. +*Note:* check files are not required for the test to pass, however they do add more strong contraints that the errors +are as expected. + +### If Checking is not as Expected + +If the actual output mismatches the expected output, the test framework will dump the actual output in the file +`*.check.out` and fail the test suite. It will also output the instructions to quickly replace the expected output +with the actual output, in the following format: + +``` +Test output dumped in: tests/playground/neg/Sample.check.out + See diff of the checkfile + > diff tests/playground/neg/Sample.check tests/playground/neg/Sample.check.out + Replace checkfile with current output + > mv tests/playground/neg/Sample.check.out tests/playground/neg/Sample.check +``` + +### Tips for creating Check Files + +To create a checkfile for a test, you can do one of the following: + +1. Create an empty checkfile + - then add random content + - run the test + - when it fails, use the `mv` command reported by the test to replace the initial checkfile with the actual output. +2. Manually compile the file you are testing with `scalac` + - copy-paste whatever console output the compiler produces to the checkfile. + +### Automatically Updating checkfiles + +When complex or many checkfiles must be updated, `testCompilation` can run in a mode where it overrides the +checkfiles with the test outputs. +```bash +$ sbt +> testCompilation --update-checkfiles +``` + +Use `--help` to see all the options +```bash +$ sbt +> testCompilation --help +``` + +### Bootstrapped-only tests + +To run `testCompilation` on a bootstrapped Dotty compiler, use +`scala3-compiler-bootstrapped/testCompilation` (with the same syntax as above). +Some tests can only be run in bootstrapped compilers; that includes all tests +with `with-compiler` in their name. + +### From TASTy tests + +`testCompilation` has an additional mode to run tests that compile code from a `.tasty` file. + Modify the lists in [compiler/test/dotc] to enable or disable tests from `.tasty` files. + + ```bash + $ sbt + > testCompilation --from-tasty + ``` + + This mode can be run under `scala3-compiler-bootstrapped/testCompilation` to test on a bootstrapped Dotty compiler. + +## Unit Tests + +Unit tests cover the other areas of the compiler, such as interactions with the REPL, scripting tools and more. +They are defined in [compiler/test], so if your use case isn't covered by this guide, +you may need to consult the codebase. Some common areas are highlighted below: + +### SemanticDB tests + +To test the SemanticDB output from the `extractSemanticDB` phase (enabled with the `-Xsemanticdb` flag), run the following sbt command: +```bash +$ sbt +sbt:scala3> scala3-compiler-bootstrapped/testOnly +> dotty.tools.dotc.semanticdb.SemanticdbTests +``` + +[SemanticdbTests] uses source files in `tests/semanticdb/expect` to generate "expect files": +these verify both +- SemanticDB symbol occurrences inline in sourcecode (`*.expect.scala`) +- complete output of all SemanticDB information (`metac.expect`). + +Expect files are used as regression tests to detect changes in the compiler. +Their correctness is determined by human inspection. + +If expect files change then [SemanticdbTests] will fail, and generate new expect files, providing instructions for +comparing the differences and replacing the outdated expect files. + +If you are planning to update the SemanticDB output, you can do it in bulk by running the command +```bash +$ sbt +sbt:scala3> scala3-compiler-bootstrapped/Test/runMain +> dotty.tools.dotc.semanticdb.updateExpect +``` -The above is the most common test cases but not all of them. E.g. REPL, scripting and command line tools aren't covered -by the above. The sources for the tests are located at [compiler/test], so if your use case isn't covered by this guide, -you may need to consult the codebase. +then compare the changes via version control. [lampepfl/dotty]: https://github.com/lampepfl/dotty [CompilationTests.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala [compiler/test]: https://github.com/lampepfl/dotty/blob/master/compiler/test/ [pull-request]: https://docs.github.com/en?query=pull+requests +[compiler/test/dotc]: https://github.com/lampepfl/dotty/tree/master/compiler/test/dotc +[SemanticdbTests]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala From 94474f0f81f134bc4c58ba7d5bb36cf085d1aae9 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 27 Sep 2021 17:38:12 +0200 Subject: [PATCH 0231/1704] add checklist --- _overviews/scala3-contribution/arch-intro.md | 4 +- .../scala3-contribution/arch-lifecycle.md | 2 +- _overviews/scala3-contribution/arch-phases.md | 2 +- _overviews/scala3-contribution/arch-time.md | 2 +- _overviews/scala3-contribution/arch-types.md | 2 +- .../procedures-cheatsheet.md | 3 + .../procedures-checklist.md | 40 +++++++++++++ .../procedures-inspection.md | 57 ++++++++++++++++--- .../procedures-navigation.md | 9 +++ .../scala3-contribution/procedures-testing.md | 10 +--- 10 files changed, 109 insertions(+), 22 deletions(-) create mode 100644 _overviews/scala3-contribution/procedures-checklist.md diff --git a/_overviews/scala3-contribution/arch-intro.md b/_overviews/scala3-contribution/arch-intro.md index d402d185a7..613ba6f774 100644 --- a/_overviews/scala3-contribution/arch-intro.md +++ b/_overviews/scala3-contribution/arch-intro.md @@ -2,8 +2,8 @@ title: High Level Architecture type: chapter description: This page introduces the high level architecture for the Scala 3 compiler. -num: 10 -previous-page: procedures-testing +num: 11 +previous-page: procedures-checklist next-page: arch-lifecycle --- diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index a2d18ac83f..484c838e23 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -2,7 +2,7 @@ title: Compiler Overview type: section description: This page describes the lifecycle for the Scala 3 compiler. -num: 11 +num: 12 previous-page: arch-intro next-page: arch-phases --- diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index aa07e2ef7d..090680dda1 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -2,7 +2,7 @@ title: Compiler Phases type: section description: This page describes the phases for the Scala 3 compiler. -num: 12 +num: 13 previous-page: arch-lifecycle next-page: arch-types --- diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 670f6ebb91..7b26d32511 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -2,7 +2,7 @@ title: Time in the Compiler type: section description: This page describes the concepts of time in the Scala 3 compiler. -num: 14 +num: 15 previous-page: arch-types next-page: --- diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index f75078e769..f95d7486e0 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -2,7 +2,7 @@ title: Compiler Types type: section description: This page discusses the representation of types in the compiler -num: 13 +num: 14 previous-page: arch-phases next-page: arch-time --- diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md index c3a01b9650..a55eee8673 100644 --- a/_overviews/scala3-contribution/procedures-cheatsheet.md +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -20,3 +20,6 @@ The following commands can be run within the shell after running `sbt` in the do | `testCompilation tests/pos` | Run test suites on files in the `tests/pos` directory. | | `scala3-bootstrapped/test` | Run all tests for Scala 3 | | scala3-compiler/Test/runMain
dotty.tools.printTypes
| Print types underlying representation | +| scala3/scalac -print-tasty
local/out/Foo.tasty
| Print the TASTy of top-level class `Foo` | + + diff --git a/_overviews/scala3-contribution/procedures-checklist.md b/_overviews/scala3-contribution/procedures-checklist.md new file mode 100644 index 0000000000..d23e65d644 --- /dev/null +++ b/_overviews/scala3-contribution/procedures-checklist.md @@ -0,0 +1,40 @@ +--- +title: Checklist before opening a Pull Request +type: section +description: This page describes a checklist before opening a Pull Request to the Scala 3 compiler. +num: 10 +previous-page: procedures-testing +next-page: arch-intro +--- + +Once you solved an issue, you likely want to see your change added to the [Scala 3 repo][lampepfl/dotty]. +To do that, you need to prepare a [pull request][pull-request] with your changes. We recommend you +follow these guidelines, [also consult the full requirements][full-list]: + +### 1. Sign the CLA + +Make sure you have signed the [Scala CLA][cla], if not, sign it. + +### 2: Is It Relevant? + +Before starting to work on a feature or a fix, it's good practice to ensure that: +1. There is a ticket for your work in the project's [issue tracker][issues]; +2. The ticket has been discussed and prioritized by the team. + +### 3: Add Tests +Add at least one test that replicates the problem in the issue, and that shows it is now resolved. + +You may of course add variations of the test code to try and eliminate edge cases. +[Become familiar with testing in Scala 3][testing]. + +### 4: Add Documentation +Please ensure that all code is documented to explain its use, even if only internal +changes are made. + + +[pull-request]: https://docs.github.com/en?query=pull+requests +[lampepfl/dotty]: https://github.com/lampepfl/dotty +[cla]: http://typesafe.com/contribute/cla/scala +[issues]: https://github.com/lampepfl/dotty/issues +[full-list]: https://github.com/lampepfl/dotty/blob/master/CONTRIBUTING.md +[testing]: {% link _overviews/scala3-contribution/procedures-testing.md %} diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index b4de019083..10abf156d0 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -7,6 +7,34 @@ previous-page: procedures-navigation next-page: procedures-efficiency --- +## Printing TASTy of a Class + +If are working on an issue related to TASTy, it is good to know how to inspect +the contents of a TASTy file, produced from compilation of Scala files. + +In the following example, we compile in a file `local/Foo.scala`, with contents +of `class Foo`, and then print its TASTy: + +```bash +$ sbt +sbt:scala3> scala3/scalac -d local/out local/Foo.scala +sbt:scala3> scala3/scalac -print-tasty local/out/Foo.tasty +``` +We see output such as the following: + +``` +-------------------------------------------------------------------------------- +local/foo/out/Foo.tasty +-------------------------------------------------------------------------------- +Names: + 0: ASTs + 1: + 2: Foo + 3: +... +``` +and so on. + ## Inspecting variables in-place Frequently you need to know what a particular variable's value is. The most robust way to get this info is good old `println`. @@ -17,6 +45,27 @@ Sometimes you need to print flags. Flags is a metadata attached to trees contain To print flags, you can use the `flagsString` method, e.g. `println(x.flagsString)`. +## Pretty Printing with a String Interpolator + +You can also pretty print objects with string interpolators, +these default to call `.show` when possible, avoiding boilerplate +and also helping format error messages. + +Import them with the following: + +```scala +import dotty.tools.dotc.core.Decorators.* +``` + +Here is a table of explanations for their use: + +| Usage | Description | +|--------|-----------------------------------| +|`i""` | General purpose string formatting. It calls `.show` on objects
mixing in Showable, `String.valueOf` otherwise | +|`em""` | Formatting for error messages: Like `i` but suppress
follow-on, error messages after the first one if some
of their arguments are "non-sensical". | +|`ex""` | Formatting with added explanations: Like `em`, but add
explanations to give more info about type variables
and to disambiguate where needed. | + + ## Obtaining debug output from the compiler There are many compiler options that provide verbose debug output when compiling a file. @@ -65,14 +114,6 @@ definitions introduced by the `source` argument. Each one of `typeStrings` is then printed, displaying their internal structure, alongside their class. -## Debugging tree creation site - -Sometimes you encounter a tree in the compiler and you'd like to know where that tree was created. To do so: - -1. Run the compiler with the `-Xprint:` flag (discussed above) to get the tree in question output and the `-Yshow-tree-ids` flag. The `-Yshow-tree-ids` flag will show the ids of all the trees when printing them. You'll see something like `println#223("Hello World"#37)`. -2. Find the id of the desired tree. -3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace pointing to the creation site of the tree with a given id. - ### Examples Here, given a previously defined `class Box { type X }`, we inspect the return type `Box#X`: diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index d788f46d99..a8c7334494 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -45,6 +45,15 @@ Once you've injected a tracer into a class, you can `println` that tracer from t 3. Add a top-level definition `val tracer = Thread.currentThread.getStackTrace.mkString("\n")` to that type definition. 4. `println(x.tracer)` (where `x` is the name of the object in question) from the original site where you encountered the object. This will give you the stack trace pointing to the place where the constructor of that object was invoked. +### Debugging tree creation site + +A special case of finding an object's creation site is for a Tree, this is supported directly in the compiler, +as trees have an associated unique ID: + +1. Run the compiler with the `-Xprint:` flag (discussed above) to get the tree in question output and the `-Yshow-tree-ids` flag. The `-Yshow-tree-ids` flag will show the ids of all the trees when printing them. You'll see something like `println#223("Hello World"#37)`. +2. Find the id of the desired tree. +3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace pointing to the creation site of the tree with a given id. + ## Where was a particular value assigned to a variable? Say you have a certain type assigned to a denotation and you would like to know why the denotation was typed that way. A type in the denotation is a `var myInfo: Type` so you can't just trace the creation site of that `Type` as was described before. You want to know the *assignment*, not *creation*, site. diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index fb15132cf8..d57973c2fe 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -1,16 +1,12 @@ --- -title: Creating Tests before a Pull Request +title: Testing Your Changes type: section description: This page describes test procedures in the Scala 3 compiler. num: 9 previous-page: procedures-efficiency -next-page: arch-intro +next-page: procedures-checklist --- -Once you solved an issue, you likely want to see your change added to the [Scala 3 repo][lampepfl/dotty]. -To do that, you need to prepare a [pull request][pull-request] that includes tests that verify the issue is resolved. -Hence you need to know how to work with Dotty's testing infrastructure. - ## Running all Tests To run all tests of Scala 3, including for compiler, REPL, libraries and more, run the following in sbt: @@ -201,9 +197,7 @@ sbt:scala3> scala3-compiler-bootstrapped/Test/runMain then compare the changes via version control. -[lampepfl/dotty]: https://github.com/lampepfl/dotty [CompilationTests.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala [compiler/test]: https://github.com/lampepfl/dotty/blob/master/compiler/test/ -[pull-request]: https://docs.github.com/en?query=pull+requests [compiler/test/dotc]: https://github.com/lampepfl/dotty/tree/master/compiler/test/dotc [SemanticdbTests]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala From 0d3cf159f487f4d1f723bac1ccad80a47f163c90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Sep 2021 20:53:13 +0000 Subject: [PATCH 0232/1704] Bump nokogiri from 1.11.4 to 1.12.5 Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.4 to 1.12.5. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.4...v1.12.5) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 90dfb804ff..6b8f07e6a6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -54,9 +54,9 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.5.1) - nokogiri (1.11.4) - mini_portile2 (~> 2.5.0) + mini_portile2 (2.6.1) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) racc (~> 1.4) nokogumbo (2.0.2) nokogiri (~> 1.8, >= 1.8.4) From 93b1a3e0001722e40c0d98d4ee375491ff7c75ff Mon Sep 17 00:00:00 2001 From: matetukacs Date: Tue, 28 Sep 2021 14:14:46 +0100 Subject: [PATCH 0233/1704] Fix function reference in types-variance chapter --- _overviews/scala3-book/types-variance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/types-variance.md b/_overviews/scala3-book/types-variance.md index 90ee0d04ba..84cba7d658 100644 --- a/_overviews/scala3-book/types-variance.md +++ b/_overviews/scala3-book/types-variance.md @@ -136,7 +136,7 @@ val f: Function[Buyable, Buyable] = b => b val g: Function[Buyable, Item] = f // OK to provide a Book where a Buyable is expected -val h: Function[Book, Buyable] = g +val h: Function[Book, Buyable] = f ``` ## Summary From 4d40f86eaa53fbdc74ce4c0af1e87bf4f86bafb6 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 28 Sep 2021 17:41:44 +0200 Subject: [PATCH 0234/1704] describe the common issues --- _overviews/scala3-contribution/arch-intro.md | 2 +- .../scala3-contribution/arch-lifecycle.md | 2 +- _overviews/scala3-contribution/arch-phases.md | 2 +- _overviews/scala3-contribution/arch-time.md | 2 +- _overviews/scala3-contribution/arch-types.md | 2 +- .../scala3-contribution/procedures-areas.md | 73 ++++++++++++++ .../procedures-cheatsheet.md | 18 ++-- .../procedures-checklist.md | 4 +- .../procedures-efficiency.md | 15 ++- .../procedures-inspection.md | 6 +- .../scala3-contribution/procedures-intro.md | 30 +++--- .../procedures-navigation.md | 4 +- .../procedures-reproduce.md | 2 +- .../scala3-contribution/procedures-testing.md | 94 +++++++++---------- 14 files changed, 166 insertions(+), 90 deletions(-) create mode 100644 _overviews/scala3-contribution/procedures-areas.md diff --git a/_overviews/scala3-contribution/arch-intro.md b/_overviews/scala3-contribution/arch-intro.md index 613ba6f774..81e0fe5f10 100644 --- a/_overviews/scala3-contribution/arch-intro.md +++ b/_overviews/scala3-contribution/arch-intro.md @@ -2,7 +2,7 @@ title: High Level Architecture type: chapter description: This page introduces the high level architecture for the Scala 3 compiler. -num: 11 +num: 12 previous-page: procedures-checklist next-page: arch-lifecycle --- diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 484c838e23..ce6fc7e4e9 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -2,7 +2,7 @@ title: Compiler Overview type: section description: This page describes the lifecycle for the Scala 3 compiler. -num: 12 +num: 13 previous-page: arch-intro next-page: arch-phases --- diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 090680dda1..536ce0d1ad 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -2,7 +2,7 @@ title: Compiler Phases type: section description: This page describes the phases for the Scala 3 compiler. -num: 13 +num: 14 previous-page: arch-lifecycle next-page: arch-types --- diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 7b26d32511..761369a759 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -2,7 +2,7 @@ title: Time in the Compiler type: section description: This page describes the concepts of time in the Scala 3 compiler. -num: 15 +num: 16 previous-page: arch-types next-page: --- diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index f95d7486e0..1fe9dcdddd 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -2,7 +2,7 @@ title: Compiler Types type: section description: This page discusses the representation of types in the compiler -num: 14 +num: 15 previous-page: arch-phases next-page: arch-time --- diff --git a/_overviews/scala3-contribution/procedures-areas.md b/_overviews/scala3-contribution/procedures-areas.md new file mode 100644 index 0000000000..ffb2a17f6a --- /dev/null +++ b/_overviews/scala3-contribution/procedures-areas.md @@ -0,0 +1,73 @@ +--- +title: Common Issue Locations +type: section +description: This page describes common areas of issues around the Scala 3 compiler. +num: 7 +previous-page: procedures-navigation +next-page: procedures-inspection +--- + +Many issues are localised to small domains of the compiler and are self-contained, +here is a non-exhaustive list of such domains, and the files associated with them: + +### Pretty Printing of Types and Trees + +Objects in the compiler that inherit from [Showable] can be pretty printed. +The pretty-printing of objects is used in many places, from debug output, +to user-facing error messages and printing of trees after each phase. + +Look in [RefinedPrinter] (or its parent class [PlainPrinter]) for the implementation of pretty printing. + +### Content of Error Messages + +You can find most error messages defined in [messages] (with IDs defined in [ErrorMessageID]). If the message +is not defined there, try the `-Ydebug-error` compiler flag, which will print a stack trace leading to the +production of the error. + +### Compiler Generated Given Instances + +If the issue lies in given instances provided by the compiler, such as `scala.reflect.ClassTag`, +`scala.deriving.Mirror`, `scala.reflect.TypeTest`, `scala.CanEqual`, `scala.ValueOf`, +`scala.reflect.Manifest`, etc, look in [Synthesizer], which provides factories for +given instances. + +### Compiler Generated Methods + +Members can be generated for many classes, such as `equals` and `hashCode` +for case classes and value classes, and `ordinal` and `fromProduct` for Mirrors. +To change the implementation, see [SyntheticMembers]. + +### Code Completions +For suggestions to auto-complete method selections, see [Completion]. + +### Enum Desugaring +See [Desugar] and [DesugarEnums]. + +### Pattern Match Exhaustivity +See [Space]. + +### Metaprogramming + +#### Quotes Reflection +See the [quoted runtime package][quotes-impl]. + +#### Inline match +See [Inliner]. + +#### Compiletime Ops Types +See `tryCompiletimeConstantFold` in [Types]. + +[Showable]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/printing/Showable.scala +[PlainPrinter]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala +[RefinedPrinter]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala +[ErrorMessageID]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/reporting/ErrorMessageID.scala +[messages]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/reporting/messages.scala +[Synthesizer]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/typer/Synthesizer.scala +[SyntheticMembers]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/SyntheticMembers.scala +[quotes-impl]: https://github.com/lampepfl/dotty/tree/master/compiler/src/scala/quoted/runtime/impl +[Inliner]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools/dotc/typer/Inliner.scala +[Types]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools/dotc/core/Types.scala +[Completion]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools/dotc/interactive/Completion.scala +[DesugarEnums]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/ast/DesugarEnums.scala +[Desugar]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/ast/Desugar.scala +[Space]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md index a55eee8673..a4d2c3297c 100644 --- a/_overviews/scala3-contribution/procedures-cheatsheet.md +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -7,18 +7,22 @@ previous-page: procedures-intro next-page: procedures-reproduce --- +This page is a quick-reference guide for common tasks while working with the compiler. +For more in-depth explainations, see the rest of this chapter. + ## sbt Commands The following commands can be run within the shell after running `sbt` in the dotty directory. -| Command | Description | -|-----------------------------------|------------------------------------------------------------------| -| `scala3/scalac local/Foo.scala` | Compile the given file – path relative to the dotty directory. | -| `scala3/scala Foo` | Run class `Foo` with dotty directory on the classpath | -| `repl` | Start a REPL with the bootstrapped compiler | +| Command | Description | +|------------------------------------|------------------------------------------------------------------| +| `scala3-bootstrapped/test` | Run all tests for Scala 3 | +| `scala3-bootstrapped/publishLocal` | Build Scala 3 for use in local projects | +| `scala3/scalac local/Foo.scala` | Compile the given file – path relative to the dotty directory. | +| `scala3/scala Foo` | Run class `Foo` with dotty directory on the classpath | +| `repl` | Start a REPL with the bootstrapped compiler | +| `testCompilation tests/pos` | Run test suites on files in the `tests/pos` directory. | | testOnly
dotty.tools.dotc.CompilationTests
-- *pos
| Run test `pos` from `CompilationTests` suite. | -| `testCompilation tests/pos` | Run test suites on files in the `tests/pos` directory. | -| `scala3-bootstrapped/test` | Run all tests for Scala 3 | | scala3-compiler/Test/runMain
dotty.tools.printTypes
| Print types underlying representation | | scala3/scalac -print-tasty
local/out/Foo.tasty
| Print the TASTy of top-level class `Foo` | diff --git a/_overviews/scala3-contribution/procedures-checklist.md b/_overviews/scala3-contribution/procedures-checklist.md index d23e65d644..fdbcd75dfc 100644 --- a/_overviews/scala3-contribution/procedures-checklist.md +++ b/_overviews/scala3-contribution/procedures-checklist.md @@ -1,8 +1,8 @@ --- -title: Checklist before opening a Pull Request +title: Pull Request Checklist type: section description: This page describes a checklist before opening a Pull Request to the Scala 3 compiler. -num: 10 +num: 11 previous-page: procedures-testing next-page: arch-intro --- diff --git a/_overviews/scala3-contribution/procedures-efficiency.md b/_overviews/scala3-contribution/procedures-efficiency.md index 782b9ce712..c9c3d9ebfa 100644 --- a/_overviews/scala3-contribution/procedures-efficiency.md +++ b/_overviews/scala3-contribution/procedures-efficiency.md @@ -1,21 +1,26 @@ --- -title: Getting Efficient +title: Improving Your Workflow type: section description: This page describes improving efficiency of debugging the Scala 3 compiler. -num: 8 +num: 9 previous-page: procedures-inspection next-page: procedures-testing --- -At the Navigation and Inspections sections, we have covered some techniques of working with the compiler. One repeating theme is that there are certain things that need to be done repeatedly and a lot. These are, e.g.: +In the previous sections, we have covered some techniques of working with the compiler. +Some of these techniques can be used repetitively, e.g.: - Navigating stack frames - Printing variables in certain ways - Instrumenting variable definitions with tracers -These seemingly tiny and insignificant things take a lot of time. They also reduce productivity: if the cost (in terms of time and effort) of navigating to a stack frame is high, you'll think twice before doing so, and possibly miss valuable information. +The above procedures often take a lot of time when done manually, reducing productivity: +as the cost (in terms of time and effort) is high, you may avoid attempting to do so, +and possibly miss valuable information. -So, if you're doing those things really frequently, it's a good idea to spend some time scripting your editor to allow you to do them fast. E.g. you can set up your editor to take you to a stack frame when you click it or create text editor macros to instrument variables for printing. +If you're doing those things really frequently, it is recommended to script your editor +to reduce the number of steps. E.g. navigating to the definition of a stack frame +part when you click it, or instrumenting variables for printing. An example of how it is done for Sublime Text 3 is [here](https://github.com/anatoliykmetyuk/scala-debug-sublime). diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index 10abf156d0..cff47559a9 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -1,9 +1,9 @@ --- -title: Inspection +title: How to Inspect Values type: section description: This page describes inspecting semantic values in the Scala 3 compiler. -num: 7 -previous-page: procedures-navigation +num: 8 +previous-page: procedures-areas next-page: procedures-efficiency --- diff --git a/_overviews/scala3-contribution/procedures-intro.md b/_overviews/scala3-contribution/procedures-intro.md index 6eda47a3ed..8e23a97d4b 100644 --- a/_overviews/scala3-contribution/procedures-intro.md +++ b/_overviews/scala3-contribution/procedures-intro.md @@ -1,5 +1,5 @@ --- -title: Compiler Procedures +title: Contributing to Scala 3 type: chapter description: This page introduces the compiler procedures for the Scala 3 compiler. num: 3 @@ -7,20 +7,20 @@ previous-page: start-intro next-page: procedures-cheatsheet --- -This chapter introduces instructions on how to do basic tasks when fixing compiler issues. The tasks include how to reproduce an issue, how to navigate to where the issue manifests itself in the compiler, how to inspect various values encountered in the compiler and how to create a test for your fix. You can find the instructions of how to do the above in the following sections. +Thank you for wanting to contribute to Scala 3! -[Reproduce the issue][2] +This chapter introduces instructions +on how to do basic tasks when fixing compiler issues. The tasks include: +- how to [reproduce an issue][reproduce] +- how to [navigate to where the issue manifests][navigation] itself in the compiler +- find shortcuts to [common issue areas][areas] of the compiler +- how to [inspect various values][inspection] encountered in the compiler +- how to [create a test][testing] for your fix. -[Navigation][3] +You can find the instructions of how to do the above in the following sections of this guide. -[Inspection][4] - -[Getting Efficient][5] - -[Creating a test and submitting a PR][6] - -[2]: {% link _overviews/scala3-contribution/procedures-reproduce.md %} -[3]: {% link _overviews/scala3-contribution/procedures-navigation.md %} -[4]: {% link _overviews/scala3-contribution/procedures-inspection.md %} -[5]: {% link _overviews/scala3-contribution/procedures-efficiency.md %} -[6]: {% link _overviews/scala3-contribution/procedures-testing.md %} +[reproduce]: {% link _overviews/scala3-contribution/procedures-reproduce.md %} +[navigation]: {% link _overviews/scala3-contribution/procedures-navigation.md %} +[areas]: {% link _overviews/scala3-contribution/procedures-areas.md %} +[inspection]: {% link _overviews/scala3-contribution/procedures-inspection.md %} +[testing]: {% link _overviews/scala3-contribution/procedures-testing.md %} diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index a8c7334494..21228f05f6 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -1,10 +1,10 @@ --- -title: Navigation +title: Finding the Cause of an Issue type: section description: This page describes navigating around the Scala 3 compiler. num: 6 previous-page: procedures-reproduce -next-page: procedures-inspection +next-page: procedures-areas --- Navigation answers the questions such as: where does the error happen in a codebase? Where is a particular object created? Where is a particular value assigned to a variable? diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index c81d25e5ca..552b833389 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -1,5 +1,5 @@ --- -title: Reproduce the issue +title: Reproducing an Issue type: section description: This page describes reproducing an issue in the Scala 3 compiler. num: 5 diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index d57973c2fe..29c9cb9d51 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -2,7 +2,7 @@ title: Testing Your Changes type: section description: This page describes test procedures in the Scala 3 compiler. -num: 9 +num: 10 previous-page: procedures-efficiency next-page: procedures-checklist --- @@ -13,58 +13,54 @@ To run all tests of Scala 3, including for compiler, REPL, libraries and more, r ```bash $ sbt -> scala3-bootstrapped/test +sbt:scala3> scala3-bootstrapped/test ``` Often however it is not necessary to test everything if your changes are localised to one area, we will see in the following sections the different kinds of tests, and how to run individual tests. -## Tests Overview - -Tests in Scala 3 are divided into two kinds: -- **compilation tests**, [described here](#compilation-tests), these take source files contained - in a subdirectory within `tests/` and compile them under some conditions configured elsewhere. -- **unit tests**, [described here](#unit-tests), these test more specialised parts of the compiler, and are usually - self contained within a single file. - ## Compilation Tests Compilation tests run the compiler over input files, using various settings. Input files -are found within the `tests/` folder at the root of the compiler repo. +are found within the `tests/` directory at the root of the compiler repo. -Test input files are categorised further by the virtue of placing them in the subfolders -of the `tests/` folder. Three main tests categories are: +Test input files are categorised further by the virtue of placing them in the subdirectories +of the `tests/` directory. A small selection of test categories include: - `tests/pos` – tests that should compile: pass if compiles successfully. - `tests/neg` – should not compile: pass if fails compilation. Useful, e.g., to test an expected compiler error. - `tests/run` – these tests not only compile but are also run. +### Naming and Running a Test Case + Tests are, by convention, named after the number of the issue they are fixing. -e.g. if you are fixing issue 12345, then the test should be named `i12345.scala`, for an individual test, -or be within a directory called `i12345/`. +e.g. if you are fixing issue 101, then the test should be named `i101.scala`, for a single-file test, +or be within a directory called `i101/` for a multi-file test. -To run the test, use the `testCompilation i12345` sbt command. +To run the test, invoke the sbt command `testCompilation i101` (this will match all tests with `"i101"` in +the name, so it is useful to use a unique name) -The group tests – `pos`, `neg` etc – are defined in [CompilationTests.scala]. If you want to run a group of tests, e.g. +The group tests – `pos`, `neg` etc – are defined in [CompilationTests]. If you want to run a group of tests, e.g. `pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. -### Issues Reproduced in a Single Input File +### Testing a Single Input File If your issue is reproducible by only one file, put that file under an appropriate category. -For example, if your issue is about getting rid of a spurious compiler error (that is a code that doesn't compile should, in fact, compile), you can create a file `tests/pos/i12345.scala`. +For example, if your issue is about getting rid of a spurious compiler error (that is a code that doesn't compile should, in fact, compile), you can create a file `tests/pos/i101.scala`. -### Issues Reproduced in Multiple Input Files +### Testing Multiple Input Files -If you need more than one file to reproduce an issue, create a folder instead of a file – e.g. `tests/pos/i12345/`, and put all the Scala files that are needed to reproduce the issue there. There are two ways to organise the -input files within: +If you need more than one file to reproduce an issue, create a directory instead of a file +e.g. `tests/pos/i101/`, and put all the Scala files that are needed to reproduce the issue there. +There are two ways to organise the input files within: **1: Requiring classpath dependency:** Sometimes issues require one file to be compiled after the other, (e.g. if the issue only happens with a library dependency, like with Java interop). In this case, the outputs of the first file compiled will be available to the next file compiled, available via the classpath. This is called *separate compilation*. -To achieve this, within `tests/pos/i12345/`, add a suffix `_n` to each file name, where `n` is an integer defining the +To achieve this, within `tests/pos/i101/`, add a suffix `_n` to each file name, where `n` is an integer defining the order in which the file will compile. E.g. if you have two files, `Lib.scala` and `Main.scala`, and you need them compiled separately – Lib first, Main second, then name them `Lib_1.scala` and `Main_2.scala`. @@ -73,20 +69,20 @@ in a single run, this is called *joint compilation*. In this case use file names ### Checking Program Output -`tests/run` tests verify the runtime behaviour of a test case. To make a valid test case, your input files should -contain a main method in a class called `Test`, this can be done with +`tests/run` tests verify the runtime behaviour of a test case. The output is checked by invoking a main method +on a class `Test`, this can be done with either ```scala @main def Test: Unit = assert(1 > 0) ``` -or with +or ```scala object Test extends scala.App: assert(1 > 0) ``` If your program also prints output, this can be compared against `*.check` files. -These contain the expected output of a program. Check files are named after the issue they are checking, -e.g. `i12345.check` will check both of `tests/run/i12345.scala` and `tests/run/i12345/`. +These contain the expected output of a program. Checkfiles are named after the issue they are checking, +e.g. `tests/run/i101.check` will check both of `tests/run/i101.scala` and `tests/run/i101/`. ### Checking Compilation Errors @@ -97,37 +93,37 @@ end of a line for each error expected. e.g. if there are three errors expected, `// error // error // error`. You can verify the content of the error messages with a `*.check` file. These contain the expected output of the -compiler. Check files are named after the issue they are checking, -e.g. `i12345.check` will check both of `tests/neg/i12345.scala` and `tests/neg/i12345/`. -*Note:* check files are not required for the test to pass, however they do add more strong contraints that the errors +compiler. Checkfiles are named after the issue they are checking, +e.g. `i101.check` will check both of `tests/neg/i101.scala` and `tests/neg/i101/`. +*Note:* checkfiles are not required for the test to pass, however they do add more strong contraints that the errors are as expected. -### If Checking is not as Expected +### If Checkfiles do not Match Output If the actual output mismatches the expected output, the test framework will dump the actual output in the file `*.check.out` and fail the test suite. It will also output the instructions to quickly replace the expected output with the actual output, in the following format: ``` -Test output dumped in: tests/playground/neg/Sample.check.out +Test output dumped in: tests/neg/Sample.check.out See diff of the checkfile - > diff tests/playground/neg/Sample.check tests/playground/neg/Sample.check.out + > diff tests/neg/Sample.check tests/neg/Sample.check.out Replace checkfile with current output - > mv tests/playground/neg/Sample.check.out tests/playground/neg/Sample.check + > mv tests/neg/Sample.check.out tests/neg/Sample.check ``` -### Tips for creating Check Files +### Tips for creating Checkfiles To create a checkfile for a test, you can do one of the following: 1. Create an empty checkfile - - then add random content + - then add arbitrary content - run the test - when it fails, use the `mv` command reported by the test to replace the initial checkfile with the actual output. -2. Manually compile the file you are testing with `scalac` +2. Manually compile the file you are testing with `scala3/scalac` - copy-paste whatever console output the compiler produces to the checkfile. -### Automatically Updating checkfiles +### Automatically Updating Checkfiles When complex or many checkfiles must be updated, `testCompilation` can run in a mode where it overrides the checkfiles with the test outputs. @@ -152,14 +148,12 @@ with `with-compiler` in their name. ### From TASTy tests `testCompilation` has an additional mode to run tests that compile code from a `.tasty` file. - Modify the lists in [compiler/test/dotc] to enable or disable tests from `.tasty` files. - - ```bash - $ sbt - > testCompilation --from-tasty - ``` +Modify the lists in [compiler/test/dotc] to enable or disable tests from `.tasty` files. - This mode can be run under `scala3-compiler-bootstrapped/testCompilation` to test on a bootstrapped Dotty compiler. +```bash +$ sbt +> testCompilation --from-tasty +``` ## Unit Tests @@ -173,7 +167,7 @@ To test the SemanticDB output from the `extractSemanticDB` phase (enabled with t ```bash $ sbt sbt:scala3> scala3-compiler-bootstrapped/testOnly -> dotty.tools.dotc.semanticdb.SemanticdbTests + dotty.tools.dotc.semanticdb.SemanticdbTests ``` [SemanticdbTests] uses source files in `tests/semanticdb/expect` to generate "expect files": @@ -190,14 +184,14 @@ comparing the differences and replacing the outdated expect files. If you are planning to update the SemanticDB output, you can do it in bulk by running the command ```bash $ sbt -sbt:scala3> scala3-compiler-bootstrapped/Test/runMain -> dotty.tools.dotc.semanticdb.updateExpect +sbt:scala3> scala3-compiler/Test/runMain + dotty.tools.dotc.semanticdb.updateExpect ``` then compare the changes via version control. -[CompilationTests.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala +[CompilationTests]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/CompilationTests.scala [compiler/test]: https://github.com/lampepfl/dotty/blob/master/compiler/test/ [compiler/test/dotc]: https://github.com/lampepfl/dotty/tree/master/compiler/test/dotc [SemanticdbTests]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala From 1dbc72117ad2605e6ebdd2ed513b999e9fcf78ec Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 29 Sep 2021 17:31:38 +0200 Subject: [PATCH 0235/1704] refine for MVP --- .../scala3-contribution/arch-context.md | 43 ++++++ .../scala3-contribution/arch-symbols.md | 133 +++++++++++++++++ _overviews/scala3-contribution/arch-time.md | 7 +- .../scala3-contribution/procedures-areas.md | 2 +- .../procedures-cheatsheet.md | 8 +- .../procedures-inspection.md | 80 ++++++---- .../procedures-navigation.md | 54 ++++--- .../procedures-reproduce.md | 140 +++++++++++------- .../scala3-contribution/procedures-testing.md | 4 + 9 files changed, 367 insertions(+), 104 deletions(-) create mode 100644 _overviews/scala3-contribution/arch-context.md create mode 100644 _overviews/scala3-contribution/arch-symbols.md diff --git a/_overviews/scala3-contribution/arch-context.md b/_overviews/scala3-contribution/arch-context.md new file mode 100644 index 0000000000..ded5f7b048 --- /dev/null +++ b/_overviews/scala3-contribution/arch-context.md @@ -0,0 +1,43 @@ +--- +title: Contexts +type: section +description: This page describes symbols in the Scala 3 compiler. +num: 18 +previous-page: arch-symbols +next-page: +--- + +> (The following is work in progress), adapted from dotty.epfl.ch + +The `Context` contains the state of the compiler, for example + + * `settings` + * `freshNames` (`FreshNameCreator`) + * `period` (run and phase id) + * `compilationUnit` + * `phase` + * `tree` (current tree) + * `typer` (current typer) + * `mode` (type checking mode) + * `typerState` (for example undetermined type variables) + * ... + +### Contexts in the typer +The type checker passes contexts through all methods and adapts fields where +necessary, e.g. + +```scala +case tree: untpd.Block => typedBlock(desugar.block(tree), pt)(ctx.fresh.withNewScope) +``` + +A number of fields in the context are typer-specific (`mode`, `typerState`). + +### In other phases +Other phases need a context for many things, for example to access the +denotation of a symbols (depends on the period). However they typically don't +need to modify / extend the context while traversing the AST. For these phases +the context can be simply an implicit class parameter that is then available in +all members. + +**Careful**: beware of memory leaks. Don't hold on to contexts in long lived +objects. diff --git a/_overviews/scala3-contribution/arch-symbols.md b/_overviews/scala3-contribution/arch-symbols.md new file mode 100644 index 0000000000..229833f7cc --- /dev/null +++ b/_overviews/scala3-contribution/arch-symbols.md @@ -0,0 +1,133 @@ +--- +title: Symbols +type: section +description: This page describes symbols in the Scala 3 compiler. +num: 17 +previous-page: arch-time +next-page: arch-context +--- + +> (The following is work in progress), adapted from dotty.epfl.ch + +## Symbols and SymDenotations + + - why symbols are not enough: their contents change all the time + - reference: string + sig + + +`dotc` is different from most other compilers in that it is centered around the idea of +maintaining views of various artifacts associated with code. These views are indexed +by time. + +A symbol refers to a definition in a source program. Traditionally, +compilers store context-dependent data in a _symbol table_. The +symbol then is the central reference to address context-dependent +data. But for the requirements of `dotc` it turns out that symbols are +both too little and too much for this task. + +**Too little:** The attributes of a symbol depend on the phase. Examples: +Types are gradually simplified by several phases. Owners are changed +in phases `LambdaLift` (when methods are lifted out to an enclosing +class) and Flatten (when all classes are moved to top level). Names +are changed when private members need to be accessed from outside +their class (for instance from a nested class or a class implementing +a trait). So a functional compiler, a `Symbol` by itself met mean +much. Instead we are more interested in the attributes of a symbol at +a given phase. + +**Too much:** If a symbol is used to refer to a definition in another +compilation unit, we get problems for incremental recompilation. The +unit containing the symbol might be changed and recompiled, which +might mean that the definition referred to by the symbol is deleted or +changed. This leads to the problem of stale symbols that refer to +definitions that no longer exist in this form. Scala 2 compiler tried to +address this problem by _rebinding_ symbols appearing in certain cross +module references, but it turned out to be too difficult to do this +reliably for all kinds of references. Scala 3 compiler attacks the problem at +the root instead. The fundamental problem is that symbols are too +specific to serve as a cross-module reference in a system with +incremental compilation. They refer to a particular definition, but +that definition may not persist unchanged after an edit. + +`dotc` uses instead a different approach: A cross module reference is +always type, either a `TermRef` or `TypeRef`. A reference type contains +a prefix type and a name. The definition the type refers to is established +dynamically based on these fields. + + + + +## Symbols +`dotc/core/Symbols.scala` + +Symbols are references to definitions (e.g. of variables, fields, classes). Symbols can be used to refer to definitions for which we don't have ASTs (for example, from the Java standard library). + +`NoSymbol` is used to indicate the lack of a symbol. + +Symbols uniquely identify definitions, but they don't say what the definitions *mean*. To understand the meaning of a symbol +we need to look at its *denotation* (spefically for symbols, a `SymDenotation`). + +Symbols can not only represent terms, but also types (hence the `isTerm`/`isType` methods in the `Symbol` class). + +## ClassSymbol + +`ClassSymbol` represents either a `class`, or an `trait`, or an `object`. For example, an object +```scala +object O { + val s = 1 +} +``` +is represented (after `Typer`) as +```scala +class O$ { this: O.type => + val s = 1 +} +val O = new O$ +``` +where we have a type symbol for `class O$` and a term symbol for `val O`. Notice the use of the selftype `O.type` to indicate that `this` has a singleton type. + + +## SymDenotation +`dotc/core/SymDenotations.scala` + +Symbols contain `SymDenotation`s. The denotation, in turn, refers to: + + * the source symbol (so the linkage is cyclic) + * the "owner" of the symbol: + - if the symbol is a variable, the owner is the enclosing method + - if it's a field, the owner is the enclosing class + - if it's a class, then the owner is the enclosing class + * a set of flags that contain semantic information about the definition (e.g. whether it's a trait or mutable). Flags are defined in `Flags.scala`. + * the type of the definition (through the `info` method) + +## Denotation +[Comment with a few details:][Denotations2] + +A `Denotation` is the result of a name lookup during a given period + +* Most properties of symbols are now in the denotation (name, type, owner, + etc.) +* Denotations usually have a reference to the selected symbol +* Denotations may be overloaded (`MultiDenotation`). In this case the symbol + may be `NoSymbol` (the two variants have symbols). +* Non-overloaded denotations have an `info` + +Denotations of methods have a [signature][Signature1], which +uniquely identifies overloaded methods. + +### Denotation vs. SymDenotation +A `SymDenotation` is an extended denotation that has symbol-specific properties +(that may change over phases) +* `flags` +* `annotations` +* `info` + +`SymDenotation` implements lazy types (similar to scalac). The type completer +assigns the denotation's `info`. + +[Denotations2]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Denotations.scala#L77-L103 +[Signature1]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Signature.scala#L9-L33 diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 761369a759..6328545c26 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -4,9 +4,11 @@ type: section description: This page describes the concepts of time in the Scala 3 compiler. num: 16 previous-page: arch-types -next-page: +next-page: arch-symbols --- +> (The following is work in progress), adapted from dotty.epfl.ch + Conceptually, the `dotc` compiler's job is to maintain views of various artifacts associated with source code at all points in time. But what is *time* for `dotc`? In fact, it is a combination of compiler runs and compiler @@ -23,7 +25,7 @@ in real time. The *minutes* of the compiler's clocks are measured in phases. At every compiler run, the compiler cycles through a number of [phases]. The list of -phases is defined in the [Compiler]object There are currently about 60 phases +phases is defined in the [Compiler] object There are currently about 60 phases per run, so the minutes/hours analogy works out roughly. After every phase the view the compiler has of the world changes: trees are transformed, types are gradually simplified from Scala types to JVM types, definitions are rearranged, @@ -95,3 +97,4 @@ As a sentinel value there's `Nowhere`, a period that is empty. [runs]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/Run.scala [phases]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Phases.scala [period]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Periods.scala +[Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala diff --git a/_overviews/scala3-contribution/procedures-areas.md b/_overviews/scala3-contribution/procedures-areas.md index ffb2a17f6a..cafbed7f4c 100644 --- a/_overviews/scala3-contribution/procedures-areas.md +++ b/_overviews/scala3-contribution/procedures-areas.md @@ -22,7 +22,7 @@ Look in [RefinedPrinter] (or its parent class [PlainPrinter]) for the implementa You can find most error messages defined in [messages] (with IDs defined in [ErrorMessageID]). If the message is not defined there, try the `-Ydebug-error` compiler flag, which will print a stack trace leading to the -production of the error. +production of the error, and the contents of the message. ### Compiler Generated Given Instances diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md index a4d2c3297c..2f88f90d77 100644 --- a/_overviews/scala3-contribution/procedures-cheatsheet.md +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -12,7 +12,7 @@ For more in-depth explainations, see the rest of this chapter. ## sbt Commands -The following commands can be run within the shell after running `sbt` in the dotty directory. +The following commands can be run within `sbt` in the dotty directory. | Command | Description | |------------------------------------|------------------------------------------------------------------| @@ -26,4 +26,10 @@ The following commands can be run within the shell after running `sbt` in the do | scala3-compiler/Test/runMain
dotty.tools.printTypes
| Print types underlying representation | | scala3/scalac -print-tasty
local/out/Foo.tasty
| Print the TASTy of top-level class `Foo` | +## Shell Commands + +| Command | Description | +|--------------------------------------|------------------------------------------------------------------| +| `rm -rv *.tasty *.class out || true` | clean all compiled artifacts, from root dotty directory | + diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index cff47559a9..b9a6833b37 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -7,41 +7,21 @@ previous-page: procedures-areas next-page: procedures-efficiency --- -## Printing TASTy of a Class - -If are working on an issue related to TASTy, it is good to know how to inspect -the contents of a TASTy file, produced from compilation of Scala files. - -In the following example, we compile in a file `local/Foo.scala`, with contents -of `class Foo`, and then print its TASTy: - -```bash -$ sbt -sbt:scala3> scala3/scalac -d local/out local/Foo.scala -sbt:scala3> scala3/scalac -print-tasty local/out/Foo.tasty -``` -We see output such as the following: - -``` --------------------------------------------------------------------------------- -local/foo/out/Foo.tasty --------------------------------------------------------------------------------- -Names: - 0: ASTs - 1: - 2: Foo - 3: -... -``` -and so on. +In this section, we take a closer look at how to debug the contents of certain objects +in the compiler, and produced artifacts. ## Inspecting variables in-place -Frequently you need to know what a particular variable's value is. The most robust way to get this info is good old `println`. +Frequently we need to know what a particular variable's value is. Often, it is sufficient to use `println`. -When printing a variable, it's always a good idea to call `show` on that variable: `println(x.show)`. `show` is defined on many types and returns a human-readable string. So, if called e.g. on a tree, you'll get the code that tree signifies as opposed to the bare AST. +When printing a variable, it's always a good idea to call `show` on that variable: `println(x.show)`. +Many objects of the compiler define `show`, returning a human-readable string. +e.g. if called on a tree, the output will be the tree's representation as source code, rather than +the raw data underlying. -Sometimes you need to print flags. Flags is a metadata attached to trees containing information such as whether a class is abstract, comes from Java, what modifiers a variable has (private, protected etc) and so on. Flags are stored in a single `Long` value each bit of which represents whether a particular flag is set. +Sometimes you need to print flags. Flags are metadata attached to [symbols] containing information such as whether a +class is abstract, comes from Java, what modifiers a variable has (private, protected etc) and so on. +Flags are stored in a single `Long` value, each bit of which represents whether a particular flag is set. To print flags, you can use the `flagsString` method, e.g. `println(x.flagsString)`. @@ -79,8 +59,42 @@ Sometimes you may want to stop the compiler after a certain phase, for example t knock-on errors from occurring from a bug in an earlier phase. Use the flag `-Ystop-after:` to prevent any phases executing afterwards. -> This flag is particularly useful when you want to inspect the effect of a single miniphase -> of a phase group, use this in conjunction with the `-Xprint` flag. +> e.g. `-Xprint:` where `phase` is a miniphase, will print after +> the whole phase group is complete, which may several miniphases after `phase`. +> Instead you can use `-Ystop-after: -Xprint:` to stop +> immediately after the miniphase and see the trees that you intended. + +## Printing TASTy of a Class + +If are working on an issue related to TASTy, it is good to know how to inspect +the contents of a TASTy file, produced from compilation of Scala files. + +In the following example, we compile in an [issue directory][reproduce] `tasty/Foo.scala`, +with contents of `class Foo`, and create a `tasty/launch.iss` file to print its TASTy +with sbt command `issue tasty`: + +``` +$ (rm -rv out || true) && mkdir out # clean up compiler output, create `out` dir. + +scala3/scalac -d $here/out $here/Foo.scala + +scala3/scalac -print-tasty $here/out/Foo.tasty +``` + +We see output such as the following: + +``` +-------------------------------------------------------------------------------- +local/foo/out/Foo.tasty +-------------------------------------------------------------------------------- +Names: + 0: ASTs + 1: + 2: Foo + 3: +... +``` +and so on. ## Inspecting representation of types @@ -168,3 +182,5 @@ class StealBox: [2]: {% link _overviews/scala3-contribution/arch-types.md %} [3]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}/#phases [ScalaSettings.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala +[symbols]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/SymDenotations.scala +[reproduce]: {% link _overviews/scala3-contribution/procedures-reproduce.md %}/#dotty-issue-workspace diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index 21228f05f6..4b9b70c00c 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -7,7 +7,12 @@ previous-page: procedures-reproduce next-page: procedures-areas --- -Navigation answers the questions such as: where does the error happen in a codebase? Where is a particular object created? Where is a particular value assigned to a variable? +In this section, we will answer questions such as: +- where does the error happen in a codebase? +- where is a particular object created? +- where is a particular value assigned to a variable? + +> You may be able to quickly find the source responsible for an issue by consulting [common issue locations][areas] ## Increasing Logging Output Sometimes we can detect erroneous states producing an error by analysing logging output that is not @@ -31,32 +36,46 @@ Analysing the trace will give you a clue about the objects involved in producing This question arises, e.g., if you realised there's an object on the error site that shouldn't be there, most probably causing the error. So, in attempt to rectify the offending object, you want to know where it was created. -This can be done by injecting a *tracer* into the class of an instance in question. A tracer is the following variable: `val tracer = Thread.currentThread.getStackTrace.mkString("\n")`. When placed as a top-level definition at a class, it will contain a stack trace pointing at where exactly its particular instance was created. This is because, as a top-level `val`, it will be evaluated on construction of the instance in question. +We will do this by injecting a *tracer* into the class of an instance in question. +A tracer is the following variable: +```scala +val tracer = Thread.currentThread.getStackTrace.mkString("\n") +``` +When placed as a top-level definition at a class, it will contain a stack trace pointing at where exactly +its particular instance was created. This is because, as a top-level `val`, it will be evaluated on +construction of the instance in question. -Once you've injected a tracer into a class, you can `println` that tracer from the error site or other site you've found the object in question. +Once you've injected a tracer into a class, you can `println` that tracer from the error site or +other site you've found the object in question. ### Procedure -1. Determine the type of the object in question. You can use one of the following techniques to do so: - - Use your Metals-integrated IDE to determine the type - - Use `println` to print the object or `getClass` of that object - - Look at the context of where you encountered that object -2. Locate the type definition of the type of that object -3. Add a top-level definition `val tracer = Thread.currentThread.getStackTrace.mkString("\n")` to that type definition. -4. `println(x.tracer)` (where `x` is the name of the object in question) from the original site where you encountered the object. This will give you the stack trace pointing to the place where the constructor of that object was invoked. +1. Determine the type of the object in question. You can use one of the following techniques to do so: + - Use an IDE to get the type of an expression, or save the expression to a `val` + and see its inferred type. + - Use `println` to print the object or use `getClass` on that object. +2. Locate the type definition for the type of that object. +3. Add a field `val tracer = Thread.currentThread.getStackTrace.mkString("\n")` to that type definition. +4. `println(x.tracer)` (where `x` is the name of the object in question) from the original site where you + encountered the object. This will give you the stack trace pointing to the place where the + constructor of that object was invoked. -### Debugging tree creation site +### Trace a Tree Creation Site A special case of finding an object's creation site is for a Tree, this is supported directly in the compiler, as trees have an associated unique ID: -1. Run the compiler with the `-Xprint:` flag (discussed above) to get the tree in question output and the `-Yshow-tree-ids` flag. The `-Yshow-tree-ids` flag will show the ids of all the trees when printing them. You'll see something like `println#223("Hello World"#37)`. -2. Find the id of the desired tree. -3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace pointing to the creation site of the tree with a given id. +1. Run the compiler with `-Xprint:` and `-Yshow-tree-ids` flags. You should see the tree in question + be printed, alongside its ID. You'll see something like `println#223("Hello World"#37)`. +2. Copy the ID of the desired tree. +3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace pointing to the creation site of the tree the ID provided. ## Where was a particular value assigned to a variable? -Say you have a certain type assigned to a denotation and you would like to know why the denotation was typed that way. A type in the denotation is a `var myInfo: Type` so you can't just trace the creation site of that `Type` as was described before. You want to know the *assignment*, not *creation*, site. +Say you have a certain [type][types] assigned to a [Denotation] and you would like to know why it is that +specific type. The type of a denotation is defined by `var myInfo: Type`, and can be assigned multiple times. +In this case, knowing the creation site of that `Type`, as described above, is not useful; instead, we need to +know the *assignment* (not *creation*) site. This is done similarly to how you trace the creation site. Conceptually, you need to create a proxy for that variable that will log every write operation to it. Practically, if you are trying to trace the assignments to a variable `myInfo` of type `Type`, first, rename it to `myInfo_debug`. Then, insert the following at the same level as that variable: @@ -66,6 +85,7 @@ def myInfo: Type = myInfo_debug, def myInfo_=(x: Type) = { tracer = Thread.currentThread.getStackTrace.mkString("\n"); myInfo_debug = x } ``` -The procedure for figuring out an assignment site to a variable is the same as figuring out the creation site, except for the step (2) where you do as described in this section. - [Printers]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/Printers.scala +[areas]: {% link _overviews/scala3-contribution/procedures-areas.md %} +[Denotation]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Denotations.scala +[types]: {% link _overviews/scala3-contribution/arch-types.md %} diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index 552b833389..a9499b1a3f 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -7,75 +7,102 @@ previous-page: procedures-cheatsheet next-page: procedures-navigation --- -An issue usually contains some code that manifests some undesired behaviour. It's important to have a quick and well-defined way to reproduce the issue. +An issue found in the [GitHub repo][lampepfl/dotty] usually describes some code that +manifests undesired behaviour. -A good way to run an issue is from the sbt console opened in the Dotty project: `scalac `. `scalac` is an sbt task defined for the Dotty project that compiles a given file. +To try fixing it, we first need to reproduce the issue, so that +- we can understand its cause +- we can verify that any changes made to the codebase have a positive impact on the issue. -## Dotty Issue Workspace - -To simplify issue reproduction, [dotty-issue-workspace](https://github.com/anatoliykmetyuk/dotty-issue-workspace) was created. It does the same thing for sbt as shell scripts do for bash commands: it allows to bundle sbt commands for issue reproduction in one file and then run them from the Dotty project's sbt console. - -The procedure of reproducing an issue with dotty-issue-workspace installed (see its README to see how) is as follows: - -1. Create a folder for an issue and put the files reproducing the issue in that folder. -2. Create a file `launch.iss` and write there all sbt commands needed to reproduce an issue. See below for examples. -3. From the sbt console opened in the Dotty repo, run `issue `. E.g. if the folder name is `i1`, the command will be `issue i1`. This will execute all the sbt commands in `launch.iss` file one by one from the Dotty project. If you've set up dotty-issue-workspace as described in its README, the `issue` task will know where to find the folder by its name. - -### Examples - -#### Basic - -Say you want to reproduce locally issue [#7710](https://github.com/lampepfl/dotty/issues/7710). To do so: - -1. Follow [steps in README](https://github.com/anatoliykmetyuk/dotty-issue-workspace#getting-started) to install the plugin -2. In your Issue Workspace folder (as defined in the plugin's README file, "Getting Started" section, step 2), create a subfolder for the issue: `mkdir i7710` -3. Create a file with the reproduction: `cd i7710; touch Test.scala`. In that file, insert the code from the issue. -4. Create a file `launch.iss` with the following content: `scala3/scalac $here/Test.scala` -5. Open sbt console in the Dotty main repo. If you still don't have the Dotty repo cloned locally, run `git clone -6. From sbt console opened in the Dotty repo, run `issue i7710` to reproduce the issue - -The most basic usage for the `launch.iss` demonstrated above is as follows: +Say you want to reproduce locally issue [#7710], we would copy the code from the *"Minimised Code"* +section of the issue to a file named e.g. `local/i7710.scala`, +and then try to compile it from the sbt console opened in the dotty root directory: ```bash -scala3/scalac $here/Test.scala +$ sbt +sbt:scala3> scala3/scalac -d local/out local/i7710.scala ``` +> Here, the `-d` flag specifies a directory `local/out` where generated code will be output. -This will compile the `Test.scala` file in the current issue folder. `$here` is a magic variable that will be replaced by the absolute path to the issue folder. +You can then verify that the issue has the same behaviour as originally reported in the issue. +If so, then we can get to trying to fix it, else, perhaps the issue is out of date, or +is missing information about how to accurately reproduce the issue. -#### Defining the Output Folder +## Dotty Issue Workspace -Compiling files form Dotty's sbt shell has an undesirable effect of outputting class files to the Dotty repository directory thus polluting it. You can explicitly specify where class files should go as follows: +Sometimes we need more complex commands to reproduce an issue, and it is useful to script these, which +can be done with [dotty-issue-workspace]. It allows to bundle sbt commands for issue reproduction in one +file and then run them from the Dotty project's sbt console. + +### Try an Example Issue + +Let's use [dotty-issue-workspace] to reproduce issue [#7710]: +1. Follow [steps in README][workspace-readme] to install the plugin. +2. In your Issue Workspace directory (as defined in the plugin's README file, + "Getting Started" section, step 2), create a subdirectory for the + issue: `mkdir i7710`. +3. Create a file for the reproduction: `cd i7710; touch Test.scala`. In that file, + insert the code from the issue. +4. In the same directory, create a file `launch.iss` with the following content: + ```bash + $ (rm -rv out || true) && mkdir out # clean up compiler output, create `out` dir. + + scala3/scalac -d $here/out $here/Test.scala + ``` + + - The first line, `$ (rm -rv out || true) && mkdir out` specifies a shell command + (it starts with `$`), in this case to ensure that there is a fresh `out` + directory to hold compiler output. + - The next line, `scala3/scalac -d $here/out $here/Test.scala` specifies an sbt + command, which will compile `Test.scala` and place any output into `out`. + `$here` is a magic variable that will be replaced by the path of the parent + directory of `launch.iss` when executing the commands. +5. Now, from a terminal we will run the issue from sbt in the dotty directory + ([See here][clone] for a reminder if you have not cloned the repo.): + ```bash + $ sbt + sbt:scala3> issue i7710 + ``` + This will execute all the commands in the `i7710/launch.iss` file one by one. + If you've set up `dotty-issue-workspace` as described in its README, + the `issue` task will know where to find the folder by its name. + +### Using Script Arguments + +You can use script arguments inside `launch.iss` to reduce steps when +working with issues. + +Say you have an issue `foo`, with two alternative files that are very similar +`original.scala`, which reproduces the issue and `alt.scala`, which does not, +and you want to compile them selectively? + +You can achieve this via the following `launch.iss`: ```bash -$ rm -rv *.tasty *.class out || true # Remove any compiler-generated artefacts. `|| true` is needed in case no files were deleted. -$ mkdir out # Create an output directory where all the compiler artefacts go +$ (rm -rv out || true) && mkdir out # clean up compiler output, create `out` dir. -scala3/scalac -d $here/out $here/Test.scala # Invoke the compiler task defined by the Dotty sbt project +scala3/scalac -d $here/out $here/$1.scala # compile the first argument following `issue foo ` ``` -Lines starting from `$` are bash commands and not sbt ones. +It is similar to the previous example, except we now compile a file `$1.scala`, referring +to the first argument passed after the issue name. The command invoked would look like +`issue foo original` to compile `original.scala`, and `issue foo alt` for `alt.scala`. -#### Specifying the file to compile with a task argument +In general, you can refer to arguments passed to the `issue ` command using +the dollar notation: `$1` for the first argument, `$2` for the second and so on. -What if you have several files in your issue, say `Test.scala` and `Main.scala`, and you want to compile them selectively? If the name of your issue is `foo`, you want to be able to compile `Test.scala` file via `issue foo Test` command, and `Main.scala` – with `issue foo Main`. You can achieve this via the following `launch.iss`: +### Multiline Commands -```bash -$ rm -rv *.tasty *.class out || true # Remove any compiler-generated artefacts. `|| true` is needed in case no files were deleted. -$ mkdir out # Create an output directory where all the compiler artefacts go - -scala3/scalac -d $here/out $here/$1.scala # Invoke the compiler task defined by the Dotty sbt project -``` - -You can refer to arguments passed to the `issue ` command using the dollar notation: `$1` for the first argument, `$2` for the second and so on. - -This is useful, e.g., if you have one source that reproduces the issue and another one, very close to the issue reproduction, but failing to manifest the issue. +`launch.iss` files support putting commands accross multiple lines, which is useful for +toggling lines by using a comment. -#### All together - -The following template also includes some debug compiler flags, commented out. The advantage of having them is, if you need one them, you can enable it quickly by uncommenting it – as opposed to looking it up and typing it in your existing command. Put your favourite flags there for quick usage. +The following `launch.iss` file is a useful template for issues that run code after +compilation, it also includes some debug compiler flags, commented out. +The advantage of having them is, if you need one them, you can enable it quickly by +uncommenting it – as opposed to looking it up and typing it in your existing command. +Put your favourite flags there for quick usage. ```bash -$ rm -rv *.tasty *.class out || true # Remove any compiler-generated artefacts. `|| true` is needed in case no files were deleted. -$ mkdir out # Create an output directory where all the compiler artefacts go +$ (rm -rv out || true) && mkdir out # clean up compiler output, create `out` dir. scala3/scalac # Invoke the compiler task defined by the Dotty sbt project -d $here/out # All the artefacts go to the `out` folder created earlier @@ -90,3 +117,14 @@ scala3/scalac # Invoke the compiler task defined by the Dotty sbt project scala3/scala -classpath $here/out Test # Run the class `Test` generated by the compiler run (assuming the compiled issue contains such an entry point, otherwise comment this line) ``` + +## Conclusion + +In this section, we have seen how to reproduce an issue locally, next we will see +how to try and detect its root cause. + +[lampepfl/dotty]: https://github.com/lampepfl/dotty/issues +[#7710]: https://github.com/lampepfl/dotty/issues/7710 +[dotty-issue-workspace]: https://github.com/anatoliykmetyuk/dotty-issue-workspace +[workspace-readme]: https://github.com/anatoliykmetyuk/dotty-issue-workspace#getting-started +[clone]: {% link _overviews/scala3-contribution/start-intro.md %}#clone-the-code diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 29c9cb9d51..60ada71eca 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -7,6 +7,10 @@ previous-page: procedures-efficiency next-page: procedures-checklist --- +It is important to add tests before a pull request, to verify that everythig is working as expected, +and act as proof of what is valid/invalid Scala code (in case it is broken in the future). +In this section we will see the testign procedures in Scala 3. + ## Running all Tests To run all tests of Scala 3, including for compiler, REPL, libraries and more, run the following in sbt: From b123dcba26e052cdd1d3580bd1f2e4f7f0bf8954 Mon Sep 17 00:00:00 2001 From: Aesa Kamar Date: Thu, 30 Sep 2021 16:07:26 -0400 Subject: [PATCH 0236/1704] Update generics: use xs.prepended(x) instead of x :: xs (#2178) --- _overviews/scala3-book/types-generics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/types-generics.md b/_overviews/scala3-book/types-generics.md index 601e9f35e5..004e82e8e5 100644 --- a/_overviews/scala3-book/types-generics.md +++ b/_overviews/scala3-book/types-generics.md @@ -20,7 +20,7 @@ class Stack[A]: // ^ // Here we refer to the type parameter // v - def push(x: A): Unit = { elements = x :: elements } + def push(x: A): Unit = { elements = elements.prepended(x) } def peek: A = elements.head def pop(): A = val currentTop = peek From dacc9bee8f248e96cd83d964ed86976d12755a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurgis=20=C5=A0idlauskas?= Date: Thu, 30 Sep 2021 23:08:19 +0300 Subject: [PATCH 0237/1704] docs: reword pattern matching comment (#2188) --- _tour/pattern-matching.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_tour/pattern-matching.md b/_tour/pattern-matching.md index 0e225b2b65..72afeb1902 100644 --- a/_tour/pattern-matching.md +++ b/_tour/pattern-matching.md @@ -36,8 +36,8 @@ def matchTest(x: Int): String = x match { case 2 => "two" case _ => "other" } -matchTest(3) // prints other -matchTest(1) // prints one +matchTest(3) // returns other +matchTest(1) // returns one ``` This match expression has a type String because all of the cases return String. Therefore, the function `matchTest` returns a String. From 6fe067c719a3400a322aef7e3c97eb2a7e3ee653 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 13:46:31 +0200 Subject: [PATCH 0238/1704] Update _overviews/scala3-contribution/arch-symbols.md Co-authored-by: Dale Wijnand --- _overviews/scala3-contribution/arch-symbols.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/arch-symbols.md b/_overviews/scala3-contribution/arch-symbols.md index 229833f7cc..b16bbba1d5 100644 --- a/_overviews/scala3-contribution/arch-symbols.md +++ b/_overviews/scala3-contribution/arch-symbols.md @@ -69,7 +69,7 @@ Symbols are references to definitions (e.g. of variables, fields, classes). Symb `NoSymbol` is used to indicate the lack of a symbol. Symbols uniquely identify definitions, but they don't say what the definitions *mean*. To understand the meaning of a symbol -we need to look at its *denotation* (spefically for symbols, a `SymDenotation`). +we need to look at its *denotation* (specially for symbols, a `SymDenotation`). Symbols can not only represent terms, but also types (hence the `isTerm`/`isType` methods in the `Symbol` class). From 3947c38171b3871d8e9e543f121bb4267910fa4f Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 13:46:39 +0200 Subject: [PATCH 0239/1704] Update _overviews/scala3-contribution/start-intro.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/start-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/start-intro.md b/_overviews/scala3-contribution/start-intro.md index 62cb831bee..2a51a08901 100644 --- a/_overviews/scala3-contribution/start-intro.md +++ b/_overviews/scala3-contribution/start-intro.md @@ -17,7 +17,7 @@ next-page: procedures-intro - The following dependencies can be installed with [Coursier] CLI by running `cs setup`, (see [Single command Scala setup][cs-setup-blog]) including: - - A Java Virtual Machine (JDK 8 or higher), required for running the build tool. Verify that JVM is + - A Java Virtual Machine (JDK 8 or higher), required for running the build tool. Verify that the JVM is installed by running the following command in a terminal: `java -version`. - [sbt], the build tool required to build the Scala 3 compiler and libraries. From a7e1b948c01d632083c648ebd7fc49d1f0c782e4 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 13:46:46 +0200 Subject: [PATCH 0240/1704] Update _overviews/scala3-contribution/procedures-cheatsheet.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md index 2f88f90d77..27814caa5f 100644 --- a/_overviews/scala3-contribution/procedures-cheatsheet.md +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -8,7 +8,7 @@ next-page: procedures-reproduce --- This page is a quick-reference guide for common tasks while working with the compiler. -For more in-depth explainations, see the rest of this chapter. +For more in-depth explanations, see the rest of this chapter. ## sbt Commands From 57cdd9dabae61dc4dab482f1d1ae6ac28ba442d1 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 13:46:54 +0200 Subject: [PATCH 0241/1704] Update _overviews/scala3-contribution/procedures-reproduce.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-reproduce.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index a9499b1a3f..2511a044c2 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -23,7 +23,7 @@ sbt:scala3> scala3/scalac -d local/out local/i7710.scala ``` > Here, the `-d` flag specifies a directory `local/out` where generated code will be output. -You can then verify that the issue has the same behaviour as originally reported in the issue. +You can then verify that the local reproduction has the same behaviour as originally reported in the issue. If so, then we can get to trying to fix it, else, perhaps the issue is out of date, or is missing information about how to accurately reproduce the issue. From 11730354136a3cb4d623b845650e694c99aeb64f Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 13:47:02 +0200 Subject: [PATCH 0242/1704] Update _overviews/scala3-contribution/procedures-testing.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 60ada71eca..81cde04b76 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -73,7 +73,7 @@ in a single run, this is called *joint compilation*. In this case use file names ### Checking Program Output -`tests/run` tests verify the runtime behaviour of a test case. The output is checked by invoking a main method +`tests/run` tests verify the run-time behaviour of a test case. The output is checked by invoking a main method on a class `Test`, this can be done with either ```scala @main def Test: Unit = assert(1 > 0) From 544551c23e09c32efdc02a2d5c375c703a983ad9 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 13:47:09 +0200 Subject: [PATCH 0243/1704] Update _overviews/scala3-contribution/procedures-testing.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 81cde04b76..7771130915 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -86,7 +86,7 @@ object Test extends scala.App: If your program also prints output, this can be compared against `*.check` files. These contain the expected output of a program. Checkfiles are named after the issue they are checking, -e.g. `tests/run/i101.check` will check both of `tests/run/i101.scala` and `tests/run/i101/`. +e.g. `tests/run/i101.check` will check either `tests/run/i101.scala` or `tests/run/i101/`. ### Checking Compilation Errors From a7bb7643341c8f5ec07dc33fd8f293a302596b23 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:04:45 +0200 Subject: [PATCH 0244/1704] Update _overviews/scala3-contribution/procedures-testing.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 7771130915..a5f05d9d49 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -93,7 +93,7 @@ e.g. `tests/run/i101.check` will check either `tests/run/i101.scala` or `tests/r `tests/neg` tests verify that a file does not compile, and user-facing errors are produced. There are other neg categories such as `neg-custom-args`, i.e. with `neg` prefixing the directory name. Test files in the `neg*` categories require annotations for the lines where errors are expected. To do this add one `// error` token to the -end of a line for each error expected. e.g. if there are three errors expected, the end of line should contain +end of a line for each expected error. For example, if there are three expected errors, the end of the line should contain `// error // error // error`. You can verify the content of the error messages with a `*.check` file. These contain the expected output of the From 61b2433001ec5ee4085176373fba0d6d3aeca86c Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:04:53 +0200 Subject: [PATCH 0245/1704] Update _overviews/scala3-contribution/procedures-testing.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index a5f05d9d49..d7e949c087 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -98,7 +98,7 @@ end of a line for each expected error. For example, if there are three expected You can verify the content of the error messages with a `*.check` file. These contain the expected output of the compiler. Checkfiles are named after the issue they are checking, -e.g. `i101.check` will check both of `tests/neg/i101.scala` and `tests/neg/i101/`. +e.g. `i101.check` will check either `tests/neg/i101.scala` or `tests/neg/i101/`. *Note:* checkfiles are not required for the test to pass, however they do add more strong contraints that the errors are as expected. From 098c5667517c39c1fe047bdd1b2c6446bf6d6ec0 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:05:02 +0200 Subject: [PATCH 0246/1704] Update _overviews/scala3-contribution/procedures-testing.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/procedures-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index d7e949c087..38148a76f1 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -99,7 +99,7 @@ end of a line for each expected error. For example, if there are three expected You can verify the content of the error messages with a `*.check` file. These contain the expected output of the compiler. Checkfiles are named after the issue they are checking, e.g. `i101.check` will check either `tests/neg/i101.scala` or `tests/neg/i101/`. -*Note:* checkfiles are not required for the test to pass, however they do add more strong contraints that the errors +*Note:* checkfiles are not required for the test to pass, however they do add stronger constraints that the errors are as expected. ### If Checkfiles do not Match Output From 66d283a7128960d884f7d5db56728044b56def2a Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:05:10 +0200 Subject: [PATCH 0247/1704] Update _overviews/scala3-contribution/arch-intro.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/arch-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/arch-intro.md b/_overviews/scala3-contribution/arch-intro.md index 81e0fe5f10..91db84fc23 100644 --- a/_overviews/scala3-contribution/arch-intro.md +++ b/_overviews/scala3-contribution/arch-intro.md @@ -1,7 +1,7 @@ --- title: High Level Architecture type: chapter -description: This page introduces the high level architecture for the Scala 3 compiler. +description: This page introduces the high level architecture of the Scala 3 compiler. num: 12 previous-page: procedures-checklist next-page: arch-lifecycle From 883bb7d792335944409a38a901a3ced6a673a373 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:05:17 +0200 Subject: [PATCH 0248/1704] Update _overviews/scala3-contribution/arch-lifecycle.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/arch-lifecycle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index ce6fc7e4e9..2d49864738 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -14,7 +14,7 @@ representation that can run on one of Scala's target platforms. ## Introducing the Compiler's Lifecycle #### Core -At a high level, `dotc` centers its work around a [compiler][4], which maintains an ordered +At a high level, `dotc` centers its work around a [Compiler][4], which maintains an ordered list of [phases][3], and is responsible for creating new [runs][2]. A run is a complete iteration of the compiler's phases over a list of input sources. A compiler is designed to be reusable and can create many runs over its lifetime. From 6d8dab32c5149800b2578a124ad53238ca8386c8 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:05:27 +0200 Subject: [PATCH 0249/1704] Update _overviews/scala3-contribution/arch-symbols.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Doeraene --- _overviews/scala3-contribution/arch-symbols.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/arch-symbols.md b/_overviews/scala3-contribution/arch-symbols.md index b16bbba1d5..4fe1bab73c 100644 --- a/_overviews/scala3-contribution/arch-symbols.md +++ b/_overviews/scala3-contribution/arch-symbols.md @@ -75,7 +75,7 @@ Symbols can not only represent terms, but also types (hence the `isTerm`/`isType ## ClassSymbol -`ClassSymbol` represents either a `class`, or an `trait`, or an `object`. For example, an object +`ClassSymbol` represents either a `class`, or a `trait`, or an `object`. For example, an object ```scala object O { val s = 1 From b0038bf511eb51318ecc137e21be9646a4728df1 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:12:49 +0200 Subject: [PATCH 0250/1704] Update docstring link The old one is 404 now --- scala3/scaladoc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scala3/scaladoc.md b/scala3/scaladoc.md index b2bb2652a5..0e3f283f2a 100644 --- a/scala3/scaladoc.md +++ b/scala3/scaladoc.md @@ -79,7 +79,7 @@ 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]: https://dotty.epfl.ch/docs/usage/scaladoc/scaladocDocstrings.html +[scaladoc-docstrings]: https://dotty.epfl.ch/docs/usage/scaladoc/docstrings.html [static-documentation]: https://dotty.epfl.ch/docs/usage/scaladoc/staticSite.html [built-in-blog]: https://dotty.epfl.ch/docs/usage/scaladoc/blog.html [social-links]: https://dotty.epfl.ch/docs/usage/scaladoc/settings.html#-social-links From 348e282c59e78dd2cfc72acdb7399067ba0b6e86 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:19:03 +0200 Subject: [PATCH 0251/1704] Update static site link --- scala3/scaladoc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scala3/scaladoc.md b/scala3/scaladoc.md index 0e3f283f2a..fca1ba9593 100644 --- a/scala3/scaladoc.md +++ b/scala3/scaladoc.md @@ -80,6 +80,6 @@ Note that this feature is still in development, so it can be subject to consider 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]: https://dotty.epfl.ch/docs/usage/scaladoc/docstrings.html -[static-documentation]: https://dotty.epfl.ch/docs/usage/scaladoc/staticSite.html +[static-documentation]: https://dotty.epfl.ch/docs/usage/scaladoc/static-site.html [built-in-blog]: https://dotty.epfl.ch/docs/usage/scaladoc/blog.html [social-links]: https://dotty.epfl.ch/docs/usage/scaladoc/settings.html#-social-links From 35cfab12c2fcce17e7a04c5013da239321bfc1e2 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:22:53 +0200 Subject: [PATCH 0252/1704] Update _overviews/scala3-contribution/procedures-inspection.md Co-authored-by: Vinz --- _overviews/scala3-contribution/procedures-inspection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index b9a6833b37..f1d42d67a5 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -12,7 +12,7 @@ in the compiler, and produced artifacts. ## Inspecting variables in-place -Frequently we need to know what a particular variable's value is. Often, it is sufficient to use `println`. +Frequently we need to inspect the content of a particular variable. Often, it is sufficient to use `println`. When printing a variable, it's always a good idea to call `show` on that variable: `println(x.show)`. Many objects of the compiler define `show`, returning a human-readable string. From 708ab5fd164df750ade1e621ee72802508a8a9e5 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:23:00 +0200 Subject: [PATCH 0253/1704] Update _overviews/scala3-contribution/procedures-inspection.md Co-authored-by: Vinz --- _overviews/scala3-contribution/procedures-inspection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index f1d42d67a5..ea71e58e63 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -49,7 +49,7 @@ Here is a table of explanations for their use: ## Obtaining debug output from the compiler There are many compiler options that provide verbose debug output when compiling a file. -You can find the full list in [ScalaSettings.scala] file. One particularly useful one +You can find the full list in [ScalaSettings.scala] file. A particularly useful one is `-Xprint:` or `-Xprint:all`. It prints trees after a given phase or after all phases. As described in the [compiler lifecycle][3] each phase transforms the trees and types that represent your code in a certain way. This flag allows you to see exactly how. From 3a276c10c3e4e4044eab348ac232ec627875ac04 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Fri, 1 Oct 2021 16:23:15 +0200 Subject: [PATCH 0254/1704] Update _overviews/scala3-contribution/procedures-reproduce.md Co-authored-by: Vinz --- _overviews/scala3-contribution/procedures-reproduce.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index 2511a044c2..dc65111f85 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -54,7 +54,7 @@ Let's use [dotty-issue-workspace] to reproduce issue [#7710]: directory to hold compiler output. - The next line, `scala3/scalac -d $here/out $here/Test.scala` specifies an sbt command, which will compile `Test.scala` and place any output into `out`. - `$here` is a magic variable that will be replaced by the path of the parent + `$here` is a special variable that will be replaced by the path of the parent directory of `launch.iss` when executing the commands. 5. Now, from a terminal we will run the issue from sbt in the dotty directory ([See here][clone] for a reminder if you have not cloned the repo.): From 3d4b26ee098d0895f25d17bc7303961b0c876052 Mon Sep 17 00:00:00 2001 From: ghostbuster91 Date: Sat, 2 Oct 2021 18:01:03 +0200 Subject: [PATCH 0255/1704] Fix links in scala3 contribution guide which incorrectly referred to fragments --- _overviews/scala3-contribution/arch-lifecycle.md | 2 +- _overviews/scala3-contribution/arch-phases.md | 2 +- _overviews/scala3-contribution/arch-types.md | 2 +- _overviews/scala3-contribution/procedures-inspection.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 2d49864738..356cb5cec9 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -78,7 +78,7 @@ tools // contains helpers and the `scala` generic runner └── scripting // scala runner for the -script argument ``` -[1]: {% link _overviews/scala3-contribution/contribution-intro.md %}/#what-is-a-compiler +[1]: {% link _overviews/scala3-contribution/contribution-intro.md %}#what-is-a-compiler [2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala [3]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala [4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 536ce0d1ad..a653571b70 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -86,7 +86,7 @@ suitable for the runtime system, with two sub-groupings: ### `backendPhases` These map the transformed trees to Java classfiles or SJSIR files. -[1]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}/#phases +[1]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases [2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala [Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala [Phase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index 1fe9dcdddd..869a6399f8 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -149,4 +149,4 @@ Type -+- proxy_type --+- NamedType --------+- TypeRef [Types.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala [2]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala -[3]: {% link _overviews/scala3-contribution/procedures-inspection.md %}/#inspecting-representation-of-types +[3]: {% link _overviews/scala3-contribution/procedures-inspection.md %}#inspecting-representation-of-types diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index ea71e58e63..6f381177aa 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -180,7 +180,7 @@ class StealBox: [1]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala [2]: {% link _overviews/scala3-contribution/arch-types.md %} -[3]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}/#phases +[3]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases [ScalaSettings.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala [symbols]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/SymDenotations.scala -[reproduce]: {% link _overviews/scala3-contribution/procedures-reproduce.md %}/#dotty-issue-workspace +[reproduce]: {% link _overviews/scala3-contribution/procedures-reproduce.md %}#dotty-issue-workspace From ef7856e44968e10b3c403afe319c431b8da8a4b4 Mon Sep 17 00:00:00 2001 From: mdolata Date: Tue, 5 Oct 2021 22:47:09 +0200 Subject: [PATCH 0256/1704] Update scala-for-java-devs.md Fix typo --- _overviews/scala3-book/scala-for-java-devs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/scala-for-java-devs.md b/_overviews/scala3-book/scala-for-java-devs.md index 0421048ed5..fc7c8ab82b 100644 --- a/_overviews/scala3-book/scala-for-java-devs.md +++ b/_overviews/scala3-book/scala-for-java-devs.md @@ -1064,7 +1064,7 @@ Pair pair = Triplet triplet = Triplet.with("Eleven", 11, 11.0); Quartet triplet = - Triplet.with("Eleven", 11, 11.0, new Person("Eleven")); + Quartet.with("Eleven", 11, 11.0, new Person("Eleven")); ``` Other Java tuple names are Quintet, Sextet, Septet, Octet, Ennead, Decade. From 4bfc6e1e787f60858590d95e9118a03c7d1f7d6a Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 5 Oct 2021 16:31:17 -0600 Subject: [PATCH 0257/1704] FAQ: small improvement in 'this type' answer (#2195) --- _overviews/FAQ/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/_overviews/FAQ/index.md b/_overviews/FAQ/index.md index 39e18bdb45..e74d5a9a4a 100644 --- a/_overviews/FAQ/index.md +++ b/_overviews/FAQ/index.md @@ -229,7 +229,12 @@ For an in-depth treatment of types vs. classes, see the blog post ### How can a method in a superclass return a value of the “current” type? -Possible solutions include F-bounded polymorphism +First, note that using `this.type` won't work. People often try that, +but `this.type` means "the singleton type of this instance", a +different and too-specific meaning. Only `this` itself has the +type `this.type`; other instances do not. + +What does work? Possible solutions include F-bounded polymorphism _(familiar to Java programmers)_, type members, and the [typeclass pattern](http://tpolecat.github.io/2013/10/12/typeclass.html). From ce1dfa770309b159b6b960d60accdad45b31201c Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Mon, 4 Oct 2021 16:22:44 +0200 Subject: [PATCH 0258/1704] =?UTF-8?q?Blend=20Scala=202=20and=20Scala=203?= =?UTF-8?q?=20=E2=80=9Cgetting=20started=E2=80=9D=20pages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - A lot of content is duplicated between those pages - Several people got confused by the fact that `cs setup` installs the Scala 2 compiler (`scalac`), but that command is enough to work with Scala 3 projects (since they usually use a build tool, which automatically uses the appropriate compiler version) --- _getting-started/index.md | 129 +----------------------- _includes/getting-started.md | 189 ++++++++++++++++++++++++++++++++++ scala3/getting-started.md | 190 +---------------------------------- 3 files changed, 192 insertions(+), 316 deletions(-) create mode 100644 _includes/getting-started.md diff --git a/_getting-started/index.md b/_getting-started/index.md index 2d3cb5345d..cad7921564 100644 --- a/_getting-started/index.md +++ b/_getting-started/index.md @@ -7,132 +7,5 @@ includeTOC: true redirect_from: "/getting-started.html" --- -## Try Scala without installing anything -You can [try Scala in your browser](https://scastie.scala-lang.org/MHc7C9iiTbGfeSAvg8CKAA), with access to all Scala compilers and -all published libraries. -## Install Scala -Installing Scala means installing various command-line tools such as the Scala compiler and build tools. -We recommend using the Scala installer tool that automatically installs all the requirements, but you can still manually install each tool. - -### Using the Scala Installer (recommended way) -The Scala installer is a tool named `cs` that ensures that a JVM and standard Scala tools are installed on your system. - -* Download the `cs` tool and execute the `setup` command - -

- - -Along with managing JVMs, it also installs useful command line tools: -[Ammonite](https://ammonite.io/), -[coursier](https://get-coursier.io/), -scala (the Scala REPL and script runner), -scalac (the Scala compiler), -[sbt](https://www.scala-sbt.org/), and -[scalafmt](https://scalameta.org/scalafmt/). - -For more information, read [coursier-cli documentation](https://get-coursier.io/docs/cli-overview). - -### ...Or manually -1. if you don't have Java 8 or 11 installed, download -Java from [Oracle Java 8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html), [Oracle Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html), -or [AdoptOpenJDK 8/11](https://adoptopenjdk.net/). Refer to [JDK Compatibility](/overviews/jdk-compatibility/overview.html) for Scala/Java compatibility detail. -1. Install [sbt](https://www.scala-sbt.org/download.html) - -## Create a Hello-world project with sbt -To create a project, you can either use a command-line tool or an IDE. -If you are familiar with the command line, we recommend that approach. - -### Using command-line -sbt is a build tool for Scala. sbt compiles, runs, -and tests your Scala code. (It can also publish libraries and do many other tasks.) - -1. `cd` to an empty folder. -1. Run the following command `sbt new scala/hello-world.g8`. -This pulls the 'hello-world' template from GitHub. -It will also create a `target` folder, which you can ignore. -1. When prompted, name the application `hello-world`. This will -create a project called "hello-world". -1. Let's take a look at what just got generated: - -``` -- hello-world - - project (sbt uses this for its own files) - - build.properties - - build.sbt (sbt's build definition file) - - src - - main - - scala (all of your Scala code goes here) - - Main.scala (Entry point of program) <-- this is all we need for now -``` - -More documentation about sbt can be found in the [Scala Book](/overviews/scala-book/scala-build-tool-sbt.html) -and in the official sbt [documentation](https://www.scala-sbt.org/1.x/docs/index.html) - -### With an IDE -You can skip the rest of this page and go directly to [Building a Scala Project with IntelliJ and sbt](/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html#next-steps) - - -## Open hello-world project -Let's use an IDE to open the project. The most popular ones are IntelliJ and VSCode. -They both offer rich IDE features, but you can still use [many other editors.](https://scalameta.org/metals/docs/editors/overview.html) -### Using IntelliJ -1. Download and install [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/) -1. Install the Scala plugin by following [the instructions on how to install IntelliJ plugins](https://www.jetbrains.com/help/idea/managing-plugins.html) -1. Open the `build.sbt` file then choose *Open as a project* - -### Using VSCode with metals -1. Download [VSCode](https://code.visualstudio.com/Download) -1. Install the Metals extension from [the Marketplace](https://marketplace.visualstudio.com/items?itemName=scalameta.metals) -1. Next, open the directory containing a `build.sbt` file. When prompted to do so, select *Import build*. - -## Run Hello World -Open a terminal -1. `cd` into `hello-world`. -1. Run `sbt`. This will open up the sbt console. -1. Type `~run`. The `~` is optional and causes sbt to re-run on every file save, -allowing for a fast edit/run/debug cycle. sbt will also generate a `target` directory -which you can ignore. - - -## Next Steps -Once you've finished the above tutorials, consider checking out: - -* [The Scala Book](/overviews/scala-book/introduction.html), which provides a set of short lessons introducing Scala’s main features. -* [The Tour of Scala](/tour/tour-of-scala.html) for bite-sized introductions to Scala's features. -* [Learning Resources](/learn.html), which includes online interactive tutorials and courses. -* [Our list of some popular Scala books](/books.html). - -## Getting Help -There are a multitude of mailing lists and real-time chat rooms in case you want to quickly connect with other Scala users. Check out our [community](https://scala-lang.org/community/) page for a list of these resources, and for where to reach out for help. - - - - - - - - - +{% include getting-started.md %} diff --git a/_includes/getting-started.md b/_includes/getting-started.md new file mode 100644 index 0000000000..dcbf448b0f --- /dev/null +++ b/_includes/getting-started.md @@ -0,0 +1,189 @@ +The instructions below cover both Scala 2 and Scala 3. + +## Try Scala without installing anything + +To start experimenting with Scala right away, use “Scastie” in your browser. +_Scastie_ is an online “playground” where you can experiment with Scala examples to see how things work, with access to all Scala compilers and published libraries. + +> Scastie supports both Scala 2 and Scala 3, but it defaults +> to Scala 3. If you are looking for a Scala 2 snippet to play with, +> [click here](https://scastie.scala-lang.org/MHc7C9iiTbGfeSAvg8CKAA). + +## Install Scala on your computer + +Installing Scala means installing various command-line tools such as the Scala compiler and build tools. +We recommend using the Scala installer tool "Coursier" that automatically installs all the requirements, but you can still manually install each tool. + +### Using the Scala Installer (recommended way) + +The Scala installer is a tool named [Coursier](https://get-coursier.io/docs/cli-overview), whose main command is named `cs`. +It ensures that a JVM and standard Scala tools are installed on your system. +Install it on your system with the following instructions. + +
+
+

Follow the instructions to install the cs launcher then run:

+

$ ./cs setup

+
+
+ + +Along with managing JVMs, `cs setup` also installs useful command-line tools: + +- A JDK (if you don't have one already) +- The [sbt](https://www.scala-sbt.org/) build tool +- [Ammonite](https://ammonite.io/), an enhanced REPL +- [scalafmt](https://scalameta.org/scalafmt/), the Scala code formatter +- `scalac` (the Scala 2 compiler) +- `scala` (the Scala 2 REPL and script runner). + +For more information about `cs`, read +[coursier-cli documentation](https://get-coursier.io/docs/cli-overview). + +> Currently, `cs setup` installs the Scala 2 compiler and runner (the `scalac` and +> `scala` commands, respectively). This is usually not an issue because most projects +> use a build tool that works with both Scala 2 and Scala 3. +> Nevertheless, you can install the Scala 3 compiler and runner as command-line tools +> by running the following additional commands: +> ``` +> $ cs install scala3-compiler +> $ cs install scala3 +> ``` + +### ...or manually + +You only need two tools to compile, run, test, and package a Scala project: Java 8 or 11, +and sbt. +To install them manually: + +1. if you don't have Java 8 or 11 installed, download + Java from [Oracle Java 8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html), [Oracle Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html), + or [AdoptOpenJDK 8/11](https://adoptopenjdk.net/). Refer to [JDK Compatibility](/overviews/jdk-compatibility/overview.html) for Scala/Java compatibility detail. +1. Install [sbt](https://www.scala-sbt.org/download.html) + +## Create a "Hello World" project with sbt + +Once you have installed sbt, you are ready to create a Scala project, which +is explained in the following sections. + +To create a project, you can either use the command line or an IDE. +If you are familiar with the command line, we recommend that approach. + +### Using the command line + +sbt is a build tool for Scala. sbt compiles, runs, +and tests your Scala code. (It can also publish libraries and do many other tasks.) + +To create a new Scala project with sbt: + +1. `cd` to an empty folder. +1. Run the command `sbt new scala/scala3.g8` to create a Scala 3 project, or `sbt new scala/hello-world.g8` to create a Scala 2 project. + This pulls a project template from GitHub. + It will also create a `target` folder, which you can ignore. +1. When prompted, name the application `hello-world`. This will + create a project called "hello-world". +1. Let's take a look at what just got generated: + +``` +- hello-world + - project (sbt uses this for its own files) + - build.properties + - build.sbt (sbt's build definition file) + - src + - main + - scala (all of your Scala code goes here) + - Main.scala (Entry point of program) <-- this is all we need for now +``` + +More documentation about sbt can be found in the [Scala Book](/scala3/book/tools-sbt.html) (see [here](/overviews/scala-book/scala-build-tool-sbt.html) for the Scala 2 version) +and in the official sbt [documentation](https://www.scala-sbt.org/1.x/docs/index.html) + +### With an IDE + +You can skip the rest of this page and go directly to [Building a Scala Project with IntelliJ and sbt](/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html) + + +## Open hello-world project + +Let's use an IDE to open the project. The most popular ones are IntelliJ and VSCode. +They both offer rich IDE features, but you can still use [many other editors.](https://scalameta.org/metals/docs/editors/overview.html) + +### Using IntelliJ + +1. Download and install [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/) +1. Install the Scala plugin by following [the instructions on how to install IntelliJ plugins](https://www.jetbrains.com/help/idea/managing-plugins.html) +1. Open the `build.sbt` file then choose *Open as a project* + +### Using VSCode with metals + +1. Download [VSCode](https://code.visualstudio.com/Download) +1. Install the Metals extension from [the Marketplace](https://marketplace.visualstudio.com/items?itemName=scalameta.metals) +1. Next, open the directory containing a `build.sbt` file (this should be the directory `hello-world` if you followed the previous instructions). When prompted to do so, select *Import build*. + +>[Metals](https://scalameta.org/metals) is a “Scala language server” that provides support for writing Scala code in VS Code and other editors like [Atom, Sublime Text, and more](https://scalameta.org/metals/docs/editors/overview.html), using the Language Server Protocol. +> +> Under the hood, Metals communicates with the build tool by using +> the [Build Server Protocol (BSP)](https://build-server-protocol.github.io/). For details on how Metals works, see, [“Write Scala in VS Code, Vim, Emacs, Atom and Sublime Text with Metals”](https://www.scala-lang.org/2019/04/16/metals.html). + +### Play with the source code + +View these two files in your IDE: + +- _build.sbt_ +- _src/main/scala/Main.scala_ + +When you run your project in the next step, the configuration in _build.sbt_ will be used to run the code in _src/main/scala/Main.scala_. + +## Run Hello World + +If you’re comfortable using your IDE, you can run the code in _Main.scala_ from your IDE. + +Otherwise, you can run the application from a terminal with these steps: + +1. `cd` into `hello-world`. +1. Run `sbt`. This opens up the sbt console. +1. Type `~run`. The `~` is optional and causes sbt to re-run on every file save, + allowing for a fast edit/run/debug cycle. sbt will also generate a `target` directory + which you can ignore. + +When you’re finished experimenting with this project, press `[Enter]` to interrupt the `run` command. +Then type `exit` or press `[Ctrl+D]` to exit sbt and return to your command line prompt. + +## Next Steps + +Once you've finished the above tutorials, consider checking out: + +* [The Scala Book](/scala3/book/introduction.html) (see the Scala 2 version [here](/overviews/scala-book/introduction.html)), which provides a set of short lessons introducing Scala’s main features. +* [The Tour of Scala](/tour/tour-of-scala.html) for bite-sized introductions to Scala's features. +* [Learning Resources](/learn.html), which includes online interactive tutorials and courses. +* [Our list of some popular Scala books](/books.html). +* [The migration guide](/scala3/guides/migration/compatibility-intro.html) helps you to migrate your existing Scala 2 code base to Scala 3. + +## Getting Help +There are a multitude of mailing lists and real-time chat rooms in case you want to quickly connect with other Scala users. Check out our [community](https://scala-lang.org/community/) page for a list of these resources, and for where to reach out for help. + + + + + + + + + diff --git a/scala3/getting-started.md b/scala3/getting-started.md index c888285fb3..b82ed44938 100644 --- a/scala3/getting-started.md +++ b/scala3/getting-started.md @@ -1,193 +1,7 @@ --- layout: singlepage-overview -title: Getting Started with Scala 3 +title: Getting Started languages: ["ja"] --- - - -## Try Scala without installing anything - -To start experimenting with Scala 3 right away, use “Scastie” in your browser. -_Scastie_ is an online “playground” where you can experiment with Scala examples to see how things work, with access to all Scala compilers and published libraries. - - - -## Install Scala on your computer - -Installing Scala means installing various command-line tools and build tools. -We recommend using the Scala installer tool "Coursier" that automatically installs all the requirements, but you can still manually install each tool. - - -### Using the Scala Installer (recommended way) - -The Scala installer is a tool named [Coursier](https://get-coursier.io/docs/cli-overview), whose main command is named `cs`. -It ensures that a JVM and standard Scala tools are installed on your system. -Install it on your system with the following instructions. - -
-
-

Follow the instructions to install the cs launcher then run:

-

$ cs install scala3-repl

-

$ cs install scala3-compiler

-
-
- -Along with managing JVMs, `cs setup` also installs useful command line tools: - -- A JDK -- The [sbt](https://www.scala-sbt.org) and [mill](https://com-lihaoyi.github.io/mill/) build tools -- [Ammonite](https://ammonite.io), an enhanced REPL -- [scalafmt](https://scalameta.org/scalafmt), the Scala formatter -- The [Coursier CLI](https://get-coursier.io/docs/cli-overview), to install further Scala-based applications -- (the `scala` and `scalac` command-line tools for Scala 2.13 -- not Scala 3). - -For more information, read the [coursier-cli documentation](https://get-coursier.io/docs/cli-overview). - - -### ... or manually - -You only need two tools to compile, run, test, and package a Scala project: Java 8 or 11, and sbt. -To install these manually: - -1. Download Java from [Oracle Java 8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html), [Oracle Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html), or [AdoptOpenJDK 8/11](https://adoptopenjdk.net/). Refer to [JDK Compatibility](/overviews/jdk-compatibility/overview.html) for Scala/Java compatibility detail. -2. Install [sbt](https://www.scala-sbt.org/download.html) - - - -## Create a “Hello, world” project with sbt - -To create a project, you can either use a command-line tool or an IDE. -If you are familiar with the command line, we recommend that approach. - - -### Using the command line - -sbt is a build tool for Scala. -sbt compiles, runs, and tests your Scala code. -(It can also publish libraries and do many other tasks.) - -To create a new Scala project with sbt: - -1. `cd` to an empty folder. -1. Run this command `sbt new scala/scala3.g8`. -This pulls the ['hello-world' template][template-url] from GitHub. -It also creates a _target_ folder, which you can ignore. -1. When prompted, name the application `hello world`. - This will create a project called "hello-world". -1. Let’s take a look at what just got generated: - -``` -hello-world/ - project/ (sbt uses this for its own files) - build.properties - src/main/scala/ (all of your Scala code goes here) - Main.scala (entry point of program) - build.sbt (sbt’s build definition file) -``` -The scala file `Main.scala` in `src/main/scala` is all we need for now. - -More documentation about sbt can be found in the [Scala Book](/scala3/book/scala-tools.html) and in the official sbt [documentation](https://www.scala-sbt.org/1.x/docs/index.html) - - -{% comment %} -### With IntelliJ IDEA - -You can skip the rest of this page and go directly to [Building a Scala Project with IntelliJ and sbt](/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html) -{% endcomment %} - - -## Open the “Hello, world” project - -Let’s use an IDE to open the project. -The most popular ones are IntelliJ IDEA and VS Code. -They both offer rich IDE features, but you can still use [many other editors.](https://scalameta.org/metals/docs/editors/overview.html) - -### Using IntelliJ IDEA - -1. Download and install [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/) -1. Install the Scala plugin by following [the instructions on how to install IntelliJ plugins](https://www.jetbrains.com/help/idea/managing-plugins.html) -1. Open the _build.sbt_ file, then choose _Open as a project_ - -### Using VS Code with Metals - -1. Download [VS Code](https://code.visualstudio.com/Download) -1. Install the Metals extension from [the Marketplace](https://marketplace.visualstudio.com/items?itemName=scalameta.metals) -1. Next, open the directory containing your _build.sbt_ file. - When prompted to do so, select _Import build_. - ->[Metals](https://scalameta.org/metals) is a “Scala language server” that provides support for writing Scala code in VS Code and other editors like [Atom, Sublime Text, and more](https://scalameta.org/metals/docs/editors/overview.html), using the Language Server Protocol. -> -> Under the hood, Metals communicates with the build tool by using -> the [Build Server Protocol (BSP)](https://build-server-protocol.github.io/). For details on how Metals works, see, [“Write Scala in VS Code, Vim, Emacs, Atom and Sublime Text with Metals”](https://www.scala-lang.org/2019/04/16/metals.html). - - -### View the source code - -View these two files in your IDE: - -- _build.sbt_ -- _src/main/scala/Main.scala_ - -When you run your project in the next step, the configuration in _build.sbt_ will be used to run the code in _src/main/scala/Main.scala_. - - - -## Run the “Hello, world” project - -If you’re comfortable using your IDE, you can run the code in _Main.scala_ from your IDE. - -Otherwise, you can run the application from a terminal with these steps: - -1. `cd` into _hello-world_. -1. Run `sbt`. - This opens up the sbt console. -1. Type `~run`. - The `~` is optional and causes sbt to re-run on every file save, allowing for a fast edit/run/debug cycle. - sbt also generates a `target` directory for its own use, which you can ignore. - -When you’re finished experimenting with this project, press `[Enter]` to interrupt the `run` command. -Then type `exit` or press `[Ctrl][d]` to exit sbt and return to your command line prompt. - - - -## Next steps - -Now that you’ve created a first “Hello, world” example with Scala 3, you’re ready for some next steps. -Consider checking out: - -- [The Scala 3 Book](/scala3/book/introduction.html), which provides a set of short lessons introducing Scala’s main features -- [The migration guide](/scala3/guides/migration/compatibility-intro.html) helps you to migrate your existing Scala 2 code base to Scala 3. - -When you want to connect with other Scala users, there are several mailing lists and real-time chat rooms available. -Check out our [Scala community page](https://scala-lang.org/community/) for a list of these resources, and for where to reach out for help. - - - - - - - - - - - -[template-url]: https://github.com/scala/scala3.g8 +{% include getting-started.md %} From 470920800206c180905436fcc08c7df0226af473 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Mon, 11 Oct 2021 13:24:07 +0200 Subject: [PATCH 0259/1704] Show the search bar on every page of the documentation --- _layouts/inner-page-parent-dropdown.html | 10 +++++++++- _sass/components/dropdown.scss | 1 + _sass/components/search.scss | 13 +++++++++++++ _sass/layout/documentation.scss | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/_layouts/inner-page-parent-dropdown.html b/_layouts/inner-page-parent-dropdown.html index e17ed69425..1bd7ae1f23 100644 --- a/_layouts/inner-page-parent-dropdown.html +++ b/_layouts/inner-page-parent-dropdown.html @@ -34,11 +34,19 @@

Work in Progress

{% endif %}

{{ page.title }}

i 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 diff --git a/scala3/guides.md b/scala3/guides.md index 028858ab27..2dd55572e0 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -19,7 +19,7 @@ guides: url: "/scala3/guides/tasty-overview.html" description: "An overview over the TASTy format aimed at end-users of the Scala language." - title: Scaladoc - by: Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak + by: Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak, Kacper Korban icon: book url: "/scala3/guides/scaladoc" description: "Scala’s API documentation generation tool." diff --git a/scala3/scaladoc.md b/scala3/scaladoc.md index 75a02292c1..ade5f14d06 100644 --- a/scala3/scaladoc.md +++ b/scala3/scaladoc.md @@ -54,16 +54,28 @@ For more information you can follow this [thread](https://contributors.scala-lan ![](../resources/images/scala3/scaladoc/snippet-compiler2.gif) ![](../resources/images/scala3/scaladoc/snippet-compiler1.gif) -### Type-signature browsing +### Type-based search -Haskell programmers are probably familiar with Hoogle - a documentation search engine that allows you browse the docs by signatures rather than symbolic names. Since many Scala developers are also functional programming fans, we decided to add a similar functionality to Scaladoc. The whole tool is based on [Inkuire](https://github.com/VirtusLab/Inkuire), which works with Kotlin and is being currently adapted to Scala 3. +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. -![](../resources/images/scala3/scaladoc/inkuire.gif) -To be up-to-date with this feature you can follow this [thread](https://contributors.scala-lang.org/t/pre-sip-scaladoc-search-by-type-signature/1604/15). -Note that this feature is in an early stage of development. We still don't support type lambdas, higher-kinded types, and some other Scala features. +So, for a declatation: +``` +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]: https://dotty.epfl.ch/docs/usage/scaladoc/scaladocDocstrings.html [static-documentation]: https://dotty.epfl.ch/docs/usage/scaladoc/staticSite.html From 8bcd3a54d78b2f43b86a958851526eaccc0a15f7 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 21 Jul 2021 14:32:42 +0200 Subject: [PATCH 0174/1704] API documentation is now hosted on scala-lang.org/api/3.x/ --- _data/scala3-doc-nav-header.yml | 2 +- _ja/index.md | 2 +- _ja/scala3/index.md | 2 +- _overviews/scala3-book/first-look-at-types.md | 2 +- _overviews/scala3-book/taste-collections.md | 2 +- _overviews/scala3-macros/tutorial/compiletime.md | 2 +- _overviews/scala3-macros/tutorial/reflection.md | 10 +++++----- .../scaladoc-settings-compatibility.md | 2 +- _scala3-reference/changed-features/main-functions.md | 4 ++-- _scala3-reference/contextual/derivation-macro.md | 2 +- _scala3-reference/dropped-features/limit22.md | 4 ++-- _scala3-reference/dropped-features/nonlocal-returns.md | 2 +- _scala3-reference/metaprogramming/compiletime-ops.md | 4 ++-- _scala3-reference/metaprogramming/macros.md | 4 ++-- .../new-types/dependent-function-types.md | 2 +- .../other-new-features/transparent-traits.md | 2 +- _zh-cn/index.md | 2 +- index.md | 2 +- scala3/index.md | 2 +- 19 files changed, 27 insertions(+), 27 deletions(-) diff --git a/_data/scala3-doc-nav-header.yml b/_data/scala3-doc-nav-header.yml index 94e3bfa5c5..cc6fc6fd6b 100644 --- a/_data/scala3-doc-nav-header.yml +++ b/_data/scala3-doc-nav-header.yml @@ -14,4 +14,4 @@ - title: Reference url: "/scala3/reference/overview.html" - title: API - url: "https://dotty.epfl.ch/api/index.html" + url: "https://scala-lang.org/api/3.x/" diff --git a/_ja/index.md b/_ja/index.md index 94b30d7acf..26cbcfcc35 100644 --- a/_ja/index.md +++ b/_ja/index.md @@ -35,7 +35,7 @@ scala3-sections: - title: "API" description: "Scala 3 の全バージョンのAPIドキュメント" icon: "fa fa-file-text" - link: https://dotty.epfl.ch/api/index.html + link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "Scala 3 の言語仕様" icon: "fa fa-book" diff --git a/_ja/scala3/index.md b/_ja/scala3/index.md index ef3c3238c7..1700088233 100644 --- a/_ja/scala3/index.md +++ b/_ja/scala3/index.md @@ -36,7 +36,7 @@ sections: - title: "API" description: "Scala 3 の全バージョンのAPIドキュメント" icon: "fa fa-file-text" - link: https://dotty.epfl.ch/api/index.html + link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "Scala 3 の言語仕様" icon: "fa fa-book" diff --git a/_overviews/scala3-book/first-look-at-types.md b/_overviews/scala3-book/first-look-at-types.md index 106f564258..c62e2cc9dd 100644 --- a/_overviews/scala3-book/first-look-at-types.md +++ b/_overviews/scala3-book/first-look-at-types.md @@ -276,5 +276,5 @@ Alternatives to `null` are discussed in the [Functional Programming chapter][fp] [matchable]: {{ site.scala3ref }}/other-new-features/matchable.html [interpolation]: {% link _overviews/core/string-interpolation.md %} [fp]: {% link _overviews/scala3-book/fp-intro.md %} -[option-api]: https://dotty.epfl.ch/api/scala/Option.html +[option-api]: https://scala-lang.org/api/3.x/scala/Option.html [safe-null]: {{ site.scala3ref }}/other-new-features/explicit-nulls.html diff --git a/_overviews/scala3-book/taste-collections.md b/_overviews/scala3-book/taste-collections.md index 67fdbc1d61..fe1232914f 100644 --- a/_overviews/scala3-book/taste-collections.md +++ b/_overviews/scala3-book/taste-collections.md @@ -114,5 +114,5 @@ See the [Reference documentation][reference] for more tuple details. [collections]: {% link _overviews/scala3-book/collections-intro.md %} -[api]: https://dotty.epfl.ch/api/index.html +[api]: https://scala-lang.org/api/3.x/ [reference]: {{ site.scala3ref }}/overview.html diff --git a/_overviews/scala3-macros/tutorial/compiletime.md b/_overviews/scala3-macros/tutorial/compiletime.md index 7914230ddb..0204efa4c4 100644 --- a/_overviews/scala3-macros/tutorial/compiletime.md +++ b/_overviews/scala3-macros/tutorial/compiletime.md @@ -72,4 +72,4 @@ On the other hand, `summonInline` will summon after inlining if the call is not *Coming soon* -[compiletime-api]: https://dotty.epfl.ch/api/scala/compiletime.html +[compiletime-api]: https://scala-lang.org/api/3.x/scala/compiletime.html diff --git a/_overviews/scala3-macros/tutorial/reflection.md b/_overviews/scala3-macros/tutorial/reflection.md index 5418240ec7..187c0420a6 100644 --- a/_overviews/scala3-macros/tutorial/reflection.md +++ b/_overviews/scala3-macros/tutorial/reflection.md @@ -50,9 +50,9 @@ the types in the API. For each type `Foo` in the tree: - the trait `FooModule` contains the static methods available on the object `Foo`. Most notably, constructors (`apply/copy`) and the `unapply` method which provides the extractor(s) required for pattern matching. - For all types `Upper` such that `Foo <: Upper`, the methods defined in `UpperMethods` are available on `Foo` as well. -For example [`TypeBounds`](https://dotty.epfl.ch/api/scala/quoted/Quotes$reflectModule.html#TypeBounds-0), a subtype of `TypeRepr`, represents a type tree of the form `T >: L <: U`: a type `T` which is a super type of `L` -and a subtype of `U`. In [`TypeBoundsMethods`](https://dotty.epfl.ch/api/scala/quoted/Quotes$reflectModule$TypeBoundsMethods.html), you will find the methods `low` and `hi`, which allow you to access the -representations of `L` and `U`. In [`TypeBoundsModule`](https://dotty.epfl.ch/api/scala/quoted/Quotes$reflectModule$TypeBoundsModule.html), you will find the `unapply` method, which allows you to write: +For example [`TypeBounds`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule.html#TypeBounds-0), a subtype of `TypeRepr`, represents a type tree of the form `T >: L <: U`: a type `T` which is a super type of `L` +and a subtype of `U`. In [`TypeBoundsMethods`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$TypeBoundsMethods.html), you will find the methods `low` and `hi`, which allow you to access the +representations of `L` and `U`. In [`TypeBoundsModule`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$TypeBoundsModule.html), you will find the `unapply` method, which allows you to write: ```scala def f(tpe: TypeRepr) = @@ -121,7 +121,7 @@ In addition `Symbol` exposes and is used by many useful methods. For example: - `TypeRepr.baseClasses` returns the list of symbols of classes extended by a type. - `Symbol.pos` gives you access to the position where the symbol is defined, the source code of the definition and even the filename where the symbol is defined. - - and many useful others that you can find in [`SymbolMethods`](https://dotty.epfl.ch/api/scala/quoted/Quotes$reflectModule$SymbolMethods.html) + - and many useful others that you can find in [`SymbolMethods`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$SymbolMethods.html) ### To Symbol and back @@ -230,6 +230,6 @@ We can make this printer the default if needed *Coming soon* [tasty inspection]: {{ site.scala3ref }}/metaprogramming/tasty-inspect.html -[reflection doc]: https://dotty.epfl.ch/api/scala/quoted/Quotes$reflectModule.html?query=trait%20reflectModule +[reflection doc]: https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule.html [best practices]: {% link _overviews/scala3-macros/best-practices.md %} diff --git a/_overviews/scala3-migration/scaladoc-settings-compatibility.md b/_overviews/scala3-migration/scaladoc-settings-compatibility.md index 4f111eb51a..f3d022e35b 100644 --- a/_overviews/scala3-migration/scaladoc-settings-compatibility.md +++ b/_overviews/scala3-migration/scaladoc-settings-compatibility.md @@ -71,7 +71,7 @@ This setting is a generalized form of the old settings for javadoc/scaladoc. Example external mapping is: ``` --external-mappings:.*scala.*::scaladoc3::http://dotty.epfl.ch/api/,.*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/ +-external-mappings:.*scala.*::scaladoc3::https://scala-lang.org/api/3.x/,.*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/ ``` A mapping is of the form '\::\[scaladoc3|scaladoc|javadoc]::\'. You can supply several mappings, separated by commas, as shown in the example. diff --git a/_scala3-reference/changed-features/main-functions.md b/_scala3-reference/changed-features/main-functions.md index 299f644410..6f035278ed 100644 --- a/_scala3-reference/changed-features/main-functions.md +++ b/_scala3-reference/changed-features/main-functions.md @@ -59,7 +59,7 @@ The Scala compiler generates a program from a `@main` method `f` as follows: - The class has a static method `main` with the usual signature. It takes an `Array[String]` as argument and returns `Unit`. - The generated `main` method calls method `f` with arguments converted using - methods in the [`scala.util.CommandLineParser`](https://dotty.epfl.ch/api/scala/util/CommandLineParser$.html) object. + methods in the [`scala.util.CommandLineParser`](https://scala-lang.org/api/3.x/scala/util/CommandLineParser$.html) object. For instance, the `happyBirthDay` method above would generate additional code equivalent to the following class: @@ -87,5 +87,5 @@ object happyBirthday extends App: ... ``` -The previous functionality of `App`, which relied on the "magic" [`DelayedInit`]({% link _scala3-reference/dropped-features/delayed-init.md %}) trait, is no longer available. [`App`](https://dotty.epfl.ch/api/scala/App.html) still exists in limited form for now, but it does not support command line arguments and will be deprecated in the future. If programs need to cross-build +The previous functionality of `App`, which relied on the "magic" [`DelayedInit`]({% link _scala3-reference/dropped-features/delayed-init.md %}) trait, is no longer available. [`App`](https://scala-lang.org/api/3.x/scala/App.html) still exists in limited form for now, but it does not support command line arguments and will be deprecated in the future. If programs need to cross-build between Scala 2 and Scala 3, it is recommended to use an explicit `main` method with an `Array[String]` argument instead. diff --git a/_scala3-reference/contextual/derivation-macro.md b/_scala3-reference/contextual/derivation-macro.md index f833f0cc73..c9c657d780 100644 --- a/_scala3-reference/contextual/derivation-macro.md +++ b/_scala3-reference/contextual/derivation-macro.md @@ -98,7 +98,7 @@ One additional difference with the body of `derived` here as opposed to the one with `inline` is that with macros we need to synthesize the body of the code during the macro-expansion time. That is the rationale behind the `eqProductBody` function. Assuming that we calculate the equality of two `Person`s defined with a case -class that holds a name of type [`String`](https://dotty.epfl.ch/api/scala/Predef$.html#String) +class that holds a name of type [`String`](https://scala-lang.org/api/3.x/scala/Predef$.html#String-0) and an age of type `Int`, the equality check we want to generate is the following: ```scala diff --git a/_scala3-reference/dropped-features/limit22.md b/_scala3-reference/dropped-features/limit22.md index d4294d533f..2e21efec58 100644 --- a/_scala3-reference/dropped-features/limit22.md +++ b/_scala3-reference/dropped-features/limit22.md @@ -10,10 +10,10 @@ The limits of 22 for the maximal number of parameters of function types and the maximal number of fields in tuple types have been dropped. * Functions can now have an arbitrary number of parameters. Functions beyond - [`scala.Function22`](https://www.scala-lang.org/api/current/scala/Function22.html) are erased to a new trait [`scala.runtime.FunctionXXL`](https://dotty.epfl.ch/api/scala/runtime/FunctionXXL.html). + [`scala.Function22`](https://www.scala-lang.org/api/current/scala/Function22.html) are erased to a new trait [`scala.runtime.FunctionXXL`](https://scala-lang.org/api/3.x/scala/runtime/FunctionXXL.html). * Tuples can also have an arbitrary number of fields. Tuples beyond [`scala.Tuple22`](https://www.scala-lang.org/api/current/scala/Tuple22.html) - are erased to a new class [`scala.runtime.TupleXXL`](https://dotty.epfl.ch/api/scala/runtime/TupleXXL.html) (which extends the trait [`scala.Product`](https://dotty.epfl.ch/api/scala/Product.html)). Furthermore, they support generic + are erased to a new class [`scala.runtime.TupleXXL`](https://scala-lang.org/api/3.x/scala/runtime/TupleXXL.html) (which extends the trait [`scala.Product`](https://scala-lang.org/api/3.x/scala/Product.html)). Furthermore, they support generic operation such as concatenation and indexing. Both of these are implemented using arrays. diff --git a/_scala3-reference/dropped-features/nonlocal-returns.md b/_scala3-reference/dropped-features/nonlocal-returns.md index d4483d0050..89b244f122 100644 --- a/_scala3-reference/dropped-features/nonlocal-returns.md +++ b/_scala3-reference/dropped-features/nonlocal-returns.md @@ -8,7 +8,7 @@ Returning from nested anonymous functions has been deprecated. Nonlocal returns are implemented by throwing and catching `scala.runtime.NonLocalReturnException`-s. This is rarely what is intended by the programmer. It can be problematic because of the hidden performance cost of throwing and catching exceptions. Furthermore, it is a leaky implementation: a catch-all exception handler can intercept a `NonLocalReturnException`. -A drop-in library replacement is provided in [`scala.util.control.NonLocalReturns`](http://dotty.epfl.ch/api/scala/util/control/NonLocalReturns$.html). Example: +A drop-in library replacement is provided in [`scala.util.control.NonLocalReturns`](https://scala-lang.org/api/3.x/scala/util/control/NonLocalReturns$.html). Example: ```scala import scala.util.control.NonLocalReturns.* diff --git a/_scala3-reference/metaprogramming/compiletime-ops.md b/_scala3-reference/metaprogramming/compiletime-ops.md index a047b27429..a61096e3f2 100644 --- a/_scala3-reference/metaprogramming/compiletime-ops.md +++ b/_scala3-reference/metaprogramming/compiletime-ops.md @@ -8,7 +8,7 @@ next-page: /scala3/reference/metaprogramming/macros ## The `scala.compiletime` Package -The [`scala.compiletime`](https://dotty.epfl.ch/api/scala/compiletime.html) package contains helper definitions that provide support for compile-time operations over values. They are described in the following. +The [`scala.compiletime`](https://scala-lang.org/api/3.x/scala/compiletime.html) package contains helper definitions that provide support for compile-time operations over values. They are described in the following. ### `constValue` and `constValueOpt` @@ -128,7 +128,7 @@ fail(identity("foo")) // error: failed on: identity("foo") ### The `scala.compiletime.ops` package -The [`scala.compiletime.ops`](https://dotty.epfl.ch/api/scala/compiletime/ops.html) package contains types that provide support for +The [`scala.compiletime.ops`](https://scala-lang.org/api/3.x/scala/compiletime/ops.html) package contains types that provide support for primitive operations on singleton types. For example, `scala.compiletime.ops.int.*` provides support for multiplying two singleton `Int` types, and `scala.compiletime.ops.boolean.&&` for the conjunction of two diff --git a/_scala3-reference/metaprogramming/macros.md b/_scala3-reference/metaprogramming/macros.md index 1c80bc0fd1..9d70230c13 100644 --- a/_scala3-reference/metaprogramming/macros.md +++ b/_scala3-reference/metaprogramming/macros.md @@ -20,7 +20,7 @@ schemes with the familiar string interpolation syntax. println(s"Hello, $name, here is the result of 1 + 1 = ${1 + 1}") ``` -In string interpolation we _quoted_ a string and then we _spliced_ into it, two others. The first, `name`, is a reference to a value of type [`String`](https://dotty.epfl.ch/api/scala/Predef$.html#String), and the second is an arithmetic expression that will be _evaluated_ followed by the splicing of its string representation. +In string interpolation we _quoted_ a string and then we _spliced_ into it, two others. The first, `name`, is a reference to a value of type [`String`](https://scala-lang.org/api/3.x/scala/Predef$.html#String-0), and the second is an arithmetic expression that will be _evaluated_ followed by the splicing of its string representation. Quotes and splices in this section allow us to treat code in a similar way, effectively supporting macros. The entry point for macros is an inline method @@ -85,7 +85,7 @@ and it takes types `T` to expressions of type `Type[T]`. Splicing takes expressions of type `Expr[T]` to expressions of type `T` and it takes expressions of type `Type[T]` to types `T`. -The two types can be defined in package [`scala.quoted`](https://dotty.epfl.ch/api/scala/quoted.html) as follows: +The two types can be defined in package [`scala.quoted`](https://scala-lang.org/api/3.x/scala/quoted.html) as follows: ```scala package scala.quoted diff --git a/_scala3-reference/new-types/dependent-function-types.md b/_scala3-reference/new-types/dependent-function-types.md index 178ea07b75..ffa9012c4a 100644 --- a/_scala3-reference/new-types/dependent-function-types.md +++ b/_scala3-reference/new-types/dependent-function-types.md @@ -38,7 +38,7 @@ This type describes function values that take any argument `e` of type `Entry` and return a result of type `e.Key`. Recall that a normal function type `A => B` is represented as an -instance of the [`Function1` trait](https://dotty.epfl.ch/api/scala/Function1.html) +instance of the [`Function1` trait](https://scala-lang.org/api/3.x/scala/Function1.html) (i.e. `Function1[A, B]`) and analogously for functions with more parameters. Dependent functions are also represented as instances of these traits, but they get an additional refinement. In fact, the dependent function type above is just syntactic sugar for diff --git a/_scala3-reference/other-new-features/transparent-traits.md b/_scala3-reference/other-new-features/transparent-traits.md index 96f316d560..236f0c64d7 100644 --- a/_scala3-reference/other-new-features/transparent-traits.md +++ b/_scala3-reference/other-new-features/transparent-traits.md @@ -44,7 +44,7 @@ appear in the inferred type. The traits `scala.Product`, `java.lang.Serializable` and `java.lang.Comparable` are treated automatically as transparent. Other traits are turned into transparent traits using the modifier `transparent`. Scala 2 traits can also be made transparent -by adding a [`@transparentTrait` annotation](https://dotty.epfl.ch/api/scala/annotation/transparentTrait.html). This annotation is defined in `scala.annotation`. It will be deprecated and phased out once Scala 2/3 interopability is no longer needed. +by adding a [`@transparentTrait` annotation](https://scala-lang.org/api/3.x/scala/annotation/transparentTrait.html). This annotation is defined in `scala.annotation`. It will be deprecated and phased out once Scala 2/3 interopability is no longer needed. Typically, transparent traits are traits that influence the implementation of inheriting classes and traits that are not usually used as types by themselves. Two examples from the standard collection library are: diff --git a/_zh-cn/index.md b/_zh-cn/index.md index f5e0820897..d540a8e560 100644 --- a/_zh-cn/index.md +++ b/_zh-cn/index.md @@ -36,7 +36,7 @@ scala3-sections: - title: "API" description: "Scala 3 各个版本的API" icon: "fa fa-file-text" - link: https://dotty.epfl.ch/api/index.html + link: https://scala-lang.org/api/3.x/ - title: "语言参考手册" description: "Scala 3 语言参考手册" icon: "fa fa-book" diff --git a/index.md b/index.md index b04c33b013..776a881de1 100644 --- a/index.md +++ b/index.md @@ -35,7 +35,7 @@ scala3-sections: - title: "API" description: "API documentation for every version of Scala 3." icon: "fa fa-file-text" - link: https://dotty.epfl.ch/api/index.html + link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "The Scala 3 language reference." icon: "fa fa-book" diff --git a/scala3/index.md b/scala3/index.md index 3c79dd7984..9c2faa947e 100644 --- a/scala3/index.md +++ b/scala3/index.md @@ -35,7 +35,7 @@ sections: - title: "API" description: "API documentation for every version of Scala 3." icon: "fa fa-file-text" - link: https://dotty.epfl.ch/api/index.html + link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "The Scala 3 language reference." icon: "fa fa-book" From 3f4a5372a73e69ef274b5b74aea4cb1f1cf8cc67 Mon Sep 17 00:00:00 2001 From: Milo Date: Thu, 29 Jul 2021 14:32:11 +0200 Subject: [PATCH 0175/1704] Change "Writer" to "Printer" The contravariance example uses the `Printer` class, so the text should use this name instead of `Writer` to avoid confusion. Unless I am missing something? --- _tour/variances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_tour/variances.md b/_tour/variances.md index 69f371e81e..1e6b83c73b 100644 --- a/_tour/variances.md +++ b/_tour/variances.md @@ -54,7 +54,7 @@ printAnimalNames(dogs) ### Contravariance -A type parameter `A` of a generic class can be made contravariant by using the annotation `-A`. This creates a subtyping relationship between the class and its type parameter that is similar, but opposite to what we get with covariance. That is, for some `class Writer[-A]`, making `A` contravariant implies that for two types `A` and `B` where `A` is a subtype of `B`, `Writer[B]` is a subtype of `Writer[A]`. +A type parameter `A` of a generic class can be made contravariant by using the annotation `-A`. This creates a subtyping relationship between the class and its type parameter that is similar, but opposite to what we get with covariance. That is, for some `class Printer[-A]`, making `A` contravariant implies that for two types `A` and `B` where `A` is a subtype of `B`, `Printer[B]` is a subtype of `Printer[A]`. Consider the `Cat`, `Dog`, and `Animal` classes defined above for the following example: From 103ad7d8d4f02824db1a6ee4682b4c3cfcb45c65 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 2 Aug 2021 11:02:21 -0700 Subject: [PATCH 0176/1704] update JDK compat page (add 18, other tweaks) (#2144) I removed some of the information about JDK 9, 10, 12, 13, 14, and 15 as it seems like noise at this point. I kept 16 for now. --- _overviews/jdk-compatibility/overview.md | 33 +++++++++++------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 060065b177..5bbdea4e87 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -12,10 +12,9 @@ Sometimes new JVM and JDK (Java Development Kit) versions require us to update S | JDK version | Minimum Scala versions | Recommended Scala versions | |:-----------:|:---------------------------------|:-----------------------------------------------------------| +| 18 | 2.13.7 (forthcoming), 2.12.15 (forthcoming) | 2.13.7 (forthcoming), 2.12.15 (forthcoming) | | 17 | 2.13.6, 2.12.15 (forthcoming) | 2.13.6, 2.12.15 (forthcoming) | | 16 | 2.13.5, 2.12.14 | 2.13.6, 2.12.14 | -| 13, 14, 15 | 2.13.2, 2.12.11 | 2.13.6, 2.12.14 | -| 12 | 2.13.1, 2.12.9 | 2.13.6, 2.12.14 | | 11 | 2.13.0, 2.12.4, 2.11.12 | 2.13.6, 2.12.14, 2.11.12 | | 8 | 2.13.0, 2.12.0, 2.11.0, 2.10.2 | 2.13.6, 2.12.14, 2.11.12, 2.10.7 | | 6, 7 | 2.11.0, 2.10.0 | 2.11.12, 2.10.7 | @@ -24,7 +23,7 @@ Even when a version combination isn't listed as supported, most features may sti In general, Scala works on JDK 11+, including GraalVM, but it probably won't take special advantage of features that were added after JDK 8. See [below](#jdk-11-compatibility-notes). -Lightbend offers [commercial support](https://www.lightbend.com/lightbend-platform-subscription) for Scala. The linked page includes contact information for inquiring about supported and recommended versions. +Lightbend offers [commercial support](https://www.lightbend.com/lightbend-platform-subscription) for Scala 2. The linked page includes contact information for inquiring about supported and recommended versions. ## Running versus compiling @@ -56,7 +55,7 @@ OpenJDK comes in various flavors, offered by different providers. We build and ## JDK 11 compatibility notes -Although the table above jumps from 8 to 11, JDK 9 and 10 will probably also work wherever 11 does. But unlike 9 and 10, 11 is an LTS release, so 11 is what we actually test on and recommend. +The Scala test suite and Scala community build are green on JDK 11. The Scala compiler does not enforce the restrictions of the Java Platform Module System, which means that code that typechecks may incur linkage errors at runtime. Scala 2.13.x will eventually provide [rudimentary support](https://github.com/scala/scala/pull/7218) for this (perhaps only in nightlies built on JDK 11). @@ -67,32 +66,30 @@ To track progress on JDK 11 related issues, watch: * the ["Support JDK 11"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue * the [jdk11 label](https://github.com/scala/bug/labels/jdk11) in scala/bug -To help with testing on JDK 11, see [scala/scala-dev#559](https://github.com/scala/scala-dev/issues/559). - -## JDK 12, 13, 14, and 15 compatibility notes - -JDK 14 was released in March 2020, and JDK 15 was released in September 2020. But 12, 13, 14, 15 are not LTS releases, so the remarks above about non-LTS releases apply. The next LTS release will be JDK 17. - -JDK 12, 13, 14, and 15 are expected to work wherever JDK 11 does. The Scala community build now runs on JDK 15 (as well as 11 and 8). - -As of October 2020, the [jdk12](https://github.com/scala/bug/labels/jdk12) and [jdk13](https://github.com/scala/bug/labels/jdk13) labels in scala/bug have no open bugs. New issues will likely be reported against the newer non-LTS [jdk14 label](https://github.com/scala/bug/labels/jdk14) and [jdk15 label](https://github.com/scala/bug/labels/jdk15) and [jdk16 label](https://github.com/scala/bug/labels/jdk15) or the LTS [jdk11 label](https://github.com/scala/bug/labels/jdk11). - -As far as we know, 12, 13, 14, and 15 are similar to 11 with respect to Scala compatibility. - ## JDK 16 compatibility notes JDK 16 was released in March 2021. It is not an LTS release, so the remarks above about non-LTS releases apply. The next LTS release will be JDK 17. +JDK 16 is expected to work wherever JDK 17 does, and in most cases wherever JDK 11 does. See the [jdk11](https://github.com/scala/bug/labels/jdk11) and [jdk17](https://github.com/scala/bug/labels/jdk17) labels in the Scala 2 bug tracker. + The Scala build and test suite pass on JDK 16, and so does the Scala community build. We shipped improved JDK 16 support in [Scala 2.13.5](https://github.com/scala/scala/releases/tag/v2.13.5) and [2.12.14](https://github.com/scala/scala/releases/tag/v2.12.14). ## JDK 17 compatibility notes -JDK 17 prereleases are already available. As of June 2021, the feature set is frozen. The final release is [targeted](https://openjdk.java.net/projects/jdk/17/) for September 2021. JDK 17 will be an LTS release. +JDK 17 will be an LTS release. + +JDK 17 prereleases are already available. Since June 2021, the feature set is frozen. The final release is [targeted](https://openjdk.java.net/projects/jdk/17/) for September 2021. -The Scala community build passes on JDK 17. We are in the process of making Scala's own build and test suite pass. +The Scala test suite and Scala community build are green on JDK 17. Scala 2.13.6 already supports JDK 17. Scala 2.12.14 mostly works as well, but there is a known issue with lambda deserialiation; a fix will ship in Scala 2.12.15 (see [release timing thread](https://contributors.scala-lang.org/t/scala-2-12-15-planning/5152)). +## JDK 18 compatibility notes + +Early access builds of JDK 18, a non-LTS release, are already available. + +We will ship basic JDK 18 support in Scala 2.13.7 and 2.12.15. (The needed fixes are already available in nightly builds of 2.13 and 2.12.) + ## GraalVM Native Image compatibility notes There are several records of successfully using Scala with [GraalVM](https://www.graalvm.org) Native Image(i.e.: ahead of time compiler) to produce directly executable binaries. From 54315fca0f1a291037e684bba219f3867ce8bab9 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 2 Aug 2021 11:02:51 -0700 Subject: [PATCH 0177/1704] FAQ: is this StackOverflowError a compiler bug? (#2143) --- _overviews/FAQ/index.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/_overviews/FAQ/index.md b/_overviews/FAQ/index.md index 9959fa0bb0..3c94ae5957 100644 --- a/_overviews/FAQ/index.md +++ b/_overviews/FAQ/index.md @@ -234,3 +234,24 @@ Not really. See [this answer on Stack Overflow](https://stackoverflow.com/a/6525 The latter has a singleton type, which is too specific. See [answer on Stack Overflow](https://stackoverflow.com/a/65258340/4111404). + +### I got a `StackOverflowError` while compiling my code. Is it a compiler bug? + +It might be. + +To find out, try giving the compiler more stack and see if the +error goes away. + +It's possible for the compiler to run out of stack when compiling some +kinds of heavily nested code. The JVM's default stack size is rather +small, so this can happen sooner than you might expect. + +The stack size can be changed by passing `-Xss...` at JVM startup, for +example `-Xss16M`. How to do this depends on what IDE and/or build +tool you are using. For sbt, add it to `.jvmopts`. + +If the stack overflow doesn't go away no matter how much stack you +give the compiler, then it's a compiler bug. Please report it on the +[Scala 2 bug tracker](https://github.com/scala/bug/issues) or [Scala 3 +bug tracker](https://github.com/lampepfl/dotty/issues), but check +first if it's a duplicate of an existing ticket. From 10f8873025e5cb0b9cfc0f0c4327c51e43c50641 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 2 Aug 2021 11:02:57 -0700 Subject: [PATCH 0178/1704] FAQ: add question about _ in lambdas (#2142) --- _overviews/FAQ/index.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/_overviews/FAQ/index.md b/_overviews/FAQ/index.md index 3c94ae5957..39e18bdb45 100644 --- a/_overviews/FAQ/index.md +++ b/_overviews/FAQ/index.md @@ -149,6 +149,23 @@ has a good summary of all the meanings it has. Note that, even if the specific meaning is different, according to the situation, it usually means _"anything"_. +### Why doesn't my function literal with `_` in it work? + +Not all function literals (aka lambdas) can be expressed with the `_` +syntax. + +Every occurrence of `_` introduces a new variable. So `_ + _` means +`(x, y) => x + y`, not `x => x + x`. The latter function cannot be +written using the `_` syntax. + +Also, the scope of `_` is always the smallest enclosing expression. +The scope is determined purely syntactically, during parsing, without +regard to types. So for example, `foo(_ + 1)` always means `foo(x => +x + 1)`; it never means `x => foo(x + 1)`. The latter function cannot +be written using the `_` syntax. + +See also [SLS 6.23.2](https://scala-lang.org/files/archive/spec/2.13/06-expressions.html#placeholder-syntax-for-anonymous-functions). + ### Can I chain or nest implicit conversions? Not really, but you can [make it work](https://stackoverflow.com/a/5332804). From 80a59f7a269234b1a664ac940be9579df743bf5a Mon Sep 17 00:00:00 2001 From: Zeimyth Date: Mon, 12 Jul 2021 14:00:40 -0600 Subject: [PATCH 0179/1704] Clean up grammar and other nit issues in quotes.md --- _overviews/scala3-macros/tutorial/quotes.md | 173 ++++++++++---------- 1 file changed, 89 insertions(+), 84 deletions(-) diff --git a/_overviews/scala3-macros/tutorial/quotes.md b/_overviews/scala3-macros/tutorial/quotes.md index 478bdf4778..0c4ef57d16 100644 --- a/_overviews/scala3-macros/tutorial/quotes.md +++ b/_overviews/scala3-macros/tutorial/quotes.md @@ -9,8 +9,8 @@ next-page: reflection ## Code blocks A quoted code block `'{ ... }` is syntactically similar to a string quote `" ... "` with the difference that the first contains typed code. -To insert a code into other code we use the `$expr` or `${ expr }` where `expr` is of type `Expr[T]`. -Intuitively, the code directly within the quote is not executed now, while the code within the splices is evaluated and their results are then spliced into the surrounding expression. +To insert code into other code, we can use the syntax `$expr` or `${ expr }`, where `expr` is of type `Expr[T]`. +Intuitively, the code directly within the quote (`'{ ... }`) is not executed now, while the code within the splice (`${ ... }`) is evaluated and the results spliced into the surrounding expression. ```scala val msg = Expr("Hello") @@ -19,15 +19,14 @@ println(printHello.show) // print("Hello") ``` In general, the quote delays the execution while the splice makes it happen before the surrounding code. -This generalisation allows us to also give meaning to a `${ .. }` that is not within a quote, this evaluate the code within the splice at compile-time and place the result in the generated code. -Due to some technical considerations we only allow it directly within `inline` definitions that we call a [macro][macros]. +This generalisation allows us to also give meaning to a `${ ... }` that is not within a quote. This evaluates the code within the splice at compile-time and places the result in the generated code. +Due to some technical considerations, only non-quoted splices are allowed directly within `inline` definitions that we call a [macro][macros]. -It is possible to write a quote within a quote, but usually when we write macros we do not encounter such code. +It is possible to write a quote within a quote, but this pattern is not common when writing macros. ## Level consistency -One cannot simply write any arbitrary code within quotes and within splices. -A part of the program will live at compile-time and the other will live at runtime. -Consider the following ill-constructed code. +One cannot simply write any arbitrary code within quotes and within splices, as one part of the program will live at compile-time and the other will live at runtime. +Consider the following ill-constructed code: ```scala def myBadCounter1(using Quotes): Expr[Int] = { @@ -36,9 +35,9 @@ def myBadCounter1(using Quotes): Expr[Int] = { } ``` The problem with this code is that `x` exists during compilation, but then we try to use it after the compiler has finished (maybe even in another machine). -Clearly it would be impossible to access its value and update it. +Clearly, it would be impossible to access its value and update it. -Now consider the dual version, where we define the variable at runtime and try to access it at compile-time. +Now consider the dual version, where we define the variable at runtime and try to access it at compile-time: ```scala def myBadCounter2(using Quotes): Expr[Int] = '{ var x = 0 @@ -62,58 +61,58 @@ We introduce _levels_ as a count of the number of quotes minus the number of spl } ``` -The system will allow at any level references to global definitions such as `println`, but will restrict references to local definitions. +The system will allow references to global definitions such as `println` at any level, but will restrict references to local definitions. A local definition can only be accessed if it is defined at the same level as its reference. This will catch the errors in `myBadCounter1` and `myBadCounter2`. -Even though we cannot refer to variable inside of a quote, we can still pass its current value to it by lifting the value to an expression using `Expr.apply`. +Even though we cannot refer to a variable inside of a quote, we can still pass its current value through a quote by lifting the value to an expression using `Expr.apply`. ## Generics -When using type parameters or other kinds of abstract types with quoted code we will need to keep track of some of these types explicitly. +When using type parameters or other kinds of abstract types with quoted code, we will need to keep track of some of these types explicitly. Scala uses erased-types semantics for its generics. This implies that types are removed from the program when compiling and the runtime does not have to track all types at runtime. -Consider the following code +Consider the following code: ```scala -def evalAndUse[T](x: Expr[T]) = '{ +def evalAndUse[T](x: Expr[T])(using Quotes) = '{ val x2: T = $x // error ... // use x2 } ``` -Here we will get an error telling us that we are missing a contextual `Type[T]`. -Therefore we can easily fix it by writing +Here, we will get an error telling us that we are missing a contextual `Type[T]`. +Therefore, we can easily fix it by writing: ```scala -def evalAndUse[X](x: Expr[X])(using Type[X])(using Quotes) = '{ - val x2: X = $x +def evalAndUse[T](x: Expr[T])(using Type[T])(using Quotes) = '{ + val x2: T = $x ... // use x2 } ``` -This code will be equivalent to the more verbose +This code will be equivalent to this more verbose version: ```scala -def evalAndUse[X](x: Expr[X])(using t: Type[X])(using Quotes) = '{ +def evalAndUse[T](x: Expr[T])(using t: Type[T])(using Quotes) = '{ val x2: t.Underlying = $x ... // use x2 } ``` -Note that `Type` has a type member called `Underlying` that refers to the type held within the `Type`, in this case `t.Underlying` is `X`. -Note that even if we used it implicitly is better to keep it contextual as some changes inside the quote may require it. +Note that `Type` has a type member called `Underlying` that refers to the type held within the `Type`; in this case, `t.Underlying` is `T`. +Even if we use the `Type` implicitly, is generally better to keep it contextual as some changes inside the quote may require it. The less verbose version is usually the best way to write the types as it is much simpler to read. -In some cases, we will not know statically the type within the `Type` and will need to use the `.T` to refer to it. +In some cases, we will not statically know the type within the `Type` and will need to use the `t.Underlying` to refer to it. When do we need this extra `Type` parameter? -* When a type is abstract and it is used in a level that is larger than the current level. +* When a type is abstract and it is used at a level that is deeper than the current level. -When you add a `Type` contextual parameter to a method you will either get it from another context parameter or implicitly with a call to `Type.of`. +When you add a `Type` contextual parameter to a method, you will either get it from another context parameter or implicitly with a call to `Type.of`: ```scala evalAndUse(Expr(3)) // is equivalent to evalAndUse[Int](Expr(3))(using Type.of[Int]) ``` -As you may have guessed, not every type is can be used in this `Type.of[..]` out of the box. -We cannot recover abstract types that have already been erased. +As you may have guessed, not every type can be used as a parameter to `Type.of[..]` out of the box. +For example, we cannot recover abstract types that have already been erased: ```scala def evalAndUse[T](x: Expr[T])(using Quotes) = given Type[T] = Type.of[T] // error @@ -124,14 +123,14 @@ def evalAndUse[T](x: Expr[T])(using Quotes) = ``` But we can write more complex types that depend on these abstract types. -For example, if we look for or construct explicitly a `Type[List[T]]`, then the system will require a `Type[T]` in the current context to compile. +For example, if we look for or explicitly construct a `Type[List[T]]`, then the system will require a `Type[T]` in the current context to compile. -Good code should only add `Type` to the context parameters and never use them explicitly. -Explicit use is useful while debugging at the cost of conciseness and clarity. +Good code should only add `Type`s to the context parameters and never use them explicitly. +However, explicit use is useful while debugging, though it comes at the cost of conciseness and clarity. ## ToExpr -The `Expr.apply` method uses intances of `ToExpr` to generate an expression that will create a copy of the value. +The `Expr.apply` method uses instances of `ToExpr` to generate an expression that will create a copy of the value. ```scala object Expr: def apply[T](x: T)(using Quotes, ToExpr[T]): Expr[T] = @@ -161,16 +160,16 @@ given ToExpr[StringContext] with { } ``` The `Varargs` constructor just creates an `Expr[Seq[T]]` which we can efficiently splice as a varargs. -In general any sequence can be spliced with `$mySeq: _*` to splice it a varargs. +In general, any sequence can be spliced with `$mySeq: _*` to splice it as a varargs. ## Quoted patterns -Quotes can also be used to check if an expression is equivalent to another or deconstruct an expression into it parts. +Quotes can also be used to check if an expression is equivalent to another or to deconstruct an expression into its parts. ### Matching exact expression -The simples thing we can do is to check if an expression matches another know expression. -Bellow we show how we can match some expressions using `case '{...} =>` +The simplest thing we can do is to check if an expression matches another known expression. +Below, we show how we can match some expressions using `case '{...} =>`. ```scala def valueOfBoolean(x: Expr[Boolean])(using Quotes): Option[Boolean] = @@ -189,7 +188,7 @@ def valueOfBooleanOption(x: Expr[Option[Boolean]])(using Quotes): Option[Option[ ### Matching partial expression -To make thing more compact, we can also match patially the expression using a `$` to match arbitrarry code and extract it. +To make things more compact, we can also match a part of the expression using a splice (`$`) to match arbitrary code and extract it. ```scala def valueOfBooleanOption(x: Expr[Option[Boolean]])(using Quotes): Option[Option[Boolean]] = @@ -201,8 +200,8 @@ def valueOfBooleanOption(x: Expr[Option[Boolean]])(using Quotes): Option[Option[ ### Matching types of expression -We can also match agains code of an arbitrary type `T`. -Bellow we match agains `$x` of type `T` and we get out an `x` of type `Expr[T]`. +We can also match against code of an arbitrary type `T`. +Below, we match against `$x` of type `T` and we get out an `x` of type `Expr[T]`. ```scala def exprOfOption[T: Type](x: Expr[Option[T]])(using Quotes): Option[Expr[T]] = @@ -212,7 +211,7 @@ def exprOfOption[T: Type](x: Expr[Option[T]])(using Quotes): Option[Expr[T]] = case _ => None ``` -We can also check for the type of an expression +We can also check for the type of an expression: ```scala def valueOf(x: Expr[Any])(using Quotes): Option[Any] = @@ -221,7 +220,7 @@ def valueOf(x: Expr[Any])(using Quotes): Option[Any] = case '{ $x: Option[Boolean] } => valueOfBooleanOption(x) // x: Expr[Option[Boolean]] case _ => None ``` -Or similarly for an some subexpression +Or similarly for a partial expression: ```scala case '{ Some($x: Boolean) } => // x: Expr[Boolean] @@ -229,15 +228,15 @@ case '{ Some($x: Boolean) } => // x: Expr[Boolean] ### Matching receiver of methods -When we want to match the receiver of a method we need to explicitly state its type +When we want to match the receiver of a method, we need to explicitly state its type: ```scala case '{ ($ls: List[Int]).sum } => ``` -If we would have written `$ls.sum` we would not have been able to know the type of `ls` and which `sum` method we are calling. +If we would have written `$ls.sum`, we would not have been able to know the type of `ls` and which `sum` method we are calling. -Another common case where we need type annotations is for infix operations. +Another common case where we need type annotations is for infix operations: ```scala case '{ ($x: Int) + ($y: Int) } => case '{ ($x: Double) + ($y: Double) } => @@ -267,9 +266,9 @@ def exprOfOption[T: Type](x: Expr[Option[T]])(using Quotes): Option[Expr[T]] = Note that this time we have added the `T` explicitly in the pattern, even though it could be inferred. By referring to the generic type `T` in the pattern, we are required to have a given `Type[T]` in scope. This implies that `$x: T` will only match if `x` is of type `Expr[T]`. -In this particular case this condition will always be true. +In this particular case, this condition will always be true. -Now consider the following variant where `x` is an optional value with a (statically) unknown element type. +Now consider the following variant where `x` is an optional value with a (statically) unknown element type: ```scala def exprOfOptionOf[T: Type](x: Expr[Option[Any]])(using Quotes): Option[Expr[T]] = @@ -277,7 +276,7 @@ def exprOfOptionOf[T: Type](x: Expr[Option[Any]])(using Quotes): Option[Expr[T]] case '{ Some($x: T) } => Some(x) // x: Expr[T] case _ => None ``` -This time the pattern ` Some($x: T)` will only match if the type of the option is `Some[T]`. +This time, the pattern `Some($x: T)` will only match if the type of the Option is `Some[T]`. ```scala exprOfOptionOf[Int]('{ Some(3) }) // Some('{3}) @@ -302,10 +301,12 @@ def exprOptionToList(x: Expr[Option[Any]])(using Quotes): Option[Expr[List[Any]] ``` The pattern `$x: t` will match an expression of any type and `t` will be bound to the type of the pattern. -This type is only valid in the right-hand side of the `case`, in the example we can use it to construct the list `List[t]($x)` (`List($x)` would also work). -As this is a type that is not statically known we need a given `Type[t]` in scope, luckily the quoted pattern will automatically provide this. +This type variable is only valid in the right-hand side of the `case`. +In this example, we use it to construct the list `List[t]($x)` (`List($x)` would also work). +As this is a type that is not statically, known we need a given `Type[t]` in scope. +Luckily, the quoted pattern will automatically provide this for us. -The simple `case '{ $expr: tpe } =>` pattern is very useful if we want to know the precise type of the expression. +The simple pattern `case '{ $expr: tpe } =>` is very useful if we want to know the precise type of the expression. ```scala val expr: Expr[Option[Int]] = ... expr match @@ -316,9 +317,13 @@ expr match ``` In some cases we need to define a pattern variable that is referenced several times or has some type bounds. -To achieve this it is possible to create pattern variables at the start of the pattern using `type t` with a type pattern variable. +To achieve this, it is possible to create pattern variables at the start of the pattern using `type t` with a type pattern variable. ```scala +/** + * Use: Converts a redundant `list.map(f).map(g)` to only use one call + * to `map`: `list.map(y => g(f(y)))`. + */ def fuseMap[T: Type](x: Expr[List[T]])(using Quotes): Expr[List[T]] = x match { case '{ type u @@ -327,21 +332,21 @@ def fuseMap[T: Type](x: Expr[List[T]])(using Quotes): Expr[List[T]] = x match { .map($f: `u` => `v`) .map($g: `v` => T) } => - '{ $ls.map(x => $g($f(x))) } + '{ $ls.map(y => $g($f(y))) } case _ => x } ``` -Here we define two type variables `u` and `v` and then refer to them using `` `u` `` and `` `v` ``. -We do not refer to them using `u` or `v` because those would be interpreted as new type variables and hence duplicates. +Here, we define two type variables `u` and `v` and then refer to them using `` `u` `` and `` `v` ``. +We do not refer to them using `u` or `v` (without backticks) because those would be interpreted as new type variables with the same variable name. This notation follows the normal [stable identifier patterns](https://www.scala-lang.org/files/archive/spec/2.13/08-pattern-matching.html#stable-identifier-patterns) syntax. -Furthermore, if the type variable needs to be constrained we can add bounds directly on the type definition `case '{ type u <: AnyRef; ... } =>`. +Furthermore, if the type variable needs to be constrained, we can add bounds directly on the type definition: `case '{ type u <: AnyRef; ... } =>`. Note that the previous case could also be written as `case '{ ($ls: List[u]).map[v]($f).map[T]($g) =>`. #### Quote types patterns -Type represented with `Type[T]` can be matched on using the patten `case '[...] =>`. +Types represented with `Type[T]` can be matched on using the patten `case '[...] =>`. ```scala def mirrorFields[T: Type](using Quotes): List[String] = @@ -358,11 +363,11 @@ mirrorFields[(Int, String, Int)] // List("Int", "String", "Int") mirrorFields[Tuple] // error: Expected known tuple but got: Tuple ``` -As with expression quote patterns type variables are represented using lower case names. +As with expression quote patterns, type variables are represented using lower case names. ## FromExpr -The `Expr.value`, `Expr.valueOrError` `Expr.unapply` method uses intances of `FromExpr` to to extract the value if possible. +The `Expr.value`, `Expr.valueOrError`, and `Expr.unapply` methods uses intances of `FromExpr` to extract the value if possible. ```scala extension [T](expr: Expr[T]): def value(using Quotes)(using fromExpr: FromExpr[T]): Option[T] = @@ -383,9 +388,9 @@ trait FromExpr[T]: def unapply(x: Expr[T])(using Quotes): Option[T] ``` -The `FromExpr.unapply` method will take a value `T` and generate code that will construct a copy of this value at runtime. +The `FromExpr.unapply` method will take a value `x` and generate code that will construct a copy of this value at runtime. -We can define our own `FromExpr`s like: +We can define our own `FromExpr`s like so: ```scala given FromExpr[Boolean] with { def unapply(x: Expr[Boolean])(using Quotes): Option[Boolean] = @@ -403,8 +408,8 @@ given FromExpr[StringContext] with { } } ``` -Note that we handled two cases for the `StringContext`. -As it is a `case class` it can be created with the `new StringContext` or with the `StringContext.apply` in the companion object. +Note that we handled two cases for `StringContext`. +As it is a `case class`, it can be created with `new StringContext` or with `StringContext.apply` from the companion object. We also used the `Varargs` extractor to match the arguments of type `Expr[Seq[String]]` into a `Seq[Expr[String]]`. Then we used the `Exprs` to match known constants in the `Seq[Expr[String]]` to get a `Seq[String]`. @@ -412,10 +417,11 @@ Then we used the `Exprs` to match known constants in the `Seq[Expr[String]]` to ## The Quotes The `Quotes` is the main entry point for the creation of all quotes. This context is usually just passed around through contextual abstractions (`using` and `?=>`). -Each quote scope will provide have its own `Quotes`. -New scopes are introduced each time a splice is introduced `${...}`. +Each quote scope will have its own `Quotes`. +New scopes are introduced each time a splice is introduced (`${ ... }`). Though it looks like a splice takes an expression as argument, it actually takes a `Quotes ?=> Expr[T]`. -Therefore we could actually write it explicitly as `${ (using q) => ... }`, this might be useful when debugging to avoid generated names for these scopes. +Therefore, we could actually write it explicitly as `${ (using q) => ... }`. +This might be useful when debugging to avoid generated names for these scopes. The method `scala.quoted.quotes` provides a simple way to use the current `Quotes` without naming it. It is usually imported along with the `Quotes` using `import scala.quoted.*`. @@ -425,9 +431,9 @@ ${ (using q1) => body(using q1) } // equivalent to ${ body(using quotes) } ``` -If you explicitly name a `Quotes` `quotes` you will shadow this definition. +Warning: If you explicitly name a `Quotes` `quotes`, you will shadow this definition. -When we write a top level splice in a macro we are calling something similar to the following definition. +When we write a top-level splice in a macro, we are calling something similar to the following definition. This splice will provide the initial `Quotes` associated with the macro expansion. ```scala def $[T](x: Quotes ?=> Expr[T]): T = ... @@ -452,12 +458,12 @@ def $[T](using q: Quotes)(x: q.Nested ?=> Expr[T]): T = ... ``` ## β-reduction -When we have a lambda applied to an argument in a quote `'{ ((x: Int) => x + x)(y) }` we do not reduce it within the quote, the code is kept as is. -There is an optimisation that β-reduce all lambdas directly applied to parameters to avoid the creation of the closure. -This will not be visible from the quotes perspective. +When we have a lambda applied to an argument in a quote `'{ ((x: Int) => x + x)(y) }`, we do not reduce it within the quote; the code is kept as-is. +There is an optimisation that will β-reduce all lambdas directly applied to parameters to avoid the creation of a closure. +This will not be visible from the quote's perspective. -Sometime it is useful to perform this β-reduction on the quotes directly. -We provide the function `Expr.betaReduce[T]` that receives an `Expr[T]` and β-reduce if it contains a directly applied lambda. +Sometimes it is useful to perform this β-reduction on the quotes directly. +We provide the function `Expr.betaReduce[T]` that receives an `Expr[T]` and β-reduces if it contains a directly-applied lambda. ```scala Expr.betaReduce('{ ((x: Int) => x + x)(y) }) // returns '{ val x = y; x + x } @@ -469,33 +475,32 @@ There are two ways to summon values in a macro. The first is to have a `using` parameter in the inline method that is passed explicitly to the macro implementation. ```scala -inline def setFor[T](using ord: Ordering[T]): Set[T] = - ${ setForCode[T]('ord) } +inline def setOf[T](using ord: Ordering[T]): Set[T] = + ${ setOfCode[T]('ord) } -def setForCode[T: Type](ord: Expr[Ordering[T]])(using Quotes): Expr[Set[T]] = +def setOfCode[T: Type](ord: Expr[Ordering[T]])(using Quotes): Expr[Set[T]] = '{ TreeSet.empty[T](using $ord) } ``` In this scenario, the context parameter is found before the macro is expanded. -If not found, the macro will not expand. +If not found, the macro will not be expanded. The second way is using `Expr.summon`. -This allows to programatically search for distinct given expressions. -The following example is similar to the previous example. +This allows us to programatically search for distinct given expressions. +The following example is similar to the previous example: ```scala -inline def setFor[T]: Set[T] = - ${ setForCode[T] } +inline def setOf[T]: Set[T] = + ${ setOfCode[T] } -def setForCode[T: Type](using Quotes): Expr[Set[T]] = - import scala.collection.immutable.* +def setOfCode[T: Type](using Quotes): Expr[Set[T]] = Expr.summon[Ordering[T]] match case Some(ord) => '{ TreeSet.empty[T](using $ord) } case _ => '{ HashSet.empty[T] } ``` -The difference is that in this scenario we do start expanding the macro before the implicit search failure and we can write arbitrary code to handle the case where it is not found. -Here we used `HashSet` and another valid implementation that does not need the `Ordering`. +The difference is that, in the second scenario, we expand the macro before the implicit search is performed. We can therefore write arbitrary code to handle the case when an `Ordering[T]` is not found. +Here, we used `HashSet` instead of `TreeSet` because the former does not need an `Ordering`. [macros]: {% link _overviews/scala3-macros/tutorial/macros.md %} [quotes]: {% link _overviews/scala3-macros/tutorial/quotes.md %} From cb5eae119ad5832d01bd536d975a1b997935f93e Mon Sep 17 00:00:00 2001 From: Zeimyth Date: Mon, 12 Jul 2021 14:43:59 -0600 Subject: [PATCH 0180/1704] Clean up grammar and other nit issues in reflection.md --- .../scala3-macros/tutorial/reflection.md | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/_overviews/scala3-macros/tutorial/reflection.md b/_overviews/scala3-macros/tutorial/reflection.md index 187c0420a6..b9bca2e1c9 100644 --- a/_overviews/scala3-macros/tutorial/reflection.md +++ b/_overviews/scala3-macros/tutorial/reflection.md @@ -7,7 +7,7 @@ previous-page: quotes --- The reflection API provides a more complex and comprehensive view on the structure of the code. -It provides a view on the *Typed Abstract Syntax Trees* and their properties such as types, symbols, positions and comments. +It provides a view of *Typed Abstract Syntax Trees* and their properties such as types, symbols, positions and comments. The API can be used in macros as well as for [inspecting TASTy files][tasty inspection]. @@ -16,8 +16,8 @@ The API can be used in macros as well as for [inspecting TASTy files][tasty insp The reflection API is defined in the type `Quotes` as `reflect`. The actual instance depends on the current scope, in which quotes or quoted pattern matching is used. Hence, every macro method receives Quotes as an additional argument. -Since `Quotes` is contextual, to access its members we either need to name the parameter, or summon it. -The following definition of the standard library provides the canonical way of accessing it. +Since `Quotes` is contextual, to access its members we either need to name the parameter or summon it. +The following definition from the standard library details the canonical way of accessing it: ```scala package scala.quoted @@ -25,10 +25,10 @@ package scala.quoted transparent inline def quotes(using inline q: Quotes): q.type = q ``` -We can use `scala.quoted.quotes` to import it the current `Quotes` in scope like this +We can use `scala.quoted.quotes` to import the current `Quotes` in scope: ```scala -import scala.quoted.* // Import `quotes`, `Quotes` and `Expr` +import scala.quoted.* // Import `quotes`, `Quotes`, and `Expr` def f(x: Expr[Int])(using Quotes): Expr[Int] = import quotes.reflect.* // Import `Tree`, `TypeRepr`, `Symbol`, `Position`, ..... @@ -41,16 +41,17 @@ This will import all the types and modules (with extension methods) of the API. ## How to navigate the API The full API can be found in the [API documentation for `scala.quoted.Quotes.reflectModule`][reflection doc]. -Unfortunately, at this stage, this automatically generated documentation is not very easy to navigate. +Unfortunately, at this stage, this automatically-generated documentation is not very easy to navigate. The most important element on the page is the hierarchy tree which provides a synthetic overview of the subtyping relationships of the types in the API. For each type `Foo` in the tree: - the trait `FooMethods` contains the methods available on the type `Foo` - - the trait `FooModule` contains the static methods available on the object `Foo`. Most notably, constructors (`apply/copy`) and the `unapply` method which provides the extractor(s) required for pattern matching. - - For all types `Upper` such that `Foo <: Upper`, the methods defined in `UpperMethods` are available on `Foo` as well. + - the trait `FooModule` contains the static methods available on the object `Foo`. +Most notably, constructors (`apply/copy`) and the `unapply` method which provides the extractor(s) required for pattern matching are found here + - For all types `Upper` such that `Foo <: Upper`, the methods defined in `UpperMethods` are also available on `Foo` -For example [`TypeBounds`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule.html#TypeBounds-0), a subtype of `TypeRepr`, represents a type tree of the form `T >: L <: U`: a type `T` which is a super type of `L` +For example, [`TypeBounds`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule.html#TypeBounds-0), a subtype of `TypeRepr`, represents a type tree of the form `T >: L <: U`: a type `T` which is a super type of `L` and a subtype of `U`. In [`TypeBoundsMethods`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$TypeBoundsMethods.html), you will find the methods `low` and `hi`, which allow you to access the representations of `L` and `U`. In [`TypeBoundsModule`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$TypeBoundsModule.html), you will find the `unapply` method, which allows you to write: @@ -60,8 +61,7 @@ def f(tpe: TypeRepr) = case TypeBounds(l, u) => ``` -Remember also that `TypeBounds <: TypeRepr`, therefore all the methods defined in `TypeReprMethods` are -available on `TypeBounds` values as in: +Because `TypeBounds <: TypeRepr`, all the methods defined in `TypeReprMethods` are available on `TypeBounds` values: ```scala def f(tpe: TypeRepr) = @@ -75,12 +75,12 @@ def f(tpe: TypeRepr) = ### Expr and Term -Expressions `Expr[T]` can be seen as wrappers around a `Term`, where `T` is the statically known type of the term. -Below we use the extension method `asTerm` to transform the expression into a term. +Expressions (`Expr[T]`) can be seen as wrappers around a `Term`, where `T` is the statically-known type of the term. +Below, we use the extension method `asTerm` to transform an expression into a term. This extension method is only available after importing `quotes.reflect.asTerm`. Then we use `asExprOf[Int]` to transform the term back into `Expr[Int]`. -This operation will fail if the term does not have the provided type (here `Int`) or if the term is not a valid expression. -For example, a `Ident(fn)` is non-valid term if the method `fn` takes type parameters, in which case we would need an `Apply(Ident(fn), args)`. +This operation will fail if the term does not have the provided type (in this case, `Int`) or if the term is not a valid expression. +For example, an `Ident(fn)` is an invalid term if the method `fn` takes type parameters, in which case we would need an `Apply(Ident(fn), args)`. ```scala def f(x: Expr[Int])(using Quotes): Expr[Int] = @@ -92,10 +92,10 @@ def f(x: Expr[Int])(using Quotes): Expr[Int] = ### Type and TypeRepr -Similarly, we can also see `Type[T]` as a wrapper over `TypeRepr`, with `T` being the statically known type. -To get a `TypeRepr` we use `TypeRepr.of[X]` which expects a given `Type[X]` in scope (similar to `Type.of[X]`). +Similarly, we can also see `Type[T]` as a wrapper over `TypeRepr`, with `T` being the statically-known type. +To get a `TypeRepr`, we use `TypeRepr.of[T]`, which expects a given `Type[T]` in scope (similar to `Type.of[T]`). We can also transform it back into a `Type[?]` using the `asType` method. -As the type of `Type[?]` is not statically know we need to name it with an existential type to use it. This can be achieved using a `'[t]` pattern. +As the type of `Type[?]` is not statically known, we need to name it with an existential type to use it. This can be achieved using the `'[t]` pattern. ```scala def g[T: Type](using Quotes) = @@ -108,39 +108,39 @@ def g[T: Type](using Quotes) = ## Symbols -The APIs of `Term` and `TypeRepr` are relatively *closed* in the sense that methods produce and accept values -whose types are defined in the API. You might notice however the presence of `Symbol`s which identify definitions. +The APIs of `Term` and `TypeRepr` are relatively *closed* in the sense that methods produce and accept values whose types are defined in the API. +However, you might notice the presence of `Symbol`s which identify definitions. -Both `Term` or `TypeRepr` (therefore `Expr` and `Type`) have an associated symbol. +Both `Term`s and `TypeRepr`s (and therefore `Expr`s and `Type`s) have an associated symbol. `Symbol`s make it possible to compare two definitions using `==` to know if they are the same. -In addition `Symbol` exposes and is used by many useful methods. For example: +In addition, `Symbol` exposes and is used by many useful methods. For example: - `declaredFields` and `declaredMethods` allow you to iterate on the fields and members defined inside a symbol - `flags` allows you to check multiple properties of a symbol - - `companionObject` and `companionModule` provide a way to jump to and from the companion object/class. - - `TypeRepr.baseClasses` returns the list of symbols of classes extended by a type. - - `Symbol.pos` gives you access to the position where the symbol is defined, the source code of the definition - and even the filename where the symbol is defined. - - and many useful others that you can find in [`SymbolMethods`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$SymbolMethods.html) + - `companionObject` and `companionModule` provide a way to jump to and from the companion object/class + - `TypeRepr.baseClasses` returns the list of symbols of classes extended by a type + - `Symbol.pos` gives you access to the position where the symbol is defined, the source code of the definition, and even the filename where the symbol is defined + - many others that you can find in [`SymbolMethods`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$SymbolMethods.html) ### To Symbol and back Consider an instance of the type `TypeRepr` named `val tpe: TypeRepr = ...`. Then: - `tpe.typeSymbol` returns the symbol of the type represented by `TypeRepr`. The recommended way to obtain a `Symbol` given a `Type[T]` is `TypeRepr.of[T].typeSymbol` - - For a singleton type, `tpe.termSymbol` returns the symbol of the underlying object or value. + - For a singleton type, `tpe.termSymbol` returns the symbol of the underlying object or value - `tpe.memberType(symbol)` returns the `TypeRepr` of the provided symbol - - On objects `t: Tree`, `t.symbol` returns the symbol associated to a tree. Given that `Term <: Tree`, - `Expr.asTerm.symbol` is the best way to obtain the symbol associated to an `Expr[T]` - - On objects `sym : Symbol`, `sym.tree` returns the `Tree` associated to the symbol. Be careful when using this - method as the tree for a symbol might not be defined. Read more on the [best practices page][best practices] + - On objects `t: Tree`, `t.symbol` returns the symbol associated with a tree. + Given that `Term <: Tree`, `Expr.asTerm.symbol` is the best way to obtain the symbol associated with an `Expr[T]` + - On objects `sym: Symbol`, `sym.tree` returns the `Tree` associated to the symbol. +Be careful when using this method as the tree for a symbol might not be defined. +Read more on the [best practices page][best practices] ## Macro API design -It will be often useful to create helper methods or extractors that perform some common logic of your macros. +It will often be useful to create helper methods or extractors that perform some common logic of your macros. The simplest methods will be those that only mention `Expr`, `Type`, and `Quotes` in their signature. -Internally they may use reflection but this will not be seen at the use site of the method. +Internally, they may use reflection, but this will not be seen at the use site of the method. ```scala def f(x: Expr[Int])(using Quotes): Expr[Int] = @@ -148,8 +148,8 @@ def f(x: Expr[Int])(using Quotes): Expr[Int] = ... ``` -In some cases it is inevitable to require some methods that work on `Tree`s or other types in `quotes.reflect`. -For these cases, the best is to follow the following example of method signatures. +In some cases, it may be inevitable that some methods will expect or return `Tree`s or other types in `quotes.reflect`. +For these cases, the best practice is to follow the following method signature examples: A method that takes a `quotes.reflect.Term` parameter ```scala @@ -164,7 +164,7 @@ extension (using Quotes)(term: quotes.reflect.Term) def g: quotes.reflect.Tree = ... ``` -An extractor that matches on `quotes.reflect.Term`s. +An extractor that matches on `quotes.reflect.Term`s ```scala object MyExtractor: def unapply(using Quotes)(x: quotes.reflect.Term) = @@ -173,32 +173,32 @@ object MyExtractor: ``` > **Avoid saving the `Quotes` context in a field.** -> `Quotes` in fields inevitably make its use harder by hitting errors involving `Quotes` with different paths. +> `Quotes` in fields inevitably make its use harder by causing errors involving `Quotes` with different paths. > -> Usually these patterns have been seen in code that uses the Scala 2 ways to define extension methods or contextual unapplies. +> Usually, these patterns have been seen in code that uses the Scala 2 ways to define extension methods or contextual unapplies. > Now that we have `given` parameters that can be added before other parameters, all these old workarounds are not needed anymore. -> The new abstraction make it simpler on the definition site and at use site. +> The new abstractions make it simpler both at the definition site and at the use site. ## Debugging ### Runtime checks -Expressions `Expr[T]` can be seen as wrappers around a `Term`, where `T` is the statically known type of the term. -Hence these checks will be done at runtime (i.e. compile-time when the macro expands). +Expressions (`Expr[T]`) can be seen as wrappers around a `Term`, where `T` is the statically-known type of the term. +Hence, these checks will be done at runtime (i.e. compile-time when the macro expands). It is recommended to enable the `-Xcheck-macros` flag while developing macros or on the tests for the macro. This flag will enable extra runtime checks that will try to find ill-formed trees or types as soon as they are created. There is also the `-Ycheck:all` flag that checks all compiler invariants for tree well-formedness. -These check will usually fail with an assertion error. +These checks will usually fail with an assertion error. ### Printing the trees -The `toString` methods of types in `quotes.reflect` are not great for debugging as they show the internal representation rather than the `quotes.reflect` representation. -In many cases these are similar but they may lead the debugging process astray. +The `toString` methods on types in the `quotes.reflect` package are not great for debugging as they show the internal representation rather than the `quotes.reflect` representation. +In many cases these are similar, but they may sometimes lead the debugging process astray, so they shouldn't be relied on. -Hence, `quotes.reflect.Printers` provide a set of useful printers for debugging. -Notably the `TreeStructure`, `TypeReprStructure` and `ConstantStructure` can be quite useful. +Instead, `quotes.reflect.Printers` provides a set of useful printers for debugging. +Notably the `TreeStructure`, `TypeReprStructure`, and `ConstantStructure` classes can be quite useful. These will print the tree structure following loosely the extractors that would be needed to match it. ```scala @@ -218,7 +218,7 @@ tree match ``` This way, if a case is missed the error will report a familiar structure that can be copy-pasted to start fixing the issue. -We can make this printer the default if needed +You can make this printer the default if desired: ```scala import quotes.reflect.* given Printer[Tree] = Printer.TreeStructure From 6b1565a4a48f82480916a2ac5a50e96fa1ed7017 Mon Sep 17 00:00:00 2001 From: Zeimyth Date: Mon, 12 Jul 2021 15:02:46 -0600 Subject: [PATCH 0181/1704] Clean up grammar and other nit issues in best-practices.md --- _overviews/scala3-macros/best-practices.md | 45 ++++++++++------------ 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/_overviews/scala3-macros/best-practices.md b/_overviews/scala3-macros/best-practices.md index 8c7413beaf..1122c98620 100644 --- a/_overviews/scala3-macros/best-practices.md +++ b/_overviews/scala3-macros/best-practices.md @@ -6,7 +6,7 @@ num: 8 ## Inline ### Be careful when inlining for performance -To take the most advantage of the JVM JIT optimisations you want to avoid generating large methods. +To take the most advantage of the JVM JIT optimisations, you want to avoid generating large methods. ## Macros @@ -16,24 +16,24 @@ To take the most advantage of the JVM JIT optimisations you want to avoid genera ## Quoted code ### Keep quotes readable -* Try to avoid `${..}` with arbitrary expressions inside +* Try to avoid `${...}` with arbitrary expressions inside * Use `$someExpr` * Use `${ someExprFrom('localExpr) }` To illustrate, consider the following example: ```scala -val x: StringContext = ... -'{ StringContext(${Varargs(stringContext.parts.map(Expr(_)))}: _*) } +val sc: StringContext = ... +'{ StringContext(${Varargs(sc.parts.map(Expr(_)))}: _*) } ``` -Instead we can write the following: +Instead, we can write the following: ```scala -val x: StringContext = ... -val partExprs = stringContext.parts.map(Expr(_)) +val sc: StringContext = ... +val partExprs = sc.parts.map(Expr(_)) val partsExpr = Varargs(partExprs) '{ StringContext($partsExpr: _*) } ``` -The contents of the quote are cleared this way. +The contents of the quote are much more clear in the second example. ### Avoid nested contexts @@ -74,34 +74,29 @@ val leafSym: Symbol = leafTpe.typeSymbol ### Avoid `Symbol.tree` -On an object `sym: Symbol`, `sym.tree` returns the `Tree` associated to the -symbol. Be careful when using this method as the tree for a symbol might not be -defined. When the code associated to the symbol is defined in a different -moment than this access, if the `-Yretain-trees` compilation option is not -used, then the `tree` of the symbol will not be available. Symbols originated -from Java code do not have an associated `tree`. +On an object `sym: Symbol`, `sym.tree` returns the `Tree` associated with the symbol. +Be careful when using this method, as the tree for a symbol might not be defined. +When the code associated with a symbol is defined at a different time than this access, if the `-Yretain-trees` compilation option is not used, then the `tree` of the symbol will not be available. +Symbols originating from Java code do not have an associated `tree`. ### Obtaining a `TypeRepr` from a `Symbol` -In the previous paragraph we saw that `Symbol.tree` should be avoided and -therefore you should not use `sym.tree.tpe` on `sym: Symbol`. Thus to obtain -the `TypeRepr` corresponding to a `Symbol`, it is recommended to use -`tpe.memberType` on objects `tpe: TypeRepr`. +In the previous heading, we saw that `Symbol.tree` should be avoided and that therefore you should not use `sym.tree.tpe` on `sym: Symbol`. +Thus, to obtain the `TypeRepr` corresponding to a `Symbol`, it is recommended to use `tpe.memberType` on `tpe: TypeRepr` objects. We can obtain the `TypeRepr` of `Leaf` in two ways: 1. `TypeRepr.of[Box.Leaf]` - 2. `boxTpe.memberType(leafSym)`, in other words we request the `TypeRepr` of - the member of `Box` whose symbol is equal to the symbol of sym + 2. `boxTpe.memberType(leafSym)` +(In other words, we request the `TypeRepr` of the member of `Box` whose symbol is equal to the symbol of `leafSym`.) -while the two approaches are equivalent, the first is possible only if you -already know that you are looking for `Box.Leaf`. The second approach allows -you to explore an uknown API. +While the two approaches are equivalent, the first is only possible if you already know that you are looking for the type `Box.Leaf`. +The second approach allows you to explore an unknown API. ### Use `Symbol`s to compare definitions Read more about Symbols [here][symbol]. -Symbols allow comparing definitions using `==`: +Symbols allow you to compare definitions using `==`: ```scala leafSym == baseSym.children.head // Is true ``` @@ -113,7 +108,7 @@ boxTpe.memberType(baseSym.children.head) == leafTpe // Is false ### Obtaining a Symbol for a type -There is a handy shortcut to get the symbol of the definition of `T`. +There is a handy shortcut to get the symbol for the definition of `T`. Instead of ```scala From 665c8266563325ce3345abe7b255b1bb2a41ce2b Mon Sep 17 00:00:00 2001 From: Zeimyth Date: Tue, 13 Jul 2021 16:08:13 -0600 Subject: [PATCH 0182/1704] Clean up grammar and other nit issues in macros.md --- _overviews/scala3-macros/tutorial/macros.md | 10 +++++----- _overviews/scala3-macros/tutorial/quotes.md | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/_overviews/scala3-macros/tutorial/macros.md b/_overviews/scala3-macros/tutorial/macros.md index 269ef8876e..81cbc920d1 100644 --- a/_overviews/scala3-macros/tutorial/macros.md +++ b/_overviews/scala3-macros/tutorial/macros.md @@ -73,7 +73,7 @@ As a technicaly consequence, we cannot define and use a macro in the **same clas However, it is possible to have the macro definition and its call in the **same project** as long as the implementation of the macro can be compiled first. > ##### Suspended Files -> To allow defining and using macros in the same project, only those calls to macros are expanded, where the macro has already been compiled. +> To allow defining and using macros in the same project, only those calls to macros that have already been compiled are expanded. > For all other (unknown) macro calls, the compilation of the file is _suspended_. > Suspended files are only compiled after all non suspended files have been successfully compiled. > In some cases, you will have _cyclic dependencies_ that will block the completion of the compilation. @@ -206,7 +206,7 @@ def sumCode(nums: Expr[Seq[Int]])(using Quotes): Expr[Int] = The extractor will match a call to `sumNow(1, 2, 3)` and extract a `Seq[Expr[Int]]` containing the code of each parameter. But, if we try to match the argument of the call `sumNow(nums: _*)`, the extractor will not match. -`Varargs` can also be used as a constructor, `Varargs(Expr(1), Expr(2), Expr(3))` will return a `Expr[Seq[Int]]`. +`Varargs` can also be used as a constructor. `Varargs(Expr(1), Expr(2), Expr(3))` will return an `Expr[Seq[Int]]`. We will see how this can be useful later. @@ -226,8 +226,8 @@ while subsequent chapters introduce the more advanced APIs. ### Collections We have seen how to convert a `List[Int]` into an `Expr[List[Int]]` using `Expr.apply`. -How about converting a `List[Expr[Int]]` into `Expr[List[Int]]`? -We mentioned that `Varargs.apply` can do this for sequences -- likewise for other collection types, corresponding methods are available: +How about converting a `List[Expr[Int]]` into an `Expr[List[Int]]`? +We mentioned that `Varargs.apply` can do this for sequences; likewise, for other collection types, corresponding methods are available: * `Expr.ofList`: Transform a `List[Expr[T]]` into `Expr[List[T]]` * `Expr.ofSeq`: Transform a `Seq[Expr[T]]` into `Expr[Seq[T]]` (just like `Varargs`) @@ -269,7 +269,7 @@ Note, that `matches` only performs a limited amount of normalization and while f ### Arbitrary Expressions Last but not least, it is possible to create an `Expr[T]` from arbitary Scala code by enclosing it in [quotes][quotes]. -For example `'{ ${expr}; true }` will generate an `Expr[Int]` equivalent to `Expr.block(List(expr), Expr(true))`. +For example, `'{ ${expr}; true }` will generate an `Expr[Int]` equivalent to `Expr.block(List(expr), Expr(true))`. The subsequent section on [Quoted Code][quotes] presents quotes in more detail. [contributing]: {% link scala3/contribute-to-docs.md %} diff --git a/_overviews/scala3-macros/tutorial/quotes.md b/_overviews/scala3-macros/tutorial/quotes.md index 0c4ef57d16..b7d7c827b3 100644 --- a/_overviews/scala3-macros/tutorial/quotes.md +++ b/_overviews/scala3-macros/tutorial/quotes.md @@ -20,7 +20,7 @@ println(printHello.show) // print("Hello") In general, the quote delays the execution while the splice makes it happen before the surrounding code. This generalisation allows us to also give meaning to a `${ ... }` that is not within a quote. This evaluates the code within the splice at compile-time and places the result in the generated code. -Due to some technical considerations, only non-quoted splices are allowed directly within `inline` definitions that we call a [macro][macros]. +Due to some technical considerations, only top-level splices are allowed directly within `inline` definitions that we call a [macro][macros]. It is possible to write a quote within a quote, but this pattern is not common when writing macros. @@ -103,7 +103,7 @@ The less verbose version is usually the best way to write the types as it is muc In some cases, we will not statically know the type within the `Type` and will need to use the `t.Underlying` to refer to it. When do we need this extra `Type` parameter? -* When a type is abstract and it is used at a level that is deeper than the current level. +* When a type is abstract and it is used at a level that is higher than the current level. When you add a `Type` contextual parameter to a method, you will either get it from another context parameter or implicitly with a call to `Type.of`: ```scala @@ -276,7 +276,7 @@ def exprOfOptionOf[T: Type](x: Expr[Option[Any]])(using Quotes): Option[Expr[T]] case '{ Some($x: T) } => Some(x) // x: Expr[T] case _ => None ``` -This time, the pattern `Some($x: T)` will only match if the type of the Option is `Some[T]`. +This time, the pattern `Some($x: T)` will only match if the type of the `Option` is `Some[T]`. ```scala exprOfOptionOf[Int]('{ Some(3) }) // Some('{3}) From 3264a209762155237ea9e3935676cfbc9e74e4c9 Mon Sep 17 00:00:00 2001 From: Alvin Alexander Date: Tue, 3 Aug 2021 16:36:23 -0600 Subject: [PATCH 0183/1704] Corrected the first Java Person class --- _overviews/scala3-book/scala-for-java-devs.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/_overviews/scala3-book/scala-for-java-devs.md b/_overviews/scala3-book/scala-for-java-devs.md index 44c528670e..0421048ed5 100644 --- a/_overviews/scala3-book/scala-for-java-devs.md +++ b/_overviews/scala3-book/scala-for-java-devs.md @@ -132,13 +132,14 @@ equivalent to the Scala code that follows it.
  public int age;
  public Person(
    String firstName, -
    String lastName, int age +
    String lastName, +
    int age
  ) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  } -
  override String toString() { +
  public String toString() {
    return String.format("%s %s is %d years old.", firstName, lastName, age);
  }
}
From 16cb8f1cfba69878e248fe1c9be9f8683dce8d5c Mon Sep 17 00:00:00 2001 From: Raduan Al-Shedivat <36044389+Raduan77@users.noreply.github.com> Date: Sun, 8 Aug 2021 12:33:06 +0300 Subject: [PATCH 0184/1704] Add closing bracket to tour/high-order-functions --- _tour/higher-order-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_tour/higher-order-functions.md b/_tour/higher-order-functions.md index c56846b81a..f60f910b8f 100644 --- a/_tour/higher-order-functions.md +++ b/_tour/higher-order-functions.md @@ -35,7 +35,7 @@ val salaries = Seq(20000, 70000, 40000) val newSalaries = salaries.map(x => x * 2) // List(40000, 140000, 80000) ``` Notice how `x` is not declared as an Int in the above example. That's because the -compiler can infer the type based on the type of function map expects (see [Currying](/tour/multiple-parameter-lists.html). An even more idiomatic way to write the same piece of code would be: +compiler can infer the type based on the type of function map expects (see [Currying](/tour/multiple-parameter-lists.html)). An even more idiomatic way to write the same piece of code would be: ```scala mdoc:nest val salaries = Seq(20000, 70000, 40000) From 6b4326aab84389d9dff77bcf1751c58715ede2d6 Mon Sep 17 00:00:00 2001 From: Nicolas Ettlin Date: Sun, 8 Aug 2021 17:25:09 +0200 Subject: [PATCH 0185/1704] Fix a typo in FP Modeling --- _overviews/scala3-book/domain-modeling-fp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/domain-modeling-fp.md b/_overviews/scala3-book/domain-modeling-fp.md index 31e5d19008..98bf4096ad 100644 --- a/_overviews/scala3-book/domain-modeling-fp.md +++ b/_overviews/scala3-book/domain-modeling-fp.md @@ -160,7 +160,7 @@ def toppingPrice(t: Topping): Double = t match case Cheese | Onions => 0.5 case Pepperoni | BlackOlives | GreenOlives => 0.75 ``` -Similarly, since `toppingPrice` is an enumeration, we use pattern matching to distinguish between the different variants. +Similarly, since `Topping` is an enumeration, we use pattern matching to distinguish between the different variants. Cheese and onions are priced at 50ct while the rest is priced at 75ct each. ```scala def crustPrice(s: CrustSize, t: CrustType): Double = From 11407a19536af8a55ca0352add456530b1fa2b1a Mon Sep 17 00:00:00 2001 From: Nicolas Ettlin Date: Sun, 8 Aug 2021 17:39:45 +0200 Subject: [PATCH 0186/1704] Fix a syntax error --- _overviews/scala3-book/types-union.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/types-union.md b/_overviews/scala3-book/types-union.md index 5f6a918e16..30df27d05c 100644 --- a/_overviews/scala3-book/types-union.md +++ b/_overviews/scala3-book/types-union.md @@ -35,7 +35,7 @@ help("hi") // error: Found: ("hi" : String) You’ll also get an error if you attempt to add a `case` to the `match` expression that doesn’t match the `Username` or `Password` types: ```scala -case 1.0 = > ??? // ERROR: this line won’t compile +case 1.0 => ??? // ERROR: this line won’t compile ``` ### Alternative to Union Types From 97abc7d82e8697c6e293463610b7429fa43ec898 Mon Sep 17 00:00:00 2001 From: ser1zw Date: Tue, 10 Aug 2021 02:09:07 +0900 Subject: [PATCH 0187/1704] Fix typo in implicit-conversions.md (Japanese) --- _ja/tour/implicit-conversions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_ja/tour/implicit-conversions.md b/_ja/tour/implicit-conversions.md index 634dabcfca..8ee5a23069 100644 --- a/_ja/tour/implicit-conversions.md +++ b/_ja/tour/implicit-conversions.md @@ -42,7 +42,7 @@ implicit def list2ordered[A](x: List[A]) ``` 暗黙にインポートされているオブジェクト`scala.Predef`は、頻繁に使われる型(例えば`scala.collection.immutable.Map`は`Map`と別名づけられます)とメソッド(例えば`assert`)といくつかの暗黙の型変換を宣言しています。 -例えば、`java.lang.Integer`を受け取るようなJavaのメソッドを呼び出す時、自由に`scala.Int`を代わりに渡すことができます。それはPredefオブジェクトが以下の暗黙の変換をを含んでいるからです。 +例えば、`java.lang.Integer`を受け取るようなJavaのメソッドを呼び出す時、自由に`scala.Int`を代わりに渡すことができます。それはPredefオブジェクトが以下の暗黙の変換を含んでいるからです。 ```scala mdoc import scala.language.implicitConversions From 5a0f5e176df23e0e535ea6e503e22f87e5657157 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 30 Jun 2021 14:59:36 +0200 Subject: [PATCH 0188/1704] Rework syntax rewriting doc Give a bit more details about the new syntax. Make it clear that one must rewrite to the new control structure before rewriting to the indentation based syntax. Show the example in that order. Simplify the example (it is not a reference). --- .../tooling-syntax-rewriting.md | 138 +++++++----------- 1 file changed, 49 insertions(+), 89 deletions(-) diff --git a/_overviews/scala3-migration/tooling-syntax-rewriting.md b/_overviews/scala3-migration/tooling-syntax-rewriting.md index c7c77a68b8..1d6ac4a461 100644 --- a/_overviews/scala3-migration/tooling-syntax-rewriting.md +++ b/_overviews/scala3-migration/tooling-syntax-rewriting.md @@ -7,13 +7,16 @@ previous-page: tutorial-macro-mixing next-page: incompatibility-table --- -Scala 3 gives Scala developers the option to adopt the new and optional significant indentation syntax. -The Scala 2 syntax which uses curly braces to group expressions remains fully supported, and we will refer to it as the classical braces syntax. +Scala 3 extends the syntax of the Scala language with the new control structures and the significant indentation syntax. +Both are optional so that the Scala 2 code style is still perfectly valid in Scala 3. -Scala 3 also introduces a new syntax for control structures, which applies to `if`-expressions, `while`-loops, and `for`-expressions. +The new syntax for control structures makes it possible to write the condition of an `if`-expression, the condition of a `while`-loop or the generators of a `for`-expression without enclosing parentheses. -Converting existing code to use the new syntax by hand would be tedious and error-prone. -The good news is the Scala 3 compiler can do the hard work for us! +The significant indentation syntax makes braces `{...}` not needed in many occurences: class and method bodies, `if`-expressions, `match`-expressions and more. +You can find a complete description in the [Optional Braces](http://dotty.epfl.ch/docs/reference/other-new-features/indentation.html) page of the Scala 3 reference website. + +Converting existing Scala code to the new syntax by hand is tedious and error-prone. +In this chapter we show how you can use the compiler to rewrite your code automatically from the classic Scala 2 style to the new style, or conversely. ## Syntax Rewriting Options @@ -41,43 +44,33 @@ where possible standard options include: Each of the first four options corresponds to a specific syntax: +| Syntax | Option | +| - | - | +| New Control Structures | `-new-syntax` | +| Old Control Structures | `-old-syntax` | + | Syntax | Compiler Option | |-|-| | Significant Indentation | `-indent` | | Classical Braces | `-noindent` | -| Syntax | Option | -| - | - | -| New Control Structure | `-new-syntax` | -| Old Control Structure | `-old-syntax` | As we will see in further detail these options can be used in combination with the `-rewrite` option to automate the conversion to a particular syntax. Let's have a look at how this works in a small example. -## Significant Indentation Syntax +## The New Syntax Rewrites -Given the following source code written in the Scala 2 style: +Given the following source code written in a Scala 2 style. ```scala -object Counter { - enum Protocol { - case Reset - case MoveBy(step: Int) - } -} - -case class Animal(name: String) - -trait Incrementer { - def increment(n: Int): Int -} - case class State(n: Int, minValue: Int, maxValue: Int) { + def inc: State = if (n == maxValue) this else this.copy(n = n + 1) + def printAll: Unit = { println("Printing all") for { @@ -88,67 +81,60 @@ case class State(n: Int, minValue: Int, maxValue: Int) { } ``` -Assume that we want to convert this piece of code to the significant indentation syntax. -We can use the `-indent -rewrite` options by adding them to the `scalacOptions` setting in our sbt build: +We will be able to move it to new syntax automatically in two steps: first by using the new control structure rewrite (`-new-syntax -rewrite`) and then the significant indentation rewrite (`-indent -rewrite`). + +> The `-indent` option does not work on the classic control structures. +> So make sure to run the two steps in the correct order. + +> Unfortunately, the compiler is not able to apply both steps at the same time: `-indent -new-syntax -rewrite`. + +### New Control Structures + +We can use the `-new-syntax -rewrite` options by adding them to the list of scalac options in our build tool. ```scala // build.sbt -scalacOptions ++= Seq("-indent", "-rewrite") +scalacOptions ++= Seq("-new-syntax", "-rewrite") ``` After compiling the code, the result looks as follows: ```scala -object Counter: - enum Protocol: - case Reset - case MoveBy(step: Int) - -case class Animal(name: String) - -trait Incrementer: - def increment(n: Int): Int - -case class State(n: Int, minValue: Int, maxValue: Int): +case class State(n: Int, minValue: Int, maxValue: Int) { + def inc: State = - if (n == maxValue) + if n == maxValue then this else this.copy(n = n + 1) - def printAll: Unit = + + def printAll: Unit = { println("Printing all") - for { + for i <- minValue to maxValue j <- 0 to n - } println(i + j) + do println(i + j) + } +} ``` -A few things to observe after the switch to the significant indentation syntax: -- The number of lines was reduced by 4 because of the elimination of a series of closing curly braces -- The control structures are unchanged +Notice that the parentheses around the `n == maxValue` disappeared, as well as the braces around the `i <- minValue to maxValue` and `j <- 0 to n` generators. -## New Control Structure +### Significant Indentation Syntax -After this first rewrite, we can jump to the new control structure syntax by using `-new-syntax -rewrite`. +After this first rewrite, we can use the significant indentation syntax to remove the remaining braces. +To do that we use the `-indent` option in combination with the `-rewrite` option. It leads us to the following version: ```scala -object Counter: - enum Protocol: - case Reset - case MoveBy(step: Int) - -case class Animal(name: String) - -trait Incrementer: - def increment(n: Int): Int - case class State(n: Int, minValue: Int, maxValue: Int): + def inc: State = if n == maxValue then this else this.copy(n = n + 1) + def printAll: Unit = println("Printing all") for @@ -157,37 +143,22 @@ case class State(n: Int, minValue: Int, maxValue: Int): do println(i + j) ``` -We moved to the new syntaxes of Scala 3 in two steps: first we used `-indent -rewrite` then `-new-syntax -rewrite`. -We could also apply the new control structure syntax before the significant indentation syntax. -But the compiler is not able to apply both at the same time: `-indent -new-syntax -rewrite`. - -## Moving back to Classic syntax +## Moving back to the Classic syntax Starting from the latest state of our code sample, we can move backwards to its initial state. -Let's rewrite to the braces syntax and retain the new control structures syntax. +Let's rewrite the code using braces while retaining the new control structures. After compiling with the `-no-indent -rewrite` options, we obtain the following result: ```scala -object Counter { - enum Protocol { - case Reset - case MoveBy(step: Int) - } -} - -case class Animal(name: String) - -trait Incrementer { - def increment(n: Int): Int -} - case class State(n: Int, minValue: Int, maxValue: Int) { + def inc: State = if n == maxValue then this else this.copy(n = n + 1) + def printAll: Unit = { println("Printing all") for { @@ -202,25 +173,14 @@ case class State(n: Int, minValue: Int, maxValue: Int) { Applying one more rewrite, with `-old-syntax -rewrite`, takes us back to the original Scala 2-style code. ```scala -object Counter { - enum Protocol { - case Reset - case MoveBy(step: Int) - } -} - -case class Animal(name: String) - -trait Incrementer { - def increment(n: Int): Int -} - case class State(n: Int, minValue: Int, maxValue: Int) { + def inc: State = if (n == maxValue) this else this.copy(n = n + 1) + def printAll: Unit = { println("Printing all") for { From 167d0b34e905669d0083c8d5cffff71bf998d5f0 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Tue, 10 Aug 2021 10:08:21 +0200 Subject: [PATCH 0189/1704] Update link to Scala 3 reference --- _overviews/scala3-migration/tooling-syntax-rewriting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-migration/tooling-syntax-rewriting.md b/_overviews/scala3-migration/tooling-syntax-rewriting.md index 1d6ac4a461..e4b3bcc9aa 100644 --- a/_overviews/scala3-migration/tooling-syntax-rewriting.md +++ b/_overviews/scala3-migration/tooling-syntax-rewriting.md @@ -13,7 +13,7 @@ Both are optional so that the Scala 2 code style is still perfectly valid in Sca The new syntax for control structures makes it possible to write the condition of an `if`-expression, the condition of a `while`-loop or the generators of a `for`-expression without enclosing parentheses. The significant indentation syntax makes braces `{...}` not needed in many occurences: class and method bodies, `if`-expressions, `match`-expressions and more. -You can find a complete description in the [Optional Braces](http://dotty.epfl.ch/docs/reference/other-new-features/indentation.html) page of the Scala 3 reference website. +You can find a complete description in the [Optional Braces](https://docs.scala-lang.org/scala3/reference/other-new-features/indentation.html) page of the Scala 3 reference website. Converting existing Scala code to the new syntax by hand is tedious and error-prone. In this chapter we show how you can use the compiler to rewrite your code automatically from the classic Scala 2 style to the new style, or conversely. From 8fca64cfd934524fb49a34fb0e5ad584abd9b944 Mon Sep 17 00:00:00 2001 From: Altair-Bueno <67512202+Altair-Bueno@users.noreply.github.com> Date: Wed, 11 Aug 2021 13:02:07 +0200 Subject: [PATCH 0190/1704] PR for #2097 https://github.com/scala/docs.scala-lang/issues/2097 --- _overviews/scala3-book/control-structures.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/_overviews/scala3-book/control-structures.md b/_overviews/scala3-book/control-structures.md index 50f81a2b1b..36f5bd0adb 100644 --- a/_overviews/scala3-book/control-structures.md +++ b/_overviews/scala3-book/control-structures.md @@ -450,22 +450,23 @@ speak(Person("Bam Bam")) // "Bam Bam says, Bam bam!" ### Using a `match` expression as the body of a method Because `match` expressions return a value, they can be used as the body of a method. -This method takes a `Boolean` value as an input parameter, and returns a `String`, based on the result of the `match` expression: +This method takes a `Matchable` value as an input parameter, and returns a `Boolean`, based on the result of the `match` expression: ```scala def isTruthy(a: Matchable) = a match - case 0 | "" => false - case _ => true + case 0 | "" | false => false + case _ => true ``` -The input parameter `a` is defined to be the [`Matchable` type][matchable]---which is the root of all Scala types that pattern matching can be performed on. +The input parameter a is defined to be the [Matchable type][matchable]---which is the root of all Scala types that pattern matching can be performed on. The method is implemented by matching on the input, providing two cases: -The first one checks whether the given value is either the integer `0` or an empty string and returns `false` in this case. -In the default case, we return `true` for any other value. +The first one checks whether the given value is either the integer 0, an empty string, null or false and returns false in this case. +In the default case, we return true for any other value. These examples show how this method works: ```scala isTruthy(0) // false +isTruthy(false) // false isTruthy("") // false isTruthy(1) // true isTruthy(" ") // true From 193b1c709675782722a0b28dc370f34e097f915f Mon Sep 17 00:00:00 2001 From: Altair-Bueno <67512202+Altair-Bueno@users.noreply.github.com> Date: Wed, 11 Aug 2021 13:04:45 +0200 Subject: [PATCH 0191/1704] Update control-structures.md --- _overviews/scala3-book/control-structures.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_overviews/scala3-book/control-structures.md b/_overviews/scala3-book/control-structures.md index 36f5bd0adb..61141bc606 100644 --- a/_overviews/scala3-book/control-structures.md +++ b/_overviews/scala3-book/control-structures.md @@ -458,10 +458,10 @@ def isTruthy(a: Matchable) = a match case _ => true ``` -The input parameter a is defined to be the [Matchable type][matchable]---which is the root of all Scala types that pattern matching can be performed on. +The input parameter `a` is defined to be the [`Matchable` type][matchable]---which is the root of all Scala types that pattern matching can be performed on. The method is implemented by matching on the input, providing two cases: -The first one checks whether the given value is either the integer 0, an empty string, null or false and returns false in this case. -In the default case, we return true for any other value. +The first one checks whether the given value is either the integer `0`, an empty string or `false` and returns `false` in this case. +In the default case, we return `true` for any other value. These examples show how this method works: ```scala From 90869d19cde1b72a430bb9b7171bf6614ad422e0 Mon Sep 17 00:00:00 2001 From: ramezgerges <66218781+ramezgerges@users.noreply.github.com> Date: Wed, 11 Aug 2021 16:42:26 +0200 Subject: [PATCH 0192/1704] Minor mistakes in ca-context-bounds.md Fixes to type parameters to use [T] instead of [A] --- _overviews/scala3-book/ca-context-bounds.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_overviews/scala3-book/ca-context-bounds.md b/_overviews/scala3-book/ca-context-bounds.md index 462774a2d4..b42f71e56d 100644 --- a/_overviews/scala3-book/ca-context-bounds.md +++ b/_overviews/scala3-book/ca-context-bounds.md @@ -22,14 +22,14 @@ In that case you don’t have to define a parameter name, and can just provide t For example, this `maximum` method takes a _context parameter_ of type `Ord`, only to pass it on as an argument to `max`: ```scala -def maximum[T](xs: List[A])(using ord: Ord[A]): A = +def maximum[A](xs: List[A])(using ord: Ord[A]): A = xs.reduceLeft(max(ord)) ``` In that code the parameter name `ord` isn’t actually required; it can be passed on as an inferred argument to `max`, so you just state that `maximum` uses the type `Ord[A]` without giving it a name: ```scala -def maximum[T](xs: List[A])(using Ord[A]): A = +def maximum[A](xs: List[A])(using Ord[A]): A = xs.reduceLeft(max) ``` From 6d520f922211583f01ed7b79aa5a5582747ffb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zyba=C5=82a?= Date: Thu, 29 Jul 2021 18:25:03 +0200 Subject: [PATCH 0193/1704] Add snippet compiler docs --- _overviews/scala3-scaladoc/search-engine.md | 2 +- _overviews/scala3-scaladoc/settings.md | 4 +- .../scala3-scaladoc/snippet-compiler.md | 216 ++++++++++++++++++ .../scaladoc/assert-compilation-errors.gif | Bin 0 -> 638449 bytes .../scala3/scaladoc/documentation-snippet.png | Bin 0 -> 83733 bytes .../scaladoc/documentation-snippet2.png | Bin 0 -> 82825 bytes .../images/scala3/scaladoc/hiding-code.gif | Bin 0 -> 888930 bytes .../scala3/scaladoc/snippet-compiler3.png | Bin 0 -> 109096 bytes .../scala3/scaladoc/snippet-compiler4.png | Bin 0 -> 35071 bytes .../scala3/scaladoc/snippet-includes.png | Bin 0 -> 119517 bytes scala3/guides.md | 2 +- scala3/scaladoc.md | 16 +- 12 files changed, 229 insertions(+), 11 deletions(-) create mode 100644 _overviews/scala3-scaladoc/snippet-compiler.md create mode 100644 resources/images/scala3/scaladoc/assert-compilation-errors.gif create mode 100644 resources/images/scala3/scaladoc/documentation-snippet.png create mode 100644 resources/images/scala3/scaladoc/documentation-snippet2.png create mode 100644 resources/images/scala3/scaladoc/hiding-code.gif create mode 100644 resources/images/scala3/scaladoc/snippet-compiler3.png create mode 100644 resources/images/scala3/scaladoc/snippet-compiler4.png create mode 100644 resources/images/scala3/scaladoc/snippet-includes.png diff --git a/_overviews/scala3-scaladoc/search-engine.md b/_overviews/scala3-scaladoc/search-engine.md index 06d0d13eec..88a7b1a31b 100644 --- a/_overviews/scala3-scaladoc/search-engine.md +++ b/_overviews/scala3-scaladoc/search-engine.md @@ -4,7 +4,7 @@ title: Type-based search partof: scala3-scaladoc num: 7 previous-page: site-versioning -next-page: settings +next-page: snippet-compiler --- Searching for functions by their symbolic names can be time-consuming. diff --git a/_overviews/scala3-scaladoc/settings.md b/_overviews/scala3-scaladoc/settings.md index 03fa538159..62067ed9ab 100644 --- a/_overviews/scala3-scaladoc/settings.md +++ b/_overviews/scala3-scaladoc/settings.md @@ -2,8 +2,8 @@ layout: multipage-overview title: Settings partof: scala3-scaladoc -num: 8 -previous-page: search-engine +num: 9 +previous-page: snippet-compiler --- This chapter lists the configuration options that can be used when calling scaladoc. Some of the information shown here can be found by calling scaladoc with the `-help` flag. diff --git a/_overviews/scala3-scaladoc/snippet-compiler.md b/_overviews/scala3-scaladoc/snippet-compiler.md new file mode 100644 index 0000000000..b89c81da76 --- /dev/null +++ b/_overviews/scala3-scaladoc/snippet-compiler.md @@ -0,0 +1,216 @@ +--- +layout: multipage-overview +title: Snippet checking +partof: scala3-scaladoc +num: 8 +previous-page: search-engine +next-page: settings +--- + +The main functionality of documentation is to help people understand and use the project properly. Sometimes a part of a project needs few words to show its usage, but every developer knows that there are moments where description is not enough and nothing is better than a good ol’ example. + +A convenient way of providing examples in documentation is to create code snippets presenting usage of given functionality. The problem with code snippets is that simultaneously with project development, they need to be updated. Sometimes changes in one part of a project may break examples in other parts. The number of snippets and the amount of time passed since they’ve been written makes it impossible to remember every place where you need to fix them. After some time you realize that your documentation is a complete mess and you need to go through all examples and rewrite them. + +Many Scala 2 projects use typechecked markdown documentation with [tut](https://tpolecat.github.io/tut/) or [mdoc](https://scalameta.org/mdoc/). Almost everyone at least heard about these tools. As they turned out to be very useful and the Scala community successfully adopted them, we’re planning to incorporate the features of tut and mdoc into the compiler so that it’s included out of the box with Scaladoc. + +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/snippet-compiler3.png) + +## Getting started + +By default, snippet validation is turned off for all snippets. It can be turned on by adding the following argument to Scaladoc: + +`-snippet-compiler:compile` + +For example, in sbt the configuration looks like this: + +```scala +Compile / doc / scalacOptions ++= Seq("-snippet-compiler:compile") +``` + +This option turns on the snippet compiler for all `scala` snippets in the project documentation, and recognizes all snippets inside ```scala blocks. Currently, snippet validation works in both docstrings written in Markdown, and in static sites. +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/snippet-compiler4.png) + +If you are starting a new project, this configuration should be enough for you. However, in case you’re migrating an existing project, you might want to disable compilation for some snippets that can't currently be updated. + +To do this, add a `nocompile` flag directly to the `scala` snippet: + +```` +```scala sc:nocompile +// under the hood `map` is transformed into +List(1).map( _ + 1)() +``` +```` + +However, sometimes compilation failure is an intended behavior, e.g., to intentionally demonstrate an error. For this case, we expose a flag `fail` that introduces one of our features: [Assert compilation errors](#assert-compilation-errors). + +```` +```scala sc:fail +List(1,2,3).toMap +``` +```` + +For a more thorough explanation and more sophisticated configurations, such as path-based flag settings, see the [Advanced configuration](#advanced-configuration) section. + +## Features overview + +### Assert compilation errors + +Scala is a statically typed programming language. Sometimes, documentation should mention cases where code should not compile,or authors want to provide ways to recover from certain compilation errors. + +For example, this code: + +```scala +List(1,2,3).toMap +``` + +results in this output: + +```nohighlight + +At 18:21: + List(1,2,3).toMap +Error: Cannot prove that Int <:< (K, V) + +where: K is a type variable with constraint + V is a type variable with constraint +. +``` + +Examples that present code that fails at compile-time can be very important. For example, you can show how a library is secured against incorrect code. Another use case is to present common mistakes, and how to solve them. Taking these use cases into account, we decided to provide functionality to check if the marked code snippets don’t compile. + +For snippets that intentionally fail to compile, such as the following one, add the `fail` flag to the code snippet: +```` +```scala sc:fail +List(1,2,3).toMap +``` +```` +Snippet validation passes and shows expected compilation errors in documentation. +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/assert-compilation-errors.gif) + +For a snippet that compiles without error: +```` +```scala sc:fail +List((1,2), (2,3)).toMap +``` +```` +the resulting output looks like this: +```nohighlight + +In static site (./docs/docs/index.md): +Error: Snippet should not compile but compiled succesfully +``` + + +### Context + +Our goal is to make snippets behave as much as possible as if they were defined within a given scope (e.g., in a certain package, or inside a class). We believe this brings a natural feel to snippets. To achieve this, we implemented a wrapping mechanism that provides a context for each snippet. This preprocessing is done automatically for all snippets in docstrings. + +For example, let’s assume that we want to document the method `slice` in a `collection.List`. We want to explain how it works by comparing it to a combination of `drop` and `take` method so using snippet like: +```scala +slice(2, 5) == drop(2).take(3) +``` +Showing this example is one of the first things that comes to mind, but as you probably guessed, this won’t compile without a **context** feature. + +Besides our main goal, it reduces the boilerplate of a snippet, because you don’t need to import members of the same package and instantiate documented class. + +For people that are curious on how our context mechanism works, the snippet after preprocessing looks like this: +```scala +package scala.collection +trait Snippet[A] { self: List[A] => + slice(2,5) == drop(2).take(3) +} +``` + +### Hiding code + +Despite having the context feature described above, sometimes an author needs to provide more elements to a scope. However, on one hand, a big block of imports and initializations of necessary classes can result in loss of readablity. But on the other hand, we’ve read a lot of opinions that people would like to be able to see the whole code. For this second case we’ve introduced special syntax for snippets that hides certain fragments of code---`import` statements, for example---but also allows that code to be expanded in the documentation with a single click. + +Example: + +```scala +//{ +import scala.collection.immutable.List +//} +val intList: List[Int] = List(1, 2, 3) +``` + +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/hiding-code.gif) + +### Snippet includes + +While writing code snippets, we often need a mechanism to reuse code from one snippet in another. For instance, take a look at the following piece of documentation: +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/documentation-snippet.png) + +To successfully compile the last snippet, we need to have previously declared definitions in scope. For this scenario---and probably many more---we added a new feature: snippet includes. This allows you to reuse code from one snippet in another, resulting in less redundancy and better maintainability. + +To configure this, just add a `sc-name` argument to the snippet that you want to include in a later code block: +```` ```scala sc-name: ```` + +where `snippet-name` should be unique in file scope, and cannot contain whitespaces and commas. + +Then, in a later code block in your documentation, use a `sc-compile-with` argument in the `scala` snippet that should “include” the previous code block: +```` ```scala sc-compile-with:(,)+ ```` + +where `snippet-name` is the name of snippet that should be included. + +After configuring this feature in our example, the code looks like this: +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/documentation-snippet2.png) + +and the output looks like this: +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/snippet-includes.png) + +You can specify more than one include. Note that the order in which they are specified defines the order of inclusion. + +**Warning**: you can only include snippets that are defined above the target snippet. + +## Advanced configuration + +Often turning on snippet validation for _all_ snippets is not the proper level of control, as the use cases can be more sophisticated. We prepared our tool for such situations, i.e., to allow users to adjust it to their needs. + +### Available flags + +To provide more control, the snippet compiler exposes three flags that let you change its behavior: +- `compile` - turns on snippet checking +- `nocompile` - turns off snippet checking +- `fail` - turns on snippet checking with compilation error assertion + +### Path-based settings + +For more flexibility, instead of setting one flag to control all snippets in a project, it can be set for a certain path only, by adding `=` prefix before flag. For example: + +`-snippet-compiler:docs=compile` - sets the `compile` flag for snippets in the `docs` file. If `docs` is a directory, the flag is set for all files inside `docs` + +Additionally, the `-snippet-compiler` option can be controlled by more than one setting, with settings delimited by commas. For example: +``` +-snippet-compiler:docs=compile,library/src=compile,library/src/scala/quoted=nocompile,library/src/scala/compiletime=fail +``` +Flags are chosen by the longest prefix match, so we can define a general setting and then change that default behavior for more specific paths. +``` +-snippet-compiler:compile,library/src/scala/quoted=nocompile,library/src/scala/compiletime=fail +``` +A flag without a path prefix---such as the `compile` flag in this example---is treated as the default. + +### Override directly in the snippet + +CLI arguments are a good mechanism for setting flags for certain files. However, this approach can’t be used to configure the snippet compiler for specific snippets. For example, an author wants to write one snippet that should fail, and other snippets that should compile. Again we took this under consideration, and added a feature to override settings directly inside snippets. These arguments are located in the snippet info part: + +```` +```scala +// snippet +``` +```` + +For instance, to configure snippet checking for a specific snippet, add the following argument to its snippet info part, where `flag` is one of the available flags listed above (e.g., `compile`, `nocompile`, or `fail`): + +`sc:` + +As a specific example, this code shows how to use the `fail` flag in an individual snippet: + +```` +```scala sc:fail +val itShouldFail: Int = List(1.1, 2, 3).head +``` +```` + + + diff --git a/resources/images/scala3/scaladoc/assert-compilation-errors.gif b/resources/images/scala3/scaladoc/assert-compilation-errors.gif new file mode 100644 index 0000000000000000000000000000000000000000..c13cf0ef4934b9bf6c230e3bf581ef51ff12e629 GIT binary patch literal 638449 zcmeFacTkfJzpfj4PY?tV1OaIxA}A^d`XZpxi=fg(Kvb&qUQ7tRhTb9c4gmrLLJ7V1 zB3(L2?^4w4_wIU<*|XNH{bVx!Ma9R;>axlzipna_R5TP+)Sqc+ zC~Cb@ex>vBjW$9%C`!j)O;=Y_S0Ani4b+2q>N|MqyK22P_I~T>^v(%x6d$3^B8|ePUywY5O_BHsYDxXJb33 zNV~9i_KrsOF6Q44dAoc2q(^qb6ah5Yj8{RNb4xJt*fc6W1wxIrK5YG zV-(rh7TwiR-_zIJ(?8kUm*3Yn-Z$COKh)JfFwsAiJJ5?B=j#rKi_l!+sPE7PpOxH|Jj7`mSOwUYAPmRqjOwKKgE-ub2E%&Z0V^^13 zR#)d%zkgfb9QeLA`h9I+Yio3SdtmQyd~bK=;9&RYc>MHi;q=GM+3D=r$^6+F9*_U~ z`}BXyFI;#U)n{6ovQO2Y-4zxgAtHPct}{|93eX}*=+77Y^J4;{#Dm5xXjy^ zLH$ltdW%2(4aH>nvW&K1mV4$ion@IF;heHT*A&XL6r!d{xo6tTvwPx1-ghS}ROIv} ziQ8|?bXDXIq)Ef6*%i@wLz(hXf^WOg`6C$=6s(r{MFnGp+7;%r-Iax3OAT9s*p;e^ zCM!%w3f}fq6;D^&EOnfIFvD{g_Z!uTLyLLQkizd4W(4& zn(~#N_pt^`<~QLT}Q2PwEgB>AGUh;+dV6_ zHo7{@{!(YuEr?Lv`~#DoOrFyn^FNH}TXt!K@ zoWH&pAw>c5*Y!bnRYLPSEHlZKJg)ig=E+W_A;ZPi@BwT6{r1sQsiG*&cmEWLn)A zo&^6`JCakuY+>nE*{)3;l`HM0St7En4i~96c(m?c3U=PAn(>Yk%FCD{-Byx%Dang^ zKvnU+s()y58@tE-!>TxQSgb_p`b#CM7;C5e?{QP@xAt(jJ{ohO`?J$8Yo?PgR%`M7 z3VW@WM?TtQmhnjIGzdQl?3`-MdN<@wolx!Er!HhHQ~XryXn0dIc(Yw}8wGD@ ztTH!ky(Lk9JY{+3gU!IZuVUPlX-Dzxvo34JKWH@q@KUK$RusZ6>ffr$%T;e%%VvDN zx3})H#QEI7H2t1XfRh#!QgXIBFm6tpX4rzx{5qX?u=YJylemlZLGo|LFUcLkl0BhQ zGA`?PJY5P^iZmH6Z&grS_efQh(a{VqqtBEQ)itJ~6}9M{msH2mSpQlT>5g~J!eDtQ zmU;Z%Wt{S)syyzSwEFVvTvyGMx|Bs%b%gUTax;9G_QY?=^Dh;=75PL zie+B<>Ow_>05LL>!uawzVHARfehGWVWE?0E9p1nW&NfPV)hXUkd20}=Vo5>^>13hG z#c(q=WU+m5X@00m8J75ym}1DLi=Sg2EodrD@-Uf-sToCg*MyVlZhqTk?F=F*j2sIc z;+?YU5a?1tI+4@FbE*URHkl`#LBjj(*OO6gv2`-EpE}`6d=WkzNSJQepvCN#|``f65>~7>oMIOf&e1*6J3i^JaQ z4AcF!j=NGTF!vxYo#M6@oENv}a~}!Qi4~J2PjqRIV%QjAwZrjtx`4=aBPr=oMr;_H zz{?!cLvm;%Hspk~o*ws`SLkJCdL&dSnMmVG|0difFt2J1+nWc`cde6^On#*rIZGdUOmV0HbHSz2FPNSko3(Q4fU&#C;4V(v^G= z8yl4!b?roXBhu?7fef~G+K=>DC7fPU-@TloNikzWE>}QxT`u7A4bGF{yc3li8pe>M zUYWZgIJtsPeMzrI&c~B0Dv0TEk)%9OUds972i|m+MvU$g%_oj!?!PQd?o3Zkt3N=8 z-`+NVs5jNoUsYD!xApl2c5;f`slry}^ToO1Oh$dJx8{KBkynm-p6D#Y6#dfg4R z|GC6?DBk%3d?zC6=W+-Bu0;16j$0?FpDTRs%2`ILhuWd$cZ8aP`VgzYpRE>Q)~Pob|i^K14$5*I%fe4=4RT%2TV~cr$Q5j{SX%3a{V# zq;@ei{rdznP`~3ma4~oB`v(rvu;;J#bCC^y+NsuX5I691RT6(T7~XJ{tM+R{4}U%} z&~Q>c@N35%e=!efEI#c}`+bmv|GBQ#c>Za4zbfEF~j{*Ge z3&Q6B7AUbelvEo^?gFKZhf-spv=dP9DU_ZC#vl&6tPNv!fw9EHSTV3`6EKcb7$=K2 zx41Wtwl|-Pw?MqNAjVs0!dv*%TZ9FER~#;;4S(PQ7mtTO!oZ~_;7?BB(kwnQ;y!ZP zKF?iz`q!1MJxW3P7(uZ)bnjBI_3Javst;Kr~( zW4QZ!S3{GJg!rTX!PMcSRnW&^LhwPD`v+OLCRs#&u=*Tf75dcLT+P~2-`dW^+Toe4 zm9njsft{nVog*OxCE7)(+uOXgcOyh03kSzA2ZW@f{WC{91xH&8N4FTq2w`ViLISdL zb_;b5d*I?k2thC1oUGm59o#*G+(Sd%BjVhHRXsgYJ=3+l+?>2%iC!s$K;-rXrVaJ{ z1ogIs!ct(#uf4t8ynUj)!w8v3!v|*V<3q?q**>Y(zQK{c(O!OmFu%Z@pbV|xzz=`N zBApPwf5}9l|B{JAsN*S47Lmmbqx&74t$*% zoGl$5Kn)Mpj*Rq-jJ1!B4~>o!^3llGiHwPf{)tJ<)C3_PjsMSxG&8q^UHCS(u-Ln_ zLo?ZMHa6xqxBIs?rg!&-_qM+t9TFna+{rN^A|0KckDi^*oSn>^ zoh_f8{|7;dkYIM}u>W*|*(K$O{!#MJC79gj5U|+#aMC}QU|gnawK|8{M*r6Y(;J`v z&NuYmC73zodkd0{$^SFK(MB@A2OWrtr?A-v(#LdrLiO*BgGhpA!v&V8JInWu*7cSl;`~cWSmqm04v-VY2jGvGT_BkCCQb zYV~Z0(Spj7uMffLsD7PK7FDYSTjgupiZ_H+ z4({eBu#b!J-`_1dFi$RbQ@rKcb@$c|W>i9{Apha7^Wn;t6X=Vwl%1oSHAmxx$u-zi z-KbjO?SSH{T|2f?)x#-^y{7sFr2^3h`_l~A&*YYQWffC_du=S!IU-rDV*0mLet+B) zE}HGWD0W}?Sai^xY}LDl7L)i1ZoSc=P*%-cQFPd!lt8ncuF&=-(*S@;z8Q9^NqgQD_ z<;N%I;5)g|pWVI}7M1(c=a8(Vt)eb?i1>vG)-jRnOyXhww?`Spi zkFSHS5tC3{qE+|iG+`$D@DlRE;VEC1p|(n^XpjTWhx}!L0(GQ1<2w{5DQg~y3Q`nK zZ-b){x!O#Rw;ZOEkyhvPaRCX<5&2U&2>GZx3{k#k2$y$&afs&oKeoI}cO!m@7afla z?c9Sw1`&MbrY(}I^F;4@d9E6oc2R)$8O){TJ?}2Gk&wIiQ_wH6-^RSZOmQ>)W^)!t z1SJXcTkepD6GWHpX!tS(At@{aGicRpTG%i{4B}`IpIu%XbH7Uzy~!e<2!cfU5%OmI z&jnJ5I1ydLb6OsKY1&+GSu*2O5O2d0ggqW~#m&)QQZAjCjVJ5wN|acPQqRf*MtzvU!p<3cbS2_$kTE;mUMG)nD)s!$ci{=3Obz;7k0Sn5Ah*l+`efDJx zh(T%y599jyl$r@iPA8}yz0MnX9_CU-nh>D!+41rP_=PkVYY)quvKe*aRCcNbRIAGN%z4zA%?Vf zhHilL7DFhtq4f|`xrfM+Pzvopa(0&&1CSD2#QoR|lL*`}rS0w?ZQH{|x zJ`69!y)Qv+f}GV_~j+%I7JOWu|q)nKR&AjxSFr^%N z;>$>BGGCjn>mFxe#+^t~w!CIjodYnd&{!Ts8+MC#4{`ergH)|$O6HN0iU83*TpdMQYeZ!@?Qy=UKp21-svtj9WJl2~H8NI7kzd+ssLc z0Rgp<#7@zQ{J;#{-f>1_XO~|;tW8VVaaK;6JMepm9q5C){m`2lZKy7%NM&s!pPwPk zb8glv-*di(o2HmQk)#LN211ZCyBP5nCIjoxPuG?xtOGk<<|2uc zC6}*TOH`_*9@x`Br$`4R%n-$gsfQtJPax-{NSJdpEJFc3jr6z*md+&i_S%>3Q~!ZnAc!%`x)7W`bG$FPvbMCwx>-ebiZeUyA!` zY5Tr*@zsv^)y4SgPxu;~`WmwM8H@XwX#0J1@iUG0GspN@PWXL3^|N8|A9lWLr|sVq z$KYV<@0RBdL?0mf0MX~qQ=5PP0-_HPeSqi#L?0mf0MQ4CK0x#VqR)S!hc`g<0iOB* zPkn%=KL6;g0Z)B^r#`?_AKH|FW0iOE&f9|aTPkn&G8&G%y3UB|9lO3S& z1{B_a!W&R{0}5|I;SDIf0fjf9@byb4C_38RbFz1E zazi-z$2vs`xj3r3*vGhpS-ZN~yLl+MJBPT3J9r>6Awn%SVM;L`4Nh#rQm#(T%o`np>B2ABI5iU;}|2S&OF237{XR}T$L4b5POhg*lo&?CcyMb7ca zE@6%{Kep5{J~{k#V)N@dVV6@qInh5keKvVAHbqz)&Wz43Y|qZ)XBSrIHt=(^liwB= zzAaYIf9sq7HZnhhpPw0BSlV3N++AFoSz1|KUhZC5Sz7r%v$|flw%)w9HoCTsUt7bk zeaEk_&3)fk-rVWk+8o*1*xcSZ*gpEb{Tsi%y|r^Nv%9~%yZ2-F9KXAd-`oAYe=u^e zzjd&Cc(8kZa4~y)ynKAT^XGlGcYJ(!e71ISwsiVq>-6OC^o%h5Sw1`4Iy;{|KO4Uw z%K|KyyeIr5w65lGZIH0_@e)ft-khjt@hYyzIwpM8 z5ybDNT)3<4&WUF3mUwxdob0r`3kzp|;(4*ZkNw)1`j=bEQJ23abhWH?PHKr=4q`ug z|BtQU&(=ql*L2YP^2fXdziUqG>E_JLJ`4Ulv8IcG0yzSj0i>aMgso4zz*0za*?M@e z*lONVnA8L9cd(?%0K;%OX0zpp!ZH8EP;u_>%Temj1EV8zsk)HS+8^_?LnscSXZezB zULc{5bZS--Omn)7q=qou)VF6nD0razmcw06VrTc%9v5nH!Ra1?1Wl2!->xkj2PUsH zVIK>=uV*5jTp75TqBYfZXAhz9Dcin#G?e!44E+XORxI^K9;}LMKqchBX%G=XuoY|; z6?VNh%T7*Sr2SlGMjhpt+#k(;<8HK3Pg&J`q)>TPo!!<=(a!mox#WwJ0>u*_3yV$m zXQrt5V}=>%QtKmW462`yWjNR?|$TPS_~T)5lt6YN`39lJP8_xPlp zbSvfVB_YVeaH-)Pr=3X#S=yqG~YR+Nf`*Y^9woqyixj4gQ?TDwMWfs#__r1!gObU8^tWqi^YjvgcSEOlYILTb^k z{YhoBUy9;d?&yjwHQF(2m>a^QD9dXpbc$v|uuEDgSnuXOE>D%qo?|GY) zuFG@JHE;Lv)3BY+KX*4M9#Nmxy62kzW9K5cu;TOgn}Pk`t4H^twXU=&Z2g3-cU-Rc zZsQwkPyZ&GZ(TP_gN4ye6|&8B+x3g7n3>UcrN7T1AMe!ND`fp5;nLmF(s|ks@84Jt z{$nfXw@u5&trTm96k3;&sGaUnRJE*p*7&J(9mFsHbe@vlgc}QPqJ7X9Z=y<`RQT3O z{&mgfx|;JPEkwIuXESpmxi)F2Wj_a&?W9Yn40iWxTT!I(lK$F#VPc1OTde+z0x{mU&$vGhPeCu-Z+$lALFtHr(BLQILLw?eSOWL9Q)EC z<(zj$JZ~WO^-(rL5n?7*^Vgxa|Mm01Xq6S7BvZLXeLA1nQiBZ2uT4jJVZ#Dv0{31< zGYfF+naXf@RHhp0BWcxa{Ut}oZ@OWYuC5K{T+vw^v+;Rf_$sjDvJ^dSR_(EJR&xH+ zD{bMA1h{fXbX#v4-gr&Y)N(cO^ts$p6ET-%N1-R>Q^-u&%c+1Hm)Yl~DOyn~L_@O7 zx8_0QANN86nnC3EpZc+7i88ujxQJr{UNCb)smp6)i~2kYEhA(HyYOOT(&tDx!|B3Z zm-)+4JcSfe@_FI9qw}m1m8!hl^dZ|mB-B?samFL(49?O|X{t|U$Ymm4+huc8#ySt(WM+zc)@x1#Tkqxr3?iPXW@YgdY4iekwOUR2L{L9dzYZB(_IG`a6T9 zlo&R~yk!~iHOgnMIxk6Ex|f+gLqXT?!un0MKol?xh;~`SlzPIO>@q#+V?kJ;qRTwh z_$3+ARS^nG0hw+sRmZTRYvCS)O_XQIE8h+lD1;C;%!Doa{c|pe3oesc3`O2mU z{C~I;Z=Vv!3{GutVPDsVQFlf#IiXDocQ}bD-1cZ4>1nSYA)9^8?oGHBRo9Gbw33oO z^rw^~AvceQvUS@KJ<;c9(Fu^w^QC8l$R#uufH6T%KMLTiogAh86jCQdpFMC(VC~M) zCv&!xtb>GQ{Y1x;kG3;z^dTG~AV;auSWBK!SHTJVz96eKE~vPf+`wPufru7}ti79$ z@+rc=5*JE+V!%H%i|gRywD~T9gAxaEHeFj>@T1nBC%y#j2Gc5O7m(=BYx7@fx>qIe zrsYx1c-f0$|4j?eB3Y(8c`Z+NF43@4>V4D^Z|dwyH0D3T^|R@d-4)vaOF%)FIX+T7 z!H5R6SiWkre*mjqdm84VjeC3h=`;8D_B)$xV^2WajH<`P=lzE|jnh z_19+OZ@y#{>-EhS`cSZY4HEv1GQPSu-~MnO=VNU`%@nuich^qc|IU|8^5}T-pNnNP zue7oS+o5FC4{+4xTD&Zb7#wz8G=MGu#*{Dbhli!^L7$_tE}72z@` z@ESzSB|?0|(D;y(?$RF7xGi|9orukl*issNMEvgA14urCm>WqXB~2G_2{MZ#mQ=ru z1rhP?J<25`dSS@!Ax(6jPdvwoT?u5aCQWono%}MwKxUpu?4#qGPcWB>CpTLivp=x! z8A8tJ0~%gC!A?K?KtSeD;1e6j4@35I{2q8yM8E73?QbXT0DiD3uZa^qQ0LgG*pS6+x%Yl85n~p>lOlPV+sxIov5@J#A zU;2VEG*0~jr+JRF4H1AGBiWBokU|Ic1A1EfJ&#wSrlfFcMnkPbda%JW;e8vDgE59I z%FpJqV0$R7-q@!@Q1FT|JL>ehaE0}*46Hdm+)ey3S%=sm6ugdO*g%4Xh!AC>2x0|9 zW;~eeDk3uvK}lt`PMC?hzFwE6wYm>p8U&LB68_j=)-Hw|5S>s2cu6_}ED=H1rA>Z@ zpgM~@G>jCXioBPP@ZqEq!rMl^&kmQO;$ksXQqBZ-AnA^v;0_V+K4-LCKDZ4Ut(;G% z;7U7*h;9SLs9lA8=ZwJ%#AqbYJ=2L%n53OX#k`)RT~d#hm4GZEW1gGE$lipgorS-W z2(k|Z+q=fd)X*JqMyr~|x=%*iQN=i!#TW*fKX#38-jB*TytOnBq5&bO2SKc^APP_d zwFrXFCShX`M2Q4{Mvj%DqGy5pa=2(voyy zxkO^N1egK|iVXy(Q6(3BPuxI(Dif0GClgr%lbdvs*G0gc65#J5DSm|aJ zRY)TWN+W&*Cbj`B=Y#OtAnJ`2Iuw#l7eph1T#!hes{t`lr<>nQpOpYnC#G;xvrp?V zZXoC;MG#XqksF3V0tFd-j}UiiGp0b9lL+v4!;A;4nK_gQA?nCc39x8EgoIlLZz3IQ ze&#*FOsPki4-4p&f-)3X3BNgul`31UAYvK;zFUCcn#yh$&B%TxGWQ%YN6z&AQIJPA zxV+5eSq*!ze~f7&*q}1b{VZI^HpekYcwF~svor*0#PW5jSY8f1j4Y-~XUSYBUOoS78A>~kqCeeZ^4TxhV=X;+ zRC=Uadg4}knpk>XTl#b3iXT_WmRkw&#b5jyC~|icWfF=Siz0jnf-g|?Y-J3RWta8J znBB`*lFC@IW!I+5I4;UK*~+;k%X#$5`P|C|lF9|KVJoDjE1q0bNVB13B++tu=;!We`6RR=7OgyuR=q&0vsJ#7tklx0eC=MTom8od zt<;~cG`OfVWUDfktTNH7`siL|np9F+O@2KX*((5+(?X37N)(U0@JwHIb4v(Rwwp?ltjAHHp}of`f>OAiKO}|Z2io1{oF*e|U?q# zV+m+10gWY~u>>@hfW{KgSOOYLKw}ALECG!rps@rrmVm|*&{zT*OF&}@Xe5IA96~OyPhj9N<_297}*> z32-a{jwQgc1UQxe#}eRJ0vt<#V+n990gffWu>?4l0LK#GSOOeNfV>-!cLVb7EQKgQ z-VMmR0eLqd?*`=EfV>-!cLVZnK;8|=y8(GOAnyj`-GICskaq*}Zb04*$h!e~Hz4l@ zM2ISp{r1M+S_-VMmR0eLqd?*`=EfV>-!cLVZn zK;8|=y8(GOAnyj`-GICskaq*}Zb04*$h!e~_kWtaJB@=2$;FY%EtJMBg5>5-y>Y{j zPcV>A(2t)tke}aQfZy+ykpC^wz+1P1Zt=(}sVFLI$f;;3X=0YJus5>_G4l^J z_b{=r3bP9R^x4+H&dJ=)ARN_O@^BU5)G=jqF_`?L%Z8Y!w`=?HpVr9qp7H zZ7m&L;v6Hzoa};~Bcq*tR9x(1T*7XcW>V`@1z)bG@-Pl<>O`V7xcw15a#D^7~q#3n5h}$;~f-Y91>_A z5~dXzkQAEe8-^gfEFvO{BMLDQ<-U8WZlH*sKliB zl#J4plD5>wgtRnUWO7PIR#O%(Ehpb6H!D52z&Sr7BtHj{Uyxi>l37$-Q&j)CxFD~% zWU+X{sw6A7q&&Z*tiGfqw6q9{Dh;kcWmI5_Dk^=^<*8_N7P`u#va+_a5mi+aQ;qJd z#V*&*qOtYx`Z`PluDY>#7B>~!ge_@qD{pSYHn)VdG>x{5^tJZawskeNceHf$jCV|= zcC~%&?yv9ZZ|UhD?Hz9J8~WNex!5V=|K8f!o!;GB-QC~X-9Onq$L}8C_jX72 zcYp66jvgND9PS<+?p_@JTsb)8L_4=l0sC)<2V zkur%j%Sn)4HCc(ZtoqL9zb|r+Mxfl`@NMFZZF!f|{h>ou!B@SUBy@0Q#r1Uf0hikA z`%IYCB*b&U@Amug0kkr$|nKe$E z+trb6Et`Ca`hqm~P++AZjC=FBmQ#=r8>et?_YJ+Oa$$;{hMy-Em$6I6K}rvgOt3q- zcbPl}9t4RE`%`~7a%R6>I3<}QHNW3g+<47-YhM{e;c-)-1<^H|yHhSVP;w6~1*f@$ ze^`cO?s$JtJKaAu7IXc_mVF~vu!ou8P*$>N^Sp$p?A4FaT%}Dy3&vKi&n<4H_LGgB zACBvHsYwJ7rNQIWVpHE&7hD>kDCtX!pa%p9OmnX6X4>X`YxVC5s&=C7S_G=SYduK7`-RL_sDB+ohti&>6c$e-t{V8%AfvqzSmmFg58QwEH_O|#%@b2rdQLAOy7ot zS?wXNl>Rzl=LrAFmoxf%c)Oo1^7 zf>#!Lh(S4~QSbS1ZJ7?Fm%oiM3}->6_WW}8qe;%lsdXm;q04Zp1pMn~G_E|xW)BK= z63Xp^pT6DYV{1vjoNJmue-LE)zVPj&j{t-_sPMxF%1o9H`R7-~7aY)KR8fmB+8)%F z-F!rvB;aRskEF)h`y-py)FM|Nv-W1Vu!Rl{?I%HX5k-}PLyFD0&d%q*d%WTg+92<> zQ*Tr6Yhf^9H(8syRNcyHZ?Bs?1O>>mmJdbbDf2>GD`l0t7O#4^4U{3s8Ivw)c(N2u zIxa_$vx+TB`U|ZPy;A5k?mvLxh#6wSoMepqkYqWywu+2rD!MZnagABaK@2*w@7+d{ z#wEx~J)VNE$~^nvob>^;(nS6=zgvCp=zUM^rDy@K!_-!^s@TgiJe7`R%f}zA@1(qS zdVU!VKJsw+SitO75c`UYNhhm|^^HVz*<}BNRgD>^2Z=G3G4yGiw}&mgD-|~fNtC6F zLKR;WyhKhMYOiqd_UFZxf9SW$Nl!G8cYc(Ag!q_&>oJu&Zwfb}x{tK=mTM<>9@1@) zyM$iK*W&u{vQ1|-o0v&mYHq>jah}Cv9140hbrI~G%&2x`^Wtu=t*T_?G21th!n`6R zk)iT&iDl%9T8(S>%#kcaML@8M#faL3%)YQ++UMaTRtOWlk)#+G8FiIwzryx4B7m_g8LdSrVld1y2H1SA#+ui2E&%Bp4It}kX z{E3leJTDt6W~j6>Dd>>wZVlI;Fl2pJ3FhSig=~AsQeW)^L3$J0V==PSI(cMQ?}|`s zG$}G^%(wA80Qq;f`!Ul~jws6z5n&lDI6gw5Y>OJ+r*oseucwQl*(1{(ASRPv^uo4u za@4}fMqqL`{~L%w64Aj$cK>*9di0?0JCq5{jrl0a1}GITDc7}$?!Jc;3t$6F90ZzV zAl?k~zJqz6X`B+s_8bJelm}(@Vf3XD0QvS>!HDJ7$w@h-16_-nh%af&@GTjU-@j%= ztT(s{t+vei#wvhmnKiwqJw$$IqUBLV=TlxcTS}eL8~7{1>reUhMZxYhIBIUE7vdS} za2xtj-W?n%r4&~IXt;&haRSOe(-X-Lqd9PNac1HPAtjdL#EFOd7%kq7DR%$ zR-aNSsmqY4qrjJVq$wUrOJC9ttBkF?mSi>qquL7yay;dtysiI_Zjb_9dC)=5wd zPnb8g>LRU^m#F>{_vgOiAMTp>p5sh==AnT)+&Wr>V~j)Kaq|KkT*P@b=IzxdMe4*R z`N~@S#k-C<*kG4IBjR4eCN}MQGP?PuN3$Su79QkAM|%sg9-^{2{HP)2e!aRK_NZO^y@zYUQCV6ZH8J`a%>v<(jD2X>Kqwf{YY$E(PHHDM7He_TA+Qg zo0S6M!F{bfo#MWnElXan_%$8zryuqsPOg1=c6p3xY&etyBGZY5&>Q-ZoujOEF*w=` zD2{V+h{C%APN{(ECoKYe@ia+Z+1!7aWCNFiaWE3?%x^=9jV!Z;qR(6X3h zT;+|T;N=^n-qgCdTFBW%_Sz`ao9G5HlXNWpy1caCt32YXV>$jzJRl1oDW47 z;N01~s9wRSZ|)IYp(pJWft=Dq zW|73=P*p5F(e`V}NOGe5aaTrZq8kW>EoXKmgty)q4^h1b_lr9(7~IB#Ws{+ef=&nHB-8bVFQ z&WVvs}E8@BBFi@2fySwqt1fg(5) zBIaTvKD?s-x)*V&CV~;44`#^+$2dkZ+>B&9i(sV!&#N=ByIL_zKz0TrWV#r9IjMw* zz|u7cEeS3<1*d%|xE)G&fCP6S=;&)=j*#G15O{w+W)d0s&djPqJ=)-Vgl-_+Cs*1D z`dEEeumu&^I576m2CO$3^Fab)I~hYLML9{twt`~U5b>5eaVAu;20C$WfpqU{Vr_L2 zCT(H^uR>gICRpgiAgQ?CP~F`JfgyXKmt7!Q>F8XuNV<8DTt0|WI+_v*DxykSQ%@=i zOkA4>q0AEN@)NOUk#y_d4e2bEAUZ?EtXDyFItAbt z1=*U9vYt_cjoq@J=w>cG=EvS&~&-*MY#xD#a+n?F};chc=rnN zq>4w_3aROeCl?jcY-kxt^#4JPB~P}7MahO`y@plyhV`U|4Q#{Kbi>ZYf7Dnamco(h zY6>07zBHpMf9t0UZMwaosm*efPf7hu%QDsbpJ}En&kg^A_d5q067yNX9DC* zfSd`CGXZiYK+XinnE*KxAZG&POn{sTkTU^tCIBn}Uumpf504xDu2>?p~SOUNj0G0r-1b`&~ECFB%080Q^0>Bagmj0s+9RQZ# z+E6cNC{zvRWdZX=dIMmo_m7{cYoNZT4**L5SOUNj0G0r-1b`&~ECFB%080Q^0>Bag zmH@B>fF%Gd0bmILOTalf;G7(APVT>-^?Q~t$>s$T`bei{CBZbO%SdVn!%cmA)`Nlv zx^Fq$=LzJ$NcSf&_-g_H) z`WV5yjP2atyXl&IFf{q-^uhk^M>GFV!GY#3q2>We77-?vpFdgKsn}S`+F6;~IU4*q zBa_#uCt20vby|V+m+10gWY~u>>@hfW{Kg zSOOYLKw}ALECG!rps@rrmVm|*&{zT*OF&}@XeGAy^C=TL%Zg5&)I}umpf504xDu2>?p~ zSOUNj0G0r-1b`&~ECFB%080Q^0>BagmH@Ey9lyRd_kCk|bEkJ}b7X5{b9?7t`{?)f zZ~XT5*3QAq?*8)b-jCgL{O&$}Z}<29!N|e>766t2umpf504xDu2>?p~SOUNj0G0r- z1b`&~ECFB%080Q^`cDH(e*{Zh9I4zwY1|@6Ztm0@H~jbn1Nj8~_;~~Q`TYg>{cZ{Q z-x3YHbt~u=kF1i4qOyjZiUvWjr1DDp)f+ucU42hoyMH*AUcWW+{#&r*|1QA8$Q5ej z>}})~Y~! za&E5nZk~Z|A&G8L*6!{q9v)7f&fmR5Y4US|T)-YAYKFb)}eUbZ0G=&{#ra>*4ivmZ5ion?XM-+mD)R6I(o)CCjOj+>+Y}b>2K-jAMG7(?i>2rH@Vn1pV8mj z)jwD?(AP6CfEgN?8k%Vx9<3W0?HL(69@(8AUFjH`=pCD=93R^r-x&HjasKrrV`8Fz za;AN1W^`)$$JF`c^vvk&0)BR3YHl7sH;SK|UHrDXF~4yzzf`mEZDwhuXL)I4d3kAh z<$U>IW_7)8ZKZW>d4BC+d2M5J?ciYTJAQ2yzqau=Rod#`+*;n;9@*YJ+&(7oB>eX8 zt)1QJ-M!V_{jJ^olRs4HfIyW-_6cC=aP;tC=WzGvaQEWy=gQIX-0|_wpZD3`@$upD z+3LyJ;^~jgv-6{~i{rDCujdzY=RX$D&*m=9{?)P6B6auzg=~UTG79Q2D|| z%a>)e1+&~UpXn^i>AE&BUNo@SvzU#(;Re?PFq&Yx`aDMiX8)+{GMdevkl*0Sn5pZ~tdJsN>> zhr_ptGq&YjPWOinRRv%5a+1)&nHAU5;Rjr5ukSNqR+A9V1;5+x$Cr0yC!HRIK_zvZ zZ>9>rVj6fL)+^nTpT{8BQjlMTBTo~Pz;{nSl~pz0EXI`ZL2}~Ejf3uC+S<*OQ+KZ3 zvOE&I3%`mU^j4}Ed>-5*oYN@+S3*)x4`(-1{Hw-B(nT|Gw}0 zCm{p~AqfbGG(k`i5d)&qR1i?AU_+Wpv(OY2k*3m=-ives0V$z`rgTH-)rfQuL$6X4 zktQ7G{GT(=Tx;#M#@zdiv-jBN{GOYP!37r?T)p^w-wzq1m0RXU-MrxxAi*ajnb|60 z{Juz%X|ZN|&4#mb+&n<*?5btuVx}~g`=>JjGF`r?d#ld{PLKu_-YL>oTJk>fKVMkU zhM3%siPeR*e9c@eQvH;FszlM7m3{YYA%VNe;zz|$=U`9t!QTr{KMDuBTZw;8Pn4q4 z<)l;&+>a72sFfHsw{y8f6AjHSsVCajuQk?-NuIDs zG;WleANuvxxzbRgf81*~&8n8bZTw5|M+shK(1xV&Y3Ta5sFN-(mnG$*+QtX0NWaV*&mQ`- zxm-`;sa%MSFM1fCSovLUEcFB1m!T8b5WD5D{RMy41O!93kG$*N>H6Num%O%k&p^?& zJ9ubSHc#>C$=&VqFaK1Z;yLx{(b6aHstl`70(K9I+*DzT$CvQvsb+UIU$z8@naENSigwjBCL~wrV;pj@o4lciW zw-Uv$fkYYg`+H1yv&8M{tFgL>np>SA8O9Yo4OG6pbcC-il{52U9PUTJLkrUF0Ut5! zp#ajod(1?hCiP1PWJeuK3Rxn@E;pR1C_E;QNDzBtc8a0=vDbaR8-ruQS={nm#kOrPjgd=%n#uR)dCSf-<+RZzEcv9dT(IHM3 z%{vH;?2-6_VQYlXWkhPHM0fAii|^fGMwV@8vAcfOy)?V1yFQ<%#zy@mId+=s$} z&NEY2hn>#EN83i@QiM))*?N^~&eIsQm2!hMFXvn%^#3%N6h7RU6;pJt)9zhr{2le@ z^4Y6l_tPkC4;43SL(N!D6CAu$8~SD@4D&p3pYE#tW$AW@D+&?6_`cyuS-Aw5srIjY+lWcsa+lWORTZp`nD~1hGn6Ic zQ&Ojr&slk1EEmp9!HNyR;zh@N=sLomOs61a@oySf`~(Z}wMe|4x20n@qhywb)bMgp z9IcLxgP^MT9`d}tOL*$AL?t~s%z3rh^z_;7GL?Osg`e{{O6@FjniN{=LrwZkdDTiW zhee^F@9rw71I-Y&J-#ufOa*0_#dts(kGfi`$#s?9AbJM!ZEbwRjbr|zeGvw$$g@hTS5&`vYf`kD5qf+{!7aLr#}v)AYRUaovX(DF|jo;T))|j{8}^$I;=o2vMBb zkpg=L#HJ~WtF$*5Yu!|}&$tx+bn}n3cRPiTR z4STXI`vp8(7iK|`CCoK7*1?U#N~xi%HA$y)4p1kX6qc1&oR>wgMjlNHi?C3&2~%cs%C~d(%^0k@ ziP{po&Ju*Lu4E!jhvGUjpYtjW@+D%8W39YQSocHxMX5}uRULS;+GY6-WtH!(gs<^G zP~+_3>gfs=#9nN!#NtffFm93`8qUJ*sL7qY#*J5cB&!Pbn|AfONM6bL<;?hO^M#UpVs; zjzx;VfG04x3Q4LH7|wVwUiyuBLtsz}L%#AgLez2Gh2R%wV4-?kpKve{3dfWlLRbkd zBm{q~cX30F<)$a<*fMNC4$+LquH&#@32<4DE0s9dcYTEjBrLnvWuFpEBur!Bxqw!f zwVn`+!xYJB&r*;H6T!o@2=@fneXB~9F-(H-7T7g1cFPpIw2WD!V7GV4*bryzZwhvp zjM)xz`a$uV55pvky%4cyoJxH#Ds<}(%%f)tn-bd)I#Lu%K8ooPQt{{y`YPgQ!E{~Xo|;FI?zM5@RjyI} zgX>B`SIvZu6Cd?uS!W-SV4Mm-L2^dDHJnV*?Fq?+ciU+3AgY5?a(-g*rE010!VCo^v z3O#y&5OLSau1PQI&TP1mKidNrbU!Y}#06u+f-(1x`Du?a9*Djthjkc;-pe>S$;H$| zG1FnOwuWylSz_)OzIF9yvnY>oFpL|pkMTc%bv_nnV;D_f5x&JDy#isd%h0tJ2(1*A zX%)dnhg7p6W~C@*0+h>=Fs+x6>mNT&hsaj(RoU^CRuNRIcnm$B#FCgDmzY_e$n6g? z358?Apd+);XBNyCxy0&?gpTs0E*EIpBZ*~KDS;Uuo$8YOSt|Yj0|rTfe%NCeXb{c{ z!Vn@5G$_Lg!b0J&FleJ3$}ohOX&AZ?w8fHw!KW;;q^!3jv+|~(Hj`IcFqqaj1`70Z z7UB?3nHGXrpm4##w@7o^1mE+k|{nO`YMBR8cL+f<;iu4Pc z8FNbMIst5^n&~$K*bH+pmvb_%%crZMFy^iq=Z%Pt0sLn*_s!5ac&+SCIE1SYaLnLi z++FQlaxmZZvb{ev;#Y6;%$9m*sM$Kh~Z)P5Hu@l_La<9mKo0B@=svk5nz)aFRr!m=l7lDkqddgG*XX_EpTj zT2U@u8Df4#ZX}FkV)?MN)u3JdupL+4hOA?+c<#g1M-8s~vg93~r{}iI=SM2r1uKJMjf)Rtn$>WCmjlLW?Z#K;9KE zK)3Nu>Y>NTxb<>x+HO(>SHELI#UKEGA0#8+}rq2&KZjincSHDd}j6UH@DZZ$Ir zHFK3U3qv)FTmMyK39d*%m{5@J6y`(Hrit3)gA>K~Kn|wINj)R0Z5G+j4E+hf%Jyf_C(k(`F*+Si+4|?YX5VQO8fu3 zNP*YMHC(Jpu9Bi@O={&yPOo&xKHoms9Fu=7xMCVq}9UD5-8 z0j5r1>I9}vVCn>>PGIT;rcPk$1g1`4>I9}vVCwY0Z0ZDH3BXd`r_PU`zO;V&H2G=v z!{66Vm0ex+T|FgVy8aqGwe|GVd&Zl32fF(D=lf>%rcNIQ_SQ~A8v|=SgF}B!oxXpi z@2#DtM&|aWP6OXYN574IpnvP2fBQlo-lY$BkB-le%`c5j?=7FkCMH@ZC&wpe|2}(~ zp-xYCPtWX5Pw(z+p1=*=-qZ=e5`ZNDOPzBwfyGO^yPXax8I;Mq>p`T)g$%mu%S`X< zCLdkh);b6sRad4n<17zVVrtQ6J_1+*umoTUz!HEZ080Rt04xDm03v9@Ym0SvLqY}4zt~z?sqFihe8DwowZ-?k$5dhch~l__D)wpj=^45= z?vmK3kILbPG%wEkS)*_Gon}(4xw(BteMMs)j`@qd6T9w*2+kS{#5anK2T==WLIY){ zvc^Lc&lueGOc?Mp4OQi~ng}QL_{Imz9-5tq)Vt_Lr(LWnZBpPdoJ^dkz~(19B| za6<=f=)esfxS<0#bl`>#+|Yp=I&eb=Zs@=b-B3mTRt1@_vPhw_#JKXkTV+{7WkqFW z)lg;4Rwae6imFgmZ(P;rR@IzP)mmBA{$IlqxS_l6bnofy`&PaW0{yL>gRT7%Y{D&V zA3b>dM8_WF!odw4m^y(Qy1$DQm^y)}6PP-kdtDe=)_#}?_U^cJhwWQ`86E*$Pu6=< z^Re$~4aY59nz?$4G%AAL$>ezl82_R2gQ*jkI)SMZm^y)}6PP-IsS}twfvFRiI{nuo zrTX7rbuw?`f}2qE6F3mI6x4PJh%;rldiz9sN2Yiu?X|)^-}t@o^>_3O2=|KuH+0~J z?q8cab^Slcg$v4B{mZ#+q5iP_5g8$#v9gfqVw)gLnz(PyZwJK(>5 zNp-vyE^OOGdcmxW9WJ~!=qJJ{Kv!Y{umoTUz!HEZ080Rt04xDm0z zUo(u&Qw%b1-EAPQP=! zd7A|b04xDm0+nRmH;dPSOTyFU3diqwqw_c^?8F$c0K1>2HX#oc9<_DJPjc4f;pU0LcuD8o?q@Ms-0+nRmH;dPSOTyFU2qR{N zF|*js;KLYP^k+nRmH;dPSOTyFU3%?Te0!${|Z2@hs8N~L9};YTiojUc%!080Rt04xDm%7<@VIC_Uk|4;2b-6$Bc0B>+nRmdtLNS$LVf@G`{=>rCpz{3mH;dPSOTyFUvK zg0farYJh;&``m%zhhK7Tx4q9B`d~lanxyq1|7)f5&$+K{9}2#G1h52P3BVG7B>+nR zmH;dPSOTyFU8P@>apaq;qJQyJDb@1 zC#z18cwfmmw>AM-0+nRmH;dPSOTyFU9w8&K3gTzoKo6dAM* zU%dOEsVSFT>tyRLQZhTaXM8#iuf-!wG3WpK^#wxQvz5Tn<|#>TEDPTsd) zhTrznzhiEG*Yu^io45HZV~cwh78Y*zo(10bHGW_fWaV#RV`pn?8)qACZ}-URvE!8| zk8GYiQ+@hK_34v4PoJ4TbuxeI^7QG`^Nxh{#teeZep!o&Hcr^m~eH$2=8JYL#)ynf~J>VcUBgk zIU-LzGB_|YIx;fSCn`21CN}bITx@I%F)rOGKIUb7LSTGyRD42hd}TsHLP1h~Ofn%Z zg=kMmPD;;APfyRvc<1{rJuEw$kWG4!^R7ClhD0Jg$;%zf>(9D83_>YDoM+UlCx zZ#9FJl#ewON^R}O5Nd4!wV{aG&_nI{P}f}1(9+P*(B9D8(Ad(_)YRP4nAF-_-`3vN z)>hTt`K7%-y`zoVNo(%x8tUws=p6t2iB>@C{7m~)^|`B|tEc@-Z+Cb1K=(jfPyc%F z>W98wVt;?aL?e-{NT*M&@g>?l>T*O^6PBR$mrJ*`Um>n^R0Vy?CaS0ud%g> ziHZ4%#rDaG$-loRjygTnGd;I6{ik|nu4Q)m+w8*Z-1Ox9_suZ`tjzxIAGwYL6!eQkAp zb9`fCV&nJ1#^&(m`tI&71VPNZ(4@)F%Va{WH}gJmlV);ioi9#AGf}-Tts#)-l=X0P zA+ae`NF{(@qbOY?vJY`6x2Y(j?JeG-HBqDZT}OiK)4Ac6;>=GeO5P{|&62FoMDt5znS3ZmDGZf!lO4@SMT^f-hF6F;`v9`8YcQ+(d;QWiN zm6giAkI5HYlU7@NuX{`t*55fdE?|j$+I@P4?v1-7HtM5t_#w@U^M2Oo8-AymRBLW- zpHW}Yn1^HjV(-MR`yqm}#scw;V&g&oL$GxFScZL{z&Xnp!*?EXhUJs-w(nbn6??X+ zDEzoPlc>jXR79(j%*ORk=gNZERoO4%tRJTOal?FsSNrRxwHb3}r_!VJH~AGy)6=ZP zo7=sQB*%{&`y#815cbKwn4UA2;{#7+I(JrWw{=Ka#mIU-uPp!4r+4vb*H}-NHLM-e z?tP6q<`jcqzl?83sst5xTry_GDJiNWU&OIhMBovfi zDE;NB8tzg1=$oS8K~6MI*)O2Ld6WCbe8-JjNj9DGHb&$xl3b+x_T_XG`rKO~wwpSu zXTCpm;fZ|kYsmh??6Y2aQP*tkZ`bdq&Z!}G+0lykKDIs6s!f!a9n$;4|9dRxg524! z^s#GfaW2P$@aHmjl5+W`D{hqGY(&ndj|IPdR1p%Yf_ZcrX+%1k{$ls`nQ7m?pDr_b zA9Rj?%>2E$<)2Neu{sevl6{uC9F-%7EAf5lmg|0hYiqUpqkrjgc6WqZAF6KgEWQ2t z73Z8XR?=2YPi8@lPpyS6TW+HI zIGZ!oOr-|9(-cy=o%d5vMzqrm-EqzN<6`7E?IW>UBU5V@0_N!`{mn?zKr!c9?usy( z263UU`s_jSudjIGg|D**2q~mlO>6hVkg2<6&-cw%FZ-#NXd_)3iU&&I6k1F5Lzr@%iIruT}}M3_6>R1=+Zqq{=n zxT|@+^yW&an&Ba7TZ5XTFHana-3OP-uS03c{s<3qWWWi^VO%-84r_CW{0)|1FSOny zz#C7muL{PO71~@wzd3BiK)Pw}EBF-Wb+{%nI%%~qvaJ0c6}fg?=Bm|OUs3&PYvrH^ zYV)zR&?SinE*i0x*WS{CrnGWTvEC7`;~!EmK4|guNW7KqQx>e5=pWJ{B$5 zC3@o(?)Bvht1H=wBd5;v#Hv!=-{_iGi*n>9WM7+%(OtRPn7$y6Q=AHCR6*OEYsD+` zC;td}o~UzU&6(*;cdE{yeJTIsvh_{+%4=>hi){OzYsc(RjYrr?2Vaxnx|RC=MwEBC z$atpHLduu`>Nrxb|BAr@nD>#Yy1+ZCzTyUCICqs<0=%dR|AY+ZxWT-&d7%)K{&t?K6e zUw(DSH7Jxf>v?Ky>Ge}~ZFkX&eaFr+V(*aX#tbcKXnST=(_>d(i@tR9G)7T|Tk28gi9FsT6-1a4tUF zZ!!7p;cL!t>cc``Hh%McbGb;CAUgBDRS&^y9&i>f2L=uqs$d*W?T8VDab78v!3$T9 zJmfH`Z_%P@OPn%^2f0NHu@OS z3lC>G#O{4TF%EG8UyG#Q^Qos2nYNH+-B&++oUE^)|5@goTrFglF?b;Oo93%vx#E3s zhT&kTI{a*`-5Wlc9C0(XChi~GJtnFQXKqh2pznBM{DUpH1@1Wnmg2pi>2)I<>0cy9 z`1qdOJ<1{Ahdjso+0(jx3p-O&D|n~S^AcqoxABIFGu<=^=WaHal@d;Qp4sKX31_LE zX(*VI!aPA-L=W&ZDZX4`d7{q1@`ip)?j_CNwhAlQ(ee65av>{kmg#=NcWox^FkLrM zIP!7-YsvV}9FiVF95IQAUA~yqfc?(GfsG{B&wI@0?L8IsSblo2C@wQx zpfKpaMqQyZT+l;y>)HK;SS~0bT*96xm?DtHI+kQOei?oW&vNrB8!rt$w2ILt!;cf- z;`U5TB6s6xV(<05Pue2}?eXLG4CnBCtz?+Ap5QYYj8D&cnZ_(kgGnu)J&0rJlVZ$h zWE7ym9F*W`Larx-7!E2~;+pk(xqJ^C^4#Yrb+-@eDu(@u$Nmt)y7l}1Bw*=E7?H2_2+jP?J%QNFE3=S)uPNIM0W)hVV1i?q zJi^yUxH8~?nT)_hF&`CprdxtIdd4w84`Q6fYa)IGQh0)>vO)C*L5>q{T|aXByhv zEK+K>1^ro%P0BE`!!)uJ&t0pB>Y<>O53pH`qBRe&r3s;xPiSzfWkR`id)UmGbc#~dKUZLGm_-zDZ@T#Uz6wmkKSBO1bD{zB0|xhm+W3?Wo94&@s6 z_Icb}0uB{VXGz1M5+T&9Y?f3ZR2qfFUn4eE2^GkKN>GX=D4`PcV&7!5B$8PO9&rRh zT;gopYpb}|ae9 zKw`aIVxwVVvrA%YTw;59V&_02Z6mSkKvK6{QmvGpUS8S{qRrW8%*78NkK0s!{P}{n<>c6WHF;OWKN3Y zW*VNCC@oKvF(RIECCbJVKS@o!VAuO9j;Jgq5f^Eg6{*KEqc1^`>LO+jX80Ta#;2~CC2oAloaZRz=%wQ0Q%w69xi9`40 zAts1m-kQRUgRPfm^0z{moD9q$;YmftW=o2XJmj+*pQ^N(6~>z#A)g&(lpV8~hJ#?m zdTeUe={V`+ON=4yG!%zW3OpX#jDxaxVL3U;dAu-m7?dwgBIiKNbO=S*`ywD_8Ywp* z2S#WbtjM8llCs6~O62ost+|ysd%ud*XPx(!H-Ah% zf5Iq#3I)p`^W2=uu9Zr5A@U^X<@BIPIq{hyC{kfghU8q%CNHe2f`na$Dgz4GX$4jB zB=|hUW=}?iky%N(Y?Y+_b9sMqQVMyA`&micq+~8qAySD+hByL=yc|04p zT-3!={NZ(a<w19(ECgCMET?I z@Zv=d38h*#`2l)x4c2UCp%gPEMmysV9z#S))?z&^fm2!%0cNFV?C8Mk%{X{f82klq*_1eX2aj;!%SH>a?9iB!6DrQnmCPHJ)qcKQl**I0oHjR` z#zW!SA+s2hN^xPC__<1%9OeKV(Mo~5d7!-UIAL?3ToP4>5d&OoJ?$2woIsol ztYcrs^qJ=Dr(5V(~Y_bwe_j6OG zcgZX+)*p9-SY%KYf4r-EkE8uOE7*lvruV-1Rz3+cB7+0uB9HiGT9L^Ilcl$e8WXe8 z^^z4Vw->1F6c~d8W-BN8ojAh|new9rnyYO1r3aH8%#^2N11Qj8I@V`7tq+IQ*>0DL z&(}vce0IQmw#TrJa@~~UrY@rbgj(t7PH_pQG+QWbm@zGpl9otTaj^f!~dhsxY!I$hY>$YwDVUexk^7 zb^lPEs$HAccP{qj1{EA^P63{Vt_vHg!{BlIb87PNi1$JL9OQm>a!9~;EY-H3osJz+ zARgqW_PABEdr&2V7~07-n^qr>3|Fz^agv*L{iH$F>N*+gk0l;3yf_Q-T(fLP|1jSN z^fL1f9ey&W=H;RGhTB9JR0W!j{yEYheS_+d{TRI!{P|#q`i5A3Y zrP#u-jOI}0i=q6ap)=MWsq`Tk`H^WF_4Hj0Tw`N2z(0UP&$2cj)`hQ?t*Ft_V~i9FQji zU|uFeh}24H@sx@x3b)Ni4v&s^!L6c-MC0K>Er^KQ?Hv2GFlOpF9 zb?^Zmj#eiggX*Pm)ZRcwJ3(0QaTXB|9-f_s2Y7_)Lf=)74hh?Z9i@dbySc18L=lgU zS{H^H8;ZS9*MMjxz@w5}lW!+4;j zEFEHA@R#n8kpOL6UdJ>)v=qQcl$ppY`b!Q&mB{LB+_=VcJ=)*3pu={t3n1w#KP$Jjz@6GHr{NSLsBr&C( zh+eLKLa5clmRh4C&F3#v~cHy7liwlDZ1;mtB#Ld>yKZBIG!QXhJ!i0mH z#tGTxl|(XbM!KRQHj$X5z-+v;uFb#k_S;s??$+Cs4IOvn+x(LJPo-x9HiO$rh_AA_ zgjOmJ{*h_jqTKz{`|3}mzm7{u=Qd@T7^uoZG} zXZcgj^;bKqcX!ux*=Gy3<`3>}f7=~k!{z1o{Jce@EBml;Nm};PMpgXS4_`?)_&lZ- zbl~)(3BSUTQhj#S5K)aEN(i+G&3wy&u1T%fqh>W#Q;(-~66KyPiXLc4NqcMhCffF< z3`+Oy>AUZ6M;K7&WPp7~p3Gwe(B?6s-pr_)Z!idr`xFuoGL zyncQDiJoEPBehoC8EWoGf}L6j?#=kU=h|tXt-3uHIF?gn8H;7|8s7Its7jDiii*NnTvDBrbE+X+9d3iq&6E}98~;qOQ8m|QueYrz zBoyVW>ZG%@_~2Vflsb*7Rn+NKyyA4i?Hen|SpTuJFPu z>3Oz}bB6NQ2CiO@{nd<>qJ&Ady$kOS!F$GMdDMOR%4(I2*X*38JHD(1z0CbcI8J8tK67rK1A zELoXX&{0TDh1k2<{BL-l$gj1Qa^A)XEuKE-7Dz;zhh; z-`x8CZOoRB#W&lCSJKLY=+Sm=*J8iB-kb8_$Wh%pf8;FY!ez7Ct53|1b+kB@3mjvV z&bTB|oE>#T_1&oB+H`9Kq@5~cv82*+w!+`-QwpP$NNj*myj=icvRp>>S^B1; z+i;Px)6>reMI!hLd8!EBL{$0dp%TmP>$hI~3b?{Oo6ckv7aDi-%aeiX5yf+mO4T2k znY!y*UBQHUjhyeb-&8;0zDHkl9JZ=G5!7aonHvaEB;Dn+enxMfTB9hqaklhxYyG%v z$H^uiAUC=6wA17p>!!oW1u1FM<|Jm$XI6O*=`#@ zxe3pF`%lNeHsw?0(f9SdbDnHoQ(1BO;qx9f5-L>U%+3`b8~jw>8VwB5IYq`RbRB2EJ$KEMIRN2z&-mL<{Vths?To;M;-uF>YRcE`G9`66^-L~B zG@cj>mk}B=6=ri$Uv;#{GkSKX7$M*9sGB2R$fA%u45aGB$B3&l-rAcMY1e0w_a}`t z82c|teM~glcZ`S1Re40iYd!d|v6i_5G|^P_c}yoxIRf3@Q~LItx?SfSA&%O-J6^?5{x>j3|y#vZ!X>_aGNBlidO8qK9U}H zc-Cs!S=x&l;lr@VXQ6=)Q`{ZF)8u1CTbQrJM}9MLI>J-drEys(wkgJvd?Q=uVfc@W zot-`mEedT9%|!I}3pW(Wx7ggZb2Avwc+imF*P;Mz(1FoF6!$Ho}PO0_75r| zMyOFEI$??T?t|2YAMeYLZ_JgG7h)!IKf78T5n%f!9f`UxCvLpn ze?qbEB#Y|X{Snr;uFEro`W?+wKloaUafL%m7CORyyHR&bStH)S^^i9-slzDMlQ<_s zAkoIoyH;FFab^>foi+UEv;Fi#b#>TB{l%v>PB)7!)kr!8h+7q1Zwox4Kgotz-`(&Z zD6&2@;@#_ZLnJnao_jNFL?VlIcgQtV)I%VDb2U?PiIuNHmGgc=_X8VQa{psjuI%UE zSha1eTWU7BJYO;9I`j$kmt$hcx)~%a+m~czq247d*Y}$Q(&ff$FLNuc-NN>7JAL~2 z=ayOZ`e7^8!HGL@+KBEDjhKX#H@UcD!O+TR%Han`$jB&C6ZR z&n|zm_8}Sb;PIVP$BH74PSeb?GPHfnaRO(X;5mn%u%a+=BK90!s=`mr_=XOiP}nnSY4fS(}RzVuU@m3ns&MI&*5Abt%|#d`yU^DdEVGk-rOY0d1JLnI$*r5_uK8z z1{=a@fpuk!(xC(7jI`E_?(qy)yzru- zzngHvh(WBm{5#7*-uq#&2RWe+fB0INQ}YwDY$)%T`{Ql;-*vfR>^ZU=HraS(f|NMU zTNWR1;*CrR%Pb^izEg*}U(DKlu^Ba>o-BkGbGVq{_2b}~ZKZU2G5c`cP{7HRr~bJ` z{%7Payp=!r3X&qHWk-l(5-Z+|`IpqA;u++ivTFfJ)WG5L_vtyl8C339_TnM%jL;{_ z*~{^yYaiA5{4WuYU-T)lA$b(aGr|0o9llMmn#njHiTX|XP<@5Tx{JW{C#U8nl_!BnhqC}`ENh$B1BfGmd zPlvSNQMsm=*gUiJJe=Ys*ZMq5QT+Gpv@DH$?!e1$ag?m}yqBv@akM&D#pa6@O)#6I zQ{mhQelmSI@ANoJZU2c~Rz>+yUUl&={_k;3W-{tNXpP>h>Ru8Wk%}!7aE)-2mIz^u zD0hw6pcci%%Q3kv=qDO+?HWnLE$l>%gl&y=_^D)m%`^#3!{e6-+M3<98bn*oOdqM} z8=BcN2U6WNNmZJPL9N-tt=*=Yx!aoLAgPoI%_0eG0a~j>TWf~5t;n{mM^>veNUPjL zG2KzC(!DJwQLB2mtu(i-a$D<*UjZu2+i^mxPO<%{nHI&QJl(^NV_HdK!c@r zTS;M+iNA($L(778b$4qUy2BSDQ&+XWXlv0pb$V_vmnrJ>m9%!7=nS-nwY%#KO|=Xo<&=~P>6@aSa;1<_qV(5dXVl$qV8s{?pBrVcDwGMVcnet z-Q8_nh)qwF$hgve`~jut5SF zB(OmO8zitn0vjZ-K>`~jut5SFB(OmO8zitn0vjZ-K>`~jut5SFB(OmO8zitn0vjZ- zK>`~jut5SFB(OmO8zitn0vjZ-K>{13|CcvNQhOaFNhztnQb>PwkmS$Gp4lrQ{XK>B zZzD)rdl4j!|4=~scljgz+va~2kPPmcnVH@F=K|8hd-wmF5v2cEKr(yk^nc}#T+AI^ z!X1P6B1mtaManom-RmGZJ2~xjkoF=-63$Nly&a@r@36fNl8=wiUJB{22$EMo&|U=T z9|a`e;4r`7h=12X`sWBzL3CbNOkD8W_c8?w`Q*Q~j}i-u|H>cjwU73~NAF9@_u5Bg@8AFH`J*1nmwzrG{k!~8 zb5m1yOaET}sJgA=uL9D4XdivrYaeycK9zm`TmGoNtEcTt&tCp$uYEMoGtksK@XrOL zzw$?e|3dy~ZeroT${)@CEr0Z7Vg9fD(fr@@N1cmHdj+JgOUwU=AZ@O!{Ud_(&-tUT zYrpm*jgiQ_;Tj;d9H#Lg<7q3R6MF&8K8H(>LCs}({$T&46ZFH078c&PD?Xn~ zYOt`%ct_!2dsJwJihP#X8FgFq0%f$Vum*~hD5{xxA|Y{pn|>`5IW{1c*MFasXSp=& z8gMLn?GRgXbp-3356|O`N1oMFS31wFY;agB7F`{((dv6dTB_N`yw3j+183+|Tx&!u zBuTULhn@|Q?OJqN+!*u54kiT_kZ#`|SZd^djuxbhyzA0dBw_p{OA(oeaytPe#!~cjgK}@H2h>p0pX$8uNhQ283Uhxx`Eqt_YbZ5v^*T${~ar^uFY}P!p z%fyK0^%EUOS^3uKm)!2;ebF1bampoouY(jwDt>fK!oPF&L-&$LML9N!uk*~m32eVY zN&NNZHr;>!<~Dbkzuw&TabL@Nr+4SvOknZS?rx_;N(N=}gh3GLaUp~5`ZCk|y2(dZ zx3vyJN7a?-%s9(Km6%%enUArSi%bcm+fM5Gf@ zejknF+G#vZ{hT~b!CW2Ams=8NKEy$fn7tyKQeNWnGS7X#;TWW!buBe3ktaOJ18sR# z@?lVcoRsZsgvQhxC}=+Y5XavF+h6J4>R$gQuw6~~M_{`qEbi}t?N&49@c%ThZ3aW% zlbVmM!8IPYaB1f1DblD2dMA^&FVOga1^?IU35xeww6i-z1fSufFidJ!4i2;PD{l~G z`UW)SO})7@XI`J}HaOYuu+K@)hvgfy@@~_$jV~z#4u%sb{rU$Z(vM30lglT%&wWyE zS28T@Lk?(sKGgB%mSa(;A|;(R=)9UH$QU5sr!S}-bImbn^YE~2)~6W#)r>Grtd&gp zg`WnQ2RCU^I+LP&R_bFWY(8HL?u;?_)vjiRbct<tls(<4y#-@>nTN5o~9jdUVd|7or~k9>_t9z7*^fKlf_Kd8*d=}W`A=d$r^gi z9j_N+HF=4D-o6Qc&4and#aVDt>@r(79piWV*%4P~Pvjj_hP$~DTnaeYezCJib|n}; zFU{ldgt9NYqbVxbor!;L*#{dW{C*?&N%$kagkd9LN?~E6#Ios|7Y4rjm1(L{Jf8zy zao+5g#ndEeumk}Qvt98;F<)*!J&amMivYpC)=6hO%0;XWdyI$C#qiMUqv|@`t~5v( z?|H?_kH8$xQ;QiBW)$_3C^JTztIuWJBjG$CU+Wg%vzhZOc}S4v}YIV+wosNkTr ztn(;#WPiQ)er;LA*-d5giwSDkK1O9;I#;ypr*i(o?tQlX!WjN;57Ks7$hi@z(8E~} zQ}e@>XZ1?n189B0xqJD%Cstsl^?UuWutv-}9d@1qWAq{HmksemV*Gefg$HVRZgeb( zd|$lDbecvYg@tOba0&V{d%xXK#$G}QGuzRS7uIW8$0c@4d*Fxhr)C?5MmUe zQ7QvW`=9TX2>yh~hwda5>SL?u*6DB0W6Y5A6r$kf!=~e|Ld-AvE%sk-zQodG>aBXS zfi&6g#XgtVYb48X#^{$ftHD)_pQi{nubM+ZsSv|6RY$}#%5{l;z6ATbP3-*kmlQc` zVOEp`?Bsh-L4#D7T9r3$?d9J)NLUZ$xvWp@J$c;A{S+0Pdb66OBO}({XB=zxf3SC7 zK~2VwpYIch5E4j&1?h&O0#X8kQZ=Y3RY6e!L85>PqDB;@sWg!iAQUOmLg)dcN-qJV zcSPwJs#J*x2#93){dad}_neuXGiPS+zTcb7WahcZMKVvGdCljY&!NhwLtc)V642$p zaJiwE-N=mn^@{Ohxzu{ntqumPbk6ayF&-TX^eNju2_koB zKGcuwhT)gUzNy}dJM~%xu1WS%?}0Ooxzu~uwJ7Y@>=2jf>{@t^Ud$sV9j=9exq3RO z8N=9%jI79P@;z)ySgz}0JOZ9+YI9IA7Z^lgr`!X(AOQB&C9X(Fno zhciYOH7$jjh6htUp`G}U@4Bej2O&#k>_lS74?OBClV{04z>UbgG#I+;61?lev(*yP zxp%o)=#RM|j;&DcAu?)Ry`3!Nz(4!MDh?t(}*REW#o?Ho# z*aU2Bq0r+Kb)foPg%bfV{nT&|c*wK#$}f<}ld zbB(KrjjJk;s~P$~?I6)8h(ackIuUkXTH0RE>-;*3zKMk4AlxiE1cry~$3kJo5N-^V z9S`BcLZQYGUJR6tk;s%zTGNB@VxjA5Nz3I)|5_7aOvoQS3L6%JfFwa76!x|xC=;?I z4dGr$g5@Xv(o5zGOj>V+%w;99At;+$Npk{J(e0$)u2iWHRGA8@>@fBJy@P~eBKs+U zLuz7T=3dGNgo>n)GxHEQ7Q&vNG*b@Q+h2m>At-#(eniq${WOdl1w&6X&`-Oj4q?Yr zpje2xemYYx-K;H%EkBKbps+F1*ok{rrL70-eTt;#7RlU1$~89%M@71+deZt(276D& z{tqesA2I_gGD)oA%#iI&sRalMgY09ZoD~$)9!>~MM(oc|{2L4T9SfldLaFMBY5%o- zlun~%?rk42|FeCx_mzShXQv`)sJ-9HVMxI?t-3AyV<4m&kzJ^tT_Qs}u1;%l%TA`{ zF!}5!a`tItV;pkV)swPlRCEvxrIE;U zqJV>*SJ4K!wvaVGTp;6+L8fJkY7|PkQ^U8pCiOpJ!m~JhKJH)4KM<6H&?v%GP?cHk zMXK&aM}-QGjuah76b>PZ&uA0}FF>R!Nirj6M(hoKeBh?yl7uw!{#8(~SrqKj@}aki zjNPdSA?WspPn&^7=E$Nzi-Jsx0^#<83+=gn1h!!d4pSoZp+;$dTcLDZ@tMM6@mQh2 zU&RW7Y)WpQPA*daekk%A`J_fG!8x#%5!lWdl#U2;??Pb1`dqvDoV?63a%DNrt#~T1 zwDH%a!h$R*^~B?DP|FE)4F1!#MTpY}YTgLdj{uiZFZ=6|huMa3=I7f#tdORaRc*+W`M;$mp8O^dc6ojJG%|$`i!A<2^Qip?i}@og+18MyZL&S~MH!ciewX9!(T>pUBYIK}tKo(|pQN z1UQ3Svr4G*!}HwmVCN)2?L7IX32dCiw+CB3opgtoJJw9o+0gl%t4!nzJVuDo=x@T~ zDa3hGGif!yf|p!F8==l-A77+ui1I=2j-_37W#iyKRpo<@}WpdYr?KG4KXH5itJ|`%5Ubxwb~IOp$v3rPxU{K zE*0T@^FdthL?|bwVHMNKAXU3Fnp%50-0>Ff`5my}j+(FzS;eji&90gF-e$|z)%TNbd-G1?DxpLC6~wxuu{j6vgtdgeyVD1I^|sZsdLgKz*PupKr2m{&{{^f5i?8|x z9>H^%$h$-Rm;dz}i+sJhw`*kbnZCDcl#J+hry6%O$_TRcW>+bY`qDJN-R6ZF8UQ$u?ic#S!B@hC^0IvGUc?oec0O_N9s zE519{1C!Q4J?L21>^}H|CDa1@RUwo!EGIY=5j@x$Jmf7`Du)=JhSbaJ*9nknqE9ra zRE%u|Q|Gis&UPSDo%cgT8Ej`5u-god5Z;PTs#t#K@e1gWBUDj%ABym;A-6egryDC= z%`~Dp;Ly%;!>*M9=k5$a zboTCKH!=EaB0N5O$!(XyWyw3EUF8wWsdA+`wt(K3O-&*h5arKOQsz zIxEB$SKYnK!f;1e4pk)&J6UlMUQNrowb3B#e55Kf{7^Vg&w5qcZ>~l=2<*hpR}*Ht z34x7|IR2hz#^WbdjM<)OggN;ddSjHzM??>4B`L_ZujUW&;W5lHYOUqa?|Ft#_000f zj9txA$M{m$?$V(!#*7t)Mu3h94a1dwcv#W>#|9EDF_9-S^gdS04p-Nb&;qwH0*=sL z1B@P#$`aDy&O z48Wera-TK$t?yYw<)Z3ORiAkH}%FR&LcK(sSwxU}(SJq>{7rm+7_PA19 z-o0H@oB2`UZ~fVw&sX*rziBsJ`CVIEVpY4-6`E3Kz0-I0U;kO&X4cMN=-;8*e@ZOD ze_vVu7)N#oR(|_2;iE}2xgNVp2$*3P)sDF2rj=kGnwdI7J;p@V)y!D@%p5ti{v!kikSwRCEk4DR#S7yg5bH~G{ zaqpu_wMBK_^vhdvr=AjE;CEjy^OlL7JLn{L*xFZn8M#3AvlCc7+&s>x`F_{E zbwkdp{6o_-m|Ctsi*P@sy{hC`Td*x3GPbXCA7g~&2llOt29TK(Zalnr6(Js1aa`29k7%K=?! zI45U0oQkI6drel_xD^6U-fT^TpNVmN_j3wLdaA_;E-q;36#Il`7O!r0^%A{yrXDj&F z6Vw-omvQAbLFO;HC>N)m)9(BNyUw@HnTaGj*wc(skZV*0?yTM;bbtM0>d|M`xak_4 zveM0Pi*smyZKT%oYx;6y#cflDlab9U;szX9F&n9goJSutzCTX><1~EL(Bt>lm)5V#B@d)>Wi2XRsTI$sAK`i$4Ea)IS}`H9kQo@F zb0AzT_X_D4Km2^eDRFcLJkx+fH}WxtncCv1Ng-vSL@(1;T710HCJ4;?P2^OW20PLz zGVNT}8S(p-ckeg0_zGuWio+CUyck_ z+f~DI<7_HA>~jvyT5#x3z6(Q=n;!_@8DbF+!UbAwCFKsd9loCV+$TGW>SZ^jo2<)! zW-$|nlWh>b=*=nXU`DrWvKjv6;e47y6yp(X-|A<1*9%!M?|XRY&ai%;GATY+YUbIf zo7oMmq0FYE4hFXiHk|4Pdh?!aYzwhETrMi7n~3c;zzrm?9sRBKShd&n0(=Ai9$9=G z7E)lYbPn@Yi!7bcT0)fExiI8f1+9mX{FV)XZe0LvzRcSa)SUfnKsFNh0%Ya;_#!Ax-e6YRF{iXwx@>4;)gCiNJNGFatv_J+~ge#UK5vJZ+;1r#E>rdrBzGl zCf?4VXLcPpy54c$ywmN*_oXkg&G7+TN?cgK4QZILN-IZ{jhC2w_{Zy`qL=jcdq;G^ zY@Z~w?lW8aX7_dma+vZEHX10%YQ}9qT;FrScuqv{C~t_1VP!83E+p3xUmUm9d1!Cs zZc(;$;Kbd6KpU9@HwT+eNftE-4{n|_AAD|DQmJBKNBlcH;A<;%&IcL#->}Gkp zilq+Td*sLJjfy(CX$J)-A9X>JMj>&)1JI~88p5=d$ZQwG4IvCzt#}Wy&a@eT(AGQ6JQ5E*23-)eg3n9)SXV^N+-T$ zFJ;8z73;ZG25#spNrz;f``q)F_laYZnO(o7dAs}U$y@#EdTExAI(s!j z+{n|S5iZ4k!cTjH)hAP7%kQLCH?2H5`ZI&NWVB5l_4tgR7BjwmL3foN>!8zqiF16(dtSVs+~NakF;&ev`d_9Ia; z)Y~F!(B)@D;$M$Pj(NT1(rQ=ttM$o~buOBa+_+MIT7I~<9CpXP0FpsX$v5WGEqZtA zP(}YI8oXE^JLDCX({wfa){KlAtLogRFfW~ux#`xgI*Q+DbdmS>%rD8Dwy{3isx5c) zn2*$uepkuTv>ee@YGV5CWO-kj48_;e*mBA=cvVut%|uA^Ti1)uN8{rgF-8-|$|;{@ z-9-J~UvTfzjM1SVD?;=9a8PCE>R?+)M%5TRxR5g48$Nr%?^R0!?}!B<*H6X&Sa0Wb zo$>C*`6WXU^rMj-_{eCJfmHUWaic3w#hSwcAJOC6U{Dz7|Z=E1pNU%cSVX<&vuV zA(dx4sjE!VzfW?7J^TtA@>$qEDY2ujs@RSx|A1`rl5zRov-_LgY1U5J78Pl$EooL2 z{?jup?3@YvZr(b0|ztZ8>&)^4Jr$j0J%V1qk=E$;{^# znKlj?TH7?)$m5(I-0(=e%4i;Iw+}lfNTXsCk0^4HWDbg($~Zwt@5F=IafeCu0&zp7 zmhQsu!=;RpWh#QQ1m@9Brjm0nfV{x`Cm2?>!85J5D9m^9jJ?%Vi?i z@R=1y(ou$RR;ul^@F5TnG*(O!`a?ZuS}=y{w7zwy3IEQy`c%sQw0*R6T$ zYKuF!;`GR+0NanxJ#<+?Rl20LJdb$YkmJUYJK-@RDxCXwqK%=)I+0RBDF5 zre4hFj7Uel4>@{KvaK;4dh}SmxFx-$V%_+Dz2uI=i932Jn)(jNwq(mT1!?_M5B*GA zT$-&uEwvz&q@UB##uL{@ThbpT>gRGB6hz8>T+=TaEzCa1^-kEJ#L*yDs=bKRUN)D9 z9Q1L0W>D49-s`4UzGRTCteLW@R4r^+?_p50X7G8Zt+)d&Q}DTd@6m#9`{#H=KQr7@ zU&9XBy-g&;E=PHKhvDABZ|9O>pJ8YtEV#$8vr4$LZ^ z(XgRmAVp(zr_-t=@@>PY(PWOH6Vr%ccsciAmy>MQSQX7L^XyFgntR8{#8Yr)U^4kAj zaRkb1pu7gkYoNRa%4?v!2Fh!oyavi^pu7gkYoNRa%4?v!2Fh!oyavi^pu7gkYoNRa z%4?v!2Fh!oyavi^pu7gkYoNRa%4?v!2Fh!oyavi^p_km8fk6TW2^b_`kj|yj7HGa~ z$(&lJby#g9+UG4C7IVu!UIgVeP+kM&HBepy;PU zs>+V4y3}g==jxiz)pgZ1b>C}-E9td+^azyKKzS|2An7$IuYvL!D6fI?8Yr)U@){_w zf$|zCuYvL!D6fI?8Yr)U@){_wf$|zCuYvL!D6fI?8Yr)U@){_wf$|zCuYvL!D6fI? z8Yr)U@){_wf$|zCuRU|V`|QQtXRgnlJv;OKxz%&GN6xMh&Y}7*o+-Y3{`94r>&ut^ zF9Rc8!0OTephtCewITI&dG(Ej^^ITazm_(%R5Z3WHa2!Nwlp@iwl+7nv^FKQwR~>x zXm4+?>gf8?F__xfUfw;ys<*o*ucxcGr@N}Rud(lI$Cq#Y{ryAzL+xJ& zH@~fw4tz@)9PAnzZ5kf^Iy|yCJU28l${3wsjE&EX&3_%A7#nAlGWO2*{)x%4$*J|p zjp^y>#p$0NGt)CO^P{tK^*?66{#e-k@vnMrp>_Vp_xYvyg&#AE%e_lWt4nKB%glx4 zpS#PuOFw^YtZZ+uY%DWZn9P;l)wRE?J3rUfx7PlQt*_0jum4=%Vy>_6y)nD7xxBft zwz)mEwFOp>!0HiLJ?fjU`{TBJQcDNM;^o$~t8I5SsEb!u9RaIHVD$*B9)Z;(uzCbm zkHG2?SUm!(M_}~`tR8{YBd~e|R*%5y5m-F}t4Cn<2&^7~)g!Qa1Xhp0>JeBy0;@-0 z^$4sUfz>0hdIVOF{x7c{;Z$+*N{aGwO7eRzN=iy{&V)6FY zty^xEFMODI`NFfu7oIuY1_r6Pgj!M-S^lZ0qPn+&URhcBf1W=A25D()dvtq~ z#bQAq5I74mWBL11KBdkFen7^uB|o|09Y#VwUbleS7{q_lVYHi?eI6OK2 zHT(J_QQ-&qH|d#N^*vZ9(XWC;A>V32@80tN{fBw&z$K>`K| z7$jhjfI$KV2^b_`kbpq~1_>A>V32@80tN{fBw&z$K>`K|>>vSy1a^>sK@wXVZ1`cg zk2XJ>8hK+|So2dV)n2Bh!{=DyhjHmIs@gCy-z;E|fI$KViOERk^qFUc`-o6)XCofa z^i?=4Rl|;T1A_z%5->=>AOV8}3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~40fPh#5->=> zAOV8}3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~40fPh#(nE{`K|7$jhjfI$KV2^b_`kbpq~1_>A>V32@80tN{fBw&z$K>`K|7$jhj zfI$KV2^b_`kbpq~1_>A>V32@8+OQG1n~J!x9YF|^a;f91AS*Y@V8?FolGNW`_QHu> z;|;`W0D}Y!5->>dRMz2DPa|{=>AOV8}3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~40fPh#5->=>AOV8}3=%L%z#svG z1Pl@|NWdV~eHLBoX`moJHC#A~fWHvFWc*mV^95U<`UqV|#*;ThrLD;s7$jhjfI(tC zwL7zH$t~zIQ841_O)ceAaPO$E9)JRa1Pl@|NWdTgg9Ho`Fi5~40fPh#5->=>AOV8} z3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~40fPh#5->=>AOV8}3=%L%z#svG1PoGPGtMcW z?VvDJ=-{$8+F^gNmZiKDkM*^R0tG*mCNWdTggA|nKJmJAFMFi5~40fPh#5->=>AOV8}3=%L%z#svG1Pl@|NWdTgg9Ho`Fi5~4 z0fPh#5->=>AOV8}3=%L%z#svG1Pl@|NWdTgg9Ho`Fi6bryB6k`D&BHF$u(vS+D`Gg z;2X~5{6>mDpX4V)nzTsJ07+nwfI$KV>D%2IWAr=@m3ad_gLygLbN9BLNKD4%d0>!$ zK>`K|7$jhjfI$KV2^b_`kbpq~1_>A>V32@80tN{fBw&z$K>`K|7$jhjfI$KV2^b_` zkbpq~1_>A>V32@80tN{fBw&z$LGp%QcyRvoW?iVY$5&^J_)6#27T~d&;MN!50R{;eBw&z$K>`K|7$jhj zfI$KV2^b_`kbpq~1_>A>V32@80tN{fBw&z$K>`K|7^MHp21!vBCoiw4sH7+_rzEeW zq@<>#tbSVclz144iyKyVeXL%GS^1k;-??+g`t@CRpSy2v+1T0G*gUYi=Wgd5 zbno4*`}QRJ0Go%89335F9mDLOJiqMp_@R^Yg=dd1JafAJ%=yl<7ypwUx!!&58umQ+ zk+W;GbA|-(LRyBzP?_50ayLsI{OED2a@gv1q1~JT_*)N zkV4)Cll_Ck6M_>ef{W6^sE*;0Z^Pf~Mg#{%ypM>8@QsYgd!I{=iVcqb5EB!X5}RuA zA?o#qxX2H2dnYoH5}TA#pHxGnBqpS0q^736OHU2W%A{mv->0Q#XXiNO=2YfZPv#D0 zeJuExpZB()Aikg|r>LZ;sOVL3VQO(nNpU%~q^zu@B(nU||3`ZCmHwr!t~R8;F0a0^ zu)eXhp{1g+wXw0Wqp_v2skNoKxxaNVp{=F5z4LQ>M|*pFYG-?WS5He<-$>Wj>8`2X z?(V#vuFjtBvfl2h-oDR$U)#TY?eFhz|2jDIb*TB<(B`+b(t&R&gM(c|qhE(d7Ki7C zM@AW=6O6I(nX&n=;}c`!j8ewl`QAS_Un&@ z-5>v|=N4M$e|(=`nxFqMv$*_aX>oOFZEBghxcqZ>dAIB5%F@qYV=K&!mF?}7jb-M_ z_OFfJ)wTZ)kY?7`f39ya*Vot9x5hTsXE!#NH#gQcw>LNcjBIU8ZEa0&{aM=D9^2kx zu~-lY1kQp?8UMbNPpR{PACR$Z$xm*0hmp{a*Datn2JxSC7;Py?X%5An4;0obOx26% zhlxiv7pApG<80dE^@`Fv<5Zt5jJ6hKbSL3`5F+};nY}5x5i(Y7#rEy4#wq#<>Q9b; z&A$FfRQQ3hsG37-eV~XzNzPEwgD*6z_LAI@QsPuwftSFxUl6furc4vii*UMEx zdx(*H$^S4&O0kRI=|0FKm#fNtP3gY!*$A#G|NWyU#USbRTEhC`U{S;C-0Di_*a34H z)=I)(_bV&oiYY4}U%%Se_}O3`5-M`$)!$#gDhFy4&$=b7wZ6ONIa}~KQFBT}8U3tZ zWsc#4xhOT^d;aKy9`A$qGAI0mU(6*t@bURhypxQ2Fc~0~E_KZx7MwX5glm$TBGnhn zg$60lW=@4@o-(uciW~ALgkIpYpAO6Z`tC!ps`&hLgz?3I$nXrVR!XGVy{t46=W1kv z6qR_1;;C+4J`?*Oy>&vPj~TA7!0_Od^jz_GYI~u)C2>Wo*#DOg<~&5^0mW-q?SjNF z+w0f7?$PGwQpjiipky;l-2xSvWWD=o&)Q&J=(F6s3z*a>#6qUmDsQ(DY4t@9Ijo5# zvzU|JXk(w2PT$Y-xWFC};T+!;X(f4eBkPwckOr&}8JH!NB9}m6{#Y+mEGDZ0uc{ z8%?mK1SMYK(9@aZ*O#w#0plzp}l`bKyS> zd)Q@m-)ON*lT$dOf95Ho*g17$f48Lm`J+o3tGmX9UVPUc6@7a?kT6?k^^PQ6*DuQA zexZ5g?<#8eC*SDWmt)qNrDLSiyOQIs?gl~1lA*5(`+xb%s1`ilw75M&xbpDPSD4lE z=6vQN+;w_f|C(Iqaiq{DrYBvq{`~wKlwI^#S~j3-zO;YEv!WcGAk=j# zGdVg#b*1*^lUMKRkZ%yOc|r2UbwyX|tCp)L6U#>Xt@C!b(f1TQl(PljsJXP&9%$X{ z^66Tb3o2S+vAUinrO{{P%t+Z!3fQk~GC4~cW*(dD7#x8d*VSggF}C8Bs5ob(!#o1wLA`kZtl^J;QtJbxI;liSur{sAdZP0?{aTyNG7LRw4} z-%lo`N{%snbiI9UYeG}7r(0VoF}=5{DIAI84aKls{lFS>tmciQMMv81z{55#ANi-N zuJyJcqO9X6Cp7(pQm12dfHJ?x9VoY*;$ln9%<7a7b;d=aICU-`8RZq$-bzs(7}8rL`0!=Sy*=G;rZD*QzzbtvuJ3SdR`b=Z zFG-aB>~e@3pYM+=J^mDsSU%ma)veuuH!m3A7}Dz%@ASL*ys%4?p4v0)vPKo%7pOjP zL)0+p>hpx{qob;s-BCBz(#ZN~d*$-8zs)j^Z1+SO%}5H_>rPto_>Se>o`et7t!0Mv zNo`4;yc)?jC&Fy0$9jB9v>`!ISDwDp=>L}GT9zU>-;;jWeDeBJf1B*xQZES=xucqP5M$GQK##WC;>C*y|(&N$^V-zTaV&a%|2HAZi~NEx0-yX>(9U*9$S5 zZv^d>;8)ev=JGcV_Ww!XRC($rnyDD!I_Je6<Y`nAad5%Rd=jOQe~15}uGfh^efgUY z?(kD|>xB8+_gg=}A0%9R%Q5VLbERvuySZ@kbj1k`u0Ai>OuPK(==p1RzJ5Yfs`Q*_ zVfvljJhcD1>Nz0~C|cLoi|dZ656(=azcK&iI zF-oViRfIyUdttN_=_=KLmge8*YA*ivxULbOTMtAG=XKfMp8^l#uR~3W?UVASA3lZg z5}&;jaK(&mpJhJkpeh88e?aHGdihgS&cTY8OXo3=jm$F$UXH=fK8FoeVW+pX^IuKZ zmmS!rEyy_ZUbVYi_^8K#;>CgT7eo{Y)bX2ku1GBZyw0i8lbuZtHT-o*^c~zM zdP^I95hezI)WdOhvko~WZzQS_<83+}hI%RdH_n)stTD*&zUBM=Xf7-DMf^KOb_LuE zjVrk4=T{U%&2s*zzoJ7volS;X3_>tE7%z$2bk3tekbM$8^vXcO;L9b*_kSVkp}PqM zH_%lKht%jZs5=~s^c2zU2hAtku<%!dHis{@T;ysd_*}T&m_0M-&ASl)%|ey^l*PIa z(#!^nOB&2QS)FO)Se!Po+eV$$JS7?`W4lbSJ%y~xOl z%qHK%riA6XF2*C^$u=^LG9a@_6WNXvIX!;gjv`BaB>KqVVFUEj3t17~P4=CZ@$~^;hA8(8{mC0%XnA7x^tbt6qzUAl|F`AC88L3hgB?!Sjr<^ za{Zf^>)dlxgeuP$W7Iqm^{sB70`_sCHqTt7$TUv=2Qk2rYC2PY({WXW2H$5)L{Sgk z+_|Cn!e2|;)LGb8WSWU$Kv2^RQkN>~2M*P_N%}TNT49o6;HW8V@H7!s)595~i<*`~ zO~Zq!p3qKw$ah`T?1PY{GIk;{D;^AEcC}* z5XV+1_YfJiMaBq(?N)i>PMsnVwE5Z?+)@GIHc!L5 zDBO1^!lh%myRbacL*Z?V@OBoCuLg_gBXg_GbK4YfpPT1SVj|T9A}?ieUlQOus>i1# z9ns2+#7pxjbG^T(9U&tC_rvmC)8oIr^`0OQt)w{t zs_1soZ&#|+2dYd3Rd$#vzfHvnrYNbWC|jhQa!XPDkb+_&`ze7#YGPvMUdjiAilmS; z^AI=|!k(WrQx4fGPlDnhD16d>MAB9LG>jVsLr*l&PrIfLVaHRTSctiPI#Vy*tSyNx zKaGH(urbrviF;S2tq1IVilpZj$=pQBH8%=JMY^ea()v&adr!vx4=Mg1G6O3zNvz?_ zknK#V1qcd*>|>;y6%^ARP6$j!?9Wg98w>dz3!w-?sp^Sof>3TUB%Mafq(R_J2!aCH z`%1x$vr`c?)ZTC9Fr;9cR^68UF%VLX$S%~+E|H-fSEseOWhc{eaw>9K^mB@65XuKy z_d*W&L+)@z?&xst_yUBQ&u{!9tC2U=CWSwyC#y4%MwQ7B4y0wNryX~otqMYm)w3}W zXb~ch*Ep|OFnfC&!o$o%VDi~d%l*pV24|UVundl4M5CjMy9e_`prYB?)Qd{i~o}vnbf5;^x-i5%1^|^NQIeD37WRnQ zpq3Np82qPeix8&|)VvX@9|10-UiQ}^53>#7%+I%fSRqX-$;&R2MzGgH%6@O{+r{it zwBRVjB^AU`V+fd5NM(UWrKCH=i-ERgR?rye-$RI2)`^sNyiliY-EK!s}_ZwFtDl5^(Pz#MDj6?R-#VUmb z`UyeKT_XGOz^XQ6%KYC_6Hk5<2)n#KeHxj=n zLV7Ff<%FS!8R*WDnlq!+L}V?Rjr2PX6R0RCKT+6yB12;bDeVAH^C?FW;0$ujDxuB~ z&vV0ros$5y^W>iggTpje3eqw@)zmvRnCiPnPx#?PHjT6zo_g_sdy|pl-Odk)beGKdfJo!q%bsw z@mZn@DulyK_fT;RG;6VbH@{&OpK_XkE`G?C$z2z=(@-LuH4*svoUF(+gL^t3bGtXv z<`*)D09WzoXdbP5YTUqK++aE_uJEF!b2oeUKrFlL&omh;qm5 zYaw-@J-If?++O)zoOrgLp8dN-h!~^u_EU&ZelsVo)s6@WWuQZQs{eU(sR-|z58`qs zLOC%FtC&s(soI^<)Y{YGj<;~n?|=n&)P!}&Dt1k1cFn~1He0r?=2xo-L;a!b%{z^& zgbwjn5bKV{<{ZQm))M;eP9N;m+g8u&g`kdJgBn$l{&QOW7p(d(zUmiv1kYh2?+*1} z{?~6T^7U#kpP$KRy6^$(WJI?+)wrWkMv$#HyGnu7m!|pcHZRoJuzXC2O(nkJ)ZcnE znR^$PJ(i8Y8@JhuKp%=gr!xnBxPRkipedSlhdk;gD(fUX*qvTc=PSSF3qd~#L-|LW ze+2dITcXaNK=P5Pp*;<}#vHqNlp{}_45IOId-cA8A!UaeUWSm=Lid7ud!Y!F%4n}# z!XDP9C&W`JBAizoF?atB*vXAXRu8#jYNCwF6g(gm#F{a8C^D|5Nu-7q-yQ3LN$a2< zbgXN3AN;`*YJvT#5Xu>r6C8>N9&8OB@|G)=Lkv$t>gDz81V}Z}CmK{L#x{bfb6O*3 zI}oYP`yrwXwlfUaZ3agOZ$&3nEWh)31$4*}swlhz`tTV)-kx@8oO}(vF-qklqKCAS6lB|1^N0BG80HwY)^h0gJj17YW_e`Bu4buYe5q@9 z=};JB#tK6tK*xlJ;YvR|tmyt@1BsTH$P*cQAFE}Dt7}PUf!i1XM`*7BMvq8k33F#? zEVXn}okWJ?L`V1j?=;8{WK}^MewNA%|AcAt9K;Pt*33nW*|IdX*nCg;#rnTT9v6?<&#6OEq*JK7vYp9;f z)ayai-pUTim4;(0GqTnj_ugzgU}5A}GDH3iE9*}xE-VghSKN3*h010r4{z9=$YXOX z3=jPCN_a;5O*wA+j})Tw4y(Z?X@m5AGbCx_A*;d8bM^%~Wq%LVEp*EYy(u^RC*evB zioWJ<{p)S_*1H<&ZOfFzq)l?=W+-br|Hxlk(XE^->#^U9-qdb;Tq!Q^-ma<5{HXA^ z{_M`@EBlMzw41K{uB|Pxs@>@dO{ufq={x(c|157aYiBU@?@;YOC6?g7udIKJBfA4D zzx|l-(WIGNk6k4M%&?1UM_h8#N-z)2Or4<~Vx;1=P){pt8*A{CoW%uDZWa_4W zteSHmtXxb0lgNw8Tx~Xql6~X%g6bRFd#o$idPm1x-znp3P-rAaW1AwmG05ue#hwaf zZyASG$&Yp;-a}ohW(fI_vC^UBl^7cnq;cb@y@n z!5#jTsb-;ojkP~5t9Btm5)E{z_Y3zEB&Dy43YDm|1!qT7ud{*%HXeLXyy=&>}MyidboL-$E#7nV)Om3 zd+UarSN(C__oE84jb1Gh3wa%lJej{PC9=F56uf6o`BP8j6I6e4eDeD{Q#P?Ggd+#} zJA?}Ni4RhWNcmqrN*0U9EU~fu(depxPYRJ`vL;8SQnmWSe<&Nm)O#=vvd1oi7w$x?K~}CxwdM6YZ&DzBex`TXc=ab@N(w< zN>^yMnWQWYZ%xN6HCLRti~&F!3^TRGQGEAQTKZ1EM&5=Z1mEPME-wn%Qg(_w{Vp47%hMI)X1gRY{Gvv9IfmN8A@ zfqJE%f=tX&*O~@dwUGX8sx;(HlaxBSj_=l^GoK8zt?BHCJ&5(_?ZXnG2ejm4@mfm! z6Q36}A=0#Gk`K<1&i9$|y-YtN4O=yYkgC`GIm#|aRNcOEG)nKJoOeqNE}DWkA09H( z$R~_hg`1rUm3VVc3$N=HDKF#rCaMzhIY{=%+$5>zcX81auPJvvyXl)KTJ?E#RFO*P zlWyCk-i)m zs^P%ftCJhbYD)+P>A#@~#)MUf%cc(4ArZK4nsTuGGx4 zQ8%+2T0@ylM;#1q7i>7y4fN(c+1M6hb+}wqPB#(TZGam{UOW0*>#=ID>jn4*{ynnz zI4q>VTZRX4SspF8?0Urm6%u^PFwx@Jlxm{b6)ZnB9KW#M%22!a{;g$#PSk)7 z+43p&mJqxZAD+P2lE7e*dLEXm#@MGceb4g!YGyHEKIH}hW-@J(`wFA~j^*6Rb3>Wn zhQ$i!=EUJgC3Rt@9H}lBsccUTlf@5Re2|C=`Q;ekoVm$67Q7}dzux>3CW#?k@Jp+f z&`rFZLC@?uaCE)nzImtHjqgieWSipyxRkiCejCy-VU<>nC>t*^`S6d|M@28`?e~u8 zg4sSvXx(SF_Ra3?4CFB7A#5~IkkyRafVjTrg7KV);8ETX7sJY48eB-OBfdCptMky_ z$laoB>A;D*1%Wm)2W}2FosukS5FXq-XFmAcu%uGOz>fHLc)-_IQfVGRymHQ>|Jcp) zb`?tDb=vjpmt%i# ze={5?W2QZM^)hIDefDOpy<^_1e}AnZoMv?PQ(UkAxD#LpKGwqS5q(5<2=MN75?4C$ zEqf^=9tuk;!Ur9P7^W5j2za&5HyWZ9@gc|m5{eFuN3CL!%rfQQD!>5#LqL*~a zqFnVax7=#Mke15ywDhmyHV$QsvQm}vhacT+^Hxp33LL%i;^{0w(?<6Gki0`@?+Zp# z%(;skQYX?CZqRR@$(HSIh)T}cxPAPf(tW=tp}bEVo6PL`EzR5AXHVYhSJz9keAL;i z5#mOk7L9Nz_7i^E8>~K=3R`|BwYq8L$B@~FpW{Ir=0KhfaD`q&|_u$-o=*|%n7)L2#LK81Pdgv?F1e$`R@Mx%?ozh{0)=CqCV(N=A_ zqsM%thV;8imZs&1u2K`zcPGpH(qt&Up2n6_ropR{3T`Gsn%}x!bUqp%--t1qI95*i zBE7_!3x2O!8hA%62)TYL{>OSd zuj`C=H_k5^il85j?7&Axn+&9~kH%bHC68Trl$lAkA}Qr<_&(ZwNq^})g1rzLBGRbR z#{>5kcxrN0EnKPjV72o~YRD48Nnh%?j8b{!5i<|Y{rchsXD(j|T#Y&X<%iZyw;{1_ zYyqb>w&Zvv58aHbZ*JbGw0ZQ(CY4qF*QHb?-ptdk;JeoM`#=BCkJrvFYYkS&wy2ms zWHw;8vAU+EVZ5R%&T8A~`Zr=8%u89yDXwYOc%9CEJde2%SAhTWx{R)*OfKY?E9~J{*pSb{_DP8ybydZ7O!)_7lb4Lk_nzI~^iH#O%C@LTTWv|R zs_>u2c{P&L&hAeiTI7Z*9<#lAY=s?>I$0Zkb)Q3FdTPtDiy7|rIB3GF; znYCW?{!n(ug_d}WvV_tP$S{P9a~`}T{tyWdIv7EX+aKP^lQLUp=Fa~tM${lvyfLhh z=QHLZAxOPa%%{E3R|)ICtj_i$>KC@ickf}a+tDn?PA(q$)CTcbD)oZK19{ov#mNO_ zGBH`);^ii7%jbKJ^M{`>J7cDQjQLP_LuX0T!DCD_5_m`EmowQ9__||fSh@blTv9Fx zN0Lt1N#4?oh_Ec_*py^GeGW;g>yr(6G2R=K*lQA3kvMqvk$#2w?TWp>F7iwj3VJM5 zD~wF8eI#P9(}^%s6|JY5#pbuqeQQLW!3l61(-a7WQxp3rr?t1;`u<$#cW0LQFs~JI zyUf``n-bQn9ll=fk*Xc}p}b>Ao4~9S?NJ`FsvWzKvG>ydnVC*}PJXb8PGWa{oV`wR ziB7!aK;p1Ydy-Dds!m3YcIt#q=J5XXzdG3}y0%P%nP!8>#B_5!bPI0da&PMvy``;vZM?at?Di~>XtI=RmMq`t?O1VR26eF1o7)Vx7SM&9jXo=s$VK+n(@Ow(rX?b z8gtWWSk)^&p_08R+rqEk>7m!UuGjr{ux6NEyt2D<@6m$)PiY zsJ(Rius(@-WMox;TtBJ@9YN9`Y33gpU)8U;WH95QJ7sS$=rJ<&^FsH8{N>pC> zJ7WGkE}(0{;9ZIS!!-l4zF{fn=tIfTSItF%1*bly8kXwQhCdvAx6ZX>Mju+w#kOs@ z#%%PR-{^;=(N7hlb$z1^GoxSjM!!9bHvioqz1UJ=T(LJ?6)||gK#vIjK{L=H6hv~* zS|FWNzDUsC$xThmfu?1pq2;7u;GtzWDk>@|DS2ENHiNlHpmTIPf_ZciNjlN;?F z{}e}x^8e0_)Ya5ZpHlzt(UJZhIx;pe()*v>k;&C-{{ubxr#rfG!^+CS@;|$y|0Ozd zbh!UNyCbVdkF6fz|AQX6?V+Psm#95)B=f|1PaNT&JlR7>|8K>SpP%2JINIYz!GVDx zLBan-M`6Lyd+5k7EaG48=zkDL6)~m%868E&C&nfu{bz9$mYlwajyjT?_S{i<^Rw}|D;DX)s1`lD6OVu47)Pbj(X?*ogU5p7wFN-hp+#4^l14X^k{5#^`G=;`QPZ#o;&&%I$B%%_Ahkw zXZ`o9jrIRbkN)M3{w0nUwl@DIjy{_G*TvB^`e4a_Q5@;H|3e(v{!1KHyl$`?{;!Io z-*XLaOfO{q7vhNdfm5shM$vySjtpHl{yT9L^M5UlIMe^XilZB( zs2)M}2&zX=J%Z{HRF48KrB^cX7Fg~le$l7XCm6YlP|-e^36M@6W0&?8VvkQnQ~02I z1l1#`9wF522(vnZ7DBPBBQ)&@8xBDe5Oyq7kDz)4)g!1LLG=i#M^HV2>Je0rpn3$= zBd8uh^$4m*P(6a`5mb+$dIZ%Ys2)M}=>Kr_2n^Cc!bf0`{-b~d2I>E~dISdPf2(=~ z28q2|{y_^@pNL(rz_k6(-UEImV$$~vW1_|RPiusAd{1C#p&jkG>V#w;O9~xMR2XMc7{8VEkIIlS%URnTtZe!@n#f@=NMMk_Ab~*wg9HW%3=$Y5 zFi2pKz#xG^0)qqw2@Db#Brr%|kiZ~;LHa*zkYITYme*i;4VKqnc@37=V0jIe*I;=K zme*i;4VKqnc@37=V0jIe*I;=Kme*i;4VKqnc@37=V0jIe*I;=Kme*i;4VKqnc@37= zV0jIe*I;=Kme*i;4VKqndCl{Zx5qVaPY3S+FK;hvAHNKrRH9F&yRSbiufg(KPZ;-c z+lBth?7k?WGkdd-ReRzHme(FloLnONVb6)a^*?j?9?6&UZo%6?{>Mw1wp?8PZ-YeQ z@4X8V%@e&CjE;cn(X&^-R=%~J&SmJe0rpn3$=Bd8uh^$4m*P(6a`5mb+$dIZ%Y zs2=?vt{%bi8Z57o`bWoMc@2HAq^~M>C;^t&z#tV8v&3+dDoT=-Z@$_%;HMAs(W(6T zYi*9xxYQ)wI5Rpo2?i;yND*5T#IC@_=%xwQ9V=f zcI#w*d8>cNEhCnaUQ^ceA8XgxJ-@tg2ZNNhUKv|Ie5aH4m&A$lHVHu@S6XZ}!mZD) zBz7R@B(3o}iMKB#kir-BN{%z#5boliS2k6(#Y+;wAb~*wg9HW%3=$Y5Fi507spC9p z6N+h5*VAV3X{98_8X@Ma^Dz%X_?;*N%2i`wo$6qaz#xG^V%#NWEQhto4ZK7$h)AV35Edfk6U;1O^EV5*Q>fNMMk_Ab~*wg9HW%3=$Y5Fi2pK9zA-b z=Im_l?B?Ktk9CRCef&t~iL=uaH~f<)!B0ZtT%)wyT<*KMKXUWfyIh`nyL$R~dqM|k zvaYMYv1g#Cr)RjQzo&O#ps%lgpf_!>A38|TL7Hw$KjoITJ`i-#d$F?nhU$BP+ZgB| zEf#%wzMxBsDF=g8ET8j~VlMY7X!<99skF{OqAmaT*X@wP;#M1}h}VVkooir_IH+XG zx)}8oenb>b71T}!d84Bpn}S%=}L%6dtM1`GTlib4c5@k_q4_{hSzvden*+g9HW%43Y$MuumhK(7-1g8b8P~vW1_=xj z7$h)AV35Edfk6U;1O^EV5*Q>fNMMk_Ab~*wgH+wvGS=AM)YLTG)EeB}G~C>g)6(AE z(%Rk9(bC%Srgg5Vy{)yqy`!Tova_SSv!|-FXR;Fv67tdPr&a~A!;hXr+^oMMvnvRD zNHl8MtoKjSnt(y_D()jLpX_UW zR&;5i@sNa@Rk!Tc_o%bi56aqKYdz{IbtDlCQlODliwJv3O5uf%@kZaz_vWmMV^tQT zY0fa)sSe^a_|tzxK1nsW^vjh_ZX(lQ&asyNg;-&ei#fA7$h)A zV35Edfk6U;q+BMVS9PSR>SJ~vW1_=xj7$h)A zV35Edfk6U;1O{pQ$KS8(8-Lb+zuH*;xUund$^KU6`SjPXuU!_AQ37gDx4(aH0)qqw38$LBn^wa2 zsqs=h*6xs6&bx?&`(Ti0Rg8m``4bh{*)w0ST{V35Ed4gHcBUR-I7RLy1;nz{I;ypoLJ zCN=z80fPhv2@Db#Brr%|kiZ~;K>~vW1_=xj7$h)AV35Edfk6U;1O^EV(uH{`Yp=7- zF-a?L+WnXg7&g~`f3N-2?^i@~!_QBoY`qLm&h(9ynd&aj(v~Kdr0MJ8ly7NZkW6e> zO6$wcy~s<>y1;a@zUP;i{!{>?*yDIGNMMl4yiZf_i}sSYy2;+B-J9Euvn%%ogT(px zMu|&&2?GHPl1lvHju~|^kEu|W=F4|Cg1cycAyK>qPcjp0FCKRovS9uS2I=Fmn2O*B z>s{x!m(D(v5~q^wmJom3dt6D>I?Z+Lh~US5AC}g^s1@>|41G%t)_At}E8&^6)iU;~ zbK46i!5{_FapqX2VLfgx7i2`YKgl1*b5b$1EcKKx%CJ5}pJtxr?o;vn&hSv1njw%Z zrszouv2Vr*j*Ngo0)qqw2@Db#Brr%|kT9K=bm$Hg8@YGakwrn0?rurOCrSka-nMO5 zh~Wfd~vW1_=xj7$h)A zV35Edfk6U;1O^EV5*Q>fNMMk_Ab~*wg9HXiczveplRiz+=f#}3D_i_3wK-Wf;{C&Z zN79pDi@j9PKnwd9p3W&+F7l_!q*IkYOBtNkI0FXBMXw`ONnzgjCI9bt;inYkUygVgvlOEuY`V(qqoyZ7h7T86@NXBfdCoqtX`Epx7t>J%6x?AaqG?KCUu znbf}6ZrX!RAFtdR(6#gHQ)AR16PBsjtSrGGO`2&^%b9GaP5uCuVOoYJx0gnMgmO}+$`W#u5~4n!ejD3wJhd-~=b#UVvy8fNMMk_Ab~*wg9HW%3=$Y5 zFi2pKz#xG^0)u2{Qt?uHUvb&+S`H(#YJw2UWrKCOFOTrtvDO>&j&+}1rpQ&}pF4iL zeL1dr7ENJeR=LwQ1O}-_pBCR!Jy-kHPw@jErtPx0{I&0)*M<*b!61P_T03nWMZR49 z{DZ&^%QG@l6;zi?Hozb;_&QOupXd}!0)tdZf8v_8;BQip^6l?_rg2{IF8}+c@|z0)%-fEeg%~TkxJZ=j_!~} z5=r#AvEMOA^qeE^y(6_Mj&HC61qLbVSv}n#E((2}@cJ5I4k7&1j(AUu{JRv{G((_O zjOM%^&4rKVPKxGjh~}S-7W@+}#1kWc53L7-1O^EV5*Q>fNMMk_AZ@J8@2a~vW1_=xj7$h)AV35Ed{kkP!mBV;t zE7meh)U|`Fk#M3%T|`ZFlnOiKL|j?XP?!P;PuPSTnw zL?3za!SMdD^`OmMuga&GM4zh8T2?SfV2~<)wJFys5w-ee7-| z@2qitTnB@6hhELmN5z=or#FMj8uh7m>MH?^hGgnf#oSQphJ zre-20=`mB+Lf%`l&bqRG#xi>whkUAt{8$k=eT|U^VOhBs`H2+yMIlNROZPRA^^-Tt zI~*9K&kUBG3B|L?Zaj=-NeQJ$VkVMO8=}&|Nqjq`dF?pQ^fNMMk_ zAb~*wg9HW%3=$Y5Fi2pKz#xG^0)qqw2@Fz4x8ORdi^y2prFoc<{xQFn@qMw8$5i7= z^X+HFz1bp94)(gNk@M*MK2u`+1hQ@vGu|uG1%qTSsB9pX^i?KG_H!5aDKf25X>16q z=q=@sV35EdC84Eo9kk>-{@tC~blbG`6X)yNz##qhK33(n9V71p2C1Dpyi*~(`&xLf zYj{7mkn@c2B z3;8LQYg&{`jYF7t5h^6l&Mm`kE0fNMMk_Ab~*wg9HW% z3=$Zmsy^Jq3Mx*16d&go4U8>&gsR!CBfn~vW1_=xj7$h)AV34M~c4DRfj#GvQDQ~u3we65G8xv7G zA1rnkjo9ZfyZ&u8Z_2?Sfk6U;lzUFHx-jmNX5L%pU!MkJ5dBP{Ti?zM$b&%wg9HW% z3=$Y5Fi2pKz#xG^0)qqw2@Db#Brr%|kiZ~;K>~vW25IfhuE}++#sInprN-o$+wZwt z)w|S6eli_&e#cEfdR4I-v4KS^^XHSS{n6%WvARTib?rfPxY0~}>3uPg{ zqxHp6F&t#`JEZ~!2@Dd^aMp?SV+?B?{ZRoIqZ;&4IprAGh3eqKG~en{A_9vBlHSD?!|vZIEVc#tk+f7pDe;1O^EV z5*Q>fNMMk_AVseZzBsf}I6@hgm9tEDv^lHr>BWQ5Iq#2~$N#SX8YUl)I&=dJ5*Q>f zNMkeXC}tIHhjILM#_LsW(aayTk}6;4+y;XL1_=xj7$h)AV35Edfk6U;1O^EV5*Q>f zNMMk_Ab~*wg9HW%43aOs=DjoWn;lUWBJwsHOC6j!7cef(XJ*O%q28}MXt`H?OC%{y zchtU^G4r~ZL_zhJVVdW9?W%ZJZ&|-=VkS*R=$L1O{o?@tL+5 zmrBU9yB)Eziu9pET&6l;ka!TfA|f>}!U_hdWe#a@EAG)Pc^-=Ngcdgr7Pl4^NjDae zwu%eIOKX%$NnntS^#qRVNrv96l~bZpT&}gz%cf?kQ7(QS#Z>q#tZ*xds+mCbl(&9S zoOu_A#`6_23o-1H=+aXf)s|~kz#xsLGALO*TXtKf+2 zbEFM+Vij{lE-!`ODz2vU?j_E%ijk40#$b@ZAb~*wg9HW%3=$Zm=5@xC>&6sKj@)}K z&qf<)>Ad8kyN~$Z(~vW1_=xj7^MFlgTzWr!$D2Ui>BqIVc?@-5T;>br)S`%XFPJ`h}hAi zN5n-HC8U)kaZ*xJ$EBpDq-BmvUd3hy8B_*XZ zdzYSpp1%HBgY(*k=g*$MqK$U{ z<9EaJs)f}xi<_2~=8tYZ^09Kia_hF)tvk1F-3q+r{q(kb%N*C$UxT!X~%uE+5%4sPx`?oXWEpL%$B zJoAV&dg}T3srOYcH#aZeYu=vL-o8%WKAGNGmwle5`=sXjq2Ui_xE|=@9*p% z?C;FeEZC`bvnOOK3=5Xx62$kUL=^eqj+|VPV(81Jc7&8p5khB7=h?W1^!7 zB~iuN(c$(nu>mp9!eiq6Vv}NHWAkFOYhufyo+ZV^Cz&M1`X{HxrKF{#q(r15c4}y=%IDZl-U3VQPM1bm7(P!u;D;Z>Gs_X31|h-~HPB@@x0Y z?$+9`t?%34);A~=3W6Z?6oh5tr&a~A!;hXr+^oMMvnvRDNH2vd!lUJdf$IDh8R~wF0=hK?W7*oV;^u=j zg%`6Wu2$t})fP<_U#qr#HCS6bU2fSGDxmkgWVZU=%Odlk=cV&?j_(K4^yTqlI>FMq8SG4^1&yQ7DG3&3}F_g#;c|P;1%#z4qSA;#+yk-|fwxD}4rUc6TWV zttk2S4vRe5hyKW>x$J=Y6{0WpoakHYx0n1P&krbMUsQOAt3!@zz97?^IAVPA9cLIeEa%Y2 zxJwtVv#@K^^DMZ~3V!~WU^y3eJLWBV@`FL8kTA*Mvt?nf?af}XPpP*e8%B++$1mwg z*_7E_RMNUV@RIO|%l2NFOXT$kBYf`%=6J%^^@}OKUp1F96YqvvX1UmQUChR{XlM%O z6oqi)KA4)y%`18Cb|63GH6@9o;MgnIn;H3yic9hDN|%?*+vDjZ!be1Ag$!#N{qHF4 zELe%B=v^v$ncH#2uJm!&!{x$6-tijyQ#M==#W}Qc#20Fp^7zc3S3ER*88NIRAzkzF zD`S4+=Hd!pQ>wJi#VV<%d|&G~Oa>*~TbGO1I`hA$EImJt8fI@EIVkfjLoIpea2Nj* z`{XW{#uX{{VbJT0#%dmryA_p2xJUpEc9M*WVysg)JB zJ2lXq^=C2p&BGyKef!;uUg4+iZ+(_>GC5+bspXD0AiiPe{9G`7-~E)!R@f7RYj>+h zzpY$SJgl_B@9V#+KIXaoBeISA*5`~1Ut)q_rSA7y--C;?{R&HJzkhrxZ`%pO$c0%{&14|Tc`6x+C{ES$bd2j{cF#5H zqnKtL^!2Qu{pt_AxzSfpHk~1|-Ds}H6b1>)chtvf{10py_plZbF-c3ecoiKr7|}AZ zPJi2Jj^69kiy`@dfq>-|G zt3T%$QPa*Yt)oT9zCZT1GubzA3BkHloI5;sUPC`FBcG29-(K%wa7H;I$;V(NIh&`*J8BY*m zELPXR^pI)TbI#Boq_;fwD}>^Ei>$4I)Ltoxuo5pb;^d0m*mg;z+Oj6t-Zv+pLjsWwVO`xCOv0x*5Mzx zgL=;!?`U`KW$GKxL<)Gn zjWr`v8Pr5yh}X`dmee>$*ZG!OUsD5JT%d9I!UZZ$B2r4xv}PwUOtczm6-d2BAGmpe zQLP=#r%Oib4c-h$Sn8nTKI_L>Gsy0E!jb(rf%eXIDjCkZk62V^g7i**W_PIQIxLzN zEvZT7KktFWWf5$YJl2A5Q-YCwJ4@&rEkd;M!Q^C57HMZ>h}}@Xga1Q+;D>9c8FH%7 z0zH-koSYJ`%<6OYYxy%^u8`UB&IpZ^P7gEZSk(P`e-_~a8odkA!Jf!1S_iC@-a?{+ zqpKzQ6-$9iYIg70l0yvSmQoemSd_$)2A>eUCHtBia|(AEZfc&&8VeBS7RLO##~_i1qtUAI50cLGV=}{0^OLd;A8>(o-l98x&4<?=_re4*6b%F{NTG~cfO>TvT*KAEx#i2SY z@??lKd|M0(aYLD^7&PBgZKtF>#Z`Y6t{`&!Z97^7?7p)%> z7+4DTxuDAI;y*W;o6cBRon?DDKY6mMb)&$vl;J}7mUO@2^Qr`g1jFN7o(y&&@;TAr zH|gJV_bc?)@;EzKVc+lX?0Eiy~{4*`wu5SAk>gc(qCmPJ&+g7iarGGbfJax1$ZXz${(e?y&e2;Yh z`(6ms(643qBL?HgyG1cn9K2fgBfk3YN9icVVQcB1$uIvd%Dqq=eNy%_y)Bh@-Z-e* zo%)&!RtVv$Kv49KKJ=X42$y&J*s(S5d{Z(CjYTF)BV9_B1(sPAwkDZ`5GDmOg1V

+
+ + + +
Language - +
+
diff --git a/_sass/components/dropdown.scss b/_sass/components/dropdown.scss index 6cf33e73ca..e966b9055d 100644 --- a/_sass/components/dropdown.scss +++ b/_sass/components/dropdown.scss @@ -17,6 +17,7 @@ // width: 100%; // } float: right; + padding-right: 6px; // leave space for the search bar .table-of-content & { margin-top: 0; diff --git a/_sass/components/search.scss b/_sass/components/search.scss index de18915531..5a25704964 100755 --- a/_sass/components/search.scss +++ b/_sass/components/search.scss @@ -2,6 +2,19 @@ //------------------------------------------------ //------------------------------------------------ +// Override the styles below to style the search container +// when it is shown on a specific page (as opposed to the +// landing page) +.titles + .search-container { + @include span-columns(3); + @include bp(medium) { + display: none; + } + float: right; + margin-top: 50px; + margin-right: 0; +} + .search-container { position: relative; margin-top: 20px; diff --git a/_sass/layout/documentation.scss b/_sass/layout/documentation.scss index 4c10d7de02..dd9863596d 100644 --- a/_sass/layout/documentation.scss +++ b/_sass/layout/documentation.scss @@ -9,7 +9,7 @@ .content-title-documentation { .titles { - @include span-columns(9); + @include span-columns(6); @include bp(medium) { @include span-columns(12); } From 47bcab7d29aacd5a3edad8ced2663de4b241f079 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 12 Oct 2021 09:18:18 +0200 Subject: [PATCH 0260/1704] update new in scala 3 now it is released it is no longer "upcoming" --- scala3/new-in-scala3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scala3/new-in-scala3.md b/scala3/new-in-scala3.md index 7501d9f086..9a1e9da872 100644 --- a/scala3/new-in-scala3.md +++ b/scala3/new-in-scala3.md @@ -3,7 +3,7 @@ layout: singlepage-overview title: New in Scala 3 languages: ["ja"] --- -The upcoming, exciting new version of Scala 3 brings many improvements and +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 changes. If you want to dig deeper, there are a few references at your disposal: From 4416c2b7f2741146038ad1ae028a18411de8577a Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 13 Oct 2021 12:41:46 -0600 Subject: [PATCH 0261/1704] fix some typos --- _overviews/scala3-contribution/procedures-testing.md | 4 ++-- _overviews/scala3-macros/tutorial/inline.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 38148a76f1..585239ba78 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -7,9 +7,9 @@ previous-page: procedures-efficiency next-page: procedures-checklist --- -It is important to add tests before a pull request, to verify that everythig is working as expected, +It is important to add tests before a pull request, to verify that everything is working as expected, and act as proof of what is valid/invalid Scala code (in case it is broken in the future). -In this section we will see the testign procedures in Scala 3. +In this section we will see the testing procedures in Scala 3. ## Running all Tests diff --git a/_overviews/scala3-macros/tutorial/inline.md b/_overviews/scala3-macros/tutorial/inline.md index befb6e8bb3..c081b8d61c 100644 --- a/_overviews/scala3-macros/tutorial/inline.md +++ b/_overviews/scala3-macros/tutorial/inline.md @@ -386,7 +386,7 @@ class PrintLogger extends InlineLogger: This forces the implementation of `log` to be an inline method and also allows `inline` parameters. Counterintuitively, the `log` on the interface `InlineLogger` cannot be directly called. The method implementation is not statically known and we thus do not know what to inline. Calling an abstract inline method thus results in an error. -The usefuleness of abstract inline methods becomes apparent when used in another inline method: +The usefulness of abstract inline methods becomes apparent when used in another inline method: ```scala inline def logged(logger: InlineLogger, x: Any) = From d4d428e118e5665d1ba905ce4b7c4f71ef3c2782 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 8 Oct 2021 12:50:56 +0200 Subject: [PATCH 0262/1704] simplify sbt cheatsheet --- .../procedures-cheatsheet.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/_overviews/scala3-contribution/procedures-cheatsheet.md b/_overviews/scala3-contribution/procedures-cheatsheet.md index 27814caa5f..c3c114e97b 100644 --- a/_overviews/scala3-contribution/procedures-cheatsheet.md +++ b/_overviews/scala3-contribution/procedures-cheatsheet.md @@ -12,19 +12,19 @@ For more in-depth explanations, see the rest of this chapter. ## sbt Commands -The following commands can be run within `sbt` in the dotty directory. +The following commands can be run within `sbt` in the dotty directory: -| Command | Description | -|------------------------------------|------------------------------------------------------------------| -| `scala3-bootstrapped/test` | Run all tests for Scala 3 | -| `scala3-bootstrapped/publishLocal` | Build Scala 3 for use in local projects | -| `scala3/scalac local/Foo.scala` | Compile the given file – path relative to the dotty directory. | -| `scala3/scala Foo` | Run class `Foo` with dotty directory on the classpath | -| `repl` | Start a REPL with the bootstrapped compiler | -| `testCompilation tests/pos` | Run test suites on files in the `tests/pos` directory. | -| testOnly
dotty.tools.dotc.CompilationTests
-- *pos
| Run test `pos` from `CompilationTests` suite. | -| scala3-compiler/Test/runMain
dotty.tools.printTypes
| Print types underlying representation | -| scala3/scalac -print-tasty
local/out/Foo.tasty
| Print the TASTy of top-level class `Foo` | +| Commands | +|-----------------------------------------------------------------------------------------------| +| `testCompilation` Run compilation tests on files that match the first argument. | +| `scala3/scalac` Run the compiler directly, with any current changes. | +| `scala3/scala` Run the main method of a given class name. | +| `repl` Start a REPL with the bootstrapped compiler. | +| `testOnly *CompilationTests -- *pos` Run test `pos` from the compilation test suite. | +| `scala3-compiler/Test/runMain dotty.tools.printTypes` Print types underlying representation | +| `scala3/scalac -print-tasty Foo.tasty` Print the TASTy of top-level class `Foo` | +| `scala3-bootstrapped/test` Run all tests for Scala 3. (Slow, recommended for CI only) | +| `scala3-bootstrapped/publishLocal` Build Scala 3 locally. (Use to debug a specific project) | ## Shell Commands From b9dd82bf888b5c2d46243ee766f3b2d6d2f91f92 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 8 Oct 2021 13:06:47 +0200 Subject: [PATCH 0263/1704] eliminate we from scala 3 guide --- _overviews/scala3-contribution/arch-phases.md | 4 ++-- _overviews/scala3-contribution/arch-types.md | 2 +- .../procedures-efficiency.md | 5 ++-- .../procedures-inspection.md | 23 ++++++++++--------- .../procedures-navigation.md | 10 ++++---- .../procedures-reproduce.md | 18 +++++++-------- .../scala3-contribution/procedures-testing.md | 4 ++-- _overviews/scala3-contribution/start-intro.md | 4 ++-- 8 files changed, 36 insertions(+), 34 deletions(-) diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index a653571b70..31753627a3 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -20,14 +20,14 @@ $ scalac -Xshow-phases ## Phase Groups -In class [Compiler] we can access the list of phases with the method `phases`: +In class [Compiler] you can access the list of phases with the method `phases`: ```scala def phases: List[List[Phase]] = frontendPhases ::: picklerPhases ::: transformPhases ::: backendPhases ``` -We see that phases are actually grouped into sublists, given by the signature +You can see that phases are actually grouped into sublists, given by the signature `List[List[Phase]]`; that is, each sublist forms a phase group that is then *fused* into a single tree traversal when a [Run] is executed. diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index 869a6399f8..453a308313 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -63,7 +63,7 @@ Type | Representation ### Method Definition Types -We saw above that method definitions can have an underlying type of +You can see above that method definitions can have an underlying type of either `PolyType`, `MethodType`, or `ExprType`. `PolyType` and `MethodType` may be mixed recursively however, and either can appear as the result type of the other. diff --git a/_overviews/scala3-contribution/procedures-efficiency.md b/_overviews/scala3-contribution/procedures-efficiency.md index c9c3d9ebfa..550a81926e 100644 --- a/_overviews/scala3-contribution/procedures-efficiency.md +++ b/_overviews/scala3-contribution/procedures-efficiency.md @@ -7,8 +7,9 @@ previous-page: procedures-inspection next-page: procedures-testing --- -In the previous sections, we have covered some techniques of working with the compiler. -Some of these techniques can be used repetitively, e.g.: +In the previous sections of this chapter, you saw some techniques for +working with the compiler. Some of these techniques can be used +repetitively, e.g.: - Navigating stack frames - Printing variables in certain ways diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index 6f381177aa..21e917ddd3 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -7,12 +7,13 @@ previous-page: procedures-areas next-page: procedures-efficiency --- -In this section, we take a closer look at how to debug the contents of certain objects -in the compiler, and produced artifacts. +In this section, you will find out how to debug the contents of certain objects +while the compiler is running, and inspect produced artifacts of the compiler. ## Inspecting variables in-place -Frequently we need to inspect the content of a particular variable. Often, it is sufficient to use `println`. +Frequently you will need to inspect the content of a particular variable. +Often, it is sufficient to use `println`. When printing a variable, it's always a good idea to call `show` on that variable: `println(x.show)`. Many objects of the compiler define `show`, returning a human-readable string. @@ -66,12 +67,12 @@ knock-on errors from occurring from a bug in an earlier phase. Use the flag ## Printing TASTy of a Class -If are working on an issue related to TASTy, it is good to know how to inspect +If you are working on an issue related to TASTy, it is good to know how to inspect the contents of a TASTy file, produced from compilation of Scala files. -In the following example, we compile in an [issue directory][reproduce] `tasty/Foo.scala`, -with contents of `class Foo`, and create a `tasty/launch.iss` file to print its TASTy -with sbt command `issue tasty`: +The next example uses an [issue directory][reproduce] to compile a class and print its TASTy. +In the directory, you should create a file `tasty/Foo.scala` (with contents of `class Foo`), +and create a file `tasty/launch.iss` with the following contents: ``` $ (rm -rv out || true) && mkdir out # clean up compiler output, create `out` dir. @@ -81,7 +82,7 @@ scala3/scalac -d $here/out $here/Foo.scala scala3/scalac -print-tasty $here/out/Foo.tasty ``` -We see output such as the following: +With sbt command `issue tasty` you will see output such as the following: ``` -------------------------------------------------------------------------------- @@ -130,7 +131,7 @@ Each one of `typeStrings` is then printed, displaying their internal structure, ### Examples -Here, given a previously defined `class Box { type X }`, we inspect the return type `Box#X`: +Here, given a previously defined `class Box { type X }`, you can inspect the return type `Box#X`: ```bash sbt:scala3> scala3-compiler/Test/runMain > dotty.tools.printTypes @@ -149,11 +150,11 @@ Here are some other examples you can follow: ### Don't just print: extracting further information `dotty.tools.printTypes` is useful to to at a glance see the representation -of a type, but sometimes we want to extract more. We can instead use the +of a type, but sometimes you want to extract more. Instead, you can use the method `dotty.tools.DottyTypeStealer.stealType`. With the same inputs as `printTypes`, it returns both a `Context` containing the definitions passed, along with the list of types. -As a worked example let's create a test case to verify the structure of `Box#X` that we saw earlier: +As a worked example let's create a test case to verify the structure of `Box#X` that you saw earlier: ```scala import dotty.tools.dotc.core.Contexts.Context import dotty.tools.dotc.core.Types.* diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index 4b9b70c00c..bd04779023 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -7,15 +7,15 @@ previous-page: procedures-reproduce next-page: procedures-areas --- -In this section, we will answer questions such as: -- where does the error happen in a codebase? +In this section, you will be able to answer questions such as: +- where does an error happen in a codebase? - where is a particular object created? - where is a particular value assigned to a variable? > You may be able to quickly find the source responsible for an issue by consulting [common issue locations][areas] ## Increasing Logging Output -Sometimes we can detect erroneous states producing an error by analysing logging output that is not +Sometimes you can detect erroneous states that produce an error by analysing logging output that is not normally visible: - general logging within a phase can be enabled with the `-Ylog` compiler flag, such as @@ -36,7 +36,7 @@ Analysing the trace will give you a clue about the objects involved in producing This question arises, e.g., if you realised there's an object on the error site that shouldn't be there, most probably causing the error. So, in attempt to rectify the offending object, you want to know where it was created. -We will do this by injecting a *tracer* into the class of an instance in question. +You can do this by injecting a *tracer* into the class of an instance in question. A tracer is the following variable: ```scala val tracer = Thread.currentThread.getStackTrace.mkString("\n") @@ -74,7 +74,7 @@ as trees have an associated unique ID: Say you have a certain [type][types] assigned to a [Denotation] and you would like to know why it is that specific type. The type of a denotation is defined by `var myInfo: Type`, and can be assigned multiple times. -In this case, knowing the creation site of that `Type`, as described above, is not useful; instead, we need to +In this case, knowing the creation site of that `Type`, as described above, is not useful; instead, you need to know the *assignment* (not *creation*) site. This is done similarly to how you trace the creation site. Conceptually, you need to create a proxy for that variable that will log every write operation to it. Practically, if you are trying to trace the assignments to a variable `myInfo` of type `Type`, first, rename it to `myInfo_debug`. Then, insert the following at the same level as that variable: diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index dc65111f85..b046f08ab6 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -10,11 +10,11 @@ next-page: procedures-navigation An issue found in the [GitHub repo][lampepfl/dotty] usually describes some code that manifests undesired behaviour. -To try fixing it, we first need to reproduce the issue, so that -- we can understand its cause -- we can verify that any changes made to the codebase have a positive impact on the issue. +To try fixing it, you will first need to reproduce the issue, so that +- you can understand its cause +- you can verify that any changes made to the codebase have a positive impact on the issue. -Say you want to reproduce locally issue [#7710], we would copy the code from the *"Minimised Code"* +Say you want to reproduce locally issue [#7710], you would first copy the code from the *"Minimised Code"* section of the issue to a file named e.g. `local/i7710.scala`, and then try to compile it from the sbt console opened in the dotty root directory: ```bash @@ -24,12 +24,12 @@ sbt:scala3> scala3/scalac -d local/out local/i7710.scala > Here, the `-d` flag specifies a directory `local/out` where generated code will be output. You can then verify that the local reproduction has the same behaviour as originally reported in the issue. -If so, then we can get to trying to fix it, else, perhaps the issue is out of date, or +If so, then you can get to trying to fix it, else, perhaps the issue is out of date, or is missing information about how to accurately reproduce the issue. ## Dotty Issue Workspace -Sometimes we need more complex commands to reproduce an issue, and it is useful to script these, which +Sometimes you will need more complex commands to reproduce an issue, and it is useful to script these, which can be done with [dotty-issue-workspace]. It allows to bundle sbt commands for issue reproduction in one file and then run them from the Dotty project's sbt console. @@ -56,7 +56,7 @@ Let's use [dotty-issue-workspace] to reproduce issue [#7710]: command, which will compile `Test.scala` and place any output into `out`. `$here` is a special variable that will be replaced by the path of the parent directory of `launch.iss` when executing the commands. -5. Now, from a terminal we will run the issue from sbt in the dotty directory +5. Now, from a terminal you can run the issue from sbt in the dotty directory ([See here][clone] for a reminder if you have not cloned the repo.): ```bash $ sbt @@ -83,7 +83,7 @@ $ (rm -rv out || true) && mkdir out # clean up compiler output, create `out` dir scala3/scalac -d $here/out $here/$1.scala # compile the first argument following `issue foo ` ``` -It is similar to the previous example, except we now compile a file `$1.scala`, referring +It is similar to the previous example, except now you will compile a file `$1.scala`, referring to the first argument passed after the issue name. The command invoked would look like `issue foo original` to compile `original.scala`, and `issue foo alt` for `alt.scala`. @@ -120,7 +120,7 @@ scala3/scala -classpath $here/out Test # Run the class `Test` generated by the ## Conclusion -In this section, we have seen how to reproduce an issue locally, next we will see +In this section, you have seen how to reproduce an issue locally, and next you will see how to try and detect its root cause. [lampepfl/dotty]: https://github.com/lampepfl/dotty/issues diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index 585239ba78..e707bb943f 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -9,7 +9,7 @@ next-page: procedures-checklist It is important to add tests before a pull request, to verify that everything is working as expected, and act as proof of what is valid/invalid Scala code (in case it is broken in the future). -In this section we will see the testing procedures in Scala 3. +In this section you will see the testing procedures in Scala 3. ## Running all Tests @@ -21,7 +21,7 @@ sbt:scala3> scala3-bootstrapped/test ``` Often however it is not necessary to test everything if your changes are localised to one area, -we will see in the following sections the different kinds of tests, and how +you will see in the following sections the different kinds of tests, and how to run individual tests. ## Compilation Tests diff --git a/_overviews/scala3-contribution/start-intro.md b/_overviews/scala3-contribution/start-intro.md index 2a51a08901..748ef78dff 100644 --- a/_overviews/scala3-contribution/start-intro.md +++ b/_overviews/scala3-contribution/start-intro.md @@ -40,8 +40,8 @@ $ cd dotty ## Verify your installation -To verify that we can build the code, we will use `scala3/scalac` and `scala3/scala` to build -and run a test case: +To verify that you can build the code, you can use `scala3/scalac` and `scala3/scala` to build +and run a test case, as shown in the next snippet: ```bash $ sbt sbt:scala3> scala3/scalac tests/pos/HelloWorld.scala From 459b5dfc3e60581851c04c85b329fad55e375617 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 8 Oct 2021 17:59:33 +0200 Subject: [PATCH 0264/1704] implement suggestions --- .../scala3-contribution/arch-lifecycle.md | 12 ++- _overviews/scala3-contribution/arch-phases.md | 6 +- .../scala3-contribution/procedures-areas.md | 5 +- .../procedures-checklist.md | 3 +- .../procedures-inspection.md | 24 +++--- .../procedures-navigation.md | 74 +++++++++++++------ .../procedures-reproduce.md | 30 +++++--- .../scala3-contribution/procedures-testing.md | 6 +- 8 files changed, 103 insertions(+), 57 deletions(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 356cb5cec9..8a3bcbb762 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -26,10 +26,14 @@ every compilation unit before progressing to the next phase. #### Phases A phase is an abstract transformation over a compilation unit, it is usually responsible -for transforming the trees and types representing the code of a source file. The primary phases of -the compiler are the `parser`, which converts text that matches Scala's -[syntax][10] into abstract syntax trees, ASTs, and the `typer`, which checks that -trees conform to expected types, and performs other operations such as implicit search. +for transforming the trees and types representing the code of a source file. Some phases of +the compiler include +- `parser`, which converts text that matches Scala's + [syntax][10] into abstract syntax trees, ASTs +- `typer`, which checks that trees conform to expected types +- `erasure`, which retypes a more simplified program into one that has the same types as the JVM. +- `genBCode`, the JVM backend, which converts erased compiler trees into Java bytecode format. + [You can read more about phases here][9]. #### Drivers diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 31753627a3..60b546544c 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -61,9 +61,9 @@ such as `equals` and `hashCode` for case classes. These phases start with [pickler], which serializes typed trees produced by the `frontendPhases` into TASTy format. Following is [inlining], which expand calls to inline methods, and [postInlining] providing implementations -of the Mirror framework for inlined calls. +of the [Mirror] framework for inlined calls. Finally are [staging], which ensures that quotes conform to the -Phase Consistency Principle (PCP), and [pickleQuotes] which converts quoted +[Phase Consistency Principle (PCP)][PCP], and [pickleQuotes] which converts quoted trees to embedded TASTy strings. ### `transformPhases` @@ -105,3 +105,5 @@ These map the transformed trees to Java classfiles or SJSIR files. [initChecker]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/init/Checker.scala [firstTransform]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/FirstTransform.scala [erasure]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Erasure.scala +[Mirror]: https://github.com/lampepfl/dotty/blob/master/library/src/scala/deriving/Mirror.scala +[PCP]: {% link _scala3-reference/metaprogramming/macros.md %}#the-phase-consistency-principle diff --git a/_overviews/scala3-contribution/procedures-areas.md b/_overviews/scala3-contribution/procedures-areas.md index cafbed7f4c..3d15216da4 100644 --- a/_overviews/scala3-contribution/procedures-areas.md +++ b/_overviews/scala3-contribution/procedures-areas.md @@ -20,8 +20,9 @@ Look in [RefinedPrinter] (or its parent class [PlainPrinter]) for the implementa ### Content of Error Messages -You can find most error messages defined in [messages] (with IDs defined in [ErrorMessageID]). If the message -is not defined there, try the `-Ydebug-error` compiler flag, which will print a stack trace leading to the +You can find the definitions of most error messages in [messages] (with IDs +defined in [ErrorMessageID]). If the message is not defined there, try the +`-Ydebug-error` compiler flag, which will print a stack trace leading to the production of the error, and the contents of the message. ### Compiler Generated Given Instances diff --git a/_overviews/scala3-contribution/procedures-checklist.md b/_overviews/scala3-contribution/procedures-checklist.md index fdbcd75dfc..df194f99e9 100644 --- a/_overviews/scala3-contribution/procedures-checklist.md +++ b/_overviews/scala3-contribution/procedures-checklist.md @@ -19,7 +19,8 @@ Make sure you have signed the [Scala CLA][cla], if not, sign it. Before starting to work on a feature or a fix, it's good practice to ensure that: 1. There is a ticket for your work in the project's [issue tracker][issues]; -2. The ticket has been discussed and prioritized by the team. +2. The ticket has been discussed and there is desire for it to be implemented by the +Scala 3 core maintainers. ### 3: Add Tests Add at least one test that replicates the problem in the issue, and that shows it is now resolved. diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index 21e917ddd3..01347654c4 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -18,7 +18,7 @@ Often, it is sufficient to use `println`. When printing a variable, it's always a good idea to call `show` on that variable: `println(x.show)`. Many objects of the compiler define `show`, returning a human-readable string. e.g. if called on a tree, the output will be the tree's representation as source code, rather than -the raw data underlying. +the underlying raw data. Sometimes you need to print flags. Flags are metadata attached to [symbols] containing information such as whether a class is abstract, comes from Java, what modifiers a variable has (private, protected etc) and so on. @@ -49,11 +49,10 @@ Here is a table of explanations for their use: ## Obtaining debug output from the compiler -There are many compiler options that provide verbose debug output when compiling a file. -You can find the full list in [ScalaSettings.scala] file. A particularly useful one -is `-Xprint:` or `-Xprint:all`. It prints trees after a given phase or after -all phases. As described in the [compiler lifecycle][3] each phase transforms the trees -and types that represent your code in a certain way. This flag allows you to see exactly how. +As explained in [navigation], we can debug the code being generated as it is transformed +through the compiler. As well as plain tree output, there are many compiler options that +add extra debug information to trees when compiling a file; you can find the full list +in [ScalaSettings]. ## Stopping the compiler early Sometimes you may want to stop the compiler after a certain phase, for example to prevent @@ -61,7 +60,7 @@ knock-on errors from occurring from a bug in an earlier phase. Use the flag `-Ystop-after:` to prevent any phases executing afterwards. > e.g. `-Xprint:` where `phase` is a miniphase, will print after -> the whole phase group is complete, which may several miniphases after `phase`. +> the whole phase group is complete, which may be several miniphases after `phase`. > Instead you can use `-Ystop-after: -Xprint:` to stop > immediately after the miniphase and see the trees that you intended. @@ -97,7 +96,7 @@ Names: ``` and so on. -## Inspecting representation of types +## Inspecting The Representation of Types > [click here][2] to learn more about types in `dotc`. @@ -142,15 +141,15 @@ sbt:scala3> scala3-compiler/Test/runMain TypeRef(TypeRef(ThisType(TypeRef(NoPrefix,module class )),class Box),type X) [class dotty.tools.dotc.core.Types$CachedTypeRef] ``` -Here are some other examples you can follow: +Here are some other examples you can try: - `...printTypes "" "class" "[T] extends Seq[T] {}"` - `...printTypes "" "method" "(x: Int): x.type"` - `...printTypes "" "type" "<: Int" "= [T] =>> List[T]"` ### Don't just print: extracting further information -`dotty.tools.printTypes` is useful to to at a glance see the representation -of a type, but sometimes you want to extract more. Instead, you can use the +`dotty.tools.printTypes` is useful to to see the representation +of a type at a glance, but sometimes you want to extract more. Instead, you can use the method `dotty.tools.DottyTypeStealer.stealType`. With the same inputs as `printTypes`, it returns both a `Context` containing the definitions passed, along with the list of types. @@ -182,6 +181,7 @@ class StealBox: [1]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala [2]: {% link _overviews/scala3-contribution/arch-types.md %} [3]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases -[ScalaSettings.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala +[ScalaSettings]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala [symbols]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/SymDenotations.scala [reproduce]: {% link _overviews/scala3-contribution/procedures-reproduce.md %}#dotty-issue-workspace +[navigation]: {% link _overviews/scala3-contribution/procedures-navigation.md %}#what-phase-generated-a-particular-tree diff --git a/_overviews/scala3-contribution/procedures-navigation.md b/_overviews/scala3-contribution/procedures-navigation.md index bd04779023..3a7cd43b63 100644 --- a/_overviews/scala3-contribution/procedures-navigation.md +++ b/_overviews/scala3-contribution/procedures-navigation.md @@ -9,14 +9,45 @@ next-page: procedures-areas In this section, you will be able to answer questions such as: - where does an error happen in a codebase? +- when during compilation was a particular tree introduced? - where is a particular object created? - where is a particular value assigned to a variable? > You may be able to quickly find the source responsible for an issue by consulting [common issue locations][areas] +## What phase generated a particular tree? + +As described in the [compiler lifecycle][lifecycle], each phase transforms the trees +and types that represent your code in a certain way. + +To print the code as it is transformed through the compiler, use the compiler flag `-Xprint:all`. +After each phase group is completed, you will see the resulting trees representing the code. + +> It is recommended to test `-Xprint:all` on a single, small file, otherwise a lot of unnecessary +> output will be generated. + +### Trace a Tree Creation Site + +When you see a problematic tree appear after a certain phase group, you know to isolate the rest of +your search to the code of that phase. For example if you found a problematic tree after phase +`posttyper`, the problem most likely appears in the code of [PostTyper]. We can trace the exact point +the tree was generated by looking for its unique ID, and then generating a stack trace at its creation: + +1. Run the compiler with `-Xprint:posttyper` and `-Yshow-tree-ids` flags. + This will only print the trees of the `posttyper` phase. This time you should see the tree + in question be printed alongside its ID. You'll see something like `println#223("Hello World"#37)`. +2. Copy the ID of the desired tree. +3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace + pointing to the creation site of the tree with the provided ID. + +### Enhanced Tree Printing + +As seen above `-Xprint:` can be enhanced with further configuration flags, found in +[ScalaSettings]. For example, you can additionally print the type of a tree with `-Xprint-types`. + ## Increasing Logging Output -Sometimes you can detect erroneous states that produce an error by analysing logging output that is not -normally visible: +Once you have identified the phase that generated a certain tree, you can then increase +logging in that phase, to try and detect erroneous states: - general logging within a phase can be enabled with the `-Ylog` compiler flag, such as - `-Ylog:,,...` for individual phases @@ -27,28 +58,35 @@ normally visible: ## Navigating to Where an Error is Generated -Add the `-Ydebug-error` compiler flag, e.g. `scala3/scalac -Ydebug-error Test.scala`. +The compiler issues user facing errors for code that is not valid, such as the type mismatch +of assigning an `Int` to a `Boolean` value. Sometimes these errors do not match what is expected, which could be a bug. + +To discover why such a *spurious* error is generated, you can trace the code that generated the error by +adding the `-Ydebug-error` compiler flag, e.g. `scala3/scalac -Ydebug-error Test.scala`. This flag forces a stack trace to be printed each time an error happens, from the site where it occurred. Analysing the trace will give you a clue about the objects involved in producing the error. +For example, you can add some debug statements before the error is issued to discover +the state of the compiler. [See some useful ways to debug values.][inspect] -## Where was a particular object created? +### Where was a particular object created? -This question arises, e.g., if you realised there's an object on the error site that shouldn't be there, most probably causing the error. So, in attempt to rectify the offending object, you want to know where it was created. +If you navigate to the site of the error, and discover a problematic object, you will want to know +why it exists in such a state, as it could be the cause of the error. You can discover the +creation site of that object to understand the logic that created it. You can do this by injecting a *tracer* into the class of an instance in question. A tracer is the following variable: ```scala val tracer = Thread.currentThread.getStackTrace.mkString("\n") ``` -When placed as a top-level definition at a class, it will contain a stack trace pointing at where exactly -its particular instance was created. This is because, as a top-level `val`, it will be evaluated on -construction of the instance in question. +When placed as a member definition at a class, it will contain a stack trace pointing at where exactly +its particular instance was created. Once you've injected a tracer into a class, you can `println` that tracer from the error site or other site you've found the object in question. -### Procedure +#### Procedure 1. Determine the type of the object in question. You can use one of the following techniques to do so: - Use an IDE to get the type of an expression, or save the expression to a `val` @@ -60,19 +98,9 @@ other site you've found the object in question. encountered the object. This will give you the stack trace pointing to the place where the constructor of that object was invoked. -### Trace a Tree Creation Site - -A special case of finding an object's creation site is for a Tree, this is supported directly in the compiler, -as trees have an associated unique ID: - -1. Run the compiler with `-Xprint:` and `-Yshow-tree-ids` flags. You should see the tree in question - be printed, alongside its ID. You'll see something like `println#223("Hello World"#37)`. -2. Copy the ID of the desired tree. -3. Run the compiler with `-Ydebug-tree-with-id ` flag. The compiler will print a stack trace pointing to the creation site of the tree the ID provided. - -## Where was a particular value assigned to a variable? +### Where was a particular value assigned to a variable? -Say you have a certain [type][types] assigned to a [Denotation] and you would like to know why it is that +Say you have a certain [type][types] assigned to a [Denotation] and you would like to know why it has that specific type. The type of a denotation is defined by `var myInfo: Type`, and can be assigned multiple times. In this case, knowing the creation site of that `Type`, as described above, is not useful; instead, you need to know the *assignment* (not *creation*) site. @@ -89,3 +117,7 @@ def myInfo_=(x: Type) = { tracer = Thread.currentThread.getStackTrace.mkString(" [areas]: {% link _overviews/scala3-contribution/procedures-areas.md %} [Denotation]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Denotations.scala [types]: {% link _overviews/scala3-contribution/arch-types.md %} +[lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases +[PostTyper]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/PostTyper.scala +[ScalaSettings]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala +[inspect]: {% link _overviews/scala3-contribution/procedures-inspection.md %} diff --git a/_overviews/scala3-contribution/procedures-reproduce.md b/_overviews/scala3-contribution/procedures-reproduce.md index b046f08ab6..d567adac23 100644 --- a/_overviews/scala3-contribution/procedures-reproduce.md +++ b/_overviews/scala3-contribution/procedures-reproduce.md @@ -24,7 +24,7 @@ sbt:scala3> scala3/scalac -d local/out local/i7710.scala > Here, the `-d` flag specifies a directory `local/out` where generated code will be output. You can then verify that the local reproduction has the same behaviour as originally reported in the issue. -If so, then you can get to trying to fix it, else, perhaps the issue is out of date, or +If so, then you can start to try and fix it. Otherwise, perhaps the issue is out of date, or is missing information about how to accurately reproduce the issue. ## Dotty Issue Workspace @@ -36,7 +36,7 @@ file and then run them from the Dotty project's sbt console. ### Try an Example Issue Let's use [dotty-issue-workspace] to reproduce issue [#7710]: -1. Follow [steps in README][workspace-readme] to install the plugin. +1. Follow [the steps in the README][workspace-readme] to install the plugin. 2. In your Issue Workspace directory (as defined in the plugin's README file, "Getting Started" section, step 2), create a subdirectory for the issue: `mkdir i7710`. @@ -68,11 +68,11 @@ Let's use [dotty-issue-workspace] to reproduce issue [#7710]: ### Using Script Arguments -You can use script arguments inside `launch.iss` to reduce steps when +You can use script arguments inside `launch.iss` to reduce the number of steps when working with issues. -Say you have an issue `foo`, with two alternative files that are very similar -`original.scala`, which reproduces the issue and `alt.scala`, which does not, +Say you have an issue `foo`, with two alternative files that are very similar: +`original.scala`, which reproduces the issue, and `alt.scala`, which does not, and you want to compile them selectively? You can achieve this via the following `launch.iss`: @@ -92,13 +92,18 @@ the dollar notation: `$1` for the first argument, `$2` for the second and so on. ### Multiline Commands -`launch.iss` files support putting commands accross multiple lines, which is useful for -toggling lines by using a comment. +Inside a `launch.iss` file, one command can be spread accross multiple lines. For example, +if your command has multiple arguments, you can put each argument on a new line. -The following `launch.iss` file is a useful template for issues that run code after -compilation, it also includes some debug compiler flags, commented out. -The advantage of having them is, if you need one them, you can enable it quickly by -uncommenting it – as opposed to looking it up and typing it in your existing command. +Multiline commands can even have comments inbetween lines. This is useful +if you want to try variants of a command with optional arguments (such as configuration). +You can put the optional arguments on separate lines, and then decide when they are passed to +the command by placing `#` in front to convert it to a comment (i.e. the argument will +not be passed). This saves typing the same arguments each time you want to use them. + +The following `launch.iss` file is an example of how you can use multiline commands as a +template for solving issues that [run compiled code][run]. It demonstrates configuring the +`scala3/scalac` command using compiler flags, which are commented out. Put your favourite flags there for quick usage. ```bash @@ -115,7 +120,7 @@ scala3/scalac # Invoke the compiler task defined by the Dotty sbt project # -Ycheck:all $here/$1.scala # Invoke the compiler on the file passed as the second argument to the `issue` command. E.g. `issue foo Hello` will compile `Hello.scala` assuming the issue folder name is `foo`. -scala3/scala -classpath $here/out Test # Run the class `Test` generated by the compiler run (assuming the compiled issue contains such an entry point, otherwise comment this line) +scala3/scala -classpath $here/out Test # Run main method of `Test` generated by the compiler run. ``` ## Conclusion @@ -128,3 +133,4 @@ how to try and detect its root cause. [dotty-issue-workspace]: https://github.com/anatoliykmetyuk/dotty-issue-workspace [workspace-readme]: https://github.com/anatoliykmetyuk/dotty-issue-workspace#getting-started [clone]: {% link _overviews/scala3-contribution/start-intro.md %}#clone-the-code +[run]: {% link _overviews/scala3-contribution/procedures-testing.md %}#checking-program-output diff --git a/_overviews/scala3-contribution/procedures-testing.md b/_overviews/scala3-contribution/procedures-testing.md index e707bb943f..0e33c4452c 100644 --- a/_overviews/scala3-contribution/procedures-testing.md +++ b/_overviews/scala3-contribution/procedures-testing.md @@ -29,7 +29,7 @@ to run individual tests. Compilation tests run the compiler over input files, using various settings. Input files are found within the `tests/` directory at the root of the compiler repo. -Test input files are categorised further by the virtue of placing them in the subdirectories +Test input files are categorised further by placing them in the subdirectories of the `tests/` directory. A small selection of test categories include: - `tests/pos` – tests that should compile: pass if compiles successfully. @@ -45,8 +45,8 @@ or be within a directory called `i101/` for a multi-file test. To run the test, invoke the sbt command `testCompilation i101` (this will match all tests with `"i101"` in the name, so it is useful to use a unique name) -The group tests – `pos`, `neg` etc – are defined in [CompilationTests]. If you want to run a group of tests, e.g. -`pos`, you can do so via `testOnly dotty.tools.dotc.CompilationTests -- *pos` command. +The test groups – `pos`, `neg`, etc. – are defined in [CompilationTests]. If you want to run a group +of tests, e.g. `pos`, you can do so via `testOnly *CompilationTests -- *pos` command. ### Testing a Single Input File From 009d52c1b6d2e1c481cf85feed075676d3c2e3c9 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 11 Oct 2021 10:07:01 +0200 Subject: [PATCH 0265/1704] avoid Coursier in Scala 3 dev guide --- _overviews/scala3-contribution/start-intro.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/_overviews/scala3-contribution/start-intro.md b/_overviews/scala3-contribution/start-intro.md index 748ef78dff..815e9a1a8a 100644 --- a/_overviews/scala3-contribution/start-intro.md +++ b/_overviews/scala3-contribution/start-intro.md @@ -14,12 +14,11 @@ next-page: procedures-intro #### Essential - [git] is essential for managing the Scala 3 code, and contributing to GitHub, where the code is hosted. - -- The following dependencies can be installed with [Coursier] CLI by running `cs setup`, (see - [Single command Scala setup][cs-setup-blog]) including: - - A Java Virtual Machine (JDK 8 or higher), required for running the build tool. Verify that the JVM is - installed by running the following command in a terminal: `java -version`. - - [sbt], the build tool required to build the Scala 3 compiler and libraries. +- A Java Virtual Machine (JDK 8 or higher), required for running the build tool. + - download Java from [Oracle Java 8][java8], [Oracle Java 11][java11], + or [AdoptOpenJDK 8/11][adopt]. Refer to [JDK Compatibility][compat] for Scala/Java compatibility detail. + - Verify that the JVM is installed by running the following command in a terminal: `java -version`. +- [sbt][sbt-download], the build tool required to build the Scala 3 compiler and libraries. #### Nice To Have @@ -51,9 +50,11 @@ hello world [git]: https://git-scm.com -[cs-setup-blog]: https://alexarchambault.github.io/posts/2020-09-21-cs-setup.html -[sbt]: https://www.scala-sbt.org/ [Metals]: https://scalameta.org/metals/ -[Coursier]: https://get-coursier.io/docs/cli-installation [vs-code]: https://code.visualstudio.com [lampepfl/dotty]: https://github.com/lampepfl/dotty +[sbt-download]: https://www.scala-sbt.org/download.html +[java8]: https://www.oracle.com/java/technologies/javase-jdk8-downloads.html +[java11]: https://www.oracle.com/java/technologies/javase-jdk11-downloads.html +[adopt]: https://adoptopenjdk.net/ +[compat]: /overviews/jdk-compatibility/overview.html From 08e7e330ec4a6b06758e7d30b02d9d8bb231b0ea Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 11 Oct 2021 12:54:43 +0200 Subject: [PATCH 0266/1704] adjust links --- .../scala3-contribution/arch-lifecycle.md | 42 +++++++++---------- _overviews/scala3-contribution/arch-phases.md | 12 ++++-- _overviews/scala3-contribution/arch-types.md | 8 ++-- .../procedures-inspection.md | 9 ++-- 4 files changed, 36 insertions(+), 35 deletions(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 8a3bcbb762..ff1c0fc08f 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -7,48 +7,48 @@ previous-page: arch-intro next-page: arch-phases --- -As mentioned in [what is a compiler?][1] `dotc` produces programs that can run on your machine, +As mentioned in [what is a compiler?][whats-a-compiler] `dotc` produces programs that can run on your machine, first by verifying its input is a valid Scala program, and then transforming it into a representation that can run on one of Scala's target platforms. ## Introducing the Compiler's Lifecycle #### Core -At a high level, `dotc` centers its work around a [Compiler][4], which maintains an ordered -list of [phases][3], and is responsible for creating new [runs][2]. +At a high level, `dotc` centers its work around a [Compiler], which maintains an ordered +list of [phases][Phases], and is responsible for creating new [runs][Run]. A run is a complete iteration of the compiler's phases over a list of input sources. A compiler is designed to be reusable and can create many runs over its lifetime. #### Runs -During a run, the input sources are converted to [compilation units][5] (i.e. the abstraction of +During a run, the input sources are converted to [compilation units][CompilationUnit] (i.e. the abstraction of compiler state associated with each input source); then iteratively: a single phase is applied to every compilation unit before progressing to the next phase. #### Phases A phase is an abstract transformation over a compilation unit, it is usually responsible for transforming the trees and types representing the code of a source file. Some phases of -the compiler include +the compiler include: - `parser`, which converts text that matches Scala's - [syntax][10] into abstract syntax trees, ASTs + [syntax] into abstract syntax trees, ASTs - `typer`, which checks that trees conform to expected types - `erasure`, which retypes a more simplified program into one that has the same types as the JVM. - `genBCode`, the JVM backend, which converts erased compiler trees into Java bytecode format. -[You can read more about phases here][9]. +[You can read more about phases here][phase-categories]. #### Drivers -The core compiler also requires a lot of state to be initialised before use, such as [settings][8] -and the [Context]. For convenience, the [Driver] class contains high level functions for +The core compiler also requires a lot of state to be initialised before use, such as [settings][ScalaSettings] +and the [Context][contexts]. For convenience, the [Driver] class contains high level functions for configuring the compiler and invoking it programatically. The object [Main] inherits from `Driver` and is invoked by the `scalac` script. -> [Read more about a compiler's lifecyle][6]. +> [Read more about a compiler's lifecyle][time]. ## Code Structure -The code of the compiler is found in the package [dotty.tools][7], +The code of the compiler is found in the package [dotty.tools], containing the following sub-packages: ```scala tools // contains helpers and the `scala` generic runner @@ -82,18 +82,16 @@ tools // contains helpers and the `scala` generic runner └── scripting // scala runner for the -script argument ``` -[1]: {% link _overviews/scala3-contribution/contribution-intro.md %}#what-is-a-compiler -[2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala -[3]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala -[4]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala -[5]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala -[6]: {% link _overviews/scala3-contribution/arch-time.md %} -[7]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools -[8]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala -[9]: {% link _overviews/scala3-contribution/arch-phases.md %} -[10]: {% link _scala3-reference/syntax.md %} +[whats-a-compiler]: {% link _overviews/scala3-contribution/contribution-intro.md %}#what-is-a-compiler +[Phases]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala +[CompilationUnit]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala +[time]: {% link _overviews/scala3-contribution/arch-time.md %} +[dotty.tools]: https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools +[ScalaSettings]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala +[phase-categories]: {% link _overviews/scala3-contribution/arch-phases.md %}#phase-categories +[syntax]: {% link _scala3-reference/syntax.md %} [Main]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Main.scala [Driver]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Driver.scala [Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala [Run]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Run.scala -[Context]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Contexts.scala +[contexts]: {% link _overviews/scala3-contribution/arch-context.md %} diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index 60b546544c..be4c44604d 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -7,7 +7,7 @@ previous-page: arch-lifecycle next-page: arch-types --- -As described in the [compiler overview][1], `dotc` is divided into a list of [phases][Phase], +As described in the [compiler overview][lifecycle], `dotc` is divided into a list of [phases][Phase], specified in the [Compiler] class. #### Printing the phases of the Compiler @@ -52,7 +52,7 @@ In particular, it - creates super accessors representing `super` calls in traits - creates implementations of compiler-implemented methods, such as `equals` and `hashCode` for case classes. -- marks [compilation units][2] that require inline expansion, or quote pickling +- marks [compilation units][CompilationUnit] that require inline expansion, or quote pickling - simplifies trees of erased definitions - checks variance of type parameters - mark parameters passed unchanged from subclass to superclass for later pruning. @@ -72,6 +72,9 @@ suitable for the runtime system, with two sub-groupings: - High-level transformations: All phases from [firstTransform] to [erasure]. Most of these phases transform syntax trees, expanding high-level constructs to more primitive ones. + - An important transform phase is [patternMatcher], which converts match + trees and patterns into lower level forms, as well as checking the + exhaustivity of sealed types, and unreachability of pattern cases. - Some phases perform further checks on more primitive trees, e.g. [refchecks] verifies that no abstract methods exist in concrete classes, and [initChecker] checks that fields are not used before initialisation. @@ -86,8 +89,8 @@ suitable for the runtime system, with two sub-groupings: ### `backendPhases` These map the transformed trees to Java classfiles or SJSIR files. -[1]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases -[2]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala +[lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases +[CompilationUnit]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala [Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala [Phase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Phases.scala [MiniPhase]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/MegaPhase.scala @@ -104,6 +107,7 @@ These map the transformed trees to Java classfiles or SJSIR files. [refchecks]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/typer/RefChecks.scala [initChecker]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/init/Checker.scala [firstTransform]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/FirstTransform.scala +[patternMatcher]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala [erasure]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Erasure.scala [Mirror]: https://github.com/lampepfl/dotty/blob/master/library/src/scala/deriving/Mirror.scala [PCP]: {% link _scala3-reference/metaprogramming/macros.md %}#the-phase-consistency-principle diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index 453a308313..297e889595 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -14,8 +14,8 @@ defined in [Types.scala]. The `toString` method on `Type` will display types in format corresponding to the backing data structure, e.g. `ExprType(...)` corresponds to `class ExprType`, defined in [Types.scala]. -> You can inspect the representation of any type using the [dotty.tools.printTypes][2] -> script, its usage and integration into your debugging workflow is [described here][3]. +> You can inspect the representation of any type using the [dotty.tools.printTypes][DottyTypeStealer] +> script, its usage and integration into your debugging workflow is [described here][inspecting-types]. ### Types of Definitions @@ -148,5 +148,5 @@ Type -+- proxy_type --+- NamedType --------+- TypeRef ``` [Types.scala]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Types.scala -[2]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala -[3]: {% link _overviews/scala3-contribution/procedures-inspection.md %}#inspecting-representation-of-types +[DottyTypeStealer]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala +[inspecting-types]: {% link _overviews/scala3-contribution/procedures-inspection.md %}#inspecting-the-representation-of-types diff --git a/_overviews/scala3-contribution/procedures-inspection.md b/_overviews/scala3-contribution/procedures-inspection.md index 01347654c4..8121065796 100644 --- a/_overviews/scala3-contribution/procedures-inspection.md +++ b/_overviews/scala3-contribution/procedures-inspection.md @@ -98,10 +98,10 @@ and so on. ## Inspecting The Representation of Types -> [click here][2] to learn more about types in `dotc`. +> [learn more about types][types] in `dotc`. If you are curious about the representation of a type, say `[T] =>> List[T]`, -you can use a helper program [dotty.tools.printTypes][1], +you can use a helper program [dotty.tools.printTypes][DottyTypeStealer], it prints the internal representation of types, along with their class. It can be invoked from the sbt shell with three arguments as follows: ```bash @@ -178,9 +178,8 @@ class StealBox: assert(empty.name.toString == "") ``` -[1]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala -[2]: {% link _overviews/scala3-contribution/arch-types.md %} -[3]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#phases +[DottyTypeStealer]: https://github.com/lampepfl/dotty/blob/master/compiler/test/dotty/tools/DottyTypeStealer.scala +[types]: {% link _overviews/scala3-contribution/arch-types.md %} [ScalaSettings]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala [symbols]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/SymDenotations.scala [reproduce]: {% link _overviews/scala3-contribution/procedures-reproduce.md %}#dotty-issue-workspace From 23c0f3cd361aac189b9c1f224786011644f77800 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 11 Oct 2021 13:54:38 +0200 Subject: [PATCH 0267/1704] rewrite arch-time --- .../scala3-contribution/arch-lifecycle.md | 17 ++- _overviews/scala3-contribution/arch-time.md | 128 ++++++------------ 2 files changed, 50 insertions(+), 95 deletions(-) diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index ff1c0fc08f..8b148952e2 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -13,11 +13,17 @@ representation that can run on one of Scala's target platforms. ## Introducing the Compiler's Lifecycle +At a high level, `dotc` is an interactive compiler, and can be invoked frequently, +for example to answer questions for an IDE, provide REPL completions, +or to manage incremental builds and more. Each of these use cases requires a customised +workflow, but sharing a common core. + #### Core -At a high level, `dotc` centers its work around a [Compiler], which maintains an ordered -list of [phases][Phases], and is responsible for creating new [runs][Run]. -A run is a complete iteration of the compiler's phases over a list of input sources. -A compiler is designed to be reusable and can create many runs over its lifetime. +Customisation is provided by extending the [Compiler] class, which maintains an ordered +list of [phases][Phases], and how to [run][Run] them. Each interaction with a compiler +creates a new run, which is a complete iteration of the compiler's phases over a list +of input sources. Runs enable `dotc` to be [aware of time][time], as each run can +potentially generate new compiler entities and invalidate older ones. #### Runs During a run, the input sources are converted to [compilation units][CompilationUnit] (i.e. the abstraction of @@ -43,9 +49,6 @@ and the [Context][contexts]. For convenience, the [Driver] class contains high l configuring the compiler and invoking it programatically. The object [Main] inherits from `Driver` and is invoked by the `scalac` script. - -> [Read more about a compiler's lifecyle][time]. - ## Code Structure The code of the compiler is found in the package [dotty.tools], diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 6328545c26..4268b6b102 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -7,94 +7,46 @@ previous-page: arch-types next-page: arch-symbols --- -> (The following is work in progress), adapted from dotty.epfl.ch - -Conceptually, the `dotc` compiler's job is to maintain views of various -artifacts associated with source code at all points in time. But what is -*time* for `dotc`? In fact, it is a combination of compiler runs and compiler -phases. - -The *hours* of the compiler's clocks are measured in compiler [runs]. Every run -creates a new hour, which follows all the compiler runs (hours) that happened -before. `dotc` is designed to be used as an incremental compiler that can -support incremental builds, as well as interactions in an IDE and a REPL. This -means that new runs can occur quite frequently. At the extreme, every -keystroke in an editor or REPL can potentially launch a new compiler run, so -potentially an "hour" of compiler time might take only a fraction of a second -in real time. - -The *minutes* of the compiler's clocks are measured in phases. At every -compiler run, the compiler cycles through a number of [phases]. The list of -phases is defined in the [Compiler] object There are currently about 60 phases -per run, so the minutes/hours analogy works out roughly. After every phase the -view the compiler has of the world changes: trees are transformed, types are -gradually simplified from Scala types to JVM types, definitions are rearranged, -and so on. - -Many pieces in the information compiler are time-dependent. For instance, a -Scala symbol representing a definition has a type, but that type will usually -change as one goes from the higher-level Scala view of things to the -lower-level JVM view. There are different ways to deal with this. Many -compilers change the type of a symbol destructively according to the "current -phase". Another, more functional approach might be to have different symbols -representing the same definition at different phases, which each symbol -carrying a different immutable type. `dotc` employs yet another scheme, which -is inspired by functional reactive programming (FRP): Symbols carry not a -single type, but a function from compiler phase to type. So the type of a -symbol is a time-indexed function, where time ranges over compiler phases. - -Typically, the definition of a symbol or other quantity remains stable for a -number of phases. This leads us to the concept of a [period]. Conceptually, -period is an interval of some given phases in a given compiler run. Periods -are conceptually represented by three pieces of information - -* the ID of the current run, -* the ID of the phase starting the period -* the number of phases in the period - -All three pieces of information are encoded in a value class over a 32 bit -integer. Here's the API for class `Period`: - -```scala -class Period(val code: Int) extends AnyVal { - def runId: RunId // The run identifier of this period. - def firstPhaseId: PhaseId // The first phase of this period - def lastPhaseId: PhaseId // The last phase of this period - def phaseId: PhaseId // The phase identifier of this single-phase period - - def containsPhaseId(id: PhaseId): Boolean - def contains(that: Period): Boolean - def overlaps(that: Period): Boolean - - def & (that: Period): Period - def | (that: Period): Period -} -``` - -We can access the parts of a period using `runId`, `firstPhaseId`, -`lastPhaseId`, or using `phaseId` for periods consisting only of a single -phase. They return `RunId` or `PhaseId` values, which are aliases of `Int`. -`containsPhaseId`, `contains` and `overlaps` test whether a period contains a -phase or a period as a sub-interval, or whether the interval overlaps with -another period. Finally, `&` and `|` produce the intersection and the union of -two period intervals (the union operation `|` takes as `runId` the `runId` of -its left operand, as periods spanning different `runId`s cannot be constructed. - -Periods are constructed using two `apply` methods: - -```scala -object Period { - /** The single-phase period consisting of given run id and phase id */ - def apply(rid: RunId, pid: PhaseId): Period - - /** The period consisting of given run id, and lo/hi phase ids */ - def apply(rid: RunId, loPid: PhaseId, hiPid: PhaseId): Period -} -``` - -As a sentinel value there's `Nowhere`, a period that is empty. +As discussed in the [lifecycle] of `dotc`, the compiler is designed to be interactive, +and so can answer questions about entities as they come into existance and change throughout time, +for example: +- which new definitions were added in a REPL session? +- which definitions were replaced in an incremental build? +- how are definitions simplified as they are adapted to the runtime system? + +## Hours, Minutes, and Periods + +For the compiler to be able to resolve the above temporal questions, and more, it maintains +a concept of time. Additionally, because interactions are frequent, it is important to +persist knowledge of entities between interactions, allowing the compiler to remain performant; +knowing about time allows the compiler to efficiently mark entities as being outdated. + +Conceptually, `dotc` works like a clock, where its minutes are represented by [phases], +and its hours by [runs]. Like a clock, each run passes once each of its phases have completed +sequentially, and then a new run can begin. Phases are further grouped into [periods], where +during a period certain entities of the compiler remain stable. + +The [Compiler] class is responsible for creating new runs, and also maintains the list of +phases that make each run. + +## Time Dependency + +During a run, each phase can transform the world as the compiler sees it, for example: +- to transform trees, +- to gradually simplify type from Scala types to JVM types, +- to move definitions out of inner scopes to outer ones, fitting the JVM's model, +- and so on. + +A significant consequence of this is that a definition's associated [Symbol] has a type that +changes over time. Indeed, a cross module reference is always typed as either a `TermRef` +or `TypeRef`, these reference types contain a prefix type and a name, which is resolved dynamically +to a [Denotation]: a time-indexed function from phase to type. The type of a denotation can then +be recovered at any moment by passing the relevant phase in question. [runs]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/Run.scala -[phases]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Phases.scala -[period]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Periods.scala +[periods]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Periods.scala [Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala +[lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#introducing-the-compilers-lifecycle +[phases]: {% link _overviews/scala3-contribution/arch-phases.md %} +[Symbol]: {% link _overviews/scala3-contribution/arch-symbols.md %} +[Denotation]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Denotations.scala From a5e482dcc260885437d980986699227bce8d85b9 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 11 Oct 2021 17:45:14 +0200 Subject: [PATCH 0268/1704] rewrite arch-symbols --- .../scala3-contribution/arch-symbols.md | 181 ++++++------------ 1 file changed, 62 insertions(+), 119 deletions(-) diff --git a/_overviews/scala3-contribution/arch-symbols.md b/_overviews/scala3-contribution/arch-symbols.md index 4fe1bab73c..3755b2fbb0 100644 --- a/_overviews/scala3-contribution/arch-symbols.md +++ b/_overviews/scala3-contribution/arch-symbols.md @@ -7,127 +7,70 @@ previous-page: arch-time next-page: arch-context --- -> (The following is work in progress), adapted from dotty.epfl.ch - -## Symbols and SymDenotations - - - why symbols are not enough: their contents change all the time - - reference: string + sig - - -`dotc` is different from most other compilers in that it is centered around the idea of -maintaining views of various artifacts associated with code. These views are indexed -by time. - -A symbol refers to a definition in a source program. Traditionally, -compilers store context-dependent data in a _symbol table_. The -symbol then is the central reference to address context-dependent -data. But for the requirements of `dotc` it turns out that symbols are -both too little and too much for this task. - -**Too little:** The attributes of a symbol depend on the phase. Examples: -Types are gradually simplified by several phases. Owners are changed -in phases `LambdaLift` (when methods are lifted out to an enclosing -class) and Flatten (when all classes are moved to top level). Names -are changed when private members need to be accessed from outside -their class (for instance from a nested class or a class implementing -a trait). So a functional compiler, a `Symbol` by itself met mean -much. Instead we are more interested in the attributes of a symbol at -a given phase. - -**Too much:** If a symbol is used to refer to a definition in another -compilation unit, we get problems for incremental recompilation. The -unit containing the symbol might be changed and recompiled, which -might mean that the definition referred to by the symbol is deleted or -changed. This leads to the problem of stale symbols that refer to -definitions that no longer exist in this form. Scala 2 compiler tried to -address this problem by _rebinding_ symbols appearing in certain cross -module references, but it turned out to be too difficult to do this -reliably for all kinds of references. Scala 3 compiler attacks the problem at -the root instead. The fundamental problem is that symbols are too -specific to serve as a cross-module reference in a system with -incremental compilation. They refer to a particular definition, but -that definition may not persist unchanged after an edit. - -`dotc` uses instead a different approach: A cross module reference is -always type, either a `TermRef` or `TypeRef`. A reference type contains -a prefix type and a name. The definition the type refers to is established -dynamically based on these fields. - - - +As discussed previously, `dotc` [maintains time-indexed views][arch-time] of various +compiler artifacts. The following sections discuss how they are managed in the compiler. ## Symbols -`dotc/core/Symbols.scala` - -Symbols are references to definitions (e.g. of variables, fields, classes). Symbols can be used to refer to definitions for which we don't have ASTs (for example, from the Java standard library). - -`NoSymbol` is used to indicate the lack of a symbol. - -Symbols uniquely identify definitions, but they don't say what the definitions *mean*. To understand the meaning of a symbol -we need to look at its *denotation* (specially for symbols, a `SymDenotation`). - -Symbols can not only represent terms, but also types (hence the `isTerm`/`isType` methods in the `Symbol` class). - -## ClassSymbol - -`ClassSymbol` represents either a `class`, or a `trait`, or an `object`. For example, an object -```scala -object O { - val s = 1 -} -``` -is represented (after `Typer`) as -```scala -class O$ { this: O.type => - val s = 1 -} -val O = new O$ -``` -where we have a type symbol for `class O$` and a term symbol for `val O`. Notice the use of the selftype `O.type` to indicate that `this` has a singleton type. - - -## SymDenotation -`dotc/core/SymDenotations.scala` - -Symbols contain `SymDenotation`s. The denotation, in turn, refers to: - - * the source symbol (so the linkage is cyclic) - * the "owner" of the symbol: - - if the symbol is a variable, the owner is the enclosing method - - if it's a field, the owner is the enclosing class - - if it's a class, then the owner is the enclosing class - * a set of flags that contain semantic information about the definition (e.g. whether it's a trait or mutable). Flags are defined in `Flags.scala`. - * the type of the definition (through the `info` method) - -## Denotation -[Comment with a few details:][Denotations2] - -A `Denotation` is the result of a name lookup during a given period - -* Most properties of symbols are now in the denotation (name, type, owner, - etc.) -* Denotations usually have a reference to the selected symbol -* Denotations may be overloaded (`MultiDenotation`). In this case the symbol - may be `NoSymbol` (the two variants have symbols). -* Non-overloaded denotations have an `info` - -Denotations of methods have a [signature][Signature1], which -uniquely identifies overloaded methods. - -### Denotation vs. SymDenotation -A `SymDenotation` is an extended denotation that has symbol-specific properties -(that may change over phases) -* `flags` -* `annotations` -* `info` -`SymDenotation` implements lazy types (similar to scalac). The type completer -assigns the denotation's `info`. +Defined in [Symbols], a `Symbol` is a unique identifier for a definition (e.g. a method, +type, or field). A `ClassSymbol` extends `Symbol` and represents either a +`class`, or a `trait`, or an `object`. A `Symbol` can even refer to non-Scala entities, +such as from the Java standard library. + +## Definitions are Dynamic + +Traditionally, compilers store context-dependent data in a _symbol table_. +Where a symbol then is the central reference to address context-dependent data. +`dotc` makes a change to instead use a phase indexed function (known as +a [Denotation][Denotations]) to compute views of definitions accross phases, +as many of attributes associated with definitions are phase-dependent. For example: +- types are gradually simplified by several phases, +- owners change in [lambdaLift] (local methods are lifted to an enclosing class) + and [flatten] (when inner classes are moved to the top level) +- Names are changed when private members need to be accessed from outside + their class (for instance from a nested class or a class implementing + a trait). + +Additionally, symbols are not suitable to be used as a reference to +a definition in another [compilation unit][CompilationUnit]. +In the context of incremental compilation, a referred symbol from +an external compilation unit may be deleted or changed, making the reference +stale. To counter this, `dotc` types trees of cross module references with either +a `TermRef` or `TypeRef`. A reference type contains a prefix type and a name. +The denotation that the type refers to is established dynamically based on +these fields. + +## Denotations + +On its own a `Symbol` has no structure. Its semantic meaning is given by being associated +with a [Denotation][Denotations]. + +A denotation is the result of resolving a name during a given period, containing the information +describing some entity (either a term or type), indexed by phase. Denotations usually have a +reference to a selected symbol, but not always, for example if the denotation is overloaded, +i.e. a `MultiDenotation`. + +### SymDenotations +All definition symbols will contain a `SymDenotation`. The denotation, in turn, contains: +- a reverse link to the source symbol +- a reference to the enclosing symbol that defined the source symbol: + - for a local variable, the enclosing method + - for a field or class, the enclosing class +- a set of [flags], describing the definition (e.g. whether it's a trait or mutable). +- the type of the definition (through the `info` method) +- a [signature][Signature1], which uniquely identifies overloaded methods (or else `NotAMethod`). +- and more. + +A class symbol will instead be associated with a `ClassDenotation`, which extends `SymDenotation` +with some additional fields specific for classes. -[Denotations2]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Denotations.scala#L77-L103 [Signature1]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Signature.scala#L9-L33 +[Symbols]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Symbols.scala +[lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#introducing-the-compilers-lifecycle +[arch-time]: {% link _overviews/scala3-contribution/arch-time.md %} +[flatten]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Flatten.scala +[lambdaLift]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/LambdaLift.scala +[CompilationUnit]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/CompilationUnit.scala +[Denotations]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Denotations.scala +[SymDenotations]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/SymDenotations.scala +[flags]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Flags.scala From 73b55a2d0f0960f064c57ad0350506137cad87e0 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 11 Oct 2021 23:14:12 +0200 Subject: [PATCH 0269/1704] rewrite arch-context --- .../scala3-contribution/arch-context.md | 81 +++++++++++-------- .../scala3-contribution/arch-lifecycle.md | 18 ++--- _overviews/scala3-contribution/arch-phases.md | 4 +- .../scala3-contribution/arch-symbols.md | 4 +- _overviews/scala3-contribution/arch-time.md | 26 +++--- _overviews/scala3-contribution/arch-types.md | 2 +- 6 files changed, 70 insertions(+), 65 deletions(-) diff --git a/_overviews/scala3-contribution/arch-context.md b/_overviews/scala3-contribution/arch-context.md index ded5f7b048..f5a2cac98f 100644 --- a/_overviews/scala3-contribution/arch-context.md +++ b/_overviews/scala3-contribution/arch-context.md @@ -2,42 +2,57 @@ title: Contexts type: section description: This page describes symbols in the Scala 3 compiler. -num: 18 -previous-page: arch-symbols -next-page: +num: 14 +previous-page: arch-lifecycle +next-page: arch-phases --- -> (The following is work in progress), adapted from dotty.epfl.ch - -The `Context` contains the state of the compiler, for example - - * `settings` - * `freshNames` (`FreshNameCreator`) - * `period` (run and phase id) - * `compilationUnit` - * `phase` - * `tree` (current tree) - * `typer` (current typer) - * `mode` (type checking mode) - * `typerState` (for example undetermined type variables) - * ... - -### Contexts in the typer -The type checker passes contexts through all methods and adapts fields where -necessary, e.g. +`dotc` has almost no global state (with the exception of the name table, +which hashes strings into unique names). Instead, all +essential bits of information that can vary over a compiler [run] are collected +in a `Context` (defined in [Contexts]). +Most methods in the compiler depend on an implicit anonymous `Context` parameter, +and a typical definition looks like the following: ```scala -case tree: untpd.Block => typedBlock(desugar.block(tree), pt)(ctx.fresh.withNewScope) -``` - -A number of fields in the context are typer-specific (`mode`, `typerState`). +import dotty.tools.dotc.Contexts.{Context, ctx} -### In other phases -Other phases need a context for many things, for example to access the -denotation of a symbols (depends on the period). However they typically don't -need to modify / extend the context while traversing the AST. For these phases -the context can be simply an implicit class parameter that is then available in -all members. +def doFoo(using Context): Unit = + val current = ctx.run // access the Context parameter with `ctx` +``` -**Careful**: beware of memory leaks. Don't hold on to contexts in long lived -objects. +## Memory Leaks +> **Careful:** Contexts can be heavy so beware of memory leaks + +It is good practice to ensure that implicit contexts are not +captured in closures or other long-lived objects, e.g. avoiding a space leak +in the case where a closure can survive several compiler runs (e.g. a +lazy completer for a library class that is never demanded). In that case it +is convention that the `Context` is an explicit parameter, to track its usage. + +## Context Properties + +| Context property | description | +|-------------------|----------------------------------------| +| `compilationUnit` | current compilation unit | +| `phase` | current phase | +| `run` | current run | +| `period` | current period | +| `settings` | the config passed to the compiler | +| `reporter` | operations for logging errors/warnings | +| `definitions` | the standard built in definitions | +| `platform` | operations for the underlying platform | +| `tree` | current tree | +| `scope` | current scope | +| `typer` | current typer | +| `owner` | current owner symbol | +| `outer` | outer Context | +| `mode` | type checking mode | +| `typerState` | | +| `searchHistory` | | +| `implicits` | | +| ... | and so on | + + +[Contexts]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Contexts.scala +[run]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#runs diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 8b148952e2..72e92a52c4 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -4,26 +4,22 @@ type: section description: This page describes the lifecycle for the Scala 3 compiler. num: 13 previous-page: arch-intro -next-page: arch-phases +next-page: arch-context --- -As mentioned in [what is a compiler?][whats-a-compiler] `dotc` produces programs that can run on your machine, -first by verifying its input is a valid Scala program, and then transforming it into a -representation that can run on one of Scala's target platforms. - -## Introducing the Compiler's Lifecycle - -At a high level, `dotc` is an interactive compiler, and can be invoked frequently, -for example to answer questions for an IDE, provide REPL completions, +At a high level, `dotc` is an interactive compiler (see [what is a compiler?][whats-a-compiler]), +and can be invoked frequently, for example to answer questions for an IDE, provide REPL completions, or to manage incremental builds and more. Each of these use cases requires a customised workflow, but sharing a common core. +## Introducing the Compiler's Lifecycle + #### Core Customisation is provided by extending the [Compiler] class, which maintains an ordered list of [phases][Phases], and how to [run][Run] them. Each interaction with a compiler creates a new run, which is a complete iteration of the compiler's phases over a list -of input sources. Runs enable `dotc` to be [aware of time][time], as each run can -potentially generate new compiler entities and invalidate older ones. +of input sources. Each run has the capability to create new definitions or +invalidate older ones, and `dotc` can [track these changes over time][time]. #### Runs During a run, the input sources are converted to [compilation units][CompilationUnit] (i.e. the abstraction of diff --git a/_overviews/scala3-contribution/arch-phases.md b/_overviews/scala3-contribution/arch-phases.md index be4c44604d..235148fc5e 100644 --- a/_overviews/scala3-contribution/arch-phases.md +++ b/_overviews/scala3-contribution/arch-phases.md @@ -2,8 +2,8 @@ title: Compiler Phases type: section description: This page describes the phases for the Scala 3 compiler. -num: 14 -previous-page: arch-lifecycle +num: 15 +previous-page: arch-context next-page: arch-types --- diff --git a/_overviews/scala3-contribution/arch-symbols.md b/_overviews/scala3-contribution/arch-symbols.md index 3755b2fbb0..d88aef3501 100644 --- a/_overviews/scala3-contribution/arch-symbols.md +++ b/_overviews/scala3-contribution/arch-symbols.md @@ -2,9 +2,9 @@ title: Symbols type: section description: This page describes symbols in the Scala 3 compiler. -num: 17 +num: 18 previous-page: arch-time -next-page: arch-context +next-page: --- As discussed previously, `dotc` [maintains time-indexed views][arch-time] of various diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 4268b6b102..0ade8e2e35 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -2,12 +2,12 @@ title: Time in the Compiler type: section description: This page describes the concepts of time in the Scala 3 compiler. -num: 16 +num: 17 previous-page: arch-types next-page: arch-symbols --- -As discussed in the [lifecycle] of `dotc`, the compiler is designed to be interactive, +In the [compiler overview][lifecycle] section, we saw that `dotc` is an interactive compiler, and so can answer questions about entities as they come into existance and change throughout time, for example: - which new definitions were added in a REPL session? @@ -26,27 +26,21 @@ and its hours by [runs]. Like a clock, each run passes once each of its phases h sequentially, and then a new run can begin. Phases are further grouped into [periods], where during a period certain entities of the compiler remain stable. -The [Compiler] class is responsible for creating new runs, and also maintains the list of -phases that make each run. +## Time Travelling -## Time Dependency - -During a run, each phase can transform the world as the compiler sees it, for example: +During a run, each phase can rewrite the world as the compiler sees it, for example: - to transform trees, - to gradually simplify type from Scala types to JVM types, - to move definitions out of inner scopes to outer ones, fitting the JVM's model, - and so on. -A significant consequence of this is that a definition's associated [Symbol] has a type that -changes over time. Indeed, a cross module reference is always typed as either a `TermRef` -or `TypeRef`, these reference types contain a prefix type and a name, which is resolved dynamically -to a [Denotation]: a time-indexed function from phase to type. The type of a denotation can then -be recovered at any moment by passing the relevant phase in question. +Because definitions can [change over time][dynamic], various artifacts associated with them +are stored non-destructively, and views of the definition created earlier, or later +in the compiler can be accessed by using the `atPhase` method, defined in [Contexts]. [runs]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/Run.scala [periods]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Periods.scala -[Compiler]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/Compiler.scala -[lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %}#introducing-the-compilers-lifecycle +[lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %} [phases]: {% link _overviews/scala3-contribution/arch-phases.md %} -[Symbol]: {% link _overviews/scala3-contribution/arch-symbols.md %} -[Denotation]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Denotations.scala +[dynamic]: {% link _overviews/scala3-contribution/arch-symbols.md %}#definitions-are-dynamic +[Contexts]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Contexts.scala diff --git a/_overviews/scala3-contribution/arch-types.md b/_overviews/scala3-contribution/arch-types.md index 297e889595..40ba8a5495 100644 --- a/_overviews/scala3-contribution/arch-types.md +++ b/_overviews/scala3-contribution/arch-types.md @@ -2,7 +2,7 @@ title: Compiler Types type: section description: This page discusses the representation of types in the compiler -num: 15 +num: 16 previous-page: arch-phases next-page: arch-time --- From 895c65942bb324830cb14f18c3733226d03bd962 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 12 Oct 2021 09:14:07 +0200 Subject: [PATCH 0270/1704] add bash disclaimer --- _overviews/scala3-contribution/contribution-intro.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_overviews/scala3-contribution/contribution-intro.md b/_overviews/scala3-contribution/contribution-intro.md index eb8a82b613..283f65cfb5 100644 --- a/_overviews/scala3-contribution/contribution-intro.md +++ b/_overviews/scala3-contribution/contribution-intro.md @@ -24,6 +24,9 @@ on [GitHub](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3 It is recommended that you first have some familiarity with Scala 3 to get the most out of this guide. You can learn more in the [language reference](/scala3/reference/overview.html). +Many code snippets in this guide make use of shell commands (a line beginning with `$`), and in this case +a `bash` compatible shell is assumed. You may have to look up how to translate commands to your shell. + ### What is a Compiler? A compiler is a program that takes as input text, representing a program in one language From 14e080ca4176208a08045405929e635eecf8fee1 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 14 Oct 2021 11:56:32 +0200 Subject: [PATCH 0271/1704] address feedback --- .../scala3-contribution/arch-context.md | 6 ++-- .../scala3-contribution/arch-lifecycle.md | 2 +- .../scala3-contribution/arch-symbols.md | 8 ++--- _overviews/scala3-contribution/arch-time.md | 36 +++++++++++++++++-- 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/_overviews/scala3-contribution/arch-context.md b/_overviews/scala3-contribution/arch-context.md index f5a2cac98f..3586366480 100644 --- a/_overviews/scala3-contribution/arch-context.md +++ b/_overviews/scala3-contribution/arch-context.md @@ -25,10 +25,10 @@ def doFoo(using Context): Unit = > **Careful:** Contexts can be heavy so beware of memory leaks It is good practice to ensure that implicit contexts are not -captured in closures or other long-lived objects, e.g. avoiding a space leak +captured in closures or other long-lived objects, in order to avoid space leaks in the case where a closure can survive several compiler runs (e.g. a -lazy completer for a library class that is never demanded). In that case it -is convention that the `Context` is an explicit parameter, to track its usage. +lazy completer for a library class that is never required). In that case, the +convention is that the `Context` be an explicit parameter, to track its usage. ## Context Properties diff --git a/_overviews/scala3-contribution/arch-lifecycle.md b/_overviews/scala3-contribution/arch-lifecycle.md index 72e92a52c4..9fe58e7a46 100644 --- a/_overviews/scala3-contribution/arch-lifecycle.md +++ b/_overviews/scala3-contribution/arch-lifecycle.md @@ -29,7 +29,7 @@ every compilation unit before progressing to the next phase. #### Phases A phase is an abstract transformation over a compilation unit, it is usually responsible for transforming the trees and types representing the code of a source file. Some phases of -the compiler include: +the compiler are: - `parser`, which converts text that matches Scala's [syntax] into abstract syntax trees, ASTs - `typer`, which checks that trees conform to expected types diff --git a/_overviews/scala3-contribution/arch-symbols.md b/_overviews/scala3-contribution/arch-symbols.md index d88aef3501..f81599fbc1 100644 --- a/_overviews/scala3-contribution/arch-symbols.md +++ b/_overviews/scala3-contribution/arch-symbols.md @@ -21,8 +21,8 @@ such as from the Java standard library. Traditionally, compilers store context-dependent data in a _symbol table_. Where a symbol then is the central reference to address context-dependent data. -`dotc` makes a change to instead use a phase indexed function (known as -a [Denotation][Denotations]) to compute views of definitions accross phases, +`dotc` instead uses a phase-indexed function (known as +a [Denotation][Denotations]) to compute views of definitions across phases, as many of attributes associated with definitions are phase-dependent. For example: - types are gradually simplified by several phases, - owners change in [lambdaLift] (local methods are lifted to an enclosing class) @@ -33,9 +33,9 @@ as many of attributes associated with definitions are phase-dependent. For examp Additionally, symbols are not suitable to be used as a reference to a definition in another [compilation unit][CompilationUnit]. -In the context of incremental compilation, a referred symbol from +In the context of incremental compilation, a symbol from an external compilation unit may be deleted or changed, making the reference -stale. To counter this, `dotc` types trees of cross module references with either +stale. To counter this, `dotc` types trees of cross-module references with either a `TermRef` or `TypeRef`. A reference type contains a prefix type and a name. The denotation that the type refers to is established dynamically based on these fields. diff --git a/_overviews/scala3-contribution/arch-time.md b/_overviews/scala3-contribution/arch-time.md index 0ade8e2e35..13e029e742 100644 --- a/_overviews/scala3-contribution/arch-time.md +++ b/_overviews/scala3-contribution/arch-time.md @@ -18,15 +18,15 @@ for example: For the compiler to be able to resolve the above temporal questions, and more, it maintains a concept of time. Additionally, because interactions are frequent, it is important to -persist knowledge of entities between interactions, allowing the compiler to remain performant; -knowing about time allows the compiler to efficiently mark entities as being outdated. +persist knowledge of entities between interactions, allowing the compiler to remain performant. +Knowing about time allows the compiler to efficiently mark entities as being outdated. Conceptually, `dotc` works like a clock, where its minutes are represented by [phases], and its hours by [runs]. Like a clock, each run passes once each of its phases have completed sequentially, and then a new run can begin. Phases are further grouped into [periods], where during a period certain entities of the compiler remain stable. -## Time Travelling +## Time Travel During a run, each phase can rewrite the world as the compiler sees it, for example: - to transform trees, @@ -38,9 +38,39 @@ Because definitions can [change over time][dynamic], various artifacts associate are stored non-destructively, and views of the definition created earlier, or later in the compiler can be accessed by using the `atPhase` method, defined in [Contexts]. +As an example, assume the following definitions are available in a [Context]: +```scala +class Box { type X } + +def foo(b: Box)(x: b.X): List[b.X] = List(x) +``` + +You can compare the type of definition `foo` after the [typer] phase and after the [erasure] phase +by using `atPhase`: +```scala +import dotty.tools.dotc.core.Contexts.{Context, atPhase} +import dotty.tools.dotc.core.Phases.{typerPhase, erasurePhase} +import dotty.tools.dotc.core.Decorators.i + +given Context = … + +val fooDef: Symbol = … // `def foo(b: Box)(x: b.X): List[b.X]` + +println(i"$fooDef after typer => ${atPhase(typerPhase.next)(fooDef.info)}") +println(i"$fooDef after erasure => ${atPhase(erasurePhase.next)(fooDef.info)}") +``` +and see the following output: +``` +method foo after typer => (b: Box)(x: b.X): scala.collection.immutable.List[b.X] +method foo after erasure => (b: Box, x: Object): scala.collection.immutable.List +``` + [runs]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/Run.scala [periods]: https://github.com/lampepfl/dotty/blob/a527f3b1e49c0d48148ccfb2eb52e3302fc4a349/compiler/src/dotty/tools/dotc/core/Periods.scala [lifecycle]: {% link _overviews/scala3-contribution/arch-lifecycle.md %} [phases]: {% link _overviews/scala3-contribution/arch-phases.md %} [dynamic]: {% link _overviews/scala3-contribution/arch-symbols.md %}#definitions-are-dynamic [Contexts]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/core/Contexts.scala +[Context]: {% link _overviews/scala3-contribution/arch-context.md %} +[typer]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/typer/TyperPhase.scala +[erasure]: https://github.com/lampepfl/dotty/blob/master/compiler/src/dotty/tools/dotc/transform/Erasure.scala From a7b051b6eeaa51a47291c6c4b1fc897cd668adeb Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Mon, 18 Oct 2021 14:59:59 +0200 Subject: [PATCH 0272/1704] Overhaul navigation menus Also update font-awesome from 4.7 to 5.15 --- _data/doc-nav-header.yml | 35 ++++++++++++------- _data/overviews-ja.yml | 4 +-- _data/overviews-ru.yml | 4 +-- _data/overviews.yml | 4 +-- _data/scala3-doc-nav-header.yml | 19 +++++----- _includes/headertop.html | 2 +- _includes/tutorial-list.html | 2 +- _ja/index.md | 9 ++--- _ja/scala3/index.md | 2 +- _ru/index.md | 7 +--- _zh-cn/index.md | 9 ++--- index.md | 35 ++++++++++--------- scala3/guides.md | 2 +- scala3/index.md | 4 +-- tutorials.md | 62 +++++++++++++++++++++++++++++++++ 15 files changed, 130 insertions(+), 70 deletions(-) create mode 100644 tutorials.md diff --git a/_data/doc-nav-header.yml b/_data/doc-nav-header.yml index 60624cdba8..8d715a7b1f 100644 --- a/_data/doc-nav-header.yml +++ b/_data/doc-nav-header.yml @@ -1,25 +1,27 @@ -- title: API - url: "#" - submenu: - - title: Current - url: https://www.scala-lang.org/api/current/ - - title: All Versions - url: "/api/all.html" +- title: Getting Started + url: "/getting-started/index.html" - title: Learn url: "#" submenu: - - title: Getting Started - url: "/getting-started/index.html" - title: Tour of Scala url: "/tour/tour-of-scala.html" - title: Scala Book url: "/overviews/scala-book/introduction.html" + - title: Online Resources + url: "/learn.html" +- title: Tutorials + url: "#" + submenu: + - title: Getting Started with Scala in IntelliJ + url: "/getting-started/intellij-track/getting-started-with-scala-in-intellij.html" + - title: Getting Started with Scala and sbt + url: "/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.html" - title: Scala for Java Programmers url: "/tutorials/scala-for-java-programmers.html" - title: Scala on Android url: "/tutorials/scala-on-android.html" - - title: Online Resources - url: "/learn.html" + - title: Scala with Maven + url: "/tutorials/scala-with-maven.html" - title: Reference url: "#" submenu: @@ -31,8 +33,15 @@ url: "/tutorials/FAQ/index.html" - title: Language Spec url: http://scala-lang.org/files/archive/spec/2.13/ -- title: Style Guide - url: "/style/index.html" + - title: Style Guide + url: "/style/index.html" +- title: API + url: "#" + submenu: + - title: Current + url: https://www.scala-lang.org/api/current/ + - title: All Versions + url: "/api/all.html" - title: Cheatsheet url: "/cheatsheets/index.html" - title: Glossary diff --git a/_data/overviews-ja.yml b/_data/overviews-ja.yml index f6cbeb34cd..13be915210 100644 --- a/_data/overviews-ja.yml +++ b/_data/overviews-ja.yml @@ -59,7 +59,7 @@ description: "Scala 言語の機能をカバーするガイドと概要" overviews: - title: 文字列補間 - icon: usd + icon: dollar-sign url: "core/string-interpolation.html" description: > 文字列補間は、ユーザーが加工文字列リテラル(processed string literal)に変数参照を直接埋め込めるようにしてくれる。以下例。 @@ -73,7 +73,7 @@ - title: 値クラスと汎用トレイト by: Mark Harrah description: "値クラスは Scala で実行時のオブジェクトアロケーションを避ける新しい仕組みだ。これは新しい AnyVal サブクラスを定義することで達成できる。" - icon: diamond + icon: gem url: "core/value-classes.html" - category: ライブラリの作成 diff --git a/_data/overviews-ru.yml b/_data/overviews-ru.yml index 8387b36946..8fdadb53e5 100644 --- a/_data/overviews-ru.yml +++ b/_data/overviews-ru.yml @@ -60,7 +60,7 @@ description: "Руководства и обзоры, охватывающие функционал языка Scala." overviews: - title: Строковая интерполяция - icon: usd + icon: dollar-sign url: "core/string-interpolation.html" description: > Строковая интерполяция позволяет пользователям встраивать данные из переменных непосредственно в обрабатываемые строковые литералы. Вот пример: @@ -74,7 +74,7 @@ - title: Вычислительные Классы и Универсальные Трейты by: Mark Harrah description: "Вычислительные-Классы - это новый механизм в Scala, позволяющий избежать создания объектов во время исполнения, которое достигается за счет объявления класса в качестве подкласса AnyVal." - icon: diamond + icon: gem url: "core/value-classes.html" - category: Создание своих библиотек diff --git a/_data/overviews.yml b/_data/overviews.yml index 54bb90a02b..cf89f286a7 100644 --- a/_data/overviews.yml +++ b/_data/overviews.yml @@ -61,7 +61,7 @@ description: "Guides and overviews covering features in the Scala language." overviews: - title: String Interpolation - icon: usd + icon: dollar-sign url: "core/string-interpolation.html" description: > String Interpolation allows users to embed variable references directly in processed string literals. Here’s an example: @@ -75,7 +75,7 @@ - title: Value Classes and Universal Traits by: Mark Harrah description: "Value classes are a new mechanism in Scala to avoid allocating runtime objects. This is accomplished through the definition of new AnyVal subclasses." - icon: diamond + icon: gem url: "core/value-classes.html" - category: Authoring Libraries diff --git a/_data/scala3-doc-nav-header.yml b/_data/scala3-doc-nav-header.yml index 2054baca9c..807052e860 100644 --- a/_data/scala3-doc-nav-header.yml +++ b/_data/scala3-doc-nav-header.yml @@ -1,21 +1,22 @@ +- title: Getting Started + url: "/scala3/getting-started.html" - title: Learn url: "#" submenu: - title: New in Scala 3 url: "/scala3/new-in-scala3.html" - - title: Getting Started - url: "/scala3/getting-started.html" - title: Scala 3 Book url: "/scala3/book/introduction.html" - - title: Contributing Guide - url: "/scala3/guides/contribution/contribution-intro.html" - - title: Macro Tutorial - url: "/scala3/guides/macros/index.html" - title: Migrate url: "/scala3/guides/migration/compatibility-intro.html" - title: Reference - url: "/scala3/reference/overview.html" -- title: API - url: "https://scala-lang.org/api/3.x/" + url: '#' + submenu: + - title: Guides + url: '/scala3/guides.html' + - title: Language Specification + url: "/scala3/reference/overview.html" + - title: Scala Library API + url: "https://scala-lang.org/api/3.x/" - title: Contributing Guide url: "/scala3/guides/contribution/contribution-intro.html" diff --git a/_includes/headertop.html b/_includes/headertop.html index a70469cf62..d15657c9e0 100644 --- a/_includes/headertop.html +++ b/_includes/headertop.html @@ -39,7 +39,7 @@ - + diff --git a/_includes/tutorial-list.html b/_includes/tutorial-list.html index da4ca58923..4ed3ee1943 100644 --- a/_includes/tutorial-list.html +++ b/_includes/tutorial-list.html @@ -2,6 +2,6 @@ {% for tutorial in site.data.tutorials limit: 6 %} {% assign loopindex = forloop.index | modulo: 2 %} {% if loopindex == include.column %} -
  • {{tutorial.title | truncate: 60}}
  • +
  • {{tutorial.title | truncate: 60}}
  • {% endif %} {% endfor %} \ No newline at end of file diff --git a/_ja/index.md b/_ja/index.md index 26cbcfcc35..a908d62b37 100644 --- a/_ja/index.md +++ b/_ja/index.md @@ -34,7 +34,7 @@ scala3-sections: link: /ja/scala3/guides.html - title: "API" description: "Scala 3 の全バージョンのAPIドキュメント" - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "Scala 3 の言語仕様" @@ -67,7 +67,7 @@ scala2-sections: links: - title: "API" description: "Scala の全バージョンの API ドキュメント(英語のみ)" - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: /api/all.html - title: "Overviews" description: "Scala の多くの機能を網羅する詳細ドキュメント" @@ -97,9 +97,4 @@ scala2-sections: description: "Scala Improvement Process(Scala 改善プロセス)。言語とコンパイラの進化(英語のみ)" icon: "fa fa-cogs" link: /sips/index.html - - title: "SPP" - description: "Scala Platform Process(Scala プラットフォームプロセス)。コミュニティ主導型のライブラリの進化(英語のみ)" - icon: "fa fa-users" - link: https://platform.scala-lang.org - --- diff --git a/_ja/scala3/index.md b/_ja/scala3/index.md index 1700088233..8ad7fbabf2 100644 --- a/_ja/scala3/index.md +++ b/_ja/scala3/index.md @@ -35,7 +35,7 @@ sections: link: /ja/scala3/guides.html - title: "API" description: "Scala 3 の全バージョンのAPIドキュメント" - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "Scala 3 の言語仕様" diff --git a/_ru/index.md b/_ru/index.md index b7678c8bfa..dcb6f28eb4 100644 --- a/_ru/index.md +++ b/_ru/index.md @@ -33,7 +33,7 @@ sections: links: - title: "API" description: "API документация для всех версий Scala." - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: /api/all.html - title: "Обзоры" description: "Подробная документация, охватывающая возможности Scala." @@ -62,9 +62,4 @@ sections: description: "Процесс улучшения Scala (Scala Improvement Process). Эволюция языка и компилятора." icon: "fa fa-cogs" link: /sips/index.html - - title: "SPP" - description: "Развитие платформы Scala. Развитие библиотек, движимое сообществом." - icon: "fa fa-users" - link: https://platform.scala-lang.org - --- diff --git a/_zh-cn/index.md b/_zh-cn/index.md index d540a8e560..d8ef4874f8 100644 --- a/_zh-cn/index.md +++ b/_zh-cn/index.md @@ -35,7 +35,7 @@ scala3-sections: link: /scala3/guides.html - title: "API" description: "Scala 3 各个版本的API" - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "语言参考手册" description: "Scala 3 语言参考手册" @@ -68,7 +68,7 @@ scala2-sections: links: - title: "API" description: "各个Scala版本的API文档" - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: /api/all.html - title: "总览" description: "涵盖Scala各种特性的深度分析文档" @@ -97,9 +97,4 @@ scala2-sections: description: "Scala改进过程(Scala Improvement Process),语言及编译器进展" icon: "fa fa-cogs" link: /sips/index.html - - title: "SPP" - description: "Scala平台进程(Scala Platform Process), 社区驱动代码库的进展" - icon: "fa fa-users" - link: https://platform.scala-lang.org - --- diff --git a/index.md b/index.md index 37ae355c30..50eeb05044 100644 --- a/index.md +++ b/index.md @@ -19,8 +19,8 @@ scala3-sections: icon: "fa fa-rocket" link: /scala3/getting-started.html - title: "Scala 3 Book" - description: "An online book introducing the main language features." - icon: "fa fa-book" + description: "Learn Scala by reading a series of short lessons." + icon: "fa fa-book-open" link: /scala3/book/introduction.html - title: "More detailed information" links: @@ -34,7 +34,7 @@ scala3-sections: link: /scala3/guides.html - title: "API" description: "API documentation for every version of Scala 3." - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "The Scala 3 language reference." @@ -42,7 +42,7 @@ scala3-sections: link: /scala3/reference/overview.html - title: "Contribution Guide" description: "Guide to the Scala 3 Compiler and fixing an issue" - icon: "fa fa-gears" + icon: "fa fa-cogs" link: /scala3/guides/contribution/contribution-intro.html - title: "All new Scaladoc for Scala 3" description: "Highlights of new features for Scaladoc" @@ -65,22 +65,29 @@ scala2-sections: icon: "fa fa-flag" link: /tour/tour-of-scala.html - title: "Scala Book" - description: "An online book introducing the main language features." - icon: "fa fa-book" + description: "Learn Scala by reading a series of short lessons." + icon: "fa fa-book-open" link: /overviews/scala-book/introduction.html - more-resources: - - title: Online Courses, Exercises, & Blogs - url: /learn.html + - title: Online Resources + description: "Online Courses, Exercises, & Blogs." + icon: "fa fa-cloud" + link: /learn.html - title: Books - url: /books.html + description: "Printed and digital books about Scala." + icon: "fa fa-book" + link: /books.html + - title: Tutorials + description: "Take you by the hand through a series of steps to create Scala applications." + icon: "fa fa-tasks" + link: /tutorials.html - title: "Returning Users" links: - title: "API" description: "API documentation for every version of Scala." - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: /api/all.html - - title: "Overviews" + - title: "Guides & Overviews" description: "In-depth documentation covering many of Scala's features." icon: "fa fa-database" link: /overviews/index.html @@ -107,8 +114,4 @@ scala2-sections: description: "The Scala Improvement Process. Language & compiler evolution." icon: "fa fa-cogs" link: /sips/index.html - - title: "SPP" - description: "The Scala Platform Process. Community-driven library evolution." - icon: "fa fa-users" - link: https://platform.scala-lang.org --- diff --git a/scala3/guides.md b/scala3/guides.md index d7215df2db..139902b89c 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -20,7 +20,7 @@ guides: description: "An overview over the TASTy format aimed at end-users of the Scala language." - title: "Contribution Guide" by: Jamie Thompson, Anatolii Kmetiuk - icon: gears + icon: cogs url: "/scala3/guides/contribution/contribution-intro.html" description: "Guide to the Scala 3 Compiler and fixing an issue" - title: Scaladoc diff --git a/scala3/index.md b/scala3/index.md index b6d2ca8621..a0c174e1f6 100644 --- a/scala3/index.md +++ b/scala3/index.md @@ -34,7 +34,7 @@ sections: link: /scala3/guides.html - title: "API" description: "API documentation for every version of Scala 3." - icon: "fa fa-file-text" + icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "Language Reference" description: "The Scala 3 language reference." @@ -42,7 +42,7 @@ sections: link: /scala3/reference/overview.html - title: "Contribution Guide" description: "Guide to the Scala 3 Compiler and fixing an issue" - icon: "fa fa-gears" + icon: "fa fa-cogs" link: /scala3/guides/contribution/contribution-intro.html - title: "All new Scaladoc for Scala 3" description: "Highlights of new features for Scaladoc" diff --git a/tutorials.md b/tutorials.md new file mode 100644 index 0000000000..7cffa28385 --- /dev/null +++ b/tutorials.md @@ -0,0 +1,62 @@ +--- +layout: inner-page-parent +title: Tutorials + +tutorials: +- title: "Getting Started with Scala in IntelliJ" + url: "/getting-started/intellij-track/getting-started-with-scala-in-intellij.html" + description: "Create a Scala project using IntelliJ IDE." + icon: rocket +- title: "Getting Started with Scala and sbt" + url: "/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.html" + description: "Create a Scala project using sbt and the command-line." + icon: rocket +- title: "Scala for Java Programmers" + url: "/tutorials/scala-for-java-programmers.html" + description: "Quick introduction to the Scala language and compiler for people who already have some experience in Java." + icon: coffee +- title: "Scala on Android" + url: "/tutorials/scala-on-android.html" + description: "Create an Android app in Scala." + icon: robot +- title: "Scala with Maven" + url: "/tutorials/scala-with-maven.html" + description: "Create a Scala project with Maven." + icon: code +--- + +
    +
    +
    +
    +

    Tutorials

    +

    + Tutorials take you by the hand through a series of steps to create Scala applications. +

    +
    + {% for tutorial in page.tutorials %} +
    +
    +
    + {% if tutorial.icon %} +
    +
    +
    + {% endif %} +

    {{ tutorial.title }}

    +
    +
    + {% if tutorial.by %}
    By {{ tutorial.by }}
    {% endif %} + {% if tutorial.description %}

    {{ tutorial.description }}

    {% endif %} +
    +
    + +
    + {% endfor %} +
    +
    +
    +
    +
    From ea0a74b1c93c51b5d07e93d9f3fab74e46b05bfc Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Tue, 19 Oct 2021 17:20:37 +0200 Subject: [PATCH 0273/1704] Move links to Cheatsheet and Glossary into the Reference submenu Also tweak the wording of the API entry in the Scala 3 landing page. --- _data/doc-nav-header.yml | 10 +++++----- index.md | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_data/doc-nav-header.yml b/_data/doc-nav-header.yml index 8d715a7b1f..8959867083 100644 --- a/_data/doc-nav-header.yml +++ b/_data/doc-nav-header.yml @@ -31,10 +31,14 @@ url: "/books.html" - title: Scala FAQ url: "/tutorials/FAQ/index.html" - - title: Language Spec + - title: Language Specification url: http://scala-lang.org/files/archive/spec/2.13/ - title: Style Guide url: "/style/index.html" + - title: Cheatsheet + url: "/cheatsheets/index.html" + - title: Glossary + url: "/glossary/index.html" - title: API url: "#" submenu: @@ -42,9 +46,5 @@ url: https://www.scala-lang.org/api/current/ - title: All Versions url: "/api/all.html" -- title: Cheatsheet - url: "/cheatsheets/index.html" -- title: Glossary - url: "/glossary/index.html" - title: SIPs url: "/sips/index.html" diff --git a/index.md b/index.md index 50eeb05044..ce520d108e 100644 --- a/index.md +++ b/index.md @@ -32,8 +32,8 @@ scala3-sections: description: "Detailed guides about particular aspects of the language." icon: "fa fa-map" link: /scala3/guides.html - - title: "API" - description: "API documentation for every version of Scala 3." + - title: "Scala Library API" + description: "API documentation for every version of the Scala 3 standard library." icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "Language Reference" From d9a361c762cd782c4ef5d5974bb3187eb3742c33 Mon Sep 17 00:00:00 2001 From: Peter Nuernberg Date: Wed, 20 Oct 2021 15:30:31 -0500 Subject: [PATCH 0274/1704] changed index '9' to '0' in match types / dependent typing example --- _scala3-reference/new-types/match-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/new-types/match-types.md b/_scala3-reference/new-types/match-types.md index 2516fe78e3..70d34ff416 100644 --- a/_scala3-reference/new-types/match-types.md +++ b/_scala3-reference/new-types/match-types.md @@ -69,7 +69,7 @@ use of the match type as the return type): ```scala def leafElem[X](x: X): LeafElem[X] = x match case x: String => x.charAt(0) - case x: Array[t] => leafElem(x(9)) + case x: Array[t] => leafElem(x(0)) case x: Iterable[t] => leafElem(x.head) case x: AnyVal => x ``` From de58e2eba6041370fcce6732112b1eb63816d6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Thu, 21 Oct 2021 19:22:57 +0200 Subject: [PATCH 0275/1704] Update Scala version to 3.1.0 --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index f21616ea6a..4775776995 100644 --- a/_config.yml +++ b/_config.yml @@ -17,7 +17,7 @@ keywords: scala-version: 2.13.6 scala-212-version: 2.12.15 -scala-3-version: 3.0.2 +scala-3-version: 3.1.0 scala-3-plugin-version: 0.5.1 collections: From 120377d005c5f330112a6617f35d1f645836c65e Mon Sep 17 00:00:00 2001 From: Peter Nuernberg Date: Thu, 21 Oct 2021 17:50:05 -0500 Subject: [PATCH 0276/1704] changed 'pattern' to 'patterns' to get noun-verb agreement on pattern matching page in Scala 3 reference --- _scala3-reference/changed-features/pattern-matching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/changed-features/pattern-matching.md b/_scala3-reference/changed-features/pattern-matching.md index 2216d145a8..c0f3afa1f5 100644 --- a/_scala3-reference/changed-features/pattern-matching.md +++ b/_scala3-reference/changed-features/pattern-matching.md @@ -96,7 +96,7 @@ A usage of a variadic extractor is irrefutable if one of the following condition ## Boolean Match - `U =:= Boolean` -- Pattern-matching on exactly `0` pattern +- Pattern-matching on exactly `0` patterns For example: From e7ff0822b60bea03aa2c114e7ddf97a1906d178f Mon Sep 17 00:00:00 2001 From: Kristijan Weiss <35603715+krisweiss@users.noreply.github.com> Date: Tue, 26 Oct 2021 22:15:28 +0200 Subject: [PATCH 0277/1704] Case Classes example with string interpolation As seen: https://github.com/scala/docs.scala-lang/issues/2210 --- _tour/basics.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_tour/basics.md b/_tour/basics.md index f5acd95ab3..2ba7e70655 100644 --- a/_tour/basics.md +++ b/_tour/basics.md @@ -222,15 +222,15 @@ Instances of case classes are compared by value, not by reference: ```scala mdoc if (point == anotherPoint) { - println(point + " and " + anotherPoint + " are the same.") + println(s"$point and $anotherPoint are the same.") } else { - println(point + " and " + anotherPoint + " are different.") + println(s"$point and $anotherPoint are different.") } // Point(1,2) and Point(1,2) are the same. if (point == yetAnotherPoint) { - println(point + " and " + yetAnotherPoint + " are the same.") + println(s"$point and $yetAnotherPoint are the same.") } else { - println(point + " and " + yetAnotherPoint + " are different.") + println(s"$point and $yetAnotherPoint are different.") } // Point(1,2) and Point(2,2) are different. ``` From d7ff0c53ef07aee97990535451f7caec88ce9705 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 1 Nov 2021 09:04:05 -0700 Subject: [PATCH 0278/1704] Scala 2.13.7 (#2214) --- _config.yml | 2 +- _overviews/jdk-compatibility/overview.md | 4 ++-- api/all.md | 12 ++++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/_config.yml b/_config.yml index 4775776995..db20abae43 100644 --- a/_config.yml +++ b/_config.yml @@ -15,7 +15,7 @@ keywords: - Document - Guide -scala-version: 2.13.6 +scala-version: 2.13.7 scala-212-version: 2.12.15 scala-3-version: 3.1.0 scala-3-plugin-version: 0.5.1 diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 325912be69..1955bc0805 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -12,7 +12,7 @@ Sometimes new JVM and JDK (Java Development Kit) versions require us to update S | JDK version | Minimum Scala versions | Recommended Scala versions | |:-----------:|:---------------------------------|:-----------------------------------------------------------| -| 18 | 2.13.7 (forthcoming), 2.12.15 | 2.13.7 (forthcoming), 2.12.15 | +| 18 | 2.13.7, 2.12.15 | 2.13.7, 2.12.15 | | 17 | 2.13.6, 2.12.15 | 2.13.6, 2.12.15 | | 11 | 2.13.0, 2.12.4, 2.11.12 | 2.13.6, 2.12.14, 2.11.12 | | 8 | 2.13.0, 2.12.0, 2.11.0, 2.10.2 | 2.13.6, 2.12.14, 2.11.12, 2.10.7 | @@ -79,7 +79,7 @@ For possible issues, see the [jdk11](https://github.com/scala/bug/labels/jdk11) Early access builds of JDK 18, a non-LTS release, are already available. -We will ship basic JDK 18 support in Scala 2.13.7 (and the same support has already shipped in 2.12.15). The needed fixes are already available in nightly builds of 2.13. +Initial support for JDK 18 is included in Scala 2.13.7 and 2.12.15. ## GraalVM Native Image compatibility notes diff --git a/api/all.md b/api/all.md index 0d7023b578..d38bd666ad 100644 --- a/api/all.md +++ b/api/all.md @@ -6,10 +6,10 @@ includeTOC: true ## Latest releases -* Scala 2.13.6 - * [Library API](https://www.scala-lang.org/api/2.13.6/) - * [Compiler API](https://www.scala-lang.org/api/2.13.6/scala-compiler/scala/) - * [Reflection API](https://www.scala-lang.org/api/2.13.6/scala-reflect/scala/reflect/) +* Scala 2.13.7 + * [Library API](https://www.scala-lang.org/api/2.13.7/) + * [Compiler API](https://www.scala-lang.org/api/2.13.7/scala-compiler/scala/) + * [Reflection API](https://www.scala-lang.org/api/2.13.7/scala-reflect/scala/reflect/) * Scala 2.12.15 * [Library API](https://www.scala-lang.org/api/2.12.15/) * [Compiler API](https://www.scala-lang.org/api/2.12.15/scala-compiler/scala/) @@ -58,6 +58,10 @@ https://scala-ci.typesafe.com/artifactory/scala-integration/org/scala-lang/ ## Previous releases +* Scala 2.13.6 + * [Library API](https://www.scala-lang.org/api/2.13.6/) + * [Compiler API](https://www.scala-lang.org/api/2.13.6/scala-compiler/scala/) + * [Reflection API](https://www.scala-lang.org/api/2.13.6/scala-reflect/scala/reflect/) * Scala 2.13.5 * [Library API](https://www.scala-lang.org/api/2.13.5/) * [Compiler API](https://www.scala-lang.org/api/2.13.5/scala-compiler/scala/) From f796f40c17f276b0e41c70af72cfdb836158f33e Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Wed, 10 Nov 2021 11:11:34 +0800 Subject: [PATCH 0279/1704] Add zh-cn translation for doc index. --- _zh-cn/index.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/_zh-cn/index.md b/_zh-cn/index.md index d8ef4874f8..feb89a1dc6 100644 --- a/_zh-cn/index.md +++ b/_zh-cn/index.md @@ -33,14 +33,26 @@ scala3-sections: description: "关于语言特别之处的详细导览" icon: "fa fa-map" link: /scala3/guides.html - - title: "API" - description: "Scala 3 各个版本的API" + - title: "Scala 库 API" + description: "Scala 3 标准库API文档(多个小版本)" icon: "fa fa-file-alt" link: https://scala-lang.org/api/3.x/ - title: "语言参考手册" description: "Scala 3 语言参考手册" icon: "fa fa-book" link: /scala3/reference/overview.html + - title: "贡献指南" + description: "Scala 3 编译器指南及如何贡献代码" + icon: "fa fa-cogs" + link: /scala3/guides/contribution/contribution-intro.html + - title: "Scala 3 全新的 Scaladoc" + description: "Scaladoc 新特性重点介绍" + icon: "fa fa-star" + link: /scala3/scaladoc.html + - title: "演讲" + description: "可在线观看的关于 Scala 3 的演讲" + icon: "fa fa-play-circle" + link: /scala3/talks.html scala2-sections: From 70f82780f6c581f7e1ad97157b62aaa03bb40925 Mon Sep 17 00:00:00 2001 From: "r.ishibashi" Date: Thu, 11 Nov 2021 08:33:56 +0900 Subject: [PATCH 0280/1704] Translated the new getting-started page into Japanese. And, apply the advice given by eed3si9n. --- _ja/getting-started/index.md | 177 ++++++++++++++++++++++++++++++----- 1 file changed, 151 insertions(+), 26 deletions(-) diff --git a/_ja/getting-started/index.md b/_ja/getting-started/index.md index 09951a5acf..b3b32e468d 100644 --- a/_ja/getting-started/index.md +++ b/_ja/getting-started/index.md @@ -6,47 +6,172 @@ language: ja includeTOC: true --- -
    Scala で作業するには主に 2通り の方法があります。
    +このページは Scala 2と Scala 3の両方に対応しています。 -1. IDE を使う -2. コマンドラインを使う +## インストールなしで今すぐ Scala を試す! -以下のチュートリアルでは、どちらかお好みの方法をセットアップする一連のプロセスを通して行っていきます。 +Scala を今すぐ試すにはブラウザで「Scastie」を使います。 +Scastieは Scala のサンプルコードがどのように動作するかをブラウザで簡単に試すことができるオンライン「playground」で、様々なバージョンのコンパイラと公開されているライブラリが利用できます。 -ですが、もし何もインストールせずに直接 Scala に飛び込んでみたければ、このページのガイドは飛ばして、以下をチェックしてみましょう。 +> Scastie は Scala 2と Scala 3の両方をサポートしていますが、デフォルトでは Scala 3になっています。Scala 2のスニペットをお探しの方は、[こちら](https://scastie.scala-lang.org/MHc7C9iiTbGfeSAvg8CKAA)をご覧ください。 -* [scala-exercises.com での Scala のインタラクティブな導入](https://www.scala-exercises.org/scala_tutorial/terms_and_types) -* [Scastie](https://scastie.scala-lang.org/)。ブラウザで動く Scalaで、すべての Scala コンパイラと公開されたライブラリにアクセス可能。 +## コンピューターに Scala をインストールする -## Scala のセットアップ方法 +Scala をインストールすると、コンパイラやビルドツールなどの様々なコマンドラインツールが同時にインストールされます。 +私たちは必須ツール全てを確実にインストールするために「Coursier」の使用をお勧めしますが、それらを手動でインストールすることもできます。 -### IDE が好きな人はこちら... +### Scala インストーラーを使う(推奨) -Intellij は、Scala 開発者にもっともよく使われている IDE です。 -このチュートリアルでは、Intellij をダウンロードして Scala プラグインをセットアップするまでを通して行い、それから初めての Scala プロジェクトを開始して、ユニットテストを完了させます! +Scala のインストーラーは[Coursier](https://get-coursier.io/docs/cli-overview)というツールで、コマンドは`cs`です。このツールを使うと、JVM と標準 Scala ツールがシステムにインストールされます。 +以下の手順でお使いのシステムにインストールしてください。 -* [Intellij で Scala を始める](/ja/getting-started/intellij-track/getting-started-with-scala-in-intellij.html) -* [Intellij で sbt を使って Scala プロジェクトをビルドする](/ja/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html) -* [Intelij で ScalaTest を使って Scala をテストする](/ja/getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.html) +
    +
    +

    Follow the instructions to install the cs launcher then run:

    +

    $ ./cs setup

    +
    +
    -### コマンドラインが好きな人はこちら... +`cs setup` は JVM の管理だけでなく、便利なコマンドラインツールもインストールします: -emacs、Vim、Atom、Sublime Text のようなテキストエディターの使用がお好みでしたら、Scala コードをコンパイル、テスト、実行する最良の方法は、**sbt**(Scala build tool) を使うことです。 +- JDK (インストール済みでなければ) +- [sbt](https://www.scala-sbt.org/) ビルドツール +- [Ammonite](https://ammonite.io/), 強化された REPL +- [scalafmt](https://scalameta.org/scalafmt/), コードフォーマッター +- `scalac` (Scala 2 コンパイラー) +- `scala` (Scala 2 の REPL と script runner). -* [コマンドラインの sbt で Scala を始める](/ja/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.html) -* [コマンドラインで ScalaTest を使って Scala をテストする](/ja/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.html) +`cs`の詳細については、[ccoursier-cliのドキュメント](https://get-coursier.io/docs/cli-overview)をご覧ください。 -## 次のステップ +> 現在`cs setup` は Scala 2 のコンパイラとランナー(それぞれ`scalac`と`scala`コマンド)をインストールします。ほとんどのプロジェクトでは Scala 2 と Scala 3 の両方に対応したビルドツールを使用しているので、通常は問題になりません。しかし、以下の追加コマンドを実行することで、Scala 3のコンパイラとランナーをコマンドラインツールとしてインストールすることができます。 +> ``` +> $ cs install scala3-compiler +> $ cs install scala3 +> ``` -このチュートリアルを終えたら、次をチェックしてみましょう。 +### 手動でのインストール -* [Scala ツアー](/ja/tour/tour-of-scala.html)は、Scala の特徴を簡単に理解できるサイズで紹介します。 -* [学習リソース](/learn.html)(英語のみ)は、オンラインのインタラクティブなチュートリアルや教材を紹介します。 -* [Scala の人気書籍一覧](/books.html)(訳注:英語のみですが、邦訳されたものもあります)。 +Scala プロジェクトのコンパイル、実行、テスト、パッケージ化に必要なツールは Java と sbt の2つだけです。 +Java のバージョンは8または11です。 +これらを手動でインストールするには: -## ヘルプが必要な人は +1. Java 8または11がインストールされていない場合は、[Oracle Java 8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html)、[Oracle Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)、または[AdoptOpenJDK 8/11](https://adoptopenjdk.net/)からJavaをダウンロードしてください。Scala と Java の互換性の詳細については、[JDK Compatibility](/overviews/jdk-compatibility/overview.html)を参照してください。 +1. [sbt](https://www.scala-sbt.org/download.html)をインストールしてください。 + +## sbt で「Hello World」プロジェクトを作成する + +sbt をインストールしたら、次のセクションで説明する Scala プロジェクトを作成する準備ができました。 + +プロジェクトの作成には、コマンドラインまたはIDEを使用します。コマンドラインに慣れている方は、その方法をお勧めします。 + +### コマンドラインを使う + +sbt は、Scala のビルドツールです。sbt は、Scala のコードをコンパイルし、実行し、テストします。(sbt は、Scala コードのコンパイル、実行、テストを行います(ライブラリの公開やその他多くのタスクも可能です)。 + +sbt で新しい Scala プロジェクトを作成するには、以下の手順で行います: + +1. 空のディレクトリに`cd`する. +1. Scala 3プロジェクトを作成する場合は`sbt new scala/scala3.g8`、Scala 2プロジェクトを作成する場合は`sbt new scala/hello-world.g8`というコマンドを実行します。これは、GitHub からプロジェクトのテンプレートを引き出します。このとき"target"という名前のディレクトリが作成されますが無視してください。 +1. プロンプトが表示されたら、アプリケーションの名前を`hello-world`とします。これにより、"hello-world "というプロジェクトが作成されます。 +1. それでは、生成されたばかりのものを見てみましょう: + +``` +- hello-world + - project (sbt が利用するファイル) + - build.properties + - build.sbt (sbt のビルド定義) + - src + - main + - scala (あなたの Scala のコードはすべてここに入る) + - Main.scala (プログラムのエントリーポイント) <-- 今、必要なのはこれだけです +``` + +sbt についての詳しいドキュメントは、[Scala Book](/scala3/book/tools-sbt.html)([Scala 2バージョンはこちら](/overviews/scala-book/scala-build-tool-sbt.html))と、[sbt の公式ドキュメント](https://www.scala-sbt.org/1.x/docs/ja/index.html)に掲載されています。 + +### IDEを使う + +このページの残りの部分を読み飛ばして、[Building a Scala Project with IntelliJ and sbt](/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html)に進んでも問題ありません。 + +## hello-world プロジェクトを開く + +IDE を使ってプロジェクトを開いてみましょう。最もポピュラーなものは IntelliJ と VSCode です。どちらも豊富な IDE 機能を備えていますが、他にも[多くのエディタ](https://scalameta.org/metals/docs/editors/overview.html)を使うことができます。 + +### IntelliJ を使う + +1. [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/)をダウンロードしてインストールします。 +1. IntelliJ プラグインのインストール方法にしたがって、[Scala プラグインをインストール](https://www.jetbrains.com/help/idea/managing-plugins.html)します。 +1. `build.sbt`ファイルを開き、*Open as a project*を選択します。 -他の Scala ユーザーとすばやくつながりたいとときには、メーリングリストやリアルタイムのチャットチャンネルがたくさんあります。 -こうしたリソースや助けを求められる場所を一覧できる [community](https://scala-lang.org/community/) ページをチェックしてみてください。 +### VSCode で metals を使う +1. [VSCode](https://code.visualstudio.com/Download)をダウンロードする +1. [Marketplace](https://marketplace.visualstudio.com/items?itemName=scalameta.metals)から Metals extension をインストールする +1. 次に、build.sbt ファイルがあるディレクトリを開きます(前の指示に従った場合は、hello-world というディレクトリになるはずです)。プロンプトが表示されたら、「Import build」を選択します。 + +> +>[Metals](https://scalameta.org/metals) は、[VS Codeや Atom、Sublime Textなど](https://scalameta.org/metals/docs/editors/overview.html)のエディタで Scala のコードを書くためのサポートを提供する「Scala 言語サーバ」であり、Language Server Protocol を使用しています。 +> Metalsはバックグラウンドで[BSP(Build Server Protocol)](https://build-server-protocol.github.io/)を使用してビルドツールと通信します。Metalsの仕組みについては、[「Write Scala in VS Code, Vim, Emacs, Atom and Sublime Text with Metals」](https://www.scala-lang.org/2019/04/16/metals.html)を参照してください。 + +### ソースコードをいじってみよう + +この2つのファイルを IDE で表示します: + +- _build.sbt_ +- _src/main/scala/Main.scala_ + +次のステップでプロジェクトを実行すると、_src/main/scala/Main.scala_のコードを実行するために、_build.sbt_の設定が使われます。 + +## Hello World の実行 + +IDE の使用に慣れている場合は、IDE から_Main.scala_のコードを実行することができます。 + +または、以下の手順でターミナルからアプリケーションを実行できます: + +1. `hello-world`ディレクトリに`cd` する +1. `sbt`コマンドを実行し、sbt console を開く +1. `~run`と打ち込む。 `~` は全てのコマンドの前に追加できるコマンドで、ファイル保存を検知してコマンドを再実行してくれるため、編集・実行・デバッグのサイクルを高速に行うことができます。sbt はここでも`target`ディレクトリを生成しますが無視してください。 + +このプロジェクトの`run`を止めたければ、`[Enter]`を押して`run`コマンドを中断します。その後`exit`と入力するか`[Ctrl+D]`を押すと sbt が終了し、コマンドラインプロンプトに戻ります。 + +## 次のステップ + +上記のチュートリアルの後は以下の教材に進んでください。 + +* [The Scala Book](/scala3/book/introduction.html) (Scala 2版は[こちら](/overviews/scala-book/introduction.html))はScalaの主な機能を紹介する短いレッスンのセットを提供します。 +* [The Tour of Scala](/tour/tour-of-scala.html) Scalaの機能を一口サイズで紹介します。 +* [Learning Resources](/learn.html) オンラインのインタラクティブなチュートリアルやコースです。 +* [books](/books.html) 人気のある Scalaの 書籍を紹介します +* [The migration guide](/scala3/guides/migration/compatibility-intro.html) 既存の Scala 2コードベースを Scala 3に移行する際に役立ちます。 + +## ヘルプが必要な人は +他の Scala ユーザーとすぐに連絡を取りたい場合は、多くのメーリングリストやリアルタイムのチャットルームがあります。これらのリソースのリストや、どこに問い合わせればよいかについては、[コミュニティページ](https://scala-lang.org/community/)をご覧ください。 + +### (日本語のみ追記) +Scala について日本語で質問したい場合、Twitterでつぶやくと気づいた人が教えてくれます。 + + + + + + + + + From 0cb201001263407f4c09e36f61294cb875da9fcd Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Fri, 12 Nov 2021 09:56:40 +0800 Subject: [PATCH 0281/1704] Fix problem that language dropdown lost when change to ja language. --- _ja/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_ja/index.md b/_ja/index.md index a908d62b37..a64b13546e 100644 --- a/_ja/index.md +++ b/_ja/index.md @@ -2,6 +2,7 @@ layout: documentation title: ドキュメント language: ja +partof: documentation more-resources-label: その他のリソース From 77a7325f8a89311153f18af0f39db9e3f618625e Mon Sep 17 00:00:00 2001 From: Mukesh Prajapati Date: Fri, 12 Nov 2021 07:44:22 +0530 Subject: [PATCH 0282/1704] Updated arraybuffer-examples.md (#2221) --- _overviews/scala-book/arraybuffer-examples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala-book/arraybuffer-examples.md b/_overviews/scala-book/arraybuffer-examples.md index fba905bc89..8d4dd8ef53 100644 --- a/_overviews/scala-book/arraybuffer-examples.md +++ b/_overviews/scala-book/arraybuffer-examples.md @@ -46,7 +46,7 @@ scala> ints += 2 res1: ints.type = ArrayBuffer(1, 2) ``` -That’s just one way create an `ArrayBuffer` and add elements to it. You can also create an `ArrayBuffer` with initial elements like this: +That’s just one way to create an `ArrayBuffer` and add elements to it. You can also create an `ArrayBuffer` with initial elements like this: ```scala val nums = ArrayBuffer(1, 2, 3) From 5f5b27c226e6b96628fc0ff609ef6040dd0ac142 Mon Sep 17 00:00:00 2001 From: Mukesh Prajapati Date: Fri, 12 Nov 2021 12:04:02 +0530 Subject: [PATCH 0283/1704] Updated no-null-values.md (#2224) --- _overviews/scala-book/no-null-values.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala-book/no-null-values.md b/_overviews/scala-book/no-null-values.md index dc77febe52..757fc62670 100644 --- a/_overviews/scala-book/no-null-values.md +++ b/_overviews/scala-book/no-null-values.md @@ -120,7 +120,7 @@ val y = for { When that expression finishes running, `y` will be one of two things: - If all three strings convert to integers, `y` will be a `Some[Int]`, i.e., an integer wrapped inside a `Some` -- If any of the three strings can’t be converted to an inside, `y` will be a `None` +- If any of the three strings can’t be converted to an integer, `y` will be a `None` You can test this for yourself in the Scala REPL. First, paste these three string variables into the REPL: From f52c4c88e190cbd9ea26260e4574d616a203a8cd Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 15 Nov 2021 18:34:36 -0800 Subject: [PATCH 0284/1704] corrections to JDK compatibility page (#2226) --- _overviews/jdk-compatibility/overview.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 1955bc0805..bb8dc57605 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -13,9 +13,9 @@ Sometimes new JVM and JDK (Java Development Kit) versions require us to update S | JDK version | Minimum Scala versions | Recommended Scala versions | |:-----------:|:---------------------------------|:-----------------------------------------------------------| | 18 | 2.13.7, 2.12.15 | 2.13.7, 2.12.15 | -| 17 | 2.13.6, 2.12.15 | 2.13.6, 2.12.15 | -| 11 | 2.13.0, 2.12.4, 2.11.12 | 2.13.6, 2.12.14, 2.11.12 | -| 8 | 2.13.0, 2.12.0, 2.11.0, 2.10.2 | 2.13.6, 2.12.14, 2.11.12, 2.10.7 | +| 17 | 2.13.6, 2.12.15 | 2.13.7, 2.12.15 | +| 11 | 2.13.0, 2.12.4, 2.11.12 | 2.13.7, 2.12.15, 2.11.12 | +| 8 | 2.13.0, 2.12.0, 2.11.0, 2.10.2 | 2.13.7, 2.12.15, 2.11.12, 2.10.7 | | 6, 7 | 2.11.0, 2.10.0 | 2.11.12, 2.10.7 | Even when a version combination isn't listed as supported, most features may still work. (But Scala 2.12+ definitely doesn't work at all on JDK 6 or 7.) @@ -30,7 +30,7 @@ We generally recommend JDK 8 or 11 for *compiling* Scala code. Since the JVM ten If you compile on JDK 11+ but have users on JDK 8, additional care is needed to avoid using APIs and features that don't exist in 8. Therefore, compiling on 8 may be the safer choice. Some Scala developers use JDK 11+ for their daily work but do release builds on JDK 8. -Additionally, you can also run your scala application on GraalVM which is a JVM. GraalVM performs well on the Scala benchmarks, and it benefits from GraalVM runtime and runs faster too. +Additionally, you can also run your Scala application on GraalVM which is a JVM. GraalVM performs well on the Scala benchmarks, and it benefits from GraalVM runtime and runs faster too. ## Long Term Support (LTS) versions From 79fd6155ecdb1adf01207ba96ddbf84399ea8ea9 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 18 Nov 2021 06:37:13 -0800 Subject: [PATCH 0285/1704] FAQ: add sbt bare settings (#2227) --- _overviews/FAQ/index.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/_overviews/FAQ/index.md b/_overviews/FAQ/index.md index e74d5a9a4a..42f5406a90 100644 --- a/_overviews/FAQ/index.md +++ b/_overviews/FAQ/index.md @@ -277,3 +277,33 @@ give the compiler, then it's a compiler bug. Please report it on the [Scala 2 bug tracker](https://github.com/scala/bug/issues) or [Scala 3 bug tracker](https://github.com/lampepfl/dotty/issues), but check first if it's a duplicate of an existing ticket. + +### I set a setting in sbt but nothing happened. Why? + +There could be a lot of reasons. An extremely common one, that +almost everyone runs into sooner or later, is that you have a bare +setting in a multi-project build. + +For example, if you add this to your `build.sbt`: + + scalaVersion := "2.13.7" + +that's a "bare" setting, and you might expect it to apply build-wide. +But it doesn't. _It only applies to the root project._ + +In many cases one should simply write instead: + + ThisBuild / scalaVersion := "2.13.7" + +Other possibilities include: + +* the common settings pattern, where you put shared settings + in a `val`, typically named `commonSettings`, and then + `.settings(commonSettings)` in every project you want to + apply to them to. +* in interactive usage only, `set every` + +Here's some further reading: + +* [documentation on multi-project builds](https://www.scala-sbt.org/1.x/docs/Multi-Project.html#ThisBuild) +* [issue about bare settings](https://github.com/sbt/sbt/issues/6217) From 047f1dbee3072ee9d3d75b66abd7fa9bfb128eae Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Fri, 19 Nov 2021 06:54:31 +0800 Subject: [PATCH 0286/1704] Change to use the matched translated url for zh-cn index --- _zh-cn/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_zh-cn/index.md b/_zh-cn/index.md index feb89a1dc6..93d0b0514f 100644 --- a/_zh-cn/index.md +++ b/_zh-cn/index.md @@ -65,11 +65,11 @@ scala2-sections: - title: "Scala之旅" description: "核心语言特性简介" icon: "fa fa-flag" - link: /tour/tour-of-scala.html + link: /zh-cn/tour/tour-of-scala.html - title: "Java程序员Scala入门" description: "为具有Java背景的程序员准备的Scala简介" icon: "fa fa-coffee" - link: /tutorials/scala-for-java-programmers.html + link: /zh-cn/tutorials/scala-for-java-programmers.html more-resources: - title: 在线课程、练习和博客 url: /learn.html @@ -85,7 +85,7 @@ scala2-sections: - title: "总览" description: "涵盖Scala各种特性的深度分析文档" icon: "fa fa-database" - link: /overviews/index.html + link: /zh-cn/overviews/index.html - title: "风格引导" description: "深度指导如何写出地道的Scala代码" icon: "fa fa-bookmark" @@ -93,7 +93,7 @@ scala2-sections: - title: "速查" description: "包含Scala基础语法的速查手册" icon: "fa fa-list" - link: /cheatsheets/index.html + link: /zh-cn/cheatsheets/index.html - title: "Scala常见问题" description: "Scala语言特性的常见问题及答案" icon: "fa fa-question-circle" From 3ac17d3e4bf8c5d79c495fc12d4073bb840352eb Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Sun, 21 Nov 2021 15:54:10 +0800 Subject: [PATCH 0287/1704] [zh-cn] Chinese Simple translation for the new overview page. --- _data/overviews-zh-cn.yml | 324 ++++++++++++++++++++++++++++++++++++++ _zh-cn/overviews/index.md | 50 +----- 2 files changed, 326 insertions(+), 48 deletions(-) create mode 100644 _data/overviews-zh-cn.yml diff --git a/_data/overviews-zh-cn.yml b/_data/overviews-zh-cn.yml new file mode 100644 index 0000000000..d264b4e5d1 --- /dev/null +++ b/_data/overviews-zh-cn.yml @@ -0,0 +1,324 @@ +- category: 标准库 + description: "涵盖 Scala 标准库的参考与概览" + overviews: + - title: Scala 容器 + by: Martin Odersky and Julien Richard-Foy + icon: sitemap + url: "collections-2.13/introduction.html" + description: "Scala 的容器库" + subdocs: + - title: 简介 + url: "collections-2.13/introduction.html" + - title: 可变与不可变容器 + url: "collections-2.13/overview.html" + - title: Iterable 特质 + url: "collections-2.13/trait-iterable.html" + - title: 序列特质 Seq, IndexedSeq, 和 LinearSeq + url: "collections-2.13/seqs.html" + - title: 具体不可变容器类 + url: "collections-2.13/concrete-immutable-collection-classes.html" + - title: 具体可变容器类 + url: "collections-2.13/concrete-mutable-collection-classes.html" + - title: 数组 + url: "collections-2.13/arrays.html" + - title: 字符串 + url: "collections-2.13/strings.html" + - title: 性能特点 + url: "collections-2.13/performance-characteristics.html" + - title: 相等性 + url: "collections-2.13/equality.html" + - title: 视图 + url: "collections-2.13/views.html" + - title: 迭代器 + url: "collections-2.13/iterators.html" + - title: 从头开始创建容器 + url: "collections-2.13/creating-collections-from-scratch.html" + - title: Java 与 Scala 间的容器转换 + url: "collections-2.13/conversions-between-java-and-scala-collections.html" + - title: 迁移项目容器至 Scala 2.13 的容器 + icon: sitemap + url: "core/collections-migration-213.html" + description: "本篇向欲迁移至 Scala 2.13 的容器用户介绍了主要变更并展示了如何通过 Scala 2.11,2.12 和 2.13 进行交叉编译" + - title: Scala 容器架构 + icon: sitemap + url: "core/architecture-of-scala-213-collections.html" + by: Julien Richard-Foy + description: "这几篇介绍了引进到 Scala 2.13 中的容器框架的架构,对照容器API就能知晓更多框架内部工作机制" + - title: 实现定制容器 + icon: building + url: "core/custom-collections.html" + by: Martin Odersky, Lex Spoon and Julien Richard-Foy + description: "从本篇中你会了解到如何利用容器框架通过几行代码来定义自己的容器,来重用来自框架的绝大部分容器功能。" + - title: 新增定制的容器操作 + icon: building + url: "core/custom-collection-operations.html" + by: Julien Richard-Foy + description: "本篇展示了如何定制可应用于任意容器类型并返回相同类型的操作,以及如何定制带有欲编译容器类型参数的操作" + +- category: 语言 + description: "涵盖 Scala 语言特性的参考与概览" + overviews: + - title: 字符串内插 + icon: dollar-sign + url: "core/string-interpolation.html" + description: > + 字符串内插允许用户在字符串字面插值中直接嵌入变量引用。这里有个例子: + String Interpolation allows users to embed variable references directly in processed string literals. Here’s an example: +
    val name = "James"
    +          println(s"Hello, $name")  // Hello, James
    + 上例中,字面值 s"Hello, $name" 是个字符串字面插值,意味着编译器会对该字面值做些额外工作。字符串字面插值通过双引号前增加前导字符来表示。字符串插值由 SIP-11 引入,其中包含了所有实现细节。 + - title: 隐式类 + by: Josh Suereth + description: "Scala 2.10 中引入了一个新特性叫隐式类。隐式类是一个由 implicit 关键字标记的类,当类在作用域内时该关键字使得类的主构造器可用于隐式转换。" + url: "core/implicit-classes.html" + - title: 值类和通用特质 + by: Mark Harrah + description: "值类是 Scala 中摒弃创建运行时对象的一种新机制,可通过定义 AnyVal 的子类来实现" + icon: gem + url: "core/value-classes.html" + +- category: 创作库 + description: "参考如何为 Scala 生态贡献开源库" + overviews: + - title: 库作者参考 + by: "Julien Richard-Foy" + icon: tasks + url: "contributors/index.html" + description: "列出库作者为库发布及库文档所需设置的所有工具" + +- category: 并行和并发编程 + description: "涵盖 Scala 并行和并发编程库的完全指南" + overviews: + - title: Futures 和 Promises + by: "Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, and Vojin Jovanovic" + icon: tasks + url: "core/futures.html" + description: "Futures 提供了一种推导并行执行多个操作的方式,即高效非阻塞的方式。一个 Future 就是一个可能还不存在的值的占位对象。通常来讲,Future 是并发赋值但顺序使用。这种方式来组织并发任务结果常常是更快的异步的非阻塞的并行代码。" + - title: 并行容器 + by: Aleksandar Prokopec and Heather Miller + icon: rocket + url: "parallel-collections/overview.html" + description: "Scala 并行容器库" + subdocs: + - title: 概览 + url: "parallel-collections/overview.html" + - title: 具体的并行容器类 + url: "parallel-collections/concrete-parallel-collections.html" + - title: 并行容器转换 + url: "parallel-collections/conversions.html" + - title: 并发字典树 + url: "parallel-collections/ctries.html" + - title: 并行容器库架构 + url: "parallel-collections/architecture.html" + - title: 创建定制的并行容器 + url: "parallel-collections/custom-parallel-collections.html" + - title: 配置并行容器 + url: "parallel-collections/configuration.html" + - title: 衡量性能 + url: "parallel-collections/performance.html" + +- category: 兼容性 + description: "各种(非)兼容性" + overviews: + - title: JDK 版本兼容性 + description: "Scala版本与JDK版本的兼容性" + icon: coffee + url: "jdk-compatibility/overview.html" + - title: Scala 各版本的二进制兼容性 + description: "当两个 Scala 版本是二进制兼容时,在一个 Scala 上编译的项目连接在另一个 Scala 的运行时将是安全的。安全的运行时连接(仅!)意味着 JVM 在这种混合场景下运行你的程序没有抛出连接错误(及其子类),且假使编译和运行在单一版本的 Scala 上没问题的情况下。具体点说,就是可能在你的运行时类路径中有外部依赖,这些依赖使用了跟你正在编译用到的不同版本的 Scala,只要他们是二进制兼容的。换句话说,在二进制兼容的不同版本上分开编译相比于在同一个版本上编译和运行所有东西不会带来问题。" + icon: puzzle-piece + url: "core/binary-compatibility-of-scala-releases.html" + - title: 针对库作者的二进制兼容性 + description: "一个多元综合的库集合对于任何软件生态来说都是重要的。尽管易于开发和分发 Scala 库,好的库管理者却不仅仅是写代码和发布它。此篇中覆盖了二进制兼容性的重要话题。" + icon: puzzle-piece + url: "core/binary-compatibility-for-library-authors.html" + +- category: "工具" + description: "关于核心 Scala 工具的参考材料,如 Scala REPL 和 Scaladoc 生成" + overviews: + - title: Scala REPL + icon: terminal + url: "repl/overview.html" + description: | + Scala REPL 是一个对 Scala 表达式求值的工具 (scala) +

    + scala 命令会通过包装源脚本到一模板中来执行它,然后编译并执行结果程序 + - title: Scaladoc + url: "scaladoc/overview.html" + icon: book + description: "Scala 的 API 文档生成工具" + subdocs: + - title: 概览 + url: "scaladoc/overview.html" + - title: 针对库作者的 Scaladoc + url: "scaladoc/for-library-authors.html" + - title: 使用 Scaladoc 接口 + url: "scaladoc/interface.html" + +- category: 编译器 + description: "涵盖 Scala 编译器的参考和概览:编译器插件,反射,以及元编程工具比如宏" + overviews: + - title: 反射 + by: Heather Miller, Eugene Burmako, and Philipp Haller + icon: binoculars + url: "reflection/overview.html" + description: Scala 的运行时和编译期的反射框架 + label-text: 实验 + subdocs: + - title: 概览 + url: "reflection/overview.html" + - title: 环境,通用和镜像(Environment, Universes, and Mirrors) + url: "reflection/environment-universes-mirrors.html" + - title: 符号,树和类型(Symbols, Trees, and Types) + url: "reflection/symbols-trees-types.html" + - title: 标号,名称,作用域及其他(Annotations, Names, Scopes, and More) + url: "reflection/annotations-names-scopes.html" + - title: TypeTags 和 Manifests + url: "reflection/typetags-manifests.html" + - title: 线程安全 + url: "reflection/thread-safety.html" + - title: Scala 2.11 中的变化 + url: "reflection/changelog211.html" + - title: 宏 + by: Eugene Burmako + icon: magic + url: "macros/usecases.html" + description: "Scala 的元编程框架" + label-text: 实验 + subdocs: + - title: 用例 + url: "macros/usecases.html" + - title: 黑盒与白盒 + url: "macros/blackbox-whitebox.html" + - title: Def 宏 + url: "macros/overview.html" + - title: 拟引号(Quasiquotes) + url: "quasiquotes/intro.html" + - title: 宏绑定 + url: "macros/bundles.html" + - title: 隐式宏 + url: "macros/implicits.html" + - title: Extractor 宏 + url: "macros/extractors.html" + - title: 类型 Providers + url: "macros/typeproviders.html" + - title: 宏标号 + url: "macros/annotations.html" + - title: 宏乐园 + url: "macros/paradise.html" + - title: 路线图 + url: "macros/roadmap.html" + - title: 2.11 中的变化 + url: "macros/changelog211.html" + - title: 拟引号 + by: Denys Shabalin + icon: quote-left + url: "quasiquotes/setup.html" + description: "拟引号是操作 Scala 语法树的便捷方式" + label-text: 实验 + subdocs: + - title: 依赖和设置 + url: "quasiquotes/setup.html" + - title: 简介 + url: "quasiquotes/intro.html" + - title: 提升(Lifting) + url: "quasiquotes/lifting.html" + - title: 拉降(Unlifting) + url: "quasiquotes/unlifting.html" + - title: 卫生(Hygiene) + url: "quasiquotes/hygiene.html" + - title: 用例 + url: "quasiquotes/usecases.html" + - title: 语法总结 + url: "quasiquotes/syntax-summary.html" + - title: 表达式细节 + url: "quasiquotes/expression-details.html" + - title: 类型细节 + url: "quasiquotes/type-details.html" + - title: 模式细节 + url: "quasiquotes/pattern-details.html" + - title: 定义和引用细节 + url: "quasiquotes/definition-details.html" + - title: 属于总结 + url: "quasiquotes/terminology.html" + - title: 未来展望 + url: "quasiquotes/future.html" + - title: 编译器插件 + by: Lex Spoon and Seth Tisue + icon: puzzle-piece + url: "plugins/index.html" + description: "编译器插件允许定制和扩展 Scala 编译器。本篇导引描述了插件设施并带你领略如何创作一个简单插件" + - title: 编译器选项 + by: Community + icon: cog + url: "compiler-options/index.html" + description: "控制 scalac 如何编译代码的各种选项" + - title: 错误格式 + by: Torsten Schmits + icon: cog + url: "compiler-options/errors.html" + description: "一个新的用户友好的错误消息引擎,可以打印依赖的隐式链,颜色区分找到的和所需的类型差异" + + +- category: 遗留问题 + description: "涵盖一些与最近的 Scala 版本(2.12+)不再相关的特性的参考" + overviews: + - title: Scala Actors迁移参考 + by: Vojin Jovanovic and Philipp Haller + icon: truck + url: "core/actors-migration-guide.html" + description: "为简化 Scala Actors 到 Akka 的迁移我们提供了 Actor 迁移包(Actor Migration Kit,简称 AMK)。迁移包中包含了 Scala Actors 的一个扩展,可以通过项目类路径中包含 scala-actors-migration.jar 来引入该扩展。另外,Akka 2.1 还包含一些新特性,比如 ActorDSL 单例,可使用 Scala Actors 编写的代码更易转换成 Akka 的。本篇目的是指导用户迁移过程并阐释如何使用 Actor 迁移包。" + - title: Scala Actors API + by: Philipp Haller and Stephen Tu + icon: users + url: "core/actors.html" + description: "本篇描述了 Scala 2.8/2.9 下 scala.actors 包的 API。其组织方式遵循逻辑上属于一块的组类型,特质层是考虑到组成其各自的部分,主要关注点在这些特质所定义的各种方法的运行时表现,由此也增补了已有的基于 Scaladoc 的API文档。" + label-color: "#899295" + label-text: 弃用 + - title: Scala 2.8 到 2.12 的容器 + by: Martin Odersky + icon: sitemap + url: "collections/introduction.html" + description: "Scala 的容器库" + subdocs: + - title: 简介 + url: "collections/introduction.html" + - title: 可变和不可变容器 + url: "collections/overview.html" + - title: Traversable 特质 + url: "collections/trait-traversable.html" + - title: Iterable 特质 + url: "collections/trait-iterable.html" + - title: 序列特质 Seq, IndexedSeq, 和 LinearSeq + url: "collections/seqs.html" + - title: 集合(Sets) + url: "collections/sets.html" + - title: 映射(Maps) + url: "collections/maps.html" + - title: 具体的不可变容器类 + url: "collections/concrete-immutable-collection-classes.html" + - title: 具体的可变容器类 + url: "collections/concrete-mutable-collection-classes.html" + - title: 数组 + url: "collections/arrays.html" + - title: 字符串 + url: "collections/strings.html" + - title: 性能特点 + url: "collections/performance-characteristics.html" + - title: 相等性 + url: "collections/equality.html" + - title: 视图 + url: "collections/views.html" + - title: 迭代器 + url: "collections/iterators.html" + - title: 从头开始创建容器 + url: "collections/creating-collections-from-scratch.html" + - title: Java 和 Scala 间容器转换 + url: "collections/conversions-between-java-and-scala-collections.html" + - title: 从 Scala 2.7 迁移 + url: "collections/migrating-from-scala-27.html" + - title: Scala 2.8 到 2.12 的容器架构 + icon: building + url: "core/architecture-of-scala-collections.html" + by: Martin Odersky and Lex Spoon + description: "本篇细致地描述了 Scala 容器框架的架构,对比容器 API 你会发现更多框架的内部工作机制。你也会学到该架构如何帮你通过几行代码定义自己的容器,来重用来自框架的绝大部分容器功能。" diff --git a/_zh-cn/overviews/index.md b/_zh-cn/overviews/index.md index 533785b420..38b8dc4ba2 100644 --- a/_zh-cn/overviews/index.md +++ b/_zh-cn/overviews/index.md @@ -1,54 +1,8 @@ --- -layout: inner-page-no-masthead +layout: overviews language: zh-cn partof: overviews title: 目录 --- -
    -

    核心库

    -
    - * Scala的容器类 - * [简介](/zh-cn/overviews/collections/introduction.html) - * [Mutable和Immutable集合](/zh-cn/overviews/collections/overview.html) - * [Trait Traversable](/zh-cn/overviews/collections/trait-traversable.html) - * [Trait Iterable](/zh-cn/overviews/collections/trait-iterable.html) - * [序列trait:Seq、IndexedSeq 及 LinearSeq](/zh-cn/overviews/collections/seqs.html) - * [集合](/zh-cn/overviews/collections/sets.html) - * [映射](/zh-cn/overviews/collections/maps.html) - * [具体的不可变集实体类](/zh-cn/overviews/collections/concrete-immutable-collection-classes.html) - * [具体的可变容器类](/zh-cn/overviews/collections/concrete-mutable-collection-classes.html) - * [数组](/zh-cn/overviews/collections/arrays.html) - * [字符串](/zh-cn/overviews/collections/strings.html) - * [性能特点](/zh-cn/overviews/collections/performance-characteristics.html) - * [等价性](/zh-cn/overviews/collections/equality.html) - * [视图](/zh-cn/overviews/collections/views.html) - * [Iterators](/zh-cn/overviews/collections/iterators.html) - * [从头定义新容器](/zh-cn/overviews/collections/creating-collections-from-scratch.html) - * [Java和Scala容器的转换](/zh-cn/overviews/collections/conversions-between-java-and-scala-collections.html) - * [Scala 2.7迁移指南](/zh-cn/overviews/collections/migrating-from-scala-27.html) - * [Scala容器类体系结构](/zh-cn/overviews/core/architecture-of-scala-collections.html) - * [字符串插值](/zh-cn/overviews/core/string-interpolation.html) New in 2.10 - * [Implicit Classes](/zh-cn/overviews/core/implicit-classes.html) New in 2.10 - * [Value Classes and Universal Traits](/zh-cn/overviews/core/value-classes.html) New in 2.10 - -
    -

    Parallel and Concurrent Programming

    -
    - * [Future和Promise](/zh-cn/overviews/core/futures.html) New in 2.10 - * Scala的并行容器类 - * [概述](/zh-cn/overviews/parallel-collections/overview.html) - * [具体并行集合类](/zh-cn/overviews/parallel-collections/concrete-parallel-collections.html) - * [并行容器的转换](/zh-cn/overviews/parallel-collections/conversions.html) - * [并发字典树](/zh-cn/overviews/parallel-collections/ctries.html) - * [并行集合库的架构](/zh-cn/overviews/parallel-collections/architecture.html) - * [创建自定义并行容器](/zh-cn/overviews/parallel-collections/custom-parallel-collections.html) - * [配置并行集合](/zh-cn/overviews/parallel-collections/configuration.html) - * [测量性能](/zh-cn/overviews/parallel-collections/performance.html) - * [Scala Actors迁移指南](/zh-cn/overviews/core/actors-migration-guide.html) New in 2.10 - * [The Scala Actors API](/zh-cn/overviews/core/actors.html) Deprecated - -
    -

    Acknowledgements

    -
    -* [致谢名单](/zh-cn/overviews/thanks.html) + From 1d66e968a953934dabdbfb4bb0b8c5381843d386 Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Sun, 21 Nov 2021 17:08:51 +0800 Subject: [PATCH 0288/1704] Fix to add border for overview's dropdown. --- _sass/components/dropdown.scss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/_sass/components/dropdown.scss b/_sass/components/dropdown.scss index e966b9055d..b656233a34 100644 --- a/_sass/components/dropdown.scss +++ b/_sass/components/dropdown.scss @@ -2,6 +2,8 @@ //------------------------------------------------ //------------------------------------------------ +$border-1-grey: 1px solid rgba(128, 128, 128, 0.5); + .language-dropdown { position: relative; margin-top: 50px; @@ -32,8 +34,13 @@ box-sizing: border-box; .table-of-content & { - border: 1px solid rgba(128, 128, 128, 0.5); + border: $border-1-grey; + } + + .full-width & { + border: $border-1-grey; } + .table-of-content &:focus { } From f68adb4af9550b4971e5bc2bc82885c7e7c39dd9 Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Mon, 22 Nov 2021 16:58:16 +0800 Subject: [PATCH 0289/1704] [zh-cn] Add translation for scala 3 guides index page. --- _zh-cn/index.md | 2 +- _zh-cn/scala3/guides.md | 78 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 _zh-cn/scala3/guides.md diff --git a/_zh-cn/index.md b/_zh-cn/index.md index 93d0b0514f..fd73fb62fc 100644 --- a/_zh-cn/index.md +++ b/_zh-cn/index.md @@ -32,7 +32,7 @@ scala3-sections: - title: "导览" description: "关于语言特别之处的详细导览" icon: "fa fa-map" - link: /scala3/guides.html + link: /zh-cn/scala3/guides.html - title: "Scala 库 API" description: "Scala 3 标准库API文档(多个小版本)" icon: "fa fa-file-alt" diff --git a/_zh-cn/scala3/guides.md b/_zh-cn/scala3/guides.md new file mode 100644 index 0000000000..87b168d7b7 --- /dev/null +++ b/_zh-cn/scala3/guides.md @@ -0,0 +1,78 @@ +--- +layout: inner-page-parent +title: Guides on Scala 3 +language: zh-cn +scala3: true + +guides: + - title: "从 Scala 2 到 Scala 3 的迁移" + icon: suitcase + url: "/scala3/guides/migration/compatibility-intro.html" + description: "迁移至 Scala 3 的兼容性须知" + - title: 宏 + by: Nicolas Stucki + icon: magic + url: "/scala3/guides/macros" + description: "覆盖 Scala 3 中涉及到编写宏的所有特性的详细导引" + label-text: 特性 + - title: TASTy 概览 + by: Alvin Alexander + icon: birthday-cake + url: "/scala3/guides/tasty-overview.html" + description: "针对 Scala 语言最终用户的 TASTy 格式概览" + - title: "贡献指南" + by: Jamie Thompson, Anatolii Kmetiuk + icon: cogs + url: "/scala3/guides/contribution/contribution-intro.html" + description: "Scala 3 编译器指南及如何贡献代码" + - title: Scaladoc + by: Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak, Kacper Korban, Filip Zybała + icon: book + url: "/scala3/guides/scaladoc" + description: "Scala 的 API 文档生成工具" +--- + +
    +
    +
    +
    +

    概览与导引

    +

    + Scala 3 语言及其特性的详细导引 +

    +
    + {% for overview in page.guides %} +
    +
    +
    + {% if overview.icon %} +
    +
    +
    + {% endif %} +

    {{ overview.title }}

    +
    +
    + {% if overview.label-text %}
    {{ overview.label-text }}
    {% endif %} + {% if overview.by %}
    By {{ overview.by }}
    {% endif %} + {% if overview.description %}

    {{ overview.description }}

    {% endif %} + {% if overview.subdocs %} + Contents + + {% endif %} +
    +
    + +
    + {% endfor %} +
    +
    +
    +
    +
    From 09f5b19045a8f997c744fdf8384d16f777137347 Mon Sep 17 00:00:00 2001 From: Dongxu Wang Date: Tue, 23 Nov 2021 08:57:44 +0800 Subject: [PATCH 0290/1704] [refactor] Extract duplicated card group to include. --- _includes/scala3-guides-card-group.html | 32 ++++++++++++++++++++++++ _ja/scala3/guides.md | 33 +------------------------ _zh-cn/scala3/guides.md | 33 +------------------------ scala3/guides.md | 33 +------------------------ 4 files changed, 35 insertions(+), 96 deletions(-) create mode 100644 _includes/scala3-guides-card-group.html diff --git a/_includes/scala3-guides-card-group.html b/_includes/scala3-guides-card-group.html new file mode 100644 index 0000000000..3cbf2f8191 --- /dev/null +++ b/_includes/scala3-guides-card-group.html @@ -0,0 +1,32 @@ +
    + {% for overview in page.guides %} +
    +
    +
    + {% if overview.icon %} +
    +
    +
    + {% endif %} +

    {{ overview.title }}

    +
    +
    + {% if overview.label-text %}
    {{ overview.label-text }}
    {% endif %} + {% if overview.by %}
    By {{ overview.by }}
    {% endif %} + {% if overview.description %}

    {{ overview.description }}

    {% endif %} + {% if overview.subdocs %} + Contents + + {% endif %} +
    +
    + +
    + {% endfor %} +
    diff --git a/_ja/scala3/guides.md b/_ja/scala3/guides.md index abb5f10772..9f5d0964fe 100644 --- a/_ja/scala3/guides.md +++ b/_ja/scala3/guides.md @@ -31,38 +31,7 @@ guides:

    Scala 3 とその機能についての詳しいガイド

    -
    - {% for overview in page.guides %} -
    -
    -
    - {% if overview.icon %} -
    -
    -
    - {% endif %} -

    {{ overview.title }}

    -
    -
    - {% if overview.label-text %}
    {{ overview.label-text }}
    {% endif %} - {% if overview.by %}
    By {{ overview.by }}
    {% endif %} - {% if overview.description %}

    {{ overview.description }}

    {% endif %} - {% if overview.subdocs %} - Contents - - {% endif %} -
    -
    - -
    - {% endfor %} -
    +{% include scala3-guides-card-group.html %}
    diff --git a/_zh-cn/scala3/guides.md b/_zh-cn/scala3/guides.md index 87b168d7b7..5a656b5a4d 100644 --- a/_zh-cn/scala3/guides.md +++ b/_zh-cn/scala3/guides.md @@ -40,38 +40,7 @@ guides:

    Scala 3 语言及其特性的详细导引

    -
    - {% for overview in page.guides %} -
    -
    -
    - {% if overview.icon %} -
    -
    -
    - {% endif %} -

    {{ overview.title }}

    -
    -
    - {% if overview.label-text %}
    {{ overview.label-text }}
    {% endif %} - {% if overview.by %}
    By {{ overview.by }}
    {% endif %} - {% if overview.description %}

    {{ overview.description }}

    {% endif %} - {% if overview.subdocs %} - Contents - - {% endif %} -
    -
    - -
    - {% endfor %} -
    +{% include scala3-guides-card-group.html %} diff --git a/scala3/guides.md b/scala3/guides.md index 139902b89c..812cedb611 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -38,38 +38,7 @@ guides:

    Detailed guides about the Scala 3 language and its features.

    -
    - {% for overview in page.guides %} -
    -
    -
    - {% if overview.icon %} -
    -
    -
    - {% endif %} -

    {{ overview.title }}

    -
    -
    - {% if overview.label-text %}
    {{ overview.label-text }}
    {% endif %} - {% if overview.by %}
    By {{ overview.by }}
    {% endif %} - {% if overview.description %}

    {{ overview.description }}

    {% endif %} - {% if overview.subdocs %} - Contents - - {% endif %} -
    -
    - -
    - {% endfor %} -
    +{% include scala3-guides-card-group.html %} From 599ca4042b08fb8bbbc4bb756bd2f449c3fa707d Mon Sep 17 00:00:00 2001 From: arata-honda Date: Thu, 25 Nov 2021 01:36:22 +0900 Subject: [PATCH 0291/1704] Fix: Table display collapses --- _overviews/scala3-migration/incompat-syntactic.md | 2 +- _overviews/scala3-migration/incompatibility-table.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_overviews/scala3-migration/incompat-syntactic.md b/_overviews/scala3-migration/incompat-syntactic.md index aa64f7b1ed..0afbad6070 100644 --- a/_overviews/scala3-migration/incompat-syntactic.md +++ b/_overviews/scala3-migration/incompat-syntactic.md @@ -15,7 +15,7 @@ Other syntactic changes are intended to make the syntax less surprising and more It is worth noting that most of the changes can be automatically handled during the [Scala 3 migration compilation](tooling-migration-mode.html). |Incompatibility|Scala 2.13|Scala 3 Migration Rewrite|Scalafix Rule| -|--- |--- |--- |--- |--- | +|--- |--- |--- |--- | |[Restricted keywords](#restricted-keywords)||✅|| |[Procedure syntax](#procedure-syntax)|Deprecation|✅|[✅](https://scalacenter.github.io/scalafix/docs/rules/ProcedureSyntax.html)| |[Parentheses around lambda parameter](#parentheses-around-lambda-parameter)||✅|[✅](https://github.com/ohze/scala-rewrites/tree/dotty/#fixscala213parensaroundlambda)| diff --git a/_overviews/scala3-migration/incompatibility-table.md b/_overviews/scala3-migration/incompatibility-table.md index 2943e01b95..999e5ff6b4 100644 --- a/_overviews/scala3-migration/incompatibility-table.md +++ b/_overviews/scala3-migration/incompatibility-table.md @@ -34,7 +34,7 @@ Each incompatibility is described by: Some of the old syntax is not supported anymore. |Incompatibility|Scala 2.13|Scala 3 Migration Rewrite|Scalafix Rule| -|--- |--- |--- |--- |--- | +|--- |--- |--- |--- | |[Restricted keywords](incompat-syntactic.html#restricted-keywords)||✅|| |[Procedure syntax](incompat-syntactic.html#procedure-syntax)|Deprecation|✅|[✅](https://scalacenter.github.io/scalafix/docs/rules/ProcedureSyntax.html)| |[Parentheses around lambda parameter](incompat-syntactic.html#parentheses-around-lambda-parameter)||✅|[✅](https://github.com/ohze/scala-rewrites/tree/dotty/#fixscala213parensaroundlambda)| From c40207cbbcea733eb4c598915a77fad932e7f818 Mon Sep 17 00:00:00 2001 From: Jerome Wuerf Date: Sat, 27 Nov 2021 09:55:02 +0000 Subject: [PATCH 0292/1704] Improve consistency --- _overviews/contributors/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_overviews/contributors/index.md b/_overviews/contributors/index.md index 2823404e7d..fa1947dafe 100644 --- a/_overviews/contributors/index.md +++ b/_overviews/contributors/index.md @@ -266,8 +266,7 @@ In my case, I have one key pair, whose ID is `BE614499`. Then: 1. Create a new Secret containing the passphrase of your PGP key named `PGP_PASSPHRASE`. - 2. Create a new Secret containing the base64 encoded secret of your private key, which you can obtain - by running: + 2. Create a new Secret containing the base64 encoded secret of your private key named `PGP_SECRET`. The encoded secret can obtain by running: ``` # macOS gpg --armor --export-secret-keys $LONG_ID | base64 From 9c67f46950f669d2a7e1b025cfbd8c6eaa528328 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 29 Nov 2021 12:17:41 -0800 Subject: [PATCH 0293/1704] JDK compat page: update JDK 17 wordings --- _overviews/jdk-compatibility/overview.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index bb8dc57605..7ab23ea3c9 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -26,9 +26,11 @@ Lightbend offers [commercial support](https://www.lightbend.com/lightbend-platfo ## Running versus compiling -We generally recommend JDK 8 or 11 for *compiling* Scala code. Since the JVM tends to be backward compatible, it is usually safe to use a newer JVM for *running* your code, especially if you are not using JVM features designated "experimental" or "unsafe". +JDK 8, 11, and 17 are all good choices both for *compiling* and *running* Scala code. -If you compile on JDK 11+ but have users on JDK 8, additional care is needed to avoid using APIs and features that don't exist in 8. Therefore, compiling on 8 may be the safer choice. Some Scala developers use JDK 11+ for their daily work but do release builds on JDK 8. +Since the JVM is normally backwards compatible, it is usually safe to use a newer JVM for *running* your code than the one it was compiled on, especially if you are not using JVM features designated "experimental" or "unsafe". + +If you compile on JDK 11+ but have users on an older JDK version, additional care is needed to avoid using APIs and features that don't exist in 8. Therefore, *compiling* on 8 may be the safest choice in this scenario. (Some Scala developers use JDK 11 or 17 for their daily work, but do release builds on JDK 8.) Additionally, you can also run your Scala application on GraalVM which is a JVM. GraalVM performs well on the Scala benchmarks, and it benefits from GraalVM runtime and runs faster too. @@ -60,7 +62,7 @@ The Scala compiler does not enforce the restrictions of the Java Platform Module For sbt users, JDK 11 support requires minimum sbt version 1.1.0. sbt 1.3.9 or newer is recommended. (If you are still on the 0.13.x series, use 0.13.18.) -To track progress on JDK 11 related issues, watch: +To track progress on JDK 11 related issues in Scala, watch: * the ["Support JDK 11"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue * the [jdk11 label](https://github.com/scala/bug/labels/jdk11) in scala/bug @@ -73,7 +75,9 @@ Scala 2.13.6 and 2.12.15 support JDK 17. The Scala test suite and Scala community build are green on JDK 17. -For possible issues, see the [jdk11](https://github.com/scala/bug/labels/jdk11) and [jdk17](https://github.com/scala/bug/labels/jdk17) labels in the Scala 2 bug tracker. +For sbt users, sbt 1.6.0-RC1 is the first version to fully support JDK 17, but 1.5.5 works fine too. (It will print a warning on startup about `TrapExit` that you can ignore.) + +For possible Scala issues, see the [jdk11](https://github.com/scala/bug/labels/jdk11) and [jdk17](https://github.com/scala/bug/labels/jdk17) labels in the Scala 2 bug tracker. ## JDK 18 compatibility notes From 6a781e1ed650a11fafca08b2cfcd12b266353ece Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 29 Nov 2021 12:52:55 -0800 Subject: [PATCH 0294/1704] Update _overviews/jdk-compatibility/overview.md Co-authored-by: eugene yokota --- _overviews/jdk-compatibility/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 7ab23ea3c9..3863ce22af 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -75,7 +75,7 @@ Scala 2.13.6 and 2.12.15 support JDK 17. The Scala test suite and Scala community build are green on JDK 17. -For sbt users, sbt 1.6.0-RC1 is the first version to fully support JDK 17, but 1.5.5 works fine too. (It will print a warning on startup about `TrapExit` that you can ignore.) +For sbt users, sbt 1.6.0-RC1 is the first version to support JDK 17, but in practice sbt 1.5.5 may also work. (It will print a warning on startup about `TrapExit` that you can ignore.) For possible Scala issues, see the [jdk11](https://github.com/scala/bug/labels/jdk11) and [jdk17](https://github.com/scala/bug/labels/jdk17) labels in the Scala 2 bug tracker. From f4022d6d5f4ad5779a192aebf20389f653eac8f2 Mon Sep 17 00:00:00 2001 From: Brian Yue Date: Tue, 30 Nov 2021 16:31:22 +0800 Subject: [PATCH 0295/1704] Fix invalid link links to the paper Type Classes as Objects and Implicits --- _overviews/quasiquotes/lifting.md | 2 +- _overviews/scala3-book/types-type-classes.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_overviews/quasiquotes/lifting.md b/_overviews/quasiquotes/lifting.md index b0f2f54910..e218eca1cf 100644 --- a/_overviews/quasiquotes/lifting.md +++ b/_overviews/quasiquotes/lifting.md @@ -24,7 +24,7 @@ This code runs successfully because `Int` is considered to be `Liftable` by defa def apply(value: T): Tree } -Whenever there is an implicit value of `Liftable[T]` available, one can unquote `T` in quasiquotes. This design pattern is known as a *type class*. You can read more about it in ["Type Classes as Objects and Implicits"](https://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf). +Whenever there is an implicit value of `Liftable[T]` available, one can unquote `T` in quasiquotes. This design pattern is known as a *type class*. You can read more about it in ["Type Classes as Objects and Implicits"](https://infoscience.epfl.ch/record/150280/files/TypeClasses.pdf). A number of data types that are supported natively by quasiquotes will never trigger the usage of a `Liftable` representation, even if it\'s available: subtypes of `Tree`, `Symbol`, `Name`, `Modifiers` and `FlagSet`. diff --git a/_overviews/scala3-book/types-type-classes.md b/_overviews/scala3-book/types-type-classes.md index 24619309d1..f0391f3806 100644 --- a/_overviews/scala3-book/types-type-classes.md +++ b/_overviews/scala3-book/types-type-classes.md @@ -47,6 +47,6 @@ toHtml(42)(ShowInt()) Since type classes are a very important way to structure software, Scala 3 offers additional features that make working with them very convenient. We discuss these additional features (which fall into the category of *Contextual Abstractions*) in a [later chapter][typeclasses-chapter] of this book. -[typeclasses-paper]: https://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf +[typeclasses-paper]: https://infoscience.epfl.ch/record/150280/files/TypeClasses.pdf [typeclasses-chapter]: {% link _overviews/scala3-book/ca-type-classes.md %} [comparator]: https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html From b91365a65e934c91d723d4ae5920d828a7ab9e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Wed, 24 Nov 2021 12:00:53 +0100 Subject: [PATCH 0296/1704] Add the Inclusive Language Guide. --- contribute/inclusive-language-guide.md | 132 +++++++++++++++++++++++++ contribute/index.md | 7 ++ 2 files changed, 139 insertions(+) create mode 100644 contribute/inclusive-language-guide.md diff --git a/contribute/inclusive-language-guide.md b/contribute/inclusive-language-guide.md new file mode 100644 index 0000000000..6703532594 --- /dev/null +++ b/contribute/inclusive-language-guide.md @@ -0,0 +1,132 @@ +--- +title: Inclusive Language Guide +layout: inner-page-no-masthead +includeTOC: true +permalink: /contribute/inclusive-language/ +--- + +We are committed to providing a friendly, safe and welcoming environment for +all, regardless of age, body size, disability, ethnicity, sex characteristics, +gender identity and expression, level of experience, education, socio-economic +status, nationality, personal appearance, race, religion, sexual identity +and orientation, or other such characteristics. + +Language is a powerful vehicle of ideas and representations, and as such, can highlight, accentuate, or blur certain characteristics of the world. +Language -- in its use and structure -- may bias our perception of the world, sometimes to the disadvantage of some people. +Different language strategies have therefore been suggested to promote more inclusive forms of language, echoing the need for more equal treatment for all. + +This inclusive language guide is therefore intended to help us adopt a more inclusive way of communicating. +Although the present guide does not exhaustively cover all issues pertaining to non-inclusive language, it covers the most important issues we are currently aware of. + +Contributions made to the core Scala projects and their documentation -- including to this website -- should follow this guide. + +## Non gendered language + +The use of *He*, *Him*, *His*, *Man* and *Men* should be avoided. +Although these terms are intended to refer to any genders (male, female, other, unknown or irrelevant), they imply that the subject is male and therefore excludes all other genders. +Instead, use the singular *they*, as already used by famous authors like Jane Austen. + +Example of the use of singular they: + +> When a developer wants to contribute to a project, they open a pull request. + +Although *they* refers to a single person, we conjugate the verb with the plural form. +This is similar to the polite form of pronouns in certain languages, such as "Sie" in German or "vous" in French. + +When possible, avoid (combined) words that refer to a specific gender, and use gender-neutral alternatives instead. +For example: + +* *man* or *woman* -> *person* +* *chairman* -> *chairperson* + +## The words easy, simple, quick, and trivial + +What might be easy for you might not be easy for others. +The same applies to other words like *quick* or *simple*. +When used in the positive or superlative forms, try eliminating this word from sentences because usually the same meaning can be conveyed without it. + +Example of a positive form: + +> You can then simply execute the program with the `run` command. + +can be replaced with + +> You can then execute the program with the `run` command. + +without changing the meaning of the sentence. + +Example of a superlative form: + +> The foobar method is the easiest way to get started with our library. + +can be replaced with + +> We show here how to use the foobar method to get started with our library. + +However, the comparative form of these adjectives and adverbs can be used when relevant. + +Example of a comparative form: + +> The foobar method is quicker to get started with than the baz method. + +Similarly, the word *just* is usually redundant and can be removed without altering the meaning. + +Example: + +> You can just add these settings to your build. + +can be replaced with + +> You can add these settings to your build. + +Of course, every situation is different, and there may be cases where using "the easy words" is still the best thing to do. +In that case, it should be a deliberate decision to use them, taking the above considerations into account. + +## Specific loaded words + +Some words may have a derogatory connotation and/or have clear oppressive origins. +Avoid these words to the greatest extent possible, and use neutral alternatives instead. +Currently, the following words, used for common computer science concepts, are discouraged. +This list is neither comprehensive nor definitive, and it can evolve over time. + +* **blacklist/whitelist** \ + While the etymology of these words has no relation to racism, their use suggests an association between the color black and some form of badness or exclusion, and between the color white and some form of goodness or inclusion. + Prefer alternatives when possible. + Several alternatives have been proposed but none sticks as "the one". We suggest using the pair *excludelist*/*includelist*, as it is generic enough to replace all uses of *blacklist*/*whitelist*. +* **master/slave** \ + Never use *slave*. + Never use *master* in conjunction with *slave*. + Depending on the specific architecture, use one of the following alternatives instead: *controller*/*worker*, *primary*/*secondary*, *leader*/*follower*, etc. + When in doubt, if you cannot choose, *primary*/*secondary* is always a decent fallback. \ + When used with the meaning of *teacher*, *expert*, *guide*, or *reference*, the word *master* is not specifically discouraged. + For example, the term *Master of the arts* is acceptable. \ + Note: there exists a broader movement of using `main` instead of `master` as the default git branch, led by GitHub and the git project themselves, and which we encourage people to follow as well. +* **sanity check** \ + Prefer *confidence check*. +* **segregated** \ + Computer science concepts like the *interface segregation principle* and *segregated networks* present segregation as being desirable, instead of bad. + Prefer alternatives like *separation of concerns* and *segmented networks*. +* **guru** \ + While a *guru* initially refers to a respected spiritual leader, it also designates the chief of a sect. + Both are of a spiritual nature and are ambiguous. + If possible, use a more precise term such as *teacher* or *expert*. + +A good source with explainers and references can be found at [https://github.com/dialpad/inclusive-language](https://github.com/dialpad/inclusive-language). + +Keep in mind that your particular application domain may contain its own share of domain-specific loaded words. +We encourage you to research inclusive language guidelines applicable to your domain. + +You may want to use automated software like [In Solidarity](https://github.com/apps/in-solidarity) to steer contributors away from loaded words. + +## Backward compatibility + +Sometimes, we have existing code, APIs or commands that do not follow the above recommendations. +It is generally advisable to perform renamings to address the issue, but that should not be done to the detriment of backward compatibility (in particular, backward binary compatibility of libraries). +Deprecated aliases should be retained when possible. + +Sometimes, it is not possible to preserve backward compatibility through renaming; for example for methods intended to be overridden by user-defined subclasses. +In those cases, we recommend to keep the old names, but document (e.g., in Scaladoc comments) that they are named as they are for historical reasons and to preserve compatibility, and what their intended name should be. + +## See also + +* Our [code of conduct](../../conduct/). diff --git a/contribute/index.md b/contribute/index.md index 7f672ec97c..d78a72e159 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -27,6 +27,13 @@ Coordination of contribution efforts takes place on {% include column-list-of-items.html collection=site.contribute_resources %} +### Guidelines + +When contributing, please follow: + +* The [Scala Code of Conduct](../conduct/) +* The [Inclusive Language Guide](./inclusive-language/) + ### Community Tickets All issues can be found in the [Scala bug tracker](https://github.com/scala/bug). Most issues are labeled From 8a31d0c7ef488d865d92cfd41221d181db9a2332 Mon Sep 17 00:00:00 2001 From: Brian Yue <46839413+byyue@users.noreply.github.com> Date: Sat, 4 Dec 2021 05:19:14 +0800 Subject: [PATCH 0297/1704] Fix invalid links to features in Scala 3 (#2258) --- _overviews/scala3-book/why-scala-3.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_overviews/scala3-book/why-scala-3.md b/_overviews/scala3-book/why-scala-3.md index 716fe1be90..f3b28780ed 100644 --- a/_overviews/scala3-book/why-scala-3.md +++ b/_overviews/scala3-book/why-scala-3.md @@ -428,9 +428,9 @@ Hopefully you’ll discover more great Scala features as you use the language. [given]: {% link _overviews/scala3-book/ca-given-using-clauses.md %} [contextual]: {% link _overviews/scala3-book/ca-contextual-abstractions-intro.md %} [reference]: {{ site.scala3ref }}/overview.html -[dropped]: https://dotty.epfl.ch/docs/Dropped%20Features/index.html -[changed]: https://dotty.epfl.ch/docs/Other%20Changed%20Features/index.html -[added]: https://dotty.epfl.ch/docs/Other%20New%20Features/index.html +[dropped]: https://docs.scala-lang.org/scala3/reference/dropped-features.html +[changed]: https://docs.scala-lang.org/scala3/reference/changed-features.html +[added]: https://docs.scala-lang.org/scala3/reference/other-new-features.html [union-types]: {% link _overviews/scala3-book/types-union.md %} [opaque-types]: {% link _overviews/scala3-book/types-opaque-types.md %} From d75ad96f1f7a434c6a0c42b621a4f0f3458f48ea Mon Sep 17 00:00:00 2001 From: "Yang, Bo" Date: Sun, 5 Dec 2021 21:59:17 -0800 Subject: [PATCH 0298/1704] Fix the syntax error in the sbt file example --- _overviews/scala3-migration/plugin-kind-projector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-migration/plugin-kind-projector.md b/_overviews/scala3-migration/plugin-kind-projector.md index 7055babdd7..fc61b05cda 100644 --- a/_overviews/scala3-migration/plugin-kind-projector.md +++ b/_overviews/scala3-migration/plugin-kind-projector.md @@ -21,7 +21,7 @@ The following `sbt` configuration will set up the correct flags to cross-compile ThisBuild / scalacOptions ++= { CrossVersion.partialVersion(scalaVersion.value) match { case Some((3, _)) => Seq("-Ykind-projector:underscores") - case Some((2, 13)) | Some((2, 12)) => Seq("-Xsource:3", "-P:kind-projector:underscore-placeholders")) + case Some((2, 13)) | Some((2, 12)) => Seq("-Xsource:3", "-P:kind-projector:underscore-placeholders") } } ``` From 1d7f18480e6f3ffea4312cde5e8ed8acee743ca8 Mon Sep 17 00:00:00 2001 From: Antoine Pointeau Date: Mon, 6 Dec 2021 10:48:03 +0100 Subject: [PATCH 0299/1704] add fr getting started page (#2245) * add fr getting started page * add small fixes * add contribution author * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update _fr/getting-started/index.md Co-authored-by: Jean Helou * Update index.md * Update _fr/getting-started/index.md Co-authored-by: Meriam Lachkar * Update _fr/getting-started/index.md Co-authored-by: Meriam Lachkar Co-authored-by: Jean Helou Co-authored-by: Meriam Lachkar --- _fr/getting-started/index.md | 194 +++++++++++++++++++++++++++++++++++ _getting-started/index.md | 2 +- 2 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 _fr/getting-started/index.md diff --git a/_fr/getting-started/index.md b/_fr/getting-started/index.md new file mode 100644 index 0000000000..1c6b3306fe --- /dev/null +++ b/_fr/getting-started/index.md @@ -0,0 +1,194 @@ +--- +layout: singlepage-overview +title: Démarrage +partof: getting-started +language: fr +includeTOC: true +--- + +Les instructions ci-dessous couvrent à la fois Scala 2 et Scala 3. + +## Essayer Scala sans installation + +Pour commencer à expérimenter Scala sans plus attendre, utilisez “Scastie” dans votre navigateur _Scastie_ est un environnement "bac à sable" en ligne, où vous pouvez tester Scala, afin de comprendre comment fonctionne le langage et avec un accès à tous les compilateurs Scala et les librairies publiées. + +> Scastie supporte à la fois Scala 2 et Scala 3, en proposant Scala 3 par défaut. +> Si vous cherchez à tester un morceau de code avec Scala 2 +> [cliquez ici](https://scastie.scala-lang.org/MHc7C9iiTbGfeSAvg8CKAA). + +## Installer Scala sur votre ordinateur + +Installer Scala veut dire installer différents outils en ligne de commande, comme le compilateur Scala et les outils de build. +Nous recommandons l'utilisation de l'outil d'installation "Coursier" qui va automatiquement installer toutes les dépendances, mais vous pouvez aussi installer chaque outil à la main. + +### Utilisation de l'installateur Scala (recommandé) + +L'installateur Scala est un outil nommé [Coursier](https://get-coursier.io/docs/cli-overview), la commande principale de l'outil est `cs`. +Il s'assure que la JVM est les outils standards de Scala sont installés sur votre système. +Installez-le sur votre système avec les instructions suivantes. + +
    +
    +

    Suivez les instructions pour installer la commande cs puis exécutez :

    +

    $ ./cs setup

    +
    +
    + +En plus de gérer les JVMs, `cs setup` installe aussi des utilitaires en ligne de commande : + +- Un JDK (si vous n'en avez pas déjà un) +- L'outil de construction de package [sbt](https://www.scala-sbt.org/) +- [Ammonite](https://ammonite.io/), un REPL amélioré +- [scalafmt](https://scalameta.org/scalafmt/), le formatteur de code Scala +- `scalac` (le compilateur Scala 2) +- `scala` (le REPL et le lanceur de script Scala 2). + +Pour plus d'informations à propos de `cs`, vous pouvez lire la page suivante : +[coursier-cli documentation](https://get-coursier.io/docs/cli-overview). + +> Actuellement, `cs setup` installe le compilateur Scala 2 et le lanceur +> (les commandes `scalac` et `scala` respectivement). Ce n'est pas un problème, +> car la plupart des projets utilisent un outil de contruction +> de package qui fonctionne à la fois pour Scala 2 et Scala 3. +> Cependant, vous pouvez installer le compilateur et le lanceur Scala 3 en ligne de commande, +> en exécutant les commandes suivantes : +> ``` +> $ cs install scala3-compiler +> $ cs install scala3 +> ``` + +### ...ou manuellement + +Vous avez seulement besoin de deux outils pour compiler, lancer, tester et packager un projet Scala: Java 8 ou 11, et sbt. +Pour les installer manuellement : + +1. Si vous n'avez pas Java 8 ou 11 installé, téléchargez + Java depuis [Oracle Java 8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html), [Oracle Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html), + ou [AdoptOpenJDK 8/11](https://adoptopenjdk.net/). Référez-vous à la page [JDK Compatibility](/overviews/jdk-compatibility/overview.html) pour les détails de compatibilité entre Java et Scala. +1. Installez [sbt](https://www.scala-sbt.org/download.html) + +## Créer un projet "Hello World" avec sbt + +Une fois que vous avez installé sbt, vous pouvez créer un projet Scala, comme expliqué dans la section suivante. + +Pour créer un projet, vous pouvez soit utiliser la ligne de commande, soit un IDE. +Si vous êtes habitué à la ligne de commande, nous recommandons cette approche. + +### Utiliser la ligne de commande + +sbt est un outil de construction de package pour Scala, sbt compile, lance et teste votre code Scala. +(Il peut aussi publier les librairies et faire beaucoup d'autres tâches.) + +Pour créer un nouveau projet Scala avec sbt : + +1. `cd` dans un répertoire vide. +1. Lancez la commande `sbt new scala/scala3.g8` pour créer un projet Scala 3, ou `sbt new scala/hello-world.g8` pour créer un projet Scala 2. + Cela va télécharger un projet template depuis Github. + Cela va aussi créer un dossier `target`, que vous pouvez ignorer. +1. Quand cela vous est demandé, nommez votre application `hello-world`. Cela va créer un projet appelé "hello-world". +1. Voyons ce que nous vennons de générer : + +``` +- hello-world + - project (sbt utilise ce dossier pour ses propres fichiers) + - build.properties + - build.sbt (fichier de définition de la construction du package pour sbt) + - src + - main + - scala (tout votre code Scala doit être placé ici) + - Main.scala (Programme point d'entrée) <-- c'est tout ce dont nous avons besoin pour le moment +``` + +Vous pouvez trouver plus de documentation à propos de sbt dans le [Scala Book](/scala3/book/tools-sbt.html) ([Lien](/overviews/scala-book/scala-build-tool-sbt.html) vers la version Scala 2) et sur la [documentation](https://www.scala-sbt.org/1.x/docs/index.html) officielle de sbt. + +### Avec un IDE + +Vous pouvez ignorer le reste de cette page et aller directement sur [Building a Scala Project with IntelliJ and sbt](/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html). + + +## Ouvrir le projet hello-world + +Utilisons un IDE pour ouvrir le projet. Les plus populaires sont IntelliJ et VSCode. +Il proposent tout deux des fonctionnalités riches, mais vous pouvez utiliser d'[autres éditeurs.](https://scalameta.org/metals/docs/editors/overview.html) + +### Avec IntelliJ + +1. Téléchargez et installez [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/) +1. Installez l'extension Scala en suivant [les instruction IntelliJ pour installer des extensions](https://www.jetbrains.com/help/idea/managing-plugins.html) +1. Ouvrez le fichier `build.sbt` puis choisissez *Open as a project* + +### Avec VSCode et metals + +1. Téléchargez [VSCode](https://code.visualstudio.com/Download) +1. Installez l'extension Metals depuis [la marketplace](https://marketplace.visualstudio.com/items?itemName=scalameta.metals) +1. Ensuite, ouvrez le repertoire contenant le fichier `build.sbt` (cela doit être le dossier `hello-world` si vous avez suivi les instructions précédentes). Choisissez *Import build* lorsque cela vous est demandé. + +> [Metals](https://scalameta.org/metals) est un "Serveur de langage Scala" qui fourni une aide pour écrire du code Scala dans VSCode et d'autres éditeurs [Atom, Sublime Text, autres ...](https://scalameta.org/metals/docs/editors/overview.html), en utilisant le protcole de langage serveur. +> En arrière plan, Metals communique avec l'outil de construction de package en utilisant +> le [Build Server Protocol (BSP)](https://build-server-protocol.github.io/). +> Pour plus de détails sur le fonctionnement de Metals, suivez [“Write Scala in VS Code, Vim, Emacs, Atom and Sublime Text with Metals”](https://www.scala-lang.org/2019/04/16/metals.html). + +### Essayer avec le code source + +Ouvrez ces deux fichiers dans votre IDE : + +- _build.sbt_ +- _src/main/scala/Main.scala_ + +Quand vous allez lancer votre projet dans l'étape suivante, la configuration dans _build.sbt_ sera utilisé pour lancer le code dans _src/main/scala/Main.scala_. + +## Lancer Hello Word + +Si vous êtes habitué à votre IDE, vous pouvez lancer le code dans _Main.scala_ depuis celui-ci. + +Sinon, vous pouvez lancer l'application depuis le terminal avec ces étapes : + +1. `cd` vers `hello-world`. +1. Lancez `sbt`. Cela va ouvrir la console sbt. +1. Ecrivez `~run`. Le symbole `~` est optionel, il va relancer l'application à chaque sauvegarde de fichier. + Cela permet un cyle rapide de modification/relance/debug. sbt va aussi générer un dossier `target` que vous pouvez ignorer. + +Quand vous avez fini d'expérimenter avec ce projet, appuyez sur `[Entrée]` pour interrompre la commande `run`. +Puis saisissez `exit` ou appuyez sur `[Ctrl+D]` pour quitter sbt et revenir à votre invite de commande. + +## Prochaines étapes + +Une fois que vous avez terminé le tutoriel ce dessus, vous pouvez consulter : + +* [The Scala Book](/scala3/book/introduction.html) ([Lien](/overviews/scala-book/introduction.html) vers la version Scala 2), qui fourni un ensemble de courtes leçons et introduit les fonctionnalités principales de Scala. +* [The Tour of Scala](/tour/tour-of-scala.html) pour une introduction des fonctionnalités Scala. +* [Learning Resources](/learn.html), qui contient des tutoriels et des cours interactifs. +* [Our list of some popular Scala books](/books.html). +* [The migration guide](/scala3/guides/migration/compatibility-intro.html) pour vous aider à migrer votre code Scala 2 vers Scala 3. + +## Obtenir de l'aide +Il y a plusieurs listes de diffusion et canaux de discussions instantanés si vous souhaitez rencontrer rapidement d'autres utilisateurs de Scala. Allez faire un tour sur notre page [community](https://scala-lang.org/community/) pour consulter la liste des ces ressources et obtenir de l'aide. + +Traduction par Antoine Pointeau. + + + + + + + + + diff --git a/_getting-started/index.md b/_getting-started/index.md index cad7921564..03af9270c4 100644 --- a/_getting-started/index.md +++ b/_getting-started/index.md @@ -2,7 +2,7 @@ layout: singlepage-overview title: Getting Started partof: getting-started -languages: [ja] +languages: [fr, ja] includeTOC: true redirect_from: "/getting-started.html" From 33c19e044dd147a6f16a4a85660955e153cef75f Mon Sep 17 00:00:00 2001 From: A-Roso <60855900+A-Roso@users.noreply.github.com> Date: Mon, 6 Dec 2021 17:14:40 +0100 Subject: [PATCH 0300/1704] taste-repl.md added 'scala3'-command to start REPL Added 'scala3' as command to start REPL as only 'scala' doesn't work depending on the installation (e.g. with Coursier on Windows 10). --- _overviews/scala3-book/taste-repl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/taste-repl.md b/_overviews/scala3-book/taste-repl.md index dba5420401..50820b473f 100644 --- a/_overviews/scala3-book/taste-repl.md +++ b/_overviews/scala3-book/taste-repl.md @@ -9,7 +9,7 @@ next-page: taste-vars-data-types The Scala REPL (“Read-Evaluate-Print-Loop”) is a command-line interpreter that you use as a “playground” area to test your Scala code. -You start a REPL session by running the `scala` command at your operating system command line, where you’ll see a “welcome” prompt like this: +You start a REPL session by running the `scala` or `scala3` command depending on your installation at your operating system command line, where you’ll see a “welcome” prompt like this: ```bash $ scala From 0b6e3d79bd784420a009d21f070dbd2fd9f49e57 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 6 Dec 2021 08:33:47 -0800 Subject: [PATCH 0301/1704] slight code improvement in sbt example --- _overviews/scala3-migration/plugin-kind-projector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-migration/plugin-kind-projector.md b/_overviews/scala3-migration/plugin-kind-projector.md index fc61b05cda..215ccd9843 100644 --- a/_overviews/scala3-migration/plugin-kind-projector.md +++ b/_overviews/scala3-migration/plugin-kind-projector.md @@ -21,7 +21,7 @@ The following `sbt` configuration will set up the correct flags to cross-compile ThisBuild / scalacOptions ++= { CrossVersion.partialVersion(scalaVersion.value) match { case Some((3, _)) => Seq("-Ykind-projector:underscores") - case Some((2, 13)) | Some((2, 12)) => Seq("-Xsource:3", "-P:kind-projector:underscore-placeholders") + case Some((2, 12 | 13)) => Seq("-Xsource:3", "-P:kind-projector:underscore-placeholders") } } ``` From 665b7ae286f3a82a25a42223d9fbbe5a69ccec21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magda=20Sto=C5=BCek?= Date: Mon, 6 Dec 2021 20:51:16 +0100 Subject: [PATCH 0302/1704] Typo fix (#2259) --- _scala3-reference/contextual/using-clauses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/contextual/using-clauses.md b/_scala3-reference/contextual/using-clauses.md index 4f98c760ff..b233c84667 100644 --- a/_scala3-reference/contextual/using-clauses.md +++ b/_scala3-reference/contextual/using-clauses.md @@ -45,7 +45,7 @@ def maximum[T](xs: List[T])(using Ord[T]): T = xs.reduceLeft(max) ``` -`maximum` takes a context parameter of type `Ord` only to pass it on as an +`maximum` takes a context parameter of type `Ord[T]` only to pass it on as an inferred argument to `max`. The name of the parameter is left out. Generally, context parameters may be defined either as a full parameter list `(p_1: T_1, ..., p_n: T_n)` or just as a sequence of types `T_1, ..., T_n`. Vararg parameters are not supported in `using` clauses. From a56678a2b19e7ca4d56aabf86657f933108cf98d Mon Sep 17 00:00:00 2001 From: Performant Data Date: Mon, 6 Dec 2021 11:54:26 -0800 Subject: [PATCH 0303/1704] remove @migration ? (#2215) Does this still exist? Not seeing it in the API docs. --- _overviews/scaladoc/for-library-authors.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/_overviews/scaladoc/for-library-authors.md b/_overviews/scaladoc/for-library-authors.md index 3d333eda89..2c16394c22 100644 --- a/_overviews/scaladoc/for-library-authors.md +++ b/_overviews/scaladoc/for-library-authors.md @@ -146,8 +146,6 @@ the resulting documentation. - `@deprecated` marks the entity as deprecated, **providing both** the replacement implementation that should be used and the version/date at which this entity was deprecated. -- `@migration` like deprecated but provides advanced warning of planned changes - ahead of deprecation. Same fields as `@deprecated`. - `@inheritdoc` take comments from a superclass as defaults if comments are not provided locally. - `@documentable` Expand a type alias and abstract type into a full template page. - TODO: Test the "abstract type" claim - no examples of this in the Scala code base From a9289450b78d52951fccdc878c8020b8f852d141 Mon Sep 17 00:00:00 2001 From: GYoung Date: Wed, 8 Dec 2021 19:12:03 +0800 Subject: [PATCH 0304/1704] Update overview.md Fix grammatical errors --- _zh-cn/overviews/collections/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_zh-cn/overviews/collections/overview.md b/_zh-cn/overviews/collections/overview.md index aa88b30158..d5bf0f71fa 100644 --- a/_zh-cn/overviews/collections/overview.md +++ b/_zh-cn/overviews/collections/overview.md @@ -13,7 +13,7 @@ Scala 集合类系统地区分了可变的和不可变的集合。可变集合 所有的集合类都可以在包`scala.collection` 或`scala.collection.mutable`,`scala.collection.immutable`,`scala.collection.generic`中找到。客户端代码需要的大部分集合类都独立地存在于3种变体中,它们位于`scala.collection`, `scala.collection.immutable`, `scala.collection.mutable`包。每一种变体在可变性方面都有不同的特征。 -`scala.collection.immutable`包是的集合类确保不被任何对象改变。例如一个集合创建之后将不会改变。因此,你可以相信一个事实,在不同的点访问同一个集合的值,你将总是得到相同的元素。。 +`scala.collection.immutable`包的集合类确保不被任何对象改变。例如一个集合创建之后将不会改变。因此,你可以相信一个事实,在不同的点访问同一个集合的值,你将总是得到相同的元素。。 `scala.collection.mutable`包的集合类则有一些操作可以修改集合。所以处理可变集合意味着你需要去理解哪些代码的修改会导致集合同时改变。 From 2ca499b66d3fe8499bccb63c3321946f30479fe4 Mon Sep 17 00:00:00 2001 From: Brian Yue Date: Fri, 10 Dec 2021 22:27:51 +0800 Subject: [PATCH 0305/1704] Add the match expressions and switch/match content for Python part --- .../scala3-book/scala-for-python-devs.md | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/_overviews/scala3-book/scala-for-python-devs.md b/_overviews/scala3-book/scala-for-python-devs.md index 9e6af90d8e..320bb80ecf 100644 --- a/_overviews/scala3-book/scala-for-python-devs.md +++ b/_overviews/scala3-book/scala-for-python-devs.md @@ -650,12 +650,20 @@ Scala also has `match` expressions. - N/A (but you can use dictionaries for basic “switch” functionality) + # From 3.10, Python supports structural pattern matching +
    # You can also use dictionaries for basic “switch” functionality +
    match month: +
      case 1: +
        monthAsString = "January" +
      case 2: +
        monthAsString = "February" +
      case _: +
        monthAsString = "Other"
    - val monthAsString = day match + val monthAsString = month match
      case 1 => "January"
      case 2 => "February"
      _ => "Other"
    @@ -670,7 +678,14 @@ Scala also has `match` expressions. - N/A + # Only from Python 3.10 +
    match i: +
      case 1 | 3 | 5 | 7 | 9: +
        numAsString = "odd" +
      case 2 | 4 | 6 | 8 | 10: +
        numAsString = "even" +
      case _: +
        numAsString = "too big"
    From 7756c54bf303de12479c7336a1e009a819e61f57 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 14 Dec 2021 18:12:40 -0800 Subject: [PATCH 0306/1704] Discord is now our main chat platform --- contribute/hacker-guide.md | 2 +- contribute/tools.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 87cb8c25e4..302635fae1 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -30,7 +30,7 @@ Sometimes it's appealing to hack alone and not to have to interact with others o this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#forums--mailing-lists) to find out how people feel +Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#forums) to find out how people feel about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. diff --git a/contribute/tools.md b/contribute/tools.md index 7c33ebfda6..0afd3982d8 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -71,7 +71,8 @@ The links below are to a number of Scala build and IDE related projects that are Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/contribute/hacker-guide.html) and [Bug-fixing](/contribute/guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. Typically, issues for these projects will be reported and kept in the GitHub project issue tracker for that project rather than in the Scala bug tracker. -Many of these projects have a gitter channel (usually listed in the README or CONTRIBUTING documents) which is a great place to discuss proposed work before commencing. + +Many of these projects have a chat room on Discord or Gitter (usually linked from their README or CONTRIBUTING files) which is a great place to discuss proposed work before starting. There are some projects in this section that are in [particular need](#projects-in-particular-need) so please check those out From f04ca31f5c87a3e5d54aaf733be7f0a75172022a Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 14 Dec 2021 20:37:48 -0800 Subject: [PATCH 0307/1704] hello Discord (bye bye Gitter) --- _includes/masthead-community.html | 16 ++++++++-------- _layouts/frontpage.html | 18 +++++++++--------- _overviews/FAQ/index.md | 8 ++++---- _overviews/scala3-scaladoc/settings.md | 2 +- _sass/layout/table-of-content.scss | 4 ++-- _sass/layout/talk-to-us.scss | 4 ++-- _sips/sip-template.md | 2 -- contribute.md | 2 +- resources/img/frontpage/discord-logo.png | Bin 0 -> 3674 bytes resources/img/frontpage/gitter-logo.png | Bin 523 -> 0 bytes scala3/scaladoc.md | 2 +- 11 files changed, 28 insertions(+), 30 deletions(-) create mode 100644 resources/img/frontpage/discord-logo.png delete mode 100644 resources/img/frontpage/gitter-logo.png diff --git a/_includes/masthead-community.html b/_includes/masthead-community.html index 1d5f4912a7..9b76636212 100644 --- a/_includes/masthead-community.html +++ b/_includes/masthead-community.html @@ -17,15 +17,15 @@

    {{forum.title}}

    {% endfor %} -
    -

    Gitter

    - Real-time (topic-specialized) chat +
    +

    Chat

    + Real-time chat on Discord
    - \ No newline at end of file + diff --git a/_layouts/frontpage.html b/_layouts/frontpage.html index 743e27bd83..29fa5825fe 100644 --- a/_layouts/frontpage.html +++ b/_layouts/frontpage.html @@ -299,24 +299,24 @@

    {{forum.title}}

    {% endfor %} -
    -

    Real-time (topic-specialized) chat

    - {% assign modLimit = site.data.chats-forums.gitterChannels.size | modulo: 2 %} +
    +

    Real-time chat

    + {% assign modLimit = site.data.chats-forums.discordServers.size | modulo: 2 %} {% capture channelLimit %} {% if modLimit != 0 %} - {{site.data.chats-forums.gitterChannels.size | minus: 1}} + {{site.data.chats-forums.discordServers.size | minus: 1}} {% else %} - {{site.data.chats-forums.gitterChannels.size}} + {{site.data.chats-forums.discordServers.size}} {% endif %} {% endcapture %} - {% for channel in site.data.chats-forums.gitterChannels limit: channelLimit %} + {% for server in site.data.chats-forums.discordServers limit: channelLimit %} {% if forloop.first %}
    From 2dd2d506445008554d88614618b9faf28b16a355 Mon Sep 17 00:00:00 2001 From: Horimoto Yasuhiro Date: Wed, 9 Feb 2022 23:19:53 +0900 Subject: [PATCH 0361/1704] Add a missing translation in getting-started.md (Japanese) --- _includes/_ja/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/_ja/getting-started.md b/_includes/_ja/getting-started.md index 97ebcbd692..f70eba4848 100644 --- a/_includes/_ja/getting-started.md +++ b/_includes/_ja/getting-started.md @@ -150,7 +150,7 @@ Scala について日本語で質問したい場合、Twitterでつぶやくと
    From 1dd5138701fd92d82ebe284f49e566c39e1e68db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 10 Feb 2022 16:57:43 +0100 Subject: [PATCH 0362/1704] Update the Getting Started page(s) for the latest `cs` behavior. The default installation of coursier now installs Scala 3 by default under `scala` and `scalac`. However, it also allows to override that with `cs launch scala:2.13.8` or `cs install scala:2.13.8`, as Scala 2 and Scala 3 have been unified. --- _includes/getting-started.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/_includes/getting-started.md b/_includes/getting-started.md index dcbf448b0f..628f2a41c5 100644 --- a/_includes/getting-started.md +++ b/_includes/getting-started.md @@ -34,20 +34,24 @@ Along with managing JVMs, `cs setup` also installs useful command-line tools: - The [sbt](https://www.scala-sbt.org/) build tool - [Ammonite](https://ammonite.io/), an enhanced REPL - [scalafmt](https://scalameta.org/scalafmt/), the Scala code formatter -- `scalac` (the Scala 2 compiler) -- `scala` (the Scala 2 REPL and script runner). +- `scalac` (the Scala compiler) +- `scala` (the Scala REPL and script runner). For more information about `cs`, read [coursier-cli documentation](https://get-coursier.io/docs/cli-overview). -> Currently, `cs setup` installs the Scala 2 compiler and runner (the `scalac` and -> `scala` commands, respectively). This is usually not an issue because most projects -> use a build tool that works with both Scala 2 and Scala 3. -> Nevertheless, you can install the Scala 3 compiler and runner as command-line tools -> by running the following additional commands: +> `cs setup` installs the Scala 3 compiler and runner by default (the `scalac` and +> `scala` commands, respectively). Whether you intend to use Scala 2 or 3, +> this is usually not an issue because most projects use a build tool that will +> use the correct version of Scala irrespective of the one installed "globally". +> Nevertheless, you can always launch a specific version of Scala using > ``` -> $ cs install scala3-compiler -> $ cs install scala3 +> $ cs launch scala:{{ site.scala-version }} +> $ cs launch scalac:{{ site.scala-version }} +> ``` +> If you prefer Scala 2 to be run by default, you can force that version to be installed with: +> ``` +> $ cs install scala:{{ site.scala-version }} scalac:{{ site.scala-version }} > ``` ### ...or manually @@ -164,7 +168,7 @@ There are a multitude of mailing lists and real-time chat rooms in case you want + --> From 30f11ac17dbe37d7edc46bd64450dd030207b07d Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Thu, 10 Feb 2022 20:02:07 -0800 Subject: [PATCH 0363/1704] Mention library version quirk --- _overviews/FAQ/index.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/_overviews/FAQ/index.md b/_overviews/FAQ/index.md index d20c5d7a4b..fe4b457451 100644 --- a/_overviews/FAQ/index.md +++ b/_overviews/FAQ/index.md @@ -105,9 +105,22 @@ get poor results, try surrounding the symbol with double quotes. sbt 1.x always uses Scala 2.12 to compile build definitions. Your sbt 1.x build definition is always a Scala 2.12 program. -Regardless, in your `build.sbt` you can set `scalaVersion` to anything -you want and your actual program code will be compiled with that -version. +Regardless, in your `build.sbt`, you can set `scalaVersion` to whichever +available distribution you want and your program code will be compiled with that version. + +### I want Scala 3.1.1 (etc); why does std lib say it's using Scala 2.13? + +Scala 3 currently uses the Scala 2.13 library by leveraging its seamless +interoperability. Note that it does not necessarily ingest the latest +version of the Scala 2.13 library. + +``` +Welcome to Scala 3.1.1 (17.0.2, Java OpenJDK 64-Bit Server VM). +Type in expressions for evaluation. Or try :help. + +scala> util.Properties.versionString +val res0: String = version 2.13.6 +``` ### Why is my (abstract or overridden) `val` null? From dcc51592443ca85e535c71068137865daf1ef17e Mon Sep 17 00:00:00 2001 From: czasoprzestrzenny <46657059+czasoprzestrzenny@users.noreply.github.com> Date: Fri, 11 Feb 2022 15:41:48 +0100 Subject: [PATCH 0364/1704] Update generic-classes.md changed a stack pop to stack.pop() --- _tour/generic-classes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_tour/generic-classes.md b/_tour/generic-classes.md index 0b479d30df..d883e88115 100644 --- a/_tour/generic-classes.md +++ b/_tour/generic-classes.md @@ -38,8 +38,8 @@ To use a generic class, put the type in the square brackets in place of `A`. val stack = new Stack[Int] stack.push(1) stack.push(2) -println(stack.pop) // prints 2 -println(stack.pop) // prints 1 +println(stack.pop()) // prints 2 +println(stack.pop()) // prints 1 ``` The instance `stack` can only take Ints. However, if the type argument had subtypes, those could be passed in: ``` From 15ba133475ab1f48392e0b82f1356d93899f2178 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 15 Feb 2022 10:37:40 +0100 Subject: [PATCH 0365/1704] update install instructions for coursier Use the same instructions as listed on the official Coursier website, as git.io short url service is no longer maintained. --- _includes/_ja/getting-started.md | 8 ++++---- _includes/getting-started.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_includes/_ja/getting-started.md b/_includes/_ja/getting-started.md index 0fe5652204..40bcf9ff29 100644 --- a/_includes/_ja/getting-started.md +++ b/_includes/_ja/getting-started.md @@ -14,7 +14,7 @@ Scala をインストールすると、コンパイラやビルドツールな ### Scala インストーラーを使う(推奨) -Scala のインストーラーは[Coursier](https://get-coursier.io/docs/cli-overview)というツールで、コマンドは`cs`です。このツールを使うと、JVM と標準 Scala ツールがシステムにインストールされます。 +Scala のインストーラーは[Coursier](https://get-coursier.io/docs/cli-overview)というツールで、コマンドは`cs`です。このツールを使うと、JVM と標準 Scala ツールがシステムにインストールされます。 以下の手順でお使いのシステムにインストールしてください。
    @@ -146,7 +146,7 @@ Scala について日本語で質問したい場合、Twitterでつぶやくと -- This is handled in `resources/js/functions.js`. -->

    または、Homebrewを使用しない場合は

    - $ curl -fLo cs https://git.io/coursier-cli-macos && chmod +x cs && (xattr -d com.apple.quarantine cs || true) && ./cs setup
    + $ curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-apple-darwin.gz | gzip -d > cs && chmod +x cs && (xattr -d com.apple.quarantine cs || true) && ./cs setup
    diff --git a/_includes/getting-started.md b/_includes/getting-started.md index 628f2a41c5..83c1de45fe 100644 --- a/_includes/getting-started.md +++ b/_includes/getting-started.md @@ -170,7 +170,7 @@ There are a multitude of mailing lists and real-time chat rooms in case you want -- This is handled in `resources/js/functions.js`. -->

    Alternatively, if you don't use Homebrew

    - $ curl -fLo cs https://git.io/coursier-cli-macos && chmod +x cs && (xattr -d com.apple.quarantine cs || true) && ./cs setup
    + $ curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-apple-darwin.gz | gzip -d > cs && chmod +x cs && (xattr -d com.apple.quarantine cs || true) && ./cs setup
    From b3e7f156841a4b3b7ec3f36d739f01d3c65874b1 Mon Sep 17 00:00:00 2001 From: Bersier Date: Wed, 16 Feb 2022 16:06:11 -0500 Subject: [PATCH 0366/1704] Update staging.md Added a link for "PCP". --- _scala3-reference/metaprogramming/staging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_scala3-reference/metaprogramming/staging.md b/_scala3-reference/metaprogramming/staging.md index 0e90966c85..bb35f51055 100644 --- a/_scala3-reference/metaprogramming/staging.md +++ b/_scala3-reference/metaprogramming/staging.md @@ -62,7 +62,7 @@ impose the following restrictions on the use of splices. The framework as discussed so far allows code to be staged, i.e. be prepared to be executed at a later stage. To run that code, there is another method in class `Expr` called `run`. Note that `$` and `run` both map from `Expr[T]` -to `T` but only `$` is subject to the PCP, whereas `run` is just a normal method. +to `T` but only `$` is subject to the [PCP](./macros.html#the-phase-consistency-principle), whereas `run` is just a normal method. `scala.quoted.staging.run` provides a `Quotes` that can be used to show the expression in its scope. On the other hand `scala.quoted.staging.withQuotes` provides a `Quotes` without evaluating the expression. From 99b84bc5a89a1e76535abbea3199d1bb8ee31020 Mon Sep 17 00:00:00 2001 From: Ye Shu Date: Sun, 20 Feb 2022 18:58:55 -0500 Subject: [PATCH 0367/1704] Fix deprecated warning in scala for java programer ``` warning: method + in class Int is deprecated (since 2.13.0): Adding a number and a String is deprecated. Use the string interpolation `s"$num$str"` override def toString(): String = year + "-" + month + "-" + day ``` --- _it/tutorials/scala-for-java-programmers.md | 2 +- _ja/tutorials/scala-for-java-programmers.md | 2 +- _ko/tutorials/scala-for-java-programmers.md | 2 +- _overviews/tutorials/scala-for-java-programmers.md | 2 +- _zh-cn/tutorials/scala-for-java-programmers.md | 2 +- _zh-tw/tutorials/scala-for-java-programmers.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_it/tutorials/scala-for-java-programmers.md b/_it/tutorials/scala-for-java-programmers.md index 5cf8cb4b1c..7a60a2d6c6 100644 --- a/_it/tutorials/scala-for-java-programmers.md +++ b/_it/tutorials/scala-for-java-programmers.md @@ -578,7 +578,7 @@ definendo la classe `Date` come segue: def year = y def month = m def day = d - override def toString(): String = year + "-" + month + "-" + day + override def toString(): String = s"$year-$month-$day" La parte importante qui è la dichiarazione `extends Ord` che segue il nome della classe e dei parametri. Dichiara che la classe `Date` eredita il diff --git a/_ja/tutorials/scala-for-java-programmers.md b/_ja/tutorials/scala-for-java-programmers.md index 8d6fb7aef3..b49113ff72 100644 --- a/_ja/tutorials/scala-for-java-programmers.md +++ b/_ja/tutorials/scala-for-java-programmers.md @@ -461,7 +461,7 @@ Java の `Object` 型のより一般的なものとしてとらえられます def year = y def month = m def day = d - override def toString(): String = year + "-" + month + "-" + day + override def toString(): String = s"$year-$month-$day" ここで重要なのは、クラス名とパラメータのあとに続く `extends Ord` という宣言です。 `Date` クラスが `Ord` トレイトを継承していることを宣言しています。 diff --git a/_ko/tutorials/scala-for-java-programmers.md b/_ko/tutorials/scala-for-java-programmers.md index 4f26dee244..b3f3d1b6d3 100644 --- a/_ko/tutorials/scala-for-java-programmers.md +++ b/_ko/tutorials/scala-for-java-programmers.md @@ -547,7 +547,7 @@ Java 프로그래머들이 트레잇을 이해하는 가장 쉬운 길은 코드 def year = y def month = m def day = d - override def toString(): String = year + "-" + month + "-" + day + override def toString(): String = s"$year-$month-$day" 여기서 중요한 부분은 클래스 이름과 파라미터 뒤에 따라오는 `extends Ord` 선언이다. 이 선언은 `Date` 클래스가 `Ord` diff --git a/_overviews/tutorials/scala-for-java-programmers.md b/_overviews/tutorials/scala-for-java-programmers.md index 52c988066e..ebac87fce3 100644 --- a/_overviews/tutorials/scala-for-java-programmers.md +++ b/_overviews/tutorials/scala-for-java-programmers.md @@ -595,7 +595,7 @@ represent as integers. We therefore start the definition of the def year = y def month = m def day = d - override def toString(): String = year + "-" + month + "-" + day + override def toString(): String = s"$year-$month-$day" The important part here is the `extends Ord` declaration which follows the class name and parameters. It declares that the diff --git a/_zh-cn/tutorials/scala-for-java-programmers.md b/_zh-cn/tutorials/scala-for-java-programmers.md index 9ee8838b4d..00559b596d 100644 --- a/_zh-cn/tutorials/scala-for-java-programmers.md +++ b/_zh-cn/tutorials/scala-for-java-programmers.md @@ -308,7 +308,7 @@ Java 中我们会将这个树用一个抽象父类表示,然后每种节点跟 def year = y def month = m def day = d - override def toString(): String = year + "-" + month + "-" + day + override def toString(): String = s"$year-$month-$day" 这边要注意的是声明在类名称跟参数之后的 `extends Ord`。这个语法声明了 `Date` 继承 `Ord` 特质。 diff --git a/_zh-tw/tutorials/scala-for-java-programmers.md b/_zh-tw/tutorials/scala-for-java-programmers.md index 290ee22ac3..d9b4bcd4d0 100755 --- a/_zh-tw/tutorials/scala-for-java-programmers.md +++ b/_zh-tw/tutorials/scala-for-java-programmers.md @@ -308,7 +308,7 @@ Java 中我們會將這個樹用一個抽象母類別表示,然後每種節點 def year = y def month = m def day = d - override def toString(): String = year + "-" + month + "-" + day + override def toString(): String = s"$year-$month-$day" 這邊要注意的是宣告在類別名稱跟參數之後的 `extends Ord`。這個語法宣告了 `Date` 繼承 `Ord` 特質。 From cf096aebaaceb121695d1aea973c5216c97d8437 Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Wed, 23 Feb 2022 20:24:54 -0800 Subject: [PATCH 0368/1704] Add lightbend blog post --- _overviews/compiler-options/optimizer.md | 221 +++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 _overviews/compiler-options/optimizer.md diff --git a/_overviews/compiler-options/optimizer.md b/_overviews/compiler-options/optimizer.md new file mode 100644 index 0000000000..a5cf6fbb29 --- /dev/null +++ b/_overviews/compiler-options/optimizer.md @@ -0,0 +1,221 @@ +# The Scala 2.12 / 2.13 Inliner and Optimizer + +_by [Lukas Rytz](https://github.com/lrytz), November 7, 2018_ + +tl;dr: + +- Don't enable the optimizer during development: it breaks incremental compilation, and it makes the compiler slower. Only enable it for testing, on CI, and to build releases. +- Enable method-local optimizations with `-opt:l:method`. This option is safe for binary compatibility, but typically doesn't improve performance on its own. +- Enable inlining in addition to method-local optimizations with `-opt:l:inline` and `-opt-inline-from:[PATTERN]` + - Don't inline from your dependencies when publishing a library, it breaks binary compatibility. Use `-opt-inline-from:my.package.**` to only inline from packages within your library. + - When compiling an application with global inlining (`-opt-inline-from:**`), ensure that the run-time classpath is exactly the same as the compile-time classpath. +- The `@inline` annotation only has an effect if the inliner is enabled. It tells the inliner to always try to inline the annotated method or callsite. +- Without the `@inline` annotation, the inliner generally inlines higher-order methods and forwarder methods. The main goal is to eliminate megamorphic callsites due to functions passed as argument, and to eliminate value boxing. Other optimizations are delegated to the JVM. + +To learn more, read on. + +## Intro + +The Scala compiler has included an inliner since version 2.0. Closure elimination and dead code elimination were added in 2.1. That was the first Scala optimizer, written and maintained by [Iulian Dragos](https://github.com/dragos). He continued to improve these features over time and consolidated them under the `-optimise` flag (later Americanized to `-optimize`), which remained available through Scala 2.11. + +The optimizer was re-written for Scala 2.12 to become more reliable and powerful – and to side-step the spelling issue by calling the new flag `-opt`. This post describes how to use the optimizer in Scala 2.12 and 2.13: what it does, how it works, and what are its limitations. + +## Motivation + +Why does the Scala compiler even have a JVM bytecode optimizer? The JVM is a highly optimized runtime with a just-in-time (JIT) compiler with 19 years of tuning. It's because there are certain well-known code patterns that the JVM fails to optimize properly. These patterns are common in functional languages such as Scala. (Increasingly, Java code with lambdas is catching up and showing the same performance issues at run-time.) + +The two most important such patterns are "megamorphic dispatch" (also called "the inlining problem") and value boxing. If you'd like to learn more about these problems in the context of Scala, you could watch the part of [my Scala Days 2015 talk (starting at 26:13)](https://youtu.be/Ic4vQJcYwsU?t=1573). + +The goal of the Scala optimizer is to produce bytecode that the JVM can execute fast. It is also a goal to avoid performing any optimizations that the JVM can already do well. + +This means that the Scala optimizer may become obsolete in the future, if the JIT compiler is improved to handle these patterns better. In fact, with the arrival of GraalVM, that future might be nearer than you think! We take a closer look at Graal in a follow-up post. But for now, we dive into some details about the Scala optimizer. + +## Constraints and assumptions + +The Scala optimizer has to make its improvements within fairly narrow constraints: + +- The optimizer only changes method bodies, but never signatures of classes or methods. The generated bytecode has the same (binary) interface, whether or not the optimizer is enabled. +- We don't assume the whole program (all user code plus all of its dependencies, that together make up an application) is known when running the optimizer. There may be classes on the run-time classpath that we don't see at compile-time: we may be compiling a library, or only a component of an application. This means that: + - Every non-final method can potentially be overridden, even if at compile-time there are no classes that define such an override + - Consequently, we can only inline methods that can be resolved at compile-time: final methods, methods in `object`s, and methods where the receiver's type is precisely known (for example, in `(new A).f`, the receiver is known to be exactly `A`, not a subtype of `A`). +- The optimizer does not break applications that use reflection. This follows from the two points above: changes to classes could be observed by reflection, and additional classes could be loaded and instantiated dynamically. + +However, even when staying within these constraints, some changes performed by the optimizer can be observed at run-time: + +- Inlined methods disappear from call stacks. + + - This can lead to unexpected behaviors when using a debugger. + - Related: line numbers (stored in bytecode) are discarded when a method is inlined into a different classfile, which also impacts debugging experience. (This [could be improved](https://github.com/scala/scala-dev/issues/3).) + +- Inlining a method can delay class loading of the class where the method is defined. + +- The optimizer assumes that modules (singletons like `object O`) are never `null`. + - This assumption can be false if the module is loaded in its superclass. The following example throws a `NullPointerException` when compiled normally, but prints `0` when compiled with the optimizer enabled: + + ```scala + class A { + println(Test.f) + } + object Test extends A { + @inline def f = 0 + def main(args: Array[String]): Unit = () + } + ``` + + - This assumption can be disabled with `-opt:-assume-modules-non-null`, which results in additional null checks in optimized code. + +- The optimizer removes unnecessary loads of certain built-in modules, for example `scala.Predef` and `scala.runtime.ScalaRunTime`. This means that initialization (construction) of these modules can be skipped or delayed. + + - For example, in `def f = 1 -> ""`, the method `Predef.->` is inlined and the access to `Predef` is eliminated. The resulting code is `def f = new Tuple2(1, "")`. + - This assumption can be disabled with `-opt:-allow-skip-core-module-init` + +- The optimizer eliminates unused `C.getClass` calls, which may delay class loading. This can be disabled with `-opt:-allow-skip-class-loading`. + +## Binary compatibility + +Scala minor releases are binary compatible with each other, for example 2.12.6 and 2.12.7. The same is true for many libraries in the Scala ecosystem. These binary compatibility promises are the main reason for the Scala optimizer not to be enabled everywhere. + +The reason is that inlining a method from one class into another changes the (binary) interface that is accessed: + +```scala +class C { + private[this] var x = 0 + @inline final def inc(): Int = { x += 1; x } +} +``` + +When inlining a callsite `c.inc()`, the resulting code no longer calls `inc`, but instead accesses the field `x` directly. Since that field is private (also in bytecode), inlining `inc` is only allowed within the class `C` itself. Trying to access `x` from any other class would cause an `IllegalAccessError` at run-time. + +However, there are many cases where implementation details in Scala source code become public in bytecode: + +```scala +class C { + private def x = 0 + @inline final def m: Int = x +} +object C { + def t(c: C) = c.x +} +``` + +Scala allows accessing the private method `x` in the companion object `C`. In bytecode, however, the classfile for the companion `C$` is not allowed to access a private method of `C`. For that reason, the Scala compiler "mangles" the name of `x` to `C$$x` and makes the method public. + +This means that `m` can be inlined into classes other than `C`, since the resulting code invokes `C.C$$x` instead of `C.m`. Unfortunately this breaks Scala's binary compatibility promise: the fact that the public method `m` calls a private method `x` is considered to be an implementation detail that can change in a minor release of the library defining `C`. + +Even more trivially, assume that method `m` was buggy and is changed to `def m = if (fullMoon) 1 else x` in a minor release. Normally, it would be enough for a user to put the new version on the classpath. However, if the old version of `c.m` was inlined at compile-time, having the new version of C on the run-time classpath would not fix the bug. + +In order to safely use the Scala optimizer, users need to make sure that the compile-time and run-time classpaths are identical. This has a far-reaching consequence for library developers: **libraries that are published to be consumed by other projects should not inline code from the classpath**. The inliner can be configured to inline code from the library itself using `-opt-inline-from:my.package.**`. + +The reason for this restriction is that dependency management tools like sbt will often pick newer versions of transitive dependencies. For example, if library `A` depends on `core-1.1.1`, `B` depends on `core-1.1.2` and the application depends on both `A` and `B`, the build tool will put `core-1.1.2` on the classpath. If code from `core-1.1.1` was inlined into `A` at compile-time, it might break at run-time due to a binary incompatibility. + +## Using and interacting with the optimizer + +The compiler flag for enabling the optimizer is `-opt`. Running `scalac -opt:help` shows how to use the flag. + +By default (without any compiler flags, or with `-opt:l:default`), the Scala compiler eliminates unreachable code, but does not run any other optimizations. + +`-opt:l:method` enables all method-local optimizations, for example: + +- Elimination of code that loads unused values +- Rewriting of null and `isInstanceOf` checks whose result is known at compile-time +- Elimination of value boxes like `java.lang.Integer` or `scala.runtime.DoubleRef` that are created within a method and don't escape it + +Individual optimizations can be disabled. For example, `-opt:l:method,-nullness-tracking` disables nullness optimizations. + +Method-local optimizations alone typically don't have any positive effect on performance, because source code usually doesn't have unnecessary boxing or null checks. However, local optimizations can often be applied after inlining, so it's really the combination of inlining and local optimizations that can improve program performance. + +`-opt:l:inline` enables inlining in addition to method-local optimizations. However, to avoid unexpected binary compatibility issues, we also need to tell the compiler which code it is allowed to inline. This is done with the `-opt-inline-from` compiler flag. Examples: + +- `-opt-inline-from:my.library.**` enables inlining from any class defined in package `my.library`, or in any of its sub-packages. Inlining within a library is safe for binary compatibility, so the resulting binary can be published. It will still work correctly even if one of its dependencies is updated to a newer minor version in the run-time classpath. +- `-opt-inline-from:` enables inlining from the set of source files being compiled in the current compiler invocation. This option can also be used for compiling libraries. If the source files of a library are split up across multiple sbt projects, inlining is only done within each project. Note that in an incremental compilation, inlining would only happen within the sources being re-compiled – but in any case, it is recommended to only enable the optimizer in CI and release builds (and to run `clean` before building). +- `-opt-inline-from:**` allows inlining from every class, including the JDK. This option enables full optimization when compiling an application. To avoid binary incompatibilities, it is mandatory to ensure that the run-time classpath is identical to the compile-time classpath, including the Java standard library. + +Running `scalac -opt-inline-from:help` explains how to use the compiler flag. + +### Inliner heuristics and `@inline` + +When the inliner is enabled, it automatically selects callsites for inlining according to a heuristic. + +As mentioned in the introduction, the main goal of the Scala optimizer is to eliminate megamorphic dispatch and value boxing. In order to keep this post from growing too long, a followup post will include the analysis of concrete examples that motivate which callsites are selected by the inliner heuristic. + +Nevertheless, it is useful to have an intuition of how the heuristic works, so here is an overview: + +- Methods or callsites annotated [`@noinline`](https://www.scala-lang.org/api/current/scala/noinline.html) are not inlined. +- The inliner doesn't inline *into* forwarder methods. +- Methods or callsites annotated [`@inline`](https://www.scala-lang.org/api/current/scala/inline.html) are inlined. +- Higher-order methods with a function literal as argument are inlined. +- Higher-order methods where a parameter function of the callsite method is forwarded to the callee are inlined. +- Methods with an `IntRef` / `DoubleRef` / ... parameter are inlined. When nested methods update variables of the outer method, those variables are boxed into `XRef` objects. These boxes can often be eliminated after inlining the nested method. +- Forwarders, factory methods and trivial methods are inlined. Examples include simple closure bodies like `_ + 1` and synthetic methods (potentially with boxing / unboxing adaptations) such as bridges. + +To prevent methods from exceeding the JVM's method size limit, the inliner has size limits. Inlining into a method stops when the number of instructions exceeds a certain threshold. + +As you can see in the list above, the `@inline` and `@noinline` annotations are the only way for programmers to influence inlining decisions. In general, our recommendation is to avoid using these annotations. If you observe issues with the inliner heuristic that can be fixed by annotating methods, we are very keen to hear about them, for example in the form of a [bug report](https://github.com/scala/bug/issues). + +A related anecdote: in the Scala compiler and standard library (which are built with the optimizer enabled), there are roughly 330 `@inline`-annotated methods. Removing all of these annotations and re-building the project has no effect on the compiler's performance. So the annotations are well-intended and benign, but in reality unnecessary. + +For expert users, `@inline` annotations can be used to hand-tune performance critical code without reducing abstraction. If you have a project that falls into this category, please [let us know](https://contributors.scala-lang.org), we're interested to learn more! + +Finally, note that the `@inline` annotation only has an effect when the inliner is enabled, which is not the case by default. The reason is to avoid introducing accidental binary incompatibilities, as [explained above](#binary-compatibility). + +### Inliner warnings + +The inliner can issue warnings when callsites cannot be inlined. By default, these warnings are not issued individually, but only as a summary at the end of compilation (similar to deprecation warnings). + +``` +$> scalac Test.scala -opt:l:inline '-opt-inline-from:**' +warning: there was one inliner warning; re-run enabling -opt-warnings for details, or try -help +one warning found + +$> scalac Test.scala -opt:l:inline '-opt-inline-from:**' -opt-warnings +Test.scala:3: warning: C::f()I is annotated @inline but could not be inlined: +The method is not final and may be overridden. + def t = f + ^ +one warning found +``` + +By default, the inliner issues warnings for invocations of methods annotated `@inline` that cannot be inlined. Here is the source code that was compiled in the commands above: + +```scala +class C { + @inline def f = 1 + def t = f // cannot inline: C.f is not final +} +object T extends C { + override def t = f // can inline: T.f is final +} +``` + +The `-opt-warnings` flag has more configurations. With `-opt-warnings:_`, a warning is issued for every callsite that is selected by the heuristic but cannot be inlined. See also `-opt-warnings:help`. + +### Inliner log + +If you're curious (or maybe even skeptical) about what the inliner is doing to your code, you can use the `-Yopt-log-inline` flag to produce a trace of the inliner's work: + +```scala +package my.project +class C { + def f(a: Array[Int]) = a.map(_ + 1) +} +``` + +``` +$> scalac Test.scala -opt:l:inline '-opt-inline-from:**' -Yopt-log-inline my/project/C.f +Inlining into my/project/C.f + inlined scala/Predef$.intArrayOps (the callee is annotated `@inline`). Before: 15 ins, after: 30 ins. + inlined scala/collection/ArrayOps$.map$extension (the callee is a higher-order method, the argument for parameter (evidence$6: Function1) is a function literal). Before: 30 ins, after: 94 ins. + inlined scala/runtime/ScalaRunTime$.array_length (the callee is annotated `@inline`). Before: 94 ins, after: 110 ins. + [...] + rewrote invocations of closure allocated in my/project/C.f with body $anonfun$f$1: INVOKEINTERFACE scala/Function1.apply (Ljava/lang/Object;)Ljava/lang/Object; (itf) + inlined my/project/C.$anonfun$f$1 (the callee is a synthetic forwarder method). Before: 654 ins, after: 666 ins. + inlined scala/runtime/BoxesRunTime.boxToInteger (the callee is a forwarder method with boxing adaptation). Before: 666 ins, after: 674 ins. +``` + +Explaining the details here is out of scope for this post. We defer this discussion to a follow-up post that will explain the internals of the Scala optimizer in more detail. + +## Summary + +The goal of this article was to explain why the Scala optimizer exists and give a rough explanation what it can and cannot do. It also showed how to configure and use the optimizer in your project. + +In the next post, we will go into detail about how the optimizer works, what transformations are applied, and how they work together. We will also measure performance improvements that the optimizer can bring. Finally, we will look at related projects, dive a little more into the history of the optimizer, and discuss ideas for the future. From 13f8c85396d73527fdeab4372455424e1ed3a615 Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Wed, 23 Feb 2022 21:39:23 -0800 Subject: [PATCH 0369/1704] Update optimizer overview --- _data/overviews.yml | 5 ++ _overviews/compiler-options/optimizer.md | 68 ++++++++++++------------ 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/_data/overviews.yml b/_data/overviews.yml index cf89f286a7..ae56e9b5e9 100644 --- a/_data/overviews.yml +++ b/_data/overviews.yml @@ -259,6 +259,11 @@ icon: cog url: "compiler-options/errors.html" description: "A new engine for more user-friendly error messages, printing chains of dependent implicits and colored found/required type diffs." + - title: Optimizer + by: Lukas Rytz and Andrew Marki + icon: cog + url: "compiler-options/optimizer.html" + description: "The compiler can perform various optimizations as specified by compiler options." - category: Legacy diff --git a/_overviews/compiler-options/optimizer.md b/_overviews/compiler-options/optimizer.md index a5cf6fbb29..936967e8a0 100644 --- a/_overviews/compiler-options/optimizer.md +++ b/_overviews/compiler-options/optimizer.md @@ -1,18 +1,26 @@ -# The Scala 2.12 / 2.13 Inliner and Optimizer +--- +layout: singlepage-overview +title: Optimizer +--- + +**[Lukas Rytz](https://github.com/lrytz) (November 7, 2018)** -_by [Lukas Rytz](https://github.com/lrytz), November 7, 2018_ +**[Andrew Marki](https://github.com/som-snytt) (February 29, 2022)** -tl;dr: +# The Scala 2.12 / 2.13 Inliner and Optimizer +## In Brief + +- The Scala compiler has a compile-time optimizer that is available in versions 2.12 and 2.13, but not yet in Scala 3. - Don't enable the optimizer during development: it breaks incremental compilation, and it makes the compiler slower. Only enable it for testing, on CI, and to build releases. -- Enable method-local optimizations with `-opt:l:method`. This option is safe for binary compatibility, but typically doesn't improve performance on its own. -- Enable inlining in addition to method-local optimizations with `-opt:l:inline` and `-opt-inline-from:[PATTERN]` - - Don't inline from your dependencies when publishing a library, it breaks binary compatibility. Use `-opt-inline-from:my.package.**` to only inline from packages within your library. - - When compiling an application with global inlining (`-opt-inline-from:**`), ensure that the run-time classpath is exactly the same as the compile-time classpath. +- Enable method-local optimizations with `-opt:local`. This option is safe for binary compatibility, but typically doesn't improve performance on its own. +- Enable inlining in addition to method-local optimizations with `-opt:inline:[PATTERN]`. + - Don't inline from your dependencies when publishing a library, it breaks binary compatibility. Use `-opt:inline:my.package.**` to only inline from packages within your library. + - When compiling an application with global inlining (`-opt:inline:**`), ensure that the run-time classpath is **exactly the same** as the compile-time classpath. - The `@inline` annotation only has an effect if the inliner is enabled. It tells the inliner to always try to inline the annotated method or callsite. - Without the `@inline` annotation, the inliner generally inlines higher-order methods and forwarder methods. The main goal is to eliminate megamorphic callsites due to functions passed as argument, and to eliminate value boxing. Other optimizations are delegated to the JVM. -To learn more, read on. +Read more to learn more. ## Intro @@ -20,15 +28,17 @@ The Scala compiler has included an inliner since version 2.0. Closure eliminatio The optimizer was re-written for Scala 2.12 to become more reliable and powerful – and to side-step the spelling issue by calling the new flag `-opt`. This post describes how to use the optimizer in Scala 2.12 and 2.13: what it does, how it works, and what are its limitations. +The options were simplified for 2.13.9, as described here. The [earlier version](https://www.lightbend.com/blog/scala-inliner-optimizer) of this article uses the traditional forms, which are still supported. + ## Motivation -Why does the Scala compiler even have a JVM bytecode optimizer? The JVM is a highly optimized runtime with a just-in-time (JIT) compiler with 19 years of tuning. It's because there are certain well-known code patterns that the JVM fails to optimize properly. These patterns are common in functional languages such as Scala. (Increasingly, Java code with lambdas is catching up and showing the same performance issues at run-time.) +Why does the Scala compiler even have a JVM bytecode optimizer? The JVM is a highly optimized runtime with a just-in-time (JIT) compiler that benefits from over two decades of tuning. It's because there are certain well-known code patterns that the JVM fails to optimize properly. These patterns are common in functional languages such as Scala. (Increasingly, Java code with lambdas is catching up and showing the same performance issues at run-time.) The two most important such patterns are "megamorphic dispatch" (also called "the inlining problem") and value boxing. If you'd like to learn more about these problems in the context of Scala, you could watch the part of [my Scala Days 2015 talk (starting at 26:13)](https://youtu.be/Ic4vQJcYwsU?t=1573). The goal of the Scala optimizer is to produce bytecode that the JVM can execute fast. It is also a goal to avoid performing any optimizations that the JVM can already do well. -This means that the Scala optimizer may become obsolete in the future, if the JIT compiler is improved to handle these patterns better. In fact, with the arrival of GraalVM, that future might be nearer than you think! We take a closer look at Graal in a follow-up post. But for now, we dive into some details about the Scala optimizer. +This means that the Scala optimizer may become obsolete in the future, if the JIT compiler is improved to handle these patterns better. In fact, with the arrival of GraalVM, that future might be nearer than you think! But for now, we dive into some details about the Scala optimizer. ## Constraints and assumptions @@ -45,7 +55,7 @@ However, even when staying within these constraints, some changes performed by t - Inlined methods disappear from call stacks. - This can lead to unexpected behaviors when using a debugger. - - Related: line numbers (stored in bytecode) are discarded when a method is inlined into a different classfile, which also impacts debugging experience. (This [could be improved](https://github.com/scala/scala-dev/issues/3).) + - Related: line numbers (stored in bytecode) are discarded when a method is inlined into a different classfile, which also impacts debugging experience. (This [could be improved](https://github.com/scala/scala-dev/issues/3) and is expected to [progress](https://github.com/lampepfl/dotty/pull/11492).) - Inlining a method can delay class loading of the class where the method is defined. @@ -73,7 +83,7 @@ However, even when staying within these constraints, some changes performed by t ## Binary compatibility -Scala minor releases are binary compatible with each other, for example 2.12.6 and 2.12.7. The same is true for many libraries in the Scala ecosystem. These binary compatibility promises are the main reason for the Scala optimizer not to be enabled everywhere. +Scala minor releases are binary compatible with each other, for example, 2.12.6 and 2.12.7. The same is true for many libraries in the Scala ecosystem. These binary compatibility promises are the main reason for the Scala optimizer not to be enabled everywhere. The reason is that inlining a method from one class into another changes the (binary) interface that is accessed: @@ -112,25 +122,25 @@ The reason for this restriction is that dependency management tools like sbt wil The compiler flag for enabling the optimizer is `-opt`. Running `scalac -opt:help` shows how to use the flag. -By default (without any compiler flags, or with `-opt:l:default`), the Scala compiler eliminates unreachable code, but does not run any other optimizations. +By default (without any compiler flags, or with `-opt:default`), the Scala compiler eliminates unreachable code, but does not run any other optimizations. -`-opt:l:method` enables all method-local optimizations, for example: +`-opt:local` enables all method-local optimizations, for example: - Elimination of code that loads unused values - Rewriting of null and `isInstanceOf` checks whose result is known at compile-time - Elimination of value boxes like `java.lang.Integer` or `scala.runtime.DoubleRef` that are created within a method and don't escape it -Individual optimizations can be disabled. For example, `-opt:l:method,-nullness-tracking` disables nullness optimizations. +Individual optimizations can be disabled. For example, `-opt:local,-nullness-tracking` disables nullness optimizations. Method-local optimizations alone typically don't have any positive effect on performance, because source code usually doesn't have unnecessary boxing or null checks. However, local optimizations can often be applied after inlining, so it's really the combination of inlining and local optimizations that can improve program performance. -`-opt:l:inline` enables inlining in addition to method-local optimizations. However, to avoid unexpected binary compatibility issues, we also need to tell the compiler which code it is allowed to inline. This is done with the `-opt-inline-from` compiler flag. Examples: +`-opt:inline` enables inlining in addition to method-local optimizations. However, to avoid unexpected binary compatibility issues, we also need to tell the compiler which code it is allowed to inline. This is done by specifying a pattern after the option to select packages, classes, and methods for inlining. Examples: -- `-opt-inline-from:my.library.**` enables inlining from any class defined in package `my.library`, or in any of its sub-packages. Inlining within a library is safe for binary compatibility, so the resulting binary can be published. It will still work correctly even if one of its dependencies is updated to a newer minor version in the run-time classpath. -- `-opt-inline-from:` enables inlining from the set of source files being compiled in the current compiler invocation. This option can also be used for compiling libraries. If the source files of a library are split up across multiple sbt projects, inlining is only done within each project. Note that in an incremental compilation, inlining would only happen within the sources being re-compiled – but in any case, it is recommended to only enable the optimizer in CI and release builds (and to run `clean` before building). -- `-opt-inline-from:**` allows inlining from every class, including the JDK. This option enables full optimization when compiling an application. To avoid binary incompatibilities, it is mandatory to ensure that the run-time classpath is identical to the compile-time classpath, including the Java standard library. +- `-opt:inline:my.library.**` enables inlining from any class defined in package `my.library`, or in any of its sub-packages. Inlining within a library is safe for binary compatibility, so the resulting binary can be published. It will still work correctly even if one of its dependencies is updated to a newer minor version in the run-time classpath. +- `-opt-inline:`, where the pattern is the literal string ``, enables inlining from the set of source files being compiled in the current compiler invocation. This option can also be used for compiling libraries. If the source files of a library are split up across multiple sbt projects, inlining is only done within each project. Note that in an incremental compilation, inlining would only happen within the sources being re-compiled – but in any case, it is recommended to only enable the optimizer in CI and release builds (and to run `clean` before building). +- `-opt:inline:**` allows inlining from every class, including the JDK. This option enables full optimization when compiling an application. To avoid binary incompatibilities, it is mandatory to ensure that the run-time classpath is identical to the compile-time classpath, including the Java standard library. -Running `scalac -opt-inline-from:help` explains how to use the compiler flag. +Running `scalac -opt:help` explains how to use the compiler flag. ### Inliner heuristics and `@inline` @@ -163,11 +173,11 @@ Finally, note that the `@inline` annotation only has an effect when the inliner The inliner can issue warnings when callsites cannot be inlined. By default, these warnings are not issued individually, but only as a summary at the end of compilation (similar to deprecation warnings). ``` -$> scalac Test.scala -opt:l:inline '-opt-inline-from:**' +$> scalac Test.scala '-opt:inline:**' warning: there was one inliner warning; re-run enabling -opt-warnings for details, or try -help one warning found -$> scalac Test.scala -opt:l:inline '-opt-inline-from:**' -opt-warnings +$> scalac Test.scala '-opt:inline:**' -Wopt Test.scala:3: warning: C::f()I is annotated @inline but could not be inlined: The method is not final and may be overridden. def t = f @@ -187,11 +197,11 @@ object T extends C { } ``` -The `-opt-warnings` flag has more configurations. With `-opt-warnings:_`, a warning is issued for every callsite that is selected by the heuristic but cannot be inlined. See also `-opt-warnings:help`. +The `-Wopt` flag has more configurations. With `-Wopt:_`, a warning is issued for every callsite that is selected by the heuristic but cannot be inlined. See also `-Wopt:help`. ### Inliner log -If you're curious (or maybe even skeptical) about what the inliner is doing to your code, you can use the `-Yopt-log-inline` flag to produce a trace of the inliner's work: +If you're curious (or maybe even skeptical) about what the inliner is doing to your code, you can use the `-Vinline` verbose flag to produce a trace of the inliner's work: ```scala package my.project @@ -201,7 +211,7 @@ class C { ``` ``` -$> scalac Test.scala -opt:l:inline '-opt-inline-from:**' -Yopt-log-inline my/project/C.f +$> scalac Test.scala '-opt:inline:**' -Vinline my/project/C.f Inlining into my/project/C.f inlined scala/Predef$.intArrayOps (the callee is annotated `@inline`). Before: 15 ins, after: 30 ins. inlined scala/collection/ArrayOps$.map$extension (the callee is a higher-order method, the argument for parameter (evidence$6: Function1) is a function literal). Before: 30 ins, after: 94 ins. @@ -211,11 +221,3 @@ Inlining into my/project/C.f inlined my/project/C.$anonfun$f$1 (the callee is a synthetic forwarder method). Before: 654 ins, after: 666 ins. inlined scala/runtime/BoxesRunTime.boxToInteger (the callee is a forwarder method with boxing adaptation). Before: 666 ins, after: 674 ins. ``` - -Explaining the details here is out of scope for this post. We defer this discussion to a follow-up post that will explain the internals of the Scala optimizer in more detail. - -## Summary - -The goal of this article was to explain why the Scala optimizer exists and give a rough explanation what it can and cannot do. It also showed how to configure and use the optimizer in your project. - -In the next post, we will go into detail about how the optimizer works, what transformations are applied, and how they work together. We will also measure performance improvements that the optimizer can bring. Finally, we will look at related projects, dive a little more into the history of the optimizer, and discuss ideas for the future. From 3925a6475dfe3ff6ef0d25c319663d1117df31a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 26 Feb 2022 02:56:40 +0000 Subject: [PATCH 0370/1704] Bump nokogiri from 1.12.5 to 1.13.3 Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.12.5 to 1.13.3. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.12.5...v1.13.3) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0bbe4414f9..5b52d7697a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -54,9 +54,9 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.6.1) - nokogiri (1.12.5) - mini_portile2 (~> 2.6.1) + mini_portile2 (2.8.0) + nokogiri (1.13.3) + mini_portile2 (~> 2.8.0) racc (~> 1.4) nokogumbo (2.0.2) nokogiri (~> 1.8, >= 1.8.4) @@ -64,7 +64,7 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.6) - racc (1.5.2) + racc (1.6.0) rainbow (3.0.0) rb-fsevent (0.11.0) rb-inotify (0.10.1) From 582e6c017de371609f54545b0e340fe4287cc22f Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 2 Mar 2022 07:06:41 -0800 Subject: [PATCH 0371/1704] Ruby 2.6 (was 2.5) --- .github/workflows/build.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9cca5b785..808f492a7d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 2.5.8 + ruby-version: 2.6.9 bundler-cache: true - name: Set up coursier uses: coursier/setup-action@v1.2.0-M2 diff --git a/Dockerfile b/Dockerfile index b972fe1c24..2fe3d70737 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.5 +FROM ruby:2.6 RUN gem install bundler jekyll From b33f3a7d286db7aa3d3eb481b1997b5d1ce7388b Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Thu, 3 Mar 2022 02:46:11 -0800 Subject: [PATCH 0372/1704] Review and corrections --- _data/overviews.yml | 2 +- _overviews/compiler-options/optimizer.md | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_data/overviews.yml b/_data/overviews.yml index ae56e9b5e9..a8bc055f7c 100644 --- a/_data/overviews.yml +++ b/_data/overviews.yml @@ -263,7 +263,7 @@ by: Lukas Rytz and Andrew Marki icon: cog url: "compiler-options/optimizer.html" - description: "The compiler can perform various optimizations as specified by compiler options." + description: "The compiler can perform various optimizations." - category: Legacy diff --git a/_overviews/compiler-options/optimizer.md b/_overviews/compiler-options/optimizer.md index 936967e8a0..cad7255280 100644 --- a/_overviews/compiler-options/optimizer.md +++ b/_overviews/compiler-options/optimizer.md @@ -3,9 +3,9 @@ layout: singlepage-overview title: Optimizer --- -**[Lukas Rytz](https://github.com/lrytz) (November 7, 2018)** +**[Lukas Rytz](https://github.com/lrytz) (2018)** -**[Andrew Marki](https://github.com/som-snytt) (February 29, 2022)** +**[Andrew Marki](https://github.com/som-snytt) (2022)** # The Scala 2.12 / 2.13 Inliner and Optimizer @@ -114,7 +114,7 @@ This means that `m` can be inlined into classes other than `C`, since the result Even more trivially, assume that method `m` was buggy and is changed to `def m = if (fullMoon) 1 else x` in a minor release. Normally, it would be enough for a user to put the new version on the classpath. However, if the old version of `c.m` was inlined at compile-time, having the new version of C on the run-time classpath would not fix the bug. -In order to safely use the Scala optimizer, users need to make sure that the compile-time and run-time classpaths are identical. This has a far-reaching consequence for library developers: **libraries that are published to be consumed by other projects should not inline code from the classpath**. The inliner can be configured to inline code from the library itself using `-opt-inline-from:my.package.**`. +In order to safely use the Scala optimizer, users need to make sure that the compile-time and run-time classpaths are identical. This has a far-reaching consequence for library developers: **libraries that are published to be consumed by other projects should not inline code from the classpath**. The inliner can be configured to inline code from the library itself using `-opt:inline:my.package.**`. The reason for this restriction is that dependency management tools like sbt will often pick newer versions of transitive dependencies. For example, if library `A` depends on `core-1.1.1`, `B` depends on `core-1.1.2` and the application depends on both `A` and `B`, the build tool will put `core-1.1.2` on the classpath. If code from `core-1.1.1` was inlined into `A` at compile-time, it might break at run-time due to a binary incompatibility. @@ -137,7 +137,7 @@ Method-local optimizations alone typically don't have any positive effect on per `-opt:inline` enables inlining in addition to method-local optimizations. However, to avoid unexpected binary compatibility issues, we also need to tell the compiler which code it is allowed to inline. This is done by specifying a pattern after the option to select packages, classes, and methods for inlining. Examples: - `-opt:inline:my.library.**` enables inlining from any class defined in package `my.library`, or in any of its sub-packages. Inlining within a library is safe for binary compatibility, so the resulting binary can be published. It will still work correctly even if one of its dependencies is updated to a newer minor version in the run-time classpath. -- `-opt-inline:`, where the pattern is the literal string ``, enables inlining from the set of source files being compiled in the current compiler invocation. This option can also be used for compiling libraries. If the source files of a library are split up across multiple sbt projects, inlining is only done within each project. Note that in an incremental compilation, inlining would only happen within the sources being re-compiled – but in any case, it is recommended to only enable the optimizer in CI and release builds (and to run `clean` before building). +- `-opt:inline:`, where the pattern is the literal string ``, enables inlining from the set of source files being compiled in the current compiler invocation. This option can also be used for compiling libraries. If the source files of a library are split up across multiple sbt projects, inlining is only done within each project. Note that in an incremental compilation, inlining would only happen within the sources being re-compiled – but in any case, it is recommended to only enable the optimizer in CI and release builds (and to run `clean` before building). - `-opt:inline:**` allows inlining from every class, including the JDK. This option enables full optimization when compiling an application. To avoid binary incompatibilities, it is mandatory to ensure that the run-time classpath is identical to the compile-time classpath, including the Java standard library. Running `scalac -opt:help` explains how to use the compiler flag. @@ -174,7 +174,7 @@ The inliner can issue warnings when callsites cannot be inlined. By default, the ``` $> scalac Test.scala '-opt:inline:**' -warning: there was one inliner warning; re-run enabling -opt-warnings for details, or try -help +warning: there was one inliner warning; re-run enabling -Wopt for details, or try -help one warning found $> scalac Test.scala '-opt:inline:**' -Wopt From 5ab2ddda467ac4b3228338002648c0315da28269 Mon Sep 17 00:00:00 2001 From: Brian Yue Date: Sat, 5 Mar 2022 12:19:04 +0800 Subject: [PATCH 0373/1704] Fix invalid links --- _overviews/scaladoc/contribute.md | 2 +- _scala3-reference/other-new-features/explicit-nulls.md | 2 +- scala3/scaladoc.md | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/_overviews/scaladoc/contribute.md b/_overviews/scaladoc/contribute.md index c902e99f97..dc0af2ce57 100644 --- a/_overviews/scaladoc/contribute.md +++ b/_overviews/scaladoc/contribute.md @@ -25,4 +25,4 @@ which covers the steps and workflow necessary work on the Scaladoc tool. As of Scala 2.13, the Scaladoc tool is maintained but not actively developed. Major development of Scaladoc will progress as a part of Dotty for Scala 3 in the -[Dottydoc](https://dotty.epfl.ch/docs/usage/dottydoc.html) tool. +[Scaladoc]({% link _overviews/scala3-scaladoc/index.md %}) tool. diff --git a/_scala3-reference/other-new-features/explicit-nulls.md b/_scala3-reference/other-new-features/explicit-nulls.md index a0dac187ae..d33d86c931 100644 --- a/_scala3-reference/other-new-features/explicit-nulls.md +++ b/_scala3-reference/other-new-features/explicit-nulls.md @@ -537,4 +537,4 @@ Our strategy for binary compatibility with Scala binaries that predate explicit and new libraries compiled without `-Yexplicit-nulls` is to leave the types unchanged and be compatible but unsound. -[More details](https://dotty.epfl.ch/docs/internals/explicit-nulls.html) +[More details](https://dotty.epfl.ch/3.0.0/docs/internals/explicit-nulls.html) diff --git a/scala3/scaladoc.md b/scala3/scaladoc.md index 69c307654e..3b8e90b7d8 100644 --- a/scala3/scaladoc.md +++ b/scala3/scaladoc.md @@ -79,7 +79,7 @@ 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]: https://dotty.epfl.ch/docs/usage/scaladoc/docstrings.html -[static-documentation]: https://dotty.epfl.ch/docs/usage/scaladoc/static-site.html -[built-in-blog]: https://dotty.epfl.ch/docs/usage/scaladoc/blog.html +[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]: https://dotty.epfl.ch/docs/usage/scaladoc/settings.html#-social-links From 821446e2eb2ed77a39e0839698f821b5e5051562 Mon Sep 17 00:00:00 2001 From: Brian Yue Date: Fri, 4 Mar 2022 22:47:25 +0800 Subject: [PATCH 0374/1704] [zh-cn] Scala 3 Features --- _zh-cn/overviews/scala3-book/introduction.md | 12 +- .../overviews/scala3-book/scala-features.md | 891 ++++++++++++++++++ 2 files changed, 897 insertions(+), 6 deletions(-) create mode 100644 _zh-cn/overviews/scala3-book/scala-features.md diff --git a/_zh-cn/overviews/scala3-book/introduction.md b/_zh-cn/overviews/scala3-book/introduction.md index 158c93df11..21d8562dc2 100644 --- a/_zh-cn/overviews/scala3-book/introduction.md +++ b/_zh-cn/overviews/scala3-book/introduction.md @@ -4,7 +4,7 @@ type: chapter description: This page begins the overview documentation of the Scala 3 language. num: 1 previous-page: -next-page: +next-page: scala-features scala3: true partof: scala3-book @@ -14,13 +14,13 @@ permalink: "/zh-cn/scala3/book/:title.html" --- 欢迎阅读《Scala 3》一书。 -本书的目标是提供对Scala语言的非正式介绍,并以相对轻松的方式涉及所有的Scala主题。 -若您在阅读本书时想了解有关特定功能的更多信息,可以随时参阅[_参考文档_][reference],其中更详细地涵盖了Scala语言的许多新特性。 +本书的目标是提供对 Scala 语言的非正式介绍,并以相对轻松的方式涉及所有的 Scala 主题。 +若您在阅读本书时想了解有关特定功能的更多信息,可以随时参阅[_参考文档_][reference],其中更详细地涵盖了 Scala 语言的许多新特性。 -在本书中,我们希望证明Scala是一种优美的、富有表现力的编程语言。它具有简洁、现代的语法,支持函数式编程(FP)和面向对象编程(OOP),并提供安全的静态类型系统。 -Scala的语法和特性都经过了重新思考与公开辩论,并在2020年更新,比以往任何时候都更清晰、更容易理解。 +在本书中,我们希望证明 Scala 是一种优美的、富有表现力的编程语言。它具有简洁、现代的语法,支持函数式编程(FP)和面向对象编程(OOP),并提供安全的静态类型系统。 +Scala 的语法和特性都经过了重新思考与公开辩论,并在2020年更新,比以往任何时候都更清晰、更容易理解。 -本书首先在[“品味Scala”部分][taste]对Scala的许多特性进行了一次“旋风之旅”。随后的章节会提供有关这些语言特性的更多详细信息。 +本书首先在[“品味 Scala”部分][taste]对 Scala 的许多特性进行了一次“旋风之旅”。随后的章节会提供有关这些语言特性的更多详细信息。 > 我们仍在撰写本书的过程中。 > 您可以[帮助我们改进][contributing] diff --git a/_zh-cn/overviews/scala3-book/scala-features.md b/_zh-cn/overviews/scala3-book/scala-features.md new file mode 100644 index 0000000000..394681e1cf --- /dev/null +++ b/_zh-cn/overviews/scala3-book/scala-features.md @@ -0,0 +1,891 @@ +--- +title: Scala 3 特性 +type: chapter +description: This page discusses the main features of the Scala 3 programming language. +num: 2 +previous-page: introduction +next-page: + +scala3: true +partof: scala3-book +overview-name: "Scala 3 — Book" +layout: multipage-overview +permalink: "/zh-cn/scala3/book/:title.html" +--- + +{% comment %} +The name _Scala_ comes from the word _scalable_, and true to that name, the Scala language is used to power busy websites and analyze huge data sets. +This section introduces the features that make Scala a scalable language. +These features are split into three sections: +{% endcomment %} + +_Scala_ 这个名字来源于 _scalable_ 一词。正如其名,Scala 语言被用于支撑高流量网站以及分析庞大的数据集。 +本节介绍了使 Scala 成为一门可扩展语言的特性。 +这些特性分为三个部分: + +{% comment %} + +- High-level language features +- Lower-level language features +- Scala ecosystem features + +{% endcomment %} + +- 高级语言特性 +- 底层语言特性 +- Scala 生态系统特性 + +{% comment %} +I think of this section as being like an “elevator pitch.” +{% endcomment %} + +{% comment %} + +## High-level features + +{% endcomment %} + +## 高级特性 + +{% comment %} +Looking at Scala from the proverbial “30,000 foot view,” you can make the following statements about it: +{% endcomment %} + +从宏观视角来看 Scala,您可以对它做出以下陈述: + +{% comment %} + +- It’s a high-level programming language +- It has a concise, readable syntax +- It’s statically-typed (but feels dynamic) +- It has an expressive type system +- It’s a functional programming (FP) language +- It’s an object-oriented programming (OOP) language +- It supports the fusion of FP and OOP +- Contextual abstractions provide a clear way to implement _term inference_ +- It runs on the JVM (and in the browser) +- It interacts seamlessly with Java code +- It’s used for server-side applications (including microservices), big data applications, and can also be used in the browser with Scala.js + +{% endcomment %} + +- 它是一种高级编程语言 +- 它具有简明易读的语法 +- 它是静态类型的(但使人感觉是动态的) +- 它有一个表达力强大的类型系统 +- 它是一种函数式编程(FP)语言 +- 它是一种面向对象的编程(OOP)语言 +- 它支持 FP 与 OOP 的融合 +- 上下文抽象提供了一种清晰的方式来实现 _表达式推断_ +- 它在 JVM(和浏览器)上运行 +- 它与 Java 代码无缝交互 +- 它可被用于服务器端应用(包括微服务)、大数据应用,也可以在浏览器中与 Scala.js 共同使用 + +{% comment %} +The following sections take a quick look at these features. +{% endcomment %} + +以下部分将对这些特性进行简要介绍。 + +{% comment %} + +### A high-level language + +{% endcomment %} + +### 一门高级语言 + +{% comment %} +Scala is considered a high-level language in at least two ways. +First, like Java and many other modern languages, you don’t deal with low-level concepts like pointers and memory management. +{% endcomment %} + +Scala 至少在两个方面被认为是一门高级语言。 +首先,像 Java 和许多其他现代语言一样,您不需要与指针和内存管理等底层概念打交道。 + +{% comment %} +Second, with the use of lambdas and higher-order functions, you write your code at a very high level. +As the functional programming saying goes, in Scala you write _what_ you want, not _how_ to achieve it. +That is, we don’t write imperative code like this: +{% endcomment %} + +其次,通过使用 lambda 与高阶函数,您可以在非常高的层次上编写代码。 +正如函数式编程的说法,在 Scala 中,您编写您想要 _“什么”_,而不是 _“如何”_ 去实现它。 +也就是说,我们不会像这样编写命令式代码: + +```scala +def double(ints: List[Int]): List[Int] = { + val buffer = new ListBuffer[Int]() + for (i <- ints) { + buffer += i * 2 + } + buffer.toList +} + +val newNumbers = double(oldNumbers) +``` + +{% comment %} +That code instructs the compiler what to do on a step-by-step basis. +Instead, we write high-level, functional code using higher-order functions and lambdas like this to compute the same result: +{% endcomment %} + +这段代码指示编译器逐步执行特定操作。 +相反,我们使用像这样的高阶函数与 lambda 来编写高层次的函数式代码以计算出相同的结果: + +```scala +val newNumbers = oldNumbers.map(_ * 2) +``` + +{% comment %} +As you can see, that code is much more concise, easier to read, and easier to maintain. +{% endcomment %} + +如您所见,该代码更简洁、更容易阅读且更易于维护。 + +{% comment %} + +### Concise syntax + +{% endcomment %} + +### 简明的语法 + +{% comment %} +Scala has a concise, readable syntax. +For instance, variables are created concisely, and their types are clear: +{% endcomment %} + +Scala 具有简明易读的语法。例如,变量的创建十分简洁,其类型也很明确。 + +```scala +val nums = List(1,2,3) +val p = Person("Martin", "Odersky") +``` + +{% comment %} +Higher-order functions and lambdas make for concise code that’s readable: +{% endcomment %} + +高阶函数与 lambda 使代码简明易读: + +```scala +nums.map(i => i * 2) // long form +nums.map(_ * 2) // short form + +nums.filter(i => i > 1) +nums.filter(_ > 1) +``` + +{% comment %} +Traits, classes, and methods are defined with a clean, light syntax: +{% endcomment %} + +特质(Traits)、类(Class)和方法(Method)都是用简洁、轻巧的语法定义的。 + +```scala +trait Animal: + def speak(): Unit + +trait HasTail: + def wagTail(): Unit + +class Dog extends Animal, HasTail: + def speak() = println("Woof") + def wagTail() = println("⎞⎜⎛ ⎞⎜⎛") +``` + +{% comment %} +Studies have shown that the time a developer spends _reading_ code to _writing_ code is at least a 10:1 ratio, so writing code that is concise _and_ readable is important. +{% endcomment %} + +研究表明,开发人员花在 _阅读_ 代码和 _编写_ 代码上的时间比例至少为 10:1。因此,编写简洁 _并_ 易读的代码非常重要。 + +{% comment %} + +### A dynamic feel + +{% endcomment %} + +### 动态感受 + +{% comment %} +Scala is a statically-typed language, but thanks to its type inference capabilities it feels dynamic. +All of these expressions look like a dynamically-typed language like Python or Ruby, but they’re all Scala: +{% endcomment %} + +Scala 是一种静态类型的语言,但由于其类型推断能力,它使人感觉是动态的。所有这些表达式看起来都像 Python 或 Ruby 这样的动态类型语言代码,但其实它们都是 Scala 代码: + +```scala +val s = "Hello" +val p = Person("Al", "Pacino") +val sum = ints.reduceLeft(_ + _) +val y = for i <- nums yield i * 2 +val z = nums.filter(_ > 100) + .filter(_ < 10_000) + .map(_ * 2) +``` + +{% comment %} +As Heather Miller states, Scala is considered to be a [strong, statically-typed language](https://heather.miller.am/blog/types-in-scala.html), and you get all the benefits of static types: +{% endcomment %} + +正如 Heather Miller 所说,Scala 被认为是一种[强静态类型语言](https://heather.miller.am/blog/types-in-scala.html)。您可以获得静态类型的全部益处: + +{% comment %} + +- Correctness: you catch most errors at compile-time +- Great IDE support + - Reliable code completion + - Catching errors at compile-time means catching mistakes as you type + - Easy and reliable refactoring +- You can refactor your code with confidence +- Method type declarations tell readers what the method does, and help serve as documentation +- Scalability and maintainability: types help ensure correctness across arbitrarily large applications and development teams +- Strong typing in combination with excellent inference enables mechanisms like [contextual abstraction]({{ site.scala3ref }}/contextual.html) that allows you to omit boilerplate code. Often, this boilerplate code can be inferred by the compiler, based on type definitions and a given context. + +{% endcomment %} + +- 正确性:您可以在编译时捕获大多数错误 +- 强大的 IDE 支持 + - 可靠的代码补全 + - 在编译时捕获错误意味着在您打字时捕获错误 + - 简单而可靠的重构 +- 您可以自信地重构您的代码 +- 方法类型声明告诉读者该方法的作用,并作为文档提供帮助 +- 可扩展性与可维护性:类型有助于在任意大小的应用程序与开发团队中确保正确性 +- 强类型结合优秀的推断能力可实现[上下文抽象]({{ site.scala3ref }}/contextual.html)等机制,这允许您省略样板代码。通常,这些样板代码可由编译器根据类型定义及给定的上下文推断出来。 + +{% comment %} +In that list: +- 'Correctness' and 'Scalability' come from Heather Miller’s page +- the IDE-related quotes in this section come from the Scala.js website: + - catch most errors in the IDE + - Easy and reliable refactoring + - Reliable code completion +{% endcomment %} + +{% comment %} + +### Expressive type system + +{% endcomment %} + +### 富有表现力的类型系统 + +{% comment %} +- this text comes from the current [ScalaTour](https://docs.scala-lang.org/tour/tour-of-scala.html). +- TODO: all of the URLs will have to be updated + +- i removed these items until we can replace them: +* [Compound types](/tour/compound-types.html) +* [conversions](/tour/implicit-conversions.html) +* [Explicitly typed self references](/tour/self-types.html) +{% endcomment %} + +{% comment %} +Scala’s type system enforces, at compile-time, that abstractions are used in a safe and coherent manner. +In particular, the type system supports: +{% endcomment %} + +Scala 的类型系统在编译时强制要求以安全与连贯的方式使用抽象概念。特别是,该类型系统支持: + +{% comment %} +- [Inferred types]({% link _overviews/scala3-book/types-inferred.md %}) +- [Generic classes]({% link _overviews/scala3-book/types-generics.md %}) +- [Variance annotations]({% link _overviews/scala3-book/types-variance.md %}) +- [Upper](/tour/upper-type-bounds.html) and [lower](/tour/lower-type-bounds.html) type bounds +- [Polymorphic methods](/tour/polymorphic-methods.html) +- [Intersection types]({% link _overviews/scala3-book/types-intersection.md %}) +- [Union types]({% link _overviews/scala3-book/types-union.md %}) +- [Type lambdas]({{ site.scala3ref }}/new-types/type-lambdas.html) +- [`given` instances and `using` clauses]({% link _overviews/scala3-book/ca-given-using-clauses.md %}) +- [Extension methods]({% link _overviews/scala3-book/ca-extension-methods.md %}) +- [Type classes]({% link _overviews/scala3-book/ca-type-classes.md %}) +- [Multiversal equality]({% link _overviews/scala3-book/ca-multiversal-equality.md %}) +- [Opaque type aliases]({% link _overviews/scala3-book/types-opaque-types.md %}) +- [Open classes]({{ site.scala3ref }}/other-new-features/open-classes.html) +- [Match types]({{ site.scala3ref }}/new-types/match-types.html) +- [Dependent function types]({{ site.scala3ref }}/new-types/dependent-function-types.html) +- [Polymorphic function types]({{ site.scala3ref }}/new-types/polymorphic-function-types.html) +- [Context bounds]({{ site.scala3ref }}/contextual/context-bounds.html) +- [Context functions]({{ site.scala3ref }}/contextual/context-functions.html) +- [Inner classes](/tour/inner-classes.html) and [abstract type members](/tour/abstract-type-members.html) as object members +{% endcomment %} + +- [推断类型]({% link _overviews/scala3-book/types-inferred.md %}) +- [泛型类]({% link _overviews/scala3-book/types-generics.md %}) +- [型变]({% link _overviews/scala3-book/types-variance.md %}) +- [类型上界](/tour/upper-type-bounds.html) 与 [类型下界](/tour/lower-type-bounds.html) +- [多态方法](/tour/polymorphic-methods.html) +- [交叉类型]({% link _overviews/scala3-book/types-intersection.md %}) +- [联合类型]({% link _overviews/scala3-book/types-union.md %}) +- [类型 Lambda]({{ site.scala3ref }}/new-types/type-lambdas.html) +- [`given` 实例与 `using` 子句]({% link _overviews/scala3-book/ca-given-using-clauses.md %}) +- [扩展方法]({% link _overviews/scala3-book/ca-extension-methods.md %}) +- [类型类]({% link _overviews/scala3-book/ca-type-classes.md %}) +- [多元相等]({% link _overviews/scala3-book/ca-multiversal-equality.md %}) +- [不透明类型别名]({% link _overviews/scala3-book/types-opaque-types.md %}) +- [开放类]({{ site.scala3ref }}/other-new-features/open-classes.html) +- [匹配类型]({{ site.scala3ref }}/new-types/match-types.html) +- [依赖函数类型]({{ site.scala3ref }}/new-types/dependent-function-types.html) +- [多态函数类型]({{ site.scala3ref }}/new-types/polymorphic-function-types.html) +- [上下文边界]({{ site.scala3ref }}/contextual/context-bounds.html) +- [上下文函数]({{ site.scala3ref }}/contextual/context-functions.html) +- 作为对象成员的[内部类](/tour/inner-classes.html) 与 [抽象类型](/tour/abstract-type-members.html) + +{% comment %} +In combination, these features provide a powerful basis for the safe reuse of programming abstractions and for the type-safe extension of software. +{% endcomment %} + +通过结合使用,这些特性为编程抽象的安全重用及软件的类型安全扩展提供了强大的基础。 + +{% comment %} + +### A functional programming language + +{% endcomment %} + +### 一门函数式编程语言 + +{% comment %} +Scala is a functional programming (FP) language, meaning: +{% endcomment %} + +Scala 是一门函数式编程(FP)语言,也就是说: + +{% comment %} + +- Functions are values, and can be passed around like any other value +- Higher-order functions are directly supported +- Lambdas are built in +- Everything in Scala is an expression that returns a value +- Syntactically it’s easy to use immutable variables, and their use is encouraged +- It has a wealth of immutable collection classes in the standard library +- Those collection classes come with dozens of functional methods: they don’t mutate the collection, but instead return an updated copy of the data + +{% endcomment %} + +- 函数是值,可以像任何其他值一样被传递 +- 直接支持高阶函数 +- 原生地支持 Lambda +- Scala 中的一切都是会返回值的表达式 +- 从语法上来说,使用不可变变量很容易并且此行为被鼓励 +- 在标准库中有大量的不可变集合类 +- 这些集合类带有许多函数式方法:它们不改变集合本身,而是返回数据的更新副本 + +{% comment %} + +### An object-oriented language + +{% endcomment %} + +### 一门面向对象语言 + +{% comment %} +Scala is an object-oriented programming (OOP) language. +Every value is an instance of a class and every “operator” is a method. +{% endcomment %} + +Scala 是一门面向对象编程(OOP)语言。 +每个值都是一个类的实例,每个“运算符”都是一个方法。 + +{% comment %} +In Scala, all types inherit from a top-level class `Any`, whose immediate children are `AnyVal` (_value types_, such as `Int` and `Boolean`) and `AnyRef` (_reference types_, as in Java). +This means that the Java distinction between primitive types and boxed types (e.g. `int` vs. `Integer`) isn’t present in Scala. +Boxing and unboxing is completely transparent to the user. +{% endcomment %} + +在 Scala 中,所有类型都继承自顶层类 `Any`,其直接子类是 `AnyVal`(_值类型_,例如 `Int` 与 `Boolean`)和 `AnyRef`(_引用类型_,与 Java 中相同)。 +这意味着 Scala 中不存在 Java 中原始类型和包装类型的区别(例如 `int` 与 `Integer`)。 +装箱与拆箱对用户来说是完全透明的。 + +{% comment %} +- AnyRef above is wrong in case of strict null checking, no? On the other hand, maybe too much information to state this here +- probably not worth to mention (too advanced at this point) there is AnyKind +- Add the “types hierarchy” image here? +{% endcomment %} + +{% comment %} + +### Supports FP/OOP fusion + +{% endcomment %} + +### 支持 FP 与 OOP 融合 + +{% comment %} +NOTE: This text in the first line comes from this slide: https://twitter.com/alexelcu/status/996408359514525696 +{% endcomment %} + +{% comment %} +The essence of Scala is the fusion of functional programming and object-oriented programming in a typed setting: + +- Functions for the logic +- Objects for the modularity + +As [Martin Odersky has stated](https://jaxenter.com/current-state-scala-odersky-interview-129495.html), “Scala was designed to show that a fusion of functional and object-oriented programming is possible and practical.” +{% endcomment %} + +Scala 的本质是函数式编程和面向对象编程的融合: + +- 函数用于代表逻辑 +- 对象用于模块化 + +正如 [Martin Odersky 所说](https://jaxenter.com/current-state-scala-odersky-interview-129495.html),“Scala 旨在表明函数式编程与面向对象编程的融合是切实可行的。” + +{% comment %} + +### Term inference, made clearer + +{% endcomment %} + +### 表达式推断,更加清晰 + +{% comment %} +Following Haskell, Scala was the second popular language to have some form of _implicits_. +In Scala 3 these concepts have been completely re-thought and more clearly implemented. + +The core idea is _term inference_: Given a type, the compiler synthesizes a “canonical” term that has that type. +In Scala, a context parameter directly leads to an inferred argument term that could also be written down explicitly. + +Use cases for this concept include implementing [type classes]({% link _overviews/scala3-book/ca-type-classes.md %}), establishing context, dependency injection, expressing capabilities, computing new types, and proving relationships between them. + +Scala 3 makes this process more clear than ever before. +Read about contextual abstractions in the [Reference documentation]({{ site.scala3ref }}/contextual.html). +{% endcomment %} + +继 Haskell 之后,Scala 是第二种具有某种形式的 _隐式_ 的流行语言。 +在 Scala 3 中,这些概念经过了重新考虑并更清晰地实现。 + +其核心思想是 _表达式推断_:给定一个类型,编译器会合成一个具有该类型的“规范”表达式。 +在 Scala 中,一个上下文参数直接导致一个被推断出的参数项的出现。该参数项也可以被显式地写出来。 + +此概念的用例包括实现[类型类]({% link _overviews/scala3-book/ca-type-classes.md %})、建立上下文、依赖注入、表达能力、计算新类型以及证明它们之间的关系。 + +Scala 3 使此过程比以往任何时候都更加清晰。 +请在[参考文档]({{ site.scala3ref }}/contextual.html)中阅读关于上下文抽象的内容。 + +{% comment %} + +### Client & server + +{% endcomment %} + +### 客户端与服务器 + +{% comment %} +Scala code runs on the Java Virtual Machine (JVM), so you get all of its benefits: + +- Security +- Performance +- Memory management +- Portability and platform independence +- The ability to use the wealth of existing Java and JVM libraries + +In addition to running on the JVM, Scala also runs in the browser with Scala.js (and open source third-party tools to integrate popular JavaScript libraries), and native executables can be built with Scala Native and GraalVM. +{% endcomment %} + +Scala 代码在 Java 虚拟机(JVM)上运行,因此您可以获得它的全部益处: + +- 安全性 +- 性能 +- 内存管理 +- 可移植性与平台独立性 +- 能够使用大量的现有 Java 和 JVM 库 + +除了在 JVM 上运行外,Scala 还可以通过 Scala.js (以及开源的第三方工具以集成流行的 JavaScript 库)在浏览器中运行,并且可以使用Scala Native 与 GraalVM 构建原生可执行文件。 + +{% comment %} + +### Seamless Java interaction + +{% endcomment %} + +### 与 Java 无缝交互 + +{% comment %} +You can use Java classes and libraries in your Scala applications, and you can use Scala code in your Java applications. +In regards to the second point, large libraries like [Akka](https://akka.io) and the [Play Framework](https://www.playframework.com) are written in Scala, and can be used in Java applications. +{% endcomment %} + +您可以在 Scala 应用程序中使用 Java 类和库,也可以在 Java 应用程序中使用 Scala 代码。 +对于第二点来说,诸如 [Akka](https://akka.io) 和 [Play Framework](https://www.playframework.com) 之类的大型库是用 Scala 编写的,并且它们可以在 Java 应用程序中使用。 + +{% comment %} +In regards to the first point, Java classes and libraries are used in Scala applications every day. +For instance, in Scala you can read files with a Java `BufferedReader` and `FileReader`: +{% endcomment %} + +对于第一点来说,Scala 应用程序中每天都会用到 Java 类和库。 +例如,在 Scala 中,您可以使用 Java 的 `BufferedReader` 和 `FileReader` 来读取文件: + +```scala +import java.io.* +val br = BufferedReader(FileReader(filename)) +// read the file with `br` ... +``` + +{% comment %} +Using Java code in Scala is generally seamless. + +Java collections can also be used in Scala, and if you want to use Scala’s rich collection class methods with them, you can convert them with just a few lines of code: +{% endcomment %} + +在 Scala 中使用 Java 代码通常是无缝衔接的。 + +Java 集合也可以在 Scala 中使用, 如果您想将 Scala 丰富的集合类方法与其一起使用,只需几行代码即可转换它们: + + +```scala +import scala.jdk.CollectionConverters.* +val scalaList: Seq[Integer] = JavaClass.getJavaList().asScala.toSeq +``` + +{% comment %} + +### Wealth of libraries + +{% endcomment %} + +### 丰富的库 + +{% comment %} +As you’ll see in the third section of this page, Scala libraries and frameworks like these have been written to power busy websites and work with huge datasets: + +1. The [Play Framework](https://www.playframework.com) is a lightweight, stateless, developer-friendly, web-friendly architecture for creating highly-scalable applications +2. [Lagom](https://www.lagomframework.com) is a microservices framework that helps you decompose your legacy monolith and build, test, and deploy entire systems of reactive microservices +3. [Apache Spark](https://spark.apache.org) is a unified analytics engine for big data processing, with built-in modules for streaming, SQL, machine learning and graph processing + +The [Awesome Scala list](https://github.com/lauris/awesome-scala) shows dozens of additional open source tools that developers have created to build Scala applications. + +In addition to server-side programming, [Scala.js](https://www.scala-js.org) is a strongly-typed replacement for writing JavaScript, with open source third-party libraries that include tools to integrate with Facebook’s React library, jQuery, and more. +{% endcomment %} + +正如您将在本页的第三部分中所看到的那样,已经有诸如此类的 Scala 库和框架被编写出来用于支撑高流量网站以及分析庞大的数据集: + +1. [Play Framework](https://www.playframework.com) 是一种用于创建高度可扩展应用程序的轻量级、无状态、对开发者及Web友好的架构 +2. [Lagom](https://www.lagomframework.com) 是一种微服务框架,可帮助您分解遗留的单体应用并构建、测试和部署整个响应式微服务系统 +3. [Apache Spark](https://spark.apache.org) 是一种面向大规模数据处理的统一分析引擎,内置流、SQL、机器学习和图形处理等模块 + +[Awesome Scala 列表](https://github.com/lauris/awesome-scala)展示了开发人员为构建 Scala 应用程序而创建的许多其他开源工具。 + +除了服务器端编程之外,[Scala.js](https://www.scala-js.org) 是一款用于编写 JavaScript 应用的强类型替代方案。其开源的第三方库包含支持与 Facebook 的 React、jQuery 及其他库等集成的工具。 + +{% comment %} +The Lower-Level Features section is like the second part of an elevator pitch. +Assuming you told someone about the previous high-level features and then they say, “Tell me more,” this is what you might tell them. +{% endcomment %} + +{% comment %} + +## Lower-level language features + +{% endcomment %} + +## 底层语言特性 + +{% comment %} +Where the previous section covered high-level features of Scala 3, it’s interesting to note that at a high level you can make the same statements about both Scala 2 and Scala 3. +A decade ago Scala started with a strong foundation of desirable features, and as you’ll see in this section, those benefits have been improved with Scala 3. +{% endcomment %} + +上一节介绍了 Scala 3 的高级特性,有趣的是,您可以从高层次上对 Scala 2 和 Scala 3 作出相同的表述。 +十年前,Scala 就为各种理想特性打下了坚实基础,正如您在本节中即将看到的那样,这些效益在 Scala 3 中得到了提高。 + +{% comment %} +At a “sea level” view of the details---i.e., the language features programmers use everyday---Scala 3 has significant advantages over Scala 2: + +- The ability to create algebraic data types (ADTs) more concisely with enums +- An even more concise and readable syntax: + - The “quiet” control structure syntax is easier to read + - Optional braces + - Fewer symbols in the code creates less visual noise, making it easier to read + - The `new` keyword is generally no longer needed when creating class instances + - The formality of package objects have been dropped in favor of simpler “top level” definitions +- A grammar that’s more clear: + - Multiple different uses of the `implicit` keyword have been removed; those uses are replaced by more obvious keywords like `given`, `using`, and `extension`, focusing on intent over mechanism (see the [Givens][givens] section for details) + - [Extension methods][extension] replace implicit classes with a clearer and simpler mechanism + - The addition of the `open` modifier for classes makes the developer intentionally declare that a class is open for modification, thereby limiting ad-hoc extensions to a code base + - [Multiversal equality][multiversal] rules out nonsensical comparisons with `==` and `!=` (i.e., attempting to compare a `Person` to a `Planet`) + - Macros are implemented much more easily + - Union and intersection offer a flexible way to model types + - Trait parameters replace and simplify early initializers + - [Opaque type aliases][opaque_types] replace most uses of value classes, while guaranteeing the absence of boxing + - Export clauses provide a simple and general way to express aggregation, which can replace the previous facade pattern of package objects inheriting from classes + - The procedure syntax has been dropped, and the varargs syntax has been changed, both to make the language more consistent + - The `@infix` annotation makes it obvious how you want a method to be applied + - The [`@targetName`]({{ site.scala3ref }}/other-new-features/targetName.html) method annotation defines an alternate name for the method, improving Java interoperability, and letting you provide aliases for symbolic operators + +It would take too much space to demonstrate all of those features here, but follow the links in the items above to see those features in action. +All of these features are discussed in detail in the *New*, *Changed*, and *Dropped* features pages in the [Overview documentation][reference]. +{% endcomment %} + +以小见大,从程序员日常使用的语言特性来看,Scala 3 比 Scala 2 具有显著优势: + +- 可以用枚举更简洁地创建代数数据类型(ADT) +- 更简明易读的语法: + - “干净”的控制结构语法更容易阅读 + - 可选的大括号 + - 代码中包含更少的符号,因此会产生更少的视觉噪音,使其更容易阅读 + - 创建类实例时一般不再需要 `new` 关键字 + - 弃用了包对象,转而使用更简单的“顶层”定义 +- 更清晰的语法: + - 移除了 `implicit` 关键字的多种不同用法,这些用法被更显而易见的关键字所取代,如 `given`、 `using`、和 `extension`,以此将关注重点放在意图而不是机制上(详见 [Givens][givens] 部分) + - [扩展方法][extension]通过更加清晰简单的机制取代了隐式类 + - 为类添加了 `open` 修饰符,使开发者能够有意识地声明一个类是可以被修改的,从而限制对代码库的临时扩展 + - [多元相等][multiversal]排除了用 `==` 和 `!=` 进行无意义的比较(即试图将 `Person` 与 `Planet` 进行比较) + - 宏的实现变得更加容易 + - 联合与交叉提供了一种灵活的方式以建模类型 + - 特质参数取代并简化了早期初始化器 + - [不透明类型别名][opaque_types]取代了值类的大多数用途,并确保不进行装箱 + - 导出子句提供了一种简单而通用的方式来表现聚合,它可以取代之前继承自类的包对象的外观模式 + - 删除了过程语法并更改了可变参数语法,这增加了语言一致性 + - `@infix` 注解使得您想让一个方法被如何应用更加显而易见 + - [`@targetName`]({{ site.scala3ref }}/other-new-features/targetName.html) 方法注解为方法定义了一个候补名称。这提高了与 Java 的互操作性,并允许您为符号运算符提供别名 + +在这里演示所有这些特性会占用太多空间,请通过上述内容中的链接来查看这些特性的实际效果。 +所有这些特性都在[概述文档][reference]的*新特性*、*变更的特性*、与*删除的特性*等页面中进行了详细讨论。 + +{% comment %} +CHECKLIST OF ALL ADDED, UPDATED, AND REMOVED FEATURES +===================================================== + +New Features +------------ +- trait parameters +- super traits +- creator applications +- export clauses +- opaque type aliases +- open classes +- parameter untupling +- kind polymorphism +- tupled function +- threadUnsafe annotation +- new control syntax +- optional braces (experimental) +- explicit nulls +- safe initialization + +CHANGED FEATURES +---------------- +- numeric literals +- structural types +- operators +- wildcard types +- type checking +- type inference +- implicit resolution +- implicit conversions +- overload resolution +- match expressions +- vararg patterns +- pattern bindings +- pattern matching +- eta expansion +- compiler plugins +- lazy vals initialization +- main functions + +DROPPED FEATURES +---------------- +- DelayedInit +- macros +- existential types +- type projection +- do/while syntax +- procedure syntax +- package objects +- early initializers +- class shadowing +- limit 22 +- XML literals +- symbol literals +- auto-application +- weak conformance +- nonlocal returns +- [this] qualifier + - private[this] and protected[this] access modifiers are deprecated + and will be phased out +{% endcomment %} + + +{% comment %} + +## Scala ecosystem + +{% endcomment %} + +## Scala 生态系统 + +{% comment %} +TODO: I didn’t put much work into this section because I don’t know if you want + to add many tools because (a) that can be seen as an endorsement and + (b) it creates a section that can need more maintenance than average + since tool popularity can wax and wane. One way to avoid the first + point is to base the lists on Github stars and activity. +{% endcomment %} + +{% comment %} +Scala has a vibrant ecosystem, with libraries and frameworks for every need. +The [“Awesome Scala” list](https://github.com/lauris/awesome-scala) provides a list of hundreds of open source projects that are available to Scala developers, and the [Scaladex](https://index.scala-lang.org) provides a searchable index of Scala libraries. +Some of the more notable libraries are listed below. +{% endcomment %} + +Scala 拥有一个充满活力的生态系统,有满足各种需求的库和框架。 +[Awesome Scala 列表](https://github.com/lauris/awesome-scala)提供了数百个可供 Scala 开发者使用的开源项目,[Scaladex](https://index.scala-lang.org) 则提供了 Scala 库的可搜索索引。 +以下列出了一些比较著名的库: + +{% comment %} + +### Web development + +{% endcomment %} + +### Web 开发 + +{% comment %} + +- The [Play Framework](https://www.playframework.com) followed the Ruby on Rails model to become a lightweight, stateless, developer-friendly, web-friendly architecture for highly-scalable applications +- [Scalatra](https://scalatra.org) is a tiny, high-performance, async web framework, inspired by Sinatra +- [Finatra](https://twitter.github.io/finatra) is Scala services built on TwitterServer and Finagle +- [Scala.js](https://www.scala-js.org) is a strongly-typed replacement for JavaScript that provides a safer way to build robust front-end web applications +- [ScalaJs-React](https://github.com/japgolly/scalajs-react) lifts Facebook’s React library into Scala.js, and endeavours to make it as type-safe and Scala-friendly as possible +- [Lagom](https://www.lagomframework.com) is a microservices framework that helps you decompose your legacy monolith and build, test, and deploy entire systems of Reactive microservices +- +{% endcomment %} + +- [Play Framework](https://www.playframework.com) 遵循 Ruby on Rails 模型,是一种用于高度可扩展应用程序的轻量级、无状态、对开发者及Web友好的架构 +- [Scalatra](https://scalatra.org) 是一个小型的、高性能的、异步的网络框架,其灵感来自于 Sinatra +- [Finatra](https://twitter.github.io/finatra) 是基于 TwitterServer 和 Finagle 构建的 Scala 服务 +- [Scala.js](https://www.scala-js.org) 是 JavaScript 的强类型替代品,它提供了一种更安全的方式以构建稳健的前端 Web 应用程序 +- [ScalaJs-React](https://github.com/japgolly/scalajs-react) 将 Facebook 的 React 库整合至 Scala.js,并努力使其尽可能类型安全和 Scala 友好 +- [Lagom](https://www.lagomframework.com) 是一种微服务框架,可帮助您分解遗留的单体应用并构建、测试和部署整个响应式微服务系统 + +{% comment %} +HTTP(S) libraries: +{% endcomment %} + +HTTP(S) 库: + +- [Akka-http](https://akka.io) +- [Finch](https://github.com/finagle/finch) +- [Http4s](https://github.com/http4s/http4s) +- [Sttp](https://github.com/softwaremill/sttp) + +{% comment %} +JSON libraries: +{% endcomment %} + +JSON 库: + +- [Argonaut](https://github.com/argonaut-io/argonaut) +- [Circe](https://github.com/circe/circe) +- [Json4s](https://github.com/json4s/json4s) +- [Play-JSON](https://github.com/playframework/play-json) + +{% comment %} +Serialization: +{% endcomment %} + +序列化: + +- [ScalaPB](https://github.com/scalapb/ScalaPB) + +{% comment %} + +### Science and data analysis: + +{% endcomment %} + +### 科学和数据分析 + +- [Algebird](https://github.com/twitter/algebird) +- [Spire](https://github.com/typelevel/spire) +- [Squants](https://github.com/typelevel/squants) + +{% comment %} + +### Big data + +{% endcomment %} + +### 大数据 + +- [Apache Spark](https://github.com/apache/spark) +- [Apache Flink](https://github.com/apache/flink) + +{% comment %} + +### AI, machine learning + +- [BigDL](https://github.com/intel-analytics/BigDL) (Distributed Deep Learning Framework for Apache Spark) for Apache Spark +- [TensorFlow Scala](https://github.com/eaplatanios/tensorflow_scala) + +{% endcomment %} + +### 人工智能,机器学习 + +- [BigDL](https://github.com/intel-analytics/BigDL) (用于 Apache Spark 的分布式深度学习框架) +- [TensorFlow Scala](https://github.com/eaplatanios/tensorflow_scala) + +{% comment %} + +### Functional Programming & Functional Reactive Programming + +{% endcomment %} + +### 函数式编程 & 函数式响应式编程 + +{% comment %} +FP: +{% endcomment %} + +函数式编程: + +- [Cats](https://github.com/typelevel/cats) +- [Zio](https://github.com/zio/zio) + +{% comment %} +Functional reactive programming (FRP): +{% endcomment %} + +函数式响应式编程(FRP) + +- [fs2](https://github.com/typelevel/fs2) +- [monix](https://github.com/monix/monix) + +{% comment %} + +### Build tools + +{% endcomment %} + +### 构建工具 + +- [sbt](https://www.scala-sbt.org) +- [Gradle](https://gradle.org) +- [Mill](https://github.com/lihaoyi/mill) + +{% comment %} + +## Summary + +As this page shows, Scala has many terrific programming language features at a high level, at an everyday programming level, and through its developer ecosystem. + +{% endcomment %} + +## 总结 + +如此页所示,Scala 在高层、日常编程层面以及贯穿开发者生态系统都具有许多出色的编程语言特性。 + + +[reference]: {{ site.scala3ref }}/overview.html +[multiversal]: {% link _overviews/scala3-book/ca-multiversal-equality.md %} +[extension]: {% link _overviews/scala3-book/ca-extension-methods.md %} +[givens]: {% link _overviews/scala3-book/ca-given-using-clauses.md %} +[opaque_types]: {% link _overviews/scala3-book/types-opaque-types.md %} + + + From 0eae0a35185c354be03ab5b707b993c06c555be0 Mon Sep 17 00:00:00 2001 From: Thanh Le Date: Tue, 8 Mar 2022 20:37:57 +0100 Subject: [PATCH 0375/1704] Fix link to for type lambdas url --- _overviews/scala3-migration/plugin-kind-projector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-migration/plugin-kind-projector.md b/_overviews/scala3-migration/plugin-kind-projector.md index 6d49be8d28..8557cdb559 100644 --- a/_overviews/scala3-migration/plugin-kind-projector.md +++ b/_overviews/scala3-migration/plugin-kind-projector.md @@ -100,7 +100,7 @@ type MyLambda[F[_], A] = EitherT[F, Int, A] MyLambda ``` -Alternatively you may use Scala 3's [Native Type Lambdas](https://dotty.epfl.ch/docs/reference/new-types/type-lambdas.html) if you do not need to cross-compile: +Alternatively you may use Scala 3's [Native Type Lambdas](https://docs.scala-lang.org/scala3/reference/new-types/type-lambdas.html) if you do not need to cross-compile: ```scala [F[_], A] =>> EitherT[F, Int, A] From 9097144e071d4290dc165aee2e2855c48aae64dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zyba=C5=82a?= Date: Tue, 8 Feb 2022 15:13:34 +0100 Subject: [PATCH 0376/1704] Update static site docs --- _overviews/scala3-scaladoc/blog.md | 13 +- _overviews/scala3-scaladoc/static-site.md | 170 ++++++++++++---------- 2 files changed, 96 insertions(+), 87 deletions(-) diff --git a/_overviews/scala3-scaladoc/blog.md b/_overviews/scala3-scaladoc/blog.md index 1e3c371c8e..612ee5c25e 100644 --- a/_overviews/scala3-scaladoc/blog.md +++ b/_overviews/scala3-scaladoc/blog.md @@ -15,24 +15,17 @@ Blog is treated a little differently than regular static sites. This article wil ## Proper directory setup -All your blogposts must be put under `blog/_posts` directory. +All your blogposts must be put under `_blog/_posts` directory. ``` -├── blog +├── _blog │ ├── _posts │ │ └── 2016-12-05-implicit-function-types.md │ └── index.html ``` -If you are using yaml [sidebar]({% link _overviews/scala3-scaladoc/static-site.md %}#sidebar) don't forget to place - -``` -sidebar: - - title: Blog -``` - -somewhere inside the `yaml` tree representing the sidebar sections. Scaladoc will attach under that section all of your blogposts. +Scaladoc loads blog if the `_blog` directory exists. ## Naming convention diff --git a/_overviews/scala3-scaladoc/static-site.md b/_overviews/scala3-scaladoc/static-site.md index e7516ea09c..d9d11f6bf6 100644 --- a/_overviews/scala3-scaladoc/static-site.md +++ b/_overviews/scala3-scaladoc/static-site.md @@ -20,16 +20,18 @@ and will from here on be referred to as "template files" or "templates". A simple "hello world" site could look something like this: ``` -├── docs -│ └── getting-started.md -└── index.html +. +└── / + └── _docs/ + ├── index.html + └── getting-started.html ``` This will give you a site with the following files in generated documentation: ``` index.html -docs/getting-started.html +getting-started.html ``` Scaladoc can transform both files and directories (to organize your documentation into a tree-like structure). By default, directories have a title based on the file name and have empty content. It is possible to provide index pages for each section by creating `index.html` or `index.md` (not both) in the dedicated directory. @@ -98,63 +100,64 @@ Layouts must be placed in a `_layouts` directory in the site root: ``` ├── _layouts │ └── main.html -├── docs -│ └── getting-started.md -└── index.html +└── _docs + └── getting-started.md +``` + +## Assets + +In order to render assets along with static site, they need to be placed in the `_assets` directory in the site root: +``` +├── _assets +│ └── images +│ └── myimage.png +└── _docs + └── getting-started.md +``` +To reference the asset in a page, one need to create link relative to the `_assets` directory + +``` +Take a look at the following image: [My image](images/myimage.png) ``` ## Sidebar -Scaladoc by default uses layout of files in `docs` directory to create table of content. There is also ability to override it by providing a `sidebar.yml` file in the site root: +Scaladoc by default uses directory structure in `_docs` directory to organize static sites. There is also possibility to override it by providing a `sidebar.yml` file in the site root. The YAML configuration file describes the structure of rendered static site and the table of content: ```yaml -sidebar: - - title: Blog - - title: My title - page: my-page1.md - - page: my-page2.md - - page: my-page3/subsection - - title: Reference - subsection: - - page: my-page3.md - - index: my-page4/index.md - subsection: - - page: my-page4/my-page4.md - - title: My subsection - index: my-page5/index.md - subsection: - - page: my-page5/my-page5.md - - index: my-page6/index.md - subsection: - - index: my-page6/my-page6/index.md - subsection: - - page: my-page6/my-page6/my-page6.md -``` - -The `sidebar` key is mandatory. -On each level, you can have three different types of entries: `page`, `blog` or `subsection`. - -`page` is a leaf of the structure and accepts the following attributes: -- `title` (optional) - title of the page -- `page` (mandatory) - path to the file that will represent the page, it can be either html or markdown file to be rendered, there is also the possibility to pass the `directory` path. If so, the scaladoc will render the directory and all its content as if there were no `sidebar.yml` basing on its tree structure and index files. - -The `page` property `subsection` accepts nested nodes, these can be either pages or subsections, which allow you to create tree-like navigation. The attributes are: -- `title` (optional) - title of the page -- `index` (optional) - path to the file that will represent the index file of the subsection, it can be either html or markdown file to be rendered -- `subsection` (mandatory) - nested nodes, can be either pages or subsections - -In `subsection`s, you can omit `title` or `index`, however not specifying any of these properties prevents you from specifying the title of the section. - -`blog` is a special node represented by simple entry `- title: Blog` with no other attributes. All your blog posts will be automatically linked under this section. You can read more about the blog [here]({% link _overviews/scala3-scaladoc/blog.md %}). - -``` -├── blog -│ ├── _posts -│ │ └── 2016-12-05-implicit-function-types.md -│ └── index.html -├── index.html -└── sidebar.yml -``` +index: index.html +subsection: + - title: Usage + index: usage/index.html + directory: usage + subsection: + - title: Dottydoc + page: usage/dottydoc.html + hidden: false + - title: sbt-projects + page: usage/sbt-projects.html + hidden: false +``` +The root element needs to be a `subsection`. +Nesting subsections will result in a tree-like structure of navigation. + +`subsection` properties are: + - `title` - Optional string - A default title of the subsection. + Front-matter titles have higher priorities. + - `index` - Optional string - A path to index page of a subsection. + - `directory` - Optional string - A name of the directory that will contain the subsection. + By default, the directory name is the subsection name converted to kebab case. + - `subsection` - Array of `subsection` or `page`. + + Either `index` or `subsection` must be defined. The subsection defined with `index` and without `subsection` will contain pages and directories loaded recursively from directory of the index page. + +`page` properties are: + - `title` - Optional string - A default title of the page. + Front-matter titles have higher priorities. + - `page` - String - A path to the page + - `hidden` - Optional boolean - A flag that indicates whether the page should be visible in navigation. By default, it is set to `false`. + +**Note**: All paths in YAML configuration file are relative to `/_docs`. ## Hierarchy of title @@ -174,30 +177,43 @@ If the title is specified multiple times, the priority is as follows (from highe Note that if you skip the `index` file in your tree structure or you don't specify the `title` in the frontmatter, there will be given a generic name `index`. The same applies when using `sidebar.yml` but not specifying `title` nor `index`, just a subsection. Again, a generic `index` name will appear. +## Blog +Blog feature is described in [a separate document]({% link _overviews/scala3-scaladoc/blog.md %}) -## Static resources - -You can attach static resources (pdf, images) to your documentation by using two dedicated directories: -`resources` and `images`. After placing your assets under any of these directories, you can reference them in markdown -as if they were relatively at the same level. - -For example, consider the following situation: - +## Advanced configuration +### Full structure of site root ``` -├── blog -│ ├── _posts -│ │ └── 2016-12-05-implicit-function-types.md -│ └── index.html -├── index.html -├── resources -│ └── my_file.pdf -├── images -│ └── my_image.png -└── sidebar.yml - +. +└── / + ├── _layouts_/ + │ └── ... + ├── _docs/ + │ └── ... + ├── _blog/ + │ ├── index.md + │ └── _posts/ + │ └── ... + └── _assets/ + ├── js/ + │ └── ... + ├── img/ + │ └── ... + └── ... ``` +It results in static site containing documents as well as blog. It also contains custom layouts and assets. The structure of rendered documentation can be based on file system but it can also be overriden by YAML configuration. -You can refer to the assets from within any of the files using markdown links: +### Mapping directory structure -``` -This is my blog post. Here is the image ![](my_image.png) and here is my [pdf](my_file.pdf)``` +Using YAML configuration file, we can define how the source directory structure should be transformed in target directory structure. + +Take a look at following subsection definition: +```yaml +- title: Some other subsection + index: abc/index.html + directory: custom-directory + subsection: + - page: abc2/page1.md + - page: foo/page2.md +``` +This subsection shows the ability of YAML configuration to map the directory structure. +Even though the index page and all defined children are in different directories, they will be rendered in `custom-directory`. From 6e2cf92d84dc4ee4290dc65cd83f2a4a4b250796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zyba=C5=82a?= Date: Thu, 10 Mar 2022 09:05:31 +0100 Subject: [PATCH 0377/1704] Apply suggestions from review --- _overviews/scala3-scaladoc/static-site.md | 27 +++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/_overviews/scala3-scaladoc/static-site.md b/_overviews/scala3-scaladoc/static-site.md index d9d11f6bf6..127f6c59e7 100644 --- a/_overviews/scala3-scaladoc/static-site.md +++ b/_overviews/scala3-scaladoc/static-site.md @@ -101,7 +101,8 @@ Layouts must be placed in a `_layouts` directory in the site root: ├── _layouts │ └── main.html └── _docs - └── getting-started.md + ├── getting-started.md + └── index.html ``` ## Assets @@ -114,7 +115,7 @@ In order to render assets along with static site, they need to be placed in the └── _docs └── getting-started.md ``` -To reference the asset in a page, one need to create link relative to the `_assets` directory +To reference the asset on a page, one needs to create a link relative to the `_assets` directory ``` Take a look at the following image: [My image](images/myimage.png) @@ -122,7 +123,7 @@ Take a look at the following image: [My image](images/myimage.png) ## Sidebar -Scaladoc by default uses directory structure in `_docs` directory to organize static sites. There is also possibility to override it by providing a `sidebar.yml` file in the site root. The YAML configuration file describes the structure of rendered static site and the table of content: +By default, Scaladoc reflects the directory structure from `_docs` directory in the rendered site. There is also the ability to override it by providing a `sidebar.yml` file in the site root directory. The YAML configuration file describes the structure of the rendered static site and the table of content: ```yaml index: index.html @@ -144,20 +145,20 @@ Nesting subsections will result in a tree-like structure of navigation. `subsection` properties are: - `title` - Optional string - A default title of the subsection. Front-matter titles have higher priorities. - - `index` - Optional string - A path to index page of a subsection. - - `directory` - Optional string - A name of the directory that will contain the subsection. + - `index` - Optional string - A path to index page of a subsection. The path is relative to the `_docs` directory. + - `directory` - Optional string - A name of the directory that will contain the subsection in the generated site. By default, the directory name is the subsection name converted to kebab case. - `subsection` - Array of `subsection` or `page`. - Either `index` or `subsection` must be defined. The subsection defined with `index` and without `subsection` will contain pages and directories loaded recursively from directory of the index page. + Either `index` or `subsection` must be defined. The subsection defined with `index` and without `subsection` will contain pages and directories loaded recursively from the directory of the index page. `page` properties are: - `title` - Optional string - A default title of the page. Front-matter titles have higher priorities. - - `page` - String - A path to the page - - `hidden` - Optional boolean - A flag that indicates whether the page should be visible in navigation. By default, it is set to `false`. + - `page` - String - A path to the page, relative to the `_docs` directory. + - `hidden` - Optional boolean - A flag that indicates whether the page should be visible in the navigation sidebar. By default, it is set to `false`. -**Note**: All paths in YAML configuration file are relative to `/_docs`. +**Note**: All the paths in the YAML configuration file are relative to `/_docs`. ## Hierarchy of title @@ -200,13 +201,13 @@ Blog feature is described in [a separate document]({% link _overviews/scala3-sca │ └── ... └── ... ``` -It results in static site containing documents as well as blog. It also contains custom layouts and assets. The structure of rendered documentation can be based on file system but it can also be overriden by YAML configuration. +It results in a static site containing documents as well as a blog. It also contains custom layouts and assets. The structure of the rendered documentation can be based on the file system but it can also be overridden by YAML configuration. ### Mapping directory structure -Using YAML configuration file, we can define how the source directory structure should be transformed in target directory structure. +Using the YAML configuration file, we can define how the source directory structure should be transformed into an outputs directory structure. -Take a look at following subsection definition: +Take a look at the following subsection definition: ```yaml - title: Some other subsection index: abc/index.html @@ -217,3 +218,5 @@ Take a look at following subsection definition: ``` This subsection shows the ability of YAML configuration to map the directory structure. Even though the index page and all defined children are in different directories, they will be rendered in `custom-directory`. +The source page `abc/index.html` will generate a page `custom-directory/index.html`, the source page `abc2/page1.md` will generate a page `custom-directory/page1.html`, +and the source page `foo/page2.md` will generate a page `custom-directory/page2.html`. From 388973da5dfc75990bb00be1d15ea2bd217b8780 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 14 Mar 2022 14:12:50 +0100 Subject: [PATCH 0378/1704] list scala 3 releases in api/all --- api/all.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/api/all.md b/api/all.md index ddf77295f7..ea55e544d9 100644 --- a/api/all.md +++ b/api/all.md @@ -6,6 +6,8 @@ includeTOC: true ## Latest releases +* Scala 3.1.1 + * [Library API](https://www.scala-lang.org/api/3.1.1/) * Scala 2.13.8 * [Library API](https://www.scala-lang.org/api/2.13.8/) * [Compiler API](https://www.scala-lang.org/api/2.13.8/scala-compiler/scala/) @@ -58,6 +60,14 @@ https://scala-ci.typesafe.com/artifactory/scala-integration/org/scala-lang/ ## Previous releases +* Scala 3.1.0 + * [Library API](https://www.scala-lang.org/api/3.1.0/) +* Scala 3.0.2 + * [Library API](https://www.scala-lang.org/api/3.0.2/) +* Scala 3.0.1 + * [Library API](https://www.scala-lang.org/api/3.0.1/) +* Scala 3.0.0 + * [Library API](https://www.scala-lang.org/api/3.0.0/) * Scala 2.13.7 * [Library API](https://www.scala-lang.org/api/2.13.7/) * [Compiler API](https://www.scala-lang.org/api/2.13.7/scala-compiler/scala/) From 5152494a70fb70694d0381474115e404d7e89317 Mon Sep 17 00:00:00 2001 From: TSLsun Date: Sat, 19 Mar 2022 11:10:20 +0800 Subject: [PATCH 0379/1704] fix compiling warnings in code example --- _tour/classes.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_tour/classes.md b/_tour/classes.md index 47b5079bc5..ee3dc33703 100644 --- a/_tour/classes.md +++ b/_tour/classes.md @@ -76,17 +76,17 @@ class Point { private var _y = 0 private val bound = 100 - def x = _x + def x: Int = _x def x_= (newValue: Int): Unit = { - if (newValue < bound) _x = newValue else printWarning + if (newValue < bound) _x = newValue else printWarning() } - def y = _y + def y: Int = _y def y_= (newValue: Int): Unit = { - if (newValue < bound) _y = newValue else printWarning + if (newValue < bound) _y = newValue else printWarning() } - private def printWarning = println("WARNING: Out of bounds") + private def printWarning(): Unit = println("WARNING: Out of bounds") } val point1 = new Point From 532dbc3f09686cedda3ac3cf8fd90986f5ffbe85 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 11:51:25 +0100 Subject: [PATCH 0380/1704] enable collection contribute_resources change icons in contribute_resources --- _config.yml | 1 + _contribute_resources/1-documentation.md | 2 +- _contribute_resources/2-bug-fixes.md | 2 +- _contribute_resources/6-compiler-language.md | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index ecd8829749..0d58e58a8f 100644 --- a/_config.yml +++ b/_config.yml @@ -20,6 +20,7 @@ scala-212-version: 2.12.15 scala-3-version: 3.1.1 collections: + contribute_resources: style: output: true overviews: diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index b39290a394..431c4e0ab1 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -1,6 +1,6 @@ --- title: Documentation link: /contribute/documentation.html -icon: fa fa-file-text +icon: fa fa-book --- [Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](https://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md index cca6269e06..54e6d2cf9d 100644 --- a/_contribute_resources/2-bug-fixes.md +++ b/_contribute_resources/2-bug-fixes.md @@ -1,6 +1,6 @@ --- title: Bug fixes link: /contribute/guide.html -icon: fa fa-pencil +icon: fa fa-bug --- Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide.html). diff --git a/_contribute_resources/6-compiler-language.md b/_contribute_resources/6-compiler-language.md index fcfea35d5a..d54e34fac9 100644 --- a/_contribute_resources/6-compiler-language.md +++ b/_contribute_resources/6-compiler-language.md @@ -1,6 +1,6 @@ --- title: Compiler/Language link: /contribute/guide.html#larger-changes-new-features -icon: fa fa-gears +icon: fa fa-cogs --- Larger language features and compiler enhancements including language specification and SIPs. From d9c44ebf1f469c7d8ed2b46c2a38f0940569b6e2 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 13:13:26 +0100 Subject: [PATCH 0381/1704] prepare for move files --- contribute/bug-reporting-guide.md | 4 ++-- contribute/codereviews.md | 2 +- contribute/corelibs.md | 2 +- contribute/documentation.md | 2 +- contribute/guide.md | 2 +- contribute/hacker-guide.md | 2 +- contribute/index.md | 2 +- contribute/partest-guide.md | 4 ++-- contribute/scala-internals.md | 2 +- contribute/scala-standard-library-api-documentation.md | 2 +- contribute/tools.md | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 88317da0ce..d4588de422 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -1,8 +1,8 @@ --- -title: Bug Reporting +title: Bug Reporting Guide layout: inner-page-no-masthead -# permalink: /contribute/bug-reporting-guide/ includeTOC: true +permalink: /contribute/bug-reporting-guide.html --- The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. diff --git a/contribute/codereviews.md b/contribute/codereviews.md index 6e0a2592b6..860ba65884 100644 --- a/contribute/codereviews.md +++ b/contribute/codereviews.md @@ -1,8 +1,8 @@ --- title: Code Review Contributions layout: inner-page-no-masthead -# permalink: /contribute/codereviews/ includeTOC: true +permalink: /contribute/codereviews.html --- ## Code Review Contributions diff --git a/contribute/corelibs.md b/contribute/corelibs.md index 6b2cc5d95f..4f10208334 100644 --- a/contribute/corelibs.md +++ b/contribute/corelibs.md @@ -1,8 +1,8 @@ --- title: Core Library Contributions layout: inner-page-no-masthead -# permalink: /contribute/corelibs/ includeTOC: true +permalink: /contribute/corelibs.html --- ## Core Library Contributions diff --git a/contribute/documentation.md b/contribute/documentation.md index 967806de42..b8ea229f93 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -1,8 +1,8 @@ --- title: Documentation Contributions layout: inner-page-no-masthead -# permalink: /contribute/documentation/ includeTOC: true +permalink: /contribute/documentation.html --- ## Contributing Documentation to the Scala project diff --git a/contribute/guide.md b/contribute/guide.md index 7e4f375005..c10a5c20c1 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -1,8 +1,8 @@ --- title: Contributing guide layout: inner-page-no-masthead -# permalink: /contribute/guide/ includeTOC: true +permalink: /contribute/guide.html ---
    diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 302635fae1..990754e3df 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -2,8 +2,8 @@ title: Scala hacker guide by: Eugene Burmako layout: inner-page-no-masthead -# permalink: /contribute/hacker-guide/ includeTOC: true +permalink: /contribute/hacker-guide.html ---
    This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. diff --git a/contribute/index.md b/contribute/index.md index d78a72e159..d4bc7069a2 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -1,8 +1,8 @@ --- title: Contribute layout: inner-page-no-masthead -# permalink: /contribute/ includeTOC: true +permalink: /contribute/ --- The Scala programming language is an open source project with a very diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md index e7e10621e1..d55c02e884 100644 --- a/contribute/partest-guide.md +++ b/contribute/partest-guide.md @@ -1,8 +1,8 @@ --- title: Running the Test Suite layout: inner-page-no-masthead -# permalink: /contribute/partest-guide/ includeTOC: true +permalink: /contribute/partest-guide.html --- Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go to the scala project folder from your local checkout and run it via `sbt`, `ant` or standalone as follows. @@ -35,7 +35,7 @@ The test suite can be run by using ant from the command line: Please note the standalone scripts mentioned below were removed in 2.12.2. sbt is the preferred way to run the test suite. -There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use +There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use ./test/partest --show-diff --show-log --failed diff --git a/contribute/scala-internals.md b/contribute/scala-internals.md index e6fde53a81..b380525088 100644 --- a/contribute/scala-internals.md +++ b/contribute/scala-internals.md @@ -1,8 +1,8 @@ --- title: Scala Internals Mailing List layout: inner-page-no-masthead -permalink: /contribute/scala-internals/ includeTOC: true +permalink: /contribute/scala-internals/ --- ## scala-internals diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index 6f3af62b30..2700d2fd11 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -1,8 +1,8 @@ --- title: Contribute to API Documentation layout: inner-page-no-masthead -# permalink: /contribute/scala-standard-library-api-documentation.html includeTOC: true +permalink: /contribute/scala-standard-library-api-documentation.html --- This page is specific to API documentation contributions – that is, API diff --git a/contribute/tools.md b/contribute/tools.md index 0afd3982d8..a76d0b90bd 100644 --- a/contribute/tools.md +++ b/contribute/tools.md @@ -1,8 +1,8 @@ --- title: IDE and Build Tool Contributions layout: inner-page-no-masthead -# permalink: /contribute/tools/ includeTOC: true +permalink: /contribute/tools.html # Projects list: projects: From 30735654a67e967f41a9c7162b64846f2050f5ae Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 13:14:45 +0100 Subject: [PATCH 0382/1704] move contribute files --- {contribute => _overviews/contribute}/bug-reporting-guide.md | 0 {contribute => _overviews/contribute}/codereviews.md | 0 {contribute => _overviews/contribute}/corelibs.md | 0 {contribute => _overviews/contribute}/documentation.md | 0 {contribute => _overviews/contribute}/guide.md | 0 {contribute => _overviews/contribute}/hacker-guide.md | 0 {contribute => _overviews/contribute}/inclusive-language-guide.md | 0 {contribute => _overviews/contribute}/index.md | 0 {contribute => _overviews/contribute}/partest-guide.md | 0 {contribute => _overviews/contribute}/scala-internals.md | 0 .../contribute}/scala-standard-library-api-documentation.md | 0 {contribute => _overviews/contribute}/tools.md | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename {contribute => _overviews/contribute}/bug-reporting-guide.md (100%) rename {contribute => _overviews/contribute}/codereviews.md (100%) rename {contribute => _overviews/contribute}/corelibs.md (100%) rename {contribute => _overviews/contribute}/documentation.md (100%) rename {contribute => _overviews/contribute}/guide.md (100%) rename {contribute => _overviews/contribute}/hacker-guide.md (100%) rename {contribute => _overviews/contribute}/inclusive-language-guide.md (100%) rename {contribute => _overviews/contribute}/index.md (100%) rename {contribute => _overviews/contribute}/partest-guide.md (100%) rename {contribute => _overviews/contribute}/scala-internals.md (100%) rename {contribute => _overviews/contribute}/scala-standard-library-api-documentation.md (100%) rename {contribute => _overviews/contribute}/tools.md (100%) diff --git a/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md similarity index 100% rename from contribute/bug-reporting-guide.md rename to _overviews/contribute/bug-reporting-guide.md diff --git a/contribute/codereviews.md b/_overviews/contribute/codereviews.md similarity index 100% rename from contribute/codereviews.md rename to _overviews/contribute/codereviews.md diff --git a/contribute/corelibs.md b/_overviews/contribute/corelibs.md similarity index 100% rename from contribute/corelibs.md rename to _overviews/contribute/corelibs.md diff --git a/contribute/documentation.md b/_overviews/contribute/documentation.md similarity index 100% rename from contribute/documentation.md rename to _overviews/contribute/documentation.md diff --git a/contribute/guide.md b/_overviews/contribute/guide.md similarity index 100% rename from contribute/guide.md rename to _overviews/contribute/guide.md diff --git a/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md similarity index 100% rename from contribute/hacker-guide.md rename to _overviews/contribute/hacker-guide.md diff --git a/contribute/inclusive-language-guide.md b/_overviews/contribute/inclusive-language-guide.md similarity index 100% rename from contribute/inclusive-language-guide.md rename to _overviews/contribute/inclusive-language-guide.md diff --git a/contribute/index.md b/_overviews/contribute/index.md similarity index 100% rename from contribute/index.md rename to _overviews/contribute/index.md diff --git a/contribute/partest-guide.md b/_overviews/contribute/partest-guide.md similarity index 100% rename from contribute/partest-guide.md rename to _overviews/contribute/partest-guide.md diff --git a/contribute/scala-internals.md b/_overviews/contribute/scala-internals.md similarity index 100% rename from contribute/scala-internals.md rename to _overviews/contribute/scala-internals.md diff --git a/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md similarity index 100% rename from contribute/scala-standard-library-api-documentation.md rename to _overviews/contribute/scala-standard-library-api-documentation.md diff --git a/contribute/tools.md b/_overviews/contribute/tools.md similarity index 100% rename from contribute/tools.md rename to _overviews/contribute/tools.md From db3d07ea0ff961fd5000fe4adf99491b6a01645e Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 13:27:32 +0100 Subject: [PATCH 0383/1704] convert to multipage overview --- _overviews/contribute/bug-reporting-guide.md | 6 ++++-- _overviews/contribute/codereviews.md | 6 ++++-- _overviews/contribute/corelibs.md | 6 ++++-- _overviews/contribute/documentation.md | 6 ++++-- _overviews/contribute/guide.md | 6 ++++-- _overviews/contribute/hacker-guide.md | 6 ++++-- _overviews/contribute/inclusive-language-guide.md | 6 ++++-- _overviews/contribute/index.md | 6 ++++-- _overviews/contribute/partest-guide.md | 6 ++++-- _overviews/contribute/scala-internals.md | 6 ++++-- .../contribute/scala-standard-library-api-documentation.md | 6 ++++-- _overviews/contribute/tools.md | 6 ++++-- 12 files changed, 48 insertions(+), 24 deletions(-) diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index d4588de422..3e358a30f0 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -1,7 +1,9 @@ --- title: Bug Reporting Guide -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 7 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/bug-reporting-guide.html --- diff --git a/_overviews/contribute/codereviews.md b/_overviews/contribute/codereviews.md index 860ba65884..5b5a4a4697 100644 --- a/_overviews/contribute/codereviews.md +++ b/_overviews/contribute/codereviews.md @@ -1,7 +1,9 @@ --- title: Code Review Contributions -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 3 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/codereviews.html --- ## Code Review Contributions diff --git a/_overviews/contribute/corelibs.md b/_overviews/contribute/corelibs.md index 4f10208334..984f8c4f7c 100644 --- a/_overviews/contribute/corelibs.md +++ b/_overviews/contribute/corelibs.md @@ -1,7 +1,9 @@ --- title: Core Library Contributions -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 4 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/corelibs.html --- ## Core Library Contributions diff --git a/_overviews/contribute/documentation.md b/_overviews/contribute/documentation.md index b8ea229f93..01cd8a5c15 100644 --- a/_overviews/contribute/documentation.md +++ b/_overviews/contribute/documentation.md @@ -1,7 +1,9 @@ --- title: Documentation Contributions -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 5 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/documentation.html --- ## Contributing Documentation to the Scala project diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index c10a5c20c1..7cafd3d8a3 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -1,7 +1,9 @@ --- title: Contributing guide -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 9 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/guide.html --- diff --git a/_overviews/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md index 990754e3df..df659678cb 100644 --- a/_overviews/contribute/hacker-guide.md +++ b/_overviews/contribute/hacker-guide.md @@ -1,8 +1,10 @@ --- title: Scala hacker guide by: Eugene Burmako -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 11 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/hacker-guide.html ---
    diff --git a/_overviews/contribute/inclusive-language-guide.md b/_overviews/contribute/inclusive-language-guide.md index 6703532594..d673d57ad8 100644 --- a/_overviews/contribute/inclusive-language-guide.md +++ b/_overviews/contribute/inclusive-language-guide.md @@ -1,7 +1,9 @@ --- title: Inclusive Language Guide -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 2 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/inclusive-language/ --- diff --git a/_overviews/contribute/index.md b/_overviews/contribute/index.md index d4bc7069a2..ac513b0009 100644 --- a/_overviews/contribute/index.md +++ b/_overviews/contribute/index.md @@ -1,7 +1,9 @@ --- title: Contribute -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 1 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/ --- diff --git a/_overviews/contribute/partest-guide.md b/_overviews/contribute/partest-guide.md index d55c02e884..8f4dff394b 100644 --- a/_overviews/contribute/partest-guide.md +++ b/_overviews/contribute/partest-guide.md @@ -1,7 +1,9 @@ --- title: Running the Test Suite -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 12 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/partest-guide.html --- diff --git a/_overviews/contribute/scala-internals.md b/_overviews/contribute/scala-internals.md index b380525088..f52faa5c18 100644 --- a/_overviews/contribute/scala-internals.md +++ b/_overviews/contribute/scala-internals.md @@ -1,7 +1,9 @@ --- title: Scala Internals Mailing List -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 8 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/scala-internals/ --- diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index 2700d2fd11..97e3d708f9 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -1,7 +1,9 @@ --- title: Contribute to API Documentation -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 6 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/scala-standard-library-api-documentation.html --- diff --git a/_overviews/contribute/tools.md b/_overviews/contribute/tools.md index a76d0b90bd..6df7c454a9 100644 --- a/_overviews/contribute/tools.md +++ b/_overviews/contribute/tools.md @@ -1,7 +1,9 @@ --- title: IDE and Build Tool Contributions -layout: inner-page-no-masthead -includeTOC: true +layout: multipage-overview +num: 10 +partof: scala-contribution +overview-name: Contributing to Scala permalink: /contribute/tools.html # Projects list: From c692ad3ab96c94ea22c9f5e99e0cabcccd76489b Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 13:59:30 +0100 Subject: [PATCH 0384/1704] migrate urls to /overviews/contribute fix broken links --- _contribute_resources/1-documentation.md | 4 +-- _contribute_resources/2-bug-fixes.md | 4 +-- _contribute_resources/3-code-reviews.md | 6 ++-- _contribute_resources/4-core-libraries.md | 2 +- .../5-ide-and-build-tools.md | 2 +- _contribute_resources/6-compiler-language.md | 2 +- _overviews/contribute/bug-reporting-guide.md | 1 - _overviews/contribute/codereviews.md | 7 ++-- _overviews/contribute/corelibs.md | 7 ++-- _overviews/contribute/documentation.md | 11 +++---- _overviews/contribute/guide.md | 33 +++++++++---------- _overviews/contribute/hacker-guide.md | 11 +++---- .../contribute/inclusive-language-guide.md | 3 +- _overviews/contribute/index.md | 9 +++-- _overviews/contribute/partest-guide.md | 1 - _overviews/contribute/scala-internals.md | 1 - ...cala-standard-library-api-documentation.md | 7 ++-- _overviews/contribute/tools.md | 7 ++-- 18 files changed, 53 insertions(+), 65 deletions(-) diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 431c4e0ab1..3e1b81a7b9 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -1,6 +1,6 @@ --- title: Documentation -link: /contribute/documentation.html +link: /overviews/contribute/documentation.html icon: fa fa-book --- -[Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](https://docs.scala-lang.org/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). +[Scaladoc (API)](/overviews/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md index 54e6d2cf9d..2baf672e5a 100644 --- a/_contribute_resources/2-bug-fixes.md +++ b/_contribute_resources/2-bug-fixes.md @@ -1,6 +1,6 @@ --- title: Bug fixes -link: /contribute/guide.html +link: /overviews/contribute/guide.html icon: fa fa-bug --- -Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide.html). +Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/overviews/contribute/bug-reporting-guide.html). diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md index 2fc057eb0d..41f6821414 100644 --- a/_contribute_resources/3-code-reviews.md +++ b/_contribute_resources/3-code-reviews.md @@ -1,8 +1,8 @@ --- title: Code Reviews -link: /contribute/codereviews.html +link: /overviews/contribute/codereviews.html icon: fa fa-eye --- -Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), -[scala/scala-lang](https://github.com/scala/scala-lang/pulls), +Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), +[scala/scala-lang](https://github.com/scala/scala-lang/pulls), [scala/docs.scala-lang](https://github.com/scala/docs.scala-lang/pulls) and others. diff --git a/_contribute_resources/4-core-libraries.md b/_contribute_resources/4-core-libraries.md index 06f1018479..fb66a906b8 100644 --- a/_contribute_resources/4-core-libraries.md +++ b/_contribute_resources/4-core-libraries.md @@ -1,6 +1,6 @@ --- title: Core Libraries -link: /contribute/corelibs.html +link: /overviews/contribute/corelibs.html icon: fa fa-clipboard --- Update and expand the capabilities of the core (and associated) Scala libraries. diff --git a/_contribute_resources/5-ide-and-build-tools.md b/_contribute_resources/5-ide-and-build-tools.md index 7202f0d953..2bf2c7d729 100644 --- a/_contribute_resources/5-ide-and-build-tools.md +++ b/_contribute_resources/5-ide-and-build-tools.md @@ -1,6 +1,6 @@ --- title: IDE and Build Tools -link: /contribute/tools.html +link: /overviews/contribute/tools.html icon: fa fa-terminal --- Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects. diff --git a/_contribute_resources/6-compiler-language.md b/_contribute_resources/6-compiler-language.md index d54e34fac9..a7dc618322 100644 --- a/_contribute_resources/6-compiler-language.md +++ b/_contribute_resources/6-compiler-language.md @@ -1,6 +1,6 @@ --- title: Compiler/Language -link: /contribute/guide.html#larger-changes-new-features +link: /overviews/contribute/guide.html#larger-changes-new-features icon: fa fa-cogs --- Larger language features and compiler enhancements including language specification and SIPs. diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index 3e358a30f0..5cbf0a3f46 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 7 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/bug-reporting-guide.html --- The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. diff --git a/_overviews/contribute/codereviews.md b/_overviews/contribute/codereviews.md index 5b5a4a4697..368bf96793 100644 --- a/_overviews/contribute/codereviews.md +++ b/_overviews/contribute/codereviews.md @@ -4,11 +4,10 @@ layout: multipage-overview num: 3 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/codereviews.html --- ## Code Review Contributions -In addition to [bug fixing](/contribute/guide.html), you can help us review +In addition to [bug fixing](/overviews/contribute/guide.html), you can help us review [waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your @@ -17,7 +16,7 @@ own pull requests. ### Review Guidelines -[Code of Conduct reminder]({{ site.baseurl }}/conduct.html) +[Code of Conduct reminder](https://scala-lang.org/conduct.html) * Keep comments on-topic, concise and precise. * Attach comments to particular lines or regions they pertain to whenever possible. @@ -53,4 +52,4 @@ own pull requests.
    -Also note that the [Tools contributions](/contribute/tools.html) page has more projects that will generate pull requests. +Also note that the [Tools contributions](/overviews/contribute/tools.html) page has more projects that will generate pull requests. diff --git a/_overviews/contribute/corelibs.md b/_overviews/contribute/corelibs.md index 984f8c4f7c..6c64a887d7 100644 --- a/_overviews/contribute/corelibs.md +++ b/_overviews/contribute/corelibs.md @@ -4,15 +4,14 @@ layout: multipage-overview num: 4 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/corelibs.html --- ## Core Library Contributions There are several options for contributing to Scala's core libraries. You can: -* Help with [Documentation](/contribute/documentation.html). -* [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. -* [Fix Bugs or Issues](/contribute/guide.html) against the +* Help with [Documentation](/overviews/contribute/documentation.html). +* [Report Bugs or Issues](/overviews/contribute/bug-reporting-guide.html) against the core libraries. +* [Fix Bugs or Issues](/overviews/contribute/guide.html) against the [reported library bugs/issues](https://github.com/scala/bug). ### Significant changes diff --git a/_overviews/contribute/documentation.md b/_overviews/contribute/documentation.md index 01cd8a5c15..7fca82ff53 100644 --- a/_overviews/contribute/documentation.md +++ b/_overviews/contribute/documentation.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 5 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/documentation.html --- ## Contributing Documentation to the Scala project @@ -24,11 +23,11 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation](/overviews/contribute/scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. -* [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. +* [Claim Scaladoc Issues and Provide Documentation](/overviews/contribute/scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just -[submit new Scaladoc](/contribute/scala-standard-library-api-documentation.html) +[submit new Scaladoc](/overviews/contribute/scala-standard-library-api-documentation.html) without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on [Scala Contributors](https://contributors.scala-lang.org/) so that people know what you are doing. ### The Main Scala Documentation Site @@ -45,7 +44,7 @@ without creating an issue, but please look to see if there is an issue already s * SIP (Scala Improvement Process) Proposals and more -Please read [contributing to the docs.scala-lang.org site](https://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses +Please read [contributing to the docs.scala-lang.org site](/contribute.html) through before embarking on changes. The site uses the [Jekyll](https://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. ### Updating scala-lang.org @@ -56,4 +55,4 @@ to Scala and related projects) is provided on the main [scala-lang GitHub project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[docs.scala-lang.org contribution](https://docs.scala-lang.org/contribute.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[docs.scala-lang.org contribution](/contribute.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index 7cafd3d8a3..0b5b146ffc 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 9 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/guide.html ---
    @@ -14,18 +13,18 @@ permalink: /contribute/guide.html

    Get a peek into the inners of the Scala compiler.

    -

    Report an issue

    +

    Report an issue

    File a bug report or a feature request.

    -

    Community issues

    +

    Community issues

    Get cracking on some easy to approach issues.

    -

    Hacker guide

    +

    Hacker guide

    Learn to write good code and improve your chances of contributing to the Scala galaxy.

    @@ -56,22 +55,22 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [GitHub branch](https://github.com/scala/scala) -1. [Select a bug to fix from GitHub](/contribute/#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/contribute/bug-reporting-guide.html) (but please -[make sure it's not a duplicate](/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). -2. Optional ([but recommended](/contribute/scala-internals/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with -[these friendly people](/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. -3. [Fork the Scala repository](/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). -4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. -5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). -6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide.html) until [all the tests pass](/contribute/hacker-guide.html#verify). -7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. +1. [Select a bug to fix from GitHub](/overviews/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/overviews/contribute/bug-reporting-guide.html) (but please +[make sure it's not a duplicate](/overviews/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). +2. Optional ([but recommended](/overviews/contribute/scala-internals.html/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with +[these friendly people](/overviews/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. +3. [Fork the Scala repository](/overviews/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). +4. [Create a feature branch](/overviews/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. +5. [Fix the bug, or implement the new small feature](/overviews/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). +6. [Test, rinse](/overviews/contribute/hacker-guide.html#test) and [test some more](/overviews/contribute/partest-guide.html) until [all the tests pass](/overviews/contribute/hacker-guide.html#verify). +7. [Commit your changes](/overviews/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](https://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) -9. [Submit a pull request](./hacker-guide.html#submit). -10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide.html#review). +9. [Submit a pull request](/overviews/contribute/hacker-guide.html#submit). +10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/overviews/contribute/hacker-guide.html#review). 11. Celebrate! -Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide](./hacker-guide.html) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). +Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide](/overviews/contribute/hacker-guide.html) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). ### Larger Changes, New Features @@ -80,4 +79,4 @@ and on the implementation plan. Announce the change on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](https://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](/contribute/hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. +the Scala project source tree. The [hacker guide](/overviews/contribute/hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. diff --git a/_overviews/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md index df659678cb..cb83b6218a 100644 --- a/_overviews/contribute/hacker-guide.md +++ b/_overviews/contribute/hacker-guide.md @@ -5,7 +5,6 @@ layout: multipage-overview num: 11 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/hacker-guide.html ---
    This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. @@ -32,7 +31,7 @@ Sometimes it's appealing to hack alone and not to have to interact with others o this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#forums) to find out how people feel +Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists](https://scala-lang.org/community/index.html#forums) to find out how people feel about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. @@ -200,7 +199,7 @@ Contributing to the Scala standard library is about the same as working on one o If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. -If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](https://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](https://docs.scala-lang.org/overviews/collections/introduction.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](https://docs.scala-lang.org/overviews/parallel-collections/overview.html). +If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](/overviews/collections/introduction.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](/overviews/parallel-collections/overview.html). ##### The Scala Compiler @@ -208,7 +207,7 @@ Documentation about the internal workings of the Scala compiler is scarce, and m * [Compiler internals videos by Martin Odersky](https://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. -* [Reflection documentation](https://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that +* [Reflection documentation](/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. * [Reflection and Compilers by Martin Odersky](https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. @@ -266,7 +265,7 @@ Adding tests to the test suite is as easy as moving them to the appropriate dire * Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/2.12.x/test/files/pos). * Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/2.12.x/test/files/neg). -* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/2.12.x/test/files/run) and have a corresponding `.check` file with the expected output. You will get test failures if the content of a `.check` file is different from what the test produces while running. If the change in the output is an expected product of your work, you might not want to change the `.check` file by hand. To make partest change the `.check` file, run it with a `--update-check` flag, like so `./test/partest --update-check path/to/test.scala`. For more information on partest, please refer to its [documentation](https://docs.scala-lang.org/tutorials/partest-guide.html). +* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/2.12.x/test/files/run) and have a corresponding `.check` file with the expected output. You will get test failures if the content of a `.check` file is different from what the test produces while running. If the change in the output is an expected product of your work, you might not want to change the `.check` file by hand. To make partest change the `.check` file, run it with a `--update-check` flag, like so `./test/partest --update-check path/to/test.scala`. For more information on partest, please refer to its [documentation](https://github.com/scala/scala-partest). * Everything that can be unit-tested should go to ["junit" directory](https://github.com/scala/scala/tree/2.12.x/test/junit) * Property-based tests go to the ["scalacheck" directory](https://github.com/scala/scala/tree/2.12.x/test/scalacheck) @@ -311,7 +310,7 @@ This means your change is backward or forward binary incompatible with the speci ### Verify -Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest](partest-guide.html), a tool we wrote for testing Scala. +Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest](/overviews/contribute/partest-guide.html), a tool we wrote for testing Scala. Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, respectively. `partest` (not `sbt partest`) also allows you to run a subset of the tests using wildcards: diff --git a/_overviews/contribute/inclusive-language-guide.md b/_overviews/contribute/inclusive-language-guide.md index d673d57ad8..7f7c428f42 100644 --- a/_overviews/contribute/inclusive-language-guide.md +++ b/_overviews/contribute/inclusive-language-guide.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 2 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/inclusive-language/ --- We are committed to providing a friendly, safe and welcoming environment for @@ -131,4 +130,4 @@ In those cases, we recommend to keep the old names, but document (e.g., in Scala ## See also -* Our [code of conduct](../../conduct/). +* Our [code of conduct](https://scala-lang.org/conduct/). diff --git a/_overviews/contribute/index.md b/_overviews/contribute/index.md index ac513b0009..8b7dad1e83 100644 --- a/_overviews/contribute/index.md +++ b/_overviews/contribute/index.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 1 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/ --- The Scala programming language is an open source project with a very @@ -19,7 +18,7 @@ That depends on what you want to contribute. Below are some getting started reso ### Reporting bugs -See our [bug reporting guide](/contribute/bug-reporting-guide.html) to learn +See our [bug reporting guide](/overviews/contribute/bug-reporting-guide.html) to learn how to efficiently report a bug. ### Contribute @@ -33,8 +32,8 @@ Coordination of contribution efforts takes place on When contributing, please follow: -* The [Scala Code of Conduct](../conduct/) -* The [Inclusive Language Guide](./inclusive-language/) +* The [Scala Code of Conduct](https://scala-lang.org/conduct/) +* The [Inclusive Language Guide](/overviews/contribute/inclusive-language-guide.html) ### Community Tickets @@ -48,7 +47,7 @@ with their own maintainers and community of contributors. Helping out one of these projects is another way to help Scala. Consider lending on a hand on a project you're already using. Or, to find out about other projects, see the -[Libraries and Tools section](/community/#community-libraries-and-tools) +[Libraries and Tools section](https://scala-lang.org/community/#community-libraries-and-tools) on our Community page. ### Scala Community Build diff --git a/_overviews/contribute/partest-guide.md b/_overviews/contribute/partest-guide.md index 8f4dff394b..6fb5a2644b 100644 --- a/_overviews/contribute/partest-guide.md +++ b/_overviews/contribute/partest-guide.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 12 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/partest-guide.html --- Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go to the scala project folder from your local checkout and run it via `sbt`, `ant` or standalone as follows. diff --git a/_overviews/contribute/scala-internals.md b/_overviews/contribute/scala-internals.md index f52faa5c18..82346bcb15 100644 --- a/_overviews/contribute/scala-internals.md +++ b/_overviews/contribute/scala-internals.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 8 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/scala-internals/ --- ## scala-internals diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index 97e3d708f9..977e733528 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 6 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/scala-standard-library-api-documentation.html --- This page is specific to API documentation contributions – that is, API @@ -13,8 +12,8 @@ documentation for sometimes referred to as Scaladoc contributions. For contributions to tutorial and guide-style documentation on -[docs.scala-lang.org](https://docs.scala-lang.org), -see the ["doc-site"'s contribution guide](https://docs.scala-lang.org/contribute.html). +[docs.scala-lang.org](/), +see the ["doc-site"'s contribution guide](/contribute.html). *Please note, these instructions cover documentation contributions Scala core libraries only. For other Scala projects please check those projects for the @@ -79,7 +78,7 @@ component so that they show up in the correct issue filters. Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. -* [Forking the Repo](./hacker-guide.html#2-set-up) - follow the setup steps through +* [Forking the Repo](/overviews/contribute/hacker-guide.html#2-set-up) - follow the setup steps through the Branch section. If providing new documentation related to an existing GitHub issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated GitHub issue, use `scaladoc/xxxx` instead. diff --git a/_overviews/contribute/tools.md b/_overviews/contribute/tools.md index 6df7c454a9..b7ae46b9ed 100644 --- a/_overviews/contribute/tools.md +++ b/_overviews/contribute/tools.md @@ -4,7 +4,6 @@ layout: multipage-overview num: 10 partof: scala-contribution overview-name: Contributing to Scala -permalink: /contribute/tools.html # Projects list: projects: @@ -23,7 +22,7 @@ projects: homeLink: https://www.scala-lang.org/api issuesLink: https://github.com/scala/bug/labels/scaladoc readmeLink: https://github.com/scala/scala#welcome - contributingLink: https://scala-lang.org/contribute/guide.html + contributingLink: /overviews/contribute/guide.html - title: Scala IDE description: Interactive build tool. icon: https://avatars2.githubusercontent.com/u/1026788?v=3&s=200 @@ -70,7 +69,7 @@ projectsInNeed: The links below are to a number of Scala build and IDE related projects that are important in the larger Scala space, and which welcome contributions. -Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/contribute/hacker-guide.html) and [Bug-fixing](/contribute/guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. +Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/overviews/contribute/hacker-guide.html) and [Bug-fixing](/overviews/contribute/guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. Typically, issues for these projects will be reported and kept in the GitHub project issue tracker for that project rather than in the Scala bug tracker. @@ -82,7 +81,7 @@ if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation.html#updating-scala-langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/overviews/contribute/documentation.html#updating-scala-langorg) to fix it. ### Projects From 9d9f0968e4635dc5eaf74cc0053b091e22eb2811 Mon Sep 17 00:00:00 2001 From: Antoine Pointeau Date: Mon, 21 Mar 2022 14:04:32 +0100 Subject: [PATCH 0385/1704] Translation for fr/extractor-objects (#2268) --- _fr/tour/extractor-objects.md | 58 +++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/_fr/tour/extractor-objects.md b/_fr/tour/extractor-objects.md index ac5c1dc013..9ffc529a58 100644 --- a/_fr/tour/extractor-objects.md +++ b/_fr/tour/extractor-objects.md @@ -3,10 +3,64 @@ layout: tour title: Extractor Objects partof: scala-tour -num: 14 +num: 18 language: fr -next-page: generic-classes +next-page: for-comprehensions previous-page: regular-expression-patterns --- + +Un objet extracteur est un objet avec une méthode `unapply`. Tandis que la méthode `apply` ressemble à un constructeur qui prend des arguments et crée un objet, `unapply` prend un object et essaye de retourner ses arguments. Il est utilisé le plus souvent en filtrage par motif (*pattern matching*) ou avec les fonctions partielles. + +```scala mdoc +import scala.util.Random + +object CustomerID { + + def apply(name: String) = s"$name--${Random.nextLong}" + + def unapply(customerID: String): Option[String] = { + val stringArray: Array[String] = customerID.split("--") + if (stringArray.tail.nonEmpty) Some(stringArray.head) else None + } +} + +val customer1ID = CustomerID("Sukyoung") // Sukyoung--23098234908 +customer1ID match { + case CustomerID(name) => println(name) // prints Sukyoung + case _ => println("Could not extract a CustomerID") +} +``` + +La méthode `apply` crée une chaîne de caractères `CustomerID` depuis `name`. La méthode `unapply` fait l'inverse pour retrouver le `name`. Lorsqu'on appelle `CustomerID("Sukyoung")`, c'est un raccourci pour `CustomerID.apply("Sukyoung")`. Lorsqu'on appelle `case CustomerID(name) => println(name)`, on appelle la méthode `unapply` avec `CustomerID.unapply(customer1ID)`. + +Sachant qu'une définition de valeur peut utiliser une décomposition pour introduire une nouvelle variable, un extracteur peut être utilisé pour initialiser la variable, avec la méthode `unapply` pour fournir la valeur. + +```scala mdoc +val customer2ID = CustomerID("Nico") +val CustomerID(name) = customer2ID +println(name) // prints Nico +``` + +C'est équivalent à `val name = CustomerID.unapply(customer2ID).get`. + +```scala mdoc +val CustomerID(name2) = "--asdfasdfasdf" +``` + +S'il n'y a pas de correspondance, une `scala.MatchError` est levée : + +```scala +val CustomerID(name3) = "-asdfasdfasdf" +``` + +Le type de retour de `unapply` doit être choisi comme suit : + +* Si c'est juste un test, retourner un `Boolean`. Par exemple, `case even()`. +* Si cela retourne une seule sous-valeur de type T, retourner un `Option[T]`. +* Si vous souhaitez retourner plusieurs sous-valeurs `T1,...,Tn`, groupez-les dans un tuple optionnel `Option[(T1,...,Tn)]`. + +Parfois, le nombre de valeurs à extraire n'est pas fixe et on souhaiterait retourner un nombre arbitraire de valeurs, en fonction des données d'entrée. Pour ce cas, vous pouvez définir des extracteurs avec la méthode `unapplySeq` qui retourne un `Option[Seq[T]]`. Un exemple commun d'utilisation est la déconstruction d'une liste en utilisant `case List(x, y, z) =>`. Un autre est la décomposition d'une `String` en utilisant une expression régulière `Regex`, comme `case r(name, remainingFields @ _*) =>`. + +Traduit par Antoine Pointeau. \ No newline at end of file From ef8f171b14742544916c206bada7517d7cb99d53 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 14:32:32 +0100 Subject: [PATCH 0386/1704] modernise the content somewhat --- _contribute_resources/3-code-reviews.md | 1 + _overviews/contribute/bug-reporting-guide.md | 29 +++---- _overviews/contribute/codereviews.md | 47 ++++++----- _overviews/contribute/guide.md | 44 ++++------ _overviews/contribute/index.md | 2 +- _overviews/contribute/scala-internals.md | 84 +++++++++++-------- ...cala-standard-library-api-documentation.md | 9 +- _overviews/contribute/tools.md | 61 +++++--------- 8 files changed, 137 insertions(+), 140 deletions(-) diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md index 41f6821414..e6f15e271c 100644 --- a/_contribute_resources/3-code-reviews.md +++ b/_contribute_resources/3-code-reviews.md @@ -4,5 +4,6 @@ link: /overviews/contribute/codereviews.html icon: fa fa-eye --- Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), +[lampepfl/dotty](https://github.com/lampepfl/dotty/pulls), [scala/scala-lang](https://github.com/scala/scala-lang/pulls), [scala/docs.scala-lang](https://github.com/scala/docs.scala-lang/pulls) and others. diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index 5cbf0a3f46..9545ecdc53 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -6,7 +6,7 @@ partof: scala-contribution overview-name: Contributing to Scala --- -The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. +The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug), and for Scala 3, it is located at [github.com/lampepfl/dotty](https://github.com/lampepfl/dotty/issues). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. ## Is it a Bug? @@ -22,7 +22,6 @@ If your issue is related to any of the following external projects, make sure to - [Akka](https://doc.akka.io/docs/akka/current/project/issue-tracking.html) - [Play!](https://github.com/playframework/Play20/issues) - [Slick](https://github.com/slick/slick/issues) - - [Scala IDE](https://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets) - [sbt](https://github.com/sbt/sbt/issues) The following are generally considered to be bugs: @@ -53,10 +52,10 @@ In general, if you find yourself stuck on any of these steps, asking on [Scala C - For compiler bugs use the [Compiler Category](https://contributors.scala-lang.org/c/compiler). * Examples of exceptions reported by the compiler which usually are not bugs: - 1. `StackOverflowError` is typically not a bug unless the stacktrace involves the internal packages of the compiler (like `scala.tools.nsc...`). Try to increase the Java stack size (`-Xss`), in most of the cases it helps. + 1. `StackOverflowError` is typically not a bug unless the stacktrace involves the internal packages of the compiler (like `scala.tools.nsc...`, or `dotty.tools.dotc...`). Try to increase the Java stack size (`-Xss`), in most of the cases it helps. 2. `AbstractMethodError` can occur when you did not recompile all the necessary Scala files (build tools, like `sbt`, can prevent that from happening) or you are mixing external libraries compiled for different Scala versions (for example one uses `2.10.x` and the other `2.11.x`). -## Reporting Confirmed Bugs is a Sin +## Please Check Before Reporting a Bug Before reporting your bug, make sure to check the issue tracker for other similar bugs. The exception name or a compiler phase are the best keywords to search for. If you are experiencing unexpected behavior search for method/class names where it happens. Your issue might already be reported, and a workaround might already be available for you take advantage of. If your issue *is* reported, be sure to add your test case as a comment if it is different from any of the existing ones. @@ -68,7 +67,7 @@ If you cannot find your issue in the issue tracker, create a new bug. The detail Please make sure to fill in as many fields as possible. Make sure you've indicated the following: - 1. **Exact Scala version** that you are using. For example, `2.10.1` or `2.11.0-RC`. If the bug happens in multiple versions indicate all of them. + 1. **Exact Scala version** that you are using. For example, `2.13.8` or `3.1.2-RC1`. If the bug happens in multiple versions indicate all of them. 2. **The component** that is affected by the bug. For example, the Standard Library, Scaladoc, etc. 3. **Labels** related to your issue. For example, if you think your issue is related to the typechecker, and if you have successfully minimized your issue, label your bug as "typechecker" and "minimized". Issue tracker will suggest names for existing labels as you type them so try not to create duplicates. 4. **Running environment**. Are you running on Linux? Windows? What JVM version are you using? @@ -78,12 +77,14 @@ In order for us to quickly triage the bug that you've found, it's important that ### Description In the description of your issue, be as detailed as you can. Bug reports which have the following information included are typically understood, triaged, and fixed very quickly: - - 1. Include a test case (minimized if possible) enabling us to reproduce the problematic behavior. Include your test case (and output) in proper formatting `{code}` blocks: - - {code}Here you put your classes{code} - - 2. The expected output. - 3. The actual output, including the stacktrace. - 4. Related discussion on the mailing lists, if applicable. - 5. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. +1. Include a test case (minimized if possible) enabling us to reproduce the problematic behavior. Include your test +case (and output) in properly formatted code blocks: +~~~ +```scala +List(1, 2, 3).map(x => x + 1) +``` +~~~ +2. The expected output. +3. The actual output, including the stacktrace. +4. Related discussion on the mailing lists, if applicable. +5. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. diff --git a/_overviews/contribute/codereviews.md b/_overviews/contribute/codereviews.md index 368bf96793..e7dea2acea 100644 --- a/_overviews/contribute/codereviews.md +++ b/_overviews/contribute/codereviews.md @@ -29,27 +29,32 @@ own pull requests. ## Pull Requests Awaiting Comment
    -
    -
    -

    scala/scala

    -

    Scala bug fixes and changes in the language, core libs and included tools.

    -
    -
    -

    scala/scala.github.com

    -

    Scala documentation site.

    -
    -
    - -
    -
    -

    scala/scala-lang

    -

    The Scala language web site.

    -
    -
    -

    All Scala GitHub Projects

    -

    For other PRs, follow the scala project from here.

    -
    -
    +
    +
    +

    lampepfl/dotty

    +

    Scala 3 bug fixes and changes in the language, core libs and included tools.

    +
    +
    +

    scala/scala

    +

    Scala 2 bug fixes and changes in the language, core libs and included tools.

    +
    +
    +
    +
    +

    scala/scala-lang

    +

    The Scala language web site.

    +
    +
    +

    scala/docs.scala-lang.org

    +

    Scala documentation site.

    +
    +
    +
    +
    +

    All Scala GitHub Projects

    +

    For other PRs, follow the scala project from here.

    +
    +
    Also note that the [Tools contributions](/overviews/contribute/tools.html) page has more projects that will generate pull requests. diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index 0b5b146ffc..5acc188a27 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -6,29 +6,13 @@ partof: scala-contribution overview-name: Contributing to Scala --- -
    -
    -
    -

    Scala Contributors

    -

    Get a peek into the inners of the Scala compiler.

    -
    -
    -

    Report an issue

    -

    File a bug report or a feature request.

    -
    -
    - -
    -
    -

    Community issues

    -

    Get cracking on some easy to approach issues.

    -
    -
    -

    Hacker guide

    -

    Learn to write good code and improve your chances of contributing to the Scala galaxy.

    -
    -
    -
    +| **Shortcut** | **Description** | +|----------------------------------------|-----------------| +| [Scala Contributors][contrib-forum] | Get a peek into the inners of the Scala compiler. | +| [Report an Issue][bug-reporting-guide] | File a bug report or a feature request. | +| [Community Issues][community-tickets] | Get cracking on some easy to approach issues. | +| [Scala 2 Hacker's Guide][hackers] | Learn to write good code and improve your chances of contributing to the Scala galaxy. | +| [Scala 3 Contributing Guide][scala3-hackers] | Walkthrough contributing to the Scala 3 compiler, along with a guide to compiler internals. | @@ -52,11 +36,13 @@ which allows us to ensure that all code submitted to the project is unencumbered by copyrights or patents. ### Bug-fix Check List +> Originally these steps cover the [Scala 2 compiler](https://github.com/scala/scala), but they also are relevant to +> the [Scala 3 compiler](https://github.com/lampepfl/dotty). This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [GitHub branch](https://github.com/scala/scala) 1. [Select a bug to fix from GitHub](/overviews/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/overviews/contribute/bug-reporting-guide.html) (but please -[make sure it's not a duplicate](/overviews/contribute/bug-reporting-guide.html#reporting-confirmed-bugs-is-a-sin)). +[make sure it's not a duplicate](/overviews/contribute/bug-reporting-guide.html#please-check-before-reporting-a-bug)). 2. Optional ([but recommended](/overviews/contribute/scala-internals.html/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with [these friendly people](/overviews/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. 3. [Fork the Scala repository](/overviews/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). @@ -70,7 +56,7 @@ https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is r 10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/overviews/contribute/hacker-guide.html#review). 11. Celebrate! -Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide](/overviews/contribute/hacker-guide.html) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). +Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide][hackers] (or the [equivalent Scala 3 Contributing Guide][scala3-hackers]) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). ### Larger Changes, New Features @@ -79,4 +65,10 @@ and on the implementation plan. Announce the change on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](https://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](/overviews/contribute/hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. +the Scala project source tree. The hacker's guides ([Scala 2][hackers], or [Scala 3][scala3-hackers]) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. + +[hackers]: /overviews/contribute/hacker-guide.html +[community-tickets]: /overviews/contribute/index.html#community-tickets +[bug-reporting-guide]: /overviews/contribute/bug-reporting-guide.html +[scala3-hackers]: {% link _overviews/scala3-contribution/procedures-intro.md %} +[contrib-forum]: https://contributors.scala-lang.org/ diff --git a/_overviews/contribute/index.md b/_overviews/contribute/index.md index 8b7dad1e83..b89f04803a 100644 --- a/_overviews/contribute/index.md +++ b/_overviews/contribute/index.md @@ -37,7 +37,7 @@ When contributing, please follow: ### Community Tickets -All issues can be found in the [Scala bug tracker](https://github.com/scala/bug). Most issues are labeled +All issues can be found in the [Scala bug tracker](https://github.com/scala/bug), or the [Scala 3 issue tracker](https://github.com/lampepfl/dotty/issues). Most issues are labeled to make it easier to find issues you are interested in. ### Tools and Libraries diff --git a/_overviews/contribute/scala-internals.md b/_overviews/contribute/scala-internals.md index 82346bcb15..ac5be2fd85 100644 --- a/_overviews/contribute/scala-internals.md +++ b/_overviews/contribute/scala-internals.md @@ -1,47 +1,63 @@ --- -title: Scala Internals Mailing List +title: Scala Contributors Forum layout: multipage-overview num: 8 partof: scala-contribution overview-name: Contributing to Scala --- -## scala-internals - -The [scala-internals mailing list](https://groups.google.com/d/forum/scala-internals) is where technical and logistical discussions concerning bugs, bug fixes, documentation, improvements, new features and other contributor related topics occur. - -### Coordinating on scala-internals - -Prior to commencing on contribution work on larger changes to the Scala project, it is recommended (but not required) that you make a post on scala-internals announcing your intention. It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, one of whom will probably be reviewing your contribution at some point. For smaller bug fixes or documentation changes where the risk of effort duplication is minimal, you can skip this post. - -To help subscribers on the scala-internals list to sort through the postings, we request that the following topic labels are applied when you start a new post please: - -| Label | Topics | -|-----------|-------------------------------------------------------| -| [docs] | Documentation, e.g. docs.scala-lang.org, API (scaladoc), etc. | -| [issues] | Bug reporting/fixing | -| [tools] | Tools including sbt, IDE plugins, testing, scaladoc generator, etc. | -| [libs] | Core libraries, extension libraries | -| [compiler] | Scala compiler discussions/features/issues | -| [admin] | Administrative/coordination topics | - -So, to talk about this list (an admin activity primarily) one might use: - -`[admin] more suggested labels for topic differentiation.` - -as a title, which then shows up on the mailing lists as - -`[scala-internals] [admin] more suggested labels for topic differentiation.` +The [Scala Contributors Forum][scala-contributors] is where discussions about the Scala ecosystem +occur, from the perspectives of core compiler, documentation and library contributors. It features updates from the +Scala Center, along with technical and logistical discussions concerning bugs, bug fixes, documentation, improvements, +new features and other contributor related topics. + +> The now legacy [scala-internals mailing list](https://groups.google.com/d/forum/scala-internals) used to fulfil this +> purpose, but has since expanded to encompass more topics in the new [forum][scala-contributors]. + +## Coordinating on Scala Contributors + +Prior to commencing on contribution work on larger changes to the Scala project, it is recommended (but not required) +that you make a post on [Scala Contributors][scala-contributors] announcing your intention. +It's a great time to invite any help, advice or ask any questions you might have. It's also a great place to meet peers, +one of whom will probably be reviewing your contribution at some point. +For smaller bug fixes or documentation changes where the risk of effort duplication is minimal, you can skip this post. + +To help users to sort through the posts, we request that the following categories are applied when you start a +new post please: + +| Category | Topics | +|-----------------------------|---------------------------------------------------------------------| +| `Documentation` | Documentation, e.g. docs.scala-lang.org, API (scaladoc), etc. | +| `Compiler` | Bug reporting/fixing, Scala compiler discussions/issues | +| `Tooling` | Tools including sbt, IDE plugins, testing, scaladoc generator, etc. | +| `Scala Standard Library` | Core libraries | +| `Scala Platform` | Extension libraries | +| `Language Design` | Scala language feature discussions / informal proposals | +| `Scala Improvement Process` | Scala language feature formal proposals | +| `Meta Discourse` | Administrative/coordination topics | +| `Community` | Discussions about events, community organising | ### Why It's a Good Idea -While it is optional to announce your intentions/work items on scala-internals before starting, it is recommended and a smart thing to do for a number of reasons: +While it is optional to announce your intentions/work items on [Scala Contributors][scala-contributors] before starting, it is recommended thing to do for a number of reasons: * To attempt to cut down on duplicate effort (i.e. to avoid two people working on the same bug at the same time without coordinating effort). * Related to the above: to allow the compiler team and core committers to warn of or smooth over potential merge conflicts between separate bugs that might affect the same code. -* Potentially someone has already thought about or even worked on that issue or a related one, and has valuable insight that might save you time (including warnings about what you might find and may want to avoid - dead ends that have already been explored). -* You might find a group of impassioned individuals want to volunteer to help you, since you got there first with your post it's up to you to decide if you want help or not. -* Posting could start a dialog with a potential reviewer, smoothing the latter, merge stages of the issue. -* There are a lot of nice people waiting to talk to you on scala-internals, you might be surprised how valuable and pleasant you find the experience of talking to them. - -If all of this has not convinced you then, please, go ahead and work on contributions anyway. It *is* less important to post to scala-internals first for small, self contained bugs than it is for larger issues or features, and not having posted first will not be a reason for your PR to be rejected, it just might be a rougher review/merge process than if you had posted first. It's your choice. +* Potentially someone has already thought about or even worked on that issue or a related one, and has valuable insight +that might save you time (including warnings about what you might find and may want to avoid - perhaps one option +already tried lead to no benefit). +* You might find a group of impassioned individuals who want to volunteer and help you. You will have the momentum since +you posted first, so then it's up to you to decide if you want their help or not. +* Posting could start a dialog with a potential reviewer, smoothing the later stages of your contribution before +merging your changes. +* There are a lot of nice people waiting to talk to you on [Scala Contributors][scala-contributors], you might be +surprised how valuable and pleasant you find the experience of talking to them. + +Even if you do not wish to post on [Scala Contributors][scala-contributors], please feel welcome to make contributions +anyway, as posting to the forum is *not* criteria for it to be accepted. For smaller, self-contained bugs it is +especially less important to make a post, however larger issues or features take more time to consider accepting them. +For large contributions we strongly recommend that you do to notify of your intention, which will help you determine if +there is large community support for your change, making it more likely that your large contribution will accepted, +before you spend a long time implementing it. + +[scala-contributors]: https://contributors.scala-lang.org diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index 977e733528..ba59855392 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -43,7 +43,8 @@ and identify missing, incorrect or inadequate documentation. A good place to sta package objects for important packages (these often get overlooked for documentation and are a good place for API overviews). -If you find an issue, please log it in the [Scala bug tracker](https://github.com/scala/bug) +If you find an issue, please log it in the [Scala bug tracker](https://github.com/scala/bug), +(or else the [Scala 3 issue tracker](https://github.com/lampepfl/dotty/issues) for Scala 3 library additions) **after making sure it is not already logged as an issue**. To help with disambiguation, please use the following format for issue title: @@ -112,10 +113,10 @@ PR is merged in smoothly: Scala code is likely to flag as mis-spelled sometimes, but any written language should be checked. If you can also use a grammar checker, even better. We *will* ask for spelling and grammar to be corrected before acceptance. -* You **must** also run `ant docs`, fix any problems and check the formatting and +* You **must** also run `sbt doc`, fix any problems and check the formatting and layout of your changes. Again, corrections will be required if formatting or - layout are inadequate. After running `ant docs` the generated documents can be - found under the `build/scaladoc/` folders (probably in the `library` folder + layout are inadequate. After running `sbt doc` the generated documents can be + found under the `build/scaladoc/` folders (probably in the `library` subdirectory but maybe under the others depending on what section of the Scala source you are working on). * All of these steps are required to save time for both the reviewers and diff --git a/_overviews/contribute/tools.md b/_overviews/contribute/tools.md index b7ae46b9ed..4ce5a3be0a 100644 --- a/_overviews/contribute/tools.md +++ b/_overviews/contribute/tools.md @@ -8,8 +8,8 @@ overview-name: Contributing to Scala # Projects list: projects: - title: sbt - description: Interactive build tool. - icon: https://www.scala-sbt.org/assets/typesafe_sbt_svg.svg + description: The interactive build tool. + icon: https://www.scala-sbt.org/assets/sbt-logo.svg link: https://github.com/sbt/sbt homeLink: https://www.scala-sbt.org/ issuesLink: https://github.com/sbt/sbt#issues-and-pull-requests @@ -23,57 +23,26 @@ projects: issuesLink: https://github.com/scala/bug/labels/scaladoc readmeLink: https://github.com/scala/scala#welcome contributingLink: /overviews/contribute/guide.html - - title: Scala IDE - description: Interactive build tool. - icon: https://avatars2.githubusercontent.com/u/1026788?v=3&s=200 - link: https://github.com/scala-ide/scala-ide - homeLink: http://scala-ide.org/ - issuesLink: https://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets - readmeLink: https://github.com/scala-ide/scala-ide/blob/master/README.md - contributingLink: https://github.com/scala-ide/scala-ide/blob/master/CONTRIBUTING.md - - title: DBuild - description: Multi-project build tool. - icon: https://avatars3.githubusercontent.com/u/784923?v=3&s=200 - link: https://github.com/lightbend/dbuild - homeLink: https://lightbend.github.io/dbuild - issuesLink: https://github.com/lightbend/dbuild/issues - readmeLink: https://github.com/lightbend/dbuild/blob/master/README.md - contributingLink: https://github.com/lightbend/dbuild/blob/master/README.md#get-involved - title: Partest - description: Scala Compiler/Library Testing + description: Scala Compiler/Library Testing (Contribute through scala/scala) icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 - link: https://github.com/scala/scala-partest - homeLink: https://docs.scala-lang.org/tutorials/partest-guide.html - issuesLink: https://github.com/scala/scala-partest/issues - readmeLink: https://github.com/scala/scala-partest/blob/1.1.x/README.md + link: https://github.com/scala/scala + homeLink: https://github.com/scala/scala + issuesLink: https://github.com/scala/scala/issues + readmeLink: https://github.com/scala/scala/blob/2.13.x/CONTRIBUTING.md#partest contributingLink: - - title: Scoverage - description: Scala code coverage tool - icon: https://avatars1.githubusercontent.com/u/5998302?v=3&s=200 - link: https://github.com/scoverage/scalac-scoverage-plugin - homeLink: http://scoverage.org/ - issuesLink: https://github.com/scoverage/scalac-scoverage-plugin/issues - readmeLink: https://github.com/scoverage/scalac-scoverage-plugin/blob/master/README.md - contributingLink: https://groups.google.com/forum/#!forum/scala-code-coverage-tool projectsInNeed: - - title: Scalariform - description: Scala source code formatter - icon: /resources/img/white-line.png - link: https://github.com/mdr/scalariform - homeLink: https://github.com/mdr/scalariform/wiki/Command-line-tool - issuesLink: https://github.com/mdr/scalariform/issues - readmeLink: https://github.com/mdr/scalariform/blob/master/README.rst --- ## Contributing to IDE and Build Tools The links below are to a number of Scala build and IDE related projects that are important in the larger Scala space, and which welcome contributions. -Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. The [Hacker Guide](/overviews/contribute/hacker-guide.html) and [Bug-fixing](/overviews/contribute/guide.html) pages will likely have much in the way of related information on how to contribute to these projects, and are recommended reading. You should also check the README.md and (if it's present) CONTRIBUTING.md files from the actual projects before contributing to them. +Since these tools are in separate projects, they may (and likely will) have their own rules and guidelines for contributing. You should also check the `README.md` and (if it's present) `CONTRIBUTING.md` files from the actual projects before contributing to them. Typically, issues for these projects will be reported and kept in the GitHub project issue tracker for that project rather than in the Scala bug tracker. -Many of these projects have a chat room on Discord or Gitter (usually linked from their README or CONTRIBUTING files) which is a great place to discuss proposed work before starting. +Many of these projects have a chat room on Discord or Gitter (usually linked from their `README.md` or `CONTRIBUTING.md` files) which is a great place to discuss proposed work before starting. There are some projects in this section that are in [particular need](#projects-in-particular-need) so please check those out @@ -85,10 +54,22 @@ Stuff changes. Found a broken link or something that needs updating on this page ### Projects +{% if page.projects.size > 0 %} {% include contributions-projects-list.html collection=page.projects %} +{% else %} +There are no projects. +{% endif %} ### Projects in Particular Need +{% if page.projectsInNeed.size > 0 %} + The following projects are important to the Scala community but are particularly in need of contributors to continue their development. {% include contributions-projects-list.html collection=page.projectsInNeed %} + +{% else %} + +There are no projects in particular need. + +{% endif %} From b32fe5627023d8c45d20a1fcf20c20ae3e70e7b0 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 14:47:11 +0100 Subject: [PATCH 0387/1704] add new page - Add New Guides/Tutorials --- README.md | 2 +- _contribute_resources/1-documentation.md | 2 +- _overviews/contribute/add-guides.md | 221 ++++++++++++++++++ _overviews/contribute/bug-reporting-guide.md | 2 +- _overviews/contribute/documentation.md | 4 +- _overviews/contribute/guide.md | 2 +- _overviews/contribute/hacker-guide.md | 2 +- _overviews/contribute/partest-guide.md | 2 +- _overviews/contribute/scala-internals.md | 2 +- ...cala-standard-library-api-documentation.md | 2 +- _overviews/contribute/tools.md | 2 +- contribute.md | 179 +------------- 12 files changed, 237 insertions(+), 185 deletions(-) create mode 100644 _overviews/contribute/add-guides.md diff --git a/README.md b/README.md index a6283b2386..ee37fe58d4 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ For more details on the Docker option, see [this issue](https://github.com/scala ## Contributing ## -Please have a look at [https://docs.scala-lang.org/contribute.html](https://docs.scala-lang.org/contribute.html) before making a contribution. +Please have a look at [Add New Guides/Tutorials](https://docs.scala-lang.org/overviews/contribute/add-guides.html) before making a contribution. This document gives an overview of the type of documentation contained within the Scala Documentation repository and the repository's structure. Small changes, or corrected typos will generally be pulled in right away. Large changes, like the addition of new documents, or the rewriting of diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 3e1b81a7b9..7515ff7519 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -3,4 +3,4 @@ title: Documentation link: /overviews/contribute/documentation.html icon: fa fa-book --- -[Scaladoc (API)](/overviews/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](/contribute.html) and [scala-lang.org](https://github.com/scala/scala-lang). +[Scaladoc (API)](/overviews/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](/overviews/contribute/add-guides.html) and [scala-lang.org](https://github.com/scala/scala-lang). diff --git a/_overviews/contribute/add-guides.md b/_overviews/contribute/add-guides.md new file mode 100644 index 0000000000..c8f5e42f0c --- /dev/null +++ b/_overviews/contribute/add-guides.md @@ -0,0 +1,221 @@ +--- +title: Add New Guides/Tutorials +layout: multipage-overview +num: 7 +partof: scala-contribution +overview-name: Contributing to Scala +--- + +## Why Contribute New Learning Material? + +As [Heather Miller writes](/contribute.html), contributing to [docs.scala-lang.org](https://docs.scala-lang.org) is +critical to making Scala accessible to newcomers, experience programmers, and anyone who is curious. +It is also a fantastic way to contribute for anyone who is comfortable using Scala, but maybe does not want to get +involved with complex tools like the compiler. + +## Architecture + +This documentation website is backed by an open-source [github repository](https://github.com/scala/docs.scala-lang), +and is always contribution-ready. + +### Content + +Currently, the _types_ of documentation supported in this repository are: + +- **Guides/Overviews**: Definitive guides/overviews of specific language features. Often long, detailed documents, + often produced by members of the Scala team. An example is the excellent [Collections][collections-overview] overview. +- **Tutorials**: Bite-size, example-rich, and concise articles meant to get a developer up to speed quickly. +- **Cheatsheets**: Quick reference of Scala syntax and behaviors. + +### Implementation + +The website is statically generated from [Markdown](https://en.wikipedia.org/wiki/Markdown) source using +[Jekyll](https://github.com/mojombo/jekyll), and hosted on [GitHub Pages](https://pages.github.com/). +This workflow was chosen so as to make it as easy as possible for core committers and the community alike +to produce HTML documentation, and as easy as possible to publish it in a central location. + +The markdown syntax being used supports [Maruku](https://github.com/bhollis/maruku) extensions, and has automatic +syntax highlighting, without the need for any tags. + +Additionally [mdoc](https://github.com/scalameta/mdoc) is used during pull requests to validate Scala code blocks. +To use this feature you must use the backtick notation as documented by mdoc. Note that only validation is done. +The output files from mdoc are not used in the building of the tutorial. Use `mdoc` or `mdoc:fail` for your code blocks. + +## Submitting Docs + +For one to contribute a document, one must simply +[fork](https://help.github.com/articles/fork-a-repo/) the +[repo](https://github.com/scala/docs.scala-lang), write their article in +[Markdown](https://daringfireball.net/projects/markdown/syntax) (example below), and submit a pull request. That's it. +Likely after some edits and discussion, your document will be made live +on [docs.scala-lang.org](https://docs.scala-lang.org). + + --- + layout: overview + title: My Awesome Title + --- + + ## An h2 Header in Markdown + + And a paragraph, with a [link](https://www.scala-lang.org). + +One can contribute code in a markdown document by either + - indenting it by 4 spaces + - surrounding by triple backticks, as shown below + - in-line by putting backticks around it, e.g. `def foo`. + + ```scala + println("hello") + ``` + +Everything else is automatically generated for you; tables of contents, and most index pages. And of course, the +styling is already taken care of for you. + +### Criteria for Docs to be Accepted + +The goal of this documentation repository is to be tighter and more organized than other community-driven documentation platforms, like wikis. As such, any document pulled in for inclusion on +[docs.scala-lang.org](https://docs.scala-lang.org) must: + +- **"fit in"** to the repository ( _i.e.,_ it should not be a complete duplicate of another article), +- **be polished** it must be thorough, complete, correct, organized, and "article-like" (personal programming notes +don't quite fit.) +- **be maintained** if the document might require revisions from time to time, be prepared to keep it up to date, or +nominate someone to take ownership. + +If you have something you're thinking about contributing, or that you're thinking about writing in order to contribute +-- we'd love to consider it! Please don't hesitate to use GitHub issues and pull requests and the +\#scala-contributors room [on Discord](https://discord.com/invite/scala) for any questions, concerns, +clarifications, etc. + +## Document Templates + +> **Note:** These templates will soon change slightly as a result of necessary refactoring. + +### Guides/Overviews + +A guide or an overview that can be logically placed on **one** page must be placed in the directory +`_overviews/RELEVANT-CATEGORY/_posts` with the file name in the format `YYYY-MM-dd-title-separated-by-dashes.md`, +and header: + + --- + layout: overview + title: YOUR TITLE + --- + +The rest of the document should, of course, be written in [Markdown](https://en.wikipedia.org/wiki/Markdown). + +At the moment, `RELEVANT-CATEGORY` corresponds to only a single category, "core," because we are currently focusing on +building up documentation of core libraries. However, expect more categories here in the future. + +If your document consists of **multiple** pages, like the [Collections][collections-overview] overview, an ordering +must be specified, by numbering documents in their logical order with `num`, and a name must be assigned to the +collection of pages using `partof`. For example, the following header might be used for a document in the collections +overview: + + --- + layout: overview + title: YOUR TITLE + + partof: collections + num: 10 + --- + +A **single** document in the collection must contain a tag in the header, `outof`, that indicates the total number of +documents in the large overview. Putting it on the last page in the overview is often best: + + --- + layout: overview + title: YOUR TITLE + + partof: collections + num: 15 + outof: 15 + --- + +Index pages, such as [docs.scala-lang.org/overviews/index.html](https://docs.scala-lang.org/overviews/index.html) are +generated, by reading data from a configuration file, such as `_data/overviews.yml`, so your overview should be +placed into a category there. + +### Tutorials + +At the moment, tutorials are written the same as Guides/Overviews, except that their link must be added to +the metadata of `/tutorials.md`. e.g. for the [Scala With Maven][scala-with-maven] tutorial, the +metadata of `/tutorials.md` looks like + + --- + layout: inner-page-parent + title: Tutorials + + tutorials: + ... + - title: "Scala with Maven" + url: "/tutorials/scala-with-maven.html" + description: "Create a Scala project with Maven." + icon: code + --- + +For a single-page tutorial, the typical directory to place them in is `_overviews/tutorials`. + +### Cheatsheets + +For now, cheatsheets are assumed to be in the form of tables. To contribute a cheatsheet, one must simply produce their +cheatsheet as a Markdown table, with the following header: + + --- + layout: cheatsheet + title: YOUR TITLE + by: YOUR NAME + about: SOME TEXT ABOUT THE CHEAT SHEET. + --- + +### Code blocks + +The site build process uses [mdoc](https://scalameta.org/mdoc/) to typecheck +code snippets in markdown. This is a great way to ensure the code snippets that +you're including typecheck and are valid. Here are a few quick types to get +started. + +To get started, add `mdoc` after `scala` when you are creating a +code block. The `mdoc` modifier here will make sure that `mdoc` runs the code +snippet and ensures that it's valid. + + ```scala mdoc + val a = 1 + ``` +If you have a snippet that you expect to fail, you can also account for this by +using `mdoc:fail` for a compile error `mdoc:crash` for a runtime-error. + + ```scala mdoc:fail + val b: String = 3 // won't compile + ``` +Keep in mind that a single file is all compiled as a single unit, so you can't +redefine a variable that was defined above in another code snippet. _However_ +there are a couple ways to get around this. Firstly, you can use the `mdoc:nest` +modifier with will wrap the snippet in a `scala.Predef.locally{...}`. This will +essentially "hide" the snippet from the others. Another way around this is to +use the `mdoc:reset` modifier, which _resets_ and forgets about everything up +above. Here is an example using the various modifiers. + + ```scala mdoc + import java.time.Instant + + def now() = Instant.now() + object Foo {} + ``` + + ```scala mdoc:nest + case class Foo(a: Int) // conflicts with Foo above, but it's nested so it's fine + ``` + + ```scala mdoc + val a = s"The time is ${now()}" // still have access to the now method from above + ``` + ```scala mdoc:reset + case class Foo(a: String) // forget the previous Foo's and start fresh + ``` + ```scala mdoc + val myFoo = Foo("hi") // now we only have access to the last Foo + ``` + +[collections-overview]: {% link _overviews/collections-2.13/introduction.md %} +[scala-with-maven]: {% link _overviews/tutorials/scala-with-maven.md %} diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index 9545ecdc53..ac6df525a5 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -1,7 +1,7 @@ --- title: Bug Reporting Guide layout: multipage-overview -num: 7 +num: 8 partof: scala-contribution overview-name: Contributing to Scala --- diff --git a/_overviews/contribute/documentation.md b/_overviews/contribute/documentation.md index 7fca82ff53..417f9b234a 100644 --- a/_overviews/contribute/documentation.md +++ b/_overviews/contribute/documentation.md @@ -44,7 +44,7 @@ without creating an issue, but please look to see if there is an issue already s * SIP (Scala Improvement Process) Proposals and more -Please read [contributing to the docs.scala-lang.org site](/contribute.html) through before embarking on changes. The site uses +Please read [Add New Guides/Tutorials](/overviews/contribute/add-guides.html) through before embarking on changes. The site uses the [Jekyll](https://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. ### Updating scala-lang.org @@ -55,4 +55,4 @@ to Scala and related projects) is provided on the main [scala-lang GitHub project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[docs.scala-lang.org contribution](/contribute.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[Add New Guides/Tutorials](/overviews/contribute/add-guides.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index 5acc188a27..802e3c387c 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -1,7 +1,7 @@ --- title: Contributing guide layout: multipage-overview -num: 9 +num: 10 partof: scala-contribution overview-name: Contributing to Scala --- diff --git a/_overviews/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md index cb83b6218a..f342c98040 100644 --- a/_overviews/contribute/hacker-guide.md +++ b/_overviews/contribute/hacker-guide.md @@ -2,7 +2,7 @@ title: Scala hacker guide by: Eugene Burmako layout: multipage-overview -num: 11 +num: 12 partof: scala-contribution overview-name: Contributing to Scala --- diff --git a/_overviews/contribute/partest-guide.md b/_overviews/contribute/partest-guide.md index 6fb5a2644b..548eb8d5e6 100644 --- a/_overviews/contribute/partest-guide.md +++ b/_overviews/contribute/partest-guide.md @@ -1,7 +1,7 @@ --- title: Running the Test Suite layout: multipage-overview -num: 12 +num: 13 partof: scala-contribution overview-name: Contributing to Scala --- diff --git a/_overviews/contribute/scala-internals.md b/_overviews/contribute/scala-internals.md index ac5be2fd85..5f391947fa 100644 --- a/_overviews/contribute/scala-internals.md +++ b/_overviews/contribute/scala-internals.md @@ -1,7 +1,7 @@ --- title: Scala Contributors Forum layout: multipage-overview -num: 8 +num: 9 partof: scala-contribution overview-name: Contributing to Scala --- diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index ba59855392..99f1bb16e0 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -13,7 +13,7 @@ sometimes referred to as Scaladoc contributions. For contributions to tutorial and guide-style documentation on [docs.scala-lang.org](/), -see the ["doc-site"'s contribution guide](/contribute.html). +see [Add New Guides/Tutorials](/overviews/contribute/add-guides.html). *Please note, these instructions cover documentation contributions Scala core libraries only. For other Scala projects please check those projects for the diff --git a/_overviews/contribute/tools.md b/_overviews/contribute/tools.md index 4ce5a3be0a..875160ca96 100644 --- a/_overviews/contribute/tools.md +++ b/_overviews/contribute/tools.md @@ -1,7 +1,7 @@ --- title: IDE and Build Tool Contributions layout: multipage-overview -num: 10 +num: 11 partof: scala-contribution overview-name: Contributing to Scala diff --git a/contribute.md b/contribute.md index 1abb5e539c..4a7d38faec 100644 --- a/contribute.md +++ b/contribute.md @@ -1,9 +1,9 @@ --- -layout: contribute -title: Contribute +layout: singlepage-overview +title: Why Contribute to docs.scala-lang.org? --- -###### Heather Miller +###### A note from Heather Miller ## A Place to Build Documentation Together @@ -21,175 +21,6 @@ If we want Scala to be accessible to more programmers, clear, easy-to-find docum If you're interested in contributing to the Scala project in general, I argue that one of the most meaningful ways that you can, is to help us improve this transfer of information- let's make it easier and faster for people to _get_ core concepts, and to answer their own questions so they can progress to _Scala-proficient_ quickly. Each line that you contribute has the potential to affect the entire Scala community as a whole-- current, and future. -## About docs.scala-lang.org +## How Can I Contribute? -### Content - -Currently, the _types_ of documentation supported in this repository are: - -- **Guides/Overviews**: Definitive guides/overviews of specific language features. Often long, detailed documents, often produced by members of the Scala team. An example is the excellent [Collections]({{ site.baseurl }}/overviews/collections-2.13/introduction.html) overview. -- **Tutorials**: Bite-size, example-rich, and concise articles meant to get a developer up to speed quickly. -- **Cheatsheets**: Quick reference of Scala syntax and behaviors. - -### Implementation - -This documentation repository is open-source, it lives in [github repository](https://github.com/scala/docs.scala-lang), and is always contribution-ready. - -It's statically generated from [Markdown](https://en.wikipedia.org/wiki/Markdown) source using [Jekyll](https://github.com/mojombo/jekyll), and hosted on [GitHub Pages](https://pages.github.com/). This workflow was chosen so as to make it as easy as possible for core committers and the community alike to produce HTML documentation, and as easy as possible to publish it in a central location. - -The markdown syntax being used supports [Maruku](https://github.com/bhollis/maruku) extensions, and has automatic syntax highlighting, without the need for any tags. - -Additionally [mdoc](https://github.com/scalameta/mdoc) is used during pull requests to validate Scala code blocks. To use this feature you must use the backtick notation as documented by mdoc. Note that only validation is done. The output files from mdoc are not used in the building of the tutorial. Use `mdoc` or `mdoc:fail` for your code blocks. - -## Submitting Docs - -For one to contribute a document, one must simply -[fork](https://help.github.com/articles/fork-a-repo/) the -[repo](https://github.com/scala/docs.scala-lang), write their article in -[Markdown](https://daringfireball.net/projects/markdown/syntax) (example below), and submit a pull request. That's it. Likely after some edits and discussion, your document will be made live on [docs.scala-lang.org](https://docs.scala-lang.org). - - --- - layout: overview - title: My Awesome Title - --- - - ## An h2 Header in Markdown - - And a paragraph, with a [link](https://www.scala-lang.org). - - One can contribute code by indenting it 4 spaces, or in-line by putting backticks around it like so, `def foo` - -Everything else is automatically generated for you; tables of contents, and most index pages. And of course, the styling is already taken care of for you. - -### Criteria for Docs to be Accepted - -The goal of this documentation repository is to be tighter and more organized than other community-driven documentation platforms, like wikis. As such, any document pulled in for inclusion on [https://docs.scala-lang.org](https://docs.scala-lang.org) must: - -- **"fit in"** to the repository ( _i.e.,_ it should not be a complete duplicate of another article), -- **be polished** it must be thorough, complete, correct, organized, and "article-like" (personal programming notes don't quite fit.) -- **be maintained** if the document might require revisions from time to time, it should come with an owner - -If you have something you're thinking about contributing, or that you're thinking about writing in order to contribute-- we'd love to consider it! Please don't hesitate to use GitHub issues and pull requests and the \#scala-contributors room [on Discord](https://discord.com/invite/scala) for any questions, concerns, clarifications, etc. - -## Document Templates - -
    -

    Note: These templates will soon change slightly as a result of necessary refactoring.

    -
    - -### Guides/Overviews - -A guide or an overview that can be logically placed on **one** page must be placed in the directory `overviews/RELEVANT-CATEGORY/_posts` with the file name in the format `YYYY-MM-dd-title-separated-by-dashes.md`, and header: - - --- - layout: overview - title: YOUR TITLE - --- - -The rest of the document should, of course, be written in [Markdown](https://en.wikipedia.org/wiki/Markdown). - -At the moment, `RELEVANT-CATEGORY` corresponds to only a single category, "core," because we are currently focusing on building up documentation of core libraries. However, expect more categories here in the future. - -If your document consists of **multiple** pages, like the [Collections]({{ site.baseurl }}/overviews/collections-2.13/introduction.html) overview, an ordering must be specified, by numbering documents in their logical order with `num`, and a name must be assigned to the collection of pages using `partof`. For example, the following header might be used for a document in the collections overview: - - --- - layout: overview - title: YOUR TITLE - - partof: collections - num: 10 - --- - -A **single** document in the collection must contain a tag in the header, `outof`, that indicates the total number of documents in the large overview. Putting it on the last page in the overview is often best: - - --- - layout: overview - title: YOUR TITLE - - partof: collections - num: 15 - outof: 15 - --- - -Index pages, such as [https://docs.scala-lang.org/overviews/index.html](https://docs.scala-lang.org/overviews/index.html) are automatically generated, assuming documents are properly placed under the correct `RELEVANT-CATEGORY`. So, simply drop your document into the correct folder, and you're done. - -### Tutorials - -At the moment, a tutorial that can be logically placed on **one** page must be placed in the directory `tutorials/` with the file name in the format `title-separated-by-dashes.md`. For the moment, single-page tutorials use the same layout as single-page overviews: - - --- - layout: overview - title: YOUR TITLE - --- - -If you have a **multiple-page** tutorial, like in the case of multiple-page overviews, you must both specify an ordering for your document, and a name must be assigned to the collection of tutorial pages. For example, the following header is used for the [Tour of Scala]({{ site.baseurl }}/tour/tour-of-scala.html) series of tutorial articles: - - --- - layout: inner-page-no-masthead - title: YOUR TITLE - - tutorial: scala-tour - num: 4 - --- - -At the moment, only indexes for multiple-page tutorials are automatically generated. - -### Cheatsheets - -For now, cheatsheets are assumed to be in the form of tables. To contribute a cheatsheet, one must simply produce their cheatsheet as a Markdown table, with the following header: - - --- - layout: cheatsheet - title: YOUR TITLE - by: YOUR NAME - about: SOME TEXT ABOUT THE CHEAT SHEET. - --- - -### Code blocks - -The site build process uses [mdoc](https://scalameta.org/mdoc/) to typecheck -code snippets in markdown. This is a great way to ensure the code snippets that -you're including typecheck and are valid. Here are a few quick types to get -started. - -To get started, you can simply add `mdoc` behind `scala` when you are creating a -code block. The `mdoc` modifier here will make sure that `mdoc` runs the code -snippet and ensures that it's valid. - - ```scala mdoc - val a = 1 - ``` -If you have a snippet that you expect to fail, you can also account for this by -using `mdoc:fail` for a compile error `mdoc:crash` for a runtime-error. - - ```scala mdoc:fail - val b: String = 3 // won't compile - ``` -Keep in mind that a single file is all compiled as a single unit, so you can't -redefine a variable that was defined above in another code snippet. _However_ -there are a couple ways to get around this. Firstly, you can use the `mdoc:nest` -modifier with will wrap the snippet in a `scala.Predef.locally{...}`. This will -essentially "hide" the snippet from the others. Another way around this is to -use the `mdoc:reset` modifier, which _resets_ and forgets about everything up -above. Here is an example using the various modifiers. - - ```scala mdoc - import java.time.Instant - - def now() = Instant.now() - object Foo {} - ``` - - ```scala mdoc:nest - case class Foo(a: Int) // conflicts with Foo above, but it's nested so it's fine - ``` - - ```scala mdoc - val a = s"The time is ${now()}" // still have access to the now method from above - ``` - ```scala mdoc:reset - case class Foo(a: String) // forget the previous Foo's and start fresh - ``` - ```scala mdoc - val myFoo = Foo("hi") // now we only have access to the last Foo - ``` +Please read: [Add New Guides/Tutorials](/overviews/contribute/add-guides.html) From 4b34e7fa4a4a5a972026e91cc3daa76451f3489d Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Mon, 21 Mar 2022 15:19:19 +0100 Subject: [PATCH 0388/1704] integrate guide with the site --- _data/doc-nav-header.yml | 2 ++ _data/nav-header.yml | 7 ++++++- _includes/site-header.html | 2 +- _ja/scala3/contribute-to-docs.md | 4 ++-- _ja/scala3/new-in-scala3.md | 2 +- index.md | 6 +++++- scala3/contribute-to-docs.md | 4 ++-- scala3/guides.md | 2 +- scala3/index.md | 2 +- scala3/new-in-scala3.md | 2 +- 10 files changed, 22 insertions(+), 11 deletions(-) diff --git a/_data/doc-nav-header.yml b/_data/doc-nav-header.yml index a96fdb3d42..9f45227579 100644 --- a/_data/doc-nav-header.yml +++ b/_data/doc-nav-header.yml @@ -35,6 +35,8 @@ url: "/tutorials/FAQ/index.html" - title: Language Specification url: http://scala-lang.org/files/archive/spec/2.13/ + - title: Contribution Guide + url: "/overviews/contribute/" - title: Style Guide url: "/style/index.html" - title: Cheatsheet diff --git a/_data/nav-header.yml b/_data/nav-header.yml index 26bd280020..a9d2f9ab38 100644 --- a/_data/nav-header.yml +++ b/_data/nav-header.yml @@ -1,12 +1,17 @@ - title: Documentation url: "/" + can-highlight: true - title: Download url: https://www.scala-lang.org/download/ + can-highlight: true - title: Community url: https://www.scala-lang.org/community/ + can-highlight: true - title: Libraries url: https://index.scala-lang.org + can-highlight: true - title: Contribute - url: https://www.scala-lang.org/contribute/ + url: /overviews/contribute/ - title: Blog url: https://www.scala-lang.org/blog/ + can-highlight: true diff --git a/_includes/site-header.html b/_includes/site-header.html index 31f2bc2a38..70f1cb6840 100644 --- a/_includes/site-header.html +++ b/_includes/site-header.html @@ -10,7 +10,7 @@ diff --git a/_ja/scala3/contribute-to-docs.md b/_ja/scala3/contribute-to-docs.md index 2902ff1d2a..c13b4b0904 100644 --- a/_ja/scala3/contribute-to-docs.md +++ b/_ja/scala3/contribute-to-docs.md @@ -45,8 +45,8 @@ Scala 3 の高品質なドキュメンテーションを作るためのいくつ - [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-migration) - [Issues](https://github.com/scalacenter/docs.scala-lang/issues) -## Scala 3 Contribution Guide -[Scala 3 Contribution Guide](/scala3/guides/contribution/contribution-intro.html) +## Scala 3 Contributing Guide +[Scala 3 Contributing Guide](/scala3/guides/contribution/contribution-intro.html) Scala 3 コンパイラとライブラリへの貢献と内部に関する包括的な概要が含まれています - [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-contribution) diff --git a/_ja/scala3/new-in-scala3.md b/_ja/scala3/new-in-scala3.md index eea8ee14ca..8e69859268 100644 --- a/_ja/scala3/new-in-scala3.md +++ b/_ja/scala3/new-in-scala3.md @@ -13,7 +13,7 @@ Scala 3 は Scala 2 から大幅な改善が行われ、さまざまな新機能 - [Syntax Summary][syntax-summary] では Scala 3 で新しく追加されたシンタックスを解説している。 - [Language Reference][reference] を見ればScala 2 と Scala 3 の変更点を詳しく確認できる。 - Scala 2 から Scala 3 への移行を考えている方は[Migration Guide][migration] を参照。 -- [Contribution Guide][contribution] は、問題を修正するためのガイドを含め、コンパイラーをさらに深く掘り下げます。 +- [Scala 3 Contributing Guide][contribution] は、問題を修正するためのガイドを含め、コンパイラーをさらに深く掘り下げます。 ## What's new in Scala 3 Scala 3 は Scala 2 を徹底的に見直して再設計されている。核心部分で、型システムの多くの面が変更されより原理原則に基づいたものになった。この変更によって新機能(ユニオン型)が使えるようになったことにくわえて、なにより型システムがさらに使いやすくなった。 例えば、[型推論][type-inference] や overload resolution が改善された. diff --git a/index.md b/index.md index 7e778ec83c..aacc00e221 100644 --- a/index.md +++ b/index.md @@ -40,7 +40,7 @@ scala3-sections: description: "The Scala 3 language reference." icon: "fa fa-book" link: /scala3/reference/overview.html - - title: "Contribution Guide" + - title: "Scala 3 Contributing Guide" description: "Guide to the Scala 3 Compiler and fixing an issue" icon: "fa fa-cogs" link: /scala3/guides/contribution/contribution-intro.html @@ -118,4 +118,8 @@ scala2-sections: description: "The Scala Improvement Process. Language & compiler evolution." icon: "fa fa-cogs" link: /sips/index.html + - title: "Contributing to Scala" + description: "The Complete Guide to Contributing to the Scala Project" + icon: "fa fa-cogs" + link: /overviews/contribute/ --- diff --git a/scala3/contribute-to-docs.md b/scala3/contribute-to-docs.md index 5a2a336440..d39ba71ec4 100644 --- a/scala3/contribute-to-docs.md +++ b/scala3/contribute-to-docs.md @@ -45,8 +45,8 @@ a tour presenting the migration tools, and detailed migration guides. - [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-migration) - [Issues](https://github.com/scala/docs.scala-lang/issues) -## Scala 3 Contribution Guide -The [Scala 3 Contribution Guide](/scala3/guides/contribution/contribution-intro.html) +## Scala 3 Contributing Guide +The [Scala 3 Contributing Guide](/scala3/guides/contribution/contribution-intro.html) contains a comprehensive overview over contribution to and internals of the Scala 3 compiler and libraries - [Source](https://github.com/scala/docs.scala-lang/tree/main/_overviews/scala3-contribution) diff --git a/scala3/guides.md b/scala3/guides.md index 812cedb611..26110b10ba 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -18,7 +18,7 @@ guides: icon: birthday-cake url: "/scala3/guides/tasty-overview.html" description: "An overview over the TASTy format aimed at end-users of the Scala language." - - title: "Contribution Guide" + - title: "Scala 3 Contributing Guide" by: Jamie Thompson, Anatolii Kmetiuk icon: cogs url: "/scala3/guides/contribution/contribution-intro.html" diff --git a/scala3/index.md b/scala3/index.md index 7c741fd931..a34c19a1ca 100644 --- a/scala3/index.md +++ b/scala3/index.md @@ -40,7 +40,7 @@ sections: description: "The Scala 3 language reference." icon: "fa fa-book" link: /scala3/reference/overview.html - - title: "Contribution Guide" + - title: "Scala 3 Contributing Guide" description: "Guide to the Scala 3 Compiler and fixing an issue" icon: "fa fa-cogs" link: /scala3/guides/contribution/contribution-intro.html diff --git a/scala3/new-in-scala3.md b/scala3/new-in-scala3.md index 9a1e9da872..af6d6111c1 100644 --- a/scala3/new-in-scala3.md +++ b/scala3/new-in-scala3.md @@ -11,7 +11,7 @@ changes. If you want to dig deeper, there are a few references at your disposal: - The [Syntax Summary][syntax-summary] provides you with a formal description of the new syntax. - The [Language Reference][reference] gives a detailed description of the changes from Scala 2 to Scala 3. - The [Migration Guide][migration] provides you with all of the information necessary to move from Scala 2 to Scala 3. -- The [Contribution Guide][contribution] dives deeper into the compiler, including a guide to fix issues. +- The [Scala 3 Contributing Guide][contribution] dives deeper into the compiler, including a guide to fix issues. ## What's new in Scala 3 Scala 3 is a complete overhaul of the Scala language. At its core, many aspects From aa00e9cd6626ada8738267b9fb8a50f5378dfe0c Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 21 Mar 2022 12:17:23 -0500 Subject: [PATCH 0389/1704] update status of JDK 8 also change AdoptOpenJDK->Temurin also move some GraalVM text to a more appropriate location --- _overviews/jdk-compatibility/overview.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 9eb850a77f..c00fd2f05f 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -26,13 +26,11 @@ Lightbend offers [commercial support](https://www.lightbend.com/lightbend-platfo ## Running versus compiling -JDK 8, 11, and 17 are all good choices both for *compiling* and *running* Scala code. +JDK 8, 11, and 17 are all reasonable choices both for *compiling* and *running* Scala code. Since the JVM is normally backwards compatible, it is usually safe to use a newer JVM for *running* your code than the one it was compiled on, especially if you are not using JVM features designated "experimental" or "unsafe". -If you compile on JDK 11+ but have users on an older JDK version, additional care is needed to avoid using APIs and features that don't exist in 8. Therefore, *compiling* on 8 may be the safest choice in this scenario. (Some Scala developers use JDK 11 or 17 for their daily work, but do release builds on JDK 8.) - -Additionally, you can also run your Scala application on GraalVM which is a JVM. GraalVM performs well on the Scala benchmarks, and it benefits from GraalVM runtime and runs faster too. +JDK 8 remains in use at many shops (as of early 2022), but usage is declining and some projects are dropping support. If you compile on JDK 11+ but want to allow your users to stay on 8, additional care is needed to avoid using APIs and features that don't exist in 8. (For this reason, some Scala developers use JDK 11 or 17 for their daily work but do release builds on JDK 8.) ## Long Term Support (LTS) versions @@ -50,9 +48,9 @@ In almost every case, you're free to use the JDK and JVM of your choice. JDK 8 users typically use the Oracle JDK or some flavor of OpenJDK. -Most JDK 11+ users are using either OpenJDK or GraalVM which runs in the context of OpenJDK. +Most JDK 11+ users are using OpenJDK, or GraalVM which runs in the context of OpenJDK. GraalVM performs well on the Scala benchmarks, and it benefits from GraalVM runtime and runs faster too. -OpenJDK comes in various flavors, offered by different providers. We build and test Scala using [AdoptOpenJDK](https://adoptopenjdk.net) in particular, but the differences are unlikely to matter to most users. +OpenJDK comes in various flavors, offered by different providers. We build and test Scala using [Temurin](https://adoptium.net) primarily, but the differences are unlikely to matter to most users. ## JDK 11 compatibility notes From 302bfbff1dc497bd07acaf9c5596ec94f8d50aa0 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 22 Mar 2022 16:00:44 +0100 Subject: [PATCH 0390/1704] revert to /contribute/ urls --- README.md | 2 +- _config.yml | 8 +++++ _contribute_resources/1-documentation.md | 4 +-- _contribute_resources/2-bug-fixes.md | 4 +-- _contribute_resources/3-code-reviews.md | 2 +- _contribute_resources/4-core-libraries.md | 2 +- .../5-ide-and-build-tools.md | 2 +- _contribute_resources/6-compiler-language.md | 2 +- _data/doc-nav-header.yml | 2 +- _data/nav-header.yml | 2 +- _overviews/contribute/add-guides.md | 3 -- _overviews/contribute/bug-reporting-guide.md | 3 -- _overviews/contribute/codereviews.md | 7 ++--- _overviews/contribute/corelibs.md | 9 ++---- _overviews/contribute/documentation.md | 13 +++----- _overviews/contribute/guide.md | 31 +++++++++---------- _overviews/contribute/hacker-guide.md | 5 +-- .../contribute/inclusive-language-guide.md | 3 -- _overviews/contribute/index.md | 7 ++--- _overviews/contribute/partest-guide.md | 3 -- _overviews/contribute/scala-internals.md | 3 -- ...cala-standard-library-api-documentation.md | 7 ++--- _overviews/contribute/tools.md | 7 ++--- contribute.md | 2 +- index.md | 2 +- 25 files changed, 52 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index ee37fe58d4..fe377e9f6b 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ For more details on the Docker option, see [this issue](https://github.com/scala ## Contributing ## -Please have a look at [Add New Guides/Tutorials](https://docs.scala-lang.org/overviews/contribute/add-guides.html) before making a contribution. +Please have a look at [Add New Guides/Tutorials](https://docs.scala-lang.org/contribute/add-guides.html) before making a contribution. This document gives an overview of the type of documentation contained within the Scala Documentation repository and the repository's structure. Small changes, or corrected typos will generally be pulled in right away. Large changes, like the addition of new documents, or the rewriting of diff --git a/_config.yml b/_config.yml index 0d58e58a8f..43f6dfd536 100644 --- a/_config.yml +++ b/_config.yml @@ -105,6 +105,14 @@ defaults: overview-name: "Scala 3 — Book" layout: multipage-overview permalink: "/scala3/book/:title.html" + - + scope: + path: "_overviews/contribute" + values: + partof: scala-contribution + overview-name: Contributing to Scala + layout: multipage-overview + permalink: "/contribute/:title.html" - scope: path: "_overviews/scala3-migration" diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 7515ff7519..474bea075f 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -1,6 +1,6 @@ --- title: Documentation -link: /overviews/contribute/documentation.html +link: /contribute/documentation.html icon: fa fa-book --- -[Scaladoc (API)](/overviews/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](/overviews/contribute/add-guides.html) and [scala-lang.org](https://github.com/scala/scala-lang). +[Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](/contribute/add-guides.html) and [scala-lang.org](https://github.com/scala/scala-lang). diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md index 2baf672e5a..54e6d2cf9d 100644 --- a/_contribute_resources/2-bug-fixes.md +++ b/_contribute_resources/2-bug-fixes.md @@ -1,6 +1,6 @@ --- title: Bug fixes -link: /overviews/contribute/guide.html +link: /contribute/guide.html icon: fa fa-bug --- -Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/overviews/contribute/bug-reporting-guide.html). +Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide.html). diff --git a/_contribute_resources/3-code-reviews.md b/_contribute_resources/3-code-reviews.md index e6f15e271c..e03305beb5 100644 --- a/_contribute_resources/3-code-reviews.md +++ b/_contribute_resources/3-code-reviews.md @@ -1,6 +1,6 @@ --- title: Code Reviews -link: /overviews/contribute/codereviews.html +link: /contribute/codereviews.html icon: fa fa-eye --- Review pull requests against [scala/scala](https://github.com/scala/scala/pulls), diff --git a/_contribute_resources/4-core-libraries.md b/_contribute_resources/4-core-libraries.md index fb66a906b8..06f1018479 100644 --- a/_contribute_resources/4-core-libraries.md +++ b/_contribute_resources/4-core-libraries.md @@ -1,6 +1,6 @@ --- title: Core Libraries -link: /overviews/contribute/corelibs.html +link: /contribute/corelibs.html icon: fa fa-clipboard --- Update and expand the capabilities of the core (and associated) Scala libraries. diff --git a/_contribute_resources/5-ide-and-build-tools.md b/_contribute_resources/5-ide-and-build-tools.md index 2bf2c7d729..7202f0d953 100644 --- a/_contribute_resources/5-ide-and-build-tools.md +++ b/_contribute_resources/5-ide-and-build-tools.md @@ -1,6 +1,6 @@ --- title: IDE and Build Tools -link: /overviews/contribute/tools.html +link: /contribute/tools.html icon: fa fa-terminal --- Enhance the Scala tools with features for build tools, IDE plug-ins and other related projects. diff --git a/_contribute_resources/6-compiler-language.md b/_contribute_resources/6-compiler-language.md index a7dc618322..d54e34fac9 100644 --- a/_contribute_resources/6-compiler-language.md +++ b/_contribute_resources/6-compiler-language.md @@ -1,6 +1,6 @@ --- title: Compiler/Language -link: /overviews/contribute/guide.html#larger-changes-new-features +link: /contribute/guide.html#larger-changes-new-features icon: fa fa-cogs --- Larger language features and compiler enhancements including language specification and SIPs. diff --git a/_data/doc-nav-header.yml b/_data/doc-nav-header.yml index 9f45227579..52b66be1da 100644 --- a/_data/doc-nav-header.yml +++ b/_data/doc-nav-header.yml @@ -36,7 +36,7 @@ - title: Language Specification url: http://scala-lang.org/files/archive/spec/2.13/ - title: Contribution Guide - url: "/overviews/contribute/" + url: "/contribute/" - title: Style Guide url: "/style/index.html" - title: Cheatsheet diff --git a/_data/nav-header.yml b/_data/nav-header.yml index a9d2f9ab38..03621e6d64 100644 --- a/_data/nav-header.yml +++ b/_data/nav-header.yml @@ -11,7 +11,7 @@ url: https://index.scala-lang.org can-highlight: true - title: Contribute - url: /overviews/contribute/ + url: /contribute/ - title: Blog url: https://www.scala-lang.org/blog/ can-highlight: true diff --git a/_overviews/contribute/add-guides.md b/_overviews/contribute/add-guides.md index c8f5e42f0c..8e638021d2 100644 --- a/_overviews/contribute/add-guides.md +++ b/_overviews/contribute/add-guides.md @@ -1,9 +1,6 @@ --- title: Add New Guides/Tutorials -layout: multipage-overview num: 7 -partof: scala-contribution -overview-name: Contributing to Scala --- ## Why Contribute New Learning Material? diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index ac6df525a5..e2637ccd09 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -1,9 +1,6 @@ --- title: Bug Reporting Guide -layout: multipage-overview num: 8 -partof: scala-contribution -overview-name: Contributing to Scala --- The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug), and for Scala 3, it is located at [github.com/lampepfl/dotty](https://github.com/lampepfl/dotty/issues). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. diff --git a/_overviews/contribute/codereviews.md b/_overviews/contribute/codereviews.md index e7dea2acea..6325fcde6c 100644 --- a/_overviews/contribute/codereviews.md +++ b/_overviews/contribute/codereviews.md @@ -1,13 +1,10 @@ --- title: Code Review Contributions -layout: multipage-overview num: 3 -partof: scala-contribution -overview-name: Contributing to Scala --- ## Code Review Contributions -In addition to [bug fixing](/overviews/contribute/guide.html), you can help us review +In addition to [bug fixing](/contribute/guide.html), you can help us review [waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your @@ -57,4 +54,4 @@ own pull requests. -Also note that the [Tools contributions](/overviews/contribute/tools.html) page has more projects that will generate pull requests. +Also note that the [Tools contributions](/contribute/tools.html) page has more projects that will generate pull requests. diff --git a/_overviews/contribute/corelibs.md b/_overviews/contribute/corelibs.md index 6c64a887d7..3ee05e6c13 100644 --- a/_overviews/contribute/corelibs.md +++ b/_overviews/contribute/corelibs.md @@ -1,17 +1,14 @@ --- title: Core Library Contributions -layout: multipage-overview num: 4 -partof: scala-contribution -overview-name: Contributing to Scala --- ## Core Library Contributions There are several options for contributing to Scala's core libraries. You can: -* Help with [Documentation](/overviews/contribute/documentation.html). -* [Report Bugs or Issues](/overviews/contribute/bug-reporting-guide.html) against the core libraries. -* [Fix Bugs or Issues](/overviews/contribute/guide.html) against the +* Help with [Documentation](/contribute/documentation.html). +* [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. +* [Fix Bugs or Issues](/contribute/guide.html) against the [reported library bugs/issues](https://github.com/scala/bug). ### Significant changes diff --git a/_overviews/contribute/documentation.md b/_overviews/contribute/documentation.md index 417f9b234a..3d3311dbce 100644 --- a/_overviews/contribute/documentation.md +++ b/_overviews/contribute/documentation.md @@ -1,9 +1,6 @@ --- title: Documentation Contributions -layout: multipage-overview num: 5 -partof: scala-contribution -overview-name: Contributing to Scala --- ## Contributing Documentation to the Scala project @@ -23,11 +20,11 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](/overviews/contribute/scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - Please *follow the issue submission process closely* to help prevent duplicate issues being created. -* [Claim Scaladoc Issues and Provide Documentation](/overviews/contribute/scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. +* [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just -[submit new Scaladoc](/overviews/contribute/scala-standard-library-api-documentation.html) +[submit new Scaladoc](/contribute/scala-standard-library-api-documentation.html) without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on [Scala Contributors](https://contributors.scala-lang.org/) so that people know what you are doing. ### The Main Scala Documentation Site @@ -44,7 +41,7 @@ without creating an issue, but please look to see if there is an issue already s * SIP (Scala Improvement Process) Proposals and more -Please read [Add New Guides/Tutorials](/overviews/contribute/add-guides.html) through before embarking on changes. The site uses +Please read [Add New Guides/Tutorials](/contribute/add-guides.html) through before embarking on changes. The site uses the [Jekyll](https://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. ### Updating scala-lang.org @@ -55,4 +52,4 @@ to Scala and related projects) is provided on the main [scala-lang GitHub project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[Add New Guides/Tutorials](/overviews/contribute/add-guides.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[Add New Guides/Tutorials](/contribute/add-guides.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index 802e3c387c..70d470d454 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -1,9 +1,6 @@ --- title: Contributing guide -layout: multipage-overview num: 10 -partof: scala-contribution -overview-name: Contributing to Scala --- | **Shortcut** | **Description** | @@ -41,19 +38,19 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [GitHub branch](https://github.com/scala/scala) -1. [Select a bug to fix from GitHub](/overviews/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/overviews/contribute/bug-reporting-guide.html) (but please -[make sure it's not a duplicate](/overviews/contribute/bug-reporting-guide.html#please-check-before-reporting-a-bug)). -2. Optional ([but recommended](/overviews/contribute/scala-internals.html/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with -[these friendly people](/overviews/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. -3. [Fork the Scala repository](/overviews/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). -4. [Create a feature branch](/overviews/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. -5. [Fix the bug, or implement the new small feature](/overviews/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). -6. [Test, rinse](/overviews/contribute/hacker-guide.html#test) and [test some more](/overviews/contribute/partest-guide.html) until [all the tests pass](/overviews/contribute/hacker-guide.html#verify). -7. [Commit your changes](/overviews/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. +1. [Select a bug to fix from GitHub](/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/contribute/bug-reporting-guide.html) (but please +[make sure it's not a duplicate](/contribute/bug-reporting-guide.html#please-check-before-reporting-a-bug)). +2. Optional ([but recommended](/contribute/scala-internals.html/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with +[these friendly people](/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. +3. [Fork the Scala repository](/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). +4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. +5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). +6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide.html) until [all the tests pass](/contribute/hacker-guide.html#verify). +7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](https://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) -9. [Submit a pull request](/overviews/contribute/hacker-guide.html#submit). -10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/overviews/contribute/hacker-guide.html#review). +9. [Submit a pull request](/contribute/hacker-guide.html#submit). +10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide.html#review). 11. Celebrate! Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide][hackers] (or the [equivalent Scala 3 Contributing Guide][scala3-hackers]) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). @@ -67,8 +64,8 @@ on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list a Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against the Scala project source tree. The hacker's guides ([Scala 2][hackers], or [Scala 3][scala3-hackers]) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. -[hackers]: /overviews/contribute/hacker-guide.html -[community-tickets]: /overviews/contribute/index.html#community-tickets -[bug-reporting-guide]: /overviews/contribute/bug-reporting-guide.html +[hackers]: /contribute/hacker-guide.html +[community-tickets]: /contribute/index.html#community-tickets +[bug-reporting-guide]: /contribute/bug-reporting-guide.html [scala3-hackers]: {% link _overviews/scala3-contribution/procedures-intro.md %} [contrib-forum]: https://contributors.scala-lang.org/ diff --git a/_overviews/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md index f342c98040..f9db614056 100644 --- a/_overviews/contribute/hacker-guide.md +++ b/_overviews/contribute/hacker-guide.md @@ -1,10 +1,7 @@ --- title: Scala hacker guide by: Eugene Burmako -layout: multipage-overview num: 12 -partof: scala-contribution -overview-name: Contributing to Scala ---
    This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. @@ -310,7 +307,7 @@ This means your change is backward or forward binary incompatible with the speci ### Verify -Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest](/overviews/contribute/partest-guide.html), a tool we wrote for testing Scala. +Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest](/contribute/partest-guide.html), a tool we wrote for testing Scala. Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, respectively. `partest` (not `sbt partest`) also allows you to run a subset of the tests using wildcards: diff --git a/_overviews/contribute/inclusive-language-guide.md b/_overviews/contribute/inclusive-language-guide.md index 7f7c428f42..375d988158 100644 --- a/_overviews/contribute/inclusive-language-guide.md +++ b/_overviews/contribute/inclusive-language-guide.md @@ -1,9 +1,6 @@ --- title: Inclusive Language Guide -layout: multipage-overview num: 2 -partof: scala-contribution -overview-name: Contributing to Scala --- We are committed to providing a friendly, safe and welcoming environment for diff --git a/_overviews/contribute/index.md b/_overviews/contribute/index.md index b89f04803a..eb0596d802 100644 --- a/_overviews/contribute/index.md +++ b/_overviews/contribute/index.md @@ -1,9 +1,6 @@ --- title: Contribute -layout: multipage-overview num: 1 -partof: scala-contribution -overview-name: Contributing to Scala --- The Scala programming language is an open source project with a very @@ -18,7 +15,7 @@ That depends on what you want to contribute. Below are some getting started reso ### Reporting bugs -See our [bug reporting guide](/overviews/contribute/bug-reporting-guide.html) to learn +See our [bug reporting guide](/contribute/bug-reporting-guide.html) to learn how to efficiently report a bug. ### Contribute @@ -33,7 +30,7 @@ Coordination of contribution efforts takes place on When contributing, please follow: * The [Scala Code of Conduct](https://scala-lang.org/conduct/) -* The [Inclusive Language Guide](/overviews/contribute/inclusive-language-guide.html) +* The [Inclusive Language Guide](/contribute/inclusive-language-guide.html) ### Community Tickets diff --git a/_overviews/contribute/partest-guide.md b/_overviews/contribute/partest-guide.md index 548eb8d5e6..c3e6980b06 100644 --- a/_overviews/contribute/partest-guide.md +++ b/_overviews/contribute/partest-guide.md @@ -1,9 +1,6 @@ --- title: Running the Test Suite -layout: multipage-overview num: 13 -partof: scala-contribution -overview-name: Contributing to Scala --- Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go to the scala project folder from your local checkout and run it via `sbt`, `ant` or standalone as follows. diff --git a/_overviews/contribute/scala-internals.md b/_overviews/contribute/scala-internals.md index 5f391947fa..f3b1de54de 100644 --- a/_overviews/contribute/scala-internals.md +++ b/_overviews/contribute/scala-internals.md @@ -1,9 +1,6 @@ --- title: Scala Contributors Forum -layout: multipage-overview num: 9 -partof: scala-contribution -overview-name: Contributing to Scala --- The [Scala Contributors Forum][scala-contributors] is where discussions about the Scala ecosystem diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index 99f1bb16e0..606407f886 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -1,9 +1,6 @@ --- title: Contribute to API Documentation -layout: multipage-overview num: 6 -partof: scala-contribution -overview-name: Contributing to Scala --- This page is specific to API documentation contributions – that is, API @@ -13,7 +10,7 @@ sometimes referred to as Scaladoc contributions. For contributions to tutorial and guide-style documentation on [docs.scala-lang.org](/), -see [Add New Guides/Tutorials](/overviews/contribute/add-guides.html). +see [Add New Guides/Tutorials](/contribute/add-guides.html). *Please note, these instructions cover documentation contributions Scala core libraries only. For other Scala projects please check those projects for the @@ -79,7 +76,7 @@ component so that they show up in the correct issue filters. Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. -* [Forking the Repo](/overviews/contribute/hacker-guide.html#2-set-up) - follow the setup steps through +* [Forking the Repo](/contribute/hacker-guide.html#2-set-up) - follow the setup steps through the Branch section. If providing new documentation related to an existing GitHub issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated GitHub issue, use `scaladoc/xxxx` instead. diff --git a/_overviews/contribute/tools.md b/_overviews/contribute/tools.md index 875160ca96..68cee7796f 100644 --- a/_overviews/contribute/tools.md +++ b/_overviews/contribute/tools.md @@ -1,9 +1,6 @@ --- title: IDE and Build Tool Contributions -layout: multipage-overview num: 11 -partof: scala-contribution -overview-name: Contributing to Scala # Projects list: projects: @@ -22,7 +19,7 @@ projects: homeLink: https://www.scala-lang.org/api issuesLink: https://github.com/scala/bug/labels/scaladoc readmeLink: https://github.com/scala/scala#welcome - contributingLink: /overviews/contribute/guide.html + contributingLink: /contribute/guide.html - title: Partest description: Scala Compiler/Library Testing (Contribute through scala/scala) icon: https://avatars1.githubusercontent.com/u/57059?v=3&s=200 @@ -50,7 +47,7 @@ if you would like to help revive them. ### Broken Links? -Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/overviews/contribute/documentation.html#updating-scala-langorg) to fix it. +Stuff changes. Found a broken link or something that needs updating on this page? Please, consider [submitting a documentation pull request](/contribute/documentation.html#updating-scala-langorg) to fix it. ### Projects diff --git a/contribute.md b/contribute.md index 4a7d38faec..02a8e4b8d7 100644 --- a/contribute.md +++ b/contribute.md @@ -23,4 +23,4 @@ If you're interested in contributing to the Scala project in general, I argue th ## How Can I Contribute? -Please read: [Add New Guides/Tutorials](/overviews/contribute/add-guides.html) +Please read: [Add New Guides/Tutorials](/contribute/add-guides.html) diff --git a/index.md b/index.md index aacc00e221..5790ce8b7c 100644 --- a/index.md +++ b/index.md @@ -121,5 +121,5 @@ scala2-sections: - title: "Contributing to Scala" description: "The Complete Guide to Contributing to the Scala Project" icon: "fa fa-cogs" - link: /overviews/contribute/ + link: /contribute/ --- From 573e494856dd4138c155d7e6dbb7492b2e21ad28 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 22 Mar 2022 16:59:40 +0100 Subject: [PATCH 0391/1704] use jekyll link tag to render internal links --- _contribute_resources/1-documentation.md | 5 ++- _contribute_resources/2-bug-fixes.md | 4 +- _includes/column-list-of-items.html | 2 +- _overviews/contribute/add-guides.md | 11 +++-- _overviews/contribute/bug-reporting-guide.md | 4 +- _overviews/contribute/codereviews.md | 7 ++- _overviews/contribute/corelibs.md | 10 +++-- _overviews/contribute/documentation.md | 17 +++++--- _overviews/contribute/guide.md | 43 ++++++++++++------- _overviews/contribute/hacker-guide.md | 12 ++++-- _overviews/contribute/index.md | 7 ++- ...cala-standard-library-api-documentation.md | 16 ++++--- 12 files changed, 94 insertions(+), 44 deletions(-) diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 474bea075f..1f42a6e20b 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -3,4 +3,7 @@ title: Documentation link: /contribute/documentation.html icon: fa fa-book --- -[Scaladoc (API)](/contribute/scala-standard-library-api-documentation.html), [docs.scala-lang.org](/contribute/add-guides.html) and [scala-lang.org](https://github.com/scala/scala-lang). +[Scaladoc (API)][scala-standard-library-api-documentation], [docs.scala-lang.org][add-guides] and [scala-lang.org](https://github.com/scala/scala-lang). + +[add-guides]: {% link _overviews/contribute/add-guides.md %} +[scala-standard-library-api-documentation]: {% link _overviews/contribute/scala-standard-library-api-documentation.md %} diff --git a/_contribute_resources/2-bug-fixes.md b/_contribute_resources/2-bug-fixes.md index 54e6d2cf9d..7026e7e15b 100644 --- a/_contribute_resources/2-bug-fixes.md +++ b/_contribute_resources/2-bug-fixes.md @@ -3,4 +3,6 @@ title: Bug fixes link: /contribute/guide.html icon: fa fa-bug --- -Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs](/contribute/bug-reporting-guide.html). +Issues with the tools, core libraries and compiler. Also you can help us by [reporting bugs][bug-reporting-guide]. + +[bug-reporting-guide]: {% link _overviews/contribute/bug-reporting-guide.md %} diff --git a/_includes/column-list-of-items.html b/_includes/column-list-of-items.html index eb9e1600be..2ce303e678 100644 --- a/_includes/column-list-of-items.html +++ b/_includes/column-list-of-items.html @@ -15,4 +15,4 @@

    {{item.title}}

    {% endfor %} - \ No newline at end of file + diff --git a/_overviews/contribute/add-guides.md b/_overviews/contribute/add-guides.md index 8e638021d2..96091fb311 100644 --- a/_overviews/contribute/add-guides.md +++ b/_overviews/contribute/add-guides.md @@ -5,7 +5,7 @@ num: 7 ## Why Contribute New Learning Material? -As [Heather Miller writes](/contribute.html), contributing to [docs.scala-lang.org](https://docs.scala-lang.org) is +As [Heather Miller writes][why-contribute], contributing to [docs.scala-lang.org][home] is critical to making Scala accessible to newcomers, experience programmers, and anyone who is curious. It is also a fantastic way to contribute for anyone who is comfortable using Scala, but maybe does not want to get involved with complex tools like the compiler. @@ -45,7 +45,7 @@ For one to contribute a document, one must simply [repo](https://github.com/scala/docs.scala-lang), write their article in [Markdown](https://daringfireball.net/projects/markdown/syntax) (example below), and submit a pull request. That's it. Likely after some edits and discussion, your document will be made live -on [docs.scala-lang.org](https://docs.scala-lang.org). +on [docs.scala-lang.org][home]. --- layout: overview @@ -71,7 +71,7 @@ styling is already taken care of for you. ### Criteria for Docs to be Accepted The goal of this documentation repository is to be tighter and more organized than other community-driven documentation platforms, like wikis. As such, any document pulled in for inclusion on -[docs.scala-lang.org](https://docs.scala-lang.org) must: +[docs.scala-lang.org][home] must: - **"fit in"** to the repository ( _i.e.,_ it should not be a complete duplicate of another article), - **be polished** it must be thorough, complete, correct, organized, and "article-like" (personal programming notes @@ -129,7 +129,7 @@ documents in the large overview. Putting it on the last page in the overview is outof: 15 --- -Index pages, such as [docs.scala-lang.org/overviews/index.html](https://docs.scala-lang.org/overviews/index.html) are +Index pages, such as [docs.scala-lang.org/overviews/index.html][overviews-index] are generated, by reading data from a configuration file, such as `_data/overviews.yml`, so your overview should be placed into a category there. @@ -216,3 +216,6 @@ above. Here is an example using the various modifiers. [collections-overview]: {% link _overviews/collections-2.13/introduction.md %} [scala-with-maven]: {% link _overviews/tutorials/scala-with-maven.md %} +[why-contribute]: {% link contribute.md %} +[home]: {% link index.md %} +[overviews-index]: {% link _overviews/index.md %} diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index e2637ccd09..91858d589c 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -41,7 +41,7 @@ If you have a code snippet that is resulting in bytecode which you believe is be 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. -* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](https://docs.scala-lang.org/sips/) or in the [Scala Language Specification](https://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents][sips] or in the [Scala Language Specification](https://www.scala-lang.org/files/archive/spec/2.13/). If in doubt, you may always ask on the [Community Category](https://contributors.scala-lang.org/c/community) or [Stack Overflow](https://stackoverflow.com/questions/tagged/scala). In general, if you find yourself stuck on any of these steps, asking on [Scala Contributors](https://contributors.scala-lang.org/) can be helpful: @@ -85,3 +85,5 @@ List(1, 2, 3).map(x => x + 1) 3. The actual output, including the stacktrace. 4. Related discussion on the mailing lists, if applicable. 5. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. + +[sips]: {% link _sips/index.md %} diff --git a/_overviews/contribute/codereviews.md b/_overviews/contribute/codereviews.md index 6325fcde6c..be8e66ba46 100644 --- a/_overviews/contribute/codereviews.md +++ b/_overviews/contribute/codereviews.md @@ -4,7 +4,7 @@ num: 3 --- ## Code Review Contributions -In addition to [bug fixing](/contribute/guide.html), you can help us review +In addition to [bug fixing][bug-fixing], you can help us review [waiting pull requests](#pull-requests-awaiting-comment). This is also a good (and recommended) way to get to know the feel of the bug-fixing and submissions process before jumping in with your @@ -54,4 +54,7 @@ own pull requests. -Also note that the [Tools contributions](/contribute/tools.html) page has more projects that will generate pull requests. +Also note that the [Tools contributions][tools] page has more projects that will generate pull requests. + +[bug-fixing]: {% link _overviews/contribute/guide.md %} +[tools]: {% link _overviews/contribute/tools.md %} diff --git a/_overviews/contribute/corelibs.md b/_overviews/contribute/corelibs.md index 3ee05e6c13..1eb2f840b0 100644 --- a/_overviews/contribute/corelibs.md +++ b/_overviews/contribute/corelibs.md @@ -6,12 +6,16 @@ num: 4 There are several options for contributing to Scala's core libraries. You can: -* Help with [Documentation](/contribute/documentation.html). -* [Report Bugs or Issues](/contribute/bug-reporting-guide.html) against the core libraries. -* [Fix Bugs or Issues](/contribute/guide.html) against the +* Help with [Documentation][documentation]. +* [Report Bugs or Issues][bug-reporting-guide] against the core libraries. +* [Fix Bugs or Issues][guide] against the [reported library bugs/issues](https://github.com/scala/bug). ### Significant changes For significant new functionality or a whole new API to be considered for inclusion in the core Scala distribution, please take into account [https://github.com/scala/scala-dev/issues/661] before doing so. + +[documentation]: {% link _overviews/contribute/documentation.md %} +[bug-reporting-guide]: {% link _overviews/contribute/bug-reporting-guide.md %} +[guide]: {% link _overviews/contribute/guide.md %} diff --git a/_overviews/contribute/documentation.md b/_overviews/contribute/documentation.md index 3d3311dbce..9bd4597b36 100644 --- a/_overviews/contribute/documentation.md +++ b/_overviews/contribute/documentation.md @@ -20,16 +20,16 @@ Thanks The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: -* [Log issues for missing scaladoc documentation](/contribute/scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - +* [Log issues for missing scaladoc documentation][report-api-doc-bugs] - Please *follow the issue submission process closely* to help prevent duplicate issues being created. -* [Claim Scaladoc Issues and Provide Documentation](/contribute/scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. +* [Claim Scaladoc Issues and Provide Documentation][scala-standard-library-api-documentation] - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. * You can also just -[submit new Scaladoc](/contribute/scala-standard-library-api-documentation.html) +[submit new Scaladoc][scala-standard-library-api-documentation] without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on [Scala Contributors](https://contributors.scala-lang.org/) so that people know what you are doing. ### The Main Scala Documentation Site -[docs.scala-lang.org](https://docs.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a GitHub project that you can fork and submit pull requests from. It includes: +[docs.scala-lang.org][home] houses the primary source of written, non-API documentation for Scala. It's a GitHub project that you can fork and submit pull requests from. It includes: * Overviews * Tutorials @@ -41,7 +41,7 @@ without creating an issue, but please look to see if there is an issue already s * SIP (Scala Improvement Process) Proposals and more -Please read [Add New Guides/Tutorials](/contribute/add-guides.html) through before embarking on changes. The site uses +Please read [Add New Guides/Tutorials][add-guides] through before embarking on changes. The site uses the [Jekyll](https://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. ### Updating scala-lang.org @@ -52,4 +52,9 @@ to Scala and related projects) is provided on the main [scala-lang GitHub project](https://github.com/scala/scala-lang) which may be forked to create pull requests. Please read both the -[Add New Guides/Tutorials](/contribute/add-guides.html) document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. +[Add New Guides/Tutorials][add-guides] document and the [scala-lang.org GitHub README](https://github.com/scala/scala-lang#scala-langorg) before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. + +[report-api-doc-bugs]: {% link _overviews/contribute/scala-standard-library-api-documentation.md %}#contribute-api-documentation-bug-reports +[scala-standard-library-api-documentation]: {% link _overviews/contribute/scala-standard-library-api-documentation.md %} +[home]: {% link index.md %} +[add-guides]: {% link _overviews/contribute/add-guides.md %} diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index 70d470d454..472d2d41ab 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -38,19 +38,19 @@ unencumbered by copyrights or patents. This is the impatient developer's checklist for the steps to submit a bug-fix pull request to the Scala project. For more information, description and justification for the steps, follow the links in that step. Further specific instructions for the release of Scala you are targeting can be found in the `CONTRIBUTING.md` file for that [GitHub branch](https://github.com/scala/scala) -1. [Select a bug to fix from GitHub](/contribute/index.html#community-tickets), or if you found the bug yourself and want to fix it, [create a GitHub issue](/contribute/bug-reporting-guide.html) (but please -[make sure it's not a duplicate](/contribute/bug-reporting-guide.html#please-check-before-reporting-a-bug)). -2. Optional ([but recommended](/contribute/scala-internals.html/#why-its-a-good-idea)), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with -[these friendly people](/contribute/hacker-guide.html#1-connect) - it's one of the perks of contributing. -3. [Fork the Scala repository](/contribute/hacker-guide.html#fork) and clone your fork (if you haven't already). -4. [Create a feature branch](/contribute/hacker-guide.html#branch) to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. -5. [Fix the bug, or implement the new small feature](/contribute/hacker-guide.html#implement), include new tests (yes, for bug fixes too). -6. [Test, rinse](/contribute/hacker-guide.html#test) and [test some more](/contribute/partest-guide.html) until [all the tests pass](/contribute/hacker-guide.html#verify). -7. [Commit your changes](/contribute/hacker-guide.html#commit) to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. +1. [Select a bug to fix from GitHub][community-tickets], or if you found the bug yourself and want to fix it, [create a GitHub issue][bug-reporting-guide] (but please +[make sure it's not a duplicate][bug-report-check-dupes]). +2. Optional ([but recommended][why-its-a-good-idea]), announce your intention to work on the bug on [Scala Contributors](https://contributors.scala-lang.org/). After all, don't you want to work on a team with +[these friendly people][hackers-connect] - it's one of the perks of contributing. +3. [Fork the Scala repository][hackers-fork] and clone your fork (if you haven't already). +4. [Create a feature branch][hackers-branch] to work on: use the branch name `issue/NNNN` where NNNN is the GitHub issue number. +5. [Fix the bug, or implement the new small feature][hackers-implement], include new tests (yes, for bug fixes too). +6. [Test, rinse][hackers-test] and [test some more][partest-guide] until [all the tests pass][hackers-verify]. +7. [Commit your changes][hackers-commit] to your feature branch in your fork. Please choose your commit message based on the [Git Hygiene](https://github.com/scala/scala#user-content-git-hygiene) section of the Scala project README. 8. If necessary [re-write git history](https://git-scm.com/book/en/Git-Branching-Rebasing) so that [commits are organized by major steps to the fix/feature]( https://github.com/scala/scala#git-hygiene). For bug fixes, a single commit is requested, for features several commits may be desirable (but each separate commit must compile and pass all tests) -9. [Submit a pull request](/contribute/hacker-guide.html#submit). -10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in](/contribute/hacker-guide.html#review). +9. [Submit a pull request][hackers-submit]. +10. [Work with a reviewer](https://github.com/scala/scala#reviewing) to [get your pull request merged in][hackers-review]. 11. Celebrate! Need more information or a little more hand-holding for the first one? We got you covered: take a read through the entire [Hacker Guide][hackers] (or the [equivalent Scala 3 Contributing Guide][scala3-hackers]) for an example of implementing a new feature (some of the steps can be skipped for bug fixes, this will be obvious from reading it, but many of the steps here will help with bug fixes too). @@ -59,13 +59,26 @@ Need more information or a little more hand-holding for the first one? We got yo For larger, more ambitious changes (e.g. new language features), the first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea and on the implementation plan. Announce the change -on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](https://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. +on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)][sips] document might be required, but the first step is always to discuss it on the mailing list and if a SIP is required, that will be discussed on the mailing list. Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against the Scala project source tree. The hacker's guides ([Scala 2][hackers], or [Scala 3][scala3-hackers]) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. -[hackers]: /contribute/hacker-guide.html -[community-tickets]: /contribute/index.html#community-tickets -[bug-reporting-guide]: /contribute/bug-reporting-guide.html +[hackers]: {% link _overviews/contribute/hacker-guide.md %} +[community-tickets]: {% link _overviews/contribute/index.md %}#community-tickets +[bug-reporting-guide]: {% link _overviews/contribute/bug-reporting-guide.md %} +[bug-report-check-dupes]: {% link _overviews/contribute/bug-reporting-guide.md %}#please-check-before-reporting-a-bug [scala3-hackers]: {% link _overviews/scala3-contribution/procedures-intro.md %} [contrib-forum]: https://contributors.scala-lang.org/ +[why-its-a-good-idea]: {% link _overviews/contribute/scala-internals.md %}#why-its-a-good-idea +[hackers-connect]: {% link _overviews/contribute/hacker-guide.md %}#1-connect +[hackers-fork]: {% link _overviews/contribute/hacker-guide.md %}#fork +[hackers-branch]: {% link _overviews/contribute/hacker-guide.md %}#branch +[hackers-implement]: {% link _overviews/contribute/hacker-guide.md %}#implement +[hackers-test]: {% link _overviews/contribute/hacker-guide.md %}#test +[hackers-verify]: {% link _overviews/contribute/hacker-guide.md %}#verify +[hackers-commit]: {% link _overviews/contribute/hacker-guide.md %}#commit +[hackers-submit]: {% link _overviews/contribute/hacker-guide.md %}#submit +[hackers-review]: {% link _overviews/contribute/hacker-guide.md %}#review +[partest-guide]: {% link _overviews/contribute/partest-guide.md %} +[sips]: {% link _sips/index.md %} diff --git a/_overviews/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md index f9db614056..92181003fa 100644 --- a/_overviews/contribute/hacker-guide.md +++ b/_overviews/contribute/hacker-guide.md @@ -196,7 +196,7 @@ Contributing to the Scala standard library is about the same as working on one o If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. -If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](/overviews/collections/introduction.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](/overviews/parallel-collections/overview.html). +If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections][collections-arch], as well as a larger more general [Scala collections Guide][collections-intro] covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide][collections-par]. ##### The Scala Compiler @@ -204,7 +204,7 @@ Documentation about the internal workings of the Scala compiler is scarce, and m * [Compiler internals videos by Martin Odersky](https://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. -* [Reflection documentation](/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that +* [Reflection documentation][reflect-overview] describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. * [Reflection and Compilers by Martin Odersky](https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. @@ -307,7 +307,7 @@ This means your change is backward or forward binary incompatible with the speci ### Verify -Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest](/contribute/partest-guide.html), a tool we wrote for testing Scala. +Now to make sure that my fix doesn't break anything I need to run the test suite. The Scala test suite uses [JUnit](https://junit.org/junit4/) and [partest][partest-guide], a tool we wrote for testing Scala. Run `sbt test` and `sbt partest` to run all of the JUnit and partest tests, respectively. `partest` (not `sbt partest`) also allows you to run a subset of the tests using wildcards: @@ -378,3 +378,9 @@ workflow) and be ready to elaborate and adjust your patch if necessary. In this After your reviewer is happy with your code (usually signaled by a LGTM — “Looks good to me”), your job is done. Note that there can be a gap between a successful review and the merge, because not every reviewer has merge rights. In that case, someone else from the team will pick up your pull request and merge it. So don't be confused if your reviewer says “LGTM”, but your code doesn't get merged immediately. + +[collections-arch]: {% link _overviews/core/architecture-of-scala-collections.md %} +[collections-intro]: {% link _overviews/collections/introduction.md %} +[collections-par]: {% link _overviews/parallel-collections/overview.md %} +[reflect-overview]: {% link _overviews/reflection/overview.md %} +[partest-guide]: {% link _overviews/contribute/partest-guide.md %} diff --git a/_overviews/contribute/index.md b/_overviews/contribute/index.md index eb0596d802..4e94334061 100644 --- a/_overviews/contribute/index.md +++ b/_overviews/contribute/index.md @@ -15,7 +15,7 @@ That depends on what you want to contribute. Below are some getting started reso ### Reporting bugs -See our [bug reporting guide](/contribute/bug-reporting-guide.html) to learn +See our [bug reporting guide][bug-reporting-guide] to learn how to efficiently report a bug. ### Contribute @@ -30,7 +30,7 @@ Coordination of contribution efforts takes place on When contributing, please follow: * The [Scala Code of Conduct](https://scala-lang.org/conduct/) -* The [Inclusive Language Guide](/contribute/inclusive-language-guide.html) +* The [Inclusive Language Guide][inclusive-language-guide] ### Community Tickets @@ -63,3 +63,6 @@ open-source Scala library or tool, please visit the [community build documentation](https://github.com/scala/community-build/wiki) for guidelines on what projects are suitable for the community build and how projects can be added. + +[bug-reporting-guide]: {% link _overviews/contribute/bug-reporting-guide.md %} +[inclusive-language-guide]: {% link _overviews/contribute/inclusive-language-guide.md %} diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index 606407f886..c1303e8b18 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -9,8 +9,8 @@ documentation for sometimes referred to as Scaladoc contributions. For contributions to tutorial and guide-style documentation on -[docs.scala-lang.org](/), -see [Add New Guides/Tutorials](/contribute/add-guides.html). +[docs.scala-lang.org][home], +see [Add New Guides/Tutorials][add-guides]. *Please note, these instructions cover documentation contributions Scala core libraries only. For other Scala projects please check those projects for the @@ -76,13 +76,13 @@ component so that they show up in the correct issue filters. Please familiarize yourself with the following before contributing new API documentation to save time, effort, mistakes and repetition. -* [Forking the Repo](/contribute/hacker-guide.html#2-set-up) - follow the setup steps through +* [Forking the Repo][hackers-setup] - follow the setup steps through the Branch section. If providing new documentation related to an existing GitHub issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated GitHub issue, use `scaladoc/xxxx` instead. -* [Scaladoc for library authors](https://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) +* [Scaladoc for library authors][scaladoc-lib-authors] covers the use of scaladoc tags, markdown and other features. -* [Scaladoc's interface](https://docs.scala-lang.org/overviews/scaladoc/interface.html) +* [Scaladoc's interface][scaladoc-interface] covers all of the features of Scaladoc's interface, e.g. switching between companions, browsing package object documentation, searching, token searches and so on. @@ -121,3 +121,9 @@ PR is merged in smoothly: as smooth and streamlined as possible. Thanks for helping us improve the Scaladoc API documentation! + +[home]: {% link index.md %} +[add-guides]: {% link _overviews/contribute/add-guides.md %} +[hackers-setup]: {% link _overviews/contribute/hacker-guide.md %}#2-set-up +[scaladoc-lib-authors]: {% link _overviews/scaladoc/for-library-authors.md %} +[scaladoc-interface]: {% link _overviews/scaladoc/interface.md %} From 7de6290af5657b4a02373222452f25daca0fe0c8 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 23 Mar 2022 18:01:50 +0100 Subject: [PATCH 0392/1704] add back Scoverage as a project in need --- _overviews/contribute/tools.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/_overviews/contribute/tools.md b/_overviews/contribute/tools.md index 68cee7796f..77115d03ab 100644 --- a/_overviews/contribute/tools.md +++ b/_overviews/contribute/tools.md @@ -30,6 +30,14 @@ projects: contributingLink: projectsInNeed: + - title: Scoverage + description: Scala code coverage tool + icon: https://avatars1.githubusercontent.com/u/5998302?v=3&s=200 + link: https://github.com/scoverage/scalac-scoverage-plugin + homeLink: http://scoverage.org/ + issuesLink: https://github.com/scoverage/scalac-scoverage-plugin/issues + readmeLink: https://github.com/scoverage/scalac-scoverage-plugin/blob/master/README.md + contributingLink: https://groups.google.com/forum/#!forum/scala-code-coverage-tool --- ## Contributing to IDE and Build Tools From e2a41dc6ad52aad13d3e07acc1971c3cbc859344 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 23 Mar 2022 19:41:21 +0100 Subject: [PATCH 0393/1704] use more accessible language in Add New Guides/Tutorials - also switch some code blocks to explicit html so that mdoc code blocks are not escaped. --- _overviews/contribute/add-guides.md | 204 +++++++++++++++++----------- 1 file changed, 126 insertions(+), 78 deletions(-) diff --git a/_overviews/contribute/add-guides.md b/_overviews/contribute/add-guides.md index 96091fb311..ed8b0d36c7 100644 --- a/_overviews/contribute/add-guides.md +++ b/_overviews/contribute/add-guides.md @@ -19,8 +19,11 @@ and is always contribution-ready. Currently, the _types_ of documentation supported in this repository are: -- **Guides/Overviews**: Definitive guides/overviews of specific language features. Often long, detailed documents, - often produced by members of the Scala team. An example is the excellent [Collections][collections-overview] overview. +- **Guides/Overviews/Books**: Definitive guides/overviews of specific language features. Often long, detailed documents, + often produced by members of the Scala team. An example is the [Collections][collections-overview] overview. +- **References**: The canonical reference for language features, written by members of the Scala team. + These provide the exact specification to understand more subtle aspects of the language. An example is the + [Scala 3 reference][scala-3-reference]. - **Tutorials**: Bite-size, example-rich, and concise articles meant to get a developer up to speed quickly. - **Cheatsheets**: Quick reference of Scala syntax and behaviors. @@ -28,27 +31,29 @@ Currently, the _types_ of documentation supported in this repository are: The website is statically generated from [Markdown](https://en.wikipedia.org/wiki/Markdown) source using [Jekyll](https://github.com/mojombo/jekyll), and hosted on [GitHub Pages](https://pages.github.com/). -This workflow was chosen so as to make it as easy as possible for core committers and the community alike -to produce HTML documentation, and as easy as possible to publish it in a central location. +This workflow was chosen to help contributors to focus on writing helpful content, rather than on configuration and +boilerplate. It also aids publishing a static site in a central location. The markdown syntax being used supports [Maruku](https://github.com/bhollis/maruku) extensions, and has automatic syntax highlighting, without the need for any tags. Additionally [mdoc](https://github.com/scalameta/mdoc) is used during pull requests to validate Scala code blocks. -To use this feature you must use the backtick notation as documented by mdoc. Note that only validation is done. -The output files from mdoc are not used in the building of the tutorial. Use `mdoc` or `mdoc:fail` for your code blocks. +To use this feature you must use the backtick notation as documented by mdoc, +[see here](#code-blocks) for an example. + +**Note:** only validation of code is done by mdoc, and no extra output is generated. ## Submitting Docs -For one to contribute a document, one must simply +For you to contribute a document, first [fork](https://help.github.com/articles/fork-a-repo/) the -[repo](https://github.com/scala/docs.scala-lang), write their article in -[Markdown](https://daringfireball.net/projects/markdown/syntax) (example below), and submit a pull request. That's it. +[repo](https://github.com/scala/docs.scala-lang), then write your article in +[Markdown](https://daringfireball.net/projects/markdown/syntax) (example below), and finally submit a pull request. Likely after some edits and discussion, your document will be made live on [docs.scala-lang.org][home]. --- - layout: overview + layout: singlepage-overview title: My Awesome Title --- @@ -56,32 +61,41 @@ on [docs.scala-lang.org][home]. And a paragraph, with a [link](https://www.scala-lang.org). -One can contribute code in a markdown document by either - - indenting it by 4 spaces - - surrounding by triple backticks, as shown below - - in-line by putting backticks around it, e.g. `def foo`. +You can contribute code in a markdown document by either +- in-line by putting backticks around it, +- surrounding by triple backticks, +- or indenting it by 4 spaces, e.g.: + +~~~ +inline example: `val x = 23` + +block example: +```scala +println("hello") +``` + +indented example: - ```scala - println("hello") - ``` + case class Foo(x: Int) +~~~ -Everything else is automatically generated for you; tables of contents, and most index pages. And of course, the -styling is already taken care of for you. +Tables of contents will be automatically generated in a sidebar for your document, and syntax highlighting +is provided. ### Criteria for Docs to be Accepted -The goal of this documentation repository is to be tighter and more organized than other community-driven documentation platforms, like wikis. As such, any document pulled in for inclusion on -[docs.scala-lang.org][home] must: +The goal of this documentation repository is to be highly curated, rather than the approach by other community-driven +documentation platforms, like wikis. Therefore, to be included on [docs.scala-lang.org][home], a document must: - **"fit in"** to the repository ( _i.e.,_ it should not be a complete duplicate of another article), -- **be polished** it must be thorough, complete, correct, organized, and "article-like" (personal programming notes -don't quite fit.) -- **be maintained** if the document might require revisions from time to time, be prepared to keep it up to date, or +- **be polished**, i.e. it must be thorough, complete, correct, and organized; written as an article to be understood + by many users. +- **be maintained**, if the document might require revisions from time to time, be prepared to keep it up to date, or nominate someone to take ownership. If you have something you're thinking about contributing, or that you're thinking about writing in order to contribute -- we'd love to consider it! Please don't hesitate to use GitHub issues and pull requests and the -\#scala-contributors room [on Discord](https://discord.com/invite/scala) for any questions, concerns, +`#scala-contributors` room [on Discord](https://discord.com/invite/scala) for any questions, concerns, clarifications, etc. ## Document Templates @@ -90,38 +104,36 @@ clarifications, etc. ### Guides/Overviews -A guide or an overview that can be logically placed on **one** page must be placed in the directory -`_overviews/RELEVANT-CATEGORY/_posts` with the file name in the format `YYYY-MM-dd-title-separated-by-dashes.md`, -and header: +A guide or an overview that can be logically placed on **one** markdown page should be placed in the directory +`_overviews/RELEVANT-CATEGORY/`. It should have the header: --- - layout: overview + layout: singlepage-overview title: YOUR TITLE --- -The rest of the document should, of course, be written in [Markdown](https://en.wikipedia.org/wiki/Markdown). +The rest of the document will be written in [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. -At the moment, `RELEVANT-CATEGORY` corresponds to only a single category, "core," because we are currently focusing on -building up documentation of core libraries. However, expect more categories here in the future. +You may substitute `RELEVANT-CATEGORY` for any directory that is related, or create a new one if one is not suitable. -If your document consists of **multiple** pages, like the [Collections][collections-overview] overview, an ordering -must be specified, by numbering documents in their logical order with `num`, and a name must be assigned to the -collection of pages using `partof`. For example, the following header might be used for a document in the collections -overview: +If your guide/overview consists of **multiple** pages, like the [Collections][collections-overview] overview, +an ordering must be specified, by numbering documents in their logical order with the `num` tag in the header, +and a name must be assigned to the collection of pages using the `partof` tag. +For example, the following header might be used for a document in the collections overview: --- - layout: overview + layout: multipage-overview title: YOUR TITLE partof: collections num: 10 --- -A **single** document in the collection must contain a tag in the header, `outof`, that indicates the total number of -documents in the large overview. Putting it on the last page in the overview is often best: +**At least one** document in the collection must contain a tag in the header, `outof`, that indicates the total number +of documents in the large overview. Putting it on the last page in the overview is often best: --- - layout: overview + layout: multipage-overview title: YOUR TITLE partof: collections @@ -130,14 +142,18 @@ documents in the large overview. Putting it on the last page in the overview is --- Index pages, such as [docs.scala-lang.org/overviews/index.html][overviews-index] are -generated, by reading data from a configuration file, such as `_data/overviews.yml`, so your overview should be +generated by reading data from a configuration file, such as `_data/overviews.yml`, so your overview should be placed into a category there. ### Tutorials -At the moment, tutorials are written the same as Guides/Overviews, except that their link must be added to -the metadata of `/tutorials.md`. e.g. for the [Scala With Maven][scala-with-maven] tutorial, the -metadata of `/tutorials.md` looks like +Tutorials are different to guides, they should be written in a much more concise, task-oriented style, +usually on a single page. + +Similar to guides, tutorials also use the same markdown header. + +Once the tutorial is written, to aid user navigation their link must be added to +the metadata of `/tutorials.md`. e.g. it could look like --- layout: inner-page-parent @@ -145,18 +161,33 @@ metadata of `/tutorials.md` looks like tutorials: ... - - title: "Scala with Maven" - url: "/tutorials/scala-with-maven.html" - description: "Create a Scala project with Maven." - icon: code + - title: My New Tutorial + url: "/tutorials/my-new-tutorial.html" + description: "Learn How To Do This Specific Task" + icon: code --- -For a single-page tutorial, the typical directory to place them in is `_overviews/tutorials`. +You must also add the tutorial to the drop down list in the navigation bar. To do this, add an extra entry to +`_data/doc-nav-header.yml`. i.e. + + --- + - title: Getting Started + url: "/getting-started/index.html" + - title: Learn + ... + - title: Tutorials + url: "#" + submenu: + ... + - title: My New Tutorial + url: "/tutorials/my-new-tutorial.html" + ... + --- ### Cheatsheets -For now, cheatsheets are assumed to be in the form of tables. To contribute a cheatsheet, one must simply produce their -cheatsheet as a Markdown table, with the following header: +Cheatsheets have a special layout, and the content is expected to be a markdown table. To contribute a cheatsheet, +you should use the following format: --- layout: cheatsheet @@ -164,27 +195,37 @@ cheatsheet as a Markdown table, with the following header: by: YOUR NAME about: SOME TEXT ABOUT THE CHEAT SHEET. --- + | Title A | Title B | + |---------|---------| + | content | more | ### Code blocks The site build process uses [mdoc](https://scalameta.org/mdoc/) to typecheck code snippets in markdown. This is a great way to ensure the code snippets that -you're including typecheck and are valid. Here are a few quick types to get -started. +you're including typecheck and are valid. Here are a few quick tips to get +started: -To get started, add `mdoc` after `scala` when you are creating a +First, add `mdoc` after `scala` when you are creating a code block. The `mdoc` modifier here will make sure that `mdoc` runs the code snippet and ensures that it's valid. - ```scala mdoc - val a = 1 - ``` +
    +
    +
    +            ```scala mdoc
    +val a = 1
    +```
    +
    + If you have a snippet that you expect to fail, you can also account for this by using `mdoc:fail` for a compile error `mdoc:crash` for a runtime-error. - ```scala mdoc:fail - val b: String = 3 // won't compile - ``` +
    ```scala mdoc:fail
    +val b: String = 3 // won't compile
    +```
    +
    + Keep in mind that a single file is all compiled as a single unit, so you can't redefine a variable that was defined above in another code snippet. _However_ there are a couple ways to get around this. Firstly, you can use the `mdoc:nest` @@ -193,29 +234,36 @@ essentially "hide" the snippet from the others. Another way around this is to use the `mdoc:reset` modifier, which _resets_ and forgets about everything up above. Here is an example using the various modifiers. - ```scala mdoc - import java.time.Instant +
    ```scala mdoc
    +import java.time.Instant
    +
    +def now() = Instant.now()
    +object Foo {}
    +```
    +
    + +
    ```scala mdoc:nest
    +case class Foo(a: Int) // conflicts with Foo above, but it's nested so it's fine
    +```
    +
    - def now() = Instant.now() - object Foo {} - ``` +
    ```scala mdoc
    +val a = s"The time is ${now()}" // still have access to the now method from above
    +```
    +
    - ```scala mdoc:nest - case class Foo(a: Int) // conflicts with Foo above, but it's nested so it's fine - ``` +
    ```scala mdoc:reset
    +case class Foo(a: String) // forget the previous Foo's and start fresh
    +```
    +
    - ```scala mdoc - val a = s"The time is ${now()}" // still have access to the now method from above - ``` - ```scala mdoc:reset - case class Foo(a: String) // forget the previous Foo's and start fresh - ``` - ```scala mdoc - val myFoo = Foo("hi") // now we only have access to the last Foo - ``` +
    ```scala mdoc
    +val myFoo = Foo("hi") // now we only have access to the last Foo
    +```
    +
    [collections-overview]: {% link _overviews/collections-2.13/introduction.md %} -[scala-with-maven]: {% link _overviews/tutorials/scala-with-maven.md %} [why-contribute]: {% link contribute.md %} [home]: {% link index.md %} [overviews-index]: {% link _overviews/index.md %} +[scala-3-reference]: https://docs.scala-lang.org/scala3/reference/overview.html From d8e9d2ebc889dc4b7e5a22530596bc9b6d7f24aa Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 23 Mar 2022 19:58:56 +0100 Subject: [PATCH 0394/1704] enhance contribute intro --- _contribute_resources/1-documentation.md | 4 +++- _overviews/contribute/index.md | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/_contribute_resources/1-documentation.md b/_contribute_resources/1-documentation.md index 1f42a6e20b..e11b539e16 100644 --- a/_contribute_resources/1-documentation.md +++ b/_contribute_resources/1-documentation.md @@ -3,7 +3,9 @@ title: Documentation link: /contribute/documentation.html icon: fa fa-book --- -[Scaladoc (API)][scala-standard-library-api-documentation], [docs.scala-lang.org][add-guides] and [scala-lang.org](https://github.com/scala/scala-lang). +[Library API docs][scala-standard-library-api-documentation], [new guides][add-guides] on [docs.scala-lang.org][home], and help +with [scala-lang.org](https://github.com/scala/scala-lang). [add-guides]: {% link _overviews/contribute/add-guides.md %} [scala-standard-library-api-documentation]: {% link _overviews/contribute/scala-standard-library-api-documentation.md %} +[home]: {% link index.md %} diff --git a/_overviews/contribute/index.md b/_overviews/contribute/index.md index 4e94334061..da197e233e 100644 --- a/_overviews/contribute/index.md +++ b/_overviews/contribute/index.md @@ -1,16 +1,16 @@ --- -title: Contribute +title: Introduction num: 1 --- +### Why You Should Contribute To Scala The Scala programming language is an open source project with a very diverse community, where people from all over the world contribute their work, with everyone benefiting from friendly help and advice, and kindly helping others in return. So why not join the Scala community and help everyone make things better? -## How to help? - +**What Can I Do?** That depends on what you want to contribute. Below are some getting started resources for different contribution domains. Please read all of the documentation and follow all the links from the topic pages below before attempting to contribute, as many of the questions you have will already be answered. ### Reporting bugs From 7282312e59bc4a38a1bf508e01ad7342cea386c9 Mon Sep 17 00:00:00 2001 From: Florian3k <24961583+Florian3k@users.noreply.github.com> Date: Sat, 26 Mar 2022 13:07:21 +0100 Subject: [PATCH 0395/1704] Remove dangling opening brace --- _overviews/scala3-book/fp-functional-error-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/fp-functional-error-handling.md b/_overviews/scala3-book/fp-functional-error-handling.md index d56dfff3a6..41410e5cf1 100644 --- a/_overviews/scala3-book/fp-functional-error-handling.md +++ b/_overviews/scala3-book/fp-functional-error-handling.md @@ -137,7 +137,7 @@ val stringA = "1" val stringB = "2" val stringC = "3" -val y = for { +val y = for a <- makeInt(stringA) b <- makeInt(stringB) c <- makeInt(stringC) From 7a3468bec81c9382d37a10e6d2be5c928d4000db Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Sat, 26 Mar 2022 16:56:46 -0700 Subject: [PATCH 0396/1704] Give Nth advice --- _overviews/core/collections-migration-213.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_overviews/core/collections-migration-213.md b/_overviews/core/collections-migration-213.md index 68c5247774..114da1f632 100644 --- a/_overviews/core/collections-migration-213.md +++ b/_overviews/core/collections-migration-213.md @@ -15,6 +15,8 @@ The most important changes in the Scala 2.13 collections library are: - Transformation methods no longer have an implicit `CanBuildFrom` parameter. This makes the library easier to understand (in source code, Scaladoc, and IDE code completion). It also makes compiling user code more efficient. - The type hierarchy is simplified. `Traversable` no longer exists, only `Iterable`. - The `to[Collection]` method was replaced by the `to(Collection)` method. + - The `toC` methods are strict by convention and yield the default collection type where applicable. For example, `Iterator.continually(42).take(10).toSeq` produces a `List[Int]` and without the limit would not. + - `toIterable` is deprecated wherever defined. For `Iterator`, in particular, prefer `to[LazyList]`. - Views have been vastly simplified and work reliably now. They no longer extend their corresponding collection type, for example, an `IndexedSeqView` no longer extends `IndexedSeq`. - `collection.breakOut` no longer exists, use `.view` and `.to(Collection)` instead. - Immutable hash sets and hash maps have a new implementation (`ChampHashSet` and `ChampHashMap`, based on the ["CHAMP" encoding](https://michael.steindorfer.name/publications/oopsla15.pdf)). From f874fe30c3d6c2b68483281ceadcc51b5620f301 Mon Sep 17 00:00:00 2001 From: som-snytt Date: Sat, 26 Mar 2022 18:35:24 -0700 Subject: [PATCH 0397/1704] Relax it's private --- _tour/classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_tour/classes.md b/_tour/classes.md index ee3dc33703..0bda77c78e 100644 --- a/_tour/classes.md +++ b/_tour/classes.md @@ -86,7 +86,7 @@ class Point { if (newValue < bound) _y = newValue else printWarning() } - private def printWarning(): Unit = println("WARNING: Out of bounds") + private def printWarning() = println("WARNING: Out of bounds") } val point1 = new Point From e6f52d94d532d7f6d8a07d8e5bac6a46ef11cf30 Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Sat, 26 Mar 2022 22:14:41 -0700 Subject: [PATCH 0398/1704] Lower bound in tour includes dangers --- _tour/lower-type-bounds.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/_tour/lower-type-bounds.md b/_tour/lower-type-bounds.md index a1cdb9648f..548ffb733b 100644 --- a/_tour/lower-type-bounds.md +++ b/_tour/lower-type-bounds.md @@ -42,26 +42,40 @@ trait Node[+B] { def prepend[U >: B](elem: U): Node[U] } -case class ListNode[+B](h: B, t: Node[B]) extends Node[B] { +case class ListNode[+B](head: B, tail: Node[B]) extends Node[B] { def prepend[U >: B](elem: U): ListNode[U] = ListNode(elem, this) - def head: B = h - def tail: Node[B] = t } -case class Nil[+B]() extends Node[B] { - def prepend[U >: B](elem: U): ListNode[U] = ListNode(elem, this) +object Nil extends Node[Nothing] { + def prepend[U >: Nothing](elem: U): ListNode[U] = ListNode(elem, this) } ``` +We have also simplified `ListNode` to leverage its `case class` fields, and `Nil` to be a singleton object; it is a "node of nothing" because it does not hold an element. The type parameter for `Node` is `B` to suggest we want to store birds at each node. + Now we can do the following: ```scala mdoc trait Bird case class AfricanSwallow() extends Bird case class EuropeanSwallow() extends Bird +val africanSwallows: Node[AfricanSwallow] = ListNode[AfricanSwallow](AfricanSwallow(), Nil) +val swallowsFromAntarctica: Node[Bird] = Nil -val africanSwallowList = ListNode[AfricanSwallow](AfricanSwallow(), Nil()) -val birdList: Node[Bird] = africanSwallowList -birdList.prepend(EuropeanSwallow()) +// assign swallows to birds +val birds: Node[Bird] = africanSwallows + +// add a swallow to birds +val moreBirds = birds.prepend(EuropeanSwallow()) + +// add disparate swallows together to get birds +val allBirds = africanSwallows.prepend(EuropeanSwallow()) + +// but this is a mistake! adding a Node to birds widens the type arg too much. -Xlint will warn! +val error = moreBirds.prepend(swallowsFromAntarctica) ``` -The `Node[Bird]` can be assigned the `africanSwallowList` but then accept `EuropeanSwallow`s. +The covariant type parameter allows `birds` to get the value of `africanSwallows`. + +The type bound on the type parameter for `prepend` allows adding different varieties of swallows and getting a wider type: instead of `Node[AfricanSwallow]`, we get a `Node[Bird]`. + +The canary in the coal mine is `-Xlint`, which will warn if the type arg is widened too much. From e2f00f6c39981cdbeeaf5688b9f374904e403574 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Tue, 29 Mar 2022 18:10:06 +0200 Subject: [PATCH 0399/1704] Add parentheses to hello method definition Fixes #2357 --- _overviews/scala3-book/taste-hello-world.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-book/taste-hello-world.md b/_overviews/scala3-book/taste-hello-world.md index 7acf47e20e..110d55ba91 100644 --- a/_overviews/scala3-book/taste-hello-world.md +++ b/_overviews/scala3-book/taste-hello-world.md @@ -12,7 +12,7 @@ A Scala 3 “Hello, world!” example goes as follows. First, put this code in a file named _Hello.scala_: ```scala -@main def hello = println("Hello, world!") +@main def hello() = println("Hello, world!") ``` In this code, `hello` is a method. From 4895a4b7cc34c786937d1ef5c198bce66ab8777c Mon Sep 17 00:00:00 2001 From: som-snytt Date: Tue, 29 Mar 2022 09:49:23 -0700 Subject: [PATCH 0400/1704] Fix brackets Co-authored-by: Julien Richard-Foy --- _overviews/core/collections-migration-213.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/core/collections-migration-213.md b/_overviews/core/collections-migration-213.md index 114da1f632..5eb05536ee 100644 --- a/_overviews/core/collections-migration-213.md +++ b/_overviews/core/collections-migration-213.md @@ -16,7 +16,7 @@ The most important changes in the Scala 2.13 collections library are: - The type hierarchy is simplified. `Traversable` no longer exists, only `Iterable`. - The `to[Collection]` method was replaced by the `to(Collection)` method. - The `toC` methods are strict by convention and yield the default collection type where applicable. For example, `Iterator.continually(42).take(10).toSeq` produces a `List[Int]` and without the limit would not. - - `toIterable` is deprecated wherever defined. For `Iterator`, in particular, prefer `to[LazyList]`. + - `toIterable` is deprecated wherever defined. For `Iterator`, in particular, prefer `to(LazyList)`. - Views have been vastly simplified and work reliably now. They no longer extend their corresponding collection type, for example, an `IndexedSeqView` no longer extends `IndexedSeq`. - `collection.breakOut` no longer exists, use `.view` and `.to(Collection)` instead. - Immutable hash sets and hash maps have a new implementation (`ChampHashSet` and `ChampHashMap`, based on the ["CHAMP" encoding](https://michael.steindorfer.name/publications/oopsla15.pdf)). From add60f3231771d2132441cacfc9ec8815f711211 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 30 Mar 2022 16:26:08 +0200 Subject: [PATCH 0401/1704] final proof read --- _overviews/contribute/add-guides.md | 29 +++---- _overviews/contribute/bug-reporting-guide.md | 13 +-- _overviews/contribute/corelibs.md | 2 +- _overviews/contribute/documentation.md | 6 +- _overviews/contribute/guide.md | 2 +- _overviews/contribute/hacker-guide.md | 81 ++++++++++--------- _overviews/contribute/partest-guide.md | 14 +++- ...cala-standard-library-api-documentation.md | 35 ++++---- 8 files changed, 89 insertions(+), 93 deletions(-) diff --git a/_overviews/contribute/add-guides.md b/_overviews/contribute/add-guides.md index ed8b0d36c7..bbb43a9686 100644 --- a/_overviews/contribute/add-guides.md +++ b/_overviews/contribute/add-guides.md @@ -6,7 +6,7 @@ num: 7 ## Why Contribute New Learning Material? As [Heather Miller writes][why-contribute], contributing to [docs.scala-lang.org][home] is -critical to making Scala accessible to newcomers, experience programmers, and anyone who is curious. +critical to making Scala accessible to newcomers, experienced programmers, and anyone who is curious. It is also a fantastic way to contribute for anyone who is comfortable using Scala, but maybe does not want to get involved with complex tools like the compiler. @@ -45,7 +45,7 @@ To use this feature you must use the backtick notation as documented by mdoc, ## Submitting Docs -For you to contribute a document, first +To contribute a new document, you should first [fork](https://help.github.com/articles/fork-a-repo/) the [repo](https://github.com/scala/docs.scala-lang), then write your article in [Markdown](https://daringfireball.net/projects/markdown/syntax) (example below), and finally submit a pull request. @@ -87,7 +87,7 @@ is provided. The goal of this documentation repository is to be highly curated, rather than the approach by other community-driven documentation platforms, like wikis. Therefore, to be included on [docs.scala-lang.org][home], a document must: -- **"fit in"** to the repository ( _i.e.,_ it should not be a complete duplicate of another article), +- **"fit in"** to the repository (_i.e.,_ it should not be a complete duplicate of another article), - **be polished**, i.e. it must be thorough, complete, correct, and organized; written as an article to be understood by many users. - **be maintained**, if the document might require revisions from time to time, be prepared to keep it up to date, or @@ -100,8 +100,6 @@ clarifications, etc. ## Document Templates -> **Note:** These templates will soon change slightly as a result of necessary refactoring. - ### Guides/Overviews A guide or an overview that can be logically placed on **one** markdown page should be placed in the directory @@ -215,16 +213,14 @@ snippet and ensures that it's valid.
                 ```scala mdoc
     val a = 1
    -```
    -
    +```
    If you have a snippet that you expect to fail, you can also account for this by using `mdoc:fail` for a compile error `mdoc:crash` for a runtime-error.
    ```scala mdoc:fail
     val b: String = 3 // won't compile
    -```
    -
    +``` Keep in mind that a single file is all compiled as a single unit, so you can't redefine a variable that was defined above in another code snippet. _However_ @@ -239,28 +235,23 @@ above. Here is an example using the various modifiers. def now() = Instant.now() object Foo {} -``` - +```
    ```scala mdoc:nest
     case class Foo(a: Int) // conflicts with Foo above, but it's nested so it's fine
    -```
    -
    +```
    ```scala mdoc
     val a = s"The time is ${now()}" // still have access to the now method from above
    -```
    -
    +```
    ```scala mdoc:reset
     case class Foo(a: String) // forget the previous Foo's and start fresh
    -```
    -
    +```
    ```scala mdoc
     val myFoo = Foo("hi") // now we only have access to the last Foo
    -```
    -
    +``` [collections-overview]: {% link _overviews/collections-2.13/introduction.md %} [why-contribute]: {% link contribute.md %} diff --git a/_overviews/contribute/bug-reporting-guide.md b/_overviews/contribute/bug-reporting-guide.md index 91858d589c..6830c18ab9 100644 --- a/_overviews/contribute/bug-reporting-guide.md +++ b/_overviews/contribute/bug-reporting-guide.md @@ -3,7 +3,8 @@ title: Bug Reporting Guide num: 8 --- -The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug), and for Scala 3, it is located at [github.com/lampepfl/dotty](https://github.com/lampepfl/dotty/issues). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. +The Scala compiler and standard library bug tracker is located at [https://github.com/scala/bug](https://github.com/scala/bug), and for Scala 3, it is located at [github.com/lampepfl/dotty](https://github.com/lampepfl/dotty/issues). Before you submit a bug make sure that it is certainly a bug by following instructions +in [Is it a Bug?](#is-it-a-bug). ## Is it a Bug? @@ -11,7 +12,7 @@ The first step in identifying a bug is to identify which component of the Scala - **Library** bugs typically manifest themselves as run-time exceptions, or as *unexpected*/*unintuitive* behavior of Scala Standard Library methods. - **Compiler** errors are manifested as compile time exceptions, unexpected behavior of your code at run time, or invalid behavior of the type system. - - **Reflection** are bugs that appear in the ‘scala.reflect’ package. For the *reflection* bugs , the same rules apply as for the *library* bugs. + - **Reflection** are bugs that appear in the `scala.reflect` package. For the *reflection* bugs, the same rules apply as for the *library* bugs. - **Scaladoc** bugs are manifested as a logical problems in the information it presents (that is, the displayed information is incorrect, such as an incorrect subclassing relationship), or incorrect behavior of the user interface. If you'd like to suggest a change in the content of the documentation, please submit a pull request (possible to do in the browser using GitHub, which is easier and faster than filing a bug). Please file a bug about the content of documentation only if you cannot provide a suggestion for its fix. If your issue is related to any of the following external projects, make sure to use its appropriate issue tracker: @@ -31,13 +32,13 @@ If you have a code snippet that is resulting in bytecode which you believe is be * Make sure you minimize your problem. To correctly minimize the problem follow the following instructions: - 1. Gradually take apart the offensive code snippet until you believe you have the simplest representation of your problem. + 1. Gradually remove parts from the original failing code snippet until you believe you have the simplest representation of your problem. - 2. Ensure that you have decoupled your code snippet from any library that could be introducing the offensive behavior. One way to achieve this is to try to recompile the offensive code snippet in isolation, outside of the context of any complex build environment. If your code depends on some strictly Java library and source code is available for it, make sure that the latter is also minimized. + 2. Ensure that you have decoupled your code snippet from any library that could be introducing the incorrect behavior. One way to achieve this is to try to recompile the offending code snippet in isolation, outside of the context of any complex build environment. If your code depends on some strictly Java library and source code is available for it, make sure that the latter is also minimized. 3. Make sure you are compiling your project from a clean slate. Your problem could be related to separate compilation, which is difficult to detect without a clean build with new `.class` files. - 4. If you have encountered a bug while building your code in the IDE, then please reproduce it on the command line. The same rule applies for build tools like `sbt` or `ant`. + 4. If you have encountered a bug while building your code in the IDE, then please reproduce it on the command line. The same rule applies for build tools like **sbt** or **Mill**. 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. @@ -69,7 +70,7 @@ Please make sure to fill in as many fields as possible. Make sure you've indicat 3. **Labels** related to your issue. For example, if you think your issue is related to the typechecker, and if you have successfully minimized your issue, label your bug as "typechecker" and "minimized". Issue tracker will suggest names for existing labels as you type them so try not to create duplicates. 4. **Running environment**. Are you running on Linux? Windows? What JVM version are you using? -In order for us to quickly triage the bug that you've found, it's important that the code snippet which produces the observed issue is as minimized as possible. For advice on minimizing your code snippet, please see the appropriate subsection of the above (Is it a Bug?). +In order for us to quickly triage the bug that you've found, it's important that the code snippet which produces the observed issue is as minimized as possible. For advice on minimizing your code snippet, please see the appropriate subsection of the above ([Is it a Bug?](#is-it-a-bug)). ### Description diff --git a/_overviews/contribute/corelibs.md b/_overviews/contribute/corelibs.md index 1eb2f840b0..4fcab907a2 100644 --- a/_overviews/contribute/corelibs.md +++ b/_overviews/contribute/corelibs.md @@ -14,7 +14,7 @@ There are several options for contributing to Scala's core libraries. You can: ### Significant changes For significant new functionality or a whole new API to be considered for inclusion in the core Scala distribution, -please take into account [https://github.com/scala/scala-dev/issues/661] before doing so. +please take into account [scala/scala-dev#661](https://github.com/scala/scala-dev/issues/661) before doing so. [documentation]: {% link _overviews/contribute/documentation.md %} [bug-reporting-guide]: {% link _overviews/contribute/bug-reporting-guide.md %} diff --git a/_overviews/contribute/documentation.md b/_overviews/contribute/documentation.md index 9bd4597b36..bd93b7fbd3 100644 --- a/_overviews/contribute/documentation.md +++ b/_overviews/contribute/documentation.md @@ -7,10 +7,10 @@ num: 5 There are several ways you can help out with the improvement of Scala documentation. These include: * API Documentation in Scaladoc -* Guides, Overviews, Tutorials, Cheat Sheets and more on the docs.scala-lang.org site -* Updating scala-lang.org +* Guides, Overviews, Tutorials, Cheat Sheets and more on the [docs.scala-lang.org][home] site +* Updating [scala-lang.org](https://scala-lang.org) -Please read this page, and the pages linked from this one, fully before contributing documentation. Many of the questions you have will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [Scala Contributors](https://contributors.scala-lang.org/) mailing list and then, please, submit a pull request with updated documentation reflecting that answer. +Please read this page, and the pages linked from this one, fully before contributing documentation. Many frequently asked questions will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [Scala Contributors](https://contributors.scala-lang.org/) forum and then, please, submit a pull request with updated documentation reflecting that answer. **General requirements** for documentation submissions include spell-checking all written language, ensuring code samples compile and run correctly, correct grammar, and clean formatting/layout of the documentation. diff --git a/_overviews/contribute/guide.md b/_overviews/contribute/guide.md index 472d2d41ab..33330f511d 100644 --- a/_overviews/contribute/guide.md +++ b/_overviews/contribute/guide.md @@ -18,7 +18,7 @@ num: 10 Just to name a few common reasons: * contributing a patch is the best way to make sure your desired changes will be available in the next Scala version -* Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu +* Scala is written in Scala, so going through the source code and patching it will improve your knowledge of Scala. * last but not least, it only takes a few accepted commits to make it into the [Scala Contributor Hall of Fame](https://github.com/scala/scala/contributors). The main Scala project consists of the standard Scala library, the Scala reflection and macros library, diff --git a/_overviews/contribute/hacker-guide.md b/_overviews/contribute/hacker-guide.md index 92181003fa..2a70714f53 100644 --- a/_overviews/contribute/hacker-guide.md +++ b/_overviews/contribute/hacker-guide.md @@ -1,5 +1,5 @@ --- -title: Scala hacker guide +title: Scala 2 Hacker's Guide by: Eugene Burmako num: 12 --- @@ -18,26 +18,27 @@ Though, there's an annoying issue which you occasionally stumble upon: the formatting string interpolator `f` [does not support](https://github.com/scala/bug/issues/6725) new line tokens `%n`. -One approach would be to go the mailing list, request that the bug be fixed, and then to wait indefinitely for the fix arrive. Another approach would be to instead patch Scala oneself, and to submit the fix to the Scala repository in hopes that it might make it into a subsequent release. +One approach would be to go the [Scala 2 bug tracker](https://github.com/scala/bug), request that the bug be fixed, and then to wait indefinitely for the fix arrive. Another approach would be to instead patch Scala yourself, and to submit the fix to the Scala repository in hopes that it might make it into a subsequent release. **_Of note_**: There are several types of releases/builds. Nightly builds are produced every night at a fixed time. Minor releases happen once every few months. Major releases typically happen once per year. ## 1. Connect -Sometimes it's appealing to hack alone and not to have to interact with others out of fear, or out of comfort. However, in the context a big project such as Scala, -this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide +Sometimes it's appealing to hack alone and not to have to interact with others. However, in the context a big project such as Scala, there might be better ways. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists](https://scala-lang.org/community/index.html#forums) to find out how people feel -about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help -by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. +Typically bug fixes and new features start out as an idea or an experiment posted on one of [our forums](https://scala-lang.org/community/index.html#forums) to find out how people feel +about things you want to implement. People proficient in certain areas of Scala usually monitor forums and discussion rooms, so you'll often get some help by posting a message. +But the most efficient way to connect is to mention in your message one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. A list of language features/libraries along with their maintainer's full names and GitHub usernames is [in the Scala repo README](https://github.com/scala/scala#get-in-touch). In our running example, since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. -As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the [Scala Contributors](https://contributors.scala-lang.org/) mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, -in this example, we post to the [the scala-user mailing list](https://groups.google.com/group/scala-user) about our issue. +As alluded to earlier, one must also choose an appropriate avenue to discuss the issue. Typically, one would use the [Scala Contributor's Forum][contrib-forum], as there are post categories devoted to discussions about the core internal design and implementation of the Scala system. + +In this example, the issue was previously discussed on the (now unused) scala-user mailing list, at the time, +we would have posted to the [the (now unused) scala-user mailing list](https://groups.google.com/group/scala-user) about our issue: Posting to scala-user Response from Martin @@ -86,10 +87,11 @@ Before you start making changes, always create your own branch. Never work on th the changes you plan on making. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: bug fixes and new features. -* For bug fixes, use `issue/NNNN` or `ticket/NNNN` for bug NNNN from the [Scala bug tracker](https://github.com/scala/bug). -* For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. +* For bug fixes, use `issue/NNNN` or `ticket/NNNN` for bug `NNNN` from the [Scala bug tracker](https://github.com/scala/bug). +* For new feature use `topic/XXX` for feature `XXX`. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. -Since in our example, we're going to fix an existing bug [6725](https://github.com/scala/bug/issues/6725), we'll create a branch named `ticket/6725`. +Since in our example, we're going to fix an existing bug +[scala/bug#6725](https://github.com/scala/bug/issues/6725), we'll create a branch named `ticket/6725`. 16:39 ~/Projects/scala (master)$ git checkout -b ticket/6725 Switched to a new branch 'ticket/6725' @@ -102,13 +104,13 @@ The next step after cloning your fork is setting up your machine to build Scala. You need the following tools: -* A Java SDK. The baseline version is 6 for 2.11.x and 8 for 2.12.x. It's possible to use a later SDK for local development, but the continuous integration builds will verify against the baseline version. +* A Java JDK. The baseline version is `8` for 2.13.x and higher. It's possible to use a higher JDK version for local development, but the continuous integration builds will verify against the baseline version. * `sbt`, an interactive build tool commonly used in Scala projects. Acquiring sbt manually is not necessary -- the recommended approach is to download the [sbt-extras runner script](https://github.com/paulp/sbt-extras/blob/master/sbt) and use it in place of `sbt`. The script will download and run the correct version of sbt when run from the Scala repository's root directory. * `curl` -- the build uses `curl` in the `pull-binary-libs.sh` script to download bootstrap libs. -OS X and Linux builds should work. Windows is supported, but it might have issues. Please report to the [Scala bug tracker](https://github.com/scala/bug) if you encounter any. +macOS and Linux builds should work. Windows is supported, but it might have issues. Please report to the [Scala 2 bug tracker](https://github.com/scala/bug) if you encounter any. -Building Scala is as easy as running `sbt dist/mkPack` in the root of your cloned repository. In general, it's much more efficient to enter the `sbt` shell once and run the various tasks from there, instead of running each task by launching `sbt some-task` on your command prompt. +Building Scala can be done with a single command `sbt dist/mkPack`, from the root of your cloned repository. In general, it's much more efficient to enter the `sbt` shell once and run the various tasks from there, instead of running each task by launching `sbt some-task` on your command prompt. Be prepared to wait for a while -- a full "clean" build takes 5+ minutes depending on your machine (longer on older machines with less memory). On a recent laptop, incremental builds usually complete within 10-30 seconds. @@ -116,16 +118,13 @@ Be prepared to wait for a while -- a full "clean" build takes 5+ minutes dependi There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. -Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. -Both of those Scala plugins provide navigation, refactoring, error reporting functionality, and integrated debugging. -See [the Scala README](https://github.com/scala/scala#ide-setup) for instructions on using Eclipse and IntelliJ IDEA with the Scala repository. +IntelliJ IDEA has a Scala plugin, which is known to work with our codebase. Alternatively you can use Visual Studio Code with the [Metals IDE extension](https://marketplace.visualstudio.com/items?itemName=scalameta.metals). +Both of these Scala IDE solutions provide navigation, refactoring, error reporting functionality, and integrated debugging. +See [the Scala README](https://github.com/scala/scala#ide-setup) for instructions on using either IntelliJ IDEA or Metals with the Scala repository. -There also exist lighter-weight editors such as Emacs, Sublime or jEdit which are faster and much less memory/compute-intensive to run, while -lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, -a helper program, which hosts a resident Scala compiler providing some of the features implemented in traditional IDEs. However despite -having significantly matured over the last year, support for our particular code base is still being improved, and is not as mature as for Eclipse and IntelliJ. +Other alternative editors exist, such as Atom, Emacs, Sublime Text or jEdit. These are faster and much less memory/compute-intensive to run, but lack semantic services and debugging. -Due to the immense variability in personal preference between IDE/editor experience, it's difficult to recommend a particular tool, and your choice should boil down to your personal preferences. +We recognise that there exist preferences towards specific IDE/editor experiences, so ultimately we recommend that your choice be your personal preference. ## 3. Hack @@ -156,7 +155,7 @@ Now, implement your bugfix or new feature! Here are also some tips & tricks that have proven useful in Scala development: * After building your working copy with the `compile` sbt task, there's no need to leave the comfort of your sbt shell to try it out: the REPL is available as the `scala` task, and you can also run the compiler using the `scalac` task. If you prefer to run the REPL outside sbt, you can generate the scripts in `build/quick/bin` using the `dist/mkQuick` task. -* The sbt workflow is also great for debugging, as you can simply create a remote debugging session in your favorite IDE, and then activate the JVM options for the next time you run the `scala` or `scalac` tasks using: +* The sbt workflow is also great for debugging, as you can create a remote debugging session in your favorite IDE, and then activate the JVM options for the next time you run the `scala` or `scalac` tasks using: ``` > set javaOptions in compiler := List("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8002") @@ -167,9 +166,8 @@ Listening for transport dt_socket at address: 8002 * Also see [the Scala README](https://github.com/scala/scala#incremental-compilation) for tips on speeding up compile times. * If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, try the `clean` task and building again. -* Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how - things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious - to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. +* Don't underestimate the power of using `println` to print debug information. When starting with Scala, I spent a lot of time in the debugger trying to figure out how + things work. However later I found out that print-based debugging is often more effective than jumping around. It's also useful to print stack traces to understand the flow of execution, for example what code executed before some action occurred. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. * You can publish your newly-built scala version locally using the `publishLocal` task in sbt. * It's convenient to enable the following local settings to speed up your workflow (put these in `local.sbt` in your working copy): @@ -184,33 +182,33 @@ testOptions in IntegrationTest in LocalProject("test") ++= Seq(Tests.Argument("- // antStyle := true ``` -* Adding a macro to the `Predef` object is a pretty involved task. Due to bootstrapping, you cannot just throw a macro into it. For this reason, the process is more involved. You might want to follow the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (`def fn = macro ???`). Now you have to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. [Here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. +* Adding a macro to the `Predef` object is a pretty involved task. Due to bootstrapping, it makes it more complex to add a macro. For this reason, the process is more involved. It could be useful to replicate the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (it will look like `def fn = macro ???`). Now you have to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. [Here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. -### Documentation +### Where to Find Documentation -There are several areas that one could contribute to -- there is the Scala library, the Scala compiler, and other tools such as Scaladoc. Each area has varying amounts of documentation. +The separate projects under Scala have varying amounts of documentation: ##### The Scala Library -Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left the code cleaner than you found it). +Contributing to the Scala standard library is about the same as working on one of your own libraries. If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. -If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections][collections-arch], as well as a larger more general [Scala collections Guide][collections-intro] covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide][collections-par]. +The Scala collections framework, part of the Scala standard library, is more complex. You should become familiar +with its architecture, which is documented in [the Architecture of Scala Collections][collections-arch]. +The [Scala Collections Guide][collections-intro] is more general, covering the synchronous portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide][collections-par]. ##### The Scala Compiler -Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email ([Scala Contributors](https://contributors.scala-lang.org/) mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: +Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by forum ([Scala Contributors](https://contributors.scala-lang.org/) forum), chat-rooms (see `#scala-contributors` on [Discord][discord-contrib]), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: * [Compiler internals videos by Martin Odersky](https://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video - series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. + series Martin explains the general architecture of the compiler, and the basics of the front-end, which later became the `scala-reflect` module's API. * [Reflection documentation][reflect-overview] describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that - are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. -* [Reflection and Compilers by Martin Odersky](https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk - at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. + are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the `scala-reflect` module, all of the fundamentals needed for reflection are the same for the compiler. * [Scala compiler corner](https://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about most of the post-typer phases (i.e. the backend) in the Scala compiler. -* [Scala Contributors](https://contributors.scala-lang.org/), a mailing list which hosts discussions about the core +* [Scala Contributors](https://contributors.scala-lang.org/), a forum which hosts discussions about the core internal design and implementation of the Scala system. ##### Other Projects @@ -303,7 +301,7 @@ Here are some more testing tips: ... Finished: FAILURE -This means your change is backward or forward binary incompatible with the specified version (the check is performed by the [migration manager](https://github.com/typesafehub/migration-manager)). The error message is actually saying what you need to add to `bincompat-backward.whitelist.conf` or `bincompat-forward.whitelist.conf` to make the error go away. If you are getting this on an internal/experimental api, it should be safe to add suggested sections to the config. Otherwise, you might want to target a newer version of scala for this change. +This means your change is backward or forward binary incompatible with the specified version (the check is performed by the [migration manager](https://github.com/typesafehub/migration-manager)). The error message is actually saying what you need to modify `project/MimaFilters.scala` to make the error go away. If you are getting this on an internal/experimental api, it should be safe to add suggested sections to the config. Otherwise, you might want to target a newer version of scala for this change. ### Verify @@ -380,7 +378,10 @@ Note that there can be a gap between a successful review and the merge, because So don't be confused if your reviewer says “LGTM”, but your code doesn't get merged immediately. [collections-arch]: {% link _overviews/core/architecture-of-scala-collections.md %} -[collections-intro]: {% link _overviews/collections/introduction.md %} +[collections-intro]: {% link _overviews/collections-2.13/introduction.md %} [collections-par]: {% link _overviews/parallel-collections/overview.md %} [reflect-overview]: {% link _overviews/reflection/overview.md %} [partest-guide]: {% link _overviews/contribute/partest-guide.md %} +[documentation]: {% link _overviews/contribute/documentation.md %} +[contrib-forum]: https://contributors.scala-lang.org/ +[discord-contrib]: https://discord.com/invite/scala diff --git a/_overviews/contribute/partest-guide.md b/_overviews/contribute/partest-guide.md index c3e6980b06..c8eb5cbf02 100644 --- a/_overviews/contribute/partest-guide.md +++ b/_overviews/contribute/partest-guide.md @@ -9,21 +9,27 @@ Partest is a custom parallel testing tool that we use to run the test suite for The test suite can be run from the sbt console with: - > partest +``` +sbt:root> partest +``` You can get a summary of the usage by running `partest --help`. If you would like to run particular tests pass the test paths as arguments - > partest test/files/pos/bounds.scala test/scaladoc/run/diagrams-base.scala +``` +sbt:root> partest test/files/pos/bounds.scala test/scaladoc/run/diagrams-base.scala +``` To run only the Scaladoc tests use `--srcpath` with the location of the tests - > partest --srcpath scaladoc +``` +sbt:root> partest --srcpath scaladoc +``` ## Using ant -Please note support for ant was removed on the 2.12 branch. +> Please note support for ant was removed on the 2.12 branch. The test suite can be run by using ant from the command line: diff --git a/_overviews/contribute/scala-standard-library-api-documentation.md b/_overviews/contribute/scala-standard-library-api-documentation.md index c1303e8b18..a6c812b7e4 100644 --- a/_overviews/contribute/scala-standard-library-api-documentation.md +++ b/_overviews/contribute/scala-standard-library-api-documentation.md @@ -21,16 +21,14 @@ contribution steps and guidelines. Thank you.* Since API documentation is located in Scala source code files, the process for contributing API documentation is similar to that of contributing bug-fixes to the Scala code base, but without the requirement that there be an issue filed on GitHub -first. When forking/branching, just use a `scaladoc/xxxx` branch name, where xxxx is a +first. When forking/branching, it would help to use a `scaladoc/xxxx` branch name, where `xxxx` is a descriptive, but short branch name (e.g. `scaladoc/future-object`). -However, if an issue *does* exist, please use `issue/NNNN`, where NNNN is the ticket number, +However, if an issue *does* exist, please use `issue/NNNN`, where `NNNN` is the ticket number, instead. -If you would like to assist us by helping us find missing documentation and -submitting bug reports for existing documentation, -[please read the following section](#contribute-api-documentation-bug-reports). -If you want to contribute new API documentation, -[jump down to the next section](#contribute-new-api-documentation). +If you would like to assist us, you can +[report missing/incorrect API documentation](#contribute-api-documentation-bug-reports), or +[contribute new API documentation](#contribute-new-api-documentation). ## Contribute API Documentation Bug Reports @@ -45,8 +43,8 @@ If you find an issue, please log it in the [Scala bug tracker](https://github.co **after making sure it is not already logged as an issue**. To help with disambiguation, please use the following format for issue title: -* Use an action describing the work required. E.g. Add, Document, Correct, Remove -* Use the full package, class/trait/object name (or state package object if +* Use an action describing the work required, e.g. **Add**, **Document**, **Correct**, **Remove**. +* Use the full package, class/trait/object/enum name (or state package object if that is the case). * Extremely short description of what to do. * More detail can (and should) go into the issue description, including a short @@ -60,10 +58,10 @@ Here is an example of the title and description for an example API documentation and the description: -`The methods on the Future companion object are critical` -`for using Futures effectively without blocking. Provide code` -`examples of how methods like sequence, transform, fold and` -`firstCompletedOf should be used.` +> The methods on the `Future` companion object are critical +> for using Futures effectively without blocking. Provide code +> examples of how methods like `sequence`, `transform`, `fold` and +> `firstCompletedOf` should be used. In addition to following these conventions, please add `documentation` and `community` labels to the issue, and put them in the `Documentation and API` @@ -93,9 +91,8 @@ new API documentation to save time, effort, mistakes and repetition. the whole document though, and pay close attention to the title and commit message formats, noting *present tense*, *length limits* and that it must merge cleanly. Remember that the title of the pull request will become the commit - message when merged. **Also**, be sure to assign one or more reviewers to the PR, list of - reviewers is at the bottom of this document, but the quick version is to add - `Review by @heathermiller` or `Review by @dickwall` **in the pull request comments**. + message when merged. **Also**, be sure to assign one or more reviewers to the PR, if this is + not possible for you, you could mention a user in **in the pull request comments**. ### Extra Requirements for Scaladoc Documentation Commits @@ -106,9 +103,9 @@ PR is merged in smoothly: * Any and all code examples provided should *be correct, compile and run* as expected (ensure this in the REPL or your IDE). * Spelling must be checked for all written language *and* code examples where - possible. Most editors have some spell checking feature available. Obviously - Scala code is likely to flag as mis-spelled sometimes, but any written language - should be checked. If you can also use a grammar checker, even better. We + possible. Most editors have some spell checking feature available. Scala code + itself is permitted to not pass a spell-checker, however any written language + should be checked. If you can also use a grammar checker, it will help. We *will* ask for spelling and grammar to be corrected before acceptance. * You **must** also run `sbt doc`, fix any problems and check the formatting and layout of your changes. Again, corrections will be required if formatting or From 8c3c443440ea72588a6bf8f35aeebfcad8ce464c Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Wed, 30 Mar 2022 17:00:52 +0200 Subject: [PATCH 0402/1704] remove contribute from nav bar --- _data/nav-header.yml | 7 ------- _includes/site-header.html | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/_data/nav-header.yml b/_data/nav-header.yml index 03621e6d64..b04b23ca78 100644 --- a/_data/nav-header.yml +++ b/_data/nav-header.yml @@ -1,17 +1,10 @@ - title: Documentation url: "/" - can-highlight: true - title: Download url: https://www.scala-lang.org/download/ - can-highlight: true - title: Community url: https://www.scala-lang.org/community/ - can-highlight: true - title: Libraries url: https://index.scala-lang.org - can-highlight: true -- title: Contribute - url: /contribute/ - title: Blog url: https://www.scala-lang.org/blog/ - can-highlight: true diff --git a/_includes/site-header.html b/_includes/site-header.html index 70f1cb6840..d2583b913f 100644 --- a/_includes/site-header.html +++ b/_includes/site-header.html @@ -10,7 +10,7 @@ From e99b6c664acc165fe48ee8307139c3cebb4a0173 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 30 Mar 2022 18:21:18 +0200 Subject: [PATCH 0403/1704] Recommend using the Scala Improvement Process category only instead of cross-posting on two categories. --- _sips/sip-submission.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/_sips/sip-submission.md b/_sips/sip-submission.md index e2efb5ec2a..4d9ae53a40 100644 --- a/_sips/sip-submission.md +++ b/_sips/sip-submission.md @@ -53,11 +53,10 @@ There are four major steps in the SIP process: Before submitting a SIP, it is required that you perform necessary preparations: -Discuss your idea on the [Scala Contributors Page](https://contributors.scala-lang.org/) (currently, we suggest -cross-posting on -[Scala Improvement Process](https://contributors.scala-lang.org/c/sip) and -[Language Design](https://contributors.scala-lang.org/c/language-design). This -may change in the future.) Create a topic that starts with “Pre-SIP” and briefly +Discuss your idea on the [Scala Contributors Page](https://contributors.scala-lang.org/) (we suggest +posting in the category +[Scala Improvement Process](https://contributors.scala-lang.org/c/sip)). +Create a topic that starts with “Pre-SIP” and briefly describe what you would like to change and why you think it’s a good idea. Proposing your ideas on the mailing list is not an optional step. For every From 640c86c471fcaed944350565e9094d90ef1b4a2e Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Thu, 31 Mar 2022 00:53:26 -0700 Subject: [PATCH 0404/1704] Simplify example and minimize diff --- _tour/lower-type-bounds.md | 40 ++++++++++++++------------------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/_tour/lower-type-bounds.md b/_tour/lower-type-bounds.md index 548ffb733b..9f5cd53b89 100644 --- a/_tour/lower-type-bounds.md +++ b/_tour/lower-type-bounds.md @@ -16,42 +16,32 @@ While [upper type bounds](upper-type-bounds.html) limit a type to a subtype of a Here is an example where this is useful: ```scala mdoc:fail -trait Node[+B] { - def prepend(elem: B): Node[B] +trait List[+B] { + def prepend(elem: B): NonEmptyList[B] = NonEmptyList(elem, this) } -case class ListNode[+B](h: B, t: Node[B]) extends Node[B] { - def prepend(elem: B): ListNode[B] = ListNode(elem, this) - def head: B = h - def tail: Node[B] = t -} +case class NonEmptyList[+B](head: B, tail: List[B]) extends List[B] -case class Nil[+B]() extends Node[B] { - def prepend(elem: B): ListNode[B] = ListNode(elem, this) -} +object Nil extends List[Nothing] ``` -This program implements a singly-linked list. `Nil` represents an empty element (i.e. an empty list). `class ListNode` is a node which contains an element of type `B` (`head`) and a reference to the rest of the list (`tail`). The `class Node` and its subtypes are covariant because we have `+B`. +This program implements a singly-linked list. `Nil` represents an empty list with no elements. `class NonEmptyList` is a node which contains an element of type `B` (`head`) and a reference to the rest of the list (`tail`). The `trait List` and its subtypes are covariant because we have `+B`. However, this program does _not_ compile because the parameter `elem` in `prepend` is of type `B`, which we declared *co*variant. This doesn't work because functions are *contra*variant in their parameter types and *co*variant in their result types. To fix this, we need to flip the variance of the type of the parameter `elem` in `prepend`. We do this by introducing a new type parameter `U` that has `B` as a lower type bound. ```scala mdoc -trait Node[+B] { - def prepend[U >: B](elem: U): Node[U] +trait List[+B] { + def prepend[U >: B](elem: U): NonEmptyList[U] = NonEmptyList(elem, this) } -case class ListNode[+B](head: B, tail: Node[B]) extends Node[B] { - def prepend[U >: B](elem: U): ListNode[U] = ListNode(elem, this) -} +case class NonEmptyList[+B](head: B, tail: List[B]) extends List[B] -object Nil extends Node[Nothing] { - def prepend[U >: Nothing](elem: U): ListNode[U] = ListNode(elem, this) -} +object Nil extends List[Nothing] ``` -We have also simplified `ListNode` to leverage its `case class` fields, and `Nil` to be a singleton object; it is a "node of nothing" because it does not hold an element. The type parameter for `Node` is `B` to suggest we want to store birds at each node. +The type parameter for `List` is `B` to suggest we want to keep lists of birds. Now we can do the following: ```scala mdoc @@ -59,11 +49,11 @@ trait Bird case class AfricanSwallow() extends Bird case class EuropeanSwallow() extends Bird -val africanSwallows: Node[AfricanSwallow] = ListNode[AfricanSwallow](AfricanSwallow(), Nil) -val swallowsFromAntarctica: Node[Bird] = Nil +val africanSwallows: List[AfricanSwallow] = Nil.prepend(AfricanSwallow()) +val swallowsFromAntarctica: List[Bird] = Nil // assign swallows to birds -val birds: Node[Bird] = africanSwallows +val birds: List[Bird] = africanSwallows // add a swallow to birds val moreBirds = birds.prepend(EuropeanSwallow()) @@ -71,11 +61,11 @@ val moreBirds = birds.prepend(EuropeanSwallow()) // add disparate swallows together to get birds val allBirds = africanSwallows.prepend(EuropeanSwallow()) -// but this is a mistake! adding a Node to birds widens the type arg too much. -Xlint will warn! +// but this is a mistake! adding a list of birds widens the type arg too much. -Xlint will warn! val error = moreBirds.prepend(swallowsFromAntarctica) ``` The covariant type parameter allows `birds` to get the value of `africanSwallows`. -The type bound on the type parameter for `prepend` allows adding different varieties of swallows and getting a wider type: instead of `Node[AfricanSwallow]`, we get a `Node[Bird]`. +The type bound on the type parameter for `prepend` allows adding different varieties of swallows and getting a wider type: instead of `List[AfricanSwallow]`, we get a `List[Bird]`. The canary in the coal mine is `-Xlint`, which will warn if the type arg is widened too much. From 0bd08091e2cbccdd3d1f9fdeaa49911ba14fdcaa Mon Sep 17 00:00:00 2001 From: Andrea Mucciarelli Date: Thu, 31 Mar 2022 09:56:08 +0200 Subject: [PATCH 0405/1704] Getting started - sbt track - italian translations (#2239) Co-authored-by: Dale Wijnand --- ...-with-scala-and-sbt-on-the-command-line.md | 79 ++++++++++++++ ...ting-scala-with-sbt-on-the-command-line.md | 101 ++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 _it/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md create mode 100644 _it/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md diff --git a/_it/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md b/_it/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md new file mode 100644 index 0000000000..0de0347ca5 --- /dev/null +++ b/_it/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md @@ -0,0 +1,79 @@ +--- +title: Primi passi su scala e sbt con la linea di comando +layout: singlepage-overview +partof: getting-started-with-scala-and-sbt-on-the-command-line +language: it +disqus: true +next-page: /it/testing-scala-with-sbt-on-the-command-line +--- + +In questo tutorial si vedrà come creare un progetto Scala a partire da un template, che può essere usato come punto di partenza anche per progettti personali. +Lo strumento utilizzato per tale scopo è [sbt](https://www.scala-sbt.org/1.x/docs/index.html), che è lo standard di build per Scala. +sbt permette di compilare, eseguire e testare i tuoi progetti, ma permette di svolgere anche altri compiti. +Si presuppone una conoscenza dell'uso della linea di comando. + +## Installazione +1. Assicurarsi di avere la Java 8 JDK (conosciuta anche come 1.8) installata + * Per verificarlo, eseguire `javac -version` da linea di comando e controllare che nell'output sia riportato + `javac 1.8.___` + * Se non si possiede la versione 1.8 o superiore, installarla seguendo [queste indicazioni](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) +1. Installare sbt + * [Mac](https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html) + * [Windows](https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Windows.html) + * [Linux](https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Linux.html) + +## Creare il progetto +1. Eseguire il comando `cd` specificando una cartella vuota per spostarsi in essa. +1. Eseguire il comando `sbt new scala/hello-world.g8`. Questo effettuerà una pull del template 'hello-world' da GitHub. + Si occuperà inoltre di creare la cartella `target`, che per ora può essere ignorata. +1. Quando richiesto verrà richiesto il nome dell'applicazione, indicare `hello-world`. In questo modo verrà creato un progetto chiamato "hello-world". +1. Osserviamo cosa è stato generato una volta eseguiti i passaggi sopra riportati: + +``` +- hello-world + - project (sbt usa questa cartella per installare e gestire plugins e dipendenze) + - build.properties + - src + - main + - scala (Tutto il codice scala che viene scritto dovrà andare qui) + - Main.scala (Entry point dell'applicazione) <-- per ora è tutto ciò che ci servirà + - build.sbt (il file di definizione della build interpretato da sbt) +``` + +Una volta che verrà buildato il progetto, sbt creerà diverse cartelle `target` per i file generati. Possono essere ignorate per lo scopo di questo tutorial. + +## Eseguire il progetto +1. `cd` nella cartella `hello-world`. +1. Lanciare il comando `sbt`. Questo aprirà la console di sbt. +1. Eseguire `~run`. Il carattere `~` è opzionale. Indica ad sbt di eseguirsi ad ogni salvataggio di un file, permettendo un ciclo di modifica, esecuzione e debug più veloce. sbt genererà anche una cartella chiamata `target` che può essere ignorata. + +## Modificare il codice +1. Aprire il file `src/main/scala/Main.scala` in un qualsiasi editor di testo. +1. Modificare "Hello, World!" in "Hello, New York!" +1. Se non è stato interrotto il comando sbt, dovrebbe ora apparire "Hello, New York!" sulla console. +1. Si può continuare a modificare il file, e le modifiche dovrebbero apparire a schermo se non vengono riportati errori. + +## Aggiungere una dipendenza +Vediamo ora come utilizzare librerie pubblicate da terzi per aggiungere ulteriori funzionalità alle nostre applicazioni. + +1. Aprire il file `build.sbt` con un qualsiasi editor di testo e aggiungere la seguente riga: + +``` +libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2" +``` +`libraryDependencies` è un set (un tipo di collection in scala), e utilizzando il simbolo `+=`, +si sta aggiungendo la dipendenza [scala-parser-combinators](https://github.com/scala/scala-parser-combinators) al set di dipendenze che sbt fetcherà quando verà inizializzato. +Una volta eseguito questo passaggio, sarà possibile importare classi, object ed altro da scala-parser-combinators tramite una semplice istruzione di import. + +Ulteriori librerie pubblicate possono essere trovate sul sito +[Scaladex](https://index.scala-lang.org/), dove è possibile copiare le informazioni delle dipendenze cercate nel file `build.sbt`. + +## Next steps + +Si consiglia di continuare al tutorial successivo della serie _getting started with sbt_ , ed imparare a [testare il codice Scala con sbt tramite linea di comando](testing-scala-with-sbt-on-the-command-line.html). + +**oppure** + +- Continuare ad imparare Scala online e in maniera interattiva su + [Scala Exercises](https://www.scala-exercises.org/scala_tutorial). +- Imparare le feature di Scala tramite articoli più concisi su [Tour of Scala]({{ site.baseurl }}/tour/tour-of-scala.html). \ No newline at end of file diff --git a/_it/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md b/_it/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md new file mode 100644 index 0000000000..cac6f0953a --- /dev/null +++ b/_it/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md @@ -0,0 +1,101 @@ +--- +title: Testare scala con sbt da linea di comando +layout: singlepage-overview +partof: testing-scala-with-sbt-on-the-command-line +language: it +disqus: true +previous-page: /it/getting-started-with-scala-and-sbt-on-the-command-line +--- + +Ci sono diverse librerie e modalità per testare il codice Scala, ma in questo tutorial verrà mostrato come eseguire il testing usando [AnyFunSuite](https://www.scalatest.org/scaladoc/3.2.2/org/scalatest/funsuite/AnyFunSuite.html) del framework ScalaTest. +Si assume che si sappia [creare un progetto Scala con sbt](getting-started-with-scala-and-sbt-on-the-command-line.html). + +## Setup +1. Da linea di comando, creare una nuova directory in una posizione a propria scelta. +1. `cd` nella cartella appena creata ed eseguire `sbt new scala/scalatest-example.g8` +1. Quando richiesto, rinominare il progetto come `ScalaTestTutorial`. +1. Il progetto avrà già in se la libreria ScalaTest come dipendenza indicata nel file `build.sbt`. +1. `cd` nel progetto ed eseguire `sbt test`. Questo eseguirà la test suite +`CubeCalculatorTest` con un unico test chiamato `CubeCalculator.cube`. + +``` +sbt test +[info] Loading global plugins from /Users/username/.sbt/0.13/plugins +[info] Loading project definition from /Users/username/workspace/sandbox/my-something-project/project +[info] Set current project to scalatest-example (in build file:/Users/username/workspace/sandbox/my-something-project/) +[info] CubeCalculatorTest: +[info] - CubeCalculator.cube +[info] Run completed in 267 milliseconds. +[info] Total number of tests run: 1 +[info] Suites: completed 1, aborted 0 +[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0 +[info] All tests passed. +[success] Total time: 1 s, completed Feb 2, 2017 7:37:31 PM +``` + +## Comprendere i test +1. In qualsiasi editor di testo aprire i seguenti due file: + * `src/main/scala/CubeCalculator.scala` + * `src/test/scala/CubeCalculatorTest.scala` +1. Nel file `CubeCalculator.scala`, è riportata la definizione della funzione `cube`. +1. Nel file `CubeCalculatorTest.scala`, è presente una classe chiamata allo stesso modo dell'oggetto che stiamo testando. + +``` + import org.scalatest.funsuite.AnyFunSuite + + class CubeCalculatorTest extends AnyFunSuite { + test("CubeCalculator.cube") { + assert(CubeCalculator.cube(3) === 27) + } + } +``` + +Analizziamo ogni riga di codice. + +* `class CubeCalculatorTest` significa che stiamo testando l'oggetto `CubeCalculator` +* `extends AnyFunSuite` ci permette di utilizzare la funzionalità della classe AnyFunSuite, come ad esempio la funzione `test` +* `test` è una funzione proveniente da AnyFunSuite che raccoglie i risultati delle asserzioni all'interno del corpo della funzione. +* `"CubeCalculator.cube"` è il nome del test. Può essere chiamato in qualsiasi modo, ma la convenzione è "NomeClasse.nomeMetodo". +* `assert` prende una condizione booleana e stabilisce se il test è superato o no. +* `CubeCalculator.cube(3) === 27` controlla se l'output della funzione `cube` sia realmente 27. +Il simbolo `===` è parte di ScalaTest e restituisce messaggi di errore comprensibili. + +## Aggiungere un altro test case +1. Aggiungere un altro blocco di testo contenente il proprio enunciato `assert` che verificherà il cubo di `0`. + + ``` + import org.scalatest.funsuite.AnyFunSuite + + class CubeCalculatorTest extends AnyFunSuite { + test("CubeCalculator.cube 3 should be 27") { + assert(CubeCalculator.cube(3) === 27) + } + + test("CubeCalculator.cube 0 should be 0") { + assert(CubeCalculator.cube(0) === 0) + } + } + ``` + +1. Lanciare `sbt test` nuovamente e controllare i risultati. + + ``` + sbt test + [info] Loading project definition from C:\projects\scalaPlayground\scalatestpractice\project + [info] Loading settings for project root from build.sbt ... + [info] Set current project to scalatest-example (in build file:/C:/projects/scalaPlayground/scalatestpractice/) + [info] Compiling 1 Scala source to C:\projects\scalaPlayground\scalatestpractice\target\scala-2.13\test-classes ... + [info] CubeCalculatorTest: + [info] - CubeCalculator.cube 3 should be 27 + [info] - CubeCalculator.cube 0 should be 0 + [info] Run completed in 257 milliseconds. + [info] Total number of tests run: 2 + [info] Suites: completed 1, aborted 0 + [info] Tests: succeeded 2, failed 0, canceled 0, ignored 0, pending 0 + [info] All tests passed. + [success] Total time: 3 s, completed Dec 4, 2019 10:34:04 PM + ``` + +## Conclusioni +In questo tutorial è stato mostrato una delle modalità per testare il codice Scala. Per saperne di più su FunSuite si può consultare [il sito ufficiale](https://www.scalatest.org/getting_started_with_fun_suite). +Si possono anche consultare altri framework di testing come [ScalaCheck](https://www.scalacheck.org/) e [Specs2](https://etorreborre.github.io/specs2/). From 100ba0eb73d497874afc0e7c3c3a07c2b9405e4e Mon Sep 17 00:00:00 2001 From: Ondrej Lhotak Date: Thu, 31 Mar 2022 11:07:03 +0200 Subject: [PATCH 0406/1704] add instructions for viewing contents of .tasty files to Tasty Overview --- scala3/guides/tasty-overview.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scala3/guides/tasty-overview.md b/scala3/guides/tasty-overview.md index 11d0fa3608..1bf643bebd 100644 --- a/scala3/guides/tasty-overview.md +++ b/scala3/guides/tasty-overview.md @@ -52,6 +52,13 @@ $ scalac | Hello.scala | -> | Hello.tasty | -> | Hello.class | information) ``` +You can view the contents of a _.tasty_ file in a human-readable form by running the compiler on it with the `-print-tasty` flag. +You can also view the contents decompiled in a form similar to Scala source code using the `-decompile` flag. +```bash +$ scalac -print-tasty hello.tasty +$ scalac -decompile hello.tasty +``` + ### The issue with _.class_ files Because of issues such as [type erasure][erasure], _.class_ files are actually an incomplete representation of your code. From 6d41790cd92819c3f645342eb8bfd5d779294032 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 31 Mar 2022 11:30:57 +0200 Subject: [PATCH 0407/1704] Add scastie, rename top links --- _data/nav-header.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/_data/nav-header.yml b/_data/nav-header.yml index b04b23ca78..eeaa88291c 100644 --- a/_data/nav-header.yml +++ b/_data/nav-header.yml @@ -1,10 +1,12 @@ -- title: Documentation +- title: Learn url: "/" -- title: Download +- title: Install url: https://www.scala-lang.org/download/ +- title: Playground + url: https://scastie.scala-lang.org +- title: Find A Library + url: https://index.scala-lang.org - title: Community url: https://www.scala-lang.org/community/ -- title: Libraries - url: https://index.scala-lang.org - title: Blog url: https://www.scala-lang.org/blog/ From f69fb47e4ad56bc419efbcb6ca8739555728635a Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Thu, 31 Mar 2022 04:34:41 -0700 Subject: [PATCH 0408/1704] Normalize type param and add clarity per review --- _tour/lower-type-bounds.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/_tour/lower-type-bounds.md b/_tour/lower-type-bounds.md index 9f5cd53b89..f4191b425b 100644 --- a/_tour/lower-type-bounds.md +++ b/_tour/lower-type-bounds.md @@ -16,33 +16,30 @@ While [upper type bounds](upper-type-bounds.html) limit a type to a subtype of a Here is an example where this is useful: ```scala mdoc:fail -trait List[+B] { - def prepend(elem: B): NonEmptyList[B] = NonEmptyList(elem, this) +trait List[+A] { + def prepend(elem: A): NonEmptyList[A] = NonEmptyList(elem, this) } -case class NonEmptyList[+B](head: B, tail: List[B]) extends List[B] +case class NonEmptyList[+A](head: A, tail: List[A]) extends List[A] object Nil extends List[Nothing] ``` -This program implements a singly-linked list. `Nil` represents an empty list with no elements. `class NonEmptyList` is a node which contains an element of type `B` (`head`) and a reference to the rest of the list (`tail`). The `trait List` and its subtypes are covariant because we have `+B`. +This program implements a singly-linked list. `Nil` represents an empty list with no elements. `class NonEmptyList` is a node which contains an element of type `A` (`head`) and a reference to the rest of the list (`tail`). The `trait List` and its subtypes are covariant because we have `+A`. -However, this program does _not_ compile because the parameter `elem` in `prepend` is of type `B`, which we declared *co*variant. This doesn't work because functions are *contra*variant in their parameter types and *co*variant in their result types. +However, this program does _not_ compile because the parameter `elem` in `prepend` is of type `A`, which we declared *co*variant. This doesn't work because functions are *contra*variant in their parameter types and *co*variant in their result types. -To fix this, we need to flip the variance of the type of the parameter `elem` in `prepend`. We do this by introducing a new type parameter `U` that has `B` as a lower type bound. +To fix this, we need to flip the variance of the type of the parameter `elem` in `prepend`. We do this by introducing a new type parameter `B` that has `A` as a lower type bound. ```scala mdoc -trait List[+B] { - def prepend[U >: B](elem: U): NonEmptyList[U] = NonEmptyList(elem, this) +trait List[+A] { + def prepend[B >: A](elem: B): NonEmptyList[B] = NonEmptyList(elem, this) } -case class NonEmptyList[+B](head: B, tail: List[B]) extends List[B] +case class NonEmptyList[+A](head: A, tail: List[A]) extends List[A] object Nil extends List[Nothing] ``` - -The type parameter for `List` is `B` to suggest we want to keep lists of birds. - Now we can do the following: ```scala mdoc trait Bird @@ -51,21 +48,25 @@ case class EuropeanSwallow() extends Bird val africanSwallows: List[AfricanSwallow] = Nil.prepend(AfricanSwallow()) val swallowsFromAntarctica: List[Bird] = Nil +val someBird: Bird = EuropeanSwallow() // assign swallows to birds val birds: List[Bird] = africanSwallows +// add some bird to swallows, `B` is `Bird` +val someBirds = africanSwallows.prepend(someBird) + // add a swallow to birds val moreBirds = birds.prepend(EuropeanSwallow()) -// add disparate swallows together to get birds +// add disparate swallows together, `B` is `Bird` because that is the supertype common to both swallows val allBirds = africanSwallows.prepend(EuropeanSwallow()) // but this is a mistake! adding a list of birds widens the type arg too much. -Xlint will warn! -val error = moreBirds.prepend(swallowsFromAntarctica) +val error = moreBirds.prepend(swallowsFromAntarctica) // List[Object] ``` The covariant type parameter allows `birds` to get the value of `africanSwallows`. The type bound on the type parameter for `prepend` allows adding different varieties of swallows and getting a wider type: instead of `List[AfricanSwallow]`, we get a `List[Bird]`. -The canary in the coal mine is `-Xlint`, which will warn if the type arg is widened too much. +Use `-Xlint` to warn if the inferred type arg is widened too much. From 9821a64394baf44857099a69a95dca605b7e1ad3 Mon Sep 17 00:00:00 2001 From: Lixiang Ao Date: Fri, 1 Apr 2022 15:18:59 -0700 Subject: [PATCH 0409/1704] Remove deprecated methods As of 2.13.4, the following methods have been deprecated: - append(elems: A*): ArrayBuffer.this.type - prepend(elems: A*): ArrayBuffer.this.type - trimStart(n: Int): Unit - trimEnd(n: Int): Unit Affected examples are updated in this pr. --- _overviews/scala-book/arraybuffer-examples.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/_overviews/scala-book/arraybuffer-examples.md b/_overviews/scala-book/arraybuffer-examples.md index 8d4dd8ef53..381b593e49 100644 --- a/_overviews/scala-book/arraybuffer-examples.md +++ b/_overviews/scala-book/arraybuffer-examples.md @@ -114,24 +114,22 @@ As a brief overview, here are several methods you can use with an `ArrayBuffer`: ```scala val a = ArrayBuffer(1, 2, 3) // ArrayBuffer(1, 2, 3) a.append(4) // ArrayBuffer(1, 2, 3, 4) -a.append(5, 6) // ArrayBuffer(1, 2, 3, 4, 5, 6) -a.appendAll(Seq(7,8)) // ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8) +a.appendAll(Seq(5, 6)) // ArrayBuffer(1, 2, 3, 4, 5, 6) a.clear // ArrayBuffer() val a = ArrayBuffer(9, 10) // ArrayBuffer(9, 10) a.insert(0, 8) // ArrayBuffer(8, 9, 10) a.insertAll(0, Vector(4, 5, 6, 7)) // ArrayBuffer(4, 5, 6, 7, 8, 9, 10) a.prepend(3) // ArrayBuffer(3, 4, 5, 6, 7, 8, 9, 10) -a.prepend(1, 2) // ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) -a.prependAll(Array(0)) // ArrayBuffer(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) +a.prependAll(Array(0, 1, 2)) // ArrayBuffer(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val a = ArrayBuffer.range('a', 'h') // ArrayBuffer(a, b, c, d, e, f, g) a.remove(0) // ArrayBuffer(b, c, d, e, f, g) a.remove(2, 3) // ArrayBuffer(b, c, g) val a = ArrayBuffer.range('a', 'h') // ArrayBuffer(a, b, c, d, e, f, g) -a.trimStart(2) // ArrayBuffer(c, d, e, f, g) -a.trimEnd(2) // ArrayBuffer(c, d, e) +a.dropInPlace(2) // ArrayBuffer(c, d, e, f, g) +a.dropRightInPlace(2) // ArrayBuffer(c, d, e) ``` From f7afc59478816fbfaf4c1991d22fc4d1f900daa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Krenski?= Date: Sun, 3 Apr 2022 18:39:02 +0200 Subject: [PATCH 0410/1704] Fix 2.13 -Xsource:3 flag in incompatibility table --- _overviews/scala3-migration/incompatibility-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-migration/incompatibility-table.md b/_overviews/scala3-migration/incompatibility-table.md index 36e156a868..e699addbfe 100644 --- a/_overviews/scala3-migration/incompatibility-table.md +++ b/_overviews/scala3-migration/incompatibility-table.md @@ -19,7 +19,7 @@ Each incompatibility is described by: - The existence of a Scalafix rule that can fix it > #### Scala 2.13 deprecations and feature warnings -> Run the 2.13 compilation with `-source:3` to locate those incompatibilities in the code. +> Run the 2.13 compilation with `-Xsource:3` to locate those incompatibilities in the code. > #### Scala 3 migration versus Scalafix rewrites > The Scala 3 migration mode comes out-of-the-box. From a9de797f1d0cc5957221d13406038606a28cdd65 Mon Sep 17 00:00:00 2001 From: Florian CUNY Date: Mon, 4 Apr 2022 15:05:55 +0200 Subject: [PATCH 0411/1704] fixed typo --- _overviews/scala-book/pure-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala-book/pure-functions.md b/_overviews/scala-book/pure-functions.md index e753d67ce4..97c6ef6fb9 100644 --- a/_overviews/scala-book/pure-functions.md +++ b/_overviews/scala-book/pure-functions.md @@ -49,7 +49,7 @@ Conversely, the following functions are *impure* because they violate the defini The `foreach` method on collections classes is impure because it’s only used for its side effects, such as printing to STDOUT. ->A great hint that `foreach` is impure is that it’s method signature declares that it returns the type `Unit`. Because it returns nothing, logically the only reason you ever call it is to achieve some side effect. Similarly, *any* method that returns `Unit` is going to be an impure function. +>A great hint that `foreach` is impure is that its method signature declares that it returns the type `Unit`. Because it returns nothing, logically the only reason you ever call it is to achieve some side effect. Similarly, *any* method that returns `Unit` is going to be an impure function. Date and time related methods like `getDayOfWeek`, `getHour`, and `getMinute` are all impure because their output depends on something other than their input parameters. Their results rely on some form of hidden I/O, *hidden input* in these examples. From 180b9088915462d575813bc2644e598fb2f00348 Mon Sep 17 00:00:00 2001 From: Jason Pickens Date: Wed, 6 Apr 2022 08:02:06 +1200 Subject: [PATCH 0412/1704] Remove strikethrough from rewrite steps example (#2356) --- _overviews/scala3-migration/tooling-syntax-rewriting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-migration/tooling-syntax-rewriting.md b/_overviews/scala3-migration/tooling-syntax-rewriting.md index 976e3c097e..bbe246aa1e 100644 --- a/_overviews/scala3-migration/tooling-syntax-rewriting.md +++ b/_overviews/scala3-migration/tooling-syntax-rewriting.md @@ -86,7 +86,7 @@ We will be able to move it to new syntax automatically in two steps: first by us > The `-indent` option does not work on the classic control structures. > So make sure to run the two steps in the correct order. -> Unfortunately, the compiler is not able to apply both steps at the same time: `-indent -new-syntax -rewrite`. +> Unfortunately, the compiler is not able to apply both steps at the same time: `-indent -new-syntax -rewrite`. ### New Control Structures From 3841483fd8a4c2e64fc021db1eca8d42a264f0ff Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sat, 9 Apr 2022 10:26:48 +0300 Subject: [PATCH 0413/1704] Fix error in `given` definition We can see in the [reference](https://docs.scala-lang.org/scala3/reference/contextual/givens.html) that the right `given` definition is: ``` given intMonthConverter: MonthConverter[Int] with ``` --- _overviews/scala3-book/packaging-imports.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/_overviews/scala3-book/packaging-imports.md b/_overviews/scala3-book/packaging-imports.md index 07450f72f8..3ae2e7c318 100644 --- a/_overviews/scala3-book/packaging-imports.md +++ b/_overviews/scala3-book/packaging-imports.md @@ -354,20 +354,19 @@ object MonthConversions: trait MonthConverter[A]: def convert(a: A): String - given intMonthConverter as MonthConverter[Int]: + given intMonthConverter: MonthConverter[Int] with def convert(i: Int): String = i match case 1 => "January" case 2 => "February" // more cases here ... - given stringMonthConverter as MonthConverter[String]: + given stringMonthConverter: MonthConverter[String] with def convert(s: String): String = s match case "jan" => "January" case "feb" => "February" // more cases here ... -} ``` To import those givens into the current scope, use these two `import` statements: From 519639583aa576680692632a85d94cf1b4118ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=A2=83=E8=BF=B7=E7=A6=BB?= Date: Mon, 11 Apr 2022 20:13:10 +0800 Subject: [PATCH 0414/1704] add zn-cn --- _zh-cn/scala3/new-in-scala3.md | 128 +++++++++++++++++++++++++++++++++ scala3/new-in-scala3.md | 2 +- 2 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 _zh-cn/scala3/new-in-scala3.md diff --git a/_zh-cn/scala3/new-in-scala3.md b/_zh-cn/scala3/new-in-scala3.md new file mode 100644 index 0000000000..28b458c8d5 --- /dev/null +++ b/_zh-cn/scala3/new-in-scala3.md @@ -0,0 +1,128 @@ +--- +layout: singlepage-overview +title: New in Scala 3 +scala3: true +--- + +令人振奋的新版 Scala 3 带来了许多改进和新功能。在这里,我们为你提供最重要的变更的快速概述。如果你想深入挖掘,还有一些参考资料供你使用。 + +- [Scala 3 Book]({% link _overviews/scala3-book/introduction.md %}) 面向刚接触 Scala 语言的开发人员。 +- [Syntax Summary][syntax-summary] 为您提供了新语法的正式描述。 +- [Language Reference][reference] 对 Scala 2 到 Scala 3 的变化做了详细说明。 +- [Migration Guide][migration] 为你提供了从 Scala 2 迁移到 Scala 3 的所有必要信息。 +- [Scala 3 Contributing Guide][contribution] Scala 3 贡献指南,更深入地探讨了编译器,包括修复问题的指南。 + +## What's new in Scala 3 +Scala 3 是对 Scala 语言的一次彻底改造。在其核心部分,类型系统的许多方面都被改变了,变得更有原则性。虽然这也带来了令人兴奋的新功能(比如联合类型),但首先意味着类型系统变得(甚至)不那么碍事了,例如[类型推断][type-inference]和 overload resolution 都得到了很大的改善。 + +### 新的和闪亮的:语法 + +除了许多(小的)清理,Scala 3 的语法还提供了以下改进: + +- 用于控制结构的新“quiet”语法,如 `if`、`while` 和 `for` 。 ([new control syntax][syntax-control]) +- `new` 关键字是可选的 (_aka_ [creator applications][creator]) +- [Optional braces][syntax-indentation]:可选的大括号,支持不受干扰、缩进敏感的编程风格 +- [类型级通配符][syntax-wildcard] 从 `_` 更改为 `?`。 +- implicit(和它们的语法)已被[大量修订][implicits]。 + +### Opinionated: Contextual Abstractions +Scala的一个基本核心概念是(在某种程度上仍然是)为用户提供一小部分强大的功能,这些功能可以被组合成巨大的(有时甚至是不可预见的)表达能力。例如,_implicit_ 的特性被用来模拟上下文抽象、表达类型级计算、模拟类型类、执行隐式强制、编码扩展方法等等。从这些用例中学习,Scala 3 采取了一种略微不同的方法,专注于 __意图__ 而非 __机制__。Scala 3 没有提供一个非常强大的功能,而是提供了多个定制的语言功能,让程序员直接表达他们的意图。 + +- **Abtracting over contextual information**. [Using clauses][contextual-using] 允许程序员对调用上下文中的信息进行抽象,这些信息应该以隐式方式传递。作为对 Scala 2 implicits 的改进,可以按类型指定`using`子句,从而将函数签名从从未显式引用的术语变量名中解放出来。 + +- **Providing Type-class instances**. [Given instances][contextual-givens] 允许程序员定义某个类型的 _规范值_ 。这使得使用类型类的编程更加简单,而不会泄露实现细节。 + +- **Retroactively extending classes**. 在 Scala 2 中,扩展方法必须使用隐式转换或隐式类进行编码。相比之下,在 Scala 3 中,[extension methods][contextual-extension]现在直接内置于语言中,从而产生更好的错误消息和改进的类型推断。 + +- **Viewing one type as another**. 隐式转换已经被重新[设计][contextual-conversions]为类型类转`Conversion`的实例。 + +- **Higher-order contextual abstractions**. [context functions][contextual-functions]的 _全新_ 功能使上下文抽象成为一流的公民。它们是库作者的一个重要工具,允许表达简洁的特定领域语言。 + +- **Actionable feedback from the compiler**. 如果一个隐式参数不能被编译器解决,它现在提供了可能解决这个问题的[import suggestions](https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html)。 + +### Say What You Mean: 类型系统改进 +除了极大地改进了类型推断,Scala 3 类型系统还提供了许多新的功能,还为你提供了强大的工具来静态地表达类型中的不变量。 + +- **Enumerations**. [枚举][enums]已经被重新设计,以便与样例类很好地融合,并形成表达[代数数据类型][enums-adts]的新标准。 + +- **Opaque Types**. 将实现细节隐藏在[opaque type aliases][types-opaque]的别名后面,而不需要在性能上付出代价! Opaque types 取代了值类,并允许你建立一个抽象的屏障,而不会造成额外的装箱开销。 + +- **Intersection and union types**. 将类型系统建立在新的基础上,导致了新的类型系统功能的引入:[intersection types][types-intersection]的实例,如`A & B`,既是`A`的实例,也是`B`的实例;[union types][types-union]的实例,如`A | B`,是`A`或`B`的实例。这两种结构都允许程序员在继承层次结构之外灵活地表达类型约束。 + +- **Dependent function types**. Scala 2 已经允许返回类型依赖于(值)参数。在 Scala 3 中,现在可以对这种模式进行抽象,表达[dependent function types][types-dependent]。在类型`F = (e: Entry) => e.Key`中,结果类型取决于参数。 + +- **Polymorphic function types**. 与 dependent function types 一样,Scala 2 支持拥有类型参数的方法,但不允许程序员对这些方法进行抽象。在 Scala 3 中,像`[A] => List[A] => List[A]`这样的[polymorphic function types][types-polymorphic]可以抽象出除值参数外还接受 _类型参数_ 的函数。 + +- **Type lambdas**. 在 Scala 2 中需要用[编译器插件](https://github.com/typelevel/kind-projector)来表达的东西,现在在 Scala 3 中是第一类的功能:类型lambdas是类型级别的函数,可以作为(高等类型的)类型参数传递,而不需要辅助类型定义。 + +- **Match types**. Scala 3 提供了对[matching on types][types-match]的直接支持,而不是使用隐式解析对类型级别的计算进行编码。将类型级计算整合到类型检查器中,可以改进错误信息,并消除对复杂编码的需求。 + +### 重新设想的:面向对象的编程 + +Scala 一直处于函数式编程和面向对象编程的前沿 -- 而 Scala 3 在这两个方向上都推动了边界的发展! 上述类型系统的变化和上下文抽象的重新设计使得 _函数式编程_ 比以前更容易。同时,以下的新特性使结构良好的 _面向对象设计_ 成为可能,并支持最佳实践。 + +- **Pass it on**. Trait 更接近于 class,现在也可以接受[参数][oo-trait-parameters],使其作为模块化软件分解的工具更加强大。 + +- **Plan for extension**. 在面向对象的设计中,扩展那些不打算扩展的类是一个长期存在的问题。为了解决这个问题,[open classes][oo-open]要求库设计者 _明确地_ 将类标记为 open(开放的)。 + +- **Hide implementation details**. 实施行为的实用性traits有时不应该是推断类型的一部分。在 Scala 3 中,这些traits可以被标记为[transparent][oo-transparent],(在推断类型中)向用户隐藏继承性。 + +- **Composition over inheritance**. 这句话经常被引用,但实现起来却很繁琐。Scala 3 的[export clauses][oo-export]则不然:与imports对应,export clauses 允许用户为对象的选定成员定义别名。 + +- **No more NPEs**. Scala 3 比以往任何时候都更安全:[explicit null][oo-explicit-null]将`null`移出了类型层次结构,帮助你静态地捕捉错误;[safe initialization][oo-safe-init]的额外检查可以检测对未初始化对象的访问。 + +### Batteries Included: 元编程 +Scala 2 中的宏只是一个实验性的功能,而 Scala 3 则为元编程提供了强大的工具库。[宏教程]({% link _overviews/scala3-macros/tutorial/index.md %})中包含了关于不同设施的详细信息。特别是,Scala 3 为元编程提供了以下功能: + +作为基本的起点,[inline feature][meta-inline]允许在编译时减少数值和方法。这个简单的功能已经涵盖了许多使用情况,同时也为更高级的功能提供了入口。 + +- **Inline**. [inline feature][meta-inline]允许在编译时减少数值和方法。这个简单的功能已经涵盖了许多使用情况,同时也为更高级的功能提供了入口。 +- **Compile-time operations**. 包[`scala.compiletime`][meta-compiletime]中包含了额外的功能,可以用来实现内联方法。 +- **Quoted code blocks**. Scala 3为代码增加了[quasi-quotation][meta-quotes]的新功能,这为构建和分析代码提供了方便的高级接口。构建加一加一的代码就像`'{ 1 + 1 }`一样简单。 +- **Reflection API**. 对于更高级的用例,[quotes.reflect][meta-reflection]提供了更详细的控制来检查和生成程序树。 + + +如果你想进一步了解 Scala 3 中的元编程,我们邀请你参加我们的[教程][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.html +[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 }}/other-new-features/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/scala3/new-in-scala3.md b/scala3/new-in-scala3.md index af6d6111c1..5b30d76158 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"] +languages: ["ja","zh-cn"] --- 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 From afcaefc6d26c42d36da3bbad2d1ef81244b01a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=A2=83=E8=BF=B7=E7=A6=BB?= Date: Mon, 11 Apr 2022 20:25:45 +0800 Subject: [PATCH 0415/1704] fix --- _zh-cn/scala3/new-in-scala3.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/_zh-cn/scala3/new-in-scala3.md b/_zh-cn/scala3/new-in-scala3.md index 28b458c8d5..472f66331f 100644 --- a/_zh-cn/scala3/new-in-scala3.md +++ b/_zh-cn/scala3/new-in-scala3.md @@ -17,7 +17,7 @@ Scala 3 是对 Scala 语言的一次彻底改造。在其核心部分,类型 ### 新的和闪亮的:语法 -除了许多(小的)清理,Scala 3 的语法还提供了以下改进: +除了许多(小的)清理工作,Scala 3 的语法还提供了以下改进: - 用于控制结构的新“quiet”语法,如 `if`、`while` 和 `for` 。 ([new control syntax][syntax-control]) - `new` 关键字是可选的 (_aka_ [creator applications][creator]) @@ -34,9 +34,9 @@ Scala的一个基本核心概念是(在某种程度上仍然是)为用户提 - **Retroactively extending classes**. 在 Scala 2 中,扩展方法必须使用隐式转换或隐式类进行编码。相比之下,在 Scala 3 中,[extension methods][contextual-extension]现在直接内置于语言中,从而产生更好的错误消息和改进的类型推断。 -- **Viewing one type as another**. 隐式转换已经被重新[设计][contextual-conversions]为类型类转`Conversion`的实例。 +- **Viewing one type as another**. [隐式转换][contextual-conversions]已经被重新设计为类型类`Conversion`的实例。 -- **Higher-order contextual abstractions**. [context functions][contextual-functions]的 _全新_ 功能使上下文抽象成为一流的公民。它们是库作者的一个重要工具,允许表达简洁的特定领域语言。 +- **Higher-order contextual abstractions**. [context functions][contextual-functions]的 _全新_ 功能使上下文抽象成为一流的公民。它们是库开发人员的一个重要工具,允许表达简洁的特定领域语言。 - **Actionable feedback from the compiler**. 如果一个隐式参数不能被编译器解决,它现在提供了可能解决这个问题的[import suggestions](https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html)。 @@ -74,15 +74,13 @@ Scala 一直处于函数式编程和面向对象编程的前沿 -- 而 Scala 3 ### Batteries Included: 元编程 Scala 2 中的宏只是一个实验性的功能,而 Scala 3 则为元编程提供了强大的工具库。[宏教程]({% link _overviews/scala3-macros/tutorial/index.md %})中包含了关于不同设施的详细信息。特别是,Scala 3 为元编程提供了以下功能: -作为基本的起点,[inline feature][meta-inline]允许在编译时减少数值和方法。这个简单的功能已经涵盖了许多使用情况,同时也为更高级的功能提供了入口。 - - **Inline**. [inline feature][meta-inline]允许在编译时减少数值和方法。这个简单的功能已经涵盖了许多使用情况,同时也为更高级的功能提供了入口。 - **Compile-time operations**. 包[`scala.compiletime`][meta-compiletime]中包含了额外的功能,可以用来实现内联方法。 - **Quoted code blocks**. Scala 3为代码增加了[quasi-quotation][meta-quotes]的新功能,这为构建和分析代码提供了方便的高级接口。构建加一加一的代码就像`'{ 1 + 1 }`一样简单。 - **Reflection API**. 对于更高级的用例,[quotes.reflect][meta-reflection]提供了更详细的控制来检查和生成程序树。 -如果你想进一步了解 Scala 3 中的元编程,我们邀请你参加我们的[教程][meta-tutorial]。 +如果你想进一步了解 Scala 3 中的元编程,我们邀请你参加[教程][meta-tutorial]。 [enums]: {{ site.scala3ref }}/enums/enums.html [enums-adts]: {{ site.scala3ref }}/enums/adts.html From 9109395ffc43c7168daf02d0b328aca7c116ec39 Mon Sep 17 00:00:00 2001 From: Gord Currie <1119730+gordcurrie@users.noreply.github.com> Date: Mon, 11 Apr 2022 09:04:42 -0500 Subject: [PATCH 0416/1704] Update implicit casting example (#2370) --- _overviews/scala3-book/first-look-at-types.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/_overviews/scala3-book/first-look-at-types.md b/_overviews/scala3-book/first-look-at-types.md index c62e2cc9dd..85c3214ad9 100644 --- a/_overviews/scala3-book/first-look-at-types.md +++ b/_overviews/scala3-book/first-look-at-types.md @@ -238,20 +238,19 @@ Value types can be cast in the following way: For example: ```scala -val x: Long = 987654321 -val y: Float = x // 9.8765434E8 (note that some precision is lost in this case) +val b: Byte = 127 +val i: Int = b // 127 val face: Char = '☺' val number: Int = face // 9786 ``` -Casting is unidirectional. -This will not compile: +You can only cast to a type if there is no loss of information. Otherwise, you need to be explicit about the cast: -``` +```scala val x: Long = 987654321 -val y: Float = x // 9.8765434E8 -val z: Long = y // Does not conform +val y: Float = x.toFloat // 9.8765434E8 (note that `.toFloat` is required because the cast results in percision loss) +val z: Long = y // Error ``` You can also cast a reference type to a subtype. From 10c29916a9bfebaa979209d9421ff6d2a43d8e08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Apr 2022 10:15:06 +0000 Subject: [PATCH 0417/1704] Bump nokogiri from 1.13.3 to 1.13.4 Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.3 to 1.13.4. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.4/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.3...v1.13.4) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5b52d7697a..3c6f6b8d12 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -55,7 +55,7 @@ GEM rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) mini_portile2 (2.8.0) - nokogiri (1.13.3) + nokogiri (1.13.4) mini_portile2 (~> 2.8.0) racc (~> 1.4) nokogumbo (2.0.2) From b9926e655a75be592d5fae52ca894e0490901692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Tue, 12 Apr 2022 15:46:45 +0200 Subject: [PATCH 0418/1704] Update Scala version to 3.1.2 --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 43f6dfd536..accb4b5df1 100644 --- a/_config.yml +++ b/_config.yml @@ -17,7 +17,7 @@ keywords: scala-version: 2.13.8 scala-212-version: 2.12.15 -scala-3-version: 3.1.1 +scala-3-version: 3.1.2 collections: contribute_resources: From 10abafb233f9b2877585e4316cf30ab308bd7449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Tue, 12 Apr 2022 15:50:34 +0200 Subject: [PATCH 0419/1704] Add entry for the documentation --- api/all.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/api/all.md b/api/all.md index ea55e544d9..33566543b6 100644 --- a/api/all.md +++ b/api/all.md @@ -6,8 +6,8 @@ includeTOC: true ## Latest releases -* Scala 3.1.1 - * [Library API](https://www.scala-lang.org/api/3.1.1/) +* Scala 3.1.2 + * [Library API](https://www.scala-lang.org/api/3.1.2/) * Scala 2.13.8 * [Library API](https://www.scala-lang.org/api/2.13.8/) * [Compiler API](https://www.scala-lang.org/api/2.13.8/scala-compiler/scala/) @@ -60,6 +60,8 @@ https://scala-ci.typesafe.com/artifactory/scala-integration/org/scala-lang/ ## Previous releases +* Scala 3.1.1 + * [Library API](https://www.scala-lang.org/api/3.1.1/) * Scala 3.1.0 * [Library API](https://www.scala-lang.org/api/3.1.0/) * Scala 3.0.2 From 496e82cc9e0515c68f7359425728da91d8953a62 Mon Sep 17 00:00:00 2001 From: Jochen Schneider Date: Fri, 15 Apr 2022 18:37:06 +0200 Subject: [PATCH 0420/1704] Example variable typo --- _overviews/collections-2.13/maps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/collections-2.13/maps.md b/_overviews/collections-2.13/maps.md index 3a27586614..8dff664b27 100644 --- a/_overviews/collections-2.13/maps.md +++ b/_overviews/collections-2.13/maps.md @@ -62,7 +62,7 @@ Mutable maps support in addition the operations summarized in the following tabl | WHAT IT IS | WHAT IT DOES | | ------ | ------ | | **Additions and Updates:**| | -| `ms(k) = v` |(Or, written out, `ms.update(x, v)`). Adds mapping from key `k` to value `v` to map ms as a side effect, overwriting any previous mapping of `k`.| +| `ms(k) = v` |(Or, written out, `ms.update(k, v)`). Adds mapping from key `k` to value `v` to map ms as a side effect, overwriting any previous mapping of `k`.| | `ms.addOne(k -> v)`
    or `ms += (k -> v)` |Adds mapping from key `k` to value `v` to map `ms` as a side effect and returns `ms` itself.| | `ms addAll xvs`
    or `ms ++= kvs` |Adds all mappings in `kvs` to `ms` as a side effect and returns `ms` itself.| | `ms.put(k, v)` |Adds mapping from key `k` to value `v` to `ms` and returns any value previously associated with `k` as an option.| From 86724d38cd620fff0568b1b6399e047f81de24ec Mon Sep 17 00:00:00 2001 From: Philippus Date: Sat, 16 Apr 2022 10:56:08 +0200 Subject: [PATCH 0421/1704] Update scalatest to 3.2.11 in scala book --- _overviews/scala-book/sbt-scalatest-bdd.md | 4 ++-- _overviews/scala-book/sbt-scalatest-tdd.md | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/_overviews/scala-book/sbt-scalatest-bdd.md b/_overviews/scala-book/sbt-scalatest-bdd.md index ee20a8490e..5117bbc0fc 100644 --- a/_overviews/scala-book/sbt-scalatest-bdd.md +++ b/_overviews/scala-book/sbt-scalatest-bdd.md @@ -70,7 +70,7 @@ class MathUtilsSpec extends FunSpec { As you can see, this is a very different-looking style than the TDD tests in the previous lesson. If you’ve never used a BDD style of testing before, a main idea is that the tests should be relatively easy to read for one of the “domain experts” who work with the programmers to create the application. A few notes about this code: -- It uses the `FunSpec` class where the TDD tests used `FunSuite` +- It uses the `AnyFunSpec` class where the TDD tests used `AnyFunSuite` - A set of tests begins with `describe` - Each test begins with `it`. The idea is that the test should read like, “It should do XYZ...,” where “it” is the `double` function - This example also shows how to mark a test as “pending” @@ -96,7 +96,7 @@ With those files in place you can again run `sbt test`. The important part of th [info] Suites: completed 2, aborted 0 [info] Tests: succeeded 4, failed 0, canceled 0, ignored 0, pending 1 [info] All tests passed. -[success] Total time: 4 s, completed Jan 6, 2018 4:58:23 PM +[success] Total time: 4 s ```` A few notes about that output: diff --git a/_overviews/scala-book/sbt-scalatest-tdd.md b/_overviews/scala-book/sbt-scalatest-tdd.md index 7214566a09..a0c61da35c 100644 --- a/_overviews/scala-book/sbt-scalatest-tdd.md +++ b/_overviews/scala-book/sbt-scalatest-tdd.md @@ -39,7 +39,7 @@ version := "1.0" scalaVersion := "{{site.scala-version}}" libraryDependencies += - "org.scalatest" %% "scalatest" % "3.0.8" % Test + "org.scalatest" %% "scalatest" % "3.2.11" % Test ``` @@ -47,7 +47,7 @@ The first three lines of this file are essentially the same as the first example ```scala libraryDependencies += - "org.scalatest" %% "scalatest" % "3.0.8" % Test + "org.scalatest" %% "scalatest" % "3.2.11" % Test ``` >The ScalaTest documentation has always been good, and you can always find the up to date information on what those lines should look like on the [Installing ScalaTest](http://www.scalatest.org/install) page. @@ -85,8 +85,8 @@ There isn’t much that can go wrong with that source code, but it provides a si [warn] consider launching sbt without any commands, or explicitly passing 'shell' ... ... -[info] Compiling 1 Scala source to /Users/al/Projects/Scala/HelloScalaTest/target/scala-2.12/classes... -[info] Running simpletest.Hello +[info] compiling 1 Scala source to /Users/al/Projects/Scala/HelloScalaTest/target/scala-2.13/classes... +[info] running simpletest.Hello Hello Alvin Alexander [success] Total time: 4 s ```` @@ -108,9 +108,9 @@ Next, create a file named *HelloTests.scala* in that directory with the followin ```scala package simpletest -import org.scalatest.FunSuite +import org.scalatest.funsuite.AnyFunSuite -class HelloTests extends FunSuite { +class HelloTests extends AnyFunSuite { // test 1 test("the name is set correctly in constructor") { @@ -130,7 +130,7 @@ class HelloTests extends FunSuite { This file demonstrates the ScalaTest `FunSuite` approach. A few important points: -- Your class should extend `FunSuite` +- Your class should extend `AnyFunSuite` - You create tests as shown, by giving each `test` a unique name - At the end of each test you should call `assert` to test that a condition has been satisfied @@ -140,7 +140,7 @@ Now you can run these tests with the `sbt test` command. Skipping the first few ```` > sbt test -[info] Set current project to HelloScalaTest (in build file:/Users/al/Projects/Scala/HelloScalaTest/) +[info] set current project to HelloScalaTest (in build file:/Users/al/Projects/Scala/HelloScalaTest/) [info] HelloTests: [info] - the name is set correctly in constructor [info] - a Person's name can be changed From 9ac6061ceacad3e7a8906abe49e6a8f2504ac2f4 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sat, 16 Apr 2022 10:56:35 +0200 Subject: [PATCH 0422/1704] Update scalatest to 3.2.11 in IntelliJ example --- .../testing-scala-in-intellij-with-scalatest.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md b/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md index 77d0b3341a..fb34580984 100644 --- a/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md +++ b/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md @@ -20,15 +20,15 @@ This assumes you know [how to build a project in IntelliJ](building-a-scala-proj 1. Add the ScalaTest dependency: 1. Add the ScalaTest dependency to your `build.sbt` file: ``` - libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % Test + libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.11" % Test ``` 1. If you get a notification "build.sbt was changed", select **auto-import**. 1. These two actions will cause `sbt` to download the ScalaTest library. - 1. Wait for the `sbt` sync to finish; otherwise, `FunSuite` and `test()` will be + 1. Wait for the `sbt` sync to finish; otherwise, `AnyFunSuite` and `test()` will be unrecognized. 1. On the project pane on the left, expand `src` => `main`. 1. Right-click on `scala` and select **New** => **Scala class**. -1. Call it `CubeCalculator`, change the **Kind** to `object`, and click **OK**. +1. Call it `CubeCalculator`, change the **Kind** to `object`, and hit enter or double click on `object`. 1. Replace the code with the following: ``` object CubeCalculator extends App { @@ -41,12 +41,12 @@ This assumes you know [how to build a project in IntelliJ](building-a-scala-proj ## Creating a test 1. On the project pane on the left, expand `src` => `test`. 1. Right-click on `scala` and select **New** => **Scala class**. -1. Name the class `CubeCalculatorTest` and click **OK**. +1. Name the class `CubeCalculatorTest` and hit enter or double click on `class`. 1. Replace the code with the following: ``` - import org.scalatest.FunSuite + import org.scalatest.funsuite.AnyFunSuite - class CubeCalculatorTest extends FunSuite { + class CubeCalculatorTest extends AnyFunSuite { test("CubeCalculator.cube") { assert(CubeCalculator.cube(3) === 27) } @@ -60,9 +60,9 @@ This assumes you know [how to build a project in IntelliJ](building-a-scala-proj Let's go over this line by line: * `class CubeCalculatorTest` means we are testing the object `CubeCalculator` -* `extends FunSuite` lets us use functionality of ScalaTest's FunSuite class +* `extends AnyFunSuite` lets us use functionality of ScalaTest's AnyFunSuite class such as the `test` function -* `test` is function that comes from the FunSuite library that collects +* `test` is a function that comes from the FunSuite library that collects results from assertions within the function body. * `"CubeCalculator.cube"` is a name for the test. You can call it anything but one convention is "ClassName.methodName". From 533d497ffc5c11e24f3efb5dbf67b387a4872083 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sat, 16 Apr 2022 14:18:31 +0200 Subject: [PATCH 0423/1704] Drop references to Discourse comments --- _ja/tour/abstract-type-members.md | 4 ---- _ja/tour/annotations.md | 5 ----- _ja/tour/automatic-closures.md | 3 --- _ja/tour/basics.md | 5 ----- _ja/tour/by-name-parameters.md | 5 ----- _ja/tour/case-classes.md | 5 ----- _ja/tour/classes.md | 5 ----- _ja/tour/compound-types.md | 5 ----- _ja/tour/default-parameter-values.md | 5 ----- _ja/tour/extractor-objects.md | 5 ----- _ja/tour/for-comprehensions.md | 5 ----- _ja/tour/generic-classes.md | 5 ----- _ja/tour/higher-order-functions.md | 5 ----- _ja/tour/implicit-conversions.md | 5 ----- _ja/tour/implicit-parameters.md | 5 ----- _ja/tour/inner-classes.md | 5 ----- _ja/tour/lower-type-bounds.md | 5 ----- _ja/tour/mixin-class-composition.md | 5 ----- _ja/tour/multiple-parameter-lists.md | 5 ----- _ja/tour/named-arguments.md | 5 ----- _ja/tour/nested-functions.md | 5 ----- _ja/tour/operators.md | 5 ----- _ja/tour/package-objects.md | 4 ---- _ja/tour/packages-and-imports.md | 4 ---- _ja/tour/pattern-matching.md | 6 ------ _ja/tour/polymorphic-methods.md | 6 ------ _ja/tour/regular-expression-patterns.md | 6 ------ _ja/tour/self-types.md | 5 ----- _ja/tour/singleton-objects.md | 5 ----- _ja/tour/tour-of-scala.md | 6 ------ _ja/tour/traits.md | 5 ----- _ja/tour/tuples.md | 5 ----- _ja/tour/type-inference.md | 4 ---- _ja/tour/unified-types.md | 5 ----- _ja/tour/upper-type-bounds.md | 4 ---- _ja/tour/variances.md | 5 ----- _ja/tutorials/scala-for-java-programmers.md | 3 --- _overviews/scala-book/abstract-classes.md | 1 - _overviews/scala-book/anonymous-functions.md | 1 - _overviews/scala-book/arraybuffer-examples.md | 1 - _overviews/scala-book/built-in-types.md | 1 - _overviews/scala-book/case-classes.md | 1 - _overviews/scala-book/case-objects.md | 1 - _overviews/scala-book/classes-aux-constructors.md | 1 - _overviews/scala-book/classes.md | 1 - _overviews/scala-book/collections-101.md | 1 - _overviews/scala-book/collections-maps.md | 1 - _overviews/scala-book/collections-methods.md | 1 - _overviews/scala-book/command-line-io.md | 1 - _overviews/scala-book/companion-objects.md | 1 - _overviews/scala-book/concurrency-signpost.md | 1 - _overviews/scala-book/constructors-default-values.md | 1 - _overviews/scala-book/control-structures.md | 1 - _overviews/scala-book/enumerations-pizza-class.md | 1 - _overviews/scala-book/for-expressions.md | 1 - _overviews/scala-book/for-loops.md | 1 - _overviews/scala-book/functional-error-handling.md | 1 - _overviews/scala-book/functional-programming.md | 1 - _overviews/scala-book/futures.md | 1 - _overviews/scala-book/hello-world-1.md | 1 - _overviews/scala-book/hello-world-2.md | 1 - _overviews/scala-book/if-then-else-construct.md | 1 - _overviews/scala-book/list-class.md | 1 - _overviews/scala-book/map-class.md | 1 - _overviews/scala-book/match-expressions.md | 1 - _overviews/scala-book/methods-first-look.md | 1 - _overviews/scala-book/misc.md | 1 - _overviews/scala-book/no-null-values.md | 1 - _overviews/scala-book/oop-pizza-example.md | 1 - _overviews/scala-book/passing-functions-around.md | 1 - _overviews/scala-book/preliminaries.md | 1 - _overviews/scala-book/prelude-taste-of-scala.md | 1 - _overviews/scala-book/pure-functions.md | 1 - _overviews/scala-book/sbt-scalatest-bdd.md | 1 - _overviews/scala-book/sbt-scalatest-intro.md | 1 - _overviews/scala-book/sbt-scalatest-tdd.md | 1 - _overviews/scala-book/scala-build-tool-sbt.md | 1 - _overviews/scala-book/scala-features.md | 1 - _overviews/scala-book/scala-repl.md | 1 - _overviews/scala-book/set-class.md | 1 - _overviews/scala-book/traits-abstract-mixins.md | 1 - _overviews/scala-book/traits-interfaces.md | 1 - _overviews/scala-book/traits-intro.md | 1 - _overviews/scala-book/try-catch-finally.md | 1 - _overviews/scala-book/tuples.md | 1 - _overviews/scala-book/two-notes-about-strings.md | 1 - _overviews/scala-book/two-types-variables.md | 1 - _overviews/scala-book/type-is-optional.md | 1 - _overviews/scala-book/vector-class.md | 1 - _overviews/scala-book/where-next.md | 1 - _overviews/scaladoc/contribute.md | 5 ----- _overviews/scaladoc/generate.md | 5 ----- _ru/overviews/collections-2.13/arrays.md | 5 ----- .../concrete-immutable-collection-classes.md | 6 ------ .../collections-2.13/concrete-mutable-collection-classes.md | 6 ------ .../conversions-between-java-and-scala-collections.md | 6 ------ .../collections-2.13/creating-collections-from-scratch.md | 6 ------ _ru/overviews/collections-2.13/equality.md | 6 ------ _ru/overviews/collections-2.13/introduction.md | 6 ------ _ru/overviews/collections-2.13/iterators.md | 6 ------ _ru/overviews/collections-2.13/maps.md | 6 ------ _ru/overviews/collections-2.13/overview.md | 6 ------ .../collections-2.13/performance-characteristics.md | 6 ------ _ru/overviews/collections-2.13/seqs.md | 6 ------ _ru/overviews/collections-2.13/sets.md | 6 ------ _ru/overviews/collections-2.13/strings.md | 6 ------ _ru/overviews/collections-2.13/trait-iterable.md | 6 ------ _ru/overviews/collections-2.13/views.md | 6 ------ _ru/overviews/collections/introduction.md | 5 ----- _ru/overviews/parallel-collections/architecture.md | 3 --- .../parallel-collections/concrete-parallel-collections.md | 4 ---- _ru/overviews/parallel-collections/configuration.md | 4 ---- _ru/overviews/parallel-collections/conversions.md | 4 ---- _ru/overviews/parallel-collections/ctries.md | 4 ---- .../parallel-collections/custom-parallel-collections.md | 4 ---- _ru/overviews/parallel-collections/overview.md | 4 ---- _ru/overviews/parallel-collections/performance.md | 4 ---- _ru/tour/abstract-type-members.md | 4 ---- _ru/tour/annotations.md | 5 ----- _ru/tour/automatic-closures.md | 2 -- _ru/tour/basics.md | 5 ----- _ru/tour/by-name-parameters.md | 5 ----- _ru/tour/case-classes.md | 5 ----- _ru/tour/classes.md | 5 ----- _ru/tour/compound-types.md | 5 ----- _ru/tour/default-parameter-values.md | 5 ----- _ru/tour/extractor-objects.md | 5 ----- _ru/tour/for-comprehensions.md | 5 ----- _ru/tour/generic-classes.md | 5 ----- _ru/tour/higher-order-functions.md | 5 ----- _ru/tour/implicit-conversions.md | 5 ----- _ru/tour/implicit-parameters.md | 5 ----- _ru/tour/inner-classes.md | 5 ----- _ru/tour/lower-type-bounds.md | 5 ----- _ru/tour/mixin-class-composition.md | 5 ----- _ru/tour/multiple-parameter-lists.md | 5 ----- _ru/tour/named-arguments.md | 5 ----- _ru/tour/nested-functions.md | 5 ----- _ru/tour/operators.md | 5 ----- _ru/tour/package-objects.md | 4 ---- _ru/tour/packages-and-imports.md | 4 ---- _ru/tour/pattern-matching.md | 5 ----- _ru/tour/polymorphic-methods.md | 5 ----- _ru/tour/regular-expression-patterns.md | 5 ----- _ru/tour/self-types.md | 5 ----- _ru/tour/singleton-objects.md | 4 ---- _ru/tour/tour-of-scala.md | 4 ---- _ru/tour/traits.md | 5 ----- _ru/tour/tuples.md | 5 ----- _ru/tour/type-inference.md | 4 ---- _ru/tour/unified-types.md | 5 ----- _ru/tour/upper-type-bounds.md | 4 ---- _ru/tour/variances.md | 5 ----- 153 files changed, 544 deletions(-) diff --git a/_ja/tour/abstract-type-members.md b/_ja/tour/abstract-type-members.md index 2f480833bf..af08eb5c2b 100644 --- a/_ja/tour/abstract-type-members.md +++ b/_ja/tour/abstract-type-members.md @@ -2,16 +2,12 @@ layout: tour title: 抽象型メンバー language: ja - -discourse: true - partof: scala-tour num: 23 next-page: compound-types previous-page: inner-classes topics: abstract type members prerequisite-knowledge: variance, upper-type-bound - --- トレイトや抽象クラスのような抽象型は抽象型メンバーを持つことができます。 diff --git a/_ja/tour/annotations.md b/_ja/tour/annotations.md index d0fad2e82a..90545140fc 100644 --- a/_ja/tour/annotations.md +++ b/_ja/tour/annotations.md @@ -2,15 +2,10 @@ layout: tour title: アノテーション language: ja - -discourse: true - partof: scala-tour - num: 32 next-page: packages-and-imports previous-page: by-name-parameters - --- アノテーションはメタ情報と定義を関連づけます。例えば、メソッドの前のアノテーション`@deprecated`はメソッドが使われたらコンパイラに警告を出力させます。 diff --git a/_ja/tour/automatic-closures.md b/_ja/tour/automatic-closures.md index 3b38e98178..0ba4911aa2 100644 --- a/_ja/tour/automatic-closures.md +++ b/_ja/tour/automatic-closures.md @@ -2,9 +2,6 @@ layout: tour title: 型依存クロージャの自動構築 language: ja - -discourse: true - partof: scala-tour --- diff --git a/_ja/tour/basics.md b/_ja/tour/basics.md index b2b06317bb..09c7033f3a 100644 --- a/_ja/tour/basics.md +++ b/_ja/tour/basics.md @@ -2,15 +2,10 @@ layout: tour title: 基本 language: ja - -discourse: true - partof: scala-tour - num: 2 next-page: unified-types previous-page: tour-of-scala - --- このページでは、Scalaの基本を取り扱います。 diff --git a/_ja/tour/by-name-parameters.md b/_ja/tour/by-name-parameters.md index c3494f5634..b88f6dd617 100644 --- a/_ja/tour/by-name-parameters.md +++ b/_ja/tour/by-name-parameters.md @@ -2,15 +2,10 @@ layout: tour title: 名前渡しパラメータ language: ja - -discourse: true - partof: scala-tour - num: 31 next-page: annotations previous-page: operators - --- *名前渡しのパラメータ*は使用された時に評価されます。それらは*値渡しパラメータ*とは対照的です。名前渡しのパラメータを作るには、単純に`=>`を型の前につけます。 diff --git a/_ja/tour/case-classes.md b/_ja/tour/case-classes.md index 65cce59c9b..2015b843c1 100644 --- a/_ja/tour/case-classes.md +++ b/_ja/tour/case-classes.md @@ -2,16 +2,11 @@ layout: tour title: ケースクラス language: ja - -discourse: true - partof: scala-tour - num: 11 next-page: pattern-matching previous-page: multiple-parameter-lists prerequisite-knowledge: classes, basics, mutability - --- ケースクラスはこれから論じるいくつかの差異はあるものの普通のクラスと似ています。 diff --git a/_ja/tour/classes.md b/_ja/tour/classes.md index e594b4ea37..74bd6c6997 100644 --- a/_ja/tour/classes.md +++ b/_ja/tour/classes.md @@ -2,17 +2,12 @@ layout: tour title: クラス language: ja - -discourse: true - partof: scala-tour - num: 4 next-page: traits previous-page: unified-types topics: classes prerequisite-knowledge: no-return-keyword, type-declaration-syntax, string-interpolation, procedures - --- Scalaにおけるクラスはオブジェクトを作るための設計図です。 diff --git a/_ja/tour/compound-types.md b/_ja/tour/compound-types.md index 60be4af3c3..2137ecc432 100644 --- a/_ja/tour/compound-types.md +++ b/_ja/tour/compound-types.md @@ -2,15 +2,10 @@ layout: tour title: 複合型 language: ja - -discourse: true - partof: scala-tour - num: 24 next-page: self-types previous-page: abstract-type-members - --- ときどき、あるオブジェクトの型が、複数の他の型のサブタイプであると表現する必要が生じます。 Scalaでは、これは*複合型*を用いて表現できます。複合型とはオブジェクトの型同士を重ねることです。 diff --git a/_ja/tour/default-parameter-values.md b/_ja/tour/default-parameter-values.md index 1e03cebe50..499f543566 100644 --- a/_ja/tour/default-parameter-values.md +++ b/_ja/tour/default-parameter-values.md @@ -2,16 +2,11 @@ layout: tour title: デフォルト引数 language: ja - -discourse: true - partof: scala-tour - num: 33 next-page: named-arguments previous-page: annotations prerequisite-knowledge: named-arguments, function syntax - --- Scalaはパラメータのデフォルト値を与えることができ、呼び出す側はこれらのパラメータを省略できます。 diff --git a/_ja/tour/extractor-objects.md b/_ja/tour/extractor-objects.md index ba4603a3fa..6dac1d2209 100644 --- a/_ja/tour/extractor-objects.md +++ b/_ja/tour/extractor-objects.md @@ -2,15 +2,10 @@ layout: tour title: 抽出子オブジェクト language: ja - -discourse: true - partof: scala-tour - num: 16 next-page: for-comprehensions previous-page: regular-expression-patterns - --- 抽出子オブジェクトは`unapply`メソッドを持つオブジェクトです。 diff --git a/_ja/tour/for-comprehensions.md b/_ja/tour/for-comprehensions.md index c673135b2b..1600904350 100644 --- a/_ja/tour/for-comprehensions.md +++ b/_ja/tour/for-comprehensions.md @@ -2,15 +2,10 @@ layout: tour title: for内包表記 language: ja - -discourse: true - partof: scala-tour - num: 17 next-page: generic-classes previous-page: extractor-objects - --- Scalaは*シーケンス内包表記*を表現するための軽量な記法を提供します。 diff --git a/_ja/tour/generic-classes.md b/_ja/tour/generic-classes.md index 2de82cc5ce..ad944b8b39 100644 --- a/_ja/tour/generic-classes.md +++ b/_ja/tour/generic-classes.md @@ -2,16 +2,11 @@ layout: tour title: ジェネリッククラス language: ja - -discourse: true - partof: scala-tour - num: 18 next-page: variances previous-page: for-comprehensions assumed-knowledge: classes unified-types - --- ジェネリッククラスはパラメータとして型を1つ受け取るクラスです。それらはコレクションクラスで特に役立ちます。 diff --git a/_ja/tour/higher-order-functions.md b/_ja/tour/higher-order-functions.md index 1740d1ba3d..773ca7170b 100644 --- a/_ja/tour/higher-order-functions.md +++ b/_ja/tour/higher-order-functions.md @@ -2,15 +2,10 @@ layout: tour title: 高階関数 language: ja - -discourse: true - partof: scala-tour - num: 8 next-page: nested-functions previous-page: mixin-class-composition - --- 高階関数は他の関数をパラメーターとして受け取る、もしくは結果として関数を返します。 diff --git a/_ja/tour/implicit-conversions.md b/_ja/tour/implicit-conversions.md index 8ee5a23069..d4de2375f3 100644 --- a/_ja/tour/implicit-conversions.md +++ b/_ja/tour/implicit-conversions.md @@ -2,15 +2,10 @@ layout: tour title: 暗黙の変換 language: ja - -discourse: true - partof: scala-tour - num: 27 next-page: polymorphic-methods previous-page: implicit-parameters - --- 型`S`から型`T`への暗黙の変換は`S => T`という型のimplicit値や、その型に一致するimplicitメソッドで定義されます。 diff --git a/_ja/tour/implicit-parameters.md b/_ja/tour/implicit-parameters.md index 30ff6028df..db43cd76fc 100644 --- a/_ja/tour/implicit-parameters.md +++ b/_ja/tour/implicit-parameters.md @@ -2,15 +2,10 @@ layout: tour title: 暗黙のパラメータ language: ja - -discourse: true - partof: scala-tour - num: 26 next-page: implicit-conversions previous-page: self-types - --- メソッドは _暗黙の_ パラメータのリストを持つことができ、パラメータリストの先頭には _implicit_ キーワードで印をつけます。 diff --git a/_ja/tour/inner-classes.md b/_ja/tour/inner-classes.md index 5d38b1f1f6..2bc8ecf450 100644 --- a/_ja/tour/inner-classes.md +++ b/_ja/tour/inner-classes.md @@ -2,15 +2,10 @@ layout: tour title: 内部クラス language: ja - -discourse: true - partof: scala-tour - num: 22 next-page: abstract-type-members previous-page: lower-type-bounds - --- Scalaではクラスが他のクラスをメンバーとして保持することが可能です。 diff --git a/_ja/tour/lower-type-bounds.md b/_ja/tour/lower-type-bounds.md index 62a15447d3..e72a3773f8 100644 --- a/_ja/tour/lower-type-bounds.md +++ b/_ja/tour/lower-type-bounds.md @@ -2,16 +2,11 @@ layout: tour title: 下限型境界 language: ja - -discourse: true - partof: scala-tour - num: 21 next-page: inner-classes previous-page: upper-type-bounds prerequisite-knowledge: upper-type-bounds, generics, variance - --- [上限型境界](upper-type-bounds.html) は型を別の型のサブタイプに制限しますが、*下限型境界*は型が別の型のスーパータイプであることを宣言します。表現`B >: A`はパラメータ`B`または抽象型`B`が型`A`のスーパータイプであることを表します。ほとんどのケースで`A`はそのクラスの型パラメータであり、`B`はメソッドの型パラメータになります。 diff --git a/_ja/tour/mixin-class-composition.md b/_ja/tour/mixin-class-composition.md index 8b4e26067e..f95ab54cb9 100644 --- a/_ja/tour/mixin-class-composition.md +++ b/_ja/tour/mixin-class-composition.md @@ -2,16 +2,11 @@ layout: tour title: ミックスインを用いたクラス合成 language: ja - -discourse: true - partof: scala-tour - num: 7 next-page: higher-order-functions previous-page: tuples prerequisite-knowledge: inheritance, traits, abstract-classes, unified-types - --- ミックスインはクラスを構成するのに使われるトレイトです。 diff --git a/_ja/tour/multiple-parameter-lists.md b/_ja/tour/multiple-parameter-lists.md index ff267531b8..c9b70ec998 100644 --- a/_ja/tour/multiple-parameter-lists.md +++ b/_ja/tour/multiple-parameter-lists.md @@ -2,15 +2,10 @@ layout: tour title: 複数パラメータリスト(カリー化) language: ja - -discourse: true - partof: scala-tour - num: 10 next-page: case-classes previous-page: nested-functions - --- メソッドは複数のパラメータリストを持てます。 diff --git a/_ja/tour/named-arguments.md b/_ja/tour/named-arguments.md index 8ce70335a9..88bc231fda 100644 --- a/_ja/tour/named-arguments.md +++ b/_ja/tour/named-arguments.md @@ -2,16 +2,11 @@ layout: tour title: 名前付き引数 language: ja - -discourse: true - partof: scala-tour - num: 34 next-page: packages-and-imports previous-page: default-parameter-values prerequisite-knowledge: function-syntax - --- メソッドを呼ぶ時、以下のように引数にパラメータ名でラベル付が可能です。 diff --git a/_ja/tour/nested-functions.md b/_ja/tour/nested-functions.md index 9701e421cc..9fa581bc3e 100644 --- a/_ja/tour/nested-functions.md +++ b/_ja/tour/nested-functions.md @@ -2,15 +2,10 @@ layout: tour title: ネストしたメソッド language: ja - -discourse: true - partof: scala-tour - num: 9 next-page: multiple-parameter-lists previous-page: higher-order-functions - --- Scalaではメソッドの定義をネストする(_訳注:入れ子にする_)ことができます。 diff --git a/_ja/tour/operators.md b/_ja/tour/operators.md index 7df5800aa1..398790b4e0 100644 --- a/_ja/tour/operators.md +++ b/_ja/tour/operators.md @@ -2,16 +2,11 @@ layout: tour title: 演算子 language: ja - -discourse: true - partof: scala-tour - num: 30 next-page: by-name-parameters previous-page: type-inference prerequisite-knowledge: case-classes - --- Scalaでは演算子はメソッドです。パラメータを1つだけ持つメソッドであれば*中置演算子*として使えます。例えば、`+`はドット記法で呼び出せます。 diff --git a/_ja/tour/package-objects.md b/_ja/tour/package-objects.md index 755935d3ef..f2ed9b1d89 100644 --- a/_ja/tour/package-objects.md +++ b/_ja/tour/package-objects.md @@ -2,11 +2,7 @@ layout: tour title: パッケージオブジェクト language: ja - -discourse: true - partof: scala-tour - num: 36 previous-page: packages-and-imports --- diff --git a/_ja/tour/packages-and-imports.md b/_ja/tour/packages-and-imports.md index 8e44239b05..4e94731644 100644 --- a/_ja/tour/packages-and-imports.md +++ b/_ja/tour/packages-and-imports.md @@ -2,11 +2,7 @@ layout: tour title: パッケージとインポート language: ja - -discourse: true - partof: scala-tour - num: 35 previous-page: named-arguments next-page: package-objects diff --git a/_ja/tour/pattern-matching.md b/_ja/tour/pattern-matching.md index 9e1f5d9692..23c997ca91 100644 --- a/_ja/tour/pattern-matching.md +++ b/_ja/tour/pattern-matching.md @@ -2,17 +2,11 @@ layout: tour title: パターンマッチング language: ja - -discourse: true - partof: scala-tour - num: 12 - next-page: singleton-objects previous-page: case-classes prerequisite-knowledge: case-classes, string-interpolation, subtyping - --- パターンマッチングは値をパターンに照合するための仕組みです。 diff --git a/_ja/tour/polymorphic-methods.md b/_ja/tour/polymorphic-methods.md index 6143ef2612..4bab5f63bd 100644 --- a/_ja/tour/polymorphic-methods.md +++ b/_ja/tour/polymorphic-methods.md @@ -2,17 +2,11 @@ layout: tour title: ポリモーフィックメソッド language: ja - -discourse: true - partof: scala-tour - num: 28 - next-page: type-inference previous-page: implicit-conversions prerequisite-knowledge: unified-types - --- Scalaのメソッドは値と同様に型によってパラメータ化することができます。構文はジェネリッククラスの構文と似ています。 diff --git a/_ja/tour/regular-expression-patterns.md b/_ja/tour/regular-expression-patterns.md index 05882529c0..79cf565c9f 100644 --- a/_ja/tour/regular-expression-patterns.md +++ b/_ja/tour/regular-expression-patterns.md @@ -2,16 +2,10 @@ layout: tour title: 正規表現パターン language: ja - -discourse: true - partof: scala-tour - num: 15 - next-page: extractor-objects previous-page: singleton-objects - --- 正規表現はデータの中からパターン(またはその欠如)を探すために使うことができる文字列です。 どんな文字列も`.r`メソッドを使うことで、正規表現に変換できます。 diff --git a/_ja/tour/self-types.md b/_ja/tour/self-types.md index cb585dc09e..7ffa6745ec 100644 --- a/_ja/tour/self-types.md +++ b/_ja/tour/self-types.md @@ -2,17 +2,12 @@ layout: tour title: 自分型 language: ja - -discourse: true - partof: scala-tour - num: 25 next-page: implicit-parameters previous-page: compound-types topics: self-types prerequisite-knowledge: nested-classes, mixin-class-composition - --- 自分型は、直接継承していなくてもトレイトが他のトレイトにミックスインされていることを宣言する方法です。 これにより依存先のメンバーをimportなしで利用できます。 diff --git a/_ja/tour/singleton-objects.md b/_ja/tour/singleton-objects.md index 69ce1aeede..0414291909 100644 --- a/_ja/tour/singleton-objects.md +++ b/_ja/tour/singleton-objects.md @@ -2,13 +2,8 @@ layout: tour title: シングルトンオブジェクト language: ja - -discourse: true - partof: scala-tour - num: 13 - next-page: regular-expression-patterns previous-page: pattern-matching prerequisite-knowledge: classes, methods, private-methods, packages, option diff --git a/_ja/tour/tour-of-scala.md b/_ja/tour/tour-of-scala.md index ff2d026686..9e5d2b9860 100644 --- a/_ja/tour/tour-of-scala.md +++ b/_ja/tour/tour-of-scala.md @@ -2,15 +2,9 @@ layout: tour title: 前書き language: ja - -discourse: true - partof: scala-tour - num: 1 - next-page: basics - --- ## ようこそツアーへ diff --git a/_ja/tour/traits.md b/_ja/tour/traits.md index 81b7dc7046..1738b0fc0d 100644 --- a/_ja/tour/traits.md +++ b/_ja/tour/traits.md @@ -2,17 +2,12 @@ layout: tour title: トレイト language: ja - -discourse: true - partof: scala-tour - num: 5 next-page: tuples previous-page: classes topics: traits prerequisite-knowledge: expressions, classes, generics, objects, companion-objects - --- トレイトはクラス間でインターフェースとフィールドを共有するために使います。それらはJava 8のインターフェースと似ています。 diff --git a/_ja/tour/tuples.md b/_ja/tour/tuples.md index 7729138914..e3c2f1e0f7 100644 --- a/_ja/tour/tuples.md +++ b/_ja/tour/tuples.md @@ -2,16 +2,11 @@ layout: tour title: タプル language: ja - -discourse: true - partof: scala-tour - num: 6 next-page: mixin-class-composition previous-page: traits topics: tuples - --- Scalaではタプルは決まった数の要素を含む値であり、各要素はそれぞれの型を持ちます。 diff --git a/_ja/tour/type-inference.md b/_ja/tour/type-inference.md index 2db0e440b9..5973da20a2 100644 --- a/_ja/tour/type-inference.md +++ b/_ja/tour/type-inference.md @@ -2,11 +2,7 @@ layout: tour title: 型推論 language: ja - -discourse: true - partof: scala-tour - num: 29 next-page: operators previous-page: polymorphic-methods diff --git a/_ja/tour/unified-types.md b/_ja/tour/unified-types.md index 8f9710b62a..a12895c677 100644 --- a/_ja/tour/unified-types.md +++ b/_ja/tour/unified-types.md @@ -2,16 +2,11 @@ layout: tour title: 統合された型 language: ja - -discourse: true - partof: scala-tour - num: 3 next-page: classes previous-page: basics prerequisite-knowledge: classes, basics - --- Scalaでは数値や関数を含め、全ての値は型を持ちます。 以下の図は型階層の一部を説明しています。 diff --git a/_ja/tour/upper-type-bounds.md b/_ja/tour/upper-type-bounds.md index 7d8ac4df9a..8dfe6ca8ac 100644 --- a/_ja/tour/upper-type-bounds.md +++ b/_ja/tour/upper-type-bounds.md @@ -2,15 +2,11 @@ layout: tour title: 上限型境界 language: ja - -discourse: true - partof: scala-tour categories: tour num: 20 next-page: lower-type-bounds previous-page: variances - --- Scalaでは [型パラメータ](generic-classes.html)と[抽象型メンバー](abstract-type-members.html) は型境界による制約をかけることができます。 diff --git a/_ja/tour/variances.md b/_ja/tour/variances.md index c7eb10304e..314f8c2e48 100644 --- a/_ja/tour/variances.md +++ b/_ja/tour/variances.md @@ -2,15 +2,10 @@ layout: tour title: 変位指定 language: ja - -discourse: true - partof: scala-tour - num: 19 next-page: upper-type-bounds previous-page: generic-classes - --- 変位指定は複合型の間の継承関係とそれらの型パラメータ間の継承関係の相関です。 diff --git a/_ja/tutorials/scala-for-java-programmers.md b/_ja/tutorials/scala-for-java-programmers.md index b49113ff72..a2076100b1 100644 --- a/_ja/tutorials/scala-for-java-programmers.md +++ b/_ja/tutorials/scala-for-java-programmers.md @@ -1,10 +1,7 @@ --- layout: singlepage-overview title: JavaプログラマーのためのScalaチュートリアル - partof: scala-for-java-programmers - -discourse: false language: ja --- diff --git a/_overviews/scala-book/abstract-classes.md b/_overviews/scala-book/abstract-classes.md index a5ec3b96fa..ed8dc3b147 100644 --- a/_overviews/scala-book/abstract-classes.md +++ b/_overviews/scala-book/abstract-classes.md @@ -5,7 +5,6 @@ title: Abstract Classes description: This page shows how to use abstract classes, including when and why you should use abstract classes. partof: scala_book overview-name: Scala Book -discourse: true num: 27 outof: 54 previous-page: traits-abstract-mixins diff --git a/_overviews/scala-book/anonymous-functions.md b/_overviews/scala-book/anonymous-functions.md index bbd7bc8d8d..de9c9ebd14 100644 --- a/_overviews/scala-book/anonymous-functions.md +++ b/_overviews/scala-book/anonymous-functions.md @@ -5,7 +5,6 @@ title: Anonymous Functions description: This page shows how to use anonymous functions in Scala, including examples with the List class 'map' and 'filter' functions. partof: scala_book overview-name: Scala Book -discourse: true num: 34 outof: 54 previous-page: set-class diff --git a/_overviews/scala-book/arraybuffer-examples.md b/_overviews/scala-book/arraybuffer-examples.md index 8d4dd8ef53..1f0206e58f 100644 --- a/_overviews/scala-book/arraybuffer-examples.md +++ b/_overviews/scala-book/arraybuffer-examples.md @@ -5,7 +5,6 @@ title: The ArrayBuffer Class description: This page provides examples of how to use the Scala ArrayBuffer class, including adding and removing elements. partof: scala_book overview-name: Scala Book -discourse: true num: 29 outof: 54 previous-page: collections-101 diff --git a/_overviews/scala-book/built-in-types.md b/_overviews/scala-book/built-in-types.md index 209b1b8f0b..1567d13970 100644 --- a/_overviews/scala-book/built-in-types.md +++ b/_overviews/scala-book/built-in-types.md @@ -5,7 +5,6 @@ title: A Few Built-In Types description: A brief introduction to Scala's built-in types. partof: scala_book overview-name: Scala Book -discourse: true num: 10 outof: 54 previous-page: type-is-optional diff --git a/_overviews/scala-book/case-classes.md b/_overviews/scala-book/case-classes.md index 8722d4c5ae..33db4a9a7f 100644 --- a/_overviews/scala-book/case-classes.md +++ b/_overviews/scala-book/case-classes.md @@ -5,7 +5,6 @@ title: Case Classes description: This lesson provides an introduction to 'case classes' in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 49 outof: 54 previous-page: companion-objects diff --git a/_overviews/scala-book/case-objects.md b/_overviews/scala-book/case-objects.md index 1b7426f12a..ca6a5f155a 100644 --- a/_overviews/scala-book/case-objects.md +++ b/_overviews/scala-book/case-objects.md @@ -5,7 +5,6 @@ title: Case Objects description: This lesson introduces Scala 'case objects', which are used to create singletons with a few additional features. partof: scala_book overview-name: Scala Book -discourse: true num: 50 outof: 54 previous-page: case-classes diff --git a/_overviews/scala-book/classes-aux-constructors.md b/_overviews/scala-book/classes-aux-constructors.md index a66a4b4d80..d3af412a53 100644 --- a/_overviews/scala-book/classes-aux-constructors.md +++ b/_overviews/scala-book/classes-aux-constructors.md @@ -5,7 +5,6 @@ title: Auxiliary Class Constructors description: This page shows how to write auxiliary Scala class constructors, including several examples of the syntax. partof: scala_book overview-name: Scala Book -discourse: true num: 20 outof: 54 previous-page: classes diff --git a/_overviews/scala-book/classes.md b/_overviews/scala-book/classes.md index bc4fe65b66..c4861bc7c2 100644 --- a/_overviews/scala-book/classes.md +++ b/_overviews/scala-book/classes.md @@ -5,7 +5,6 @@ title: Scala Classes description: This page shows examples of how to create Scala classes, including the basic Scala class constructor. partof: scala_book overview-name: Scala Book -discourse: true num: 19 outof: 54 previous-page: try-catch-finally diff --git a/_overviews/scala-book/collections-101.md b/_overviews/scala-book/collections-101.md index 6df136b528..b98a72d116 100644 --- a/_overviews/scala-book/collections-101.md +++ b/_overviews/scala-book/collections-101.md @@ -5,7 +5,6 @@ title: Scala Collections description: This page provides an introduction to the Scala collections classes, including Vector, List, ArrayBuffer, Map, Set, and more. partof: scala_book overview-name: Scala Book -discourse: true num: 28 outof: 54 previous-page: abstract-classes diff --git a/_overviews/scala-book/collections-maps.md b/_overviews/scala-book/collections-maps.md index 95e890bbc3..84a9f065c4 100644 --- a/_overviews/scala-book/collections-maps.md +++ b/_overviews/scala-book/collections-maps.md @@ -5,7 +5,6 @@ title: Common Map Methods description: This page shows examples of the most common methods that are available on Scala Maps. partof: scala_book overview-name: Scala Book -discourse: true num: 36 outof: 54 previous-page: collections-methods diff --git a/_overviews/scala-book/collections-methods.md b/_overviews/scala-book/collections-methods.md index 7bd8d9a15a..e888179940 100644 --- a/_overviews/scala-book/collections-methods.md +++ b/_overviews/scala-book/collections-methods.md @@ -5,7 +5,6 @@ title: Common Sequence Methods description: This page shows examples of the most common methods that are available on the Scala sequences (collections classes). partof: scala_book overview-name: Scala Book -discourse: true num: 35 outof: 54 previous-page: anonymous-functions diff --git a/_overviews/scala-book/command-line-io.md b/_overviews/scala-book/command-line-io.md index ffb35f698e..14bf2901af 100644 --- a/_overviews/scala-book/command-line-io.md +++ b/_overviews/scala-book/command-line-io.md @@ -5,7 +5,6 @@ title: Command-Line I/O description: An introduction to command-line I/O in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 12 outof: 54 previous-page: two-notes-about-strings diff --git a/_overviews/scala-book/companion-objects.md b/_overviews/scala-book/companion-objects.md index 6babb21eb9..f024a8a2d5 100644 --- a/_overviews/scala-book/companion-objects.md +++ b/_overviews/scala-book/companion-objects.md @@ -5,7 +5,6 @@ title: Companion Objects description: This lesson provides an introduction to 'companion objects' in Scala, including writing 'apply' and 'unapply' methods. partof: scala_book overview-name: Scala Book -discourse: true num: 48 outof: 54 previous-page: no-null-values diff --git a/_overviews/scala-book/concurrency-signpost.md b/_overviews/scala-book/concurrency-signpost.md index 1629700299..d3435c4ede 100644 --- a/_overviews/scala-book/concurrency-signpost.md +++ b/_overviews/scala-book/concurrency-signpost.md @@ -5,7 +5,6 @@ title: Concurrency description: An introduction to concurrency in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 52 outof: 54 previous-page: functional-error-handling diff --git a/_overviews/scala-book/constructors-default-values.md b/_overviews/scala-book/constructors-default-values.md index aa4429305e..b54da93584 100644 --- a/_overviews/scala-book/constructors-default-values.md +++ b/_overviews/scala-book/constructors-default-values.md @@ -5,7 +5,6 @@ title: Supplying Default Values for Constructor Parameters description: This page shows how to provide default values for Scala constructor parameters, with several examples. partof: scala_book overview-name: Scala Book -discourse: true num: 21 outof: 54 previous-page: classes-aux-constructors diff --git a/_overviews/scala-book/control-structures.md b/_overviews/scala-book/control-structures.md index 813a05face..9d21b18eb3 100644 --- a/_overviews/scala-book/control-structures.md +++ b/_overviews/scala-book/control-structures.md @@ -5,7 +5,6 @@ title: Control Structures description: This page provides an introduction to Scala's control structures, including if/then/else, for loops, try/catch/finally, etc. partof: scala_book overview-name: Scala Book -discourse: true num: 13 outof: 54 previous-page: command-line-io diff --git a/_overviews/scala-book/enumerations-pizza-class.md b/_overviews/scala-book/enumerations-pizza-class.md index 31625129f0..d4052378bb 100644 --- a/_overviews/scala-book/enumerations-pizza-class.md +++ b/_overviews/scala-book/enumerations-pizza-class.md @@ -5,7 +5,6 @@ title: Enumerations (and a Complete Pizza Class) description: This page introduces Scala enumerations, and further shows how to create a complete OOP 'Pizza' class that uses those enumerations. partof: scala_book overview-name: Scala Book -discourse: true num: 23 outof: 54 previous-page: methods-first-look diff --git a/_overviews/scala-book/for-expressions.md b/_overviews/scala-book/for-expressions.md index 7977777872..4cd666ef42 100644 --- a/_overviews/scala-book/for-expressions.md +++ b/_overviews/scala-book/for-expressions.md @@ -5,7 +5,6 @@ title: for Expressions description: This page shows how to use Scala 'for' expressions (also known as 'for-expressions'), including examples of how to use it with the 'yield' keyword. partof: scala_book overview-name: Scala Book -discourse: true num: 16 outof: 54 previous-page: for-loops diff --git a/_overviews/scala-book/for-loops.md b/_overviews/scala-book/for-loops.md index 5eef6cc279..ef382270f2 100644 --- a/_overviews/scala-book/for-loops.md +++ b/_overviews/scala-book/for-loops.md @@ -5,7 +5,6 @@ title: for Loops description: This page provides an introduction to the Scala 'for' loop, including how to iterate over Scala collections. partof: scala_book overview-name: Scala Book -discourse: true num: 15 outof: 54 previous-page: if-then-else-construct diff --git a/_overviews/scala-book/functional-error-handling.md b/_overviews/scala-book/functional-error-handling.md index 00a448ccc0..8e779a2bc2 100644 --- a/_overviews/scala-book/functional-error-handling.md +++ b/_overviews/scala-book/functional-error-handling.md @@ -5,7 +5,6 @@ title: Functional Error Handling in Scala description: This lesson takes a look at error handling with functional programming in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 51 outof: 54 previous-page: case-objects diff --git a/_overviews/scala-book/functional-programming.md b/_overviews/scala-book/functional-programming.md index aa0581cf87..dee9cc4533 100644 --- a/_overviews/scala-book/functional-programming.md +++ b/_overviews/scala-book/functional-programming.md @@ -5,7 +5,6 @@ title: Functional Programming description: This lesson begins a second on 'An introduction to functional programming in Scala'. partof: scala_book overview-name: Scala Book -discourse: true num: 44 outof: 54 previous-page: sbt-scalatest-bdd diff --git a/_overviews/scala-book/futures.md b/_overviews/scala-book/futures.md index 9324b0ddf9..e585ff2819 100644 --- a/_overviews/scala-book/futures.md +++ b/_overviews/scala-book/futures.md @@ -5,7 +5,6 @@ title: Scala Futures description: This page provides an introduction to Futures in Scala, including Future callback methods. partof: scala_book overview-name: Scala Book -discourse: true num: 53 outof: 54 previous-page: concurrency-signpost diff --git a/_overviews/scala-book/hello-world-1.md b/_overviews/scala-book/hello-world-1.md index c9793a2376..28aa21f19b 100644 --- a/_overviews/scala-book/hello-world-1.md +++ b/_overviews/scala-book/hello-world-1.md @@ -5,7 +5,6 @@ title: Hello, World description: This page shares a Scala 'Hello, world' example. partof: scala_book overview-name: Scala Book -discourse: true num: 5 outof: 54 previous-page: scala-features diff --git a/_overviews/scala-book/hello-world-2.md b/_overviews/scala-book/hello-world-2.md index d07b7da00f..76d1bf053c 100644 --- a/_overviews/scala-book/hello-world-2.md +++ b/_overviews/scala-book/hello-world-2.md @@ -5,7 +5,6 @@ title: Hello, World - Version 2 description: This is a second Scala 'Hello, World' example. partof: scala_book overview-name: Scala Book -discourse: true num: 6 outof: 54 previous-page: hello-world-1 diff --git a/_overviews/scala-book/if-then-else-construct.md b/_overviews/scala-book/if-then-else-construct.md index 6fd09ef879..bd720f758a 100644 --- a/_overviews/scala-book/if-then-else-construct.md +++ b/_overviews/scala-book/if-then-else-construct.md @@ -5,7 +5,6 @@ title: The if/then/else Construct description: This page demonstrates Scala's if/then/else construct, including several examples you can try in the REPL. partof: scala_book overview-name: Scala Book -discourse: true num: 14 outof: 54 previous-page: control-structures diff --git a/_overviews/scala-book/list-class.md b/_overviews/scala-book/list-class.md index 1a606afc98..0e4e324e89 100644 --- a/_overviews/scala-book/list-class.md +++ b/_overviews/scala-book/list-class.md @@ -5,7 +5,6 @@ title: The List Class description: This page provides examples of the Scala List class, including how to add and remove elements from a List. partof: scala_book overview-name: Scala Book -discourse: true num: 30 outof: 54 previous-page: arraybuffer-examples diff --git a/_overviews/scala-book/map-class.md b/_overviews/scala-book/map-class.md index 4a7d48db98..34f0824fae 100644 --- a/_overviews/scala-book/map-class.md +++ b/_overviews/scala-book/map-class.md @@ -5,7 +5,6 @@ title: The Map Class description: This page provides examples of the Scala 'Map' class, including how to add and remove elements from a Map, and iterate over Map elements. partof: scala_book overview-name: Scala Book -discourse: true num: 32 outof: 54 previous-page: vector-class diff --git a/_overviews/scala-book/match-expressions.md b/_overviews/scala-book/match-expressions.md index 4b54dfb35c..60cc0d92ae 100644 --- a/_overviews/scala-book/match-expressions.md +++ b/_overviews/scala-book/match-expressions.md @@ -5,7 +5,6 @@ title: match Expressions description: This page shows examples of the Scala 'match' expression, including how to write match/case expressions. partof: scala_book overview-name: Scala Book -discourse: true num: 17 outof: 54 previous-page: for-expressions diff --git a/_overviews/scala-book/methods-first-look.md b/_overviews/scala-book/methods-first-look.md index 7e10bdfd77..348c66f56f 100644 --- a/_overviews/scala-book/methods-first-look.md +++ b/_overviews/scala-book/methods-first-look.md @@ -5,7 +5,6 @@ title: A First Look at Scala Methods description: This page provides a first look at how to write Scala methods, including how to test them in the REPL. partof: scala_book overview-name: Scala Book -discourse: true num: 22 outof: 54 previous-page: constructors-default-values diff --git a/_overviews/scala-book/misc.md b/_overviews/scala-book/misc.md index 61c19bd1b2..07f511305c 100644 --- a/_overviews/scala-book/misc.md +++ b/_overviews/scala-book/misc.md @@ -5,7 +5,6 @@ title: A Few Miscellaneous Items description: A few miscellaneous items about Scala partof: scala_book overview-name: Scala Book -discourse: true num: 37 outof: 54 previous-page: collections-maps diff --git a/_overviews/scala-book/no-null-values.md b/_overviews/scala-book/no-null-values.md index 757fc62670..194348c246 100644 --- a/_overviews/scala-book/no-null-values.md +++ b/_overviews/scala-book/no-null-values.md @@ -5,7 +5,6 @@ title: No Null Values description: This lesson demonstrates the Scala Option, Some, and None classes, including how to use them instead of null values. partof: scala_book overview-name: Scala Book -discourse: true num: 47 outof: 54 previous-page: passing-functions-around diff --git a/_overviews/scala-book/oop-pizza-example.md b/_overviews/scala-book/oop-pizza-example.md index 7d50686e71..c70df45e3f 100644 --- a/_overviews/scala-book/oop-pizza-example.md +++ b/_overviews/scala-book/oop-pizza-example.md @@ -5,7 +5,6 @@ title: An OOP Example description: This lesson shares an example of some OOP-style classes for a pizza restaurant order entry system, including Pizza, Topping, and Order classes. partof: scala_book overview-name: Scala Book -discourse: true num: 39 outof: 54 previous-page: tuples diff --git a/_overviews/scala-book/passing-functions-around.md b/_overviews/scala-book/passing-functions-around.md index 2700ea06c7..80c6cd2f2b 100644 --- a/_overviews/scala-book/passing-functions-around.md +++ b/_overviews/scala-book/passing-functions-around.md @@ -5,7 +5,6 @@ title: Passing Functions Around description: Like a good functional programming language, Scala lets you use functions just like other variables, including passing them into other functions. partof: scala_book overview-name: Scala Book -discourse: true num: 46 outof: 54 previous-page: pure-functions diff --git a/_overviews/scala-book/preliminaries.md b/_overviews/scala-book/preliminaries.md index e8057e37d9..ac3af5ea33 100644 --- a/_overviews/scala-book/preliminaries.md +++ b/_overviews/scala-book/preliminaries.md @@ -5,7 +5,6 @@ title: Preliminaries description: A few things to know about getting started with Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 3 outof: 54 previous-page: prelude-taste-of-scala diff --git a/_overviews/scala-book/prelude-taste-of-scala.md b/_overviews/scala-book/prelude-taste-of-scala.md index 1317561825..aba0111219 100644 --- a/_overviews/scala-book/prelude-taste-of-scala.md +++ b/_overviews/scala-book/prelude-taste-of-scala.md @@ -5,7 +5,6 @@ title: Prelude꞉ A Taste of Scala description: This page shares a Taste Of Scala example, quickly covering Scala's main features. partof: scala_book overview-name: Scala Book -discourse: true num: 2 outof: 54 previous-page: introduction diff --git a/_overviews/scala-book/pure-functions.md b/_overviews/scala-book/pure-functions.md index 97c6ef6fb9..5bbb4f50c2 100644 --- a/_overviews/scala-book/pure-functions.md +++ b/_overviews/scala-book/pure-functions.md @@ -5,7 +5,6 @@ title: Pure Functions description: This lesson provides an introduction to writing pure functions in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 45 outof: 54 previous-page: functional-programming diff --git a/_overviews/scala-book/sbt-scalatest-bdd.md b/_overviews/scala-book/sbt-scalatest-bdd.md index ee20a8490e..6bb134abdb 100644 --- a/_overviews/scala-book/sbt-scalatest-bdd.md +++ b/_overviews/scala-book/sbt-scalatest-bdd.md @@ -5,7 +5,6 @@ title: Writing BDD Style Tests with ScalaTest and sbt description: This lesson shows how to write ScalaTest unit tests with sbt in a behavior-driven development (TDD) style. partof: scala_book overview-name: Scala Book -discourse: true num: 43 outof: 54 previous-page: sbt-scalatest-tdd diff --git a/_overviews/scala-book/sbt-scalatest-intro.md b/_overviews/scala-book/sbt-scalatest-intro.md index bf40ba8c6c..e7f8d20bed 100644 --- a/_overviews/scala-book/sbt-scalatest-intro.md +++ b/_overviews/scala-book/sbt-scalatest-intro.md @@ -5,7 +5,6 @@ title: sbt and ScalaTest description: In this lesson we'll start to introduce sbt and ScalaTest, two tools commonly used on Scala projects. partof: scala_book overview-name: Scala Book -discourse: true num: 40 outof: 54 previous-page: oop-pizza-example diff --git a/_overviews/scala-book/sbt-scalatest-tdd.md b/_overviews/scala-book/sbt-scalatest-tdd.md index 7214566a09..724d9c1728 100644 --- a/_overviews/scala-book/sbt-scalatest-tdd.md +++ b/_overviews/scala-book/sbt-scalatest-tdd.md @@ -5,7 +5,6 @@ title: Using ScalaTest with sbt description: This lesson shows how to write ScalaTest unit tests with sbt in a test-driven development (TDD) style. partof: scala_book overview-name: Scala Book -discourse: true num: 42 outof: 54 previous-page: scala-build-tool-sbt diff --git a/_overviews/scala-book/scala-build-tool-sbt.md b/_overviews/scala-book/scala-build-tool-sbt.md index 8986433976..aefb28ecea 100644 --- a/_overviews/scala-book/scala-build-tool-sbt.md +++ b/_overviews/scala-book/scala-build-tool-sbt.md @@ -5,7 +5,6 @@ title: The most used scala build tool (sbt) description: This page provides an introduction to the Scala Build Tool, sbt, including a simple 'Hello, world' project. partof: scala_book overview-name: Scala Book -discourse: true num: 41 outof: 54 previous-page: sbt-scalatest-intro diff --git a/_overviews/scala-book/scala-features.md b/_overviews/scala-book/scala-features.md index eee55bd089..c7d7387d4a 100644 --- a/_overviews/scala-book/scala-features.md +++ b/_overviews/scala-book/scala-features.md @@ -5,7 +5,6 @@ title: Scala Features description: TODO partof: scala_book overview-name: Scala Book -discourse: true num: 4 outof: 54 previous-page: preliminaries diff --git a/_overviews/scala-book/scala-repl.md b/_overviews/scala-book/scala-repl.md index c1ced1f219..062ca12b7f 100644 --- a/_overviews/scala-book/scala-repl.md +++ b/_overviews/scala-book/scala-repl.md @@ -5,7 +5,6 @@ title: The Scala REPL description: This page shares an introduction to the Scala REPL. partof: scala_book overview-name: Scala Book -discourse: true num: 7 outof: 54 previous-page: hello-world-2 diff --git a/_overviews/scala-book/set-class.md b/_overviews/scala-book/set-class.md index 55fefb31d0..dc69cb2ae4 100644 --- a/_overviews/scala-book/set-class.md +++ b/_overviews/scala-book/set-class.md @@ -5,7 +5,6 @@ title: The Set Class description: This page provides examples of the Scala 'Set' class, including how to add and remove elements from a Set, and iterate over Set elements. partof: scala_book overview-name: Scala Book -discourse: true num: 33 outof: 54 previous-page: map-class diff --git a/_overviews/scala-book/traits-abstract-mixins.md b/_overviews/scala-book/traits-abstract-mixins.md index eeecb67aee..db3ab56d63 100644 --- a/_overviews/scala-book/traits-abstract-mixins.md +++ b/_overviews/scala-book/traits-abstract-mixins.md @@ -5,7 +5,6 @@ title: Using Scala Traits Like Abstract Classes description: This page shows how to use Scala traits just like abstract classes in Java, with examples of concrete and abstract methods. partof: scala_book overview-name: Scala Book -discourse: true num: 26 outof: 54 previous-page: traits-interfaces diff --git a/_overviews/scala-book/traits-interfaces.md b/_overviews/scala-book/traits-interfaces.md index a10ed18a61..f422f158bc 100644 --- a/_overviews/scala-book/traits-interfaces.md +++ b/_overviews/scala-book/traits-interfaces.md @@ -5,7 +5,6 @@ title: Using Scala Traits as Interfaces description: This page shows how to use Scala traits just like Java interfaces, including several examples. partof: scala_book overview-name: Scala Book -discourse: true num: 25 outof: 54 previous-page: traits-intro diff --git a/_overviews/scala-book/traits-intro.md b/_overviews/scala-book/traits-intro.md index a6d1db0f26..75656b4a64 100644 --- a/_overviews/scala-book/traits-intro.md +++ b/_overviews/scala-book/traits-intro.md @@ -5,7 +5,6 @@ title: Scala Traits and Abstract Classes description: An introduction to Scala traits and abstract classes. partof: scala_book overview-name: Scala Book -discourse: true num: 24 outof: 54 previous-page: enumerations-pizza-class diff --git a/_overviews/scala-book/try-catch-finally.md b/_overviews/scala-book/try-catch-finally.md index 5dee7890a4..607bf3fc0b 100644 --- a/_overviews/scala-book/try-catch-finally.md +++ b/_overviews/scala-book/try-catch-finally.md @@ -5,7 +5,6 @@ title: try/catch/finally Expressions description: This page shows how to use Scala's try/catch/finally construct, including several complete examples. partof: scala_book overview-name: Scala Book -discourse: true num: 18 outof: 54 previous-page: match-expressions diff --git a/_overviews/scala-book/tuples.md b/_overviews/scala-book/tuples.md index c2eb8e4225..568037274b 100644 --- a/_overviews/scala-book/tuples.md +++ b/_overviews/scala-book/tuples.md @@ -5,7 +5,6 @@ title: Tuples description: This page is an introduction to the Scala 'tuple' data type, showing examples of how to use tuples in your Scala code. partof: scala_book overview-name: Scala Book -discourse: true num: 38 outof: 54 previous-page: misc diff --git a/_overviews/scala-book/two-notes-about-strings.md b/_overviews/scala-book/two-notes-about-strings.md index fdcbd7a29a..dea6f3e643 100644 --- a/_overviews/scala-book/two-notes-about-strings.md +++ b/_overviews/scala-book/two-notes-about-strings.md @@ -5,7 +5,6 @@ title: Two Notes About Strings description: This page shares two important notes about strings in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 11 outof: 54 previous-page: built-in-types diff --git a/_overviews/scala-book/two-types-variables.md b/_overviews/scala-book/two-types-variables.md index 678c89dc3d..f369c66a87 100644 --- a/_overviews/scala-book/two-types-variables.md +++ b/_overviews/scala-book/two-types-variables.md @@ -5,7 +5,6 @@ title: Two Types of Variables description: Scala has two types of variables, val and var. partof: scala_book overview-name: Scala Book -discourse: true num: 8 outof: 54 previous-page: scala-repl diff --git a/_overviews/scala-book/type-is-optional.md b/_overviews/scala-book/type-is-optional.md index 3b21654433..0d8b0a1c93 100644 --- a/_overviews/scala-book/type-is-optional.md +++ b/_overviews/scala-book/type-is-optional.md @@ -5,7 +5,6 @@ title: The Type is Optional description: A note about explicit and implicit data type declarations in Scala. partof: scala_book overview-name: Scala Book -discourse: true num: 9 outof: 54 previous-page: two-types-variables diff --git a/_overviews/scala-book/vector-class.md b/_overviews/scala-book/vector-class.md index 15981e7904..1c17c9183c 100644 --- a/_overviews/scala-book/vector-class.md +++ b/_overviews/scala-book/vector-class.md @@ -5,7 +5,6 @@ title: The Vector Class description: This page provides examples of the Scala 'Vector' class, including how to add and remove elements from a Vector. partof: scala_book overview-name: Scala Book -discourse: true num: 31 outof: 54 previous-page: list-class diff --git a/_overviews/scala-book/where-next.md b/_overviews/scala-book/where-next.md index 4b045d7182..6bce221a97 100644 --- a/_overviews/scala-book/where-next.md +++ b/_overviews/scala-book/where-next.md @@ -5,7 +5,6 @@ title: Where To Go Next description: Where to go next after reading the Scala Book partof: scala_book overview-name: Scala Book -discourse: true num: 54 outof: 54 previous-page: futures diff --git a/_overviews/scaladoc/contribute.md b/_overviews/scaladoc/contribute.md index dc0af2ce57..0d8999574a 100644 --- a/_overviews/scaladoc/contribute.md +++ b/_overviews/scaladoc/contribute.md @@ -1,14 +1,9 @@ --- layout: multipage-overview title: Contributing to Scaladoc - -discourse: true - partof: scaladoc overview-name: Scaladoc - num: 5 - permalink: /overviews/scaladoc/:title.html --- diff --git a/_overviews/scaladoc/generate.md b/_overviews/scaladoc/generate.md index 98c0942ffe..0fbd38d533 100644 --- a/_overviews/scaladoc/generate.md +++ b/_overviews/scaladoc/generate.md @@ -1,14 +1,9 @@ --- layout: multipage-overview title: Generating Scaladoc - -discourse: true - partof: scaladoc overview-name: Scaladoc - num: 4 - permalink: /overviews/scaladoc/:title.html --- diff --git a/_ru/overviews/collections-2.13/arrays.md b/_ru/overviews/collections-2.13/arrays.md index 7e71da1027..dba3fb4e08 100644 --- a/_ru/overviews/collections-2.13/arrays.md +++ b/_ru/overviews/collections-2.13/arrays.md @@ -1,17 +1,12 @@ --- layout: multipage-overview title: Массивы - -discourse: true - partof: collections-213 overview-name: Collections - num: 10 previous-page: concrete-mutable-collection-classes next-page: strings language: ru - --- [Массивы](https://www.scala-lang.org/api/{{ site.scala-version }}/scala/Array.html) особый вид коллекций в Scala. diff --git a/_ru/overviews/collections-2.13/concrete-immutable-collection-classes.md b/_ru/overviews/collections-2.13/concrete-immutable-collection-classes.md index 6da8bcc3e1..0c6a672ae0 100644 --- a/_ru/overviews/collections-2.13/concrete-immutable-collection-classes.md +++ b/_ru/overviews/collections-2.13/concrete-immutable-collection-classes.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Реализации Неизменяемых Коллекций - -discourse: true - partof: collections-213 overview-name: Collections - previous-page: maps next-page: concrete-mutable-collection-classes - num: 8 language: ru - --- Scala предлагает множество конечных реализаций неизменяемых коллекций. Они отличаются реализуемыми трейтами (мапы (map), множества(set), последовательности(seq)), они могут быть бесконечными, и различаются производительностью операций. Вот некоторые из наиболее распространенных неизменяемых типов коллекций, используемых в Scala. diff --git a/_ru/overviews/collections-2.13/concrete-mutable-collection-classes.md b/_ru/overviews/collections-2.13/concrete-mutable-collection-classes.md index 7152037ce9..a65910b05a 100644 --- a/_ru/overviews/collections-2.13/concrete-mutable-collection-classes.md +++ b/_ru/overviews/collections-2.13/concrete-mutable-collection-classes.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Реализации Изменяемых Коллекций - -discourse: true - partof: collections-213 overview-name: Collections - num: 9 previous-page: concrete-immutable-collection-classes next-page: arrays - language: ru - --- Вы уже успели увидеть наиболее часто используемые неизменяемые типы коллекции, которые есть в стандартной библиотеке Scala. Настало время посмотреть на изменяемые (mutable) типы коллекции. diff --git a/_ru/overviews/collections-2.13/conversions-between-java-and-scala-collections.md b/_ru/overviews/collections-2.13/conversions-between-java-and-scala-collections.md index 2471e0121f..0320c0c59d 100644 --- a/_ru/overviews/collections-2.13/conversions-between-java-and-scala-collections.md +++ b/_ru/overviews/collections-2.13/conversions-between-java-and-scala-collections.md @@ -1,17 +1,11 @@ --- layout: multipage-overview title: Преобразования между Java и Scala коллекциями - -discourse: true - partof: collections-213 overview-name: Collections - num: 17 previous-page: creating-collections-from-scratch - language: ru - --- Как и в Scala, в Java есть богатая библиотека коллекций. Между ними много общего. Например, обе библиотеки предоставляют итераторы, итерируемые сущности, множества, мапы и списки. Но есть и серьезные различия. В частности, библиотека Scala фокусируют больше внимания на неизменяемых коллекциях, предоставляя больше возможностей для преобразования исходной коллекции в новую. diff --git a/_ru/overviews/collections-2.13/creating-collections-from-scratch.md b/_ru/overviews/collections-2.13/creating-collections-from-scratch.md index 1eacea990f..25c9cb21cf 100644 --- a/_ru/overviews/collections-2.13/creating-collections-from-scratch.md +++ b/_ru/overviews/collections-2.13/creating-collections-from-scratch.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Создание коллекций с нуля - -discourse: true - partof: collections-213 overview-name: Collections - num: 16 previous-page: iterators next-page: conversions-between-java-and-scala-collections - language: ru - --- У вас есть синтаксис `List(1, 2, 3)` для создания списка из трех целых чисел и `Map('A' -> 1, 'C' -> 2)` для создания мапы с двумя элементами. На самом деле, это универсальная функциональность коллекций Scala. Можно получить любую коллекцию написав ее название и указав следом список элементов в круглых скобках. В результате получится новая коллекция с заданными элементами. Вот еще несколько примеров: diff --git a/_ru/overviews/collections-2.13/equality.md b/_ru/overviews/collections-2.13/equality.md index 5908d1ca2b..179ae0bd71 100644 --- a/_ru/overviews/collections-2.13/equality.md +++ b/_ru/overviews/collections-2.13/equality.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Равенство - -discourse: true - partof: collections-213 overview-name: Collections - num: 13 previous-page: performance-characteristics next-page: views - language: ru - --- Коллекций придерживаются единого подхода к определению равенства и получению хэшей. Идея состоит, во-первых, в том, чтобы разделить коллекции на группы: множества, мапы и последовательности. Коллекции в разных группах всегда различаются. Например, `Set(1,2,3)` неравнозначен списку `List(1,2,3)`, хотя они содержат одни и те же элементы. С другой стороны, в рамках одной и той же группы коллекции равны тогда и только тогда, когда они имеют одинаковые элементы (для последовательностей: одни и те же элементы в одном порядке). Например `List(1, 2, 3) == Vector(1, 2, 3)`, и `HashSet(1, 2) == TreeSet(2, 1)`. diff --git a/_ru/overviews/collections-2.13/introduction.md b/_ru/overviews/collections-2.13/introduction.md index c965ef979e..e97c142eb8 100644 --- a/_ru/overviews/collections-2.13/introduction.md +++ b/_ru/overviews/collections-2.13/introduction.md @@ -1,17 +1,11 @@ --- layout: multipage-overview title: Введение - -discourse: true - partof: collections-213 overview-name: Collections - num: 1 next-page: overview - language: ru - --- **Martin Odersky и Lex Spoon** diff --git a/_ru/overviews/collections-2.13/iterators.md b/_ru/overviews/collections-2.13/iterators.md index ee7c02c50d..a74e0bc860 100644 --- a/_ru/overviews/collections-2.13/iterators.md +++ b/_ru/overviews/collections-2.13/iterators.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Итераторы - -discourse: true - partof: collections-213 overview-name: Collections - num: 15 previous-page: views next-page: creating-collections-from-scratch - language: ru - --- Итератор (Iterator) - это не коллекция, а скорее способ поочередного доступа к элементам коллекции. Есть две основные операции у итератора - это `next` и `hasNext`. Вызов метода `it.next()` на итераторе `it` вернет следующий элемент и изменит его состояние. Повторный вызов `next` на том же итераторе выведит следующий элемент идущий после ранее возвращённого. Если больше нет элементов для возврата, вызов команды `next` кинет исключение `NoSuchElementException`. Вы можете узнать, есть ли еще элементы для возврата с помощью метода `hasNext` у [Итератора](https://www.scala-lang.org/api/{{ site.scala-version }}/scala/collection/Iterator.html). diff --git a/_ru/overviews/collections-2.13/maps.md b/_ru/overviews/collections-2.13/maps.md index 18cfc11245..a3d93834fd 100644 --- a/_ru/overviews/collections-2.13/maps.md +++ b/_ru/overviews/collections-2.13/maps.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Мапы - -discourse: true - partof: collections-213 overview-name: Collections - num: 7 previous-page: sets next-page: concrete-immutable-collection-classes - language: ru - --- [Map](https://www.scala-lang.org/api/current/scala/collection/Map.html) это [Iterable](https://www.scala-lang.org/api/current/scala/collection/Iterable.html) состоящее из пар ключ значение (также называемых _связкой_ или _ассоциативным массивом_). diff --git a/_ru/overviews/collections-2.13/overview.md b/_ru/overviews/collections-2.13/overview.md index b0fe21b1cd..361d8f5551 100644 --- a/_ru/overviews/collections-2.13/overview.md +++ b/_ru/overviews/collections-2.13/overview.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Изменяемые и Неизменяемые Коллекции - -discourse: true - partof: collections-213 overview-name: Collections - num: 2 previous-page: introduction next-page: trait-iterable - language: ru - --- В коллекциях Scala постоянно проводят различие между неизменяемыми и изменяемыми коллекциями. _Изменяемые_ (mutable) коллекции могут быть изменены или дополнены. Это означает, что вы можете изменять, добавлять или удалять её элементы. _Неизменяемые_ (Immutable) коллекции, напротив, никогда не меняются. У них есть операции, имитирующие добавления, удаления или обновления, но эти операции каждый раз будут возвращать новую коллекцию и оставлять старую коллекцию без изменений. diff --git a/_ru/overviews/collections-2.13/performance-characteristics.md b/_ru/overviews/collections-2.13/performance-characteristics.md index 526a74a2b2..eb63206c02 100644 --- a/_ru/overviews/collections-2.13/performance-characteristics.md +++ b/_ru/overviews/collections-2.13/performance-characteristics.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Показатели производительности - -discourse: true - partof: collections-213 overview-name: Collections - num: 12 previous-page: strings next-page: equality - language: ru - --- Из предыдущих объяснений стало ясно, что разные типы коллекций имеют разные показатели производительности. Что зачастую является основной причиной, выбора одной коллекции вместо другой. Показатели для наиболее распространенных операций собраны в таблицах ниже. diff --git a/_ru/overviews/collections-2.13/seqs.md b/_ru/overviews/collections-2.13/seqs.md index c5557bdd40..9bf9d180c3 100644 --- a/_ru/overviews/collections-2.13/seqs.md +++ b/_ru/overviews/collections-2.13/seqs.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Последовательности. Трейт Seq, IndexedSeq и LinearSeq - -discourse: true - partof: collections-213 overview-name: Collections - num: 5 previous-page: trait-iterable next-page: sets - language: ru - --- Трейт [Seq](https://www.scala-lang.org/api/current/scala/collection/Seq.html) представляет из себя последовательность. Последовательность - это своего рода итерируемая сущность, у которой есть длина (`length`) и элементы с фиксированным индексом, начинающийся от `0`. diff --git a/_ru/overviews/collections-2.13/sets.md b/_ru/overviews/collections-2.13/sets.md index 3a2bbbf98e..2a4d4a0550 100644 --- a/_ru/overviews/collections-2.13/sets.md +++ b/_ru/overviews/collections-2.13/sets.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Множества - -discourse: true - partof: collections-213 overview-name: Collections - num: 6 previous-page: seqs next-page: maps - language: ru - --- Множества (`Set`) - это итерируемые сущности, которые не содержат дублирующих друг друга элементов. Операции с множествами описаны в таблицах ниже. Описания включают операции для базовых, неизменяемых и изменяемых множеств. Все их операции поделены на следующие категории: diff --git a/_ru/overviews/collections-2.13/strings.md b/_ru/overviews/collections-2.13/strings.md index 1527860415..17e13d1a14 100644 --- a/_ru/overviews/collections-2.13/strings.md +++ b/_ru/overviews/collections-2.13/strings.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Строки - -discourse: true - partof: collections-213 overview-name: Collections - num: 11 previous-page: arrays next-page: performance-characteristics - language: ru - --- Как и массивы, строки не являются непосредственно последовательностями, но могут быть преобразованы в них, а также поддерживают все операции которые есть у последовательностей. Ниже приведены некоторые примеры операций, которые можно вызывать на строках. diff --git a/_ru/overviews/collections-2.13/trait-iterable.md b/_ru/overviews/collections-2.13/trait-iterable.md index 25cfd6ed37..447859daba 100644 --- a/_ru/overviews/collections-2.13/trait-iterable.md +++ b/_ru/overviews/collections-2.13/trait-iterable.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Трейт Iterable - -discourse: true - partof: collections-213 overview-name: Collections - num: 4 previous-page: overview next-page: seqs - language: ru - --- На самом верху иерархии коллекций находится трейт `Iterable`. Все методы в этого трейта описаны как абстрактные, `iterator` - это метод, который выдает элементы коллекции один за другим. diff --git a/_ru/overviews/collections-2.13/views.md b/_ru/overviews/collections-2.13/views.md index 8a095c96a1..3b8a5f5d76 100644 --- a/_ru/overviews/collections-2.13/views.md +++ b/_ru/overviews/collections-2.13/views.md @@ -1,18 +1,12 @@ --- layout: multipage-overview title: Отображения - -discourse: true - partof: collections-213 overview-name: Collections - num: 14 previous-page: equality next-page: iterators - language: ru - --- У коллекций довольно много вариантов создания новых коллекций. Ну например используя операции `map`, `filter` или `++`. Мы называем такие операции *трансформерами*, потому что они берут хотя бы одну коллекцию и трансформируют её в новую коллекцию. diff --git a/_ru/overviews/collections/introduction.md b/_ru/overviews/collections/introduction.md index 4f503f94d6..5b996a9254 100644 --- a/_ru/overviews/collections/introduction.md +++ b/_ru/overviews/collections/introduction.md @@ -1,14 +1,9 @@ --- layout: multipage-overview title: Введение - -discourse: false - partof: collections overview-name: Collections - num: 1 - language: ru --- diff --git a/_ru/overviews/parallel-collections/architecture.md b/_ru/overviews/parallel-collections/architecture.md index 5ee10d99b9..9677440e9c 100644 --- a/_ru/overviews/parallel-collections/architecture.md +++ b/_ru/overviews/parallel-collections/architecture.md @@ -1,9 +1,6 @@ --- layout: multipage-overview title: Архитектура библиотеки параллельных коллекций - -discourse: false - partof: parallel-collections overview-name: Parallel Collections diff --git a/_ru/overviews/parallel-collections/concrete-parallel-collections.md b/_ru/overviews/parallel-collections/concrete-parallel-collections.md index ab41a576c7..b6170ffe1d 100644 --- a/_ru/overviews/parallel-collections/concrete-parallel-collections.md +++ b/_ru/overviews/parallel-collections/concrete-parallel-collections.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Конкретные классы параллельных коллекций - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - language: ru num: 2 --- diff --git a/_ru/overviews/parallel-collections/configuration.md b/_ru/overviews/parallel-collections/configuration.md index 5dbd2b1e38..253c4c30d5 100644 --- a/_ru/overviews/parallel-collections/configuration.md +++ b/_ru/overviews/parallel-collections/configuration.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Конфигурирование параллельных коллекций - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - language: ru num: 7 --- diff --git a/_ru/overviews/parallel-collections/conversions.md b/_ru/overviews/parallel-collections/conversions.md index 114f2d8986..f001762841 100644 --- a/_ru/overviews/parallel-collections/conversions.md +++ b/_ru/overviews/parallel-collections/conversions.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Преобразования параллельных коллекций - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - language: ru num: 3 --- diff --git a/_ru/overviews/parallel-collections/ctries.md b/_ru/overviews/parallel-collections/ctries.md index 9e52d407bf..640ac7e8b9 100644 --- a/_ru/overviews/parallel-collections/ctries.md +++ b/_ru/overviews/parallel-collections/ctries.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Многопоточные префиксные деревья - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - language: ru num: 4 --- diff --git a/_ru/overviews/parallel-collections/custom-parallel-collections.md b/_ru/overviews/parallel-collections/custom-parallel-collections.md index 6fd6fa9f58..4dbcdf7e96 100644 --- a/_ru/overviews/parallel-collections/custom-parallel-collections.md +++ b/_ru/overviews/parallel-collections/custom-parallel-collections.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Создание пользовательской параллельной коллекции - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - language: ru num: 6 --- diff --git a/_ru/overviews/parallel-collections/overview.md b/_ru/overviews/parallel-collections/overview.md index 2d68d91d8d..e2b4bbcd7d 100644 --- a/_ru/overviews/parallel-collections/overview.md +++ b/_ru/overviews/parallel-collections/overview.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Обзор - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - num: 1 language: ru --- diff --git a/_ru/overviews/parallel-collections/performance.md b/_ru/overviews/parallel-collections/performance.md index b86e90bc2c..64e533e359 100644 --- a/_ru/overviews/parallel-collections/performance.md +++ b/_ru/overviews/parallel-collections/performance.md @@ -1,12 +1,8 @@ --- layout: multipage-overview title: Измерение производительности - -discourse: false - partof: parallel-collections overview-name: Parallel Collections - num: 8 language: ru --- diff --git a/_ru/tour/abstract-type-members.md b/_ru/tour/abstract-type-members.md index 849286419f..6da748d090 100644 --- a/_ru/tour/abstract-type-members.md +++ b/_ru/tour/abstract-type-members.md @@ -1,9 +1,6 @@ --- layout: tour title: Члены Абстрактного Типа - -discourse: true - partof: scala-tour num: 23 language: ru @@ -11,7 +8,6 @@ next-page: compound-types previous-page: inner-classes topics: abstract type members prerequisite-knowledge: variance, upper-type-bound - --- Абстрактные типы, такие как трейты и абстрактные классы, могут содержать членов абстрактного типа. diff --git a/_ru/tour/annotations.md b/_ru/tour/annotations.md index 99a668acb0..46718f2d77 100644 --- a/_ru/tour/annotations.md +++ b/_ru/tour/annotations.md @@ -1,16 +1,11 @@ --- layout: tour title: Аннотации - -discourse: true - partof: scala-tour - num: 32 language: ru next-page: packages-and-imports previous-page: by-name-parameters - --- Аннотации используются для передачи метаданных при объявлении. Например, аннотация `@deprecated` перед объявлением метода, заставит компилятор вывести предупреждение, если этот метод будет использован. diff --git a/_ru/tour/automatic-closures.md b/_ru/tour/automatic-closures.md index 7de83279d8..7465e6abef 100644 --- a/_ru/tour/automatic-closures.md +++ b/_ru/tour/automatic-closures.md @@ -1,8 +1,6 @@ --- layout: tour title: Конструкция Автоматического Замыкания Зависимого Типа - -discourse: true language: ru partof: scala-tour num: 14 diff --git a/_ru/tour/basics.md b/_ru/tour/basics.md index f6c3788f4c..518662c9f6 100644 --- a/_ru/tour/basics.md +++ b/_ru/tour/basics.md @@ -1,16 +1,11 @@ --- layout: tour title: Основы - -discourse: true - partof: scala-tour - num: 2 language: ru next-page: unified-types previous-page: tour-of-scala - --- На этой странице мы расскажем об основах Scala. diff --git a/_ru/tour/by-name-parameters.md b/_ru/tour/by-name-parameters.md index 4a1a4d4417..3be9478fe8 100644 --- a/_ru/tour/by-name-parameters.md +++ b/_ru/tour/by-name-parameters.md @@ -1,16 +1,11 @@ --- layout: tour title: Вызов по имени - -discourse: true - partof: scala-tour - num: 31 language: ru next-page: annotations previous-page: operators - --- _Вызов параметров по имени_ - это когда значение параметра вычисляется только в момент вызова параметра. Этот способ противоположен _вызову по значению_. Чтоб вызов параметра был по имени, необходимо просто указать `=>` перед его типом. diff --git a/_ru/tour/case-classes.md b/_ru/tour/case-classes.md index 9a49c560dd..64fab9024e 100644 --- a/_ru/tour/case-classes.md +++ b/_ru/tour/case-classes.md @@ -1,17 +1,12 @@ --- layout: tour title: Классы Образцы - -discourse: true - partof: scala-tour - num: 11 language: ru next-page: pattern-matching previous-page: multiple-parameter-lists prerequisite-knowledge: classes, basics, mutability - --- Классы образцы (Case classes) похожи на обычные классы с несколькими ключевыми отличиями, о которых мы поговорим ниже. Классы образцы хороши для моделирования неизменяемых данных. На следующей странице обзора вы увидите, насколько они полезны для участия в [сопоставлении с примером](pattern-matching.html). diff --git a/_ru/tour/classes.md b/_ru/tour/classes.md index db66150841..d7e66a84c0 100644 --- a/_ru/tour/classes.md +++ b/_ru/tour/classes.md @@ -1,18 +1,13 @@ --- layout: tour title: Классы - -discourse: true - partof: scala-tour - num: 4 language: ru next-page: traits previous-page: unified-types topics: classes prerequisite-knowledge: no-return-keyword, type-declaration-syntax, string-interpolation, procedures - --- Классы в Scala являются основами для создания объектов. Они могут содержать методы, константы, переменные, типы, объекты, трейты и классы, которые в совокупности называются _членами_. Типы, объекты и трейты будут рассмотрены позже в ходе нашего обзора. diff --git a/_ru/tour/compound-types.md b/_ru/tour/compound-types.md index eb861afbfd..5d0a49aa0e 100644 --- a/_ru/tour/compound-types.md +++ b/_ru/tour/compound-types.md @@ -1,16 +1,11 @@ --- layout: tour title: Составные Типы - -discourse: true - partof: scala-tour - num: 24 language: ru next-page: self-types previous-page: abstract-type-members - --- Иногда необходимо выразить, то что тип объекта является подтипом нескольких других типов. В Scala это можно выразить с помощью *составных типов*, которые являются объединением нескольких типов объектов. diff --git a/_ru/tour/default-parameter-values.md b/_ru/tour/default-parameter-values.md index 72ab55e786..ac8c04eda4 100644 --- a/_ru/tour/default-parameter-values.md +++ b/_ru/tour/default-parameter-values.md @@ -1,17 +1,12 @@ --- layout: tour title: Значения Параметров По умолчанию - -discourse: true - partof: scala-tour - num: 33 language: ru next-page: named-arguments previous-page: classes prerequisite-knowledge: named-arguments, function syntax - --- Scala предоставляет возможность задавать значения параметров по умолчанию, что позволяет лишний раз не указывать параметры. diff --git a/_ru/tour/extractor-objects.md b/_ru/tour/extractor-objects.md index 0c968f36cd..8d86b454ac 100644 --- a/_ru/tour/extractor-objects.md +++ b/_ru/tour/extractor-objects.md @@ -1,16 +1,11 @@ --- layout: tour title: Объект Экстрактор - -discourse: true - partof: scala-tour - num: 16 language: ru next-page: for-comprehensions previous-page: regular-expression-patterns - --- Объект Экстрактор (объект распаковщик или extractor object) - это объект с методом `unapply`. В то время как метод `apply` обычно действует как конструктор, который принимает аргументы и создает объект, метод `unapply` действует обратным образом, он принимает объект и пытается извлечь и вернуть аргументы из которых он (возможно) был создан. Чаще всего этот метод используется в функциях сопоставления с примером и в частично определенных функциях. diff --git a/_ru/tour/for-comprehensions.md b/_ru/tour/for-comprehensions.md index 29aad7105c..5a2c538769 100644 --- a/_ru/tour/for-comprehensions.md +++ b/_ru/tour/for-comprehensions.md @@ -1,16 +1,11 @@ --- layout: tour title: Сложные for-выражения - -discourse: true - partof: scala-tour - num: 17 language: ru next-page: generic-classes previous-page: extractor-objects - --- Scala предлагает простую запись для выражения *последовательных преобразований*. Эти преобразования можно упростить используя специальный синтаксис `for выражения` (for comprehension), который записывается как `for (enumerators) yield e`, где `enumerators` относятся к списку перечислителей, разделенных точкой с запятой. Где отдельный такой "перечислитель" (*enumerator*) является либо генератором, который вводит новые переменные, либо фильтром. For-выражение вычисляет тело `e` (которое связанно с тем что генерирует *enumerator*) и возвращает последовательность вычислений. diff --git a/_ru/tour/generic-classes.md b/_ru/tour/generic-classes.md index fafc2fd13e..48d68a9733 100644 --- a/_ru/tour/generic-classes.md +++ b/_ru/tour/generic-classes.md @@ -1,17 +1,12 @@ --- layout: tour title: Обобщенные Классы - -discourse: true - partof: scala-tour - num: 18 language: ru next-page: variances previous-page: for-comprehensions assumed-knowledge: classes unified-types - --- Обобщенные классы (Generic classes) - это классы, обладающие параметрическим полиморфизмом (т. е. классы, которые изменяют свое поведение в зависимости от приписываемого им типа. Этот тип указывается в квадратных скобках `[]` сразу после имени класса). Они особенно полезны для создания коллекций. diff --git a/_ru/tour/higher-order-functions.md b/_ru/tour/higher-order-functions.md index 36a8f0a2a7..2b029a6ca1 100644 --- a/_ru/tour/higher-order-functions.md +++ b/_ru/tour/higher-order-functions.md @@ -1,16 +1,11 @@ --- layout: tour title: Функции Высшего Порядка - -discourse: true - partof: scala-tour - num: 8 language: ru next-page: nested-functions previous-page: mixin-class-composition - --- Функции высшего порядка могут принимать другие функции в качестве параметров или возвращать функцию в качестве результата. diff --git a/_ru/tour/implicit-conversions.md b/_ru/tour/implicit-conversions.md index bd36a9e749..02c5319fae 100644 --- a/_ru/tour/implicit-conversions.md +++ b/_ru/tour/implicit-conversions.md @@ -1,16 +1,11 @@ --- layout: tour title: Неявные Преобразования - -discourse: true - partof: scala-tour - num: 27 language: ru next-page: polymorphic-methods previous-page: implicit-parameters - --- Неявные преобразование типа `S` к типу `T` задается неявным значением функционального типа `S =>T`, или неявным методом, который способен преобразовывать к значению требуемого типа. diff --git a/_ru/tour/implicit-parameters.md b/_ru/tour/implicit-parameters.md index cf58ded10e..f6ca9b6fda 100644 --- a/_ru/tour/implicit-parameters.md +++ b/_ru/tour/implicit-parameters.md @@ -1,16 +1,11 @@ --- layout: tour title: Неявные Параметры - -discourse: true - partof: scala-tour - num: 26 language: ru next-page: implicit-conversions previous-page: self-types - --- Метод может иметь список _неявных_ параметров, помеченный ключевым словом _implicit_ в начале списка параметров. Если параметры в этом списке не передаются как обычно, то Scala будет искать, где можно получить неявное значение требуемого типа, и если найдет, то передаст его автоматически. diff --git a/_ru/tour/inner-classes.md b/_ru/tour/inner-classes.md index 736677ceff..9d86b84000 100644 --- a/_ru/tour/inner-classes.md +++ b/_ru/tour/inner-classes.md @@ -1,16 +1,11 @@ --- layout: tour title: Внутренние классы - -discourse: true - partof: scala-tour - num: 22 language: ru next-page: abstract-type-members previous-page: lower-type-bounds - --- В Scala классам можно иметь в качестве членов другие классы. В отличие от Java-подобных языков, где такие внутренние классы являются членами окружающего класса, в Scala такие внутренние классы привязаны к содержащему его объекту. Предположим, мы хотим, чтобы компилятор не позволял нам на этапе компиляции смешивать узлы этого графа. Для решения этой задачи нам подойдут типы, зависящие от своего расположения. diff --git a/_ru/tour/lower-type-bounds.md b/_ru/tour/lower-type-bounds.md index 8351695a72..ac9e08bd59 100644 --- a/_ru/tour/lower-type-bounds.md +++ b/_ru/tour/lower-type-bounds.md @@ -1,17 +1,12 @@ --- layout: tour title: Нижнее Ограничение Типа - -discourse: true - partof: scala-tour - num: 21 language: ru next-page: inner-classes previous-page: upper-type-bounds prerequisite-knowledge: upper-type-bounds, generics, variance - --- В то время как [верхнее ограничение типа](upper-type-bounds.html) ограничивает тип до подтипа стороннего типа, *нижнее ограничение типа* объявляют тип супертипом стороннего типа. Термин `B >: A` выражает, то что параметр типа `B` или абстрактный тип `B` относится к супертипу типа `A`. В большинстве случаев `A` будет задавать тип класса, а `B` задавать тип метода. diff --git a/_ru/tour/mixin-class-composition.md b/_ru/tour/mixin-class-composition.md index ff7c1d60d9..c27a2edea1 100644 --- a/_ru/tour/mixin-class-composition.md +++ b/_ru/tour/mixin-class-composition.md @@ -1,17 +1,12 @@ --- layout: tour title: Композиция классов с примесями - -discourse: true - partof: scala-tour - num: 7 language: ru next-page: higher-order-functions previous-page: tuples prerequisite-knowledge: inheritance, traits, abstract-classes, unified-types - --- Примеси (Mixin) - это трейты, которые используются для создания класса. diff --git a/_ru/tour/multiple-parameter-lists.md b/_ru/tour/multiple-parameter-lists.md index c4656f5193..c93a6e31d1 100644 --- a/_ru/tour/multiple-parameter-lists.md +++ b/_ru/tour/multiple-parameter-lists.md @@ -1,16 +1,11 @@ --- layout: tour title: Множественные списки параметров (Каррирование) - -discourse: true - partof: scala-tour - num: 10 language: ru next-page: case-classes previous-page: nested-functions - --- Методы могут объявляться с несколькими списками параметров. При этом когда такой метод вызывается с меньшим количеством списков параметров, это приводит к созданию новой функции, которая ожидает на вход не достающий список параметров. Формально это называется [частичное применение](https://en.wikipedia.org/wiki/Partial_application). diff --git a/_ru/tour/named-arguments.md b/_ru/tour/named-arguments.md index 32b83664e4..463480e547 100644 --- a/_ru/tour/named-arguments.md +++ b/_ru/tour/named-arguments.md @@ -1,17 +1,12 @@ --- layout: tour title: Именованные Аргументы - -discourse: true - partof: scala-tour - num: 34 language: ru next-page: packages-and-imports previous-page: default-parameter-values prerequisite-knowledge: function-syntax - --- При вызове методов можно конкретно указывать название задаваемого аргумента следующим образом: diff --git a/_ru/tour/nested-functions.md b/_ru/tour/nested-functions.md index 663e0fdc36..6a59ca5a0e 100644 --- a/_ru/tour/nested-functions.md +++ b/_ru/tour/nested-functions.md @@ -1,16 +1,11 @@ --- layout: tour title: Вложенные Методы - -discourse: true - partof: scala-tour - num: 9 language: ru next-page: multiple-parameter-lists previous-page: higher-order-functions - --- В Scala возможно объявление метода вкладывать в тело другого метода. Это реализовано в следующем примере, в котором метод `factorial` используется для вычисления факториала заданного числа: diff --git a/_ru/tour/operators.md b/_ru/tour/operators.md index 09ea35ea76..dd80f7905d 100644 --- a/_ru/tour/operators.md +++ b/_ru/tour/operators.md @@ -1,17 +1,12 @@ --- layout: tour title: Операторы - -discourse: true - partof: scala-tour - num: 30 language: ru next-page: by-name-parameters previous-page: type-inference prerequisite-knowledge: case-classes - --- В Скале операторы - это обычные методы. В качестве _инфиксного оператора_ может быть использован любой метод с одним параметром. Например, `+` может вызываться с использованием точки: ``` diff --git a/_ru/tour/package-objects.md b/_ru/tour/package-objects.md index 1a0ba1b7f2..e7924e8de8 100644 --- a/_ru/tour/package-objects.md +++ b/_ru/tour/package-objects.md @@ -1,11 +1,7 @@ --- layout: tour title: Объекты Пакета - -discourse: true - partof: scala-tour - num: 36 language: ru previous-page: packages-and-imports diff --git a/_ru/tour/packages-and-imports.md b/_ru/tour/packages-and-imports.md index 2a3e6ba6ff..a4d6710454 100644 --- a/_ru/tour/packages-and-imports.md +++ b/_ru/tour/packages-and-imports.md @@ -1,11 +1,7 @@ --- layout: tour title: Пакеты и Импорт - -discourse: true - partof: scala-tour - num: 35 language: ru previous-page: annotations diff --git a/_ru/tour/pattern-matching.md b/_ru/tour/pattern-matching.md index 8d329636da..15e58ff983 100644 --- a/_ru/tour/pattern-matching.md +++ b/_ru/tour/pattern-matching.md @@ -1,17 +1,12 @@ --- layout: tour title: Сопоставление с примером - -discourse: true - partof: scala-tour - num: 12 language: ru next-page: singleton-objects previous-page: case-classes prerequisite-knowledge: case-classes, string-interpolation, subtyping - --- Сопоставление с примером (Pattern matching) - это механизм сравнения значений с определенным примером. При успешном совпадении значение может быть разложено на составные части. Мы рассматриваем сопоставление с примером, как более мощную версию `switch` оператора из Java. Eго также можно использовать вместо серии if/else выражений. diff --git a/_ru/tour/polymorphic-methods.md b/_ru/tour/polymorphic-methods.md index 3c017b89f6..9d54223100 100644 --- a/_ru/tour/polymorphic-methods.md +++ b/_ru/tour/polymorphic-methods.md @@ -1,17 +1,12 @@ --- layout: tour title: Полиморфные методы - -discourse: true - partof: scala-tour - num: 28 language: ru next-page: type-inference previous-page: implicit-conversions prerequisite-knowledge: unified-types - --- Также как и у обобщенных классов, у методов есть полиморфизм по типу, с таким же синтаксисом (параметр типа указывается в квадратных скобках сразу после названия метода). diff --git a/_ru/tour/regular-expression-patterns.md b/_ru/tour/regular-expression-patterns.md index e8c2ea8404..159921587c 100644 --- a/_ru/tour/regular-expression-patterns.md +++ b/_ru/tour/regular-expression-patterns.md @@ -1,16 +1,11 @@ --- layout: tour title: Регулярные Выражения - -discourse: true - partof: scala-tour - num: 15 language: ru next-page: extractor-objects previous-page: singleton-objects - --- Регулярные выражения (Regular expression) - это специальный шаблон для поиска данных, задаваемый в виде текстовой строки. Любая строка может быть преобразована в регулярное выражение методом `.r`. diff --git a/_ru/tour/self-types.md b/_ru/tour/self-types.md index 2ce9946450..5ca4c91b22 100644 --- a/_ru/tour/self-types.md +++ b/_ru/tour/self-types.md @@ -1,18 +1,13 @@ --- layout: tour title: Самоописываемые типы - -discourse: true - partof: scala-tour - num: 25 language: ru next-page: implicit-parameters previous-page: compound-types topics: self-types prerequisite-knowledge: nested-classes, mixin-class-composition - --- Самоописываемый тип(Self type) - это способ объявить, что трейт должен быть смешан с другим трейтом, даже если он не расширяет его напрямую. Что открывает доступ к членам зависимости без импортирования. diff --git a/_ru/tour/singleton-objects.md b/_ru/tour/singleton-objects.md index d39f5c170e..5b2f79dac8 100644 --- a/_ru/tour/singleton-objects.md +++ b/_ru/tour/singleton-objects.md @@ -1,11 +1,7 @@ --- layout: tour title: Объекты Одиночки - -discourse: true - partof: scala-tour - num: 13 language: ru next-page: regular-expression-patterns diff --git a/_ru/tour/tour-of-scala.md b/_ru/tour/tour-of-scala.md index ac523d9914..321685dbb3 100644 --- a/_ru/tour/tour-of-scala.md +++ b/_ru/tour/tour-of-scala.md @@ -1,11 +1,7 @@ --- layout: tour title: Введение - -discourse: true - partof: scala-tour - num: 1 language: ru next-page: basics diff --git a/_ru/tour/traits.md b/_ru/tour/traits.md index 3eec6fd35c..ab7f6a5ade 100644 --- a/_ru/tour/traits.md +++ b/_ru/tour/traits.md @@ -1,18 +1,13 @@ --- layout: tour title: Трейты - -discourse: true - partof: scala-tour - num: 5 language: ru next-page: tuples previous-page: named-arguments topics: traits prerequisite-knowledge: expressions, classes, generics, objects, companion-objects - --- Трейты (Traits) используются, чтобы обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров. diff --git a/_ru/tour/tuples.md b/_ru/tour/tuples.md index 8d30c607c5..8af61d5102 100644 --- a/_ru/tour/tuples.md +++ b/_ru/tour/tuples.md @@ -1,17 +1,12 @@ --- layout: tour title: Кортежи - -discourse: true - partof: scala-tour - num: 6 language: ru next-page: mixin-class-composition previous-page: traits topics: tuples - --- В Scala, кортеж (Тuple) это класс контейнер содержащий упорядоченный набор элементов различного типа. diff --git a/_ru/tour/type-inference.md b/_ru/tour/type-inference.md index 5e5e39cf17..6709acf411 100644 --- a/_ru/tour/type-inference.md +++ b/_ru/tour/type-inference.md @@ -1,11 +1,7 @@ --- layout: tour title: Выведение Типа - -discourse: true - partof: scala-tour - num: 29 language: ru next-page: operators diff --git a/_ru/tour/unified-types.md b/_ru/tour/unified-types.md index 1bd87556b7..7399f82409 100644 --- a/_ru/tour/unified-types.md +++ b/_ru/tour/unified-types.md @@ -1,17 +1,12 @@ --- layout: tour title: Единобразие типов - -discourse: true - partof: scala-tour - num: 3 language: ru next-page: classes previous-page: basics prerequisite-knowledge: classes, basics - --- В Scala все значения имеют тип, включая числовые значения и функции. Диаграмма ниже иллюстрирует подмножество иерархии типов. diff --git a/_ru/tour/upper-type-bounds.md b/_ru/tour/upper-type-bounds.md index 60ca550d59..2bfe19f96e 100644 --- a/_ru/tour/upper-type-bounds.md +++ b/_ru/tour/upper-type-bounds.md @@ -1,16 +1,12 @@ --- layout: tour title: Верхнее Ограничение Типа - -discourse: true - partof: scala-tour categories: tour num: 20 language: ru next-page: lower-type-bounds previous-page: variances - --- В Scala [параметры типа](generic-classes.html) и [члены абстрактного типа](abstract-type-members.html) могут быть ограничены определенными диапазонами. Такие диапазоны ограничивают конкретные значение типа и, возможно, предоставляют больше информации о членах таких типов. _Верхнее ограничение типа_ `T <: A` указывает на то что тип `T` относится к подтипу типа `A`. diff --git a/_ru/tour/variances.md b/_ru/tour/variances.md index c59549f340..17dd06b74c 100644 --- a/_ru/tour/variances.md +++ b/_ru/tour/variances.md @@ -1,16 +1,11 @@ --- layout: tour title: Вариантность - -discourse: true - partof: scala-tour - num: 19 language: ru next-page: upper-type-bounds previous-page: generic-classes - --- Вариантность (Variances) - это указание определенной специфики взаимосвязи между связанными типам. Scala поддерживает вариантную аннотацию типов у [обобщенных классов](generic-classes.html), что позволяет им быть ковариантными, контрвариантными или инвариантными (если нет никакого указание на вариантность). Использование вариантности в системе типов позволяет устанавливать понятные взаимосвязи между сложными типами, в то время как отсутствие вариантности может ограничить повторное использование абстракции класса. From 86b753a7c61b9ef04013902b6104eb92439b38fd Mon Sep 17 00:00:00 2001 From: Philippus Date: Tue, 19 Apr 2022 08:47:50 +0200 Subject: [PATCH 0424/1704] Display code blocks inside details/summary correctly --- _overviews/scala3-macros/tutorial/inline.md | 12 ++++++++++-- _sass/layout/details-summary.scss | 3 +++ resources/css/style.scss | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 _sass/layout/details-summary.scss diff --git a/_overviews/scala3-macros/tutorial/inline.md b/_overviews/scala3-macros/tutorial/inline.md index c081b8d61c..30c445cef0 100644 --- a/_overviews/scala3-macros/tutorial/inline.md +++ b/_overviews/scala3-macros/tutorial/inline.md @@ -254,8 +254,11 @@ Calling `power` with statically known constants results in the following code: val x = 2 power(x * x, 1) ``` + +{::options parse_block_html="true" /}
    - See rest of inlining steps + See rest of inlining steps + ```scala // then inlined as @@ -283,6 +286,8 @@ x2 * 1.0 ```
    +{::options parse_block_html="false" /} + In contrast, let us imagine we do not know the value of `n`: ```scala @@ -291,8 +296,10 @@ power(2, unknownNumber) Driven by the inline annotation on the parameter, the compiler will try to unroll the recursion. But without any success, since the parameter is not statically known. +{::options parse_block_html="true" /}
    - See inlining steps + See inlining steps + ```scala // first inlines as @@ -318,6 +325,7 @@ else { ... ```
    +{::options parse_block_html="false" /} To guarantee that the branching can indeed be performed at compile-time, we can use the `inline if` variant of `if`. Annotating a conditional with `inline` will guarantee that the conditional can be reduced at compile-time and emits an error if the condition is not a statically known constant. diff --git a/_sass/layout/details-summary.scss b/_sass/layout/details-summary.scss new file mode 100644 index 0000000000..1f18d4cd64 --- /dev/null +++ b/_sass/layout/details-summary.scss @@ -0,0 +1,3 @@ +details > summary > p { + display: inline; +} diff --git a/resources/css/style.scss b/resources/css/style.scss index 57b121deba..fb5c150296 100755 --- a/resources/css/style.scss +++ b/resources/css/style.scss @@ -56,6 +56,7 @@ @import 'layout/blog'; @import 'layout/download'; @import 'layout/content-contributors'; // COMPONENTS +@import 'layout/details-summary'; //------------------------------------------------ //------------------------------------------------ @import 'components/buttons'; From c4c0be187b9caf2c5243da2a2b521e91efba2ef2 Mon Sep 17 00:00:00 2001 From: Erik van Oosten Date: Thu, 21 Apr 2022 14:54:35 +0200 Subject: [PATCH 0425/1704] Avoid dysphemisms I was reading the inclusive language guide at https://docs.scala-lang.org/contribute/inclusive-language-guide.html. I have 2 points of feedback. I initially posted this on Discord but then I noticed I could do a pull request. So here it is. Re. blacklist/whitelist. Such lists are often used to regulate access. Therefore I propose we suggest the alternative 'allowlist/denylist' as it is probably appropriate in more circumstances. This is also the suggestion done from the linked page https://github.com/dialpad/inclusive-language. --- _overviews/contribute/inclusive-language-guide.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/_overviews/contribute/inclusive-language-guide.md b/_overviews/contribute/inclusive-language-guide.md index 375d988158..5689979302 100644 --- a/_overviews/contribute/inclusive-language-guide.md +++ b/_overviews/contribute/inclusive-language-guide.md @@ -90,7 +90,7 @@ This list is neither comprehensive nor definitive, and it can evolve over time. * **blacklist/whitelist** \ While the etymology of these words has no relation to racism, their use suggests an association between the color black and some form of badness or exclusion, and between the color white and some form of goodness or inclusion. Prefer alternatives when possible. - Several alternatives have been proposed but none sticks as "the one". We suggest using the pair *excludelist*/*includelist*, as it is generic enough to replace all uses of *blacklist*/*whitelist*. + Several alternatives have been proposed but none sticks as "the one". We suggest using the pair *allowlist*/*denylist*, as it is generic enough to replace most uses of *blacklist*/*whitelist*. * **master/slave** \ Never use *slave*. Never use *master* in conjunction with *slave*. @@ -116,6 +116,12 @@ We encourage you to research inclusive language guidelines applicable to your do You may want to use automated software like [In Solidarity](https://github.com/apps/in-solidarity) to steer contributors away from loaded words. +## Dysphemism + +Dysphemisms, the opposite of euphemisms, should be avoided. For example, the English expressions "pull the trigger" (enforce a decision) and "bite the bullet" (endure hardship) can be disturbingly violent if you are not used to them. + +Using the direct meaning is preferred. + ## Backward compatibility Sometimes, we have existing code, APIs or commands that do not follow the above recommendations. From 99d4d45e3c58c988849a1439a83e8f69a155a295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Chantepie?= Date: Thu, 21 Apr 2022 21:25:45 +0200 Subject: [PATCH 0426/1704] Fix StandardPlugin example --- _scala3-reference/changed-features/compiler-plugins.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_scala3-reference/changed-features/compiler-plugins.md b/_scala3-reference/changed-features/compiler-plugins.md index c77796d71d..39358b4e8c 100644 --- a/_scala3-reference/changed-features/compiler-plugins.md +++ b/_scala3-reference/changed-features/compiler-plugins.md @@ -57,6 +57,7 @@ package dividezero import dotty.tools.dotc.ast.Trees.* import dotty.tools.dotc.ast.tpd +import dotty.tools.dotc.report import dotty.tools.dotc.core.Constants.Constant import dotty.tools.dotc.core.Contexts.Context import dotty.tools.dotc.core.Decorators.* @@ -84,7 +85,7 @@ class DivideZeroPhase extends PluginPhase: tree match case Apply(Select(rcvr, nme.DIV), List(Literal(Constant(0)))) if rcvr.tpe <:< defn.IntType => - report.error("dividing by zero", tree.pos) + report.error("dividing by zero", tree.srcPos) case _ => () tree From 885fac887ecff3a2964c095af6cd5b8e05782180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=A2=83=E8=BF=B7=E7=A6=BB?= Date: Fri, 22 Apr 2022 23:48:15 +0800 Subject: [PATCH 0427/1704] fix --- _zh-cn/scala3/new-in-scala3.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/_zh-cn/scala3/new-in-scala3.md b/_zh-cn/scala3/new-in-scala3.md index 472f66331f..ed649cb7da 100644 --- a/_zh-cn/scala3/new-in-scala3.md +++ b/_zh-cn/scala3/new-in-scala3.md @@ -36,7 +36,7 @@ Scala的一个基本核心概念是(在某种程度上仍然是)为用户提 - **Viewing one type as another**. [隐式转换][contextual-conversions]已经被重新设计为类型类`Conversion`的实例。 -- **Higher-order contextual abstractions**. [context functions][contextual-functions]的 _全新_ 功能使上下文抽象成为一流的公民。它们是库开发人员的一个重要工具,允许表达简洁的特定领域语言。 +- **Higher-order contextual abstractions**. [context functions][contextual-functions]的 _全新_ 功能使上下文抽象成为第一等公民。它们是库开发人员的一个重要工具,允许表达简洁的特定领域语言。 - **Actionable feedback from the compiler**. 如果一个隐式参数不能被编译器解决,它现在提供了可能解决这个问题的[import suggestions](https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html)。 @@ -47,17 +47,17 @@ Scala的一个基本核心概念是(在某种程度上仍然是)为用户提 - **Opaque Types**. 将实现细节隐藏在[opaque type aliases][types-opaque]的别名后面,而不需要在性能上付出代价! Opaque types 取代了值类,并允许你建立一个抽象的屏障,而不会造成额外的装箱开销。 -- **Intersection and union types**. 将类型系统建立在新的基础上,导致了新的类型系统功能的引入:[intersection types][types-intersection]的实例,如`A & B`,既是`A`的实例,也是`B`的实例;[union types][types-union]的实例,如`A | B`,是`A`或`B`的实例。这两种结构都允许程序员在继承层次结构之外灵活地表达类型约束。 +- **Intersection and union types**. 将类型系统建立在新的基础上,引入了新的类型系统特性:[intersection types][types-intersection]的实例,如`A & B`,既是`A`的实例,也是`B`的实例;[union types][types-union]的实例,如`A | B`,是`A`或`B`的实例。这两种结构都允许程序员在继承层次结构之外灵活地表达类型约束。 - **Dependent function types**. Scala 2 已经允许返回类型依赖于(值)参数。在 Scala 3 中,现在可以对这种模式进行抽象,表达[dependent function types][types-dependent]。在类型`F = (e: Entry) => e.Key`中,结果类型取决于参数。 - **Polymorphic function types**. 与 dependent function types 一样,Scala 2 支持拥有类型参数的方法,但不允许程序员对这些方法进行抽象。在 Scala 3 中,像`[A] => List[A] => List[A]`这样的[polymorphic function types][types-polymorphic]可以抽象出除值参数外还接受 _类型参数_ 的函数。 -- **Type lambdas**. 在 Scala 2 中需要用[编译器插件](https://github.com/typelevel/kind-projector)来表达的东西,现在在 Scala 3 中是第一类的功能:类型lambdas是类型级别的函数,可以作为(高等类型的)类型参数传递,而不需要辅助类型定义。 +- **Type lambdas**. 在 Scala 2 中需要用[编译器插件](https://github.com/typelevel/kind-projector)来表达的东西,现在在 Scala 3 中是原生支持的功能:类型lambdas是类型级别的函数,可以作为(高等类型的)类型参数传递,而不需要辅助类型定义。 - **Match types**. Scala 3 提供了对[matching on types][types-match]的直接支持,而不是使用隐式解析对类型级别的计算进行编码。将类型级计算整合到类型检查器中,可以改进错误信息,并消除对复杂编码的需求。 -### 重新设想的:面向对象的编程 +### Re-envisioned:面向对象的编程 Scala 一直处于函数式编程和面向对象编程的前沿 -- 而 Scala 3 在这两个方向上都推动了边界的发展! 上述类型系统的变化和上下文抽象的重新设计使得 _函数式编程_ 比以前更容易。同时,以下的新特性使结构良好的 _面向对象设计_ 成为可能,并支持最佳实践。 @@ -65,7 +65,7 @@ Scala 一直处于函数式编程和面向对象编程的前沿 -- 而 Scala 3 - **Plan for extension**. 在面向对象的设计中,扩展那些不打算扩展的类是一个长期存在的问题。为了解决这个问题,[open classes][oo-open]要求库设计者 _明确地_ 将类标记为 open(开放的)。 -- **Hide implementation details**. 实施行为的实用性traits有时不应该是推断类型的一部分。在 Scala 3 中,这些traits可以被标记为[transparent][oo-transparent],(在推断类型中)向用户隐藏继承性。 +- **Hide implementation details**. 实现功能的工具性的traits有时不应该是推断类型的一部分。在 Scala 3 中,这些traits可以被标记为[transparent][oo-transparent],(在推断类型中)向用户隐藏继承信息。 - **Composition over inheritance**. 这句话经常被引用,但实现起来却很繁琐。Scala 3 的[export clauses][oo-export]则不然:与imports对应,export clauses 允许用户为对象的选定成员定义别名。 @@ -74,13 +74,13 @@ Scala 一直处于函数式编程和面向对象编程的前沿 -- 而 Scala 3 ### Batteries Included: 元编程 Scala 2 中的宏只是一个实验性的功能,而 Scala 3 则为元编程提供了强大的工具库。[宏教程]({% link _overviews/scala3-macros/tutorial/index.md %})中包含了关于不同设施的详细信息。特别是,Scala 3 为元编程提供了以下功能: -- **Inline**. [inline feature][meta-inline]允许在编译时减少数值和方法。这个简单的功能已经涵盖了许多使用情况,同时也为更高级的功能提供了入口。 +- **Inline**. [inline feature][meta-inline]允许在编译时化简值和方法。这个简单的功能已经涵盖了许多使用情况,同时也为更高级的功能提供了入口。 - **Compile-time operations**. 包[`scala.compiletime`][meta-compiletime]中包含了额外的功能,可以用来实现内联方法。 - **Quoted code blocks**. Scala 3为代码增加了[quasi-quotation][meta-quotes]的新功能,这为构建和分析代码提供了方便的高级接口。构建加一加一的代码就像`'{ 1 + 1 }`一样简单。 - **Reflection API**. 对于更高级的用例,[quotes.reflect][meta-reflection]提供了更详细的控制来检查和生成程序树。 -如果你想进一步了解 Scala 3 中的元编程,我们邀请你参加[教程][meta-tutorial]。 +如果你想进一步了解 Scala 3 中的元编程,我们邀请你参阅我们的[教程][meta-tutorial]。 [enums]: {{ site.scala3ref }}/enums/enums.html [enums-adts]: {{ site.scala3ref }}/enums/adts.html From 6b6676f885d39e05e8be4eb4fc076d416366bb34 Mon Sep 17 00:00:00 2001 From: Maximilien Tirard Date: Sat, 23 Apr 2022 14:28:14 +0100 Subject: [PATCH 0428/1704] Typo --- _overviews/parallel-collections/performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/parallel-collections/performance.md b/_overviews/parallel-collections/performance.md index 625f08304e..96be271b44 100644 --- a/_overviews/parallel-collections/performance.md +++ b/_overviews/parallel-collections/performance.md @@ -81,7 +81,7 @@ For proper benchmark examples, you can see the source code inside [Scala library This is a question commonly asked. The answer is somewhat involved. -The size of the collection at which the parallelization pays of really +The size of the collection at which the parallelization pays off really depends on many factors. Some of them, but not all, include: - Machine architecture. Different CPU types have different From c09f64ad58eaf42a3f5619c434c9f3919f846124 Mon Sep 17 00:00:00 2001 From: kenji yoshida <6b656e6a69@gmail.com> Date: Sun, 24 Apr 2022 09:50:15 +0900 Subject: [PATCH 0429/1704] fix Scala 3 reflection doc. `companionObject` => `companionClass` https://github.com/lampepfl/dotty/blob/3.1.3-RC2/library/src/scala/quoted/Quotes.scala#L3929-L3933 --- _overviews/scala3-macros/tutorial/reflection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/scala3-macros/tutorial/reflection.md b/_overviews/scala3-macros/tutorial/reflection.md index b9bca2e1c9..46618a1d4f 100644 --- a/_overviews/scala3-macros/tutorial/reflection.md +++ b/_overviews/scala3-macros/tutorial/reflection.md @@ -117,7 +117,7 @@ In addition, `Symbol` exposes and is used by many useful methods. For example: - `declaredFields` and `declaredMethods` allow you to iterate on the fields and members defined inside a symbol - `flags` allows you to check multiple properties of a symbol - - `companionObject` and `companionModule` provide a way to jump to and from the companion object/class + - `companionClass` and `companionModule` provide a way to jump to and from the companion object/class - `TypeRepr.baseClasses` returns the list of symbols of classes extended by a type - `Symbol.pos` gives you access to the position where the symbol is defined, the source code of the definition, and even the filename where the symbol is defined - many others that you can find in [`SymbolMethods`](https://scala-lang.org/api/3.x/scala/quoted/Quotes$reflectModule$SymbolMethods.html) From 0ac46fb75644b042c04bb9469f8951847331d1b0 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 29 Apr 2022 17:00:51 +0200 Subject: [PATCH 0430/1704] add tabs on get-started page (english) --- _config.yml | 3 + _data/setup-scala.yml | 4 + _includes/code-snippet.html | 6 ++ _includes/getting-started.md | 52 +++++----- _includes/tabsection.html | 20 ++++ _install_tabs/1-macos.md | 23 +++++ _install_tabs/2-linux.md | 14 +++ _install_tabs/3-windows.md | 14 +++ _install_tabs/4-other.md | 17 ++++ _sass/layout/alt-details.scss | 46 +++++++++ _sass/layout/scala-in-action.scss | 158 ++++++++++++++++++++++++++++++ _sass/layout/tabsection.scss | 60 ++++++++++++ resources/css/style.scss | 3 + resources/js/functions.js | 78 ++++++++++++--- 14 files changed, 456 insertions(+), 42 deletions(-) create mode 100644 _data/setup-scala.yml create mode 100644 _includes/code-snippet.html create mode 100644 _includes/tabsection.html create mode 100644 _install_tabs/1-macos.md create mode 100644 _install_tabs/2-linux.md create mode 100644 _install_tabs/3-windows.md create mode 100644 _install_tabs/4-other.md create mode 100644 _sass/layout/alt-details.scss create mode 100755 _sass/layout/scala-in-action.scss create mode 100755 _sass/layout/tabsection.scss diff --git a/_config.yml b/_config.yml index accb4b5df1..21f5c59539 100644 --- a/_config.yml +++ b/_config.yml @@ -21,6 +21,9 @@ scala-3-version: 3.1.2 collections: contribute_resources: + output: false + install_tabs: + output: false style: output: true overviews: diff --git a/_data/setup-scala.yml b/_data/setup-scala.yml new file mode 100644 index 0000000000..d1bb19a78d --- /dev/null +++ b/_data/setup-scala.yml @@ -0,0 +1,4 @@ +linux: curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setup +macOS-default: curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-apple-darwin.gz | gzip -d > cs && chmod +x cs && (xattr -d com.apple.quarantine cs || true) && ./cs setup +macOS-brew: brew install coursier/formulas/coursier && cs setup +windows-link: https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-win32.zip diff --git a/_includes/code-snippet.html b/_includes/code-snippet.html new file mode 100644 index 0000000000..0286da8b4d --- /dev/null +++ b/_includes/code-snippet.html @@ -0,0 +1,6 @@ +
    +
    +
    +
    +
    {{include.codeSnippet}}
    +
    diff --git a/_includes/getting-started.md b/_includes/getting-started.md index 83c1de45fe..2df5661769 100644 --- a/_includes/getting-started.md +++ b/_includes/getting-started.md @@ -21,9 +21,29 @@ It ensures that a JVM and standard Scala tools are installed on your system. Install it on your system with the following instructions.
    -
    -

    Follow the instructions to install the cs launcher then run:

    -

    $ ./cs setup

    +
    @@ -165,29 +185,3 @@ Once you've finished the above tutorials, consider checking out: ## Getting Help There are a multitude of mailing lists and real-time chat rooms in case you want to quickly connect with other Scala users. Check out our [community](https://scala-lang.org/community/) page for a list of these resources, and for where to reach out for help. - - - - - - - - - diff --git a/_includes/tabsection.html b/_includes/tabsection.html new file mode 100644 index 0000000000..a5473b04e5 --- /dev/null +++ b/_includes/tabsection.html @@ -0,0 +1,20 @@ +
    +
    + {% for tabRoot in include.collection %} + + {% endfor %} +
    + {% for tabRoot in include.collection %} +
    {{tabRoot.content}}
    + {% endfor %} +
    diff --git a/_install_tabs/1-macos.md b/_install_tabs/1-macos.md new file mode 100644 index 0000000000..f91ab023fa --- /dev/null +++ b/_install_tabs/1-macos.md @@ -0,0 +1,23 @@ +--- +tabId: osx +tabLabel: macOS +--- +
    +
    +
    +
    +

    Run the following command in your terminal, following the on-screen instructions:

    + {% include code-snippet.html language='bash' codeSnippet=site.data.setup-scala.macOS-brew %} +
    + +
    +
    + {% include code-snippet.html language='bash' codeSnippet=site.data.setup-scala.macOS-default %} +
    +
    +
    +
    +
    +
    +
    diff --git a/_install_tabs/2-linux.md b/_install_tabs/2-linux.md new file mode 100644 index 0000000000..6924edf275 --- /dev/null +++ b/_install_tabs/2-linux.md @@ -0,0 +1,14 @@ +--- +tabId: linux +tabLabel: Linux +--- +
    +
    +
    +
    +

    Run the following command in your terminal, following the on-screen instructions:

    + {% include code-snippet.html language='bash' codeSnippet=site.data.setup-scala.linux %} +
    +
    +
    +
    diff --git a/_install_tabs/3-windows.md b/_install_tabs/3-windows.md new file mode 100644 index 0000000000..c3e31fb837 --- /dev/null +++ b/_install_tabs/3-windows.md @@ -0,0 +1,14 @@ +--- +tabId: windows +tabLabel: Windows +--- +
    +
    +
    +
    +

    Download and execute the Scala + installer for Windows based on Coursier, and follow the on-screen instructions.

    +
    +
    +
    +
    diff --git a/_install_tabs/4-other.md b/_install_tabs/4-other.md new file mode 100644 index 0000000000..d60085c17f --- /dev/null +++ b/_install_tabs/4-other.md @@ -0,0 +1,17 @@ +--- +tabId: other +tabLabel: Other +fallbackNoJS: true +--- +
    +
    +
    +
    + +

    Follow the documentation from Coursier on how to install and run cs setup.

    +
    +
    +
    +
    diff --git a/_sass/layout/alt-details.scss b/_sass/layout/alt-details.scss new file mode 100644 index 0000000000..aae4addefb --- /dev/null +++ b/_sass/layout/alt-details.scss @@ -0,0 +1,46 @@ +// ALT-DETAILS +//------------------------------------------------ +//------------------------------------------------ + +.alt-details { + margin: 10px 0px; + + button.alt-details-toggle { + width: 100%; + border: none; + background-color: #b635c4; + padding: 5px 10px; + border-radius: 15px; + font-size: $font-size-medium; + cursor: pointer; + font-weight: 500; + color: #fff; + + &:hover { + background-color: #941fa1; + } + + &:after { + content: "\f13a"; // + font-family: "Font Awesome 5 Free"; + font-weight: 900; + font-size: 15px; + color: #fff; + float: right; + margin-top: 2px; + } + + &.alt-details-closed:after { + content: "\f138"; // + } + } + + .alt-details-detail { + background-color: rgb(248, 226, 255); + border: 1px solid rgb(239, 207, 248); + padding-top: 25px; + padding-bottom: 10px; + margin-top: -15px; + margin-bottom: 10px; + } +} diff --git a/_sass/layout/scala-in-action.scss b/_sass/layout/scala-in-action.scss new file mode 100755 index 0000000000..404c9bbd7f --- /dev/null +++ b/_sass/layout/scala-in-action.scss @@ -0,0 +1,158 @@ +// SCALA-IN-ACTION +//------------------------------------------------ +//------------------------------------------------ + +.scala-in-action { + + .tabcontent { + .scala-text { + .alt-details { + button.alt-details-toggle { + border: 1px solid #a0dff0; + background-color: #d1e5eb; + color: $gray; + + &:hover { + background-color: #c9e3eb; + } + + &:after { + color: $gray; + } + } + + .alt-details-detail { + background-color: $gray-light; + border: 1px solid darken($gray-light, 3%); + } + } + } + } + + .scala-in-action-content { + transition: $base-transition; + + + .scala-in-action-code { + // display: none; + // background: $gray-dark; + padding: 20px 0; + + .wrap { + margin-bottom: 0px; + } + + .snippet { + position: relative; + margin: 10px 0px; + cursor: default; + width: 100%; + + &:hover { + .buttons { + opacity: 0.95; + + &:active { + opacity: 0.3; + } + } + } + + .buttons { + position: absolute; + right: 4px; + top: 5px; + transition: all .2s ease; + display: flex; + opacity: 0; + flex-direction: row-reverse; + justify-content: flex-start; + + button { + outline: none; + background: #fff; + border: none; + font-size: $font-size-medium; + color: rgba($gray, .6); + cursor: pointer; + + i { + font-weight: $font-bold; + } + } + } + + pre.snippet-code { + margin: 0px; + display: block; + overflow-x: auto; + + code { + overflow-x: auto; + display: block; + } + } + } + + .scala-code { + + @include span-columns(7); + + @include bp(large) { + @include span-columns(12); + } + } + + .scala-text { + + details { + summary { + + &:hover { + background-color: lighten($gray-lighter, 5%); + } + } + + summary>* { + display: inline; + } + } + + code { + padding: 3px 6px; + color: #859900; + background-color: #fff; + border-radius: 10px; + border: 1px solid $gray-light; + } + + .snippet { + pre.snippet-code { + code { + border: 1px solid darken($gray-light, 10%); + } + } + } + + @include span-columns(5); + + @include bp(large) { + @include span-columns(12); + } + + h3 { + font-size: 1.525rem; + margin-bottom: 20px; + } + + p { + color: $base-font-color; + } + + &.scala-text-large { + @include span-columns(12); + } + } + } + } +} diff --git a/_sass/layout/tabsection.scss b/_sass/layout/tabsection.scss new file mode 100755 index 0000000000..71c2777183 --- /dev/null +++ b/_sass/layout/tabsection.scss @@ -0,0 +1,60 @@ +// TABSECTION +//------------------------------------------------ +//------------------------------------------------ + +.recommended-install { + margin-top: -2em; + .tabsection { + background: $gray-lighter; + } +} + +.tabsection { + + &.inline-tabs { + margin: 20px 0px; + } + + /* Style the tab */ + .tab { + overflow: hidden; + margin-bottom: -12px; + } + + /* Style the buttons that are used to open the tab content */ + .tab button { + font-family: $heading-font-family; + font-size: $font-size-medium; + font-weight: $font-bold; + color: lighten($gray, 25%); + background-color: inherit; + float: left; + border: none; + border-radius: 30px; + outline: none; + cursor: pointer; + padding: 14px 16px; + } + + /* Change background color of buttons on hover */ + .tab button:hover { + color: #fff; + background-color: $gray; + border-bottom: $base-border-white; + } + + /* Create an active/current tablink class */ + .tab button.active { + background-color: $gray; + border-bottom: $base-border-white; + color: #fff; + } + + /* Style the tab content */ + .tabcontent { + display: none; + padding: 0px 2px; + border-top: none; + transition: all .5s linear; + } +} diff --git a/resources/css/style.scss b/resources/css/style.scss index fb5c150296..02ed07ce47 100755 --- a/resources/css/style.scss +++ b/resources/css/style.scss @@ -28,6 +28,9 @@ @import 'layout/twitter-feed'; @import 'layout/cheatsheet'; @import 'layout/ides'; +@import 'layout/alt-details'; +@import 'layout/tabsection'; +@import 'layout/scala-in-action'; @import 'layout/nutshell'; @import 'layout/overviews'; @import 'layout/sips'; diff --git a/resources/js/functions.js b/resources/js/functions.js index e52eddd5cf..cd5ac73eac 100644 --- a/resources/js/functions.js +++ b/resources/js/functions.js @@ -404,6 +404,58 @@ $(document).ready(function() { } }); +const toggleElement = (evt, elemId) => { + const btn = evt.target; + const elem = document.getElementById(elemId); + if (elem.style.display === "none") { + elem.style.display = "block"; + } else { + elem.style.display = "none"; + } + $(btn).toggleClass("alt-details-closed"); +} + +$(document).ready(() => { + $('.alt-details-toggle').click(); +}); + +function copySnippet(evt) { + const snippet = evt.target.closest('.snippet').querySelector('.snippet-code'); + const code = snippet.querySelector('code').innerText; + window.navigator.clipboard.writeText(code) +} + +function openTab(evt, category, tabName) { + // Get all elements with class="tabcontent" and hide them + $('.tabcontent-' + category + '.tabcontent').css('display', 'none'); + + const queried = evt.target; + + // Get all elements with class="tablinks" and remove the class "active" + $('.tablinks-' + category + '.tablinks').removeClass('active'); + + // Show the current tab, and add an "active" class to the button that opened the tab + document.getElementById(category + '-' + tabName).style.display = "block"; + queried.className += " active"; +} + +$(document).ready(() => { + const defaultTabs = document.getElementsByClassName('default-tab'); + for (i = 0; i < defaultTabs.length; i++) { + defaultTabs[i].click(); + } +}); + +$(document).ready(function () { + if ($(".main-download").length) { + let os = getOS(); + if (os === 'unix') { + os = 'linux'; + } + $("#get-started-tab-" + os).click(); + } +}); + var image = { width: 1680, height: 1100 @@ -467,18 +519,18 @@ $('#filter-glossary-terms').focus(); //Footer scroll to top button -$(document).ready(function(){ - $(window).scroll(function(){ - if ($(this).scrollTop() > 100) { - $('#scroll-to-top-btn').fadeIn(); - } else { - $('#scroll-to-top-btn').fadeOut(); - } - }); - $('#scroll-to-top-btn').click(function(){ - $("html, body").animate({ scrollTop: 0 }, 600); - return false; - }); +$(document).ready(function(){ + $(window).scroll(function(){ + if ($(this).scrollTop() > 100) { + $('#scroll-to-top-btn').fadeIn(); + } else { + $('#scroll-to-top-btn').fadeOut(); + } + }); + $('#scroll-to-top-btn').click(function(){ + $("html, body").animate({ scrollTop: 0 }, 600); + return false; + }); }); //Contributors widget @@ -490,7 +542,7 @@ $(document).ready(function () { * - some files aren't prefixed with underscore, see rootFiles * - some files are placed in _overviews but rendered to its folder, see overviewsFolders */ - + let rootFiles = ['getting-started', 'learn', 'glossary']; let overviewsFolders = ['FAQ', 'cheatsheets', 'collections', 'compiler-options', 'core', 'jdk-compatibility', 'macros', 'parallel-collections', From 71cf7e946fc3377ab35ae90e46cf3a9a9d8bc531 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 29 Apr 2022 18:03:35 +0200 Subject: [PATCH 0431/1704] add tabs to other translated pages --- _fr/getting-started/index.md | 41 +++--------- _includes/_ja/getting-started.md | 39 +++--------- _includes/alt-details.html | 6 ++ _includes/code-snippet.html | 2 + _includes/getting-started.md | 45 +++++++------- _includes/tabsection.html | 4 ++ _install_tabs/1-macos.md | 20 +++--- _install_tabs/2-linux.md | 1 + _install_tabs/3-windows.md | 1 + _install_tabs/4-other.md | 1 + _install_tabs/fr-1-macos.md | 26 ++++++++ _install_tabs/fr-2-linux.md | 14 +++++ _install_tabs/fr-3-windows.md | 14 +++++ _install_tabs/fr-4-other.md | 19 ++++++ _install_tabs/ja-1-macos.md | 26 ++++++++ _install_tabs/ja-2-linux.md | 14 +++++ _install_tabs/ja-3-windows.md | 14 +++++ _install_tabs/ja-4-other.md | 18 ++++++ _layouts/downloadpage.html | 100 ------------------------------ _sass/layout/scala-in-action.scss | 3 +- resources/js/functions.js | 30 +++------ 21 files changed, 225 insertions(+), 213 deletions(-) create mode 100644 _includes/alt-details.html create mode 100644 _install_tabs/fr-1-macos.md create mode 100644 _install_tabs/fr-2-linux.md create mode 100644 _install_tabs/fr-3-windows.md create mode 100644 _install_tabs/fr-4-other.md create mode 100644 _install_tabs/ja-1-macos.md create mode 100644 _install_tabs/ja-2-linux.md create mode 100644 _install_tabs/ja-3-windows.md create mode 100644 _install_tabs/ja-4-other.md delete mode 100644 _layouts/downloadpage.html diff --git a/_fr/getting-started/index.md b/_fr/getting-started/index.md index f9b05d7df9..397c18e59c 100644 --- a/_fr/getting-started/index.md +++ b/_fr/getting-started/index.md @@ -24,13 +24,19 @@ Nous recommandons l'utilisation de l'outil d'installation "Coursier" qui va auto ### Utilisation de l'installateur Scala (recommandé) L'installateur Scala est un outil nommé [Coursier](https://get-coursier.io/docs/cli-overview), la commande principale de l'outil est `cs`. -Il s'assure que la JVM est les outils standards de Scala sont installés sur votre système. +Il s'assure que la JVM est les outils standards de Scala sont installés sur votre système. Installez-le sur votre système avec les instructions suivantes.
    -
    -

    Suivez les instructions pour installer la commande cs puis exécutez :

    -

    $ ./cs setup

    +
    @@ -165,30 +171,3 @@ Une fois que vous avez terminé le tutoriel ce dessus, vous pouvez consulter : Il y a plusieurs listes de diffusion et canaux de discussions instantanés si vous souhaitez rencontrer rapidement d'autres utilisateurs de Scala. Allez faire un tour sur notre page [community](https://scala-lang.org/community/) pour consulter la liste des ces ressources et obtenir de l'aide. Traduction par Antoine Pointeau. - - - - - - - - - diff --git a/_includes/_ja/getting-started.md b/_includes/_ja/getting-started.md index 1df3b33933..f747ff92f7 100644 --- a/_includes/_ja/getting-started.md +++ b/_includes/_ja/getting-started.md @@ -18,13 +18,18 @@ Scala のインストーラーは[Coursier](https://get-coursier.io/docs/cli-ove 以下の手順でお使いのシステムにインストールしてください。
    -
    -

    Follow the instructions to install the cs launcher then run:

    -

    $ ./cs setup

    +
    - `cs setup` は JVM の管理だけでなく、便利なコマンドラインツールもインストールします: - JDK (インストール済みでなければ) @@ -141,29 +146,3 @@ IDE の使用に慣れている場合は、IDE から_Main.scala_のコードを ### (日本語のみ追記) Scala について日本語で質問したい場合、Twitterでつぶやくと気づいた人が教えてくれます。 - - - - - - - - - diff --git a/_includes/alt-details.html b/_includes/alt-details.html new file mode 100644 index 0000000000..52e8d9cf67 --- /dev/null +++ b/_includes/alt-details.html @@ -0,0 +1,6 @@ +
    + +
    + {{include.detail}} +
    +
    diff --git a/_includes/code-snippet.html b/_includes/code-snippet.html index 0286da8b4d..6267a08ad3 100644 --- a/_includes/code-snippet.html +++ b/_includes/code-snippet.html @@ -1,6 +1,8 @@
    + {% unless include.nocopy %}
    + {% endunless %}
    {{include.codeSnippet}}
    diff --git a/_includes/getting-started.md b/_includes/getting-started.md index 2df5661769..45c42b166f 100644 --- a/_includes/getting-started.md +++ b/_includes/getting-started.md @@ -20,31 +20,32 @@ The Scala installer is a tool named [Coursier](https://get-coursier.io/docs/cli- It ensures that a JVM and standard Scala tools are installed on your system. Install it on your system with the following instructions. +{% capture scalaDemo %}$ scala -version +Scala code runner version {{site.scala-3-version}} -- Copyright 2002-2022, LAMP/EPFL{% endcapture %} +
    -
    ! Jekyll/Marulu limitation {% endcomment %} +

    From f317bfc00ca5272eeaa6556cb395e3dae8e0f9cc Mon Sep 17 00:00:00 2001 From: Vojin Jovanovic Date: Fri, 19 Apr 2013 18:07:58 +0200 Subject: [PATCH 0018/1704] Bug reporting guide. --- contribute/bug-reporting-guide.md | 120 +++++++++++++++++------------- 1 file changed, 70 insertions(+), 50 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 345dc03034..9b89f60ef4 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -3,53 +3,73 @@ layout: page title: Bug Reporting --- -# Reporting bugs to the Scala project - -The Scala project tracker is located at: - -> [http://issues.scala-lang.org](http://issues.scala-lang.org) - - -{% comment %} -WHAT THIS PAGE SHOULD TALK ABOUT: - - tracker - - what's a bug and what's not a bug? - - is it in the scala area? - - library - - compiler - - reflection - - scaladoc - - external libraries have their own trackers: - - akka - - play - - lift - - slick - - if it's a compiler crasher, it's a bug - - if the code generated throws a VerifyError, it's a bug - - if it's a regression, i.e. it worked in the previous version, it's a bug - - if the code generated is not doing what you expected, then it may or may not be a bug - - minimize the problem - - decouple from libraries - - decouple from complex build systems - - it could be a separate compilation issue - does it happen if you clean everything before? - - create small and self-contained files that, when compiled, will exhibit the behavior - - even if the behavior is not what you hoped for, it might still be correct - - if possible, look at the Scala Reference Specification and SIP documents - - or ask on the scala-internals mailing list - - okay, I'm sure it's a bug, now what? - - search for similar bugs - - the exception name and phase should be the best keywords to search for - - if the bug is there, add your test case as a comment. When someone picks up the bug, they will have to add your test case as a confirmation test - - if there's no similar bug - - try to fill in as many fields as possible: - - scala version - - component (if you know) - - labels - - assigneee may be left empty, as all new bugs are triaged - - environment - Machine architecture, Operating system, Java virtual machine version, any other environment necessary - - description - - - the test case - - the commands to trigger the bug - - the expected output - - the actual output -{% endcomment %} +# Reporting Bugs to the Scala Project + +The Scala project tracker is located at [http://issues.scala-lang.org](http://issues.scala-lang.org). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. + +## Is it a Bug? + +The first step in identifying a bug is to identify which component of the Scala distribution is affected. First, ensure that your issue falls within any of the following categories: + + - **Library** bugs typically manifest themselves as run-time exceptions, or as *unexpected*/*unintuitive* behavior of Scala Standard Library methods. + - **Compiler** errors are manifested as compile time exceptions, unexpected behavior of your code at run time, or invalid behavior of the type system. + - **Reflection** are bugs that appear in the ‘scala.reflect’ package. For the *reflection* bugs , the same rules apply as for the *library* bugs. + - **Scaladoc** bugs are manifested as a logical problems in the information it presents (that is, the displayed information is incorrect, such as an incorrect subclassing relationship), or incorrect behavior of the user interface. If you'd like to suggest a change in the content of the documentation, please submit a pull request (possible to do in the browser using GitHub, which is easier and faster than filing a bug). Please file a bug about the content of documentation only if you cannot provide a suggestion for its fix. + +If your issue is related to any of the following external libraries, make sure to use the relevant project's issue tracker: + + - [Akka](http://doc.akka.io/docs/akka/current/project/issue-tracking.html) + - [Play!](http://github.com/playframework/Play20/issues) + - [Slick](http://github.com/slick/slick/issues) + - [Actors Migration Kit](http://github.com/scala/actors-migration/issues?state=open) + +The following are generally considered to be bugs: + +- **Scala Compiler Crash** If the Scala compiler is crashing with an internal error (compile time exception) you have certainly found a bug, and can move on to the next section of this document on reporting confirmed bugs. +- **Regressions** If some code snippet worked in a previous Scala release, but now no longer compiles or results in an exception, it is probably a regression. +- **Verify Errors** happen when the compiled Scala program is loaded to the Java Virtual Machine. If you're getting a *Verify Error*, you've usually found a bug. Make sure first that your project is not using stale `.class` files before reporting a new issue. + +If you have a code snippet that is resulting in bytecode which you believe is behaving incorrectly, you may or may not have found a bug. Before reporting your issue, please attempt the following: + +* Make sure you minimize your problem. To correctly minimize the problem follow the following instructions: + + 1. Gradually take apart the offensive code snippet until you believe you have the simplest representation of your problem. + + 2. Ensure that you have decoupled your code snippet from any library that could be introducing the offensive behavior. One way to achieve this is to try to recompile the offensive code snippet in isolation, outside of the context of any complex build environment. + + 3. Make sure you are compiling your project from a clean slate. Your problem could be related to separate compilation, which is difficult to detect without a clean build with new `.class` files. + +* Keep in mind that the behavior you are witnessing could be intended. Good resources for verifying whether or not behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/docu/files/ScalaReference.pdf). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) + +In general, if you find yourself stuck on any of these steps, asking on one of following Scala mailing lists can be helpful: + + - For compiler bugs use the [scala-internals](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) mailing list. + - For unexpected behavior use [scala-language](https://groups.google.com/forum/?fromgroups#!forum/scala-language), or [scala-user](https://groups.google.com/forum/?fromgroups#!forum/scala-user) mailing lists. + +## Reporting Confirmed Bugs is a Sin + +Before reporting your bug, make sure to check the issue tracker for other similar bugs. The exception name or a compiler phase are the best keywords to search for. If you are experiencing unexpected behavior search for method/class names where it happens. Your issue might already be reported, and a workaround might already be available for you take advantage of. If your issue *is* reported, be sure to add your test case as a comment. + +**Note:** reporting a bug that already exists creates an additional overhead for you, the Scala Team, and all people that search the issue database. To avoid this inconvenience make sure that you thoroughly search for an existing issue. + +If you cannot find your issue in the issue tracker, create a new bug. The details about creating a bug report are in the following section. + +## Creating a Bug Report + +Please make sure to fill in as many fields as possible. Make sure you've indicated the following: + + 1. **Exact Scala version** that you are using. For example, `2.10.1` or `0.11.0-RC`. If the bug happens in mulitple versions indicate all of them. + 2. **The component** that is affected by the bug. For example, the Standard Library, Scaladoc, etc. + 3. **Labels** related to your issue. For example, if you think your issue is related to the typechecker, and if you have successfully minimized your issue, label your bug as "typechecker" and "minimized" + 4. **Running environment**. Are you running on Linux? Windows? What JVM version are you using? + +In order for us to quickly triage the bug that you've found, it's important that the code snippet which produces the observed issue is as minimized as possible. For advice on minimizing your code snippet, please see the appropriate subsection of the above (Is it a Bug?). + +### Description + +In the description of your issue, be as detailed as you can. Bug reports which have the following information included are typically understood, triaged, and fixed very quickly: + + 1. Include a test case (minimized if possible) enabling us to reproduce the problematic behavior. + 2. The expected output. + 3. The actual output. + 4. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. \ No newline at end of file From fe39e1214a9b70ac76f223bde9670f66187b5810 Mon Sep 17 00:00:00 2001 From: Manojo Date: Tue, 23 Apr 2013 11:40:46 +0200 Subject: [PATCH 0019/1704] contribute -> get-involved --- contribute/bug-reporting-guide.md | 75 ------- contribute/documentation.md | 29 --- contribute/hacker-guide.md | 337 ------------------------------ contribute/index.md | 172 --------------- contribute/partest-guide.md | 66 ------ contribute/scala-fame.md | 9 - 6 files changed, 688 deletions(-) delete mode 100644 contribute/bug-reporting-guide.md delete mode 100644 contribute/documentation.md delete mode 100644 contribute/hacker-guide.md delete mode 100644 contribute/index.md delete mode 100644 contribute/partest-guide.md delete mode 100644 contribute/scala-fame.md diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md deleted file mode 100644 index 9b89f60ef4..0000000000 --- a/contribute/bug-reporting-guide.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: Bug Reporting ---- - -# Reporting Bugs to the Scala Project - -The Scala project tracker is located at [http://issues.scala-lang.org](http://issues.scala-lang.org). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. - -## Is it a Bug? - -The first step in identifying a bug is to identify which component of the Scala distribution is affected. First, ensure that your issue falls within any of the following categories: - - - **Library** bugs typically manifest themselves as run-time exceptions, or as *unexpected*/*unintuitive* behavior of Scala Standard Library methods. - - **Compiler** errors are manifested as compile time exceptions, unexpected behavior of your code at run time, or invalid behavior of the type system. - - **Reflection** are bugs that appear in the ‘scala.reflect’ package. For the *reflection* bugs , the same rules apply as for the *library* bugs. - - **Scaladoc** bugs are manifested as a logical problems in the information it presents (that is, the displayed information is incorrect, such as an incorrect subclassing relationship), or incorrect behavior of the user interface. If you'd like to suggest a change in the content of the documentation, please submit a pull request (possible to do in the browser using GitHub, which is easier and faster than filing a bug). Please file a bug about the content of documentation only if you cannot provide a suggestion for its fix. - -If your issue is related to any of the following external libraries, make sure to use the relevant project's issue tracker: - - - [Akka](http://doc.akka.io/docs/akka/current/project/issue-tracking.html) - - [Play!](http://github.com/playframework/Play20/issues) - - [Slick](http://github.com/slick/slick/issues) - - [Actors Migration Kit](http://github.com/scala/actors-migration/issues?state=open) - -The following are generally considered to be bugs: - -- **Scala Compiler Crash** If the Scala compiler is crashing with an internal error (compile time exception) you have certainly found a bug, and can move on to the next section of this document on reporting confirmed bugs. -- **Regressions** If some code snippet worked in a previous Scala release, but now no longer compiles or results in an exception, it is probably a regression. -- **Verify Errors** happen when the compiled Scala program is loaded to the Java Virtual Machine. If you're getting a *Verify Error*, you've usually found a bug. Make sure first that your project is not using stale `.class` files before reporting a new issue. - -If you have a code snippet that is resulting in bytecode which you believe is behaving incorrectly, you may or may not have found a bug. Before reporting your issue, please attempt the following: - -* Make sure you minimize your problem. To correctly minimize the problem follow the following instructions: - - 1. Gradually take apart the offensive code snippet until you believe you have the simplest representation of your problem. - - 2. Ensure that you have decoupled your code snippet from any library that could be introducing the offensive behavior. One way to achieve this is to try to recompile the offensive code snippet in isolation, outside of the context of any complex build environment. - - 3. Make sure you are compiling your project from a clean slate. Your problem could be related to separate compilation, which is difficult to detect without a clean build with new `.class` files. - -* Keep in mind that the behavior you are witnessing could be intended. Good resources for verifying whether or not behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/docu/files/ScalaReference.pdf). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) - -In general, if you find yourself stuck on any of these steps, asking on one of following Scala mailing lists can be helpful: - - - For compiler bugs use the [scala-internals](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) mailing list. - - For unexpected behavior use [scala-language](https://groups.google.com/forum/?fromgroups#!forum/scala-language), or [scala-user](https://groups.google.com/forum/?fromgroups#!forum/scala-user) mailing lists. - -## Reporting Confirmed Bugs is a Sin - -Before reporting your bug, make sure to check the issue tracker for other similar bugs. The exception name or a compiler phase are the best keywords to search for. If you are experiencing unexpected behavior search for method/class names where it happens. Your issue might already be reported, and a workaround might already be available for you take advantage of. If your issue *is* reported, be sure to add your test case as a comment. - -**Note:** reporting a bug that already exists creates an additional overhead for you, the Scala Team, and all people that search the issue database. To avoid this inconvenience make sure that you thoroughly search for an existing issue. - -If you cannot find your issue in the issue tracker, create a new bug. The details about creating a bug report are in the following section. - -## Creating a Bug Report - -Please make sure to fill in as many fields as possible. Make sure you've indicated the following: - - 1. **Exact Scala version** that you are using. For example, `2.10.1` or `0.11.0-RC`. If the bug happens in mulitple versions indicate all of them. - 2. **The component** that is affected by the bug. For example, the Standard Library, Scaladoc, etc. - 3. **Labels** related to your issue. For example, if you think your issue is related to the typechecker, and if you have successfully minimized your issue, label your bug as "typechecker" and "minimized" - 4. **Running environment**. Are you running on Linux? Windows? What JVM version are you using? - -In order for us to quickly triage the bug that you've found, it's important that the code snippet which produces the observed issue is as minimized as possible. For advice on minimizing your code snippet, please see the appropriate subsection of the above (Is it a Bug?). - -### Description - -In the description of your issue, be as detailed as you can. Bug reports which have the following information included are typically understood, triaged, and fixed very quickly: - - 1. Include a test case (minimized if possible) enabling us to reproduce the problematic behavior. - 2. The expected output. - 3. The actual output. - 4. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. \ No newline at end of file diff --git a/contribute/documentation.md b/contribute/documentation.md deleted file mode 100644 index 05b2455a5f..0000000000 --- a/contribute/documentation.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: Documentation Contributions ---- -# Contributing documentation to the Scala project - -TODO - - diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md deleted file mode 100644 index bd7ac60e71..0000000000 --- a/contribute/hacker-guide.md +++ /dev/null @@ -1,337 +0,0 @@ ---- -layout: page -title: Scala hacker guide ---- - -**Eugene Burmako** - -This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. - -This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. - -## The Running Example - -Let's say that you particularly enjoy the new string interpolation language feature introduced in Scala 2.10.0, and you use it quite heavily. - -Though, there's an annoying issue -which you occasionally stumble upon: the formatting string interpolator `f` [does not support](https://issues.scala-lang.org/browse/SI-6725) -new line tokens `%n`. - -One approach would be to go the mailing list, request that the bug be fixed, and then to wait indefinitely for the fix arrive. Another approach would be to instead patch Scala oneself, and to submit the fix to the Scala repository in hopes that it might make it into a subsequent release. - -**_Of note_**: There are several types of releases/builds. Nightly builds are produced every night at a fixed time. Minor releases happen once every few months. Major releases typically happen once per year. - -## 1. Connect - -Sometimes it's appealing to hack alone and not to have to interact with others out of fear, or out of comfort. However, in the context a big project such as Scala, -this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide -unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. - -Typically bug fixes new features start out as an idea or an experiment posted on one of our mailing lists [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel -about things you want to implement. People proficient is certain areas of Scala usually monitor mailing lists, so you'll often get some help -by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. - -This is the list of language features/libraries along with their maintainers's full names and github usernames: - -{% include maintainers.html %} - -Since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. - -As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, -in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user)about our issue. - -
    Posting to scala-user
    -
    -
    Response from Martin
    - -Now that we have the approval of the feature's author, we can get to work! - -## 2. Set up - -Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](http://git-scm.com/) -and [GitHub](http://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, -it probably makes sense to familiarize yourself with Git first. We recommend the [Git Pro](http://git-scm.com/book/en/) -online book. - -### Fork - -Log into [GitHub](http://github.com/), go to [https://github.com/scala/scala](https://github.com/scala/scala) and click the `Fork` -button in the top right corner of the page. This will create your own copy of our repository that will serve as a scratchpad for your work. - -If you're new to Git, don't be afraid of messing up-- there is no way you can corrupt our repository. - -
    Fork scala/scala
    - -### Clone - -If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` -is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), -which covers some of the things that will follow below. Then, _clone_ your repository (_i.e._ pull a copy from github to your local machine) by running the following on the command line: - - 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala - Cloning into 'scala'... - remote: Counting objects: 258564, done. - remote: Compressing objects: 100% (58239/58239), done. - remote: Total 258564 (delta 182155), reused 254094 (delta 178356) - Receiving objects: 100% (258564/258564), 46.91 MiB | 700 KiB/s, done. - Resolving deltas: 100% (182155/182155), done. - -This will create a local directory called `scala`, which contains a clone of your own copy of our repository. The changes that you make -in this directory can be propagated back to your copy hosted on github and, ultimately, pushed into Scala when your patch is ready. - -### Branch - -Before you start making changes, always create your own branch. Never work on the `master` branch. Think of a name that describes -the changes you plan on making. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: -bug fixes and new features. - -* For bug fixes, use `issue/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). -* For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. - -Since in our example, we're going to fix an existing bug [SI-6725](https://issues.scala-lang.org/browse/SI-6725), we'll create a branch named `ticket/6725`. - - 16:39 ~/Projects/scala (master)$ git checkout -b ticket/6725 - Switched to a new branch 'ticket/6725' - -If you are new to Git and branching, read the [Branching Chapter](http://git-scm.com/book/en/Git-Branching) in the Git Pro book. - -### Build - -The next step after cloning your fork is setting up your machine to build Scala. The definitive guide on building Scala is located at -[https://github.com/scala/scala/blob/master/README.rst](https://github.com/scala/scala/blob/master/README.rst), but here's the summary: - -* It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). -* The build tool is `ant`. -* The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. -* The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. -* Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. - -Building Scala is as easy as running `ant` in the root of your cloned repository. Be prepared to wait for a while-- a full "clean" build -takes 8+ minutes depending on your machine (and up to 30 minutes on older machines with less memory). Incremental builds are usually within 30-120 seconds range (again, your mileage might vary -with your hardware). - - 16:50 ~/Projects/scala (ticket/6725)$ ant - Buildfile: /Users/xeno_by/Projects/scala/build.xml - - strap.clean: - - pack.clean: - - init.jars.check: - - init.jars: - [echo] Updating bootstrap libs. (To do this by hand, run ./pull-binary-libs.sh) - [exec] Resolving [943cd5c8802b2a3a64a010efb86ec19bac142e40/lib/ant/ant-contrib.jar] - - ... - - pack.bin: - [mkdir] Created dir: /Users/xeno_by/Projects/scala/build/pack/bin - - pack.done: - - build: - - BUILD SUCCESSFUL - Total time: 9 minutes 41 seconds - -### IDE - -There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. - -Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. Here are -[instructions for Eclipse](https://github.com/scala/scala/blob/master/src/eclipse/README.md) and -[instructions for Intellij](https://github.com/scala/scala/blob/master/src/intellij/README). Both of those Scala plugins provide -navigation, refactoring and error reporting functionality as well as integrated debugging. - -There also exist lighter-weight editors such as Emacs, Sublime or jEdit which provide unparalleled are faster and much less memory/compute-intensive to run, while -lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, -a helper program, which hosts a resident Scala compiler providing some of the features implemented in traditional IDEs. However despite -having significantly matured over the last year, support for our particular code base is still being improved, and is not as mature as for Eclipse and IntelliJ. - -Due to the immense variability in personal preference between IDE/editor experience, it's difficult to recommend a particular tool, and your choice should boil down to your personal preferences. - -## 3. Hack - -When hacking on your topic of choice, you'll be modifying Scala, compiling it and testing it on relevant input files. -Typically you would want to first make sure that your changes work on a small example and afterwards verify that nothing break -by running a comprehensive test suite. - -We'll start by creating a `sandbox` directory (this particular name doesn't bear any special meaning), which will hold a single test file and its compilation results. First, let's make sure that -[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `ant`. The Scala compiler that we just built is located in `build/pack/bin`. - - 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox - 17:26 ~/Projects/scala (ticket/6725)$ cd sandbox - 17:26 ~/Projects/scala/sandbox (ticket/6725)$ edit Test.scala - 17:26 ~/Projects/scala/sandbox (ticket/6725)$ cat Test.scala - object Test extends App { - val a = 1 - val s = f"$a%s%n$a%s" - println(s) - } - 17:27 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala - 17:28 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test - 1%n1 // %n should've been replaced by a newline here - -### Implement - -Now, implement your bugfix or new feature! - -Here are also some tips & tricks that have proven useful in Scala development: - -* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, - try doing `ant clean build`. Due to the way how Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile - just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to - very strange errors. Full-rebuilds fix the problem. Fortunately that's rarely necessary, because full-rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. -* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, - some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. -* Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how - things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious - to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. - -### Documentation - -There are several areas that one could contribute to-- there is the Scala library, the Scala compiler, and other tools such as Scaladoc. Each area has varying amounts of documentation. - -##### The Scala Library - -Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left something cleaner than you found it.) - -If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. - -If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](http://docs.scala-lang.org/overviews/core/collections.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](http://docs.scala-lang.org/overviews/core/parallel-collections.html). (TODO double check these links!) - -##### The Scala Compiler - -Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email (scala-internals mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: - -* [Compiler internals videos by Martin Odersky](TODO) are quite dated, but still very useful. In this three-video - series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. -* [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that - are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. -* [Reflection and Compilers by Martin Odersky](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk - at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. -* [Scala compiler corner](http://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about - most of the post-typer phases (i.e. the backend) in the Scala compiler. -* [scala-internals](http://groups.google.com/group/scala-internals), a mailing list which hosts discussions about the core - internal design and implementation of the Scala system. - -##### Other Projects - -Tools like Scaladoc also welcome contributions. Unfortunately these smaller projects have less developer documentation. In these cases, the best thing to do is to directly explore the code base (which often contains documentation as inline comments) or to write to the appropriate maintainers for pointers. - -### Interlude - -To fix [the bug we're interested in](https://issues.scala-lang.org/browse/SI-6725). Let's say we've tracked the `StringContext.f` interpolator -down to a macro implemented in `MacroImplementations.scala`, and there we notice that the interpolator only processes conversions, -but not tokens like `%n`. Looks like an easy fix. - - 18:44 ~/Projects/scala/sandbox (ticket/6725)$ git diff - diff --git a/src/compiler/scala/tools/reflect/MacroImplementations.scala b/src/compiler/scala/tools/ - index 002a3fce82..4e8f02084d 100644 - --- a/src/compiler/scala/tools/reflect/MacroImplementations.scala - +++ b/src/compiler/scala/tools/reflect/MacroImplementations.scala - @@ -117,7 +117,8 @@ abstract class MacroImplementations { - if (!strIsEmpty) { - val len = str.length - while (idx < len) { - - if (str(idx) == '%') { - + def notPercentN = str(idx) != '%' || (idx + 1 < len && str(idx + 1) != 'n') - + if (str(idx) == '%' && notPercentN) { - bldr append (str substring (start, idx)) append "%%" - start = idx + 1 - } - -After applying the fix and running `ant`, our simple test case in `sandbox/Test.scala` started working! - - 18:51 ~/Projects/scala/sandbox (ticket/6725)$ cd .. - 18:51 ~/Projects/scala (ticket/6725)$ ant - Buildfile: /Users/xeno_by/Projects/scala/build.xml - - ... - - quick.comp: - [scalacfork] Compiling 1 file to /Users/xeno_by/Projects/scala/build/quick/classes/compiler - [propertyfile] Updating property file: /Users/xeno_by/Projects/scala/build/quick/classes/compiler/compiler.properties - [stopwatch] [quick.comp.timer: 6.588 sec] - - ... - - BUILD SUCCESSFUL - Total time: 18 seconds - - 18:51 ~/Projects/scala (ticket/6725)$ cd sandbox - 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala - 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test - 1 - 1 // no longer getting the %n here - it got transformed into a newline - -### Verify - -Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. -Read up [the partest guide](/contribute/partest-guide.html) to learn the details about partest, but in a nutshell you can either -run `ant test` to go through the entire test suite (30+ minutes) or use wildcards to limit the tests to something manageable: - - 18:52 ~/Projects/scala/sandbox (ticket/6725)$ cd ../test - 18:56 ~/Projects/scala/test (ticket/6725)$ partest files/run/*interpol* - Testing individual files - testing: [...]/files/run/interpolationArgs.scala [ OK ] - testing: [...]/files/run/interpolationMultiline1.scala [ OK ] - testing: [...]/files/run/interpolationMultiline2.scala [ OK ] - testing: [...]/files/run/sm-interpolator.scala [ OK ] - testing: [...]/files/run/interpolation.scala [ OK ] - testing: [...]/files/run/stringinterpolation_macro-run.scala [ OK ] - All of 6 tests were successful (elapsed time: 00:00:08) - -## 4. Publish - -After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. -In a nutshell, this involves: - - 1. making sure that your code and commit messages are of high quality, - 2. clicking a few buttons in the Github interface, - 3. assigning one or more reviewers which will look through your pull request. - - Let's go into each of these points in more detail. - -### Commit - -The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. -There are two things you should know here: - - 1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. - - 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. - -Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. - - 19:22 ~/Projects/scala/test (ticket/6725)$ git add ../src/compiler/scala/tools/reflect/MacroImplementations.scala - 19:22 ~/Projects/scala/test (ticket/6725)$ git commit - [ticket/6725 3c3098693b] SI-6725 `f` interpolator now supports %n tokens - 1 file changed, 2 insertions(+), 1 deletion(-) - 19:34 ~/Projects/scala/test (ticket/6725)$ git push origin ticket/6725 - Username for 'https://github.com': xeno-by - Password for 'https://xeno-by@github.com': - Counting objects: 15, done. - Delta compression using up to 8 threads. - Compressing objects: 100% (8/8), done. - Writing objects: 100% (8/8), 1.00 KiB, done. - Total 8 (delta 5), reused 0 (delta 0) - To https://github.com/xeno-by/scala - * [new branch] ticket/6725 -> ticket/6725 - -### Submit - -Now, we must simply submit our proposed patch. Navigate to your branch in Github (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) -and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will -need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. - -
    Submit a pull request
    - -### Discuss - -After the pull request has been submitted, you need to pick a reviewer (usually the person you've contacted in the beginning of your -workflow) and be ready to elaborate and adjust your patch if necessary. In this example, we picked Martin, because we had such a nice chat on the mailing list: - -
    SAssign the reviewer
    - diff --git a/contribute/index.md b/contribute/index.md deleted file mode 100644 index 05696f5165..0000000000 --- a/contribute/index.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -layout: page -title: Contribute ---- -# Contributing to the Scala project - -The Scala programming langauge is an open source project with a very -diverse community, where people from all over the world contribute their work, -with everyone benefitting from friendly help and advice, and -kindly helping others in return. So why not join the Scala community and help -everyone make things better? - -The following are typical questions you might ask when first contributing to Scala. -If you have other questions not addressed here, feel free to ask on the [scala-internals mailing list](http://groups.google.com/group/scala-internals). - -
    - -### I found something that doesn't work as expected. How to file a bug report? - -[The reporting bugs page](bug-reporting-guide.html) describes the steps to take when you find something that doesn't work -as expected. Filing in a good bug report increases the chances the ticket is fixed quickly. - -
    - -### Why contribute a patch to Scala? - -Just to name a few common reasons: - - contributing a patch is the best way to make sure your desired changes will be available in the next Scala version - - Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu - - last but not least, you will make it into the [Scala Contribuitor Hall of Fame](scala-fame.html). - -
    - -### I'd like to start hacking the Scala project, how to find something to work on? - -Depending on your skillset, you may want to contribute documentation and/or code. Documentation has always been very -appreciated work in the Scala community, as most code contributions tend to be quite scarce in explanations of how -things work and how everyone else is supposed to use them. To contribute documentation, have a look at the -[documentation page](documentation.html). - -The main Scala project consists of the standard Scala library, the Scala reflection and macros library, -the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. -Typically the scaladoc tool provides a low entry point for new committers, so it is a good first step into contributing. - -On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. - -{% comment %} Keep the space in the
    ! Jekyll/Marulu limitation {% endcomment %} -
    - -
    - -### I have this idea that I'd like to add to Scala, how do I start? - -The first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea -and on the implementation plan. Starting point ("community") bugs are usually uncontroversial, so you can jump right -ahead to hacking the scala source tree and filing a pull request. For larger changes it is best to announce the change -on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list. - -Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. - -
    - - \ No newline at end of file diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md deleted file mode 100644 index e681c569fe..0000000000 --- a/contribute/partest-guide.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: page -title: Running the Test Suite ---- - -Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go the scala project folder from your local checkout and run it via `ant` or standalone as follows. - -## Using ant - -The test suite can be run by using ant from the command line: - - $ ant test.suite - -## Standalone - -There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use - - ./test/partest --show-diff --show-log --failed - -You can get a summary of the usage by running partest without arguments. - -* Most commonly you want to invoke partest with an option that tells it which part of the tests to run. For example `--all`, `--pos`, `--neg` or `--run`. -* You can test individual files by specifying individual test files (`.scala` files) as options. Several files can be tested if they are from the same category, e.g., `pos`. -* You can enable output of log and diff using the `-show-log` and `-show-diff` options. -* If you get into real trouble, and want to find out what partest does, you can run it with option `--verbose`. This info is useful as part of bug reports. -* Set custom path from where to load classes: `-classpath ` and `-buildpath `. -* You can use the `SCALAC_OPTS` environment variable to pass command line options to the compiler. -* You can use the `JAVA_OPTS` environment variable to pass command line options to the runner (e.g., for `run/jvm` tests). -* The launch scripts run partest as follows: - - scala -cp scala.tools.partest.nest.NestRunner - - Partest classes from a `quick` build, e.g., can be found in `./build/quick/classes/partest/`. - - Partest will tell you where it loads compiler/library classes from by adding the `partest.debug` property: - - scala -Dpartest.debug=true -cp scala.tools.partest.nest.NestRunner - - - -## ScalaCheck tests - -Tests that depend on [ScalaCheck](https://github.com/rickynils/scalacheck) can be added under folder `./test/files/scalacheck`. A sample test: - - import org.scalacheck._ - import Prop._ - - object Test { - val prop_ConcatLists = property{ (l1: ListInt, l2: ListInt) => - l1.size + l2.size == (l1 ::: l2).size - } - - val tests = List(("prop_ConcatLists", prop_ConcatLists)) - } - -## Troubleshooting - -### Windows - -Some tests might fail because line endings in the `.check` files and the produced results do not match. In that case, set either - - git config core.autocrlf false - -or - - git config core.autocrlf input \ No newline at end of file diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md deleted file mode 100644 index 75317be820..0000000000 --- a/contribute/scala-fame.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: page -title: Scala Contribuitor Hall of Fame ---- -# Scala Hall of Fame - -A big thank you to everyone who contributed to: - - [the Scala library and compiler](https://github.com/scala/scala/contributors) - - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) \ No newline at end of file From ab597ab0b5dde3577da92ef3fd803f6e00675b94 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 30 May 2013 13:25:09 +0100 Subject: [PATCH 0020/1704] Going back to having a 'Contribute' section --- contribute/bug-reporting-guide.md | 89 +++++ contribute/documentation.md | 29 ++ contribute/hacker-guide.md | 337 ++++++++++++++++++ contribute/index.md | 201 +++++++++++ contribute/partest-guide.md | 66 ++++ .../_posts/2013-03-01-scala-fame-2013-02.md | 182 ++++++++++ .../_posts/2013-04-01-scala-fame-2013-03.md | 126 +++++++ .../_posts/2013-05-01-scala-fame-2013-04.md | 91 +++++ contribute/scala-fame.md | 14 + 9 files changed, 1135 insertions(+) create mode 100644 contribute/bug-reporting-guide.md create mode 100644 contribute/documentation.md create mode 100644 contribute/hacker-guide.md create mode 100644 contribute/index.md create mode 100644 contribute/partest-guide.md create mode 100644 contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md create mode 100644 contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md create mode 100644 contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md create mode 100644 contribute/scala-fame.md diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md new file mode 100644 index 0000000000..e286ce2002 --- /dev/null +++ b/contribute/bug-reporting-guide.md @@ -0,0 +1,89 @@ +--- +layout: page +title: Bug Reporting +--- + +# Reporting Bugs to the Scala Project + +The Scala project tracker is located at [http://issues.scala-lang.org](http://issues.scala-lang.org). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. + +## Is it a Bug? + +The first step in identifying a bug is to identify which component of the Scala distribution is affected. First, ensure that your issue falls within any of the following categories: + + - **Library** bugs typically manifest themselves as run-time exceptions, or as *unexpected*/*unintuitive* behavior of Scala Standard Library methods. + - **Compiler** errors are manifested as compile time exceptions, unexpected behavior of your code at run time, or invalid behavior of the type system. + - **Reflection** are bugs that appear in the ‘scala.reflect’ package. For the *reflection* bugs , the same rules apply as for the *library* bugs. + - **Scaladoc** bugs are manifested as a logical problems in the information it presents (that is, the displayed information is incorrect, such as an incorrect subclassing relationship), or incorrect behavior of the user interface. If you'd like to suggest a change in the content of the documentation, please submit a pull request (possible to do in the browser using GitHub, which is easier and faster than filing a bug). Please file a bug about the content of documentation only if you cannot provide a suggestion for its fix. + +If your issue is related to any of the following external projects, make sure to use its appropriate issue tracker: + + - [Akka](http://doc.akka.io/docs/akka/current/project/issue-tracking.html) + - [Play!](http://github.com/playframework/Play20/issues) + - [Slick](http://github.com/slick/slick/issues) + - [Actors Migration Kit](http://github.com/scala/actors-migration/issues?state=open) + - [Scala IDE](https://scala-ide-portfolio.assembla.com/spaces/scala-ide/support/tickets) + - [sbt](https://github.com/sbt/sbt/issues) + +The following are generally considered to be bugs: + +- **Scala Compiler Crash** If the Scala compiler is crashing with an internal error (compile time exception) you have certainly found a bug, and can move on to the next section of this document on reporting confirmed bugs. +- **Regressions** If some code snippet worked in a previous Scala release, but now no longer compiles or results in an exception, it is probably a regression. +- **Verify Errors** happen when the compiled Scala program is loaded to the Java Virtual Machine. If you're getting a *Verify Error*, you've usually found a bug. Make sure first that your project is not using stale `.class` files before reporting a new issue. + +If you have a code snippet that is resulting in bytecode which you believe is behaving incorrectly, you may or may not have found a bug. Before reporting your issue, please attempt the following: + +* Make sure you minimize your problem. To correctly minimize the problem follow the following instructions: + + 1. Gradually take apart the offensive code snippet until you believe you have the simplest representation of your problem. + + 2. Ensure that you have decoupled your code snippet from any library that could be introducing the offensive behavior. One way to achieve this is to try to recompile the offensive code snippet in isolation, outside of the context of any complex build environment. If your code depends on some strictly Java library and source code is available for it, make sure that the latter is also minimized. + + 3. Make sure you are compiling your project from a clean slate. Your problem could be related to separate compilation, which is difficult to detect without a clean build with new `.class` files. + + 4. If you have encountered a bug while building your code in the IDE, then please reproduce it on the command line. The same rule applies for build tools like `sbt` or `ant`. + + 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. + +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/docu/files/ScalaReference.pdf). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) or [stackoveflow](http://stackoverflow.com/questions/tagged/scala). + +In general, if you find yourself stuck on any of these steps, asking on one of following Scala mailing lists can be helpful: + + - For unexpected behavior use [scala-language](https://groups.google.com/forum/?fromgroups#!forum/scala-language), or [scala-user](https://groups.google.com/forum/?fromgroups#!forum/scala-user) mailing lists. + - For compiler bugs use the [scala-internals](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) mailing list. + +* Examples of exceptions reported by the compiler which usually are not bugs: + 1. `StackOverflowError` is typically not a bug unless the stacktrace involves the internal packages of the compiler (like `scala.tools.nsc...`). Try to increase the Java stack size (`-Xss`), in most of the cases it helps. + 2. `AbstractMethodError` can occur when you did not recompile all the necessary Scala files (build tools, like `sbt`, can prevent that from happening) or you are mixing external libraries compiled for different Scala versions (for example one uses `2.10.x` and the other `2.11.x`). + +## Reporting Confirmed Bugs is a Sin + +Before reporting your bug, make sure to check the issue tracker for other similar bugs. The exception name or a compiler phase are the best keywords to search for. If you are experiencing unexpected behavior search for method/class names where it happens. Your issue might already be reported, and a workaround might already be available for you take advantage of. If your issue *is* reported, be sure to add your test case as a comment if it is different from any of the existing ones. + +**Note:** reporting a bug that already exists creates an additional overhead for you, the Scala Team, and all people that search the issue database. To avoid this inconvenience make sure that you thoroughly search for an existing issue. + +If you cannot find your issue in the issue tracker, create a new bug. The details about creating a bug report are in the following section. + +## Creating a Bug Report + +Please make sure to fill in as many fields as possible. Make sure you've indicated the following: + + 1. **Exact Scala version** that you are using. For example, `2.10.1` or `2.11.0-RC`. If the bug happens in multiple versions indicate all of them. + 2. **The component** that is affected by the bug. For example, the Standard Library, Scaladoc, etc. + 3. **Labels** related to your issue. For example, if you think your issue is related to the typechecker, and if you have successfully minimized your issue, label your bug as "typechecker" and "minimized". Issue tracker will suggest names for existing labels as you type them so try not to create duplicates. + 4. **Running environment**. Are you running on Linux? Windows? What JVM version are you using? + +In order for us to quickly triage the bug that you've found, it's important that the code snippet which produces the observed issue is as minimized as possible. For advice on minimizing your code snippet, please see the appropriate subsection of the above (Is it a Bug?). + +### Description + +In the description of your issue, be as detailed as you can. Bug reports which have the following information included are typically understood, triaged, and fixed very quickly: + + 1. Include a test case (minimized if possible) enabling us to reproduce the problematic behavior. Include your test case (and output) in proper formatting `{code}` blocks: + + {code}Here you put your classes{code} + + 2. The expected output. + 3. The actual output, including the stacktrace. + 4. Related discussion on the mailing lists, if applicable. + 4. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. \ No newline at end of file diff --git a/contribute/documentation.md b/contribute/documentation.md new file mode 100644 index 0000000000..05b2455a5f --- /dev/null +++ b/contribute/documentation.md @@ -0,0 +1,29 @@ +--- +layout: page +title: Documentation Contributions +--- +# Contributing documentation to the Scala project + +TODO + + diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md new file mode 100644 index 0000000000..758bb17115 --- /dev/null +++ b/contribute/hacker-guide.md @@ -0,0 +1,337 @@ +--- +layout: page +title: Scala hacker guide +--- + +**Eugene Burmako** + +This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. + +This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. + +## The Running Example + +Let's say that you particularly enjoy the new string interpolation language feature introduced in Scala 2.10.0, and you use it quite heavily. + +Though, there's an annoying issue +which you occasionally stumble upon: the formatting string interpolator `f` [does not support](https://issues.scala-lang.org/browse/SI-6725) +new line tokens `%n`. + +One approach would be to go the mailing list, request that the bug be fixed, and then to wait indefinitely for the fix arrive. Another approach would be to instead patch Scala oneself, and to submit the fix to the Scala repository in hopes that it might make it into a subsequent release. + +**_Of note_**: There are several types of releases/builds. Nightly builds are produced every night at a fixed time. Minor releases happen once every few months. Major releases typically happen once per year. + +## 1. Connect + +Sometimes it's appealing to hack alone and not to have to interact with others out of fear, or out of comfort. However, in the context a big project such as Scala, +this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide +unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. + +Typically bug fixes new features start out as an idea or an experiment posted on one of our mailing lists [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel +about things you want to implement. People proficient is certain areas of Scala usually monitor mailing lists, so you'll often get some help +by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. + +This is the list of language features/libraries along with their maintainers's full names and github usernames: + +{% include maintainers.html %} + +Since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. + +As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, +in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user)about our issue. + +
    Posting to scala-user
    +
    +
    Response from Martin
    + +Now that we have the approval of the feature's author, we can get to work! + +## 2. Set up + +Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](http://git-scm.com/) +and [GitHub](http://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, +it probably makes sense to familiarize yourself with Git first. We recommend the [Git Pro](http://git-scm.com/book/en/) +online book. + +### Fork + +Log into [GitHub](http://github.com/), go to [https://github.com/scala/scala](https://github.com/scala/scala) and click the `Fork` +button in the top right corner of the page. This will create your own copy of our repository that will serve as a scratchpad for your work. + +If you're new to Git, don't be afraid of messing up-- there is no way you can corrupt our repository. + +
    Fork scala/scala
    + +### Clone + +If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` +is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), +which covers some of the things that will follow below. Then, _clone_ your repository (_i.e._ pull a copy from github to your local machine) by running the following on the command line: + + 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala + Cloning into 'scala'... + remote: Counting objects: 258564, done. + remote: Compressing objects: 100% (58239/58239), done. + remote: Total 258564 (delta 182155), reused 254094 (delta 178356) + Receiving objects: 100% (258564/258564), 46.91 MiB | 700 KiB/s, done. + Resolving deltas: 100% (182155/182155), done. + +This will create a local directory called `scala`, which contains a clone of your own copy of our repository. The changes that you make +in this directory can be propagated back to your copy hosted on github and, ultimately, pushed into Scala when your patch is ready. + +### Branch + +Before you start making changes, always create your own branch. Never work on the `master` branch. Think of a name that describes +the changes you plan on making. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: +bug fixes and new features. + +* For bug fixes, use `issue/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). +* For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. + +Since in our example, we're going to fix an existing bug [SI-6725](https://issues.scala-lang.org/browse/SI-6725), we'll create a branch named `ticket/6725`. + + 16:39 ~/Projects/scala (master)$ git checkout -b ticket/6725 + Switched to a new branch 'ticket/6725' + +If you are new to Git and branching, read the [Branching Chapter](http://git-scm.com/book/en/Git-Branching) in the Git Pro book. + +### Build + +The next step after cloning your fork is setting up your machine to build Scala. The definitive guide on building Scala is located at +[https://github.com/scala/scala/blob/master/README.rst](https://github.com/scala/scala/blob/master/README.rst), but here's the summary: + +* It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). +* The build tool is `ant`. +* The build runs the `pull-binary-libs.sh` script to download bootstrap libs. This requires `bash` and `curl`. +* The majority of our team works on Linux and OS X, so these operating systems are guaranteed to work. +* Windows is supported, but it might have issues. Please report to [the issue tracker](https://issues.scala-lang.org/) if you encounter any. + +Building Scala is as easy as running `ant` in the root of your cloned repository. Be prepared to wait for a while-- a full "clean" build +takes 8+ minutes depending on your machine (and up to 30 minutes on older machines with less memory). Incremental builds are usually within 30-120 seconds range (again, your mileage might vary +with your hardware). + + 16:50 ~/Projects/scala (ticket/6725)$ ant + Buildfile: /Users/xeno_by/Projects/scala/build.xml + + strap.clean: + + pack.clean: + + init.jars.check: + + init.jars: + [echo] Updating bootstrap libs. (To do this by hand, run ./pull-binary-libs.sh) + [exec] Resolving [943cd5c8802b2a3a64a010efb86ec19bac142e40/lib/ant/ant-contrib.jar] + + ... + + pack.bin: + [mkdir] Created dir: /Users/xeno_by/Projects/scala/build/pack/bin + + pack.done: + + build: + + BUILD SUCCESSFUL + Total time: 9 minutes 41 seconds + +### IDE + +There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. + +Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. Here are +[instructions for Eclipse](https://github.com/scala/scala/blob/master/src/eclipse/README.md) and +[instructions for Intellij](https://github.com/scala/scala/blob/master/src/intellij/README). Both of those Scala plugins provide +navigation, refactoring and error reporting functionality as well as integrated debugging. + +There also exist lighter-weight editors such as Emacs, Sublime or jEdit which provide unparalleled are faster and much less memory/compute-intensive to run, while +lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, +a helper program, which hosts a resident Scala compiler providing some of the features implemented in traditional IDEs. However despite +having significantly matured over the last year, support for our particular code base is still being improved, and is not as mature as for Eclipse and IntelliJ. + +Due to the immense variability in personal preference between IDE/editor experience, it's difficult to recommend a particular tool, and your choice should boil down to your personal preferences. + +## 3. Hack + +When hacking on your topic of choice, you'll be modifying Scala, compiling it and testing it on relevant input files. +Typically you would want to first make sure that your changes work on a small example and afterwards verify that nothing break +by running a comprehensive test suite. + +We'll start by creating a `sandbox` directory (this particular name doesn't bear any special meaning), which will hold a single test file and its compilation results. First, let's make sure that +[the bug](https://issues.scala-lang.org/browse/SI-6725) is indeed reproducible by putting together a simple test and compiling and running it with the Scala compiler that we built using `ant`. The Scala compiler that we just built is located in `build/pack/bin`. + + 17:25 ~/Projects/scala (ticket/6725)$ mkdir sandbox + 17:26 ~/Projects/scala (ticket/6725)$ cd sandbox + 17:26 ~/Projects/scala/sandbox (ticket/6725)$ edit Test.scala + 17:26 ~/Projects/scala/sandbox (ticket/6725)$ cat Test.scala + object Test extends App { + val a = 1 + val s = f"$a%s%n$a%s" + println(s) + } + 17:27 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala + 17:28 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test + 1%n1 // %n should've been replaced by a newline here + +### Implement + +Now, implement your bugfix or new feature! + +Here are also some tips & tricks that have proven useful in Scala development: + +* If after introducing changes or updating your clone, you get `AbstractMethodError` or other linkage exceptions, + try doing `ant clean build`. Due to the way how Scala compiles traits, if a trait changes, then it's sometimes not enough to recompile + just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to + very strange errors. Full-rebuilds fix the problem. Fortunately that's rarely necessary, because full-rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. +* Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, + some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. +* Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how + things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious + to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. + +### Documentation + +There are several areas that one could contribute to-- there is the Scala library, the Scala compiler, and other tools such as Scaladoc. Each area has varying amounts of documentation. + +##### The Scala Library + +Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left something cleaner than you found it.) + +If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. + +If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](http://docs.scala-lang.org/overviews/core/collections.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](http://docs.scala-lang.org/overviews/core/parallel-collections.html). (TODO double check these links!) + +##### The Scala Compiler + +Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email (scala-internals mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: + +* [Compiler internals videos by Martin Odersky](TODO) are quite dated, but still very useful. In this three-video + series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. +* [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that + are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. +* [Reflection and Compilers by Martin Odersky](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reflection-and-Compilers), a talk + at Lang.NEXT 2012 in which Martin elaborates on the design of scalac and the architecture of the reflection API. +* [Scala compiler corner](http://lampwww.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/) contains extensive documentation about + most of the post-typer phases (i.e. the backend) in the Scala compiler. +* [scala-internals](http://groups.google.com/group/scala-internals), a mailing list which hosts discussions about the core + internal design and implementation of the Scala system. + +##### Other Projects + +Tools like Scaladoc also welcome contributions. Unfortunately these smaller projects have less developer documentation. In these cases, the best thing to do is to directly explore the code base (which often contains documentation as inline comments) or to write to the appropriate maintainers for pointers. + +### Interlude + +To fix [the bug we're interested in](https://issues.scala-lang.org/browse/SI-6725). Let's say we've tracked the `StringContext.f` interpolator +down to a macro implemented in `MacroImplementations.scala`, and there we notice that the interpolator only processes conversions, +but not tokens like `%n`. Looks like an easy fix. + + 18:44 ~/Projects/scala/sandbox (ticket/6725)$ git diff + diff --git a/src/compiler/scala/tools/reflect/MacroImplementations.scala b/src/compiler/scala/tools/ + index 002a3fce82..4e8f02084d 100644 + --- a/src/compiler/scala/tools/reflect/MacroImplementations.scala + +++ b/src/compiler/scala/tools/reflect/MacroImplementations.scala + @@ -117,7 +117,8 @@ abstract class MacroImplementations { + if (!strIsEmpty) { + val len = str.length + while (idx < len) { + - if (str(idx) == '%') { + + def notPercentN = str(idx) != '%' || (idx + 1 < len && str(idx + 1) != 'n') + + if (str(idx) == '%' && notPercentN) { + bldr append (str substring (start, idx)) append "%%" + start = idx + 1 + } + +After applying the fix and running `ant`, our simple test case in `sandbox/Test.scala` started working! + + 18:51 ~/Projects/scala/sandbox (ticket/6725)$ cd .. + 18:51 ~/Projects/scala (ticket/6725)$ ant + Buildfile: /Users/xeno_by/Projects/scala/build.xml + + ... + + quick.comp: + [scalacfork] Compiling 1 file to /Users/xeno_by/Projects/scala/build/quick/classes/compiler + [propertyfile] Updating property file: /Users/xeno_by/Projects/scala/build/quick/classes/compiler/compiler.properties + [stopwatch] [quick.comp.timer: 6.588 sec] + + ... + + BUILD SUCCESSFUL + Total time: 18 seconds + + 18:51 ~/Projects/scala (ticket/6725)$ cd sandbox + 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scalac Test.scala + 18:51 ~/Projects/scala/sandbox (ticket/6725)$ ../build/pack/bin/scala Test + 1 + 1 // no longer getting the %n here - it got transformed into a newline + +### Verify + +Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. +Read up [the partest guide](partest-guide.html) to learn the details about partest, but in a nutshell you can either +run `ant test` to go through the entire test suite (30+ minutes) or use wildcards to limit the tests to something manageable: + + 18:52 ~/Projects/scala/sandbox (ticket/6725)$ cd ../test + 18:56 ~/Projects/scala/test (ticket/6725)$ partest files/run/*interpol* + Testing individual files + testing: [...]/files/run/interpolationArgs.scala [ OK ] + testing: [...]/files/run/interpolationMultiline1.scala [ OK ] + testing: [...]/files/run/interpolationMultiline2.scala [ OK ] + testing: [...]/files/run/sm-interpolator.scala [ OK ] + testing: [...]/files/run/interpolation.scala [ OK ] + testing: [...]/files/run/stringinterpolation_macro-run.scala [ OK ] + All of 6 tests were successful (elapsed time: 00:00:08) + +## 4. Publish + +After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. +In a nutshell, this involves: + + 1. making sure that your code and commit messages are of high quality, + 2. clicking a few buttons in the Github interface, + 3. assigning one or more reviewers which will look through your pull request. + + Let's go into each of these points in more detail. + +### Commit + +The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. +There are two things you should know here: + + 1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. + + 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. + +Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. + + 19:22 ~/Projects/scala/test (ticket/6725)$ git add ../src/compiler/scala/tools/reflect/MacroImplementations.scala + 19:22 ~/Projects/scala/test (ticket/6725)$ git commit + [ticket/6725 3c3098693b] SI-6725 `f` interpolator now supports %n tokens + 1 file changed, 2 insertions(+), 1 deletion(-) + 19:34 ~/Projects/scala/test (ticket/6725)$ git push origin ticket/6725 + Username for 'https://github.com': xeno-by + Password for 'https://xeno-by@github.com': + Counting objects: 15, done. + Delta compression using up to 8 threads. + Compressing objects: 100% (8/8), done. + Writing objects: 100% (8/8), 1.00 KiB, done. + Total 8 (delta 5), reused 0 (delta 0) + To https://github.com/xeno-by/scala + * [new branch] ticket/6725 -> ticket/6725 + +### Submit + +Now, we must simply submit our proposed patch. Navigate to your branch in Github (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) +and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will +need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. + +
    Submit a pull request
    + +### Discuss + +After the pull request has been submitted, you need to pick a reviewer (usually the person you've contacted in the beginning of your +workflow) and be ready to elaborate and adjust your patch if necessary. In this example, we picked Martin, because we had such a nice chat on the mailing list: + +
    SAssign the reviewer
    + diff --git a/contribute/index.md b/contribute/index.md new file mode 100644 index 0000000000..c3be3be994 --- /dev/null +++ b/contribute/index.md @@ -0,0 +1,201 @@ +--- +layout: page +title: Get Involved +--- +# Contributing to the Scala project + +The Scala programming language is an open source project with a very +diverse community, where people from all over the world contribute their work, +with everyone benefitting from friendly help and advice, and +kindly helping others in return. So why not join the Scala community and help +everyone make things better? + +
    +
    +
    +

    Scala Internals

    +

    Get a peek into the inners of the Scala compiler.

    +
    +
    +

    Report an issue

    +

    File a bug report or a feature request.

    +
    +
    +

    Documentation

    +

    Improve the documentation itself.

    +
    +
    + +
    +
    +

    Write a SIP

    +

    Write a proposal for extending/improving Scala.

    +
    +
    +

    Hacker's guide

    +

    Learn to write good code and improve your chances of contributing to the Scala galaxy.

    +
    +
    +

    Community issues

    +

    Get cracking on some easy to approach issues.

    +
    +
    + +
    +
    +

    Unassigned issues

    +

    Get serious with some more complex issues.

    +
    +
    +

    Hall of Fame

    +

    Track your rockstar status in the community.

    +
    +
    +

    Test your contributions

    +

    Learn how to run the Scala test suite.

    +
    +
    +
    + + + +### Why contribute a patch to Scala? + +Just to name a few common reasons: + - contributing a patch is the best way to make sure your desired changes will be available in the next Scala version + - Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu + - last but not least, you will make it into the [Scala Contributor Hall of Fame](scala-fame.html). + +
    + +The main Scala project consists of the standard Scala library, the Scala reflection and macros library, +the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. +Typically the scaladoc tool provides a low entry point for new committers, so it is a good first step into contributing. + +On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. + +If you are interested in contributing code, we ask you to sign the +[Scala Contributor License Agreement](http://typesafe.com/contribute/cla/scala), +which allows us to ensure that all code submitted to the project is +unencumbered by copyrights or patents. + +
    + +### I have this idea that I'd like to add to Scala, how do I start? + +The first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea +and on the implementation plan. Starting point ("community") bugs are usually uncontroversial, so you can jump right +ahead to hacking the scala source tree and filing a pull request. For larger changes it is best to announce the change +on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list. + +Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against +the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. + +
    + + diff --git a/contribute/partest-guide.md b/contribute/partest-guide.md new file mode 100644 index 0000000000..e681c569fe --- /dev/null +++ b/contribute/partest-guide.md @@ -0,0 +1,66 @@ +--- +layout: page +title: Running the Test Suite +--- + +Partest is a custom parallel testing tool that we use to run the test suite for the Scala compiler and library. Go the scala project folder from your local checkout and run it via `ant` or standalone as follows. + +## Using ant + +The test suite can be run by using ant from the command line: + + $ ant test.suite + +## Standalone + +There are launch scripts `partest` and `partest.bat` in the `test` folder of the scala project. To have partest run failing tests only and print details about test failures to the console, you can use + + ./test/partest --show-diff --show-log --failed + +You can get a summary of the usage by running partest without arguments. + +* Most commonly you want to invoke partest with an option that tells it which part of the tests to run. For example `--all`, `--pos`, `--neg` or `--run`. +* You can test individual files by specifying individual test files (`.scala` files) as options. Several files can be tested if they are from the same category, e.g., `pos`. +* You can enable output of log and diff using the `-show-log` and `-show-diff` options. +* If you get into real trouble, and want to find out what partest does, you can run it with option `--verbose`. This info is useful as part of bug reports. +* Set custom path from where to load classes: `-classpath ` and `-buildpath `. +* You can use the `SCALAC_OPTS` environment variable to pass command line options to the compiler. +* You can use the `JAVA_OPTS` environment variable to pass command line options to the runner (e.g., for `run/jvm` tests). +* The launch scripts run partest as follows: + + scala -cp scala.tools.partest.nest.NestRunner + + Partest classes from a `quick` build, e.g., can be found in `./build/quick/classes/partest/`. + + Partest will tell you where it loads compiler/library classes from by adding the `partest.debug` property: + + scala -Dpartest.debug=true -cp scala.tools.partest.nest.NestRunner + + + +## ScalaCheck tests + +Tests that depend on [ScalaCheck](https://github.com/rickynils/scalacheck) can be added under folder `./test/files/scalacheck`. A sample test: + + import org.scalacheck._ + import Prop._ + + object Test { + val prop_ConcatLists = property{ (l1: ListInt, l2: ListInt) => + l1.size + l2.size == (l1 ::: l2).size + } + + val tests = List(("prop_ConcatLists", prop_ConcatLists)) + } + +## Troubleshooting + +### Windows + +Some tests might fail because line endings in the `.check` files and the produced results do not match. In that case, set either + + git config core.autocrlf false + +or + + git config core.autocrlf input \ No newline at end of file diff --git a/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md b/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md new file mode 100644 index 0000000000..fbdccb279c --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md @@ -0,0 +1,182 @@ +--- +layout: famearchive +title: Contributors of February 2013 +fame-year: 2013 +fame-month: 2 +fame-month-str: February +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 38 + linesAdded: 2578 + linesDeleted: 2114 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 31 + linesAdded: 7110 + linesDeleted: 9889 + rank: 2 + newContributor: false + - username: JamesIry + gravatar: https://secure.gravatar.com/avatar/72b1a6b08fd8bb3068bd281974461c3e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 23 + linesAdded: 1673 + linesDeleted: 740 + rank: 3 + newContributor: false + - username: paulp + gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 10 + linesAdded: 1466 + linesDeleted: 1097 + rank: 4 + newContributor: false + - username: gkossakowski + gravatar: https://secure.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 4 + linesDeleted: 1 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 29 + linesAdded: 2108 + linesDeleted: 724 + rank: 1 + newContributor: false + - username: lrytz + gravatar: https://secure.gravatar.com/avatar/d807dd5133a6fc14c821178e53c34091?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 3 + linesAdded: 213 + linesDeleted: 31 + rank: 2 + newContributor: false + - username: heathermiller + gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 2 + linesDeleted: 1333 + rank: 3 + newContributor: false + - username: VladUreche + gravatar: https://secure.gravatar.com/avatar/5658ed1cea041577df360fd663c570fa?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 86 + linesDeleted: 32 + rank: 3 + newContributor: false + - username: axel22 + gravatar: https://secure.gravatar.com/avatar/e9bdb4fada7e635fffb5e6f26e70cd1d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 9 + linesDeleted: 106 + rank: 4 + newContributor: false + - category: Community + authors: + - username: vigdorchik + gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 4 + linesAdded: 471 + linesDeleted: 410 + rank: 1 + newContributor: false + - username: vy + gravatar: https://secure.gravatar.com/avatar/bb8d759cf4230bcaa238fac0018af80c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 21 + linesDeleted: 21 + rank: 2 + newContributor: true + - username: u-abramchuk + gravatar: https://secure.gravatar.com/avatar/c70eb13a60582914b51966fdc1a18536?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 47 + linesDeleted: 13 + rank: 2 + newContributor: true + - username: viktorklang + gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 38 + linesDeleted: 10 + rank: 2 + newContributor: false + - username: jozic + gravatar: https://secure.gravatar.com/avatar/41fbba6d48e543a7dfa8c231b2d0286d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 8 + linesDeleted: 8 + rank: 3 + newContributor: true + - username: rnix + gravatar: https://secure.gravatar.com/avatar/0dcbf348a28f2295164c53a40d48a958?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 3 + newContributor: true + - username: mergeconflict + gravatar: https://secure.gravatar.com/avatar/9a58682929b182af7b01f0180e072fcd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 22 + linesDeleted: 15 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 26 + linesDeleted: 0 + rank: 3 + newContributor: false + - username: ViniciusMiana + gravatar: https://secure.gravatar.com/avatar/e05e828a92458c4075b498c7d2957ddd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 16 + linesDeleted: 0 + rank: 3 + newContributor: false + - username: mt2309 + gravatar: https://secure.gravatar.com/avatar/f70e1d36b9c1b9290d31e810fa1502f3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 3 + linesDeleted: 0 + rank: 3 + newContributor: false + - username: Blaisorblade + gravatar: https://secure.gravatar.com/avatar/a3a676c96a88feb813010e67af012ca0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 0 + linesDeleted: 3 + rank: 3 + newContributor: false + - username: rkuhn + gravatar: https://secure.gravatar.com/avatar/262b1ab25e66b1e15a48fa3f68703aad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 3 + linesDeleted: 2 + rank: 3 + newContributor: false + - username: khernyo + gravatar: https://secure.gravatar.com/avatar/0e0d750a49edb4b16e8ec83816ea356e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 25 + linesDeleted: 1 + rank: 3 + newContributor: false + - username: som-snytt + gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 3 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md b/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md new file mode 100644 index 0000000000..51b489e84c --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md @@ -0,0 +1,126 @@ +--- +layout: famearchive +title: Contributors of March 2013 +fame-year: 2013 +fame-month: 3 +fame-month-str: March +fame-categories: + - category: Typesafe + authors: + - username: paulp + gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 51 + linesAdded: 38101 + linesDeleted: 37753 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 45 + linesAdded: 4824 + linesDeleted: 3092 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 26 + linesAdded: 2632 + linesDeleted: 5012 + rank: 3 + newContributor: false + - username: JamesIry + gravatar: https://secure.gravatar.com/avatar/72b1a6b08fd8bb3068bd281974461c3e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 7 + linesAdded: 1218 + linesDeleted: 171 + rank: 4 + newContributor: false + - username: dragos + gravatar: https://secure.gravatar.com/avatar/fbd384e9626d28d1648f023a5e22672f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 169 + linesDeleted: 2 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 7 + linesAdded: 212 + linesDeleted: 104 + rank: 1 + newContributor: false + - category: Community + authors: + - username: vigdorchik + gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 9 + linesAdded: 714 + linesDeleted: 619 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 7 + linesAdded: 2103 + linesDeleted: 2068 + rank: 2 + newContributor: false + - username: soc + gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 5 + linesAdded: 162 + linesDeleted: 96 + rank: 3 + newContributor: false + - username: kzys + gravatar: https://secure.gravatar.com/avatar/7828b45f8396aa361d85cead01fd99ca?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 5 + linesAdded: 129 + linesDeleted: 41 + rank: 3 + newContributor: false + - username: Blaisorblade + gravatar: https://secure.gravatar.com/avatar/a3a676c96a88feb813010e67af012ca0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 3 + linesAdded: 72 + linesDeleted: 20 + rank: 4 + newContributor: false + - username: mesagie + gravatar: https://secure.gravatar.com/avatar/6e7dc465ed74b5250147168a0178d91c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 4 + linesDeleted: 5 + rank: 5 + newContributor: true + - username: srinivasreddy + gravatar: https://secure.gravatar.com/avatar/1f542afb3240b82fdf08632bf6cd5384?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 5 + newContributor: true + - username: mergeconflict + gravatar: https://secure.gravatar.com/avatar/9a58682929b182af7b01f0180e072fcd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 22 + linesDeleted: 15 + rank: 5 + newContributor: false + - username: sschaef + gravatar: https://secure.gravatar.com/avatar/dd80aab570fdb5f37e62de5422f44ed4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 13 + linesDeleted: 0 + rank: 5 + newContributor: false + - username: chuvoks + gravatar: https://secure.gravatar.com/avatar/415869059046602f37803890bd992fc0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 45 + linesDeleted: 24 + rank: 5 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md b/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md new file mode 100644 index 0000000000..ca59c6cdfb --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md @@ -0,0 +1,91 @@ +--- +layout: famearchive +title: Contributors of April 2013 +fame-year: 2013 +fame-month: 4 +fame-month-str: April +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 36 + linesAdded: 1274 + linesDeleted: 776 + rank: 1 + newContributor: false + - username: paulp + gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 26 + linesAdded: 1848 + linesDeleted: 1647 + rank: 2 + newContributor: false + - username: vigdorchik + gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 6 + linesAdded: 136 + linesDeleted: 186 + rank: 3 + newContributor: false + - username: adriaanm + gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 3 + linesDeleted: 1 + rank: 4 + newContributor: false + - category: EPFL + authors: + - username: magarciaEPFL + gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 9 + linesAdded: 147 + linesDeleted: 149 + rank: 1 + newContributor: false + - username: heathermiller + gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 2 + newContributor: false + - username: hubertp + gravatar: https://secure.gravatar.com/avatar/e0dec64f93778e5c689c3873078a406f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 54 + linesDeleted: 46 + rank: 2 + newContributor: false + - category: Community + authors: + - username: som-snytt + gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 11 + linesAdded: 1000 + linesDeleted: 509 + rank: 1 + newContributor: false + - username: soc + gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 3 + linesAdded: 37 + linesDeleted: 22 + rank: 2 + newContributor: false + - username: huitseeker + gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 15 + linesDeleted: 19 + rank: 3 + newContributor: false + - username: namin + gravatar: https://secure.gravatar.com/avatar/f2adf4eb83e1221b519d23bf0bdc98d2?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 6 + linesDeleted: 11 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md new file mode 100644 index 0000000000..98fad6e629 --- /dev/null +++ b/contribute/scala-fame.md @@ -0,0 +1,14 @@ +--- +layout: page +title: Scala Contribuitor Hall of Fame +--- +# Scala Hall of Fame + +A big thank you to everyone who contributed to: + - [the Scala library and compiler](https://github.com/scala/scala/contributors) + - [the Scala documentation website](https://github.com/scala/scala.github.com/contributors) + +{% for data in site.categories.scala-fame-data limit:1 %} + {% assign famedata = data %} + {% include render-scala-fame.html %} +{% endfor %} From 8559ddab546a4548f3cca197793f3809e3fe8d7f Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 30 May 2013 13:26:48 +0100 Subject: [PATCH 0021/1704] Going back to having a 'Contribute' section, take 2 --- contribute/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/index.md b/contribute/index.md index c3be3be994..6e07e5b84c 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -1,6 +1,6 @@ --- layout: page -title: Get Involved +title: Contribute --- # Contributing to the Scala project From 96c6854e2422b5a813d80ac737e4f58958a17c71 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Wed, 5 Jun 2013 11:50:04 +0200 Subject: [PATCH 0022/1704] Making contribute page full width --- contribute/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/index.md b/contribute/index.md index 6e07e5b84c..9b6024dcf9 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -1,5 +1,5 @@ --- -layout: page +layout: page-full-width title: Contribute --- # Contributing to the Scala project From 2ddf889be5bad81e58ee391e1cf2cee85d3c5b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 6 Jun 2013 09:09:53 +0200 Subject: [PATCH 0023/1704] Added hall of fame of May 2013. --- .../_posts/2013-06-01-scala-fame-2013-05.md | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md diff --git a/contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md b/contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md new file mode 100644 index 0000000000..2829d6a4aa --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-06-01-scala-fame-2013-05.md @@ -0,0 +1,105 @@ +--- +layout: famearchive +title: Contributors of May 2013 +fame-year: 2013 +fame-month: 5 +fame-month-str: May +fame-categories: + - category: Typesafe + authors: + - username: paulp + gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 54 + linesAdded: 3465 + linesDeleted: 2035 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 13 + linesAdded: 525 + linesDeleted: 66 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 5 + linesAdded: 245 + linesDeleted: 81 + rank: 3 + newContributor: false + - username: viktorklang + gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 51 + linesDeleted: 32 + rank: 4 + newContributor: false + - username: phaller + gravatar: https://secure.gravatar.com/avatar/3b84657fdb075382e3781310ca8a9a70?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 1965 + linesDeleted: 1086 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 19 + linesAdded: 742 + linesDeleted: 468 + rank: 1 + newContributor: false + - username: magarciaEPFL + gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 11 + linesAdded: 1214 + linesDeleted: 1069 + rank: 2 + newContributor: false + - username: heathermiller + gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 10 + linesDeleted: 7 + rank: 3 + newContributor: false + - category: Community + authors: + - username: soc + gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 12 + linesAdded: 254 + linesDeleted: 1135 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 6 + linesAdded: 454 + linesDeleted: 403 + rank: 2 + newContributor: false + - username: vigdorchik + gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 42 + linesDeleted: 32 + rank: 3 + newContributor: false + - username: dcsobral + gravatar: https://secure.gravatar.com/avatar/6d43da5df0e52fc31c55e6a227bb23f4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 6 + linesDeleted: 2 + rank: 4 + newContributor: false + - username: kzys + gravatar: https://secure.gravatar.com/avatar/7828b45f8396aa361d85cead01fd99ca?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 25 + linesDeleted: 9 + rank: 4 + newContributor: false +--- From 81e54742affd89a43d638b815593089857f277cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 6 Jun 2013 09:17:01 +0200 Subject: [PATCH 0024/1704] 3-column layout for hall of fame pages. --- contribute/scala-fame.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index 98fad6e629..084c120e27 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -1,5 +1,5 @@ --- -layout: page +layout: page-full-width title: Scala Contribuitor Hall of Fame --- # Scala Hall of Fame From 5a8dd183d57819c319f69e3d92ee73aabf6c934f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 6 Jun 2013 09:28:28 +0200 Subject: [PATCH 0025/1704] Added namin in EPFL people. --- .../_posts/2013-03-01-scala-fame-2013-02.md | 63 +++++----- .../_posts/2013-04-01-scala-fame-2013-03.md | 63 ++++++---- .../_posts/2013-05-01-scala-fame-2013-04.md | 115 ++++++++++++------ 3 files changed, 152 insertions(+), 89 deletions(-) diff --git a/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md b/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md index fbdccb279c..376563abce 100644 --- a/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md +++ b/contribute/scala-fame-data/_posts/2013-03-01-scala-fame-2013-02.md @@ -35,20 +35,41 @@ fame-categories: linesDeleted: 1097 rank: 4 newContributor: false + - username: viktorklang + gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 3 + linesAdded: 84 + linesDeleted: 53 + rank: 5 + newContributor: false - username: gkossakowski gravatar: https://secure.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 2 linesAdded: 4 linesDeleted: 1 - rank: 5 + rank: 6 + newContributor: false + - username: huitseeker + gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 26 + linesDeleted: 0 + rank: 7 + newContributor: false + - username: rkuhn + gravatar: https://secure.gravatar.com/avatar/262b1ab25e66b1e15a48fa3f68703aad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 3 + linesDeleted: 2 + rank: 7 newContributor: false - category: EPFL authors: - username: xeno-by gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 29 - linesAdded: 2108 - linesDeleted: 724 + commits: 36 + linesAdded: 3379 + linesDeleted: 1635 rank: 1 newContributor: false - username: lrytz @@ -72,6 +93,13 @@ fame-categories: linesDeleted: 32 rank: 3 newContributor: false + - username: hubertp + gravatar: https://secure.gravatar.com/avatar/e0dec64f93778e5c689c3873078a406f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 2 + linesAdded: 297 + linesDeleted: 100 + rank: 3 + newContributor: false - username: axel22 gravatar: https://secure.gravatar.com/avatar/e9bdb4fada7e635fffb5e6f26e70cd1d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 @@ -102,13 +130,6 @@ fame-categories: linesDeleted: 13 rank: 2 newContributor: true - - username: viktorklang - gravatar: https://secure.gravatar.com/avatar/4f674b2e79f1663864ff78e07ce4c8a8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 2 - linesAdded: 38 - linesDeleted: 10 - rank: 2 - newContributor: false - username: jozic gravatar: https://secure.gravatar.com/avatar/41fbba6d48e543a7dfa8c231b2d0286d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 @@ -130,10 +151,10 @@ fame-categories: linesDeleted: 15 rank: 3 newContributor: false - - username: huitseeker - gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + - username: mt2309 + gravatar: https://secure.gravatar.com/avatar/f70e1d36b9c1b9290d31e810fa1502f3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 - linesAdded: 26 + linesAdded: 3 linesDeleted: 0 rank: 3 newContributor: false @@ -144,13 +165,6 @@ fame-categories: linesDeleted: 0 rank: 3 newContributor: false - - username: mt2309 - gravatar: https://secure.gravatar.com/avatar/f70e1d36b9c1b9290d31e810fa1502f3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 3 - linesDeleted: 0 - rank: 3 - newContributor: false - username: Blaisorblade gravatar: https://secure.gravatar.com/avatar/a3a676c96a88feb813010e67af012ca0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 @@ -158,13 +172,6 @@ fame-categories: linesDeleted: 3 rank: 3 newContributor: false - - username: rkuhn - gravatar: https://secure.gravatar.com/avatar/262b1ab25e66b1e15a48fa3f68703aad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 3 - linesDeleted: 2 - rank: 3 - newContributor: false - username: khernyo gravatar: https://secure.gravatar.com/avatar/0e0d750a49edb4b16e8ec83816ea356e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 diff --git a/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md b/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md index 51b489e84c..0feb88618a 100644 --- a/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md +++ b/contribute/scala-fame-data/_posts/2013-04-01-scala-fame-2013-03.md @@ -16,16 +16,16 @@ fame-categories: newContributor: false - username: retronym gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 45 - linesAdded: 4824 + commits: 46 + linesAdded: 4908 linesDeleted: 3092 rank: 2 newContributor: false - username: adriaanm gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 26 - linesAdded: 2632 - linesDeleted: 5012 + commits: 27 + linesAdded: 2675 + linesDeleted: 5043 rank: 3 newContributor: false - username: JamesIry @@ -46,11 +46,18 @@ fame-categories: authors: - username: xeno-by gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 7 - linesAdded: 212 - linesDeleted: 104 + commits: 11 + linesAdded: 295 + linesDeleted: 129 rank: 1 newContributor: false + - username: magarciaEPFL + gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 6 + linesAdded: 89 + linesDeleted: 44 + rank: 2 + newContributor: false - category: Community authors: - username: vigdorchik @@ -69,8 +76,8 @@ fame-categories: newContributor: false - username: soc gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 5 - linesAdded: 162 + commits: 6 + linesAdded: 166 linesDeleted: 96 rank: 3 newContributor: false @@ -79,48 +86,62 @@ fame-categories: commits: 5 linesAdded: 129 linesDeleted: 41 - rank: 3 + rank: 4 newContributor: false - username: Blaisorblade gravatar: https://secure.gravatar.com/avatar/a3a676c96a88feb813010e67af012ca0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 3 linesAdded: 72 linesDeleted: 20 - rank: 4 + rank: 5 newContributor: false - - username: mesagie - gravatar: https://secure.gravatar.com/avatar/6e7dc465ed74b5250147168a0178d91c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + - username: starblood + gravatar: https://secure.gravatar.com/avatar/bd3514b960213c6a7ff5fd3186675429?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 - linesAdded: 4 - linesDeleted: 5 - rank: 5 + linesAdded: 1 + linesDeleted: 1 + rank: 6 newContributor: true - username: srinivasreddy gravatar: https://secure.gravatar.com/avatar/1f542afb3240b82fdf08632bf6cd5384?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 linesAdded: 1 linesDeleted: 1 - rank: 5 + rank: 6 + newContributor: true + - username: mesagie + gravatar: https://secure.gravatar.com/avatar/6e7dc465ed74b5250147168a0178d91c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 4 + linesDeleted: 5 + rank: 6 newContributor: true - username: mergeconflict gravatar: https://secure.gravatar.com/avatar/9a58682929b182af7b01f0180e072fcd?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 linesAdded: 22 linesDeleted: 15 - rank: 5 + rank: 6 newContributor: false - username: sschaef gravatar: https://secure.gravatar.com/avatar/dd80aab570fdb5f37e62de5422f44ed4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 linesAdded: 13 linesDeleted: 0 - rank: 5 + rank: 6 + newContributor: false + - username: ihji + gravatar: https://secure.gravatar.com/avatar/866a258f0c9fa9529aa47ebd96fe599c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 33 + linesDeleted: 6 + rank: 6 newContributor: false - username: chuvoks gravatar: https://secure.gravatar.com/avatar/415869059046602f37803890bd992fc0?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 linesAdded: 45 linesDeleted: 24 - rank: 5 + rank: 6 newContributor: false --- diff --git a/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md b/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md index ca59c6cdfb..e2cd419e9b 100644 --- a/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md +++ b/contribute/scala-fame-data/_posts/2013-05-01-scala-fame-2013-04.md @@ -7,85 +7,120 @@ fame-month-str: April fame-categories: - category: Typesafe authors: - - username: retronym - gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 36 - linesAdded: 1274 - linesDeleted: 776 - rank: 1 - newContributor: false - username: paulp gravatar: https://secure.gravatar.com/avatar/c25d674f69bb9c155f265a7482712be4?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 26 - linesAdded: 1848 - linesDeleted: 1647 + commits: 38 + linesAdded: 3745 + linesDeleted: 2973 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://secure.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 37 + linesAdded: 1309 + linesDeleted: 777 rank: 2 newContributor: false - - username: vigdorchik - gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 6 - linesAdded: 136 - linesDeleted: 186 + - username: huitseeker + gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 3 + linesAdded: 16 + linesDeleted: 24 rank: 3 newContributor: false - username: adriaanm gravatar: https://secure.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 1 - linesAdded: 3 - linesDeleted: 1 + commits: 2 + linesAdded: 35 + linesDeleted: 82 rank: 4 newContributor: false - category: EPFL authors: - username: magarciaEPFL gravatar: https://secure.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 9 - linesAdded: 147 - linesDeleted: 149 + commits: 11 + linesAdded: 238 + linesDeleted: 204 rank: 1 newContributor: false + - username: xeno-by + gravatar: https://secure.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 4 + linesAdded: 208 + linesDeleted: 121 + rank: 2 + newContributor: false + - username: namin + gravatar: https://secure.gravatar.com/avatar/f2adf4eb83e1221b519d23bf0bdc98d2?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 6 + linesDeleted: 11 + rank: 3 + newContributor: false - username: heathermiller gravatar: https://secure.gravatar.com/avatar/54d0b6494927c0040b96ed327202e8dc?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 linesAdded: 1 linesDeleted: 1 - rank: 2 + rank: 3 newContributor: false - username: hubertp gravatar: https://secure.gravatar.com/avatar/e0dec64f93778e5c689c3873078a406f?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 linesAdded: 54 linesDeleted: 46 - rank: 2 + rank: 3 newContributor: false - category: Community authors: - username: som-snytt gravatar: https://secure.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 11 - linesAdded: 1000 - linesDeleted: 509 + commits: 16 + linesAdded: 2561 + linesDeleted: 1150 rank: 1 newContributor: false + - username: vigdorchik + gravatar: https://secure.gravatar.com/avatar/d497b1b875b7f68414daff74485b8501?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 9 + linesAdded: 235 + linesDeleted: 321 + rank: 2 + newContributor: false - username: soc gravatar: https://secure.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png - commits: 3 - linesAdded: 37 - linesDeleted: 22 - rank: 2 + commits: 4 + linesAdded: 38 + linesDeleted: 26 + rank: 3 newContributor: false - - username: huitseeker - gravatar: https://secure.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + - username: ihji + gravatar: https://secure.gravatar.com/avatar/866a258f0c9fa9529aa47ebd96fe599c?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 2 - linesAdded: 15 - linesDeleted: 19 - rank: 3 + linesAdded: 13 + linesDeleted: 2 + rank: 4 newContributor: false - - username: namin - gravatar: https://secure.gravatar.com/avatar/f2adf4eb83e1221b519d23bf0bdc98d2?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + - username: bjornregnell + gravatar: https://secure.gravatar.com/avatar/b1d20c98b0eeb72829523144b9174ca2?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png commits: 1 - linesAdded: 6 - linesDeleted: 11 - rank: 4 + linesAdded: 3 + linesDeleted: 2 + rank: 5 + newContributor: true + - username: aldenml + gravatar: https://secure.gravatar.com/avatar/bbf061bd484515c156f662a65820c226?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 4 + linesDeleted: 4 + rank: 5 + newContributor: true + - username: eed3si9n + gravatar: https://secure.gravatar.com/avatar/8f41595db400be30176f6f04630c2842?s=60&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png + commits: 1 + linesAdded: 304 + linesDeleted: 6 + rank: 5 newContributor: false --- From 5056003f15841f8f8362b0240f141e2b0aced0a2 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Sat, 8 Jun 2013 00:45:43 +0200 Subject: [PATCH 0026/1704] Styling contents and other cleanups --- contribute/bug-reporting-guide.md | 2 -- contribute/hacker-guide.md | 5 ++--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index e286ce2002..f04503f968 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -3,8 +3,6 @@ layout: page title: Bug Reporting --- -# Reporting Bugs to the Scala Project - The Scala project tracker is located at [http://issues.scala-lang.org](http://issues.scala-lang.org). Before you submit a bug make sure that it is certainly a bug by following instructions in *Is it a Bug?*. ## Is it a Bug? diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 758bb17115..484d3036a1 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -1,10 +1,9 @@ --- layout: page title: Scala hacker guide +by: Eugene Burmako --- - -**Eugene Burmako** - +
    This guide is intended to help you get from an idea of fixing a bug or implementing a new feature into a nightly Scala build, and, ultimately, to a production release of Scala incorporating your idea. This guide covers the entire process, from the conception of your idea or bugfix to the point where it is merged into Scala. Throughout, we will use a running example of an idea or bugfix one might wish to contribute. From 43b72d980cd057dc11dafb6f73d37bbad1f6e491 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Sat, 8 Jun 2013 20:32:38 +0200 Subject: [PATCH 0027/1704] Formatting fix to hackers guide --- contribute/hacker-guide.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 484d3036a1..d3ee84456f 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -287,9 +287,9 @@ run `ant test` to go through the entire test suite (30+ minutes) or use wildcard After development is finished, it's time to publish the code and submit your patch for discussion and potential inclusion into Scala. In a nutshell, this involves: - 1. making sure that your code and commit messages are of high quality, - 2. clicking a few buttons in the Github interface, - 3. assigning one or more reviewers which will look through your pull request. +1. making sure that your code and commit messages are of high quality, +2. clicking a few buttons in the Github interface, +3. assigning one or more reviewers which will look through your pull request. Let's go into each of these points in more detail. @@ -298,9 +298,8 @@ In a nutshell, this involves: The [Git Basics](http://git-scm.com/book/en/Git-Basics) chapter in the Git online book covers most of the basic workflow during this stage. There are two things you should know here: - 1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. - - 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. +1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. +2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. From 05854a11c3be0fbd2dfb0f10b27d5fc89cdffcac Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Fri, 12 Jul 2013 12:25:39 +0200 Subject: [PATCH 0028/1704] Moving community tickets back to contribute section --- contribute/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contribute/index.md b/contribute/index.md index 9b6024dcf9..7338d06c2c 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -93,6 +93,10 @@ the Scala project source tree. The [hacker guide](hacker-guide.html) will explai
    +## Community Tickets + +
    + diff --git a/contribute/index.md b/contribute/index.md index 656109cf02..c7b822ae04 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -1,199 +1,19 @@ --- -layout: page-full-width +layout: page title: Contribute --- -# Contributing to the Scala project -The Scala programming language is an open source project with a very -diverse community, where people from all over the world contribute their work, -with everyone benefitting from friendly help and advice, and -kindly helping others in return. So why not join the Scala community and help -everyone make things better? +## How to help? -
    -
    -
    -

    Scala Internals

    -

    Get a peek into the inners of the Scala compiler.

    -
    -
    -

    Report an issue

    -

    File a bug report or a feature request.

    -
    -
    -

    Documentation

    -

    Improve the documentation itself.

    -
    -
    +### Reporting bugs -
    -
    -

    Write a SIP

    -

    Write a proposal for extending/improving Scala.

    -
    -
    -

    Hacker's guide

    -

    Learn to write good code and improve your chances of contributing to the Scala galaxy.

    -
    -
    -

    Community issues

    -

    Get cracking on some easy to approach issues.

    -
    -
    +See our [bug reporting guide](./bug-reporting-guide.html) to learn +how to efficiently report a bug. -
    -
    -

    Unassigned issues

    -

    Get serious with some more complex issues.

    -
    -
    -

    Hall of Fame

    -

    Track your rockstar status in the community.

    -
    -
    -

    Test your contributions

    -

    Learn how to run the Scala test suite.

    -
    -
    -
    +### Patch the core +Want to dive into the hardcore business? Check out our +[selection of community tickets](./community-tickets.html), +which are good starting points to contributing. - -### Why contribute a patch to Scala? - -Just to name a few common reasons: - - contributing a patch is the best way to make sure your desired changes will be available in the next Scala version - - Scala is written in Scala, so going through the source code and patching it will improve your Scala-fu - - last but not least, you will make it into the [Scala Contributor Hall of Fame](scala-fame.html). - -
    - -The main Scala project consists of the standard Scala library, the Scala reflection and macros library, -the Scala compiler and the Scaladoc tool. This means there's plenty to choose from when deciding what to work on. -Typically the scaladoc tool provides a low entry point for new committers, so it is a good first step into contributing. - -On the Scala bug tracker you will find many bugs that are [marked as good starting points to contributing ("community" bugs)](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12111) or [that are not currently assigned](https://issues.scala-lang.org/secure/IssueNavigator.jspa?requestId=12112) and that you could pick up. Once you decided on a ticket to look at, see the next step on how to proceed further. - -If you are interested in contributing code, we ask you to sign the -[Scala Contributor License Agreement](http://typesafe.com/contribute/cla/scala), -which allows us to ensure that all code submitted to the project is -unencumbered by copyrights or patents. - -
    - -### I have this idea that I'd like to add to Scala, how do I start? - -The first step to making a change is to discuss it with the community at large, to make sure everyone agrees on the idea -and on the implementation plan. Starting point ("community") bugs are usually uncontroversial, so you can jump right -ahead to hacking the scala source tree and filing a pull request. For larger changes it is best to announce the change -on the [scala-internals](http://groups.google.com/group/scala-internals) mailing list and get developer feedback. For really complex changes, a [Scala Improvement Process (SIP)](http://docs.scala-lang.org/sips/) document might be required, but the first step is always to discuss it on the mailing list. - -Contributions, big or small, simple or complex, controversial or undisputed, need to materialize as patches against -the Scala project source tree. The [hacker guide](hacker-guide.html) will explain how to materialize your idea into a full-fledged pull request against the Scala code base. - - +More info in our [contributing guide](./guide.html). From 22dc8088db52f999a4290dc3455e1231557b1aae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Wed, 17 Jul 2013 17:31:21 +0200 Subject: [PATCH 0032/1704] A bit of rewording on the contribute page. --- contribute/index.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/contribute/index.md b/contribute/index.md index c7b822ae04..3cd58f8631 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -10,10 +10,16 @@ title: Contribute See our [bug reporting guide](./bug-reporting-guide.html) to learn how to efficiently report a bug. -### Patch the core +### Help with the documentation + +An easy but very important way to contribute to Scala is to +[help with the documentation](http://docs.scala-lang.org/contribute.html). + +### Compiler and other tools Want to dive into the hardcore business? Check out our [selection of community tickets](./community-tickets.html), -which are good starting points to contributing. +which are good starting points to contributing to the compiler and +surrounding tools, like ScalaDoc. More info in our [contributing guide](./guide.html). From 684bb8b49fdd1baf968b04b74395adccd1e8962a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 18 Jul 2013 11:03:40 +0200 Subject: [PATCH 0033/1704] Dropped 3 boxes on the Contribute guide. * SIP * Unassigned tickets * Partest The two first are not supposed to be entry points, and they still have a link further down in the text. Partest is mentioned in the Hacker's guide. And there is no point in using partest without first going through the hacker's guide. --- contribute/guide.md | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index 28adc54e6b..4841496253 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -27,32 +27,17 @@ everyone make things better?
    -

    Write a SIP

    -

    Write a proposal for extending/improving Scala.

    +

    Community issues

    +

    Get cracking on some easy to approach issues.

    Hacker's guide

    Learn to write good code and improve your chances of contributing to the Scala galaxy.

    -
    -

    Community issues

    -

    Get cracking on some easy to approach issues.

    -
    -
    - -
    -
    -

    Unassigned issues

    -

    Get serious with some more complex issues.

    -

    Hall of Fame

    Track your rockstar status in the community.

    -
    -

    Test your contributions

    -

    Learn how to run the Scala test suite.

    -
    From 13462b997cddbc48e8392f6324fafb2a30b678b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 18 Jul 2013 11:10:07 +0200 Subject: [PATCH 0034/1704] Moved the contribute intro text to contribute/. Before it was in contribute/guide.html, but now contribute/ is the landing page for contributions. --- contribute/guide.md | 6 ------ contribute/index.md | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contribute/guide.md b/contribute/guide.md index 4841496253..ac27e53719 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -3,12 +3,6 @@ layout: page-full-width title: Contributing guide --- -The Scala programming language is an open source project with a very -diverse community, where people from all over the world contribute their work, -with everyone benefitting from friendly help and advice, and -kindly helping others in return. So why not join the Scala community and help -everyone make things better? -
    diff --git a/contribute/index.md b/contribute/index.md index 3cd58f8631..d2402cf4d2 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -3,6 +3,12 @@ layout: page title: Contribute --- +The Scala programming language is an open source project with a very +diverse community, where people from all over the world contribute their work, +with everyone benefitting from friendly help and advice, and +kindly helping others in return. So why not join the Scala community and help +everyone make things better? + ## How to help? ### Reporting bugs From 966a0f22e50d6cf9a2e2f0ac4cf042d369d69490 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Tue, 30 Jul 2013 10:01:55 -0700 Subject: [PATCH 0035/1704] Removing double title on the hall of fame --- contribute/scala-fame.md | 1 - 1 file changed, 1 deletion(-) diff --git a/contribute/scala-fame.md b/contribute/scala-fame.md index 084c120e27..81bb76ee3a 100644 --- a/contribute/scala-fame.md +++ b/contribute/scala-fame.md @@ -2,7 +2,6 @@ layout: page-full-width title: Scala Contribuitor Hall of Fame --- -# Scala Hall of Fame A big thank you to everyone who contributed to: - [the Scala library and compiler](https://github.com/scala/scala/contributors) From 688d5568e0a74ea8a7b83f3d56f08378fc1eb516 Mon Sep 17 00:00:00 2001 From: Simon Ochsenreither Date: Wed, 31 Jul 2013 01:34:52 +0200 Subject: [PATCH 0036/1704] =?UTF-8?q?Add=20section=20=E2=80=9CTest?= =?UTF-8?q?=E2=80=9D=20and=20=E2=80=9CMerge=E2=80=9D,=20rename=20=E2=80=9C?= =?UTF-8?q?Discuss=E2=80=9D=20to=20=E2=80=9CReview=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contribute/hacker-guide.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index d3ee84456f..c471baceca 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -221,8 +221,8 @@ Tools like Scaladoc also welcome contributions. Unfortunately these smaller proj ### Interlude -To fix [the bug we're interested in](https://issues.scala-lang.org/browse/SI-6725). Let's say we've tracked the `StringContext.f` interpolator -down to a macro implemented in `MacroImplementations.scala`, and there we notice that the interpolator only processes conversions, +To fix [the bug we're interested in](https://issues.scala-lang.org/browse/SI-6725) we've tracked the `StringContext.f` interpolator +down to a macro implemented in `MacroImplementations.scala` There we notice that the interpolator only processes conversions, but not tokens like `%n`. Looks like an easy fix. 18:44 ~/Projects/scala/sandbox (ticket/6725)$ git diff @@ -265,6 +265,17 @@ After applying the fix and running `ant`, our simple test case in `sandbox/Test. 1 1 // no longer getting the %n here - it got transformed into a newline +### Test + +To guard your change against accidental breakage in the future, it is important to add tests. +I have already written one test earlier, so that's a good start but not enough! Apart from obvious usages of our new functionality, we need to cover corner-cases as well. + +Adding tests to the test suite is as easy as moving them to the appropriate directory: + +* Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/master/test/files/pos) +* Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/master/test/files/neg) +* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/master/test/files/run) + ### Verify Now to make sure that my fix doesn't break anything I need to run the test suite using the `partest` tool we wrote to test Scala. @@ -326,10 +337,15 @@ need to sign the contributor license agreement, which [can be done online](http:
    Submit a pull request
    -### Discuss +### Review After the pull request has been submitted, you need to pick a reviewer (usually the person you've contacted in the beginning of your workflow) and be ready to elaborate and adjust your patch if necessary. In this example, we picked Martin, because we had such a nice chat on the mailing list:
    SAssign the reviewer
    +## Merge + +After your reviewer is happy with your code (usually signalled by a LGTM — “Looks good to me”), your job is done. +Note that there can be a gap between a successful review and the merge, because not every reviewer has merge rights. In that case, someone else from the team will pick up your pull request and merge it. +So don't be confused if your reviewer says “LGTM”, but your code doesn't get merged immediately. From 29705fcb98500b5c2c586cbf8f06c411a1b1d53e Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 31 Jul 2013 08:10:21 -0400 Subject: [PATCH 0037/1704] minor copyediting to hacker guide --- contribute/hacker-guide.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index c471baceca..28ea69bc3f 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -26,11 +26,11 @@ Sometimes it's appealing to hack alone and not to have to interact with others o this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes new features start out as an idea or an experiment posted on one of our mailing lists [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel -about things you want to implement. People proficient is certain areas of Scala usually monitor mailing lists, so you'll often get some help +Typically bug fixes and new features start out as an idea or an experiment posted on one of our mailing lists [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel +about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. -This is the list of language features/libraries along with their maintainers's full names and github usernames: +This is the list of language features/libraries along with their maintainers's full names and GitHub usernames: {% include maintainers.html %} @@ -65,7 +65,7 @@ If you're new to Git, don't be afraid of messing up-- there is no way you can co If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), -which covers some of the things that will follow below. Then, _clone_ your repository (_i.e._ pull a copy from github to your local machine) by running the following on the command line: +which covers some of the things that will follow below. Then, _clone_ your repository (_i.e._ pull a copy from GitHub to your local machine) by running the following on the command line: 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala Cloning into 'scala'... @@ -76,7 +76,7 @@ which covers some of the things that will follow below. Then, _clone_ your repos Resolving deltas: 100% (182155/182155), done. This will create a local directory called `scala`, which contains a clone of your own copy of our repository. The changes that you make -in this directory can be propagated back to your copy hosted on github and, ultimately, pushed into Scala when your patch is ready. +in this directory can be propagated back to your copy hosted on GitHub and, ultimately, pushed into Scala when your patch is ready. ### Branch @@ -299,10 +299,10 @@ After development is finished, it's time to publish the code and submit your pat In a nutshell, this involves: 1. making sure that your code and commit messages are of high quality, -2. clicking a few buttons in the Github interface, -3. assigning one or more reviewers which will look through your pull request. +2. clicking a few buttons in the GitHub interface, +3. assigning one or more reviewers who will look through your pull request. - Let's go into each of these points in more detail. +Let's go into each of these points in more detail. ### Commit @@ -312,7 +312,7 @@ There are two things you should know here: 1. Commit messages are often the only way to understand the intentions of authors of code written a few years ago. Thus, writing a quality is of utmost importance. The more context you provide for the change you've introduced, the larger the chance that some future maintainer understand your intentions. Consult [the pull request policy](https://github.com/scala/scala/wiki/Pull-Request-Policy) for more information about the desired style of your commits. 2. Keeping Scala's git history clean is also important. Therefore we won't accept pull requests for bug fixes that have more than one commit. For features, it is okay to have several commits, but all tests need to pass after every single commit. To clean up your commit structure, you want to [rewrite history](http://git-scm.com/book/en/Git-Branching-Rebasing) using `git rebase` so that your commits are against the latest revision of `master`. -Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on Github. +Once you are satisfied with your work, synced with `master` and cleaned up your commits you are ready to submit a patch to the central Scala repository. Before proceeding make sure you have pushed all of your local changes to your fork on GitHub. 19:22 ~/Projects/scala/test (ticket/6725)$ git add ../src/compiler/scala/tools/reflect/MacroImplementations.scala 19:22 ~/Projects/scala/test (ticket/6725)$ git commit @@ -331,7 +331,7 @@ Once you are satisfied with your work, synced with `master` and cleaned up your ### Submit -Now, we must simply submit our proposed patch. Navigate to your branch in Github (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) +Now, we must simply submit our proposed patch. Navigate to your branch in GitHub (for me it was `https://github.com/xeno-by/scala/tree/ticket/6725`) and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. From 50d50417d01e7eb834088ce5a3bf924b862eb26f Mon Sep 17 00:00:00 2001 From: Antoine Gourlay Date: Wed, 31 Jul 2013 23:46:24 +0200 Subject: [PATCH 0038/1704] fix links in hacker guide and various typos. --- contribute/bug-reporting-guide.md | 4 ++-- contribute/hacker-guide.md | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index f04503f968..4160dcf438 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -45,7 +45,7 @@ If you have a code snippet that is resulting in bytecode which you believe is be * Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/docu/files/ScalaReference.pdf). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) or [stackoveflow](http://stackoverflow.com/questions/tagged/scala). -In general, if you find yourself stuck on any of these steps, asking on one of following Scala mailing lists can be helpful: +In general, if you find yourself stuck on any of these steps, asking on one of the following Scala mailing lists can be helpful: - For unexpected behavior use [scala-language](https://groups.google.com/forum/?fromgroups#!forum/scala-language), or [scala-user](https://groups.google.com/forum/?fromgroups#!forum/scala-user) mailing lists. - For compiler bugs use the [scala-internals](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) mailing list. @@ -84,4 +84,4 @@ In the description of your issue, be as detailed as you can. Bug reports which h 2. The expected output. 3. The actual output, including the stacktrace. 4. Related discussion on the mailing lists, if applicable. - 4. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. \ No newline at end of file + 4. If you have already looked into the issue provide interesting insights or proposals for fixing the issue. diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 28ea69bc3f..69ed05d25e 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -37,7 +37,7 @@ This is the list of language features/libraries along with their maintainers's f Since Martin is the person who submitted the string interpolation Scala Improvement Proposal and implemented this language feature for Scala 2.10.0, he might be interested in learning of new bugfixes to that feature. As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, -in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user)about our issue. +in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user) about our issue.
    Posting to scala-user

    @@ -143,7 +143,7 @@ Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with [instructions for Intellij](https://github.com/scala/scala/blob/master/src/intellij/README). Both of those Scala plugins provide navigation, refactoring and error reporting functionality as well as integrated debugging. -There also exist lighter-weight editors such as Emacs, Sublime or jEdit which provide unparalleled are faster and much less memory/compute-intensive to run, while +There also exist lighter-weight editors such as Emacs, Sublime or jEdit which are faster and much less memory/compute-intensive to run, while lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, a helper program, which hosts a resident Scala compiler providing some of the features implemented in traditional IDEs. However despite having significantly matured over the last year, support for our particular code base is still being improved, and is not as mature as for Eclipse and IntelliJ. @@ -194,11 +194,11 @@ There are several areas that one could contribute to-- there is the Scala librar ##### The Scala Library -Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left something cleaner than you found it.) +Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left something cleaner than you found it). If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. -If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](http://docs.scala-lang.org/overviews/core/collections.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](http://docs.scala-lang.org/overviews/core/parallel-collections.html). (TODO double check these links!) +If you intend on contributing to Scala collections, please make sure you're familiar with the design of the Scala collections library. It can be easy to put an implementation in the wrong location if you are unfamiliar with the collections architecture. There is an excellent and very detailed guide covering [the Architecture of Scala Collections](http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html), as well as a larger more general [Scala collections Guide](http://docs.scala-lang.org/overviews/collections/introduction.html) covering the sequential portion of collections. For parallel collections, there also exists a detailed [Scala Parallel Collections Guide](http://docs.scala-lang.org/overviews/parallel-collections/overview.html). ##### The Scala Compiler @@ -272,9 +272,9 @@ I have already written one test earlier, so that's a good start but not enough! Adding tests to the test suite is as easy as moving them to the appropriate directory: -* Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/master/test/files/pos) -* Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/master/test/files/neg) -* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/master/test/files/run) +* Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/master/test/files/pos). +* Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/master/test/files/neg). +* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/master/test/files/run). ### Verify From ac890ec4475ccac7b4cde69954e0325d770429f5 Mon Sep 17 00:00:00 2001 From: Ricky Elrod Date: Wed, 31 Jul 2013 21:44:19 -0400 Subject: [PATCH 0039/1704] Make hacker-guide valid. --- contribute/hacker-guide.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 69ed05d25e..5e22223278 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -39,9 +39,8 @@ Since Martin is the person who submitted the string interpolation Scala Improvem As alluded to earlier, one must also choose an appropriate mailing list. Typically, one would use the scala-internals mailing list, as it is devoted to discussions about the core internal design and implementation of the Scala system. However, since this issue has been discussed previously on the scala-user mailing list, in this example, we post to the [the scala-user mailing list](http://groups.google.com/group/scala-user) about our issue. -
    Posting to scala-user
    -
    -
    Response from Martin
    +Posting to scala-user +Response from Martin Now that we have the approval of the feature's author, we can get to work! @@ -59,7 +58,7 @@ button in the top right corner of the page. This will create your own copy of ou If you're new to Git, don't be afraid of messing up-- there is no way you can corrupt our repository. -
    Fork scala/scala
    +Fork scala/scala ### Clone @@ -335,14 +334,14 @@ Now, we must simply submit our proposed patch. Navigate to your branch in GitHub and click the pull request button to submit your patch as a pull request to Scala. If you've never submitted patches to Scala, you will need to sign the contributor license agreement, which [can be done online](http://typesafe.com/contribute/cla/scala) within a few minutes. -
    Submit a pull request
    +Submit a pull request ### Review After the pull request has been submitted, you need to pick a reviewer (usually the person you've contacted in the beginning of your workflow) and be ready to elaborate and adjust your patch if necessary. In this example, we picked Martin, because we had such a nice chat on the mailing list: -
    SAssign the reviewer
    +SAssign the reviewer ## Merge From 38ef7cf6c68443939d834c4f5fe28bed129eb7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Mon, 30 Sep 2013 14:30:04 +0200 Subject: [PATCH 0040/1704] Add hall of fame for July and August 2013. --- .../_posts/2013-08-01-scala-fame-2013-07.md | 119 ++++++++++++++++++ .../_posts/2013-09-01-scala-fame-2013-08.md | 98 +++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md create mode 100644 contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md diff --git a/contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md b/contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md new file mode 100644 index 0000000000..b6670c42ce --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-08-01-scala-fame-2013-07.md @@ -0,0 +1,119 @@ +--- +layout: famearchive +title: Contributors of July 2013 +fame-year: 2013 +fame-month: 7 +fame-month-str: July +fame-categories: + - category: Typesafe + authors: + - username: gkossakowski + gravatar: https://0.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?d=https%3A%2F%2Fidenticons.github.com%2F8196e8d0f9ee7dfdfc7e11dbbfa30d77.png&s=60 + commits: 11 + linesAdded: 522 + linesDeleted: 311 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://0.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?d=https%3A%2F%2Fidenticons.github.com%2Ff0d91e20ef53ace520f6ccbf8402319f.png&s=60 + commits: 9 + linesAdded: 1068 + linesDeleted: 11436 + rank: 2 + newContributor: false + - username: retronym + gravatar: https://0.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?d=https%3A%2F%2Fidenticons.github.com%2F75e4dffe50001cf8b96d3beecbe181be.png&s=60 + commits: 8 + linesAdded: 416 + linesDeleted: 134 + rank: 3 + newContributor: false + - username: paulp + gravatar: https://identicons.github.com/bf65417dcecc7f2b0006e1f5793b7143.png + commits: 2 + linesAdded: 46 + linesDeleted: 27 + rank: 4 + newContributor: false + - category: EPFL + authors: + - username: magarciaEPFL + gravatar: https://2.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?d=https%3A%2F%2Fidenticons.github.com%2F8b7440eff98d923640c99b5535429144.png&s=60 + commits: 12 + linesAdded: 1208 + linesDeleted: 1069 + rank: 1 + newContributor: false + - username: xeno-by + gravatar: https://2.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?d=https%3A%2F%2Fidenticons.github.com%2F6a5b1b05e953818962474e94b67d1cc2.png&s=60 + commits: 8 + linesAdded: 321 + linesDeleted: 95 + rank: 2 + newContributor: false + - username: VladUreche + gravatar: https://2.gravatar.com/avatar/5658ed1cea041577df360fd663c570fa?d=https%3A%2F%2Fidenticons.github.com%2Fa1ef2fed16f85a1af890467a80c30226.png&s=60 + commits: 2 + linesAdded: 104 + linesDeleted: 2 + rank: 3 + newContributor: false + - username: cvogt + gravatar: https://1.gravatar.com/avatar/669fb4eab529fba02f390051ddf3c8d3?d=https%3A%2F%2Fidenticons.github.com%2F78d9e7d7c73ac19ca8da9805762e5bb0.png&s=60 + commits: 1 + linesAdded: 19 + linesDeleted: 0 + rank: 4 + newContributor: false + - category: Community + authors: + - username: soc + gravatar: https://0.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?d=https%3A%2F%2Fidenticons.github.com%2F29f7ac3adbe1d3500c9404388aedcbfd.png&s=60 + commits: 19 + linesAdded: 2818 + linesDeleted: 4377 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://2.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?d=https%3A%2F%2Fidenticons.github.com%2Fd292a902ebb73981efd65c9ef416046b.png&s=60 + commits: 16 + linesAdded: 1049 + linesDeleted: 553 + rank: 2 + newContributor: false + - username: densh + gravatar: https://0.gravatar.com/avatar/5ed274e115ec061d062d9c32a539cdc9?d=https%3A%2F%2Fidenticons.github.com%2Fcd3e73ab183ea35424f0bf59101a74e4.png&s=60 + commits: 9 + linesAdded: 2632 + linesDeleted: 178 + rank: 3 + newContributor: false + - username: folone + gravatar: https://2.gravatar.com/avatar/50e7e3f60b3507383d2b327857b66a62?d=https%3A%2F%2Fidenticons.github.com%2F6c2bcbccd23191b40f4932e2b8450681.png&s=60 + commits: 3 + linesAdded: 106 + linesDeleted: 261 + rank: 4 + newContributor: false + - username: xuwei-k + gravatar: https://2.gravatar.com/avatar/18d8b1bf73827b2a15e2bd3e75b4b34a?d=https%3A%2F%2Fidenticons.github.com%2Fdab0069935d770e6285411ed1f4398b9.png&s=60 + commits: 3 + linesAdded: 5 + linesDeleted: 5 + rank: 4 + newContributor: false + - username: gourlaysama + gravatar: https://2.gravatar.com/avatar/8acf3c87222f89b18786c8db60eb365d?d=https%3A%2F%2Fidenticons.github.com%2F76004d7b1fac3a2b262caa5e6bdf15c9.png&s=60 + commits: 2 + linesAdded: 67 + linesDeleted: 3 + rank: 5 + newContributor: false + - username: ScrapCodes + gravatar: https://0.gravatar.com/avatar/e9813bbbab2caa993bf7e2b2d60de894?d=https%3A%2F%2Fidenticons.github.com%2F38c660c74f82a216b75167debab770ed.png&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 6 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md b/contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md new file mode 100644 index 0000000000..c876e815d1 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-09-01-scala-fame-2013-08.md @@ -0,0 +1,98 @@ +--- +layout: famearchive +title: Contributors of August 2013 +fame-year: 2013 +fame-month: 8 +fame-month-str: August +fame-categories: + - category: Typesafe + authors: + - username: paulp + gravatar: https://identicons.github.com/bf65417dcecc7f2b0006e1f5793b7143.png + commits: 50 + linesAdded: 3703 + linesDeleted: 2269 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://0.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?d=https%3A%2F%2Fidenticons.github.com%2F75e4dffe50001cf8b96d3beecbe181be.png&s=60 + commits: 30 + linesAdded: 990 + linesDeleted: 167 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://0.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?d=https%3A%2F%2Fidenticons.github.com%2Ff0d91e20ef53ace520f6ccbf8402319f.png&s=60 + commits: 6 + linesAdded: 224 + linesDeleted: 11001 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://0.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?d=https%3A%2F%2Fidenticons.github.com%2F0777acff7c9ab34562699e4e1d05affb.png&s=60 + commits: 2 + linesAdded: 6 + linesDeleted: 6 + rank: 4 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://2.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?d=https%3A%2F%2Fidenticons.github.com%2F6a5b1b05e953818962474e94b67d1cc2.png&s=60 + commits: 9 + linesAdded: 579 + linesDeleted: 419 + rank: 1 + newContributor: false + - username: magarciaEPFL + gravatar: https://2.gravatar.com/avatar/94ff1d59d6e0a3a4ab10c80ab12bfeed?d=https%3A%2F%2Fidenticons.github.com%2F8b7440eff98d923640c99b5535429144.png&s=60 + commits: 4 + linesAdded: 319 + linesDeleted: 105 + rank: 2 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://0.gravatar.com/avatar/5ed274e115ec061d062d9c32a539cdc9?d=https%3A%2F%2Fidenticons.github.com%2Fcd3e73ab183ea35424f0bf59101a74e4.png&s=60 + commits: 19 + linesAdded: 687 + linesDeleted: 322 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://2.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?d=https%3A%2F%2Fidenticons.github.com%2Fd292a902ebb73981efd65c9ef416046b.png&s=60 + commits: 12 + linesAdded: 455 + linesDeleted: 91 + rank: 2 + newContributor: false + - username: soc + gravatar: https://0.gravatar.com/avatar/6e4171314f4704b1e82aa4e5d9067e92?d=https%3A%2F%2Fidenticons.github.com%2F29f7ac3adbe1d3500c9404388aedcbfd.png&s=60 + commits: 4 + linesAdded: 64 + linesDeleted: 27 + rank: 3 + newContributor: false + - username: gourlaysama + gravatar: https://2.gravatar.com/avatar/8acf3c87222f89b18786c8db60eb365d?d=https%3A%2F%2Fidenticons.github.com%2F76004d7b1fac3a2b262caa5e6bdf15c9.png&s=60 + commits: 2 + linesAdded: 50 + linesDeleted: 9 + rank: 4 + newContributor: false + - username: ScrapCodes + gravatar: https://0.gravatar.com/avatar/e9813bbbab2caa993bf7e2b2d60de894?d=https%3A%2F%2Fidenticons.github.com%2F38c660c74f82a216b75167debab770ed.png&s=60 + commits: 1 + linesAdded: 3 + linesDeleted: 0 + rank: 5 + newContributor: false + - username: folone + gravatar: https://2.gravatar.com/avatar/50e7e3f60b3507383d2b327857b66a62?d=https%3A%2F%2Fidenticons.github.com%2F6c2bcbccd23191b40f4932e2b8450681.png&s=60 + commits: 1 + linesAdded: 55 + linesDeleted: 7 + rank: 5 + newContributor: false +--- From 1fad03554f97da791f28a74746dbb158f9109c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Thu, 10 Oct 2013 11:17:43 +0200 Subject: [PATCH 0041/1704] Add hall of fame for 2013-09. --- .../_posts/2013-10-01-scala-fame-2013-09.md | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md diff --git a/contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md b/contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md new file mode 100644 index 0000000000..23fa456fc0 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-10-01-scala-fame-2013-09.md @@ -0,0 +1,105 @@ +--- +layout: famearchive +title: Contributors of September 2013 +fame-year: 2013 +fame-month: 9 +fame-month-str: September +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://2.gravatar.com/avatar/5df8faf17a57ccab478a9b8056862fc3?d=https%3A%2F%2Fidenticons.github.com%2F75e4dffe50001cf8b96d3beecbe181be.png&s=60 + commits: 42 + linesAdded: 1459 + linesDeleted: 476 + rank: 1 + newContributor: false + - username: paulp + gravatar: https://identicons.github.com/bf65417dcecc7f2b0006e1f5793b7143.png + commits: 25 + linesAdded: 6603 + linesDeleted: 7419 + rank: 2 + newContributor: false + - username: huitseeker + gravatar: https://1.gravatar.com/avatar/dc11aab8ab70b10a828b5ee4735183e8?d=https%3A%2F%2Fidenticons.github.com%2F0777acff7c9ab34562699e4e1d05affb.png&s=60 + commits: 7 + linesAdded: 520 + linesDeleted: 536 + rank: 3 + newContributor: false + - username: gkossakowski + gravatar: https://0.gravatar.com/avatar/e608c8cb27858cc5aaf7d0c1e57958d7?d=https%3A%2F%2Fidenticons.github.com%2F8196e8d0f9ee7dfdfc7e11dbbfa30d77.png&s=60 + commits: 2 + linesAdded: 1443 + linesDeleted: 44 + rank: 4 + newContributor: false + - username: dragos + gravatar: https://2.gravatar.com/avatar/fbd384e9626d28d1648f023a5e22672f?d=https%3A%2F%2Fidenticons.github.com%2F6b660454242c937e501b88fd136132f8.png&s=60 + commits: 2 + linesAdded: 95 + linesDeleted: 13 + rank: 4 + newContributor: false + - username: jsuereth + gravatar: https://1.gravatar.com/avatar/5ed293320c06809a24812f56861201ad?d=https%3A%2F%2Fidenticons.github.com%2F11a5b5ef81cff76a0a1f3d042f635df3.png&s=60 + commits: 1 + linesAdded: 18 + linesDeleted: 37 + rank: 5 + newContributor: false + - username: adriaanm + gravatar: https://0.gravatar.com/avatar/d573d4b8a6bd9e2f41611d8d566c533e?d=https%3A%2F%2Fidenticons.github.com%2Ff0d91e20ef53ace520f6ccbf8402319f.png&s=60 + commits: 1 + linesAdded: 5 + linesDeleted: 5 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://1.gravatar.com/avatar/69e339fd10a5ad804c45e22c819c67ad?d=https%3A%2F%2Fidenticons.github.com%2F6a5b1b05e953818962474e94b67d1cc2.png&s=60 + commits: 5 + linesAdded: 434 + linesDeleted: 153 + rank: 1 + newContributor: false + - username: sjrd + gravatar: https://1.gravatar.com/avatar/bc554c7355c8476dd63375b314b1bd97?d=https%3A%2F%2Fidenticons.github.com%2F7f7549008d59643d2ce9846ce0364947.png&s=60 + commits: 4 + linesAdded: 30 + linesDeleted: 9 + rank: 2 + newContributor: true + - category: Community + authors: + - username: densh + gravatar: https://1.gravatar.com/avatar/5ed274e115ec061d062d9c32a539cdc9?d=https%3A%2F%2Fidenticons.github.com%2Fcd3e73ab183ea35424f0bf59101a74e4.png&s=60 + commits: 20 + linesAdded: 1415 + linesDeleted: 594 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://1.gravatar.com/avatar/ec5b08d0fe94845ba49fd4a263c7d99d?d=https%3A%2F%2Fidenticons.github.com%2Fd292a902ebb73981efd65c9ef416046b.png&s=60 + commits: 11 + linesAdded: 367 + linesDeleted: 106 + rank: 2 + newContributor: false + - username: Ichoran + gravatar: https://0.gravatar.com/avatar/3698349ad0b898d398a6573f4d1f867a?d=https%3A%2F%2Fidenticons.github.com%2Ffc12483537f3df99d480423de674e099.png&s=60 + commits: 3 + linesAdded: 75 + linesDeleted: 27 + rank: 3 + newContributor: true + - username: sschaef + gravatar: https://0.gravatar.com/avatar/dd80aab570fdb5f37e62de5422f44ed4?d=https%3A%2F%2Fidenticons.github.com%2Fb5a662bc30d97b377338f5dfb2b4cc66.png&s=60 + commits: 3 + linesAdded: 84 + linesDeleted: 139 + rank: 3 + newContributor: false +--- From 9b709e0b67f7e3b7594734b019f262fd1dcf6e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20van=20Delft?= Date: Mon, 6 Jan 2014 14:49:42 +0100 Subject: [PATCH 0042/1704] Update hacker-guide.md Added two more Git learning resources --- contribute/hacker-guide.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 5e22223278..46d252984e 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -48,8 +48,11 @@ Now that we have the approval of the feature's author, we can get to work! Hacking Scala begins with creating a branch for your work item. To develop Scala we use [Git](http://git-scm.com/) and [GitHub](http://github.com/). This section of the guide provides a short walkthrough, but if you are new to Git, -it probably makes sense to familiarize yourself with Git first. We recommend the [Git Pro](http://git-scm.com/book/en/) -online book. +it probably makes sense to familiarize yourself with Git first. We recommend + +* the [Git Pro](http://git-scm.com/book/en/) online book. +* the help page on [Forking a Git Repository](https://help.github.com/articles/fork-a-repo). +* this great training tool [LearnGitBranching](http://pcottle.github.io/learnGitBranching/). One hour hands-on training helps more than 1000 hours reading. ### Fork From 6f80442e6ac4050d70ab6b06ed5d59ee8187637f Mon Sep 17 00:00:00 2001 From: George Leontiev Date: Wed, 25 Jun 2014 17:43:17 +0200 Subject: [PATCH 0043/1704] Update hacker guide: add more info, fix broken links. --- contribute/hacker-guide.md | 99 ++++++++++++++++++++++++++++++++------ 1 file changed, 83 insertions(+), 16 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 46d252984e..895d925f48 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -26,7 +26,7 @@ Sometimes it's appealing to hack alone and not to have to interact with others o this might not be the very best idea. There are people in the Scala community who have spent years accumulating knowledge about Scala libraries and internals. They might provide unique insights and, what's even better, direct assistance in their areas, so it is not only advantageous, but recommended to communicate with the community about your new patch. -Typically bug fixes and new features start out as an idea or an experiment posted on one of our mailing lists [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel +Typically bug fixes and new features start out as an idea or an experiment posted on one of [our mailing lists]({{ site.baseurl }}/community/index.html#mailing_lists) to find out how people feel about things you want to implement. People proficient in certain areas of Scala usually monitor mailing lists, so you'll often get some help by simply posting a message. But the most efficient way to connect is to cc your message to one of the people responsible for maintaining the aspect of Scala which you wish to contribute to. @@ -67,7 +67,7 @@ If you're new to Git, don't be afraid of messing up-- there is no way you can co If everything went okay, you will be redirected to your own fork at `https://github.com/username/scala`, where `username` is your github user name. You might find it helpful to read [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/), -which covers some of the things that will follow below. Then, _clone_ your repository (_i.e._ pull a copy from GitHub to your local machine) by running the following on the command line: +which covers some of the things that will follow below. Then, _clone_ your repository (i.e. pull a copy from GitHub to your local machine) by running the following on the command line: 16:35 ~/Projects$ git clone https://github.com/xeno-by/scala Cloning into 'scala'... @@ -86,7 +86,7 @@ Before you start making changes, always create your own branch. Never work on th the changes you plan on making. Use a prefix that describes the nature of your change. There are essentially two kinds of changes: bug fixes and new features. -* For bug fixes, use `issue/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). +* For bug fixes, use `issue/NNNN` or `ticket/NNNN` for bug NNNN from the [Scala issue tracker](https://issues.scala-lang.org/). * For new feature use `topic/XXX` for feature XXX. Use feature names that make sense in the context of the whole Scala project and not just to you personally. For example, if you work on diagrams in Scaladoc, use `topic/scaladoc-diagrams` instead of just `topic/diagrams` would be a good branch name. Since in our example, we're going to fix an existing bug [SI-6725](https://issues.scala-lang.org/browse/SI-6725), we'll create a branch named `ticket/6725`. @@ -98,8 +98,7 @@ If you are new to Git and branching, read the [Branching Chapter](http://git-scm ### Build -The next step after cloning your fork is setting up your machine to build Scala. The definitive guide on building Scala is located at -[https://github.com/scala/scala/blob/master/README.rst](https://github.com/scala/scala/blob/master/README.rst), but here's the summary: +The next step after cloning your fork is setting up your machine to build Scala. * It is recommended to use Java `1.6` (not `1.7` or `1.8`, because they might cause occasional glitches). * The build tool is `ant`. @@ -140,10 +139,8 @@ with your hardware). There's no single editor of choice for working with Scala sources, as there are trade-offs associated with each available tool. -Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. Here are -[instructions for Eclipse](https://github.com/scala/scala/blob/master/src/eclipse/README.md) and -[instructions for Intellij](https://github.com/scala/scala/blob/master/src/intellij/README). Both of those Scala plugins provide -navigation, refactoring and error reporting functionality as well as integrated debugging. +Both Eclipse and IntelliJ IDEA have Scala plugins, which are known to work with our codebase. +Both of those Scala plugins provide navigation, refactoring and error reporting functionality as well as integrated debugging. There also exist lighter-weight editors such as Emacs, Sublime or jEdit which are faster and much less memory/compute-intensive to run, while lacking semantic services and debugging. To address this shortcoming, they can integrate with ENSIME, @@ -185,10 +182,33 @@ Here are also some tips & tricks that have proven useful in Scala development: just that trait, but it might also be necessary to recompile its users. The `ant` tool is not smart enough to do that, which might lead to very strange errors. Full-rebuilds fix the problem. Fortunately that's rarely necessary, because full-rebuilds take a lot of time-- the same 8-30 minutes as mentioned above. * Even on solid state drives packaging Scala distribution (i.e. creating jars from class files) is a non-trivial task. To save time here, - some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts to launch Scala from `build/quick/classes`. + some people in our team do `ant quick.comp` instead of `ant` and then create custom scripts ([here](https://github.com/adriaanm/binfu/blob/master/scafu.sh) are some examples to get you strarted) to launch Scala from `build/quick/classes`. * Don't underestimate the power of `print`. When starting with Scala, I spent a lot of time in the debugger trying to figure out how things work. However later I found out that print-based debugging is often more effective than jumping around. While it might be obvious - to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. + to some, I'd like to explicitly mention that it's also useful to print stack traces to understand the flow of execution. When working with `Trees`, you might want to use `showRaw` to get the `AST` representation. +* You can publish your newly-built scala version locally to use it from sbt. Here's how: + + $ ant publish-local-opt -Dmaven.version.suffix="-test" + $ sbt + [info] Set current project to test (in build file:/Users/georgii/workspace/test/) + > set resolvers += Resolver.mavenLocal + [info] Defining *:resolvers + [info] The new value will be used by *:externalResolvers + [info] Reapplying settings... + [info] Set current project to test (in build file:/Users/georgii/workspace/test/) + > ++2.12.0-test + [info] Setting version to 2.12.0-test + [info] Set current project to test (in build file:/Users/georgii/workspace/test/) + > console + [info] Starting scala interpreter... + [info] + Welcome to Scala version 2.12.0-20140623-155543-8bdacad317 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51). + Type in expressions to have them evaluated. + Type :help for more information. + + scala> + +* Adding a macro to the `Predef` is a pretty involved task. For the reason of bootstrapping, you cannot just throw a macro into it. There is a more involved process here. You might want to follow the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (`def fn = macro ???`). Now you want to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. If that explanation does not sound very clear, [here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. ### Documentation @@ -196,7 +216,7 @@ There are several areas that one could contribute to-- there is the Scala librar ##### The Scala Library -Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left something cleaner than you found it). +Contributing to the Scala standard library is about the same as working on one of your own libraries. Beyond the Scala collections hierarchy, there are no complex internals or architectures to have to worry about. Just make sure that you code in a "don't-repeat-yourself" (DRY) style, obeying the "boy scout principle" (i.e. make sure you've left the code cleaner than you found it). If documentation is necessary for some trait/class/object/method/etc in the Scala standard library, typically maintainers will include inline comments describing their design decisions or rationale for implementing things the way they have, if it is not straightforward. @@ -206,7 +226,7 @@ If you intend on contributing to Scala collections, please make sure you're fami Documentation about the internal workings of the Scala compiler is scarce, and most of the knowledge is passed around by email (scala-internals mailing list), ticket, or word of mouth. However the situation is steadily improving. Here are the resources that might help: -* [Compiler internals videos by Martin Odersky](TODO) are quite dated, but still very useful. In this three-video +* [Compiler internals videos by Martin Odersky](http://www.scala-lang.org/old/node/598.html) are quite dated, but still very useful. In this three-video series Martin explains the general architecture of the compiler, and the basics of the front-end, which has recently become Scala reflection API. * [Reflection documentation](http://docs.scala-lang.org/overviews/reflection/overview.html) describes fundamental data structures (like `Tree`s, `Symbol`s, and `Types`) that are used to represent Scala programs and operations defined on then. Since much of the compiler has been factored out and made accessible via the Reflection API, all of the fundamentals needed for reflection are the same for the compiler. @@ -274,9 +294,56 @@ I have already written one test earlier, so that's a good start but not enough! Adding tests to the test suite is as easy as moving them to the appropriate directory: -* Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/master/test/files/pos). -* Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/master/test/files/neg). -* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/master/test/files/run). +* Code which should compile successfully, but doesn't need to be executed, needs to go into the [“pos” directory](https://github.com/scala/scala/tree/2.12.x/test/files/pos). +* Code which should not compile needs to go into the [“neg” directory](https://github.com/scala/scala/tree/2.12.x/test/files/neg). +* Code which should compile and get executed by the test suite needs to go into the [“run” directory](https://github.com/scala/scala/tree/2.12.x/test/files/run) and have a corresponding `.check` file with the expected output. You will get test failures if the content of a `.check` file is different from what the test produces while running. If the change in the output is an expected product of your work, you might not want to change the `.check` file by hand. To make partest change the `.check` file, run it with a `--update-check` flag, like so `./test/partest --update-check path/to/test.scala`. For more information on partest, please refer to its [documentation](http://docs.scala-lang.org/tutorials/partest-guide.html). +* Everything that can be unit-tested should go to ["junit" directory](https://github.com/scala/scala/tree/2.12.x/test/junit) +* Property-based tests go to the ["scalacheck" directory](https://github.com/scala/scala/tree/2.12.x/test/files/scalacheck) + +Here are some more testing tips: + +* If you have several tests, and want a tool for only running tests that conform to some regular expression, you can use `partest-ack` in the `tools` directory: `./tools/partest-ack "dottype"` +* If your tests fail with an like: + + test.bc: + [echo] Checking backward binary compatibility for scala-library (against 2.11.0) + [mima] Found 2 binary incompatibiities + [mima] ================================ + [mima] * synthetic method + [mima] scala$package$Class$method(java.lang.String)Unit in trait + [mima] scala.package.Class does not have a correspondent in old version + [mima] * synthetic method + [mima] scala$package$AnotherClass$anotherMethod(java.lang.String)Unit in trait + [mima] scala.package.AnotherClass does not have a correspondent in old version + [mima] Generated filter config definition + [mima] ================================== + [mima] + [mima] filter { + [mima] problems=[ + [mima] { + [mima] matchName="scala.package.Class$method" + [mima] problemName=MissingMethodProblem + [mima] }, + [mima] { + [mima] matchName="scala.package.AnotherClass$anotherMethod" + [mima] problemName=MissingMethodProblem + [mima] } + [mima] ] + [mima] } + [mima] + + BUILD FAILED + /localhome/jenkins/c/workspace/pr-scala-test/scala/build.xml:1530: The following error occurred while executing this line: + /localhome/jenkins/c/workspace/pr-scala-test/scala/build-ant-macros.xml:791: The following error occurred while executing this line: + /localhome/jenkins/c/workspace/pr-scala-test/scala/build-ant-macros.xml:773: Java returned: 2 + + Total time: 6 minutes 46 seconds + Build step 'Execute shell' marked build as failure + Archiving artifacts + Notifying upstream projects of job completion + Finished: FAILURE + +This means your change is backward or forward binary incompatible with the specified version (the check is performed by the [migration manager](https://github.com/typesafehub/migration-manager)). The error message is actually saying what you need to add to `bincompat-backward.whitelist.conf` or `bincompat-forward.whitelist.conf` to make the error go away. If you are getting this on an internal/experimental api, it should be safe to add suggested sections to the config. Otherwise, you might want to target a newer version of scala for this change. ### Verify From a076f43769050b80646fb196a9b109e6ed97228f Mon Sep 17 00:00:00 2001 From: George Leontiev Date: Thu, 26 Jun 2014 10:44:54 +0200 Subject: [PATCH 0044/1704] Address the feedback. --- contribute/hacker-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribute/hacker-guide.md b/contribute/hacker-guide.md index 895d925f48..08f5d40c09 100644 --- a/contribute/hacker-guide.md +++ b/contribute/hacker-guide.md @@ -208,7 +208,7 @@ Here are also some tips & tricks that have proven useful in Scala development: scala> -* Adding a macro to the `Predef` is a pretty involved task. For the reason of bootstrapping, you cannot just throw a macro into it. There is a more involved process here. You might want to follow the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (`def fn = macro ???`). Now you want to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. If that explanation does not sound very clear, [here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. +* Adding a macro to the `Predef` object is a pretty involved task. Due to bootstrapping, you cannot just throw a macro into it. For this reason, the process is more involved. You might want to follow the way `StringContext.f` itself is added. In short, you need to define your macro under `src/compiler/scala/tools/reflect/` and provide no implementation in `Predef` (`def fn = macro ???`). Now you have to set up the wiring. Add the name of your macro to `src/reflect/scala/reflect/internal/StdNames.scala`, add the needed links to it to `src/reflect/scala/reflect/internal/Definitions.scala`, and finally specify the bindings in `src/compiler/scala/tools/reflect/FastTrack.scala`. [Here's](https://github.com/folone/scala/commit/59536ea833ca16c985339727baed5d70e577b0fe) an example of adding a macro. ### Documentation @@ -303,7 +303,7 @@ Adding tests to the test suite is as easy as moving them to the appropriate dire Here are some more testing tips: * If you have several tests, and want a tool for only running tests that conform to some regular expression, you can use `partest-ack` in the `tools` directory: `./tools/partest-ack "dottype"` -* If your tests fail with an like: +* If your tests fail in the following way: test.bc: [echo] Checking backward binary compatibility for scala-library (against 2.11.0) From 8f63cd0ebdf244c5051357d3781d985b54d126da Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Mon, 7 Jul 2014 20:28:10 +0200 Subject: [PATCH 0045/1704] Fix more references to spec --- contribute/bug-reporting-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/bug-reporting-guide.md b/contribute/bug-reporting-guide.md index 4160dcf438..960f40b704 100644 --- a/contribute/bug-reporting-guide.md +++ b/contribute/bug-reporting-guide.md @@ -43,7 +43,7 @@ If you have a code snippet that is resulting in bytecode which you believe is be 5. If you want to file an improvement in the issue tracker please discuss it first on one of the mailing lists. They offer much bigger audience than issue tracker. The latter is not suitable for long discussions. -* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/docu/files/ScalaReference.pdf). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) or [stackoveflow](http://stackoverflow.com/questions/tagged/scala). +* Keep in mind that the behavior you are witnessing could be intended. Good formal resources for verifying whether or not the language behavior is intended is either in the [Scala Improvement Proposal Documents](http://docs.scala-lang.org/sips/sip-list.html) or in the [Scala Language Specification](http://www.scala-lang.org/files/archive/spec/2.11/). If in doubt, you may always ask on the [scala-internals mailing list](https://groups.google.com/forum/?fromgroups#!forum/scala-internals) or [stackoveflow](http://stackoverflow.com/questions/tagged/scala). In general, if you find yourself stuck on any of these steps, asking on one of the following Scala mailing lists can be helpful: From afc73aa06baf7b9204c11edd946b02e82b74fcaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Mon, 29 Sep 2014 10:30:37 +0200 Subject: [PATCH 0046/1704] Hall of fame Auguest 2014. --- .../_posts/2014-09-01-scala-fame-2014-08.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md diff --git a/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md b/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md new file mode 100644 index 0000000000..1393e01705 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md @@ -0,0 +1,63 @@ +--- +layout: famearchive +title: Contributors of August 2014 +fame-year: 2014 +fame-month: 8 +fame-month-str: August +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 3 + linesAdded: 57 + linesDeleted: 4 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 2 + linesAdded: 57 + linesDeleted: 42 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 21 + linesAdded: 3764 + linesDeleted: 2122 + rank: 1 + newContributor: false + - category: Community + authors: + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 10 + linesAdded: 171 + linesDeleted: 7680 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 10 + linesAdded: 917 + linesDeleted: 543 + rank: 1 + newContributor: false + - username: dgruntz + gravatar: https://avatars3.githubusercontent.com/u/1516800?v=2&s=60 + commits: 1 + linesAdded: 18 + linesDeleted: 18 + rank: 2 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 1 + linesAdded: 26 + linesDeleted: 27 + rank: 2 + newContributor: false +--- From d4630ea3257b7740c390f5d728b6d2fd012f7fc1 Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Fri, 24 Oct 2014 16:36:48 +0200 Subject: [PATCH 0047/1704] Add 2014 scala-fame data --- .../_posts/2014-02-01-scala-fame-2014-01.md | 147 ++++++++++++++++++ .../_posts/2014-03-01-scala-fame-2014-02.md | 133 ++++++++++++++++ .../_posts/2014-04-01-scala-fame-2014-03.md | 112 +++++++++++++ .../_posts/2014-05-01-scala-fame-2014-04.md | 91 +++++++++++ .../_posts/2014-06-01-scala-fame-2014-05.md | 112 +++++++++++++ .../_posts/2014-07-01-scala-fame-2014-06.md | 98 ++++++++++++ .../_posts/2014-08-01-scala-fame-2014-07.md | 98 ++++++++++++ .../_posts/2014-09-01-scala-fame-2014-08.md | 7 + .../_posts/2014-10-01-scala-fame-2014-09.md | 84 ++++++++++ 9 files changed, 882 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md create mode 100644 contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md create mode 100644 contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md create mode 100644 contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md create mode 100644 contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md create mode 100644 contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md create mode 100644 contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md create mode 100644 contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md diff --git a/contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md b/contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md new file mode 100644 index 0000000000..ab8e808036 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-02-01-scala-fame-2014-01.md @@ -0,0 +1,147 @@ +--- +layout: famearchive +title: Contributors of January 2014 +fame-year: 2014 +fame-month: 1 +fame-month-str: January +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 37 + linesAdded: 2000 + linesDeleted: 2487 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 8 + linesAdded: 311 + linesDeleted: 175 + rank: 2 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 3 + linesAdded: 15 + linesDeleted: 5 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 + commits: 2 + linesAdded: 81 + linesDeleted: 79 + rank: 4 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 2 + linesAdded: 7 + linesDeleted: 5 + rank: 4 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 75 + linesAdded: 8908 + linesDeleted: 6023 + rank: 1 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 16 + linesAdded: 722 + linesDeleted: 295 + rank: 1 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 10 + linesAdded: 315 + linesDeleted: 103 + rank: 2 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 9 + linesAdded: 646 + linesDeleted: 201 + rank: 3 + newContributor: false + - username: VladimirNik + gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 + commits: 7 + linesAdded: 1729 + linesDeleted: 350 + rank: 4 + newContributor: false + - username: rklaehn + gravatar: https://avatars0.githubusercontent.com/u/248257?v=2&s=60 + commits: 6 + linesAdded: 1288 + linesDeleted: 39 + rank: 5 + newContributor: false + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 3 + linesAdded: 37 + linesDeleted: 7 + rank: 6 + newContributor: false + - username: cunei + gravatar: https://avatars2.githubusercontent.com/u/686260?v=2&s=60 + commits: 2 + linesAdded: 42 + linesDeleted: 12 + rank: 7 + newContributor: false + - username: Blaisorblade + gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 + commits: 2 + linesAdded: 51 + linesDeleted: 33 + rank: 7 + newContributor: false + - username: havocp + gravatar: https://avatars2.githubusercontent.com/u/218689?v=2&s=60 + commits: 1 + linesAdded: 38 + linesDeleted: 2 + rank: 8 + newContributor: false + - username: clhodapp + gravatar: https://avatars0.githubusercontent.com/u/108633?v=2&s=60 + commits: 1 + linesAdded: 22 + linesDeleted: 0 + rank: 8 + newContributor: false + - username: rjolly + gravatar: https://avatars3.githubusercontent.com/u/128610?v=2&s=60 + commits: 1 + linesAdded: 45 + linesDeleted: 38 + rank: 8 + newContributor: false + - username: xuwei-k + gravatar: https://avatars3.githubusercontent.com/u/389787?v=2&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 8 + newContributor: false + - username: dotta + gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 + commits: 1 + linesAdded: 67 + linesDeleted: 67 + rank: 8 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md b/contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md new file mode 100644 index 0000000000..065ab45d13 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-03-01-scala-fame-2014-02.md @@ -0,0 +1,133 @@ +--- +layout: famearchive +title: Contributors of February 2014 +fame-year: 2014 +fame-month: 2 +fame-month-str: February +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 47 + linesAdded: 1533 + linesDeleted: 1032 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 25 + linesAdded: 1043 + linesDeleted: 491 + rank: 2 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 4 + linesAdded: 1867 + linesDeleted: 1747 + rank: 3 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 3 + linesAdded: 427 + linesDeleted: 15 + rank: 4 + newContributor: false + - username: dragos + gravatar: https://avatars2.githubusercontent.com/u/133742?v=2&s=60 + commits: 1 + linesAdded: 12 + linesDeleted: 3 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 47 + linesAdded: 3989 + linesDeleted: 1545 + rank: 1 + newContributor: false + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 1 + linesAdded: 18 + linesDeleted: 13 + rank: 2 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 23 + linesAdded: 1166 + linesDeleted: 515 + rank: 1 + newContributor: false + - username: VladimirNik + gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 + commits: 10 + linesAdded: 2647 + linesDeleted: 2416 + rank: 2 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 9 + linesAdded: 662 + linesDeleted: 339 + rank: 3 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 8 + linesAdded: 277 + linesDeleted: 75 + rank: 4 + newContributor: false + - username: pavelpavlov + gravatar: https://avatars0.githubusercontent.com/u/1330451?v=2&s=60 + commits: 3 + linesAdded: 44 + linesDeleted: 54 + rank: 5 + newContributor: false + - username: Blaisorblade + gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 + commits: 3 + linesAdded: 6 + linesDeleted: 5 + rank: 5 + newContributor: false + - username: soc + gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 + commits: 3 + linesAdded: 476 + linesDeleted: 338 + rank: 5 + newContributor: false + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 2 + linesAdded: 7 + linesDeleted: 7 + rank: 6 + newContributor: false + - username: greenrd + gravatar: https://avatars1.githubusercontent.com/u/164965?v=2&s=60 + commits: 1 + linesAdded: 2 + linesDeleted: 3 + rank: 7 + newContributor: false + - username: clhodapp + gravatar: https://avatars0.githubusercontent.com/u/108633?v=2&s=60 + commits: 1 + linesAdded: 228 + linesDeleted: 0 + rank: 7 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md b/contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md new file mode 100644 index 0000000000..954a870612 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-04-01-scala-fame-2014-03.md @@ -0,0 +1,112 @@ +--- +layout: famearchive +title: Contributors of March 2014 +fame-year: 2014 +fame-month: 3 +fame-month-str: March +fame-categories: + - category: Typesafe + authors: + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 79 + linesAdded: 24547 + linesDeleted: 24999 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 21 + linesAdded: 622 + linesDeleted: 101 + rank: 2 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 3 + linesAdded: 236 + linesDeleted: 6 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 + commits: 2 + linesAdded: 4 + linesDeleted: 2 + rank: 4 + newContributor: false + - username: szeiger + gravatar: https://avatars3.githubusercontent.com/u/54262?v=2&s=60 + commits: 1 + linesAdded: 8 + linesDeleted: 1 + rank: 5 + newContributor: false + - username: viktorklang + gravatar: https://avatars0.githubusercontent.com/u/10871?v=2&s=60 + commits: 1 + linesAdded: 7 + linesDeleted: 2 + rank: 5 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 1 + linesAdded: 20 + linesDeleted: 3 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 10 + linesAdded: 379 + linesDeleted: 76 + rank: 1 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 13 + linesAdded: 589 + linesDeleted: 115 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 4 + linesAdded: 31 + linesDeleted: 23 + rank: 2 + newContributor: false + - username: VladimirNik + gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 + commits: 2 + linesAdded: 1778 + linesDeleted: 1441 + rank: 3 + newContributor: false + - username: mkubala + gravatar: https://avatars0.githubusercontent.com/u/328844?v=2&s=60 + commits: 1 + linesAdded: 247 + linesDeleted: 53 + rank: 4 + newContributor: false + - username: puffnfresh + gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 + commits: 1 + linesAdded: 0 + linesDeleted: 1 + rank: 4 + newContributor: false + - username: iainmcgin + gravatar: https://avatars0.githubusercontent.com/u/309153?v=2&s=60 + commits: 1 + linesAdded: 20 + linesDeleted: 19 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md b/contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md new file mode 100644 index 0000000000..66c6819f17 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-05-01-scala-fame-2014-04.md @@ -0,0 +1,91 @@ +--- +layout: famearchive +title: Contributors of April 2014 +fame-year: 2014 +fame-month: 4 +fame-month-str: April +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 9 + linesAdded: 177 + linesDeleted: 34 + rank: 1 + newContributor: false + - username: huitseeker + gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 + commits: 1 + linesAdded: 16 + linesDeleted: 1 + rank: 2 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 1 + linesAdded: 10 + linesDeleted: 3 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 1 + linesAdded: 34 + linesDeleted: 2 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 2 + linesAdded: 202 + linesDeleted: 75 + rank: 1 + newContributor: false + - username: VladUreche + gravatar: https://avatars0.githubusercontent.com/u/428706?v=2&s=60 + commits: 1 + linesAdded: 24 + linesDeleted: 3 + rank: 2 + newContributor: false + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 1 + linesAdded: 12 + linesDeleted: 1 + rank: 2 + newContributor: false + - category: Community + authors: + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 3 + linesAdded: 51 + linesDeleted: 5 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 2 + linesAdded: 110 + linesDeleted: 51 + rank: 2 + newContributor: false + - username: lefou + gravatar: https://avatars2.githubusercontent.com/u/1321393?v=2&s=60 + commits: 1 + linesAdded: 45 + linesDeleted: 8 + rank: 3 + newContributor: false + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 1 + linesAdded: 4 + linesDeleted: 5 + rank: 3 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md b/contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md new file mode 100644 index 0000000000..f9191afb17 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-06-01-scala-fame-2014-05.md @@ -0,0 +1,112 @@ +--- +layout: famearchive +title: Contributors of May 2014 +fame-year: 2014 +fame-month: 5 +fame-month-str: May +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 32 + linesAdded: 951 + linesDeleted: 136 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 9 + linesAdded: 21 + linesDeleted: 70 + rank: 2 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 3 + linesAdded: 13 + linesDeleted: 18 + rank: 3 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 23 + linesAdded: 6048 + linesDeleted: 2325 + rank: 1 + newContributor: false + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 3 + linesAdded: 93 + linesDeleted: 3 + rank: 2 + newContributor: false + - category: Community + authors: + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 12 + linesAdded: 442 + linesDeleted: 238 + rank: 1 + newContributor: false + - username: lefou + gravatar: https://avatars2.githubusercontent.com/u/1321393?v=2&s=60 + commits: 3 + linesAdded: 14 + linesDeleted: 24 + rank: 2 + newContributor: false + - username: tvierling + gravatar: https://avatars3.githubusercontent.com/u/397857?v=2&s=60 + commits: 2 + linesAdded: 35 + linesDeleted: 11 + rank: 3 + newContributor: true + - username: clhodapp + gravatar: https://avatars0.githubusercontent.com/u/108633?v=2&s=60 + commits: 2 + linesAdded: 98 + linesDeleted: 51 + rank: 3 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 2 + linesAdded: 55 + linesDeleted: 16 + rank: 3 + newContributor: false + - username: mkubala + gravatar: https://avatars0.githubusercontent.com/u/328844?v=2&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 0 + rank: 4 + newContributor: false + - username: jedesah + gravatar: https://avatars1.githubusercontent.com/u/1780116?v=2&s=60 + commits: 1 + linesAdded: 23 + linesDeleted: 1 + rank: 4 + newContributor: false + - username: VladimirNik + gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 + commits: 1 + linesAdded: 78 + linesDeleted: 40 + rank: 4 + newContributor: false + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 1 + linesAdded: 14 + linesDeleted: 0 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md b/contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md new file mode 100644 index 0000000000..5f051d08a7 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-07-01-scala-fame-2014-06.md @@ -0,0 +1,98 @@ +--- +layout: famearchive +title: Contributors of June 2014 +fame-year: 2014 +fame-month: 6 +fame-month-str: June +fame-categories: + - category: Typesafe + authors: + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 14 + linesAdded: 873 + linesDeleted: 661 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 8 + linesAdded: 166 + linesDeleted: 126 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 16 + linesAdded: 1865 + linesDeleted: 437 + rank: 1 + newContributor: false + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 4 + linesAdded: 164 + linesDeleted: 44 + rank: 2 + newContributor: false + - username: odersky + gravatar: https://avatars2.githubusercontent.com/u/795990?v=2&s=60 + commits: 1 + linesAdded: 36 + linesDeleted: 10 + rank: 3 + newContributor: false + - category: Community + authors: + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 7 + linesAdded: 275 + linesDeleted: 57 + rank: 1 + newContributor: false + - username: jxcoder + gravatar: https://avatars1.githubusercontent.com/u/1075547?v=2&s=60 + commits: 4 + linesAdded: 41 + linesDeleted: 19 + rank: 2 + newContributor: true + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 2 + linesAdded: 20 + linesDeleted: 6 + rank: 3 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 2 + linesAdded: 146 + linesDeleted: 41 + rank: 3 + newContributor: false + - username: jrudolph + gravatar: https://avatars1.githubusercontent.com/u/9868?v=2&s=60 + commits: 1 + linesAdded: 97 + linesDeleted: 4 + rank: 4 + newContributor: false + - username: Blaisorblade + gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 + commits: 1 + linesAdded: 6 + linesDeleted: 1 + rank: 4 + newContributor: false + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 1 + linesAdded: 17 + linesDeleted: 5 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md b/contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md new file mode 100644 index 0000000000..c57474778d --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-08-01-scala-fame-2014-07.md @@ -0,0 +1,98 @@ +--- +layout: famearchive +title: Contributors of July 2014 +fame-year: 2014 +fame-month: 7 +fame-month-str: July +fame-categories: + - category: Typesafe + authors: + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 31 + linesAdded: 775 + linesDeleted: 712 + rank: 1 + newContributor: false + - username: phaller + gravatar: https://avatars0.githubusercontent.com/u/289943?v=2&s=60 + commits: 3 + linesAdded: 161 + linesDeleted: 49 + rank: 2 + newContributor: false + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 1 + linesAdded: 35 + linesDeleted: 34 + rank: 3 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 4 + linesAdded: 84 + linesDeleted: 29 + rank: 1 + newContributor: false + - category: Community + authors: + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 11 + linesAdded: 330 + linesDeleted: 226 + rank: 1 + newContributor: false + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 5 + linesAdded: 217 + linesDeleted: 94 + rank: 2 + newContributor: false + - username: dhgarrette + gravatar: https://avatars2.githubusercontent.com/u/484190?v=2&s=60 + commits: 2 + linesAdded: 1 + linesDeleted: 3 + rank: 3 + newContributor: true + - username: pocket7878 + gravatar: https://avatars1.githubusercontent.com/u/236528?v=2&s=60 + commits: 2 + linesAdded: 21 + linesDeleted: 13 + rank: 3 + newContributor: true + - username: dgruntz + gravatar: https://avatars3.githubusercontent.com/u/1516800?v=2&s=60 + commits: 2 + linesAdded: 4 + linesDeleted: 4 + rank: 3 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 1 + linesAdded: 26 + linesDeleted: 9 + rank: 4 + newContributor: false + - username: kzys + gravatar: https://avatars2.githubusercontent.com/u/19111?v=2&s=60 + commits: 1 + linesAdded: 19 + linesDeleted: 0 + rank: 4 + newContributor: false + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 1 + linesAdded: 3 + linesDeleted: 1 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md b/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md index 1393e01705..afef86d3be 100644 --- a/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md +++ b/contribute/scala-fame-data/_posts/2014-09-01-scala-fame-2014-08.md @@ -46,6 +46,13 @@ fame-categories: linesDeleted: 543 rank: 1 newContributor: false + - username: gbasler + gravatar: https://avatars1.githubusercontent.com/u/273035?v=2&s=60 + commits: 1 + linesAdded: 14 + linesDeleted: 22 + rank: 2 + newContributor: false - username: dgruntz gravatar: https://avatars3.githubusercontent.com/u/1516800?v=2&s=60 commits: 1 diff --git a/contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md b/contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md new file mode 100644 index 0000000000..ee67016186 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-10-01-scala-fame-2014-09.md @@ -0,0 +1,84 @@ +--- +layout: famearchive +title: Contributors of September 2014 +fame-year: 2014 +fame-month: 9 +fame-month-str: September +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 12 + linesAdded: 182 + linesDeleted: 23 + rank: 1 + newContributor: false + - username: dragos + gravatar: https://avatars2.githubusercontent.com/u/133742?v=2&s=60 + commits: 1 + linesAdded: 169 + linesDeleted: 169 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 6 + linesAdded: 262 + linesDeleted: 85 + rank: 1 + newContributor: false + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 3 + linesAdded: 1272 + linesDeleted: 1240 + rank: 2 + newContributor: false + - category: Community + authors: + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 9 + linesAdded: 1782 + linesDeleted: 1227 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 4 + linesAdded: 305 + linesDeleted: 125 + rank: 2 + newContributor: false + - username: puffnfresh + gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 + commits: 3 + linesAdded: 42 + linesDeleted: 7 + rank: 3 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 2 + linesAdded: 12 + linesDeleted: 1 + rank: 4 + newContributor: false + - username: gbasler + gravatar: https://avatars1.githubusercontent.com/u/273035?v=2&s=60 + commits: 1 + linesAdded: 115 + linesDeleted: 41 + rank: 5 + newContributor: false + - username: soc + gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 + commits: 1 + linesAdded: 4 + linesDeleted: 1 + rank: 5 + newContributor: false +--- From bd730a6d4d147e313828cf8155e71a8ac47069be Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Fri, 24 Oct 2014 16:48:29 +0200 Subject: [PATCH 0048/1704] Add 2013 scala-fame data --- .../_posts/2013-02-01-scala-fame-2013-01.md | 175 ++++++++++++++++++ .../_posts/2013-11-01-scala-fame-2013-10.md | 105 +++++++++++ .../_posts/2013-12-01-scala-fame-2013-11.md | 126 +++++++++++++ .../_posts/2014-01-01-scala-fame-2013-12.md | 147 +++++++++++++++ 4 files changed, 553 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md create mode 100644 contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md create mode 100644 contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md create mode 100644 contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md diff --git a/contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md b/contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md new file mode 100644 index 0000000000..68e990a7b7 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-02-01-scala-fame-2013-01.md @@ -0,0 +1,175 @@ +--- +layout: famearchive +title: Contributors of January 2013 +fame-year: 2013 +fame-month: 1 +fame-month-str: January +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 67 + linesAdded: 7112 + linesDeleted: 3063 + rank: 1 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 37 + linesAdded: 1812 + linesDeleted: 1158 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 22 + linesAdded: 1397 + linesDeleted: 561 + rank: 3 + newContributor: false + - username: JamesIry + gravatar: https://avatars0.githubusercontent.com/u/478012?v=2&s=60 + commits: 20 + linesAdded: 1156 + linesDeleted: 208 + rank: 4 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 5 + linesAdded: 422 + linesDeleted: 9 + rank: 5 + newContributor: false + - username: viktorklang + gravatar: https://avatars0.githubusercontent.com/u/10871?v=2&s=60 + commits: 2 + linesAdded: 187 + linesDeleted: 12 + rank: 6 + newContributor: false + - username: phaller + gravatar: https://avatars0.githubusercontent.com/u/289943?v=2&s=60 + commits: 2 + linesAdded: 21 + linesDeleted: 42 + rank: 6 + newContributor: false + - username: dragos + gravatar: https://avatars2.githubusercontent.com/u/133742?v=2&s=60 + commits: 1 + linesAdded: 6 + linesDeleted: 26 + rank: 7 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 28 + linesAdded: 8416 + linesDeleted: 2758 + rank: 1 + newContributor: false + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 8 + linesAdded: 1189 + linesDeleted: 418 + rank: 2 + newContributor: false + - username: heathermiller + gravatar: https://avatars0.githubusercontent.com/u/687163?v=2&s=60 + commits: 2 + linesAdded: 100 + linesDeleted: 15 + rank: 3 + newContributor: false + - username: namin + gravatar: https://avatars2.githubusercontent.com/u/6441?v=2&s=60 + commits: 1 + linesAdded: 23 + linesDeleted: 4 + rank: 4 + newContributor: false + - username: vjovanov + gravatar: https://avatars3.githubusercontent.com/u/352820?v=2&s=60 + commits: 1 + linesAdded: 38 + linesDeleted: 2 + rank: 4 + newContributor: false + - category: Community + authors: + - username: soc + gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 + commits: 13 + linesAdded: 886 + linesDeleted: 3152 + rank: 1 + newContributor: false + - username: kzys + gravatar: https://avatars2.githubusercontent.com/u/19111?v=2&s=60 + commits: 7 + linesAdded: 79 + linesDeleted: 40 + rank: 2 + newContributor: false + - username: danielhopkins + gravatar: https://avatars3.githubusercontent.com/u/91909?v=2&s=60 + commits: 2 + linesAdded: 146 + linesDeleted: 146 + rank: 3 + newContributor: true + - username: ViniciusMiana + gravatar: https://avatars1.githubusercontent.com/u/2053546?v=2&s=60 + commits: 2 + linesAdded: 47 + linesDeleted: 8 + rank: 3 + newContributor: false + - username: Blaisorblade + gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 + commits: 2 + linesAdded: 53 + linesDeleted: 6 + rank: 3 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 2 + linesAdded: 236 + linesDeleted: 183 + rank: 3 + newContributor: false + - username: eed3si9n + gravatar: https://avatars1.githubusercontent.com/u/184683?v=2&s=60 + commits: 1 + linesAdded: 35 + linesDeleted: 2 + rank: 4 + newContributor: false + - username: mt2309 + gravatar: https://avatars2.githubusercontent.com/u/816245?v=2&s=60 + commits: 1 + linesAdded: 24 + linesDeleted: 0 + rank: 4 + newContributor: false + - username: puffnfresh + gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 + commits: 1 + linesAdded: 39 + linesDeleted: 3 + rank: 4 + newContributor: false + - username: khernyo + gravatar: https://avatars3.githubusercontent.com/u/447532?v=2&s=60 + commits: 1 + linesAdded: 2 + linesDeleted: 3 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md b/contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md new file mode 100644 index 0000000000..557955d60c --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-11-01-scala-fame-2013-10.md @@ -0,0 +1,105 @@ +--- +layout: famearchive +title: Contributors of October 2013 +fame-year: 2013 +fame-month: 10 +fame-month-str: October +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 52 + linesAdded: 1917 + linesDeleted: 1778 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 18 + linesAdded: 1648 + linesDeleted: 1591 + rank: 2 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 9 + linesAdded: 871 + linesDeleted: 1346 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 + commits: 1 + linesAdded: 3 + linesDeleted: 0 + rank: 4 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 9 + linesAdded: 398 + linesDeleted: 2260 + rank: 1 + newContributor: false + - username: axel22 + gravatar: https://avatars1.githubusercontent.com/u/151774?v=2&s=60 + commits: 1 + linesAdded: 201 + linesDeleted: 74 + rank: 2 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 18 + linesAdded: 766 + linesDeleted: 422 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 4 + linesAdded: 114 + linesDeleted: 58 + rank: 2 + newContributor: false + - username: etaty + gravatar: https://avatars3.githubusercontent.com/u/461170?v=2&s=60 + commits: 2 + linesAdded: 2 + linesDeleted: 2 + rank: 3 + newContributor: false + - username: dotta + gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 + commits: 2 + linesAdded: 68 + linesDeleted: 6 + rank: 3 + newContributor: false + - username: qerub + gravatar: https://avatars2.githubusercontent.com/u/636?v=2&s=60 + commits: 1 + linesAdded: 8 + linesDeleted: 0 + rank: 4 + newContributor: false + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 1 + linesAdded: 31 + linesDeleted: 1 + rank: 4 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 1 + linesAdded: 215 + linesDeleted: 25 + rank: 4 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md b/contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md new file mode 100644 index 0000000000..7fba955998 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2013-12-01-scala-fame-2013-11.md @@ -0,0 +1,126 @@ +--- +layout: famearchive +title: Contributors of November 2013 +fame-year: 2013 +fame-month: 11 +fame-month-str: November +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 44 + linesAdded: 1814 + linesDeleted: 1372 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 20 + linesAdded: 1945 + linesDeleted: 1463 + rank: 2 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 4 + linesAdded: 62 + linesDeleted: 659 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 + commits: 2 + linesAdded: 137 + linesDeleted: 87 + rank: 4 + newContributor: false + - username: phaller + gravatar: https://avatars0.githubusercontent.com/u/289943?v=2&s=60 + commits: 1 + linesAdded: 105 + linesDeleted: 101 + rank: 5 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 5 + linesAdded: 82 + linesDeleted: 12 + rank: 1 + newContributor: false + - username: heathermiller + gravatar: https://avatars0.githubusercontent.com/u/687163?v=2&s=60 + commits: 1 + linesAdded: 8 + linesDeleted: 5 + rank: 2 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 10 + linesAdded: 1089 + linesDeleted: 884 + rank: 1 + newContributor: false + - username: skyluc + gravatar: https://avatars3.githubusercontent.com/u/1098830?v=2&s=60 + commits: 6 + linesAdded: 1911 + linesDeleted: 53 + rank: 2 + newContributor: false + - username: dotta + gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 + commits: 6 + linesAdded: 64 + linesDeleted: 47 + rank: 2 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 6 + linesAdded: 499 + linesDeleted: 197 + rank: 2 + newContributor: false + - username: soc + gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 + commits: 5 + linesAdded: 280 + linesDeleted: 97 + rank: 3 + newContributor: false + - username: sschaef + gravatar: https://avatars2.githubusercontent.com/u/488530?v=2&s=60 + commits: 4 + linesAdded: 182 + linesDeleted: 12 + rank: 4 + newContributor: false + - username: xuwei-k + gravatar: https://avatars3.githubusercontent.com/u/389787?v=2&s=60 + commits: 2 + linesAdded: 3 + linesDeleted: 3 + rank: 5 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 2 + linesAdded: 1179 + linesDeleted: 0 + rank: 5 + newContributor: false + - username: Blaisorblade + gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 + commits: 1 + linesAdded: 3 + linesDeleted: 3 + rank: 6 + newContributor: false +--- diff --git a/contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md b/contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md new file mode 100644 index 0000000000..80c4139b10 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-01-01-scala-fame-2013-12.md @@ -0,0 +1,147 @@ +--- +layout: famearchive +title: Contributors of December 2013 +fame-year: 2013 +fame-month: 12 +fame-month-str: December +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 28 + linesAdded: 901 + linesDeleted: 215 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 21 + linesAdded: 1386 + linesDeleted: 16746 + rank: 2 + newContributor: false + - username: paulp + gravatar: https://avatars2.githubusercontent.com/u/9135?v=2&s=60 + commits: 9 + linesAdded: 899 + linesDeleted: 409 + rank: 3 + newContributor: false + - username: huitseeker + gravatar: https://avatars2.githubusercontent.com/u/4142?v=2&s=60 + commits: 3 + linesAdded: 45 + linesDeleted: 38 + rank: 4 + newContributor: false + - category: EPFL + authors: + - username: xeno-by + gravatar: https://avatars1.githubusercontent.com/u/609152?v=2&s=60 + commits: 30 + linesAdded: 2170 + linesDeleted: 984 + rank: 1 + newContributor: false + - username: magarciaEPFL + gravatar: https://avatars2.githubusercontent.com/u/1249748?v=2&s=60 + commits: 5 + linesAdded: 47 + linesDeleted: 17 + rank: 2 + newContributor: false + - category: Community + authors: + - username: densh + gravatar: https://avatars2.githubusercontent.com/u/320966?v=2&s=60 + commits: 20 + linesAdded: 1604 + linesDeleted: 703 + rank: 1 + newContributor: false + - username: soc + gravatar: https://avatars0.githubusercontent.com/u/42493?v=2&s=60 + commits: 11 + linesAdded: 728 + linesDeleted: 606 + rank: 2 + newContributor: false + - username: Ichoran + gravatar: https://avatars3.githubusercontent.com/u/2298644?v=2&s=60 + commits: 8 + linesAdded: 1490 + linesDeleted: 286 + rank: 3 + newContributor: false + - username: som-snytt + gravatar: https://avatars2.githubusercontent.com/u/369425?v=2&s=60 + commits: 6 + linesAdded: 382 + linesDeleted: 224 + rank: 4 + newContributor: false + - username: dotta + gravatar: https://avatars2.githubusercontent.com/u/703748?v=2&s=60 + commits: 5 + linesAdded: 265 + linesDeleted: 13 + rank: 5 + newContributor: false + - username: VladimirNik + gravatar: https://avatars2.githubusercontent.com/u/2835001?v=2&s=60 + commits: 2 + linesAdded: 7 + linesDeleted: 8 + rank: 6 + newContributor: false + - username: rklaehn + gravatar: https://avatars0.githubusercontent.com/u/248257?v=2&s=60 + commits: 2 + linesAdded: 2 + linesDeleted: 83 + rank: 6 + newContributor: false + - username: qerub + gravatar: https://avatars2.githubusercontent.com/u/636?v=2&s=60 + commits: 1 + linesAdded: 10 + linesDeleted: 11 + rank: 7 + newContributor: false + - username: jrudolph + gravatar: https://avatars1.githubusercontent.com/u/9868?v=2&s=60 + commits: 1 + linesAdded: 4 + linesDeleted: 4 + rank: 7 + newContributor: false + - username: skyluc + gravatar: https://avatars3.githubusercontent.com/u/1098830?v=2&s=60 + commits: 1 + linesAdded: 112 + linesDeleted: 54 + rank: 7 + newContributor: false + - username: non + gravatar: https://avatars3.githubusercontent.com/u/218045?v=2&s=60 + commits: 1 + linesAdded: 19 + linesDeleted: 8 + rank: 7 + newContributor: false + - username: xuwei-k + gravatar: https://avatars3.githubusercontent.com/u/389787?v=2&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 7 + newContributor: false + - username: gourlaysama + gravatar: https://avatars2.githubusercontent.com/u/733438?v=2&s=60 + commits: 1 + linesAdded: 136 + linesDeleted: 55 + rank: 7 + newContributor: false +--- From 3d71e5bd8e4dae6dc1d318e8d72768b49e97bede Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Mon, 3 Nov 2014 16:34:38 +0100 Subject: [PATCH 0049/1704] Add scala-fame data --- .../_posts/2014-11-01-scala-fame-2014-10.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md diff --git a/contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md b/contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md new file mode 100644 index 0000000000..0c957577fb --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-11-01-scala-fame-2014-10.md @@ -0,0 +1,63 @@ +--- +layout: famearchive +title: Contributors of October 2014 +fame-year: 2014 +fame-month: 10 +fame-month-str: October +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars0.githubusercontent.com/u/65551?v=2&s=60 + commits: 11 + linesAdded: 414 + linesDeleted: 51 + rank: 1 + newContributor: false + - username: gkossakowski + gravatar: https://avatars0.githubusercontent.com/u/4217?v=2&s=60 + commits: 2 + linesAdded: 2 + linesDeleted: 2 + rank: 2 + newContributor: false + - username: adriaanm + gravatar: https://avatars2.githubusercontent.com/u/91083?v=2&s=60 + commits: 2 + linesAdded: 54 + linesDeleted: 18 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars3.githubusercontent.com/u/119636?v=2&s=60 + commits: 4 + linesAdded: 146 + linesDeleted: 171 + rank: 1 + newContributor: false + - category: Community + authors: + - username: roberthoedicke + gravatar: https://avatars0.githubusercontent.com/u/9093826?v=2&s=60 + commits: 9 + linesAdded: 15 + linesDeleted: 15 + rank: 1 + newContributor: true + - username: puffnfresh + gravatar: https://avatars1.githubusercontent.com/u/37715?v=2&s=60 + commits: 1 + linesAdded: 19 + linesDeleted: 10 + rank: 2 + newContributor: false + - username: Blaisorblade + gravatar: https://avatars2.githubusercontent.com/u/289960?v=2&s=60 + commits: 1 + linesAdded: 0 + linesDeleted: 93 + rank: 2 + newContributor: false +--- From 84d53a941025d8188d7ce2f8312748ed23ae6de6 Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Wed, 3 Dec 2014 16:47:25 +0100 Subject: [PATCH 0050/1704] Add scala-fame data --- .../_posts/2014-12-01-scala-fame-2014-11.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md diff --git a/contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md b/contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md new file mode 100644 index 0000000000..3c95eb2521 --- /dev/null +++ b/contribute/scala-fame-data/_posts/2014-12-01-scala-fame-2014-11.md @@ -0,0 +1,112 @@ +--- +layout: famearchive +title: Contributors of November 2014 +fame-year: 2014 +fame-month: 11 +fame-month-str: November +fame-categories: + - category: Typesafe + authors: + - username: retronym + gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 + commits: 24 + linesAdded: 650 + linesDeleted: 90 + rank: 1 + newContributor: false + - username: adriaanm + gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 + commits: 3 + linesAdded: 208 + linesDeleted: 54 + rank: 2 + newContributor: false + - username: phaller + gravatar: https://avatars1.githubusercontent.com/u/289943?v=3&s=60 + commits: 1 + linesAdded: 10 + linesDeleted: 8 + rank: 3 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 + commits: 6 + linesAdded: 782 + linesDeleted: 32 + rank: 1 + newContributor: false + - username: heathermiller + gravatar: https://avatars1.githubusercontent.com/u/687163?v=3&s=60 + commits: 2 + linesAdded: 64 + linesDeleted: 66 + rank: 2 + newContributor: false + - category: Community + authors: + - username: gourlaysama + gravatar: https://avatars3.githubusercontent.com/u/733438?v=3&s=60 + commits: 7 + linesAdded: 245 + linesDeleted: 83 + rank: 1 + newContributor: false + - username: som-snytt + gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 + commits: 3 + linesAdded: 53 + linesDeleted: 53 + rank: 2 + newContributor: false + - username: advancedxy + gravatar: https://avatars1.githubusercontent.com/u/807537?v=3&s=60 + commits: 2 + linesAdded: 2 + linesDeleted: 2 + rank: 3 + newContributor: true + - username: kanielc + gravatar: https://avatars1.githubusercontent.com/u/1334074?v=3&s=60 + commits: 2 + linesAdded: 3 + linesDeleted: 3 + rank: 3 + newContributor: true + - username: gdickinson + gravatar: https://avatars3.githubusercontent.com/u/1130928?v=3&s=60 + commits: 2 + linesAdded: 0 + linesDeleted: 380 + rank: 3 + newContributor: true + - username: Ichoran + gravatar: https://avatars2.githubusercontent.com/u/2298644?v=3&s=60 + commits: 2 + linesAdded: 35 + linesDeleted: 18 + rank: 3 + newContributor: false + - username: ruippeixotog + gravatar: https://avatars1.githubusercontent.com/u/613493?v=3&s=60 + commits: 1 + linesAdded: 81 + linesDeleted: 8 + rank: 4 + newContributor: false + - username: mpociecha + gravatar: https://avatars0.githubusercontent.com/u/6143494?v=3&s=60 + commits: 1 + linesAdded: 5 + linesDeleted: 2 + rank: 4 + newContributor: false + - username: soc + gravatar: https://avatars1.githubusercontent.com/u/42493?v=3&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 4 + newContributor: false +--- From def0d83bc4a8ae5ab2c7d07928f1717eec682e0d Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Mon, 12 Jan 2015 09:52:21 -0800 Subject: [PATCH 0051/1704] Removed PHP issues page in favor of direct JIRA queries. --- contribute/community-tickets.md | 10 -------- contribute/guide.md | 2 +- contribute/index.md | 45 +++++++++++++++++++++++++++++---- 3 files changed, 41 insertions(+), 16 deletions(-) delete mode 100644 contribute/community-tickets.md diff --git a/contribute/community-tickets.md b/contribute/community-tickets.md deleted file mode 100644 index e458d3b6f2..0000000000 --- a/contribute/community-tickets.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: page-full-width -title: Community tickets ---- - -Below is a selection of tickets from -[Scala's bug tracker](https://issues.scala-lang.org/) -that we think are a good starting point for you, as the community. - -
    diff --git a/contribute/guide.md b/contribute/guide.md index ac27e53719..9446e6ce9c 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -21,7 +21,7 @@ title: Contributing guide
    -

    Community issues

    +

    Community issues

    Get cracking on some easy to approach issues.

    diff --git a/contribute/index.md b/contribute/index.md index d2402cf4d2..d1ba675f05 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -23,9 +23,44 @@ An easy but very important way to contribute to Scala is to ### Compiler and other tools -Want to dive into the hardcore business? Check out our -[selection of community tickets](./community-tickets.html), -which are good starting points to contributing to the compiler and -surrounding tools, like ScalaDoc. - More info in our [contributing guide](./guide.html). + +### Community Tickets + +The following links provide starting points for +various contributor activities: + +
    +
    +
    +

    Documentation

    +

    Help augment or correct the documentation.

    +
    +
    +

    Core Libraries

    +

    Community bugs and enhancements on the core libs.

    +
    +
    + +
    +
    +

    Tools

    +

    Help with the Scala tool chain.

    +
    +
    +

    Compiler

    +

    Ready for a challenge? Here's the compiler bugs.

    +
    +
    + +
    +
    +

    Bugs

    +

    All bugs marked with the label community.

    +
    +
    +

    All Issues

    +

    Bugs + Enhancements marked with the label community.

    +
    +
    +
    From 76fcdfafa32914a60a0dd16e0ee7c75094e9682f Mon Sep 17 00:00:00 2001 From: Fabien Salvi Date: Wed, 14 Jan 2015 11:24:27 +0100 Subject: [PATCH 0052/1704] Add scala-fame data --- .../_posts/2015-01-01-scala-fame-2014-12.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md diff --git a/contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md b/contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md new file mode 100644 index 0000000000..c11348b33a --- /dev/null +++ b/contribute/scala-fame-data/_posts/2015-01-01-scala-fame-2014-12.md @@ -0,0 +1,70 @@ +--- +layout: famearchive +title: Contributors of December 2014 +fame-year: 2014 +fame-month: 12 +fame-month-str: December +fame-categories: + - category: Typesafe + authors: + - username: adriaanm + gravatar: https://avatars3.githubusercontent.com/u/91083?v=3&s=60 + commits: 2 + linesAdded: 962 + linesDeleted: 290 + rank: 1 + newContributor: false + - username: retronym + gravatar: https://avatars1.githubusercontent.com/u/65551?v=3&s=60 + commits: 1 + linesAdded: 5 + linesDeleted: 1 + rank: 2 + newContributor: false + - category: EPFL + authors: + - username: lrytz + gravatar: https://avatars2.githubusercontent.com/u/119636?v=3&s=60 + commits: 4 + linesAdded: 61 + linesDeleted: 50 + rank: 1 + newContributor: false + - category: Community + authors: + - username: gbasler + gravatar: https://avatars0.githubusercontent.com/u/273035?v=3&s=60 + commits: 2 + linesAdded: 567 + linesDeleted: 1 + rank: 1 + newContributor: false + - username: kanielc + gravatar: https://avatars1.githubusercontent.com/u/1334074?v=3&s=60 + commits: 1 + linesAdded: 43 + linesDeleted: 6 + rank: 2 + newContributor: false + - username: xuwei-k + gravatar: https://avatars2.githubusercontent.com/u/389787?v=3&s=60 + commits: 1 + linesAdded: 2 + linesDeleted: 2 + rank: 2 + newContributor: false + - username: gourlaysama + gravatar: https://avatars3.githubusercontent.com/u/733438?v=3&s=60 + commits: 1 + linesAdded: 1 + linesDeleted: 1 + rank: 2 + newContributor: false + - username: som-snytt + gravatar: https://avatars3.githubusercontent.com/u/369425?v=3&s=60 + commits: 1 + linesAdded: 44 + linesDeleted: 3 + rank: 2 + newContributor: false +--- From fd4cf442dbb1b58fe5dd583068bbd1dcb2b07aca Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Wed, 14 Jan 2015 14:14:00 -0800 Subject: [PATCH 0053/1704] Add scaladoc contribution page and link up. --- contribute/contribute-scaladoc.md | 116 ++++++++++++++++++++++++++++++ contribute/index.md | 2 + 2 files changed, 118 insertions(+) create mode 100644 contribute/contribute-scaladoc.md diff --git a/contribute/contribute-scaladoc.md b/contribute/contribute-scaladoc.md new file mode 100644 index 0000000000..3bea0dea5a --- /dev/null +++ b/contribute/contribute-scaladoc.md @@ -0,0 +1,116 @@ +--- +layout: page +title: Scaladoc Contributions +--- + +This page is specific to scaladoc contributions. For contributions to the scala-lang +documentation site, [help with the documentation](http://docs.scala-lang.org/contribute.html). + +*Please note, these instructions cover contributions to the scala language and +core libraries only. For other scala projects please check those projects for +the contribution steps and guidelines. Thank you.* + +## Overview + +Since the scaladoc documentation is located in scala source code files, the +process for contributing scaladoc is similar to that of contributing bug-fixes +to the scala code base, but without the requirement that there be a JIRA bug +first (just use a `scaladoc/xxxx` branch name instead of `issue/NNNN`). +However, if an issue *does* exist, please use `issue/NNNN` (where NNNN is the bug id) +instead. + +If you would like to assist us by helping us find missing documentation and +submitting issues, [please read the following section](#submit-scaladoc-issues). +If you want to contribute scaladoc, +[jump down to the next section](#contribute-scaladoc). + +## Submit Scaladoc Issues + +You can also contribute by helping us to identify missing documentation. To do +this, [browse the current API documentation](http://www.scala-lang.org/api/current/) +and identify missing, incorrect or inadequate documentation. In particular pay +attention to the package objects for important packages (these often get overlooked +for documentation and are a good place for API overviews). + +If you find an issue, please log it in the [Scala issue browser](https://issues.scala-lang.org) +**after making sure it is not already logged as an issue**. To help with +disambiguation, please use the following format for issue title: + +* Use an action describing the work required. E.g. Add, Document, Correct, Remove +* Use the full package, class/trait/object name (or state package object if + that is the case). +* Extremely short description of what to do. +* More detail can (and should) go into the issue description, including a short + justification for the issue if it provides additional detail. + +Here is an example of the title and description for an example scaladoc issue: + +`Document scala.concurrent.Future object, include code examples` + +(note the explicit companion object called out in the title) + +and the description: + +`The methods on the Future companion object are critical` +`for using Futures effectively without blocking. Provide code` +`examples of how methods like sequence, transform, fold and` +`firstCompletedOf should be used.` + +In addition to following these conventions, please add `documentation` and +`community` labels to the issue, and put them in the `Documentation and API` +component so that they show up in the correct issue filters. + +## Contribute scaladoc + +### Required reading + +Please familiarize yourself with **all** of the following before contributing +scaladoc to save time, effort, mistakes and repetition. + +* [Forking the Repo](./hacker-guide.html#set-up) follow setup steps through + branch name. If providing scaladoc related to a JIRA issue, use `issue/NNNN` + or `ticket/NNNN` as the guide states. If providing scaladoc with no associated + JIRA issue, use `scaladoc/xxxx` instead, where xxxx is a descriptive but + short branch name, e.g. `scaladoc/future-object`. +* [Scaladoc basics](http://docs.scala-lang.org/overviews/scaladoc/basics.html) + covers the use of scaladoc tags, markdown and other features. +* [Scaladoc usage](http://docs.scala-lang.org/overviews/scaladoc/usage.html) if + you are unfamiliar with all of the features of scaladoc, e.g. switching between + companions, browsing package object documentation, searching, token searches + and so on. +* Prior to commit, be sure to read + [A note about git commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). +* Also read the Scala [Pull Request Policy](https://github.com/scala/scala/wiki/Pull-Request-Policy). + Some of this document will clearly not apply (like the sections on providing tests, + however see below for some special requirements for documentation). Do still read + the whole document though, and pay close attention to the title and commit + message formats, noting *present tense*, *length limits* and that it must merge + cleanly. Remember that the title of the pull request will become the commit + message when merged. **Also**, be sure to assign one or more reviewers to the PR, list of + reviewers is at the bottom of this document, but the quick version is to add + `Review by @dickwall` **in the pull request comments**. + +### Extra Requirements for Scaladoc Commits + +Although some of the requirements for bug fix pull requests are not needed for +scaladoc commits, here are the step by step requirements to ensure your scaladoc +PR is merged in smoothly: + +* Any and all code examples provided should *be correct, compile and run* as + expected (ensure this in the REPL or your IDE). +* Spelling must be checked for all written language *and* code examples where + possible. Most editors have some spell checking feature available. Obviously + scala code is likely to flag as mis-spelled sometimes, but any written language + should be checked. If you can also use a grammar checker, even better. We + *will* ask for spelling and grammar to be corrected before acceptance. +* You **must** also run `ant docs`, fix any problems and check the formatting and + layout of your changes. Again, corrections will be required if formatting or + layout are inadequate. After running `ant docs` the generated documents can be + found under the `build/scaladoc/` folders (probably in the `library` folder + but maybe under the others depending on what section of the scala source you + are working on). +* All of these steps are required to save time for both the reviewers and + contributors. It benefits everyone to ensure that the PR to merge process is + as smooth and streamlined as possible. + +Thanks for helping us improve the scaladoc. diff --git a/contribute/index.md b/contribute/index.md index d2402cf4d2..995617634d 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -20,6 +20,8 @@ how to efficiently report a bug. An easy but very important way to contribute to Scala is to [help with the documentation](http://docs.scala-lang.org/contribute.html). +If you want to [contribute to scaladoc](./contribute-scaladoc.html), the +process is slightly different, since scaladoc lives alongside the source code. ### Compiler and other tools From b049734092803dafea95e4318322ff0e6102ff33 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Tue, 27 Jan 2015 09:20:21 -0800 Subject: [PATCH 0054/1704] Corrected JIRA search URL for compiler bugs. --- contribute/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/index.md b/contribute/index.md index d1ba675f05..65c9c501cd 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -48,7 +48,7 @@ various contributor activities:

    Help with the Scala tool chain.

    -

    Compiler

    +

    Compiler

    Ready for a challenge? Here's the compiler bugs.

    From b53c6bd2d67eddb97f61c857ed35989425da73ee Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 29 Jan 2015 14:21:15 +0100 Subject: [PATCH 0055/1704] Wording tweaks --- contribute/contribute-scaladoc.md | 75 +++++++++++++++++-------------- contribute/index.md | 6 +-- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/contribute/contribute-scaladoc.md b/contribute/contribute-scaladoc.md index 3bea0dea5a..d9bd931de3 100644 --- a/contribute/contribute-scaladoc.md +++ b/contribute/contribute-scaladoc.md @@ -1,38 +1,45 @@ --- layout: page -title: Scaladoc Contributions +title: Contribute to API Documentation --- -This page is specific to scaladoc contributions. For contributions to the scala-lang -documentation site, [help with the documentation](http://docs.scala-lang.org/contribute.html). +This page is specific to API documentation contributions – that is, API +documentation for +[Scala's standard library](http://scala-lang.org/api/current/#package) – +sometimes referred to as Scaladoc contributions. -*Please note, these instructions cover contributions to the scala language and -core libraries only. For other scala projects please check those projects for -the contribution steps and guidelines. Thank you.* +For contributions to tutorial and guide-style documentation on +[docs.scala-lang.org](http://docs.scala-lang.org), +see the ["doc-site"'s contribution guide](http://docs.scala-lang.org/contribute.html). + +*Please note, these instructions cover documentation contributions Scala core +libraries only. For other Scala projects please check those projects for the +contribution steps and guidelines. Thank you.* ## Overview -Since the scaladoc documentation is located in scala source code files, the -process for contributing scaladoc is similar to that of contributing bug-fixes -to the scala code base, but without the requirement that there be a JIRA bug -first (just use a `scaladoc/xxxx` branch name instead of `issue/NNNN`). -However, if an issue *does* exist, please use `issue/NNNN` (where NNNN is the bug id) +Since API documentation is located in Scala source code files, the +process for contributing API documentation is similar to that of contributing bug-fixes +to the Scala code base, but without the requirement that there be an issue filed on JIRA +first (when forking/branching, just use a `scaladoc/xxxx` branch name instead of `issue/NNNN`). +However, if an issue *does* exist, please use `issue/NNNN` (where NNNN is the ticket number) instead. If you would like to assist us by helping us find missing documentation and -submitting issues, [please read the following section](#submit-scaladoc-issues). -If you want to contribute scaladoc, -[jump down to the next section](#contribute-scaladoc). +submitting bug reports for existing documentation, +[please read the following section](#contribute-api-documentation-bug-reports). +If you want to contribute new API documentation, +[jump down to the next section](#contribute-new-api-documentation). -## Submit Scaladoc Issues +## Contribute API Documentation Bug Reports -You can also contribute by helping us to identify missing documentation. To do -this, [browse the current API documentation](http://www.scala-lang.org/api/current/) -and identify missing, incorrect or inadequate documentation. In particular pay -attention to the package objects for important packages (these often get overlooked -for documentation and are a good place for API overviews). +One good way to contribute is by helping us to identify missing documentation. To do +this, [browse the current API documentationn](http://www.scala-lang.org/api/current/) +and identify missing, incorrect or inadequate documentation. A good place to start is +is package objects for important packages (these often get overlooked for documentation +and are a good place for API overviews). -If you find an issue, please log it in the [Scala issue browser](https://issues.scala-lang.org) +If you find an issue, please log it in the [Scala issue tracker](https://issues.scala-lang.org) **after making sure it is not already logged as an issue**. To help with disambiguation, please use the following format for issue title: @@ -43,7 +50,7 @@ disambiguation, please use the following format for issue title: * More detail can (and should) go into the issue description, including a short justification for the issue if it provides additional detail. -Here is an example of the title and description for an example scaladoc issue: +Here is an example of the title and description for an example API documentation issue: `Document scala.concurrent.Future object, include code examples` @@ -60,22 +67,22 @@ In addition to following these conventions, please add `documentation` and `community` labels to the issue, and put them in the `Documentation and API` component so that they show up in the correct issue filters. -## Contribute scaladoc +## Contribute New API Documentation -### Required reading +### Required Reading Please familiarize yourself with **all** of the following before contributing -scaladoc to save time, effort, mistakes and repetition. +new API documentation to save time, effort, mistakes and repetition. * [Forking the Repo](./hacker-guide.html#set-up) follow setup steps through - branch name. If providing scaladoc related to a JIRA issue, use `issue/NNNN` - or `ticket/NNNN` as the guide states. If providing scaladoc with no associated + branch name. If providing new documentation related to an existing JIRA issue, use `issue/NNNN` + or `ticket/NNNN` as the guide states. If providing API documentation with no associated JIRA issue, use `scaladoc/xxxx` instead, where xxxx is a descriptive but short branch name, e.g. `scaladoc/future-object`. -* [Scaladoc basics](http://docs.scala-lang.org/overviews/scaladoc/basics.html) +* [Scaladoc for library authors](http://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) covers the use of scaladoc tags, markdown and other features. -* [Scaladoc usage](http://docs.scala-lang.org/overviews/scaladoc/usage.html) if - you are unfamiliar with all of the features of scaladoc, e.g. switching between +* [Scaladoc's interface](http://docs.scala-lang.org/overviews/scaladoc/interface.html) + covers all of the features of Scaladoc's interface, e.g. switching between companions, browsing package object documentation, searching, token searches and so on. * Prior to commit, be sure to read @@ -93,24 +100,24 @@ scaladoc to save time, effort, mistakes and repetition. ### Extra Requirements for Scaladoc Commits Although some of the requirements for bug fix pull requests are not needed for -scaladoc commits, here are the step by step requirements to ensure your scaladoc +API documentation commits, here are the step by step requirements to ensure your API documentation PR is merged in smoothly: * Any and all code examples provided should *be correct, compile and run* as expected (ensure this in the REPL or your IDE). * Spelling must be checked for all written language *and* code examples where possible. Most editors have some spell checking feature available. Obviously - scala code is likely to flag as mis-spelled sometimes, but any written language + Scala code is likely to flag as mis-spelled sometimes, but any written language should be checked. If you can also use a grammar checker, even better. We *will* ask for spelling and grammar to be corrected before acceptance. * You **must** also run `ant docs`, fix any problems and check the formatting and layout of your changes. Again, corrections will be required if formatting or layout are inadequate. After running `ant docs` the generated documents can be found under the `build/scaladoc/` folders (probably in the `library` folder - but maybe under the others depending on what section of the scala source you + but maybe under the others depending on what section of the Scala source you are working on). * All of these steps are required to save time for both the reviewers and contributors. It benefits everyone to ensure that the PR to merge process is as smooth and streamlined as possible. -Thanks for helping us improve the scaladoc. +Thanks for helping us improve the Scaladoc API documentation! diff --git a/contribute/index.md b/contribute/index.md index 995617634d..5dda418cbf 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -19,9 +19,9 @@ how to efficiently report a bug. ### Help with the documentation An easy but very important way to contribute to Scala is to -[help with the documentation](http://docs.scala-lang.org/contribute.html). -If you want to [contribute to scaladoc](./contribute-scaladoc.html), the -process is slightly different, since scaladoc lives alongside the source code. +[help with the guide/tutorial-style documentation on docs.scala-lang.org](http://docs.scala-lang.org/contribute.html). +If you want to [contribute to Scala standard library API docmentation](./contribute-scaladoc.html), the +process is slightly different, since API documentation lives within Scala standard library source code. ### Compiler and other tools From b27128fd7967d882e274a80fc0328c7d4df6f4c0 Mon Sep 17 00:00:00 2001 From: Heather Miller Date: Thu, 29 Jan 2015 14:25:00 +0100 Subject: [PATCH 0056/1704] Some reorganization and tweaks --- contribute/index.md | 2 +- ...-scaladoc.md => scala-standard-library-api-documentation.md} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename contribute/{contribute-scaladoc.md => scala-standard-library-api-documentation.md} (99%) diff --git a/contribute/index.md b/contribute/index.md index 5dda418cbf..f2bed88bae 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -20,7 +20,7 @@ how to efficiently report a bug. An easy but very important way to contribute to Scala is to [help with the guide/tutorial-style documentation on docs.scala-lang.org](http://docs.scala-lang.org/contribute.html). -If you want to [contribute to Scala standard library API docmentation](./contribute-scaladoc.html), the +If you want to [contribute to Scala standard library API docmentation](./scala-standard-library-api-documentation.html), the process is slightly different, since API documentation lives within Scala standard library source code. ### Compiler and other tools diff --git a/contribute/contribute-scaladoc.md b/contribute/scala-standard-library-api-documentation.md similarity index 99% rename from contribute/contribute-scaladoc.md rename to contribute/scala-standard-library-api-documentation.md index d9bd931de3..ec41aee3cb 100644 --- a/contribute/contribute-scaladoc.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -97,7 +97,7 @@ new API documentation to save time, effort, mistakes and repetition. reviewers is at the bottom of this document, but the quick version is to add `Review by @dickwall` **in the pull request comments**. -### Extra Requirements for Scaladoc Commits +### Extra Requirements for Scaladoc Documentation Commits Although some of the requirements for bug fix pull requests are not needed for API documentation commits, here are the step by step requirements to ensure your API documentation From 66f39d2e292cdc347b7d3c8d59835e83c59739f6 Mon Sep 17 00:00:00 2001 From: Justin Pihony Date: Mon, 2 Feb 2015 15:32:49 -0500 Subject: [PATCH 0057/1704] Fix the Forking url and grammatical consistency Review by @dickwall --- .../scala-standard-library-api-documentation.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index ec41aee3cb..de5a970bbe 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -21,8 +21,9 @@ contribution steps and guidelines. Thank you.* Since API documentation is located in Scala source code files, the process for contributing API documentation is similar to that of contributing bug-fixes to the Scala code base, but without the requirement that there be an issue filed on JIRA -first (when forking/branching, just use a `scaladoc/xxxx` branch name instead of `issue/NNNN`). -However, if an issue *does* exist, please use `issue/NNNN` (where NNNN is the ticket number) +first. When forking/branching, just use a `scaladoc/xxxx` branch name, where xxxx is a +descriptive, but short branch name (e.g. `scaladoc/future-object`). +However, if an issue *does* exist, please use `issue/NNNN`, where NNNN is the ticket number, instead. If you would like to assist us by helping us find missing documentation and @@ -35,8 +36,8 @@ If you want to contribute new API documentation, One good way to contribute is by helping us to identify missing documentation. To do this, [browse the current API documentationn](http://www.scala-lang.org/api/current/) -and identify missing, incorrect or inadequate documentation. A good place to start is -is package objects for important packages (these often get overlooked for documentation +and identify missing, incorrect or inadequate documentation. A good place to start is +package objects for important packages (these often get overlooked for documentation and are a good place for API overviews). If you find an issue, please log it in the [Scala issue tracker](https://issues.scala-lang.org) @@ -74,11 +75,10 @@ component so that they show up in the correct issue filters. Please familiarize yourself with **all** of the following before contributing new API documentation to save time, effort, mistakes and repetition. -* [Forking the Repo](./hacker-guide.html#set-up) follow setup steps through - branch name. If providing new documentation related to an existing JIRA issue, use `issue/NNNN` +* [Forking the Repo](./hacker-guide.html#2_set_up) - follow the setup steps through + the Branch section. If providing new documentation related to an existing JIRA issue, use `issue/NNNN` or `ticket/NNNN` as the guide states. If providing API documentation with no associated - JIRA issue, use `scaladoc/xxxx` instead, where xxxx is a descriptive but - short branch name, e.g. `scaladoc/future-object`. + JIRA issue, use `scaladoc/xxxx` instead. * [Scaladoc for library authors](http://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) covers the use of scaladoc tags, markdown and other features. * [Scaladoc's interface](http://docs.scala-lang.org/overviews/scaladoc/interface.html) From f2a174cea939a311901274c187ffafadf17ebed0 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Mon, 2 Feb 2015 14:10:10 -0800 Subject: [PATCH 0058/1704] Correct a couple of spelling typos on contribution pages. --- contribute/index.md | 2 +- .../scala-standard-library-api-documentation.md | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/contribute/index.md b/contribute/index.md index a065565a98..9ea981b115 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -5,7 +5,7 @@ title: Contribute The Scala programming language is an open source project with a very diverse community, where people from all over the world contribute their work, -with everyone benefitting from friendly help and advice, and +with everyone benefiting from friendly help and advice, and kindly helping others in return. So why not join the Scala community and help everyone make things better? diff --git a/contribute/scala-standard-library-api-documentation.md b/contribute/scala-standard-library-api-documentation.md index de5a970bbe..519c85a030 100644 --- a/contribute/scala-standard-library-api-documentation.md +++ b/contribute/scala-standard-library-api-documentation.md @@ -4,11 +4,11 @@ title: Contribute to API Documentation --- This page is specific to API documentation contributions – that is, API -documentation for -[Scala's standard library](http://scala-lang.org/api/current/#package) – +documentation for +[Scala's standard library](http://scala-lang.org/api/current/#package) – sometimes referred to as Scaladoc contributions. -For contributions to tutorial and guide-style documentation on +For contributions to tutorial and guide-style documentation on [docs.scala-lang.org](http://docs.scala-lang.org), see the ["doc-site"'s contribution guide](http://docs.scala-lang.org/contribute.html). @@ -21,13 +21,13 @@ contribution steps and guidelines. Thank you.* Since API documentation is located in Scala source code files, the process for contributing API documentation is similar to that of contributing bug-fixes to the Scala code base, but without the requirement that there be an issue filed on JIRA -first. When forking/branching, just use a `scaladoc/xxxx` branch name, where xxxx is a +first. When forking/branching, just use a `scaladoc/xxxx` branch name, where xxxx is a descriptive, but short branch name (e.g. `scaladoc/future-object`). However, if an issue *does* exist, please use `issue/NNNN`, where NNNN is the ticket number, instead. If you would like to assist us by helping us find missing documentation and -submitting bug reports for existing documentation, +submitting bug reports for existing documentation, [please read the following section](#contribute-api-documentation-bug-reports). If you want to contribute new API documentation, [jump down to the next section](#contribute-new-api-documentation). @@ -35,9 +35,9 @@ If you want to contribute new API documentation, ## Contribute API Documentation Bug Reports One good way to contribute is by helping us to identify missing documentation. To do -this, [browse the current API documentationn](http://www.scala-lang.org/api/current/) -and identify missing, incorrect or inadequate documentation. A good place to start is -package objects for important packages (these often get overlooked for documentation +this, [browse the current API documentation](http://www.scala-lang.org/api/current/) +and identify missing, incorrect or inadequate documentation. A good place to start is +package objects for important packages (these often get overlooked for documentation and are a good place for API overviews). If you find an issue, please log it in the [Scala issue tracker](https://issues.scala-lang.org) From db2a14f159ab6db8c802cb415885cc1645cbcb85 Mon Sep 17 00:00:00 2001 From: JustinPihony Date: Tue, 3 Feb 2015 21:35:08 -0500 Subject: [PATCH 0059/1704] Add u to docmentation typo Review by @dickwall --- contribute/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribute/index.md b/contribute/index.md index 9ea981b115..338ff06a06 100644 --- a/contribute/index.md +++ b/contribute/index.md @@ -20,7 +20,7 @@ how to efficiently report a bug. An easy but very important way to contribute to Scala is to [help with the guide/tutorial-style documentation on docs.scala-lang.org](http://docs.scala-lang.org/contribute.html). -If you want to [contribute to Scala standard library API docmentation](./scala-standard-library-api-documentation.html), the +If you want to [contribute to Scala standard library API documentation](./scala-standard-library-api-documentation.html), the process is slightly different, since API documentation lives within Scala standard library source code. ### Compiler and other tools From eb1e3cbd55fa0fb19c8f0f9eb444cd16527d4d15 Mon Sep 17 00:00:00 2001 From: Dick Wall Date: Mon, 9 Feb 2015 14:51:26 -0800 Subject: [PATCH 0060/1704] Update contributor pages for bugs/issues - provide issue checklist - Individual changes to docs: - corelibs.md and tools.md - add placeholders/call for help - documentation.md - small changes and spelling only - guide.md - bugfix checklist with links to other resources for each step - hacker-guide.md - spelling corrections - index.md - organize by type of contribution - scala-internals.md - new doc describing use of scala-internals for coordination - scala-standard-library-api-documentation.md - spelling/minor --- contribute/corelibs.md | 8 + contribute/documentation.md | 92 ++++++++---- contribute/guide.md | 137 ++++-------------- contribute/hacker-guide.md | 6 +- contribute/index.md | 67 +++++++-- contribute/scala-internals.md | 45 ++++++ ...cala-standard-library-api-documentation.md | 6 +- contribute/tools.md | 8 + 8 files changed, 213 insertions(+), 156 deletions(-) create mode 100644 contribute/corelibs.md create mode 100644 contribute/scala-internals.md create mode 100644 contribute/tools.md diff --git a/contribute/corelibs.md b/contribute/corelibs.md new file mode 100644 index 0000000000..1429ec87ff --- /dev/null +++ b/contribute/corelibs.md @@ -0,0 +1,8 @@ +--- +layout: page +title: Core Library Contributions +--- +## Under Construction + +If you would like to help complete this document, welcome, and please head over and read [Documentation Contributions](./documentation.html#the-scala-language-site), +and let us know on the [scala-internals](https://groups.google.com/forum/#!forum/scala-internals) forum (suggested post title: `[docs] Core Library Contributions`) so that we can get you hooked up with the right people. \ No newline at end of file diff --git a/contribute/documentation.md b/contribute/documentation.md index 05b2455a5f..da20b9360d 100644 --- a/contribute/documentation.md +++ b/contribute/documentation.md @@ -2,28 +2,70 @@ layout: page title: Documentation Contributions --- -# Contributing documentation to the Scala project - -TODO - - +## Contributing Documentation to the Scala project + +There are several ways you can help out with the improvement of Scala documentation. These include: + +* Code examples and tutorials in activator templates. +* The Scala Wiki +* API Documentation in Scaladoc +* Guides, Overviews, Tutorials, Cheat Sheets and more on the docs.scala-lang.org site +* Updating Documents on the Main Scala Language Site (this one) + +Please read this page, and the pages linked from this one, fully before contributing documentation. Many of the questions you have will be answered in these resources. If you have a question that isn't answered, feel free to ask on the [scala-internals Google group](https://groups.google.com/forum/#!forum/scala-internals) and then, please, submit a pull request with updated documentation reflecting that answer. + +**General requirements** for documentation submissions include spell-checking all written language, ensuring code samples compile and run correctly, correct grammar, and clean formatting/layout of the documentation. + +Thanks + +### Examples/Tutorials in Activator Templates + +[Typesafe Activator](https://typesafe.com/community/core-tools/activator-and-sbt) +is a tool based on SBT, with a UI mode that is ideal for code based tutorials, overviews and walk-throughs. To contribute an example in activator, you can fork an existing template, edit it, add a tutorial, upload it to github and then submit the github project into the template repository. It's the fastest way to produce a working code example with tutorial. + +Please see [Contributing an Activator Template](https://typesafe.com/activator/template/contribute) for more details. + +### API Documentation (Scaladoc) + +The Scala API documentation lives with the scala project source code. There are many ways you can help with improving Scaladoc, including: + +* [Log issues for missing scaladoc documentation](./scala-standard-library-api-documentation.html#contribute-api-documentation-bug-reports) - +Please *follow the issue submission process closely* to help prevent duplicate issues being created. +* [Claim Scaladoc Issues and Provide Documentation](./scala-standard-library-api-documentation.html) - please claim issues prior to working on a specific scaladoc task to prevent duplication of effort. If you sit on an issue for too long without submitting a pull request, it will revert back to unassigned and you will need to re-claim it. +* You can also just +[submit new Scaladoc](./scala-standard-library-api-documentation.html) +without creating an issue, but please look to see if there is an issue already submitted for your task and claim it if there is. If not, please post your intention to work on a specific scaladoc task on scala-internals so that people know what you are doing. + +### The Scala Wiki + +The [Scala wiki](https://wiki.scala-lang.org/) could be a useful resource, but tends to get out of date quickly. It is perhaps best viewed as a place for information to temporarily live while it is constructed and refined, but with an aim to putting the material into the [docs.scala-lang.org](http://docs.scala-lang.org) site eventually (see the next section). Nonetheless, it is a fast way to add some public documentation. + +The wiki is self documenting, so make sure to take a look at the [home page](https://wiki.scala-lang.org/) to get started. Please consider contributions to [docs.scala-lang.org](docs.scala-lang.org) for more enduring documentation, even though it is more work to get through the review process for the main doc site. + +### The Main Scala Documentation Site + +[docs.scala-lang.org](https://wiki.scala-lang.org/) houses the primary source of written, non-API documentation for Scala. It's a github project that you can fork and submit pull requests from. It includes: + +* Overviews +* Tutorials +* Conversion Guides from Other Languages +* Cheat Sheets +* A Glossary +* The Scala Style Guide +* The Scala Language Specification +* SIP (Scala Improvement Process) Proposals +and more + +Please read [contributing to the docs.scala-lang.org site](http://docs.scala-lang.org/contribute.html) through before embarking on changes. The site uses +the [Jekyll](http://jekyllrb.com/) markdown engine so you will need to follow the instructions to get that running as well. + +### The Scala Language Site + +Additional high-level documentation (including documentation on contributing +to Scala and related projects) is provided on the main +[Scala Language site](http://scala-lang.org), and is also kept in the +[scala-lang github project](https://github.com/scala/scala-lang) which may be forked to create pull requests. + +Please read both the +[docs.scala-lang.org contribution](http://docs.scala-lang.org/contribute.html) document and the scala-lang.org github README file before embarking on any changes to the Scala language site, as it uses the same Jekyll markdown tool and many of the same conventions as the Scala documentation site. + diff --git a/contribute/guide.md b/contribute/guide.md index 9446e6ce9c..809c6558d5 100644 --- a/contribute/guide.md +++ b/contribute/guide.md @@ -1,5 +1,5 @@ --- -layout: page-full-width +layout: page title: Contributing guide --- @@ -13,10 +13,6 @@ title: Contributing guide

    Report an issue

    File a bug report or a feature request.

    -
    -

    Documentation

    -

    Improve the documentation itself.

    -
    @@ -28,10 +24,6 @@ title: Contributing guide

    Hacker's guide

    Learn to write good code and improve your chances of contributing to the Scala galaxy.

    -
    -

    Hall of Fame

    -

    Track your rockstar status in the community.

    -