Concurnas is an open source programming language designed for building reliable, scalable, high performance concurrent, distributed and parallel systems
The main website (including documentation) for Concurnas can be found at: https://concurnas.com
Download page (including prerequisites) for Concurnas can be found at: https://concurnas.com/download.html
Please do not report security issues to the public issue tracker. Please send security issues to [email protected].
Before starting to work on a feature or a fix, please open an issue to discuss the use case or bug with us. This can save both you and us a lot of time. For any non-trivial change, we'll ask you to create a short design document explaining:
This can be done directly inside the GitHub issue or (for large changes) you can share a Google Doc with us.
We are friendly to pull requests and the team at Concurnas Ltd. will assist you in anyway we can. In order to protect yourself and other contributors to Concurnas all contributors to Concurnas must formally agree to abide by the Developer's Certificate of Origin, by signing on the bottom of the document.
All code contributions should contain the following:
Your code needs to run on all supported Java versions (at least 1.8) and operating systems (Windows and Linux). We will verify this, but here are some pointers that will avoid surprises:
After pull request acceptance we will manage the release process.
The build process for Concurnas is more involved than for typical projects since much of Concurnas itself is written in Concurnas! As such an iterative build is employed which bootstraps us to the point where Concurnas can compile the remaining parts of itself. Luckily for us this iterative build is managed by Gradle.
The following commands can be used in order to build Concurnas from scratch:
gradlew.bat clean build -x test
./gradlew clean build -x test
It is recommended that one skip the automatic running of tests unless one has a machine which is powerful enough to run them.
This will output a release zip which will look like: Concurnas-1.13.108.zip
Using an IDE to make changes to Concurnas is recommended.
The first time setup of Concurnas for eclipse is quite involved.
or import the project into eclipse as a gradle project.
Run the following code in eclipse (after each clean build) in order to complete the build:
Generate the runtime cache:
Compile the Concurnas libraries written in Concurnas:
Compile the unit test helpers written in Concurnas:
com.concurnas.concc.Concc -d ./bin/test ./tests[com/concurnas/tests/helpers]
It's recommended that you take the time to setup and run the unit tests within eclipse as it has good JUnit integration and you don't have to switch applications to run them interrupting your work flow. All the unit tests can be run via the following command as a JUnit test suite in eclipse:
Specify the contents of the following file as VM arguments in order to run them correctly:
If running on Java 1.8: vmArguments-Java8.txt
If running on Java 9+: vmArguments-Java9.txt
The sandbox unit test is a nice way of testing Concurnas code end to end, it also provides nice profiling stats on the phases of Concurnas compilation:
Run this unit test:
With the aforementioned VM arguments specified contingent upon your JDK.
Concurnas makes use of a gradle plugin in order to produce a windows .msi. This plugin stipulates the following dependencies:
|all||Java 8 or higher. Gradle must run with Java 8|
|Windows||Wix Toolset or WixEdit must be installed|
|Linux||dpkg for creating Debian packages:
|Linux||rpm for creating RPM packages:
A msi may be created with gradle as follows:
gradlew.bat clean build msi -x test