archives

List of ICFP2013 papers with preprints

A "List of ICFP'13 accepted papers, with links to preprint or additional information when available" is being published by user 'gasche' at github: https://github.com/gasche/icfp2013-papers. Any other links, anyone?

concurrency app examples for cooperative multi-tasking docs?

Looks like I'm going to write something up, with docs and code about a lightweight process model, coming in at least three flavors. The most verbose flavor will be a fiction format, consisting mainly of dialogs between characters discussing ideas at several levels of generality, so finished code comes with a body of analysis motivating it, in detail.

I decided each character should care about a specific app, so that's what they want to talk about technically. For example, one will be working on a distributed network codec of the sort I did in recent years, for compression via distributed caching. Each character will want to evaluate benefits with respect to their app focus.

You can help me get some docs underway by suggesting an app which benefits from concurrency support, especially if scale would surpass comfortable native thread limits, so cooperative multitasking is suitable and meaningful.

If you can think of a programming language angle for one of the apps, that would help too. At least one character should have no app in mind (making other characters roll their eyes), but want to add green threads to a programming language, then think of an app later.

Forth might be a good choice there, because it's simple, and because the stack model makes it easy for the main dev, Wil, to describe behavior of runtime elements in terms of a stack machine. It's an excuse to present a way to visualize interactions between lightweight processes (lanes) and their constituent lightweight threads (jobs).

Naming lightweight processes is hard, because they provide almost no isolation, and retain very few qualities one associates with a native OS process beyond identity and a set of related (green) threads, with a minimum of one, where all execution occurs. So far lane is the best short, one-syllable word I found that means a track in which related partially independent things run to get a task moved where it needs to go. But if you can think of a better term, I'm all ears.

Does a programming language need intimate coordination with concurrency models? Whenever I tried to think of how Lisp syntax might change to suit what I had in mind, almost nothing ever seemed necessary beyond a way to name entities peculiar to the model. Symbols like any other seemed enough. For example, to affect your job or lane, a symbol must name them.