<commit_before># Contributing

## Getting started

You need the following:

- Git
- JDK 8
- SBT

### Workflow

- Make sure you have signed the [Scala CLA](http://www.lightbend.com/contribute/cla/scala).
- You should perform your work in its own Git branch.
- Then open a pull request on GitHub, with `master` as base branch.

### Build

- Compile the collections and run the tests:
  
  ~~~
  >; compile; test
  ~~~
- Run the memory benchmark:
  
  ~~~
  > memoryBenchmark/charts
  ~~~
- Run the execution time benchmark:
  
  ~~~
  > timeBenchmark/charts
  ~~~
  - Charts are produced as .png files in the `benchmarks/time/target/` directory.
    Each `@Benchmark` method produces a .png chart with the same name (e.g. the
    `foreach` benchmark produces a `foreach.png` chart). In each chart, we
    aggregate results from all the benchmark classes that have a benchmark with
    the same name (e.g. the `foreach.png` chart aggregates information from the
    `ListBenchmark`’s `foreach` method, `LazyListBenchmark`’s `foreach` method,
    etc.).
  - Running the whole benchmark suite takes time (several hours) and produces
    charts containing series for each collection type. You can restrict the
    benchmarks to be run by JMH to get more readable results. For instance, to
    run only benchmarks whose name contain `Array`:
    
    ~~~
    > timeBenchmark/charts Array
    ~~~

## Roadmap

1. Q2 2017: release a v0.2.0 targeting Scala 2.13 and Dotty.
    - Implement most of the current collections types
    - Implement most of the current collections operations
    - Alternative to `CanBuildFrom` to get implicit builders
2. Q3 2017: consider the inclusion of new collection types and new operations
   (e.g. joins)
    - Decisions will be made on the basis of benchmarks
3. Q4 2017: external modules for parallel collections and Java interoperability<commit_msg>even more details in the roadmap<commit_after># Contributing

## Getting started

You need the following:

- Git
- JDK 8
- SBT

### Workflow

- Make sure you have signed the [Scala CLA](http://www.lightbend.com/contribute/cla/scala).
- You should perform your work in its own Git branch.
- Then open a pull request on GitHub, with `master` as base branch.

### Build

- Compile the collections and run the tests:
  
  ~~~
  >; compile; test
  ~~~
- Run the memory benchmark:
  
  ~~~
  > memoryBenchmark/charts
  ~~~
- Run the execution time benchmark:
  
  ~~~
  > timeBenchmark/charts
  ~~~
  - Charts are produced as .png files in the `benchmarks/time/target/` directory.
    Each `@Benchmark` method produces a .png chart with the same name (e.g. the
    `foreach` benchmark produces a `foreach.png` chart). In each chart, we
    aggregate results from all the benchmark classes that have a benchmark with
    the same name (e.g. the `foreach.png` chart aggregates information from the
    `ListBenchmark`’s `foreach` method, `LazyListBenchmark`’s `foreach` method,
    etc.).
  - Running the whole benchmark suite takes time (several hours) and produces
    charts containing series for each collection type. You can restrict the
    benchmarks to be run by JMH to get more readable results. For instance, to
    run only benchmarks whose name contain `Array`:
    
    ~~~
    > timeBenchmark/charts Array
    ~~~

## Roadmap

1. Q2 2017: release a v0.2.0 targeting Scala 2.13 and Dotty.
    - Implement most of the current collections types
    - Implement most of the current collections operations
    - Alternative to `CanBuildFrom` to get implicit builders
    - Include tests for correctness (taken from the current collections
      and from scala-collections-laws)
    - Provide a rewriting tool that migrates a code base from the current
      collections to the strawman
2. Q3 2017: add features and tune for performance
    - Decisions will be made on the basis of benchmarks
    - Add Scala.js support
    - Consider the inclusion of new collection types (such as `Spandex`, `Steque`
      or `ArrayDeque`)
    - Consider the introduction of new operations (such as database-like joins,
      variants of groupBy, etc.)
    - Java interoperability
    - Separate project for parallel collections
3. Q4 2017: move to `scala/scala` repository
{'fraction_non_alphanumeric': 0.07743153918791312, 'fraction_numerical': 0.011803588290840416, 'mean_word_length': 3.237, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2043786', 'n_tokens_mistral': 1274, 'n_tokens_neox': 1174, 'n_words': 539}