{"id":13628235,"url":"https://github.com/smarr/SOMns","last_synced_at":"2025-04-17T00:33:54.474Z","repository":{"id":31920258,"uuid":"35489534","full_name":"smarr/SOMns","owner":"smarr","description":"SOMns: A Newspeak for Concurrency Research","archived":false,"fork":false,"pushed_at":"2022-12-22T09:42:38.000Z","size":22453,"stargazers_count":66,"open_issues_count":64,"forks_count":30,"subscribers_count":7,"default_branch":"release","last_synced_at":"2024-08-01T22:42:05.012Z","etag":null,"topics":["actors","concurrency","csp","debugging","interpreter","java","language","newspeak","research","smalltalk","som","transactional-memory","truffle"],"latest_commit_sha":null,"homepage":"","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/smarr.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}},"created_at":"2015-05-12T13:27:56.000Z","updated_at":"2024-01-13T23:53:47.000Z","dependencies_parsed_at":"2023-01-14T20:15:15.205Z","dependency_job_id":null,"html_url":"https://github.com/smarr/SOMns","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2FSOMns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2FSOMns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2FSOMns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2FSOMns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smarr","download_url":"https://codeload.github.com/smarr/SOMns/tar.gz/refs/heads/release","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223735372,"owners_count":17194090,"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":["actors","concurrency","csp","debugging","interpreter","java","language","newspeak","research","smalltalk","som","transactional-memory","truffle"],"created_at":"2024-08-01T22:00:48.924Z","updated_at":"2024-11-08T18:31:41.041Z","avatar_url":"https://github.com/smarr.png","language":"Java","readme":"SOMns - A Simple Newspeak Implementation\n========================================\n\nIntroduction\n------------\n\nNewspeak is a dynamic, class-based, object-oriented language in the\ntradition of Smalltalk and Self. SOMns is an implementation of the [Newspeak\nSpecification Version 0.0.95][spec] derived from the [SOM][SOM] (Simple Object\nMachine) class libraries, and based on [TruffleSOM][TSOM]. It is\nimplemented using the [Truffle framework][T] and runs on the JVM platform.\n\nTruffle provides just-in-time compilation based on the Graal compiler,\nwhich enables SOMns to reach [performance that is on par][AWFY] with\nstate-of-the-art VMs for dynamic languages, including V8.\n\nA simple Hello World program looks like:\n\n```Smalltalk\nclass Hello usingPlatform: platform = (\n  public main: platform args: args = (\n    'Hello World!' println.\n    ^ 0\n  )\n)\n```\n\nObtaining and Running SOMns\n---------------------------\n\nThe basic requirements for SOMns are a system with Java 9 or later, git, ant,\nand Python. Windows is currently not supported, but we test on Linux and macOS.\n\nTo checkout the code:\n\n    git clone https://github.com/smarr/SOMns.git\n\nThen, SOMns can be build with Ant:\n\n    ant compile\n\nAfterwards, the simple Hello World program is executed with:\n\n    ./som core-lib/Hello.ns\n\nTo get an impression of the benefit o\n\nFor testing on the command line, the full command is\n`./som core-lib/Benchmarks/Harness.ns Mandelbrot 500 0 500`\n\nAdditionally, there are JUnit tests and `ant test` for executing the test suite.\n\n\nA more comprehensive setup guide is available in the `docs` folder and on\n[ReadTheDocs][RTD].\n\n\nImplementation and Deviations from the Specification\n----------------------------------------------------\n\nCompared to other Newspeaks and Smalltalks, it is completely file-based\nand does not have support for images.\nInstead of using customary bytecodes, SOMns is implemented as\n[self-optimizing AST interpreter][SOAI] using the Truffle framework.\n\nThe overall goal is to be compliant with the specification, but include only\nabsolutely necessary features. The current list of intended deviations from\nthe specifications are as follows:\n\n - the mixin support of slots is not yet complete, see deactivate tests in core-lib/TestSuite/MixinTests.ns\n\n - simultaneous slots clauses are not fully supported (spec. 6.3.2)\n\n - object literals currently require a keyword prefix `objL`, to work around\n   parser limitations\n\n\nLicense and Author Information\n------------------------------\n\nThis code is distributed under the MIT License. Please see the LICENSE file for\ndetails. All contributions to the project are implicitly assumed to be under the\nMIT License. If this is not desired, we ask that it is stated explicitly.\nInformation on previous authors are included in the AUTHORS file.\n\nSetup Development Environment with Eclipse and VS Code\n------------------------------------------------------\n\nSOMns code is best written using our VS Code plugin, which provides support\nfor typical IDE features such as code navigation and compilation, as well as\na debugger. The [SOMns][vscode] support can then be installed via the Marketplace.\n\nFor the development of SOMns itself, we typically use Eclipse.\nA complete guide on how to setup a workspace is available in the `docs` folder\nand on [ReadTheDocs][RTD].\n\n\nDevelopment Status\n------------------\n\nActive development of SOMns happens on the `dev` branch [![Build Status](https://travis-ci.org/smarr/SOMns.png?branch=dev)](https://travis-ci.org/smarr/SOMns/tree/dev).\n\nThe latest release is reflected by the `release` branch [![Build Status](https://travis-ci.org/smarr/SOMns.png?branch=release)](https://travis-ci.org/smarr/SOMns).\n\nChanges and releases are documented in our [CHANGELOG.md][cl].\n\nAcademic Work\n-------------\n\nSOMns is designed as platform for research with a special interest for\nconcurrent programming models, their interactions, and tooling for debugging.\n\nRelated papers:\n\n - [Transient Typechecks are (Almost) Free](https://stefan-marr.de/downloads/ecoop19-roberts-et-al-transient-typechecks-are-almost-free.pdf),\n   R. Roberts, S. Marr, M. Homer, J. Noble; ECOOP'19.\n\n - [Efficient and Deterministic Record \u0026 Replay for Actor Languages](https://stefan-marr.de/downloads/manlang18-aumayr-et-al-efficient-and-deterministic-record-and-replay-for-actor-languages.pdf),\n   D. Aumayr, S. Marr, C. Béra, E. Gonzalez Boix, H. Mössenböck; ManLang'18.\n\n - [Newspeak and Truffle: A Platform for Grace?](https://stefan-marr.de/downloads/grace18-marr-et-al-newspeak-and-truffle-a-platform-for-grace.pdf),\n   S. Marr, R. Roberts, J. Noble; Grace'18.\n\n - [Few Versatile vs. Many Specialized Collections: How to design a collection library for exploratory programming?](https://stefan-marr.de/papers/px-marr-daloze-few-versatile-vs-many-specialized-collections/) S. Marr, B. Daloze; Programming Experience Workshop, PX/18.\n\n - [A Concurrency-Agnostic Protocol for Multi-Paradigm Concurrent Debugging Tools](https://stefan-marr.de/papers/dls-marr-et-al-concurrency-agnostic-protocol-for-debugging/),\n   S. Marr, C. Torres Lopez, D. Aumayr, E. Gonzalez Boix, H. Mössenböck; Dynamic Language Symposium'17.\n\n - [Kómpos: A Platform for Debugging Complex Concurrent Applications](https://stefan-marr.de/downloads/progdemo-marr-et-al-kompos-a-platform-for-debugging-complex-concurrent-applications.pdf),\n   S. Marr, C. Torres Lopez, D. Aumayr, E. Gonzalez Boix, H. Mössenböck; Demonstration at the \u0026lt;Programming\u0026gt;'17 conference.\n\n - [Toward Virtual Machine Adaption Rather than Reimplementation: Adapting SOMns for Grace](https://stefan-marr.de/downloads/morevms17-roberts-et-al-toward-virtual-machine-adaption.pdf),\n   R. Roberts, S. Marr, M. Homer, J. Noble;\n   Presentation at the MoreVMs'17 workshop at the \u0026lt;Programming\u0026gt;'17 conference.\n\n - [Optimizing Communicating Event-Loop Languages with Truffle](https://stefan-marr.de/2015/10/optimizing-communicating-event-loop-languages-with-truffle/),\n    S. Marr, H. Mössenböck; Presentation at the AGERE!’15 Workshop, co-located with SPLASH’15.\n\n - [Cross-Language Compiler Benchmarking: Are We Fast Yet?](https://stefan-marr.de/papers/dls-marr-et-al-cross-language-compiler-benchmarking-are-we-fast-yet/)\n    S. Marr, B. Daloze, H. Mössenböck at the 12th Symposium on\n    Dynamic Languages co-located with SPLASH'16.\n\n [SOM]: http://som-st.github.io/\n [TSOM]:https://github.com/SOM-st/TruffleSOM\n [SOAI]:http://lafo.ssw.uni-linz.ac.at/papers/2012_DLS_SelfOptimizingASTInterpreters.pdf\n [T]:   http://ssw.uni-linz.ac.at/Research/Projects/JVM/Truffle.html\n [spec]:http://bracha.org/newspeak-spec.pdf\n [AWFY]:https://github.com/smarr/are-we-fast-yet\n [RTD]: http://somns.readthedocs.io/en/dev/\n [vscode]: https://marketplace.visualstudio.com/items?itemName=MetaConcProject.SOMns\n [cl]:  https://github.com/smarr/SOMns/blob/dev/CHANGELOG.md\n","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmarr%2FSOMns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmarr%2FSOMns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmarr%2FSOMns/lists"}