Plasma Language References

Paul Bone
<paul@plasmalang.org>
version 0.1, Feburary 2016
Initial draft. Copyright © 2015-2016 Plasma Team License: CC BY-SA 4.0

References to 3rd-party papers and software that we are using or that may be helpful at some point.

Papers and Books

Continuations

GC References

The Garbage Collection Handbook

http://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795/ref=sr_1_1?s=books&ie=UTF8&qid=1437385704&sr=1-1&keywords=garbage+collection

Potentially useful references from this book
Richard Jones' GC Page

http://www.cs.kent.ac.uk/people/staff/rej/gc.html

Richard Jones' GC Bibiliography

http://www.cs.kent.ac.uk/people/staff/rej/gcbib/gcbib.html

Memory Management Reference

http://www.memorymanagement.org/

Type systems

  • 1ML is an ML language with the module language and value language unified into one language (I think) I need to read more.

  • Modular Implicits is an extension to OCaml to add ad-hoc polymorphism to the language. This is similar to my vague ideas about implicit interfaces, and I will probably use this in some way.

  • https://www.koterpillar.com/talks/instances-for-everyone/#18 Alexy’s talk about deriving things like Eq, Ord etc in Haskell/GHC. Contains further links at the end.

Optimiation and code gneeration

Libraries

Message Passing

Nanomsg

http://nanomsg.org/

Nanomsg is a C library for message passing. It exposes a BSD sockets style API.

Profiling

SHIM

https://github.com/ShimProfiler/SHIM SHIM is a tool for high-resolution sampling of CPU performance counters. It may be more useful as a basis of our own implementation than useful as-is.

Tools

Build systems

Autosetup

http://msteveb.github.io/autosetup/ Autosetup is an alternative to autoconf, it is written in Tcl.

Tup

http://gittup.org/tup/index.html Tup is an alternative to Make. It looks like it avoids a lot of Make’s problems.

Git/Project hosting

gitlab

Software.

gitgud.io

Gitlab hosted service.

gogs.io

Git oriented project hosting written in Go.

C Static analysis

Plasma is implemented in Mercury.

Plasma is inspired by many other languages, some of them are:

  • SISAL is an applicative single-assignment language, like Plasma it has declarative semantics and an imperative-ish style. It supported auto-parallelisation based on loops and streams and rivaled Fortran form performance.

  • Mercury is a logic/functional language that I also work on. I developed an auto-parallelisation system for Mercury and plan to implement one for Plasma. After 7 years contributing to Mercury I’m sure other aspects of it will also influence Plasma.

  • Hope influenced Plasma indirectly. Hope is the first language with abstract data types.

  • OCaml's parametric modules are the inspiration for Plasma’s interfaces.

  • Futhark is an array based language (like APL) for GPGPU programming. I don’t know much about it at the moment but will be reading their papers and following their work.

Several other imperative/declarative languages like Plasma include:

Disclosure: Mars, Wybe and Pawns are all developed by colleagues of mine.