Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
163 lines (115 sloc) 5.25 KB
Plasma Language References
Paul Bone <>
v0.1, May 2018: Perpetual draft.
Copyright (C) 2015-2018, 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.
link:[Contribute to this page]
== Papers and Books
=== Closures
*[Luca Cardelli: Compiling a Functional Language]
*[Andrew Keep, Alex Hearn, R. Kent Dybvig: Optimising Closures in O(0) time]
*[Zhong Shao, Andrew
Appel: Efficient and Safe for space closure conversion]
My own blog articles, the second one discusses the two above papers:
*[Compiling closures]
*[More on closures]
=== Continuations
Implementation Strategies for First-class continuations::
=== GC References
The Garbage Collection Handbook::
Potentially useful references from this book::
* Appel 1989b, Goldberg 1991 about pointer finding
* Looks like Appel has several good papers about GC
* Tarditi Compressing stack maps.
* Doligez and Leroy 1993 and other papers pp107
* Halsteed 1985 concurrent copying
* Marlow 2008
* Train collector
Richard Jones' GC Page::
Richard Jones' GC Bibiliography::
Memory Management Reference::
=== 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
and I will probably use this in some way.
* Alexy's talk
about deriving things like Eq, Ord etc in Haskell/GHC. Contains further
links at the end.
=== Optimiation and code gneeration
* Software optimization resources
Compiling a Functional Language.
== Libraries
=== Message Passing
Nanomsg is a C library for message passing. It exposes a BSD sockets style
=== Profiling
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 is an alternative to autoconf, it is written in Tcl.
Tup is an alternative to Make. It looks like it avoids a lot of Make's
=== Git/Project hosting
Gitlab hosted service.
Git oriented project hosting written in Go.
=== C Static analysis
== Algorithms
=== PRNGs
A table of some[PRNGs].
== Related programming languages
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.
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.