{"id":13694693,"url":"https://github.com/Concurnas/Concurnas","last_synced_at":"2025-05-03T04:30:54.605Z","repository":{"id":55415841,"uuid":"225905477","full_name":"Concurnas/Concurnas","owner":"Concurnas","description":"=Please be aware that Concurnas is no longer in active development = Concurnas is an open source JVM programming language designed for building reliable, scalable, high performance concurrent, distributed and parallel systems","archived":false,"fork":false,"pushed_at":"2023-10-10T10:13:31.000Z","size":4515,"stargazers_count":201,"open_issues_count":52,"forks_count":17,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-11-12T21:39:07.465Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://concurnas.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Concurnas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-12-04T16:03:47.000Z","updated_at":"2024-10-16T09:14:59.000Z","dependencies_parsed_at":"2024-01-14T19:12:10.252Z","dependency_job_id":"fd1ef1bb-2859-471c-b4d5-1539db6ffd28","html_url":"https://github.com/Concurnas/Concurnas","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Concurnas%2FConcurnas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Concurnas%2FConcurnas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Concurnas%2FConcurnas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Concurnas%2FConcurnas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Concurnas","download_url":"https://codeload.github.com/Concurnas/Concurnas/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252144441,"owners_count":21701411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T17:01:37.614Z","updated_at":"2025-05-03T04:30:49.578Z","avatar_url":"https://github.com/Concurnas.png","language":"Java","funding_links":[],"categories":["Java","JVM语言"],"sub_categories":[],"readme":"\u003cimg width=\"80\" src=\"https://github.com/Concurnas/Concurnas/blob/master/logo.png\"\u003e\n\n# The Concurnas programming Language\nConcurnas is an open source programming language designed for building reliable, scalable, high performance concurrent, distributed and parallel systems\n\n* **The main website** (including documentation) for Concurnas can be found at: [https://concurnas.com](http://concurnas.com)\n\n* **Download page** (including prerequisites) for Concurnas can be found at: [https://concurnas.com/download.html](https://concurnas.com/download.html)\n\n* **Discord:** [discord.gg/jFHfsqR](https://discord.gg/jFHfsqR)\n\n* **Reddit:**  [r/Concurnas/](https://www.reddit.com/r/Concurnas/)\n\n## Authors and major contributors\n* [Jason Tatton](http://concurnas.com/concurnasltd/leadership.html), [jason.tatton@concurnas.com](jason.tatton@concurnas.com) - Founder of Concurnas\n\n## Found a bug?\n 1. Check the [existing issues](https://github.com/Concurnas/Concurnas/issues)\n 2. Talk to us at [Concurnas Ltd](https://concurnas.com/concurnasltd/contact.html)\n 3. Raise an [issue](https://github.com/Concurnas/Concurnas/issues)\n\n### Reporting Security Issues\nPlease do not report security issues to the public issue tracker. Please send security issues to  [security@concurnas.com](mailto:security@concurnas.com).\n\n## Want to contribute?\nBefore 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:\n\n-   Why is this change done? What's the use case?\n-   What will the API look like? (For new features)\n-   What test cases should it have? What could go wrong?\n-   How will it roughly be implemented? (We'll happily provide code pointers to save you time)\n\nThis can be done directly inside the GitHub issue or (for large changes) you can share a Google Doc with [us](http://concurnas.com/concurnasltd/contact.html).\n\n\n### Contributing\nWe 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.\n\nTo contribute:\n 1. Fork the Concurnas github repository\n 2. Make your changes\n 3. **first time contributors: sign [contributors.txt](https://github.com/Concurnas/Concurnas/blob/master/contributors.txt) by adding your github userid, full name, email address (you can obscure your e-mail, but it must be computable by human), and date.*\n 4. Commit your changes\n 5. Send a pull request\n 6. After you have signed once, you don't have to sign future pull requests. We can merge by checking to see your name is in the contributors file.\n\n### Code Change Guidelines\nAll code contributions should contain the following:\n* Appropriate Unit Tests (or modifications of existing tests if they are erroneous)\n* All new and existing unit tests must pass.\n* *If appropriate*: Updates to the reference manual (we will republish the ebook and update the [Concurnas website](http://concurnas.com/docs/manual.html))\n\nYour 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:\n\n* Be careful when using features introduced in Java 1.9 or later (modules etc), Concurnas is Java 1.8 compliant.\n* Normalize file paths in tests.\n* Watch out for Linux vs windows non incompatibilities: path separators, newline's etc.\n\nAfter pull request acceptance we will manage the release process.\n\n## Building Concurnas from scratch\nThe 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.\n\nThe following commands can be used in order to build Concurnas from scratch:\n\n### Windows\n    gradlew.bat clean build -x test   \n\t\n### Linux\n\t./gradlew clean build -x test   \n\n*It is recommended that one skip the automatic running of tests unless one has a machine which is powerful enough to run them.*\n\nThis will output a release zip which will look like: **Concurnas-1.13.108.zip**\n\n### Recommended specs for machine to run test suite\n - Min:\n\t - Java 1.9 for the build and testing\n\t - 4-core CPU\n\t - 16GB RAM\n\t - A GPU - NVIDIA GTX 590\n- Recommended:\n\t- Java 1.9 for the build\n\t- Java 1.8 and Java 1.9 - *some unit tests behave differently under each version*\n\t- 8-core CPU\n\t- 32GB RAM\n\t- A GPU - NVIDIA GTX 1060 3 GB\n\n## Developing/building via an IDE\nUsing an IDE to make changes to Concurnas is recommended.\n### Development in eclipse\nThe first time setup of Concurnas for eclipse is quite involved. \n#### Plugins required:\n- ANTLR 4 IDE (0.3.6). (available in eclipse marketplace). Configured as follows:\n\n![antlrSetup](https://github.com/Concurnas/Concurnas/blob/master/tools/eclipse/antlrSetup.png)\n\n#### Additional plugins recommended:\n - Bytecode Outline (available in eclipse marketplace)\n\n#### Generating eclipse configuration:\n1. Either:\n\n    ./gradlew eclipse\n   \n\tor import the project into eclipse as a gradle project.\n2. You may need to force the ANTLR plugin (configured as above) to detect the .g files under src\\main\\antlr\\com\\concurnas for the first time by opening them and re-saving them (this will clear up any errors about missing Visitors etc).\n3. You may also need to refresh the gradle build in order to include the ./src_derived directory as a directory containing source code for the build. (right click on build.gradle -\u003e Gradle -\u003e Refresh Gradle Project)\n4. Finally, you may also need to replace the JRE System Library in the project JavaBuild Path. (Java Build Path -\u003e Libraries -\u003e JRE System Library - Remove 1.8 and replace via the \"Add Library...\" button).\n\n#### Generating remaining Concurnas Code:\nRun the following code in eclipse (after each clean build) in order to complete the build:\n\n 1. Generate the runtime cache:\n\n\t    com.concurnas.runtimeCache.RuntimeCacheCreator\n\n 2. Compile the Concurnas libraries written in Concurnas:\n\n\t    com.concurnas.build.LibCompilation\n\n 3. Compile the unit test helpers written in Concurnas:\n \n\t\tcom.concurnas.concc.Concc -d ./bin/test ./tests[com/concurnas/tests/helpers]\n\n#### Running unit tests:\nIt'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:\n\n\t\tcom.concurnas.compiler.AllTests\nSpecify the contents of the following file as VM arguments in order to run them correctly:\n\nIf running on Java 1.8: [vmArguments-Java8.txt](https://github.com/Concurnas/Concurnas/blob/master/tools/eclipse/vmArguments-Java8.txt)\n\nIf running on Java 9+: [vmArguments-Java9.txt](https://github.com/Concurnas/Concurnas/blob/master/tools/eclipse/vmArguments-Java9.txt)\n\n#### The sandbox unit test:\nThe 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:\n 1. Edit this file: [bytecodeSandbox.conc](https://github.com/Concurnas/Concurnas/blob/master/tests/com/concurnas/compiler/bytecode/bytecodeSandbox.conc)\n 2. Run this unit test:\n\n\t\tcom.concurnas.compiler.bytecode.BytecodeTestJustSandbox\nWith the aforementioned VM arguments specified contingent upon your JDK.\n\n\n### Msi Windows installer\n\nConcurnas makes use of a [gradle plugin](https://github.com/i-net-software/SetupBuilder) in order to produce a windows .msi. This plugin stipulates the following dependencies:\n\n| Platform  | Requirement                                                          |\n| :---------| :------------------------------------------------------------------- |\n| all       | Java 8 or higher. Gradle must run with Java 8                        |\n| Windows   | Wix Toolset or WixEdit must be installed                             |\n| Linux     | Lintian, FakeRoot \u003cbr\u003e on Ubuntu: `apt-get install lintian fakeroot` |\n| Linux     | dpkg for creating Debian packages: `apt-get install dpkg`         |\n| Linux     | rpm for creating RPM packages: `apt-get install rpm`              |\n\nA msi may be created with gradle as follows:\n\n\tgradlew.bat clean build msi -x test   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FConcurnas%2FConcurnas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FConcurnas%2FConcurnas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FConcurnas%2FConcurnas/lists"}