All Projects → smarr → SOMns

smarr / SOMns

Licence: MIT license
SOMns: A Newspeak for Concurrency Research

Programming Languages

java
68154 projects - #9 most used programming language
typescript
32286 projects
python
139335 projects - #7 most used programming language
HTML
75241 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to SOMns

Sobjectizer
An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
Stars: ✭ 172 (+177.42%)
Mutual labels:  csp, actors, concurrency
So 5 5
SObjectizer: it's all about in-process message dispatching!
Stars: ✭ 87 (+40.32%)
Mutual labels:  csp, actors, concurrency
csp
A library for Communicating Sequential Processes in Node.js, built on top of async/await
Stars: ✭ 59 (-4.84%)
Mutual labels:  csp, concurrency
pool
A highly flexible process pooling library for Node.js
Stars: ✭ 18 (-70.97%)
Mutual labels:  csp, concurrency
Libcsp
A concurrency C library 10x faster than Golang.
Stars: ✭ 1,160 (+1770.97%)
Mutual labels:  csp, concurrency
Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (+396.77%)
Mutual labels:  interpreter, concurrency
Dingo Hunter
Static analyser for finding Deadlocks in Go
Stars: ✭ 272 (+338.71%)
Mutual labels:  research, concurrency
Hopac
http://hopac.github.io/Hopac/Hopac.html
Stars: ✭ 461 (+643.55%)
Mutual labels:  csp, actors
Floyd
The Floyd programming language
Stars: ✭ 133 (+114.52%)
Mutual labels:  actors, concurrency
Aiochan
CSP-style concurrency for Python
Stars: ✭ 116 (+87.1%)
Mutual labels:  csp, concurrency
Chymyst Core
Declarative concurrency in Scala - The implementation of the chemical machine
Stars: ✭ 142 (+129.03%)
Mutual labels:  csp, concurrency
Awesome Graal
A curated list of awesome resources for Graal, GraalVM, Truffle and related topics
Stars: ✭ 302 (+387.1%)
Mutual labels:  interpreter, truffle
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-70.97%)
Mutual labels:  interpreter, concurrency
Reading
A list of computer-science readings I recommend
Stars: ✭ 1,919 (+2995.16%)
Mutual labels:  research, concurrency
Thespian
Python Actor concurrency library
Stars: ✭ 220 (+254.84%)
Mutual labels:  actors, concurrency
csp.js
📺 CSP for vanilla JavaScript
Stars: ✭ 45 (-27.42%)
Mutual labels:  csp, concurrency
Quasar
Fibers, Channels and Actors for the JVM
Stars: ✭ 4,349 (+6914.52%)
Mutual labels:  actors, concurrency
Pulsar
Fibers, Channels and Actors for Clojure
Stars: ✭ 885 (+1327.42%)
Mutual labels:  actors, concurrency
Actors.jl
Concurrent computing in Julia based on the Actor Model
Stars: ✭ 95 (+53.23%)
Mutual labels:  actors, concurrency
Hydrafw
HydraFW official firmware for HydraBus/HydraNFC for researcher, hackers, students, embedded software developers or anyone interested in debugging/hacking/developing/penetration testing
Stars: ✭ 165 (+166.13%)
Mutual labels:  debugging, research

SOMns - A Simple Newspeak Implementation

Introduction

Newspeak is a dynamic, class-based, object-oriented language in the tradition of Smalltalk and Self. SOMns is an implementation of the Newspeak Specification Version 0.0.95 derived from the SOM (Simple Object Machine) class libraries, and based on TruffleSOM. It is implemented using the Truffle framework and runs on the JVM platform.

Truffle provides just-in-time compilation based on the Graal compiler, which enables SOMns to reach performance that is on par with state-of-the-art VMs for dynamic languages, including V8.

A simple Hello World program looks like:

class Hello usingPlatform: platform = (
  public main: platform args: args = (
    'Hello World!' println.
    ^ 0
  )
)

Obtaining and Running SOMns

The basic requirements for SOMns are a system with Java 9 or later, git, ant, and Python. Windows is currently not supported, but we test on Linux and macOS.

To checkout the code:

git clone https://github.com/smarr/SOMns.git

Then, SOMns can be build with Ant:

ant compile

Afterwards, the simple Hello World program is executed with:

./som core-lib/Hello.ns

To get an impression of the benefit o

For testing on the command line, the full command is ./som core-lib/Benchmarks/Harness.ns Mandelbrot 500 0 500

Additionally, there are JUnit tests and ant test for executing the test suite.

A more comprehensive setup guide is available in the docs folder and on ReadTheDocs.

Implementation and Deviations from the Specification

Compared to other Newspeaks and Smalltalks, it is completely file-based and does not have support for images. Instead of using customary bytecodes, SOMns is implemented as self-optimizing AST interpreter using the Truffle framework.

The overall goal is to be compliant with the specification, but include only absolutely necessary features. The current list of intended deviations from the specifications are as follows:

  • the mixin support of slots is not yet complete, see deactivate tests in core-lib/TestSuite/MixinTests.ns

  • simultaneous slots clauses are not fully supported (spec. 6.3.2)

  • object literals currently require a keyword prefix objL, to work around parser limitations

License and Author Information

This code is distributed under the MIT License. Please see the LICENSE file for details. All contributions to the project are implicitly assumed to be under the MIT License. If this is not desired, we ask that it is stated explicitly. Information on previous authors are included in the AUTHORS file.

Setup Development Environment with Eclipse and VS Code

SOMns code is best written using our VS Code plugin, which provides support for typical IDE features such as code navigation and compilation, as well as a debugger. The SOMns support can then be installed via the Marketplace.

For the development of SOMns itself, we typically use Eclipse. A complete guide on how to setup a workspace is available in the docs folder and on ReadTheDocs.

Development Status

Active development of SOMns happens on the dev branch Build Status.

The latest release is reflected by the release branch Build Status.

Changes and releases are documented in our CHANGELOG.md.

Academic Work

SOMns is designed as platform for research with a special interest for concurrent programming models, their interactions, and tooling for debugging.

Related papers:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].