All Projects → PlasmaLang → Plasma

PlasmaLang / Plasma

Licence: other
Plasma Programming Language

Programming Languages

bytecode
52 projects

Projects that are alternatives of or similar to Plasma

Hamsters.js
100% Vanilla Javascript Multithreading & Parallel Execution Library
Stars: ✭ 517 (+288.72%)
Mutual labels:  concurrency, parallel-computing, parallelism
Chymyst Core
Declarative concurrency in Scala - The implementation of the chemical machine
Stars: ✭ 142 (+6.77%)
Mutual labels:  concurrency, parallelism, functional-programming
java-multithread
Códigos feitos para o curso de Multithreading com Java, no canal RinaldoDev do YouTube.
Stars: ✭ 24 (-81.95%)
Mutual labels:  concurrency, parallel-computing, parallelism
Agency
Execution primitives for C++
Stars: ✭ 127 (-4.51%)
Mutual labels:  concurrency, parallelism
Start
🔴 Functional task runner for Node.js
Stars: ✭ 478 (+259.4%)
Mutual labels:  concurrency, parallelism
React Native Threads
Create new JS processes for CPU intensive work
Stars: ✭ 527 (+296.24%)
Mutual labels:  concurrency, parallelism
Bild
Image processing algorithms in pure Go
Stars: ✭ 3,431 (+2479.7%)
Mutual labels:  concurrency, parallelism
Fucking Java Concurrency
🎏 Simple show cases of java concurrency problems, seeing 🙈 is believing 🐵
Stars: ✭ 779 (+485.71%)
Mutual labels:  concurrency, parallelism
Funfix
Functional Programming Library for JavaScript, TypeScript and Flow ✨⚡️
Stars: ✭ 596 (+348.12%)
Mutual labels:  concurrency, functional-programming
Hpx
The C++ Standard Library for Parallelism and Concurrency
Stars: ✭ 1,805 (+1257.14%)
Mutual labels:  concurrency, parallelism
Parapet
A purely functional library to build distributed and event-driven systems
Stars: ✭ 106 (-20.3%)
Mutual labels:  parallel-computing, functional-programming
Fetch
Simple & Efficient data access for Scala and Scala.js
Stars: ✭ 453 (+240.6%)
Mutual labels:  concurrency, parallelism
Post Me
📩 Use web Workers and other Windows through a simple Promise API
Stars: ✭ 398 (+199.25%)
Mutual labels:  concurrency, parallel-computing
Crossbeam
Tools for concurrent programming in Rust
Stars: ✭ 4,180 (+3042.86%)
Mutual labels:  concurrency, parallelism
Imminent
A composable Futures library for Clojure
Stars: ✭ 88 (-33.83%)
Mutual labels:  concurrency, parallelism
Floyd
The Floyd programming language
Stars: ✭ 133 (+0%)
Mutual labels:  concurrency, parallelism
Clio
Clio is a functional, parallel, distributed programming language.
Stars: ✭ 555 (+317.29%)
Mutual labels:  parallelism, functional-programming
Riko
A Python stream processing engine modeled after Yahoo! Pipes
Stars: ✭ 1,571 (+1081.2%)
Mutual labels:  parallelism, functional-programming
Concurrency Glossary
🦑 Informal definitions of terms used in concurrency modeling
Stars: ✭ 276 (+107.52%)
Mutual labels:  concurrency, parallelism
Golang Tutorials
Go Tutorials - Let's get our hands really dirty by writing a lot of Golang code
Stars: ✭ 277 (+108.27%)
Mutual labels:  concurrency, functional-programming

Plasma Language

a new programming language

Plasma is a new programming language for safe and efficient general purpose use. It is a statically typed, side-effect free single assignment language and will have functional programming and concurrent programming features. It will support deterministic parallel execution. For a general overview, please visit https://plasmalang.org/ It is in early development.

It is free software, Copyright (C) 2015-2021 The Plasma Team, distributed mostly under the MIT license, see LICENSE for details.

CI

Getting started

This README.md contains some quick info for getting started. For more complete info please see our getting started guide.

Dependencies

Plasma has been tested on Linux, Windows subsystem for Linux 1 and 2 on x86_64.

You will need:

  • A C compiler (C99 on a POSIX.1-2008 environment), I've been testing with GCC. Clang should also work.
  • GNU Make
  • Mercury. The latest stable version is required, older versions may also work. Plasma's CI currently tests with ROTD 2020-05-31.
  • Asciidoc
  • The ninja build system, at least version 1.10.

Mercury installation

The easiest way to install Mercury is to install the .deb packages (on Debian, Ubuntu, etc).

Otherwise download Mercury's source package and follow the installation instructions in the INSTALL file. We've made some notes about grades that may help with choosing which grades you may need. There is also a README.bootstrap file with Mercury bootstrapping information if you wish to do that, it may also provide some additional explaination.

Usage

Copy template.mk to build.mk and edit it to make any build configuration changes you need.

Use make in the root directory to build the project. Then make install`` to install the tools into$PREFIX/bin```.

This compiles and installs the following programs. Make sure they're in your PATH.

  • src/plzc - The plasma compiler, compiles plasma (.p) files to plasma modules (.pzo)
  • src/plzlnk - The plasma linker, links one more more modules (.pzo) into a plasma program (.pz)
  • src/plzbuild - The plasma build system
  • runtime/plzrun - The runtime system, executes plasma programs (.pz).
  • src/plzasm - The plasma bytecode assembler. This compiles textual bytecode (.pzt) to bytecode (.pzo). It is useful for testing the runtime.

There are example plasma programs in examples/. Running plzbuild in examples/ will build them. Each program's bytecode is copied to a file in examples/ eg hello.pz, run them with plzrun <bytecode>.

Layout

  • docs - Documentation
  • examples - Example Plasma programs
  • runtime - Runtime system (C code)
  • scripts - Some scripts to aid developers
  • src - The compiler and other tools
  • tests - The test suite (in addition to some of the files in examples)

Contributing

Please see CONTRIBUTING.md and CODE_OF_CONDUCT.md. For detailed information including what to work on please see Contributing to Plasma in our documentation.

Getting help

If you're stuck and the Documentation doesn't contain the answer or clue you need or you're struggling to find it. Please ask for help. The Contact page of the website lists all the ways you can get in touch. In particular the Plasma Help mailing list and IRC channel are the best resources for help.

For bugs or missing information please file a bug.

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].