Awesome
Apache Pekko
Apache Pekko is an open-source framework for building applications that are concurrent, distributed, resilient and elastic. Pekko uses the Actor Model to provide more intuitive high-level abstractions for concurrency. Using these abstractions, Pekko also provides libraries for persistence, streams, HTTP, and more.
Pekko is a fork of Akka 2.6.x, prior to the Akka project's adoption of the Business Source License.
Reference Documentation
See https://pekko.apache.org for the documentation including the API docs. The docs for all the Apache Pekko modules can be found there.
Building from Source
The CI build is Linux based (Ubuntu) and most Pekko developers use Macs or Linux machines. There have been reports of issues when building with Windows (#829).
Prerequisites
- Make sure you have installed a Java Development Kit (JDK) version 11 or later.
- Make sure you have sbt installed and using this JDK.
- Make sure you also have Java 8 installed (JDK or JRE).
- Graphviz is needed for the scaladoc generation build task, which is part of the release.
Running the Build
- Open a command window and change directory to your preferred base directory
- Use git to clone the repo or download a source release from https://pekko.apache.org (and unzip or untar it, as appropriate)
- Change directory to the directory where you installed the source (you should have a file called
build.sbt
in this directory) sbt compile
compiles the main source for project default version of Scala (2.13)sbt +compile
will compile for all supported versions of Scala
sbt test
will compile the code and run the unit testssbt testQuick
similar to test but when repeated in shell mode will only run failing testssbt testQuickUntilPassed
similar to testQuick but will loop until tests pass.sbt package
will build the jars- the jars will be built into target dirs of the various modules
- for the 'actor' module, the jar will be built to
actor/target/scala-2.13/
sbt publishLocal
will push the jars to your local Apache Ivy repositorysbt publishM2
will push the jars to your local Apache Maven repositorysbt docs/paradox
will build the docs (the ones describing the module features)- Requires Java 11 minimum
sbt docs/paradoxBrowse
does the same but will open the docs in your browser when complete- the
index.html
file will appear intarget/paradox/site/main/
sbt unidoc
will build the Javadocs for all the modules and load them to one place (may require Graphviz, see Prerequisites above)- the
index.html
file will appear intarget/scala-2.13/unidoc/
- the
sbt sourceDistGenerate
will generate source release totarget/dist/
- The version number that appears in filenames and docs is derived, by default. The derived version contains the most git commit id or the date/time (if the directory is not under git control).
- You can set the version number explicitly when running sbt commands
- eg
sbt "set ThisBuild / version := \"1.0.0\"; sourceDistGenerate"
- eg
- Or you can add a file called
version.sbt
to the same directory that has thebuild.sbt
containing something likeThisBuild / version := "1.0.0"
- You can set the version number explicitly when running sbt commands
Community
There are several ways to interact with the Pekko community:
- GitHub discussions: for questions and general discussion.
- Pekko dev mailing list: for Pekko development discussions.
- Pekko users mailing list: for Pekko user discussions.
- GitHub issues: for bug reports and feature requests. Please search the existing issues before creating new ones. If you are unsure whether you have found a bug, consider asking in GitHub discussions or the mailing list first.
Contributing
Contributions are very welcome. If you have an idea on how to improve Pekko, don't hesitate to create an issue or submit a pull request.
See CONTRIBUTING.md for details on the development workflow and how to create your pull request.
Code of Conduct
Apache Pekko is governed by the Apache code of conduct. By participating in this project you agree to abide by its terms.
License
Apache Pekko is available under the Apache License, version 2.0. See LICENSE file for details.