Skip to content

Commit

Permalink
Merge pull request #89 from danicheg/pr/#46
Browse files Browse the repository at this point in the history
Update README.md
  • Loading branch information
danicheg authored Jan 14, 2024
2 parents a84d5eb + 9c93da5 commit ad4110c
Showing 1 changed file with 10 additions and 31 deletions.
41 changes: 10 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,27 @@
When compile times become a problem, how can Scala developers reason about
the relation between their code and compile times?

## Maintenance status

This plugin was created at the [Scala Center](http://scala.epfl.ch) in 2017 and 2018 as the result of the proposal [SCP-10](https://github.com/scalacenter/advisoryboard/blob/main/proposals/010-compiler-profiling.md), submitted by a [corporate member](https://scala.epfl.ch/corporate-membership.html) of the board. The Center is seeking new corporate members to fund activities such as these, to benefit the entire Scala community.

[Version 1.0](https://github.com/scalacenter/scalac-profiling/releases/tag/v1.0.0) of the plugin supports Scala 2.12.

The plugin is now community-maintained, with maintenance overseen by the Center. Thanks to volunteer contributors, there is now a 1.1.0-RC1 [release candidate](https://github.com/scalacenter/scalac-profiling/releases/tag/v1.1.0-RC1) targeting Scala 2.13 (in addition to 2.12). We invite interested users to test the release candidate and submit further improvements.
## Installation

## Install

Add `scalac-profiling` in any sbt project by specifying the following project
setting.
Add the `scalac-profiling` compiler plugin into your project:

```scala
addCompilerPlugin("ch.epfl.scala" %% "scalac-profiling" % "<version>" cross CrossVersion.full)
```

## How to use
Note that in Scala 2.13, the preferred form of the compiler option to enable statistics is `-Vstatistics`. It is part of the family of `-V` flags that enable various "verbose" behaviors (in 2.12, the flag is called `-Ystatistics`).

To learn how to use the plugin, read [Speeding Up Compilation Time with `scalac-profiling`](https://www.scala-lang.org/blog/2018/06/04/scalac-profiling.html) in the scala-lang blog.
Learn more at https://scalacenter.github.io/scalac-profiling.

Note that in Scala 2.13, the preferred form of the compiler option to enable statistics is `-Vstatistics`. It is part of the family of `-V` flags that enable various "verbose" behaviors. (In 2.12, the flag is called `-Ystatistics`.)
Also, you may wish to read the [Speeding Up Compilation Time with `scalac-profiling`](https://www.scala-lang.org/blog/2018/06/04/scalac-profiling.html) in the scala-lang blog. Worth noting that the article is 5+ years old, and hasn't been updated. But still, you may gather a lot of ideas while reading it.

### Compiler plugin options
## Maintenance status

All the compiler plugin options are **prepended by `-P:scalac-profiling:`**.
This tool was created at the [Scala Center](http://scala.epfl.ch) in 2017 and 2018 as the result of the proposal [SCP-10](https://github.com/scalacenter/advisoryboard/blob/main/proposals/010-compiler-profiling.md), submitted by a [corporate member](https://scala.epfl.ch/corporate-membership.html) of the board. The Center is seeking new corporate members to fund activities such as these, to benefit the entire Scala community.

* `generate-global-flamegraph`: Creates a global flamegraph of implicit searches for all compilation units.
Use the `-P:scalac-profiling:sourceroot` option to manage the root directory,
otherwise, a working directory (defined by the `user.dir` property) will be picked.
* `generate-macro-flamegraph`: Generate a flamegraph for macro expansions.
The flamegraph for implicit searches is enabled by default.
* `generate-profiledb`: Generate profiledb.
* `print-failed-implicit-macro-candidates`: Print trees of all failed implicit searches that
triggered a macro expansion.
* `print-search-result`: Print the result retrieved by an implicit search.
Example: `-P:scalac-profiling:print-search-result:$MACRO_ID`.
* `show-concrete-implicit-tparams`: Use more concrete type parameters in the implicit search flamegraph.
Note that it may change the shape of the flamegraph.
* `show-profiles`: Show implicit searches and macro expansions by type and call-site.
* `sourceroot`: Tell the plugin what is the source directory of the project.
Example: `-P:scalac-profiling:sourceroot:$PROJECT_BASE_DIR`.
[Version 1.0](https://github.com/scalacenter/scalac-profiling/releases/tag/v1.0.0) of the plugin supports Scala 2.12.

The plugin is now community-maintained, with maintenance overseen by the Center. Thanks to volunteer contributors, there is now a 1.1.0-RC1 [release candidate](https://github.com/scalacenter/scalac-profiling/releases/tag/v1.1.0-RC1) targeting Scala 2.13 (in addition to 2.12). We invite interested users to test the release candidate and submit further improvements.

## Historical context

Expand Down

0 comments on commit ad4110c

Please sign in to comment.