LinearML:a programming language designed to write efficient parallel programs.
github.com
github.com
Could you perhaps give some notes on how you implemented the linear type system? I am browsing through the source code, but finding it tough understanding whats going on. Anything at all (brief overview?) would be useful and appreciated.
The readme on the github page doesn't contain much more information than the title on HN.
I can't quickly evaluate whether this is worth downloading, configuring, and installing.
Maybe its just me, but I don't like HN submissions that point to github repositories, with skeleton readmes - I think we could do better.
The most interesting feature is the use of linear types to statically ensure sound usage of resources, including memory, in other words, no garbage collector.
>>> Some people will argue that these are in fact "unique types" as opposed to "linear types", the difference being subtle (a unique type enforces that only ONE pointer exists at any given time, a linear type enforces that the amount of pointers is stable). However, you will often see unique types been called linear types in the litterature, and if P. Wadler can do it, so can I ! <<<
It seems that when you do that, though, and especially from looking at the tutorial, you end up with semantics that are a) fundamentally different from GC-ed semantics, and b) explicit about memory management. But perhaps it amounts to a kind of type-safe memory management?
Tried some brief Googling of what I think is the main author, and I found this paper, "HirondML: Fair Threads Migration for Objective Caml": http://www-apr.lip6.fr/~ravet/hirondml_ppl08.pdf
I'd like to see indepth articles about how it achieves this, state of product, etc, etc. Comparisons with other languages on various benchmarks would be nice too. Maybe the Shootout.
I am experimenting with programming language design and implementation at the moment and linear types is something I was considering - I am trying to implement the language runtime in a dataflow model anyway and I felt linear types would be a good match. I didn't do any work on it though because I'm not sure how to implement it, but perhaps this language will give me some ideas.