sbt-mima-plugin
JMH
Our great sponsors
sbt-mima-plugin | JMH | |
---|---|---|
2 | 3 | |
449 | 780 | |
0.9% | -0.1% | |
7.7 | 7.0 | |
2 days ago | about 1 month ago | |
Scala | Scala | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sbt-mima-plugin
-
Semver violations are common, better tooling is the answer
In the Scala ecosystem, MiMa [1] has been in widespread use for years. It automatically checks compatibility for the binary API of a library. Every library with any amount of success uses it. One could say it's the foundation of a stable ecosystem. We also have sbt-version-policy [2] to set it up with minimal configuration (and directly relate it to SemVer).
More recently, we got tasty-mima [3], which checks compatibility at the type system level, rather than the binary level.
[1] https://github.com/lightbend/mima
-
sbt/scalatest library or plugin that only re-runs tests for code that changed
Off the top of my head, a naive & approximate solution would be to use test coverage to find out which tests test which blocks of code. Then, when a binary, syntactic incompatibility is detected, re-run only these tests captured for that piece of code.
JMH
-
Scala collections benchmark - revisited
Also, it has an amazing SBT plugin integration.
-
Why is Scala so much slower than JavaScript/Node at running iterations?
Take a look at sbt-jhm for doing benchmarks. Java in particular is hard to measure because of optimizations that happen at run-time. jhm runs multiple iterations and gives tools to ensure that function calls and loops that may be optimized away are kept around and tested. You may also find some cases that are faster in node.js because the Javascript V8 engine is highly optimized.
-
Help with making backtracking more efficient
Also, if you really want to know what the performance characteristics are you should use JMH (sbt plugin https://github.com/sbt/sbt-jmh). Not sure how you are evaluating the performance but things like JVM startup and warming can make a big difference. JMH will give you a better idea of real world performance when the JVM is already started and any relevant hot code has been JIT compiled.
What are some alternatives?
mdoc - Typechecked markdown documentation for Scala
JITWatch - Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.
sbt-header - sbt-header is an sbt plugin for creating file headers, e.g. copyright headers
honest-profiler - A sampling JVM profiler without the safepoint sample bias
sbt-revolver - An SBT plugin for dangerously fast development turnaround in Scala
Sniffy - Sniffy - interactive profiler, testing and chaos engineering tool for Java
sbt-pack - A sbt plugin for creating distributable Scala packages.
LatencyUtils - Utilities for latency measurement and reporting
sbt-updates - sbt plugin that can check Maven and Ivy repositories for dependency updates
jHiccup - jHiccup is a non-intrusive instrumentation tool that logs and records platform "hiccups" - including the JVM stalls that often happen when Java applications are executed and/or any OS or hardware platform noise that may cause the running application to not be continuously runnable.
sbt-scoverage - sbt plugin for scoverage
sbt-sonatype - A sbt plugin for publishing Scala/Java projects to the Maven central.